diff options
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/Makefile.in | 17 | ||||
| -rw-r--r-- | cli/src/Makefile.in | 17 | ||||
| -rw-r--r-- | cli/src/connections.c | 213 | ||||
| -rw-r--r-- | cli/src/devices.c | 16 | ||||
| -rw-r--r-- | cli/src/settings.c | 373 | ||||
| -rw-r--r-- | cli/src/settings.h | 1 |
6 files changed, 307 insertions, 330 deletions
diff --git a/cli/Makefile.in b/cli/Makefile.in index ef08ebca..1eada990 100644 --- a/cli/Makefile.in +++ b/cli/Makefile.in @@ -60,12 +60,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/vapigen.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -224,12 +223,6 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ -LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ -LIBNL1_LIBS = @LIBNL1_LIBS@ -LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ -LIBNL2_LIBS = @LIBNL2_LIBS@ -LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ -LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ LIBOBJS = @LIBOBJS@ diff --git a/cli/src/Makefile.in b/cli/src/Makefile.in index 27f3b23a..cb37b8db 100644 --- a/cli/src/Makefile.in +++ b/cli/src/Makefile.in @@ -62,12 +62,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/vapigen.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -222,12 +221,6 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ -LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ -LIBNL1_LIBS = @LIBNL1_LIBS@ -LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ -LIBNL2_LIBS = @LIBNL2_LIBS@ -LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ -LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ LIBOBJS = @LIBOBJS@ diff --git a/cli/src/connections.c b/cli/src/connections.c index e7926f1a..d509ce04 100644 --- a/cli/src/connections.c +++ b/cli/src/connections.c @@ -269,6 +269,7 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) /* Loop through the required settings and print them. */ for (i = 0; i < print_settings_array->len; i++) { + NMSetting *setting; int section_idx = g_array_index (print_settings_array, int, i); if (nmc->print_output != NMC_PRINT_TERSE && !nmc->multiline_output && was_output) @@ -276,204 +277,11 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) was_output = FALSE; - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[0].name)) { - NMSettingConnection *s_con = nm_connection_get_setting_connection (connection); - if (s_con) { - setting_connection_details (s_con, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[1].name)) { - NMSettingWired *s_wired = nm_connection_get_setting_wired (connection); - if (s_wired) { - setting_wired_details (s_wired, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[2].name)) { - NMSetting8021x *s_8021X = nm_connection_get_setting_802_1x (connection); - if (s_8021X) { - setting_802_1X_details (s_8021X, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[3].name)) { - NMSettingWireless *s_wireless = nm_connection_get_setting_wireless (connection); - if (s_wireless) { - setting_wireless_details (s_wireless, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[4].name)) { - NMSettingWirelessSecurity *s_wsec = nm_connection_get_setting_wireless_security (connection); - if (s_wsec) { - setting_wireless_security_details (s_wsec, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[5].name)) { - NMSettingIP4Config *s_ip4 = nm_connection_get_setting_ip4_config (connection); - if (s_ip4) { - setting_ip4_config_details (s_ip4, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[6].name)) { - NMSettingIP6Config *s_ip6 = nm_connection_get_setting_ip6_config (connection); - if (s_ip6) { - setting_ip6_config_details (s_ip6, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[7].name)) { - NMSettingSerial *s_serial = nm_connection_get_setting_serial (connection); - if (s_serial) { - setting_serial_details (s_serial, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[8].name)) { - NMSettingPPP *s_ppp = nm_connection_get_setting_ppp (connection); - if (s_ppp) { - setting_ppp_details (s_ppp, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[9].name)) { - NMSettingPPPOE *s_pppoe = nm_connection_get_setting_pppoe (connection); - if (s_pppoe) { - setting_pppoe_details (s_pppoe, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[10].name)) { - NMSettingGsm *s_gsm = nm_connection_get_setting_gsm (connection); - if (s_gsm) { - setting_gsm_details (s_gsm, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[11].name)) { - NMSettingCdma *s_cdma = nm_connection_get_setting_cdma (connection); - if (s_cdma) { - setting_cdma_details (s_cdma, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[12].name)) { - NMSettingBluetooth *s_bluetooth = nm_connection_get_setting_bluetooth (connection); - if (s_bluetooth) { - setting_bluetooth_details (s_bluetooth, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[13].name)) { - NMSettingOlpcMesh *s_olpc_mesh = nm_connection_get_setting_olpc_mesh (connection); - if (s_olpc_mesh) { - setting_olpc_mesh_details (s_olpc_mesh, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[14].name)) { - NMSettingVPN *s_vpn = nm_connection_get_setting_vpn (connection); - if (s_vpn) { - setting_vpn_details (s_vpn, nmc); - was_output = TRUE; - continue; - } - } - -#if WITH_WIMAX - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[15].name)) { - NMSettingWimax *s_wimax = nm_connection_get_setting_wimax (connection); - if (s_wimax) { - setting_wimax_details (s_wimax, nmc); - was_output = TRUE; - continue; - } - } -#endif - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[16].name)) { - NMSettingInfiniband *s_infiniband = nm_connection_get_setting_infiniband (connection); - if (s_infiniband) { - setting_infiniband_details (s_infiniband, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[17].name)) { - NMSettingBond *s_bond = nm_connection_get_setting_bond (connection); - if (s_bond) { - setting_bond_details (s_bond, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[18].name)) { - NMSettingVlan *s_vlan = nm_connection_get_setting_vlan (connection); - if (s_vlan) { - setting_vlan_details (s_vlan, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[19].name)) { - NMSettingAdsl *s_adsl = nm_connection_get_setting_adsl (connection); - if (s_adsl) { - setting_adsl_details (s_adsl, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[20].name)) { - NMSettingBridge *s_bridge = nm_connection_get_setting_bridge (connection); - if (s_bridge) { - setting_bridge_details (s_bridge, nmc); - was_output = TRUE; - continue; - } - } - - if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[21].name)) { - NMSettingBridgePort *s_bridge_port = nm_connection_get_setting_bridge_port (connection); - if (s_bridge_port) { - setting_bridge_port_details (s_bridge_port, nmc); - was_output = TRUE; - continue; - } + setting = nm_connection_get_setting_by_name (connection, nmc_fields_settings_names[section_idx].name); + if (setting) { + setting_details (setting, nmc); + was_output = TRUE; + continue; } } @@ -723,9 +531,12 @@ fill_in_fields_con_status (NMActiveConnection *active, GSList *con_list) devices = nm_active_connection_get_devices (active); for (i = 0; devices && (i < devices->len); i++) { NMDevice *device = g_ptr_array_index (devices, i); + const char *dev_iface = nm_device_get_iface (device); - g_string_append (dev_str, nm_device_get_iface (device)); - g_string_append_c (dev_str, ','); + if (dev_iface) { + g_string_append (dev_str, dev_iface); + g_string_append_c (dev_str, ','); + } } if (dev_str->len > 0) g_string_truncate (dev_str, dev_str->len - 1); /* Cut off last ',' */ @@ -1279,7 +1090,7 @@ find_device_for_connection (NmCli *nmc, if (iface) { const char *dev_iface = nm_device_get_iface (dev); - if ( !strcmp (dev_iface, iface) + if ( !g_strcmp0 (dev_iface, iface) && nm_device_connection_compatible (dev, connection, NULL)) { found_device = dev; } diff --git a/cli/src/devices.c b/cli/src/devices.c index caaf7102..52c8c855 100644 --- a/cli/src/devices.c +++ b/cli/src/devices.c @@ -833,8 +833,10 @@ show_device_info (gpointer data, gpointer user_data) NMDevice *slave = g_ptr_array_index (slaves, idx); const char *iface = nm_device_get_iface (slave); - g_string_append (bond_slaves_str, iface); - g_string_append_c (bond_slaves_str, ' '); + if (iface) { + g_string_append (bond_slaves_str, iface); + g_string_append_c (bond_slaves_str, ' '); + } } if (bond_slaves_str->len > 0) g_string_truncate (bond_slaves_str, bond_slaves_str->len-1); /* Chop off last space */ @@ -1018,7 +1020,7 @@ do_devices_list (NmCli *nmc, int argc, char **argv) NMDevice *candidate = g_ptr_array_index (devices, i); const char *dev_iface = nm_device_get_iface (candidate); - if (!strcmp (dev_iface, iface)) + if (!g_strcmp0 (dev_iface, iface)) device = candidate; } if (!device) { @@ -1182,7 +1184,7 @@ do_device_disconnect (NmCli *nmc, int argc, char **argv) NMDevice *candidate = g_ptr_array_index (devices, i); const char *dev_iface = nm_device_get_iface (candidate); - if (!strcmp (dev_iface, iface)) + if (!g_strcmp0 (dev_iface, iface)) device = candidate; } @@ -1321,7 +1323,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) NMDevice *candidate = g_ptr_array_index (devices, i); const char *dev_iface = nm_device_get_iface (candidate); - if (!strcmp (dev_iface, iface)) { + if (!g_strcmp0 (dev_iface, iface)) { device = candidate; break; } @@ -1517,7 +1519,7 @@ find_wifi_device_by_iface (const GPtrArray *devices, const char *iface, int *idx if (iface) { /* If a iface was specified then use it. */ - if (strcmp (dev_iface, iface) == 0) { + if (g_strcmp0 (dev_iface, iface) == 0) { device = candidate; break; } @@ -1968,7 +1970,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) NMDevice *candidate = g_ptr_array_index (devices, i); const char *dev_iface = nm_device_get_iface (candidate); - if (!strcmp (dev_iface, iface)) { + if (!g_strcmp0 (dev_iface, iface)) { device = candidate; break; } diff --git a/cli/src/settings.c b/cli/src/settings.c index 407ca8ad..1b3d0fd0 100644 --- a/cli/src/settings.c +++ b/cli/src/settings.c @@ -94,33 +94,39 @@ static NmcOutputField nmc_fields_setting_wired[] = { /* Available fields for NM_SETTING_802_1X_SETTING_NAME */ static NmcOutputField nmc_fields_setting_8021X[] = { - SETTING_FIELD ("name", 10), /* 0 */ - SETTING_FIELD (NM_SETTING_802_1X_EAP, 10), /* 1 */ - SETTING_FIELD (NM_SETTING_802_1X_IDENTITY, 15), /* 2 */ - SETTING_FIELD (NM_SETTING_802_1X_ANONYMOUS_IDENTITY, 15), /* 3 */ - SETTING_FIELD (NM_SETTING_802_1X_PAC_FILE, 15), /* 4 */ - SETTING_FIELD (NM_SETTING_802_1X_CA_CERT, 10), /* 5 */ - SETTING_FIELD (NM_SETTING_802_1X_CA_PATH, 10), /* 6 */ - SETTING_FIELD (NM_SETTING_802_1X_SUBJECT_MATCH, 10), /* 7 */ - SETTING_FIELD (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, 10), /* 8 */ - SETTING_FIELD (NM_SETTING_802_1X_CLIENT_CERT, 10), /* 9 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPVER, 10), /* 10 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPLABEL, 10), /* 11 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, 10), /* 12 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTH, 10), /* 13 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTHEAP, 10), /* 14 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_CERT, 20), /* 15 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_PATH, 20), /* 16 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH, 10), /* 17 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, 10), /* 18 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, 20), /* 19 */ - SETTING_FIELD (NM_SETTING_802_1X_PASSWORD, 10), /* 20 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY, 15), /* 21 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, 20), /* 22 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, 20), /* 23 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, 20), /* 24 */ - SETTING_FIELD (NM_SETTING_802_1X_PIN, 8), /* 25 */ - SETTING_FIELD (NM_SETTING_802_1X_SYSTEM_CA_CERTS, 17), /* 26 */ + SETTING_FIELD ("name", 10), /* 0 */ + SETTING_FIELD (NM_SETTING_802_1X_EAP, 10), /* 1 */ + SETTING_FIELD (NM_SETTING_802_1X_IDENTITY, 15), /* 2 */ + SETTING_FIELD (NM_SETTING_802_1X_ANONYMOUS_IDENTITY, 15), /* 3 */ + SETTING_FIELD (NM_SETTING_802_1X_PAC_FILE, 15), /* 4 */ + SETTING_FIELD (NM_SETTING_802_1X_CA_CERT, 10), /* 5 */ + SETTING_FIELD (NM_SETTING_802_1X_CA_PATH, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_802_1X_SUBJECT_MATCH, 10), /* 7 */ + SETTING_FIELD (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, 10), /* 8 */ + SETTING_FIELD (NM_SETTING_802_1X_CLIENT_CERT, 10), /* 9 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPVER, 10), /* 10 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPLABEL, 10), /* 11 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, 10), /* 12 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTH, 10), /* 13 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTHEAP, 10), /* 14 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_CERT, 20), /* 15 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_PATH, 20), /* 16 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH, 10), /* 17 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, 10), /* 18 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, 20), /* 19 */ + SETTING_FIELD (NM_SETTING_802_1X_PASSWORD, 10), /* 20 */ + SETTING_FIELD (NM_SETTING_802_1X_PASSWORD_FLAGS, 20), /* 21 */ + SETTING_FIELD (NM_SETTING_802_1X_PASSWORD_RAW, 20), /* 22 */ + SETTING_FIELD (NM_SETTING_802_1X_PASSWORD_RAW_FLAGS, 20), /* 23 */ + SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY, 15), /* 24 */ + SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, 20), /* 25 */ + SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS, 20), /* 26 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, 20), /* 27 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, 20), /* 28 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS, 20), /* 29 */ + SETTING_FIELD (NM_SETTING_802_1X_PIN, 8), /* 30 */ + SETTING_FIELD (NM_SETTING_802_1X_PIN_FLAGS, 20), /* 31 */ + SETTING_FIELD (NM_SETTING_802_1X_SYSTEM_CA_CERTS, 17), /* 32 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_802_1X_ALL "name"","\ @@ -144,11 +150,17 @@ static NmcOutputField nmc_fields_setting_8021X[] = { NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES","\ NM_SETTING_802_1X_PHASE2_CLIENT_CERT","\ NM_SETTING_802_1X_PASSWORD","\ + NM_SETTING_802_1X_PASSWORD_FLAGS","\ + NM_SETTING_802_1X_PASSWORD_RAW","\ + NM_SETTING_802_1X_PASSWORD_RAW_FLAGS","\ NM_SETTING_802_1X_PRIVATE_KEY","\ NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD","\ + NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS","\ NM_SETTING_802_1X_PHASE2_PRIVATE_KEY","\ NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD","\ + NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS","\ NM_SETTING_802_1X_PIN","\ + NM_SETTING_802_1X_PIN_FLAGS","\ NM_SETTING_802_1X_SYSTEM_CA_CERTS #define NMC_FIELDS_SETTING_802_1X_COMMON NMC_FIELDS_SETTING_802_1X_ALL @@ -167,7 +179,8 @@ static NmcOutputField nmc_fields_setting_wireless[] = { SETTING_FIELD (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, 39), /* 10 */ SETTING_FIELD (NM_SETTING_WIRELESS_MTU, 6), /* 11 */ SETTING_FIELD (NM_SETTING_WIRELESS_SEEN_BSSIDS, 35), /* 12 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SEC, 10), /* 13 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SEC, 25), /* 13 */ + SETTING_FIELD (NM_SETTING_WIRELESS_HIDDEN, 10), /* 14 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_WIRELESS_ALL "name"","\ @@ -183,26 +196,30 @@ static NmcOutputField nmc_fields_setting_wireless[] = { NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST","\ NM_SETTING_WIRELESS_MTU","\ NM_SETTING_WIRELESS_SEEN_BSSIDS","\ - NM_SETTING_WIRELESS_SEC + NM_SETTING_WIRELESS_SEC","\ + NM_SETTING_WIRELESS_HIDDEN #define NMC_FIELDS_SETTING_WIRELESS_COMMON NMC_FIELDS_SETTING_WIRELESS_ALL /* Available fields for NM_SETTING_WIRELESS_SECURITY_SETTING_NAME */ static NmcOutputField nmc_fields_setting_wireless_security[] = { - SETTING_FIELD ("name", 25), /* 0 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, 10), /* 1 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 15), /* 2 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, 10), /* 3 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PROTO, 10), /* 4 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PAIRWISE, 10), /* 5 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_GROUP, 10), /* 6 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, 15), /* 7 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, 10), /* 8 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1, 10), /* 9 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2, 10), /* 10 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3, 10), /* 11 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PSK, 6), /* 12 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, 15), /* 13 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, 15), /* 14 */ + SETTING_FIELD ("name", 25), /* 0 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, 10), /* 1 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 15), /* 2 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, 10), /* 3 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PROTO, 10), /* 4 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PAIRWISE, 10), /* 5 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_GROUP, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, 15), /* 7 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, 10), /* 8 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1, 10), /* 9 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2, 10), /* 10 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3, 10), /* 11 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS, 20), /* 12 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, 15), /* 13 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PSK, 6), /* 14 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS, 20), /* 15 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, 15), /* 16 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS, 20), /* 17 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL "name"","\ @@ -217,9 +234,12 @@ static NmcOutputField nmc_fields_setting_wireless_security[] = { NM_SETTING_WIRELESS_SECURITY_WEP_KEY1","\ NM_SETTING_WIRELESS_SECURITY_WEP_KEY2","\ NM_SETTING_WIRELESS_SECURITY_WEP_KEY3","\ + NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS","\ + NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE","\ NM_SETTING_WIRELESS_SECURITY_PSK","\ + NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS","\ NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD","\ - NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE + NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS #define NMC_FIELDS_SETTING_WIRELESS_SECURITY_COMMON NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL /* Available fields for NM_SETTING_IP4_CONFIG_SETTING_NAME */ @@ -267,6 +287,7 @@ static NmcOutputField nmc_fields_setting_ip6_config[] = { SETTING_FIELD (NM_SETTING_IP6_CONFIG_NEVER_DEFAULT, 15), /* 8 */ SETTING_FIELD (NM_SETTING_IP6_CONFIG_MAY_FAIL, 12), /* 9 */ SETTING_FIELD (NM_SETTING_IP6_CONFIG_IP6_PRIVACY, 15), /* 10 */ + SETTING_FIELD (NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME, 14), /* 11 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_IP6_CONFIG_ALL "name"","\ @@ -279,7 +300,8 @@ static NmcOutputField nmc_fields_setting_ip6_config[] = { NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS","\ NM_SETTING_IP6_CONFIG_NEVER_DEFAULT","\ NM_SETTING_IP6_CONFIG_MAY_FAIL","\ - NM_SETTING_IP6_CONFIG_IP6_PRIVACY + NM_SETTING_IP6_CONFIG_IP6_PRIVACY","\ + NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME #define NMC_FIELDS_SETTING_IP6_CONFIG_COMMON NMC_FIELDS_SETTING_IP4_CONFIG_ALL /* Available fields for NM_SETTING_SERIAL_SETTING_NAME */ @@ -350,32 +372,36 @@ static NmcOutputField nmc_fields_setting_pppoe[] = { SETTING_FIELD (NM_SETTING_PPPOE_SERVICE, 12), /* 1 */ SETTING_FIELD (NM_SETTING_PPPOE_USERNAME, 15), /* 2 */ SETTING_FIELD (NM_SETTING_PPPOE_PASSWORD, 15), /* 3 */ + SETTING_FIELD (NM_SETTING_PPPOE_PASSWORD_FLAGS, 20), /* 4 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_PPPOE_ALL "name"","\ NM_SETTING_PPPOE_SERVICE","\ NM_SETTING_PPPOE_USERNAME","\ - NM_SETTING_PPPOE_PASSWORD -#define NMC_FIELDS_SETTING_PPPOE_COMMON NMC_FIELDS_SETTING_PPP_ALL + NM_SETTING_PPPOE_PASSWORD","\ + NM_SETTING_PPPOE_PASSWORD_FLAGS +#define NMC_FIELDS_SETTING_PPPOE_COMMON NMC_FIELDS_SETTING_PPPOE_ALL /* Available fields for NM_SETTING_ADSL_SETTING_NAME */ static NmcOutputField nmc_fields_setting_adsl[] = { SETTING_FIELD ("name", 10), /* 0 */ SETTING_FIELD (NM_SETTING_ADSL_USERNAME, 15), /* 1 */ SETTING_FIELD (NM_SETTING_ADSL_PASSWORD, 15), /* 2 */ - SETTING_FIELD (NM_SETTING_ADSL_VPI, 10), /* 3 */ - SETTING_FIELD (NM_SETTING_ADSL_VCI, 10), /* 4 */ + SETTING_FIELD (NM_SETTING_ADSL_PASSWORD_FLAGS, 20), /* 3 */ + SETTING_FIELD (NM_SETTING_ADSL_PROTOCOL, 10), /* 4 */ SETTING_FIELD (NM_SETTING_ADSL_ENCAPSULATION, 10), /* 5 */ - SETTING_FIELD (NM_SETTING_ADSL_PROTOCOL, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_ADSL_VPI, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_ADSL_VCI, 10), /* 7 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_ADSL_ALL "name"","\ NM_SETTING_ADSL_USERNAME","\ NM_SETTING_ADSL_PASSWORD","\ - NM_SETTING_ADSL_VPI","\ - NM_SETTING_ADSL_VCI","\ + NM_SETTING_ADSL_PASSWORD_FLAGS","\ + NM_SETTING_ADSL_PROTOCOL","\ NM_SETTING_ADSL_ENCAPSULATION","\ - NM_SETTING_ADSL_PROTOCOL + NM_SETTING_ADSL_VPI","\ + NM_SETTING_ADSL_VCI #define NMC_FIELDS_SETTING_ADSL_COMMON NMC_FIELDS_SETTING_ADSL_ALL /* Available fields for NM_SETTING_GSM_SETTING_NAME */ @@ -384,23 +410,27 @@ static NmcOutputField nmc_fields_setting_gsm[] = { SETTING_FIELD (NM_SETTING_GSM_NUMBER, 10), /* 1 */ SETTING_FIELD (NM_SETTING_GSM_USERNAME, 15), /* 2 */ SETTING_FIELD (NM_SETTING_GSM_PASSWORD, 15), /* 3 */ - SETTING_FIELD (NM_SETTING_GSM_APN, 25), /* 4 */ - SETTING_FIELD (NM_SETTING_GSM_NETWORK_ID, 12), /* 5 */ - SETTING_FIELD (NM_SETTING_GSM_NETWORK_TYPE, 15), /* 6 */ - SETTING_FIELD (NM_SETTING_GSM_ALLOWED_BANDS, 15), /* 7 */ - SETTING_FIELD (NM_SETTING_GSM_PIN, 10), /* 8 */ - SETTING_FIELD (NM_SETTING_GSM_HOME_ONLY, 10), /* 9 */ + SETTING_FIELD (NM_SETTING_GSM_PASSWORD_FLAGS, 20), /* 4 */ + SETTING_FIELD (NM_SETTING_GSM_APN, 25), /* 5 */ + SETTING_FIELD (NM_SETTING_GSM_NETWORK_ID, 12), /* 6 */ + SETTING_FIELD (NM_SETTING_GSM_NETWORK_TYPE, 15), /* 7 */ + SETTING_FIELD (NM_SETTING_GSM_ALLOWED_BANDS, 15), /* 8 */ + SETTING_FIELD (NM_SETTING_GSM_PIN, 10), /* 9 */ + SETTING_FIELD (NM_SETTING_GSM_PIN_FLAGS, 20), /* 10 */ + SETTING_FIELD (NM_SETTING_GSM_HOME_ONLY, 10), /* 11 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_GSM_ALL "name"","\ NM_SETTING_GSM_NUMBER","\ NM_SETTING_GSM_USERNAME","\ NM_SETTING_GSM_PASSWORD","\ + NM_SETTING_GSM_PASSWORD_FLAGS","\ NM_SETTING_GSM_APN","\ NM_SETTING_GSM_NETWORK_ID","\ NM_SETTING_GSM_NETWORK_TYPE","\ NM_SETTING_GSM_ALLOWED_BANDS","\ NM_SETTING_GSM_PIN","\ + NM_SETTING_GSM_PIN_FLAGS","\ NM_SETTING_GSM_HOME_ONLY #define NMC_FIELDS_SETTING_GSM_COMMON NMC_FIELDS_SETTING_GSM_ALL @@ -410,12 +440,14 @@ static NmcOutputField nmc_fields_setting_cdma[] = { SETTING_FIELD (NM_SETTING_CDMA_NUMBER, 15), /* 1 */ SETTING_FIELD (NM_SETTING_CDMA_USERNAME, 15), /* 2 */ SETTING_FIELD (NM_SETTING_CDMA_PASSWORD, 15), /* 3 */ + SETTING_FIELD (NM_SETTING_CDMA_PASSWORD_FLAGS, 20), /* 4 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_CDMA_ALL "name"","\ NM_SETTING_CDMA_NUMBER","\ NM_SETTING_CDMA_USERNAME","\ - NM_SETTING_CDMA_PASSWORD + NM_SETTING_CDMA_PASSWORD","\ + NM_SETTING_CDMA_PASSWORD_FLAGS #define NMC_FIELDS_SETTING_CDMA_COMMON NMC_FIELDS_SETTING_CDMA_ALL /* Available fields for NM_SETTING_BLUETOOTH_SETTING_NAME */ @@ -570,15 +602,15 @@ wep_key_type_to_string (NMWepKeyType type) } static char * -blob_cert_to_string (const GByteArray *array) +byte_array_to_string (const GByteArray *array) { GString *cert = NULL; int i; - if (array->len > 0) + if (array && array->len > 0) cert = g_string_new (NULL); - for (i = 0; i < array->len; i++) { + for (i = 0; array && i < array->len; i++) { g_string_append_printf (cert, "%02X", array->data[i]); } @@ -697,9 +729,95 @@ ip6_privacy_to_string (NMSettingIP6ConfigPrivacy ip6_privacy) } } +static char * +secret_flags_to_string (guint32 flags) +{ + GString *flag_str; + + if (flags == 0) + return g_strdup (_("0 (none)")); + + flag_str = g_string_new (NULL); + g_string_printf (flag_str, "%d (", flags); + + if (flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED) + g_string_append (flag_str, _("agent-owned, ")); + if (flags & NM_SETTING_SECRET_FLAG_NOT_SAVED) + g_string_append (flag_str, _("not saved, ")); + if (flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED) + g_string_append (flag_str, _("not required, ")); + + if (flag_str->str[flag_str->len-1] == '(') + g_string_assign (flag_str, _("unknown")); + else + g_string_truncate (flag_str, flag_str->len-2); /* chop off trailing ', ' */ + + g_string_append_c (flag_str, ')'); + + return g_string_free (flag_str, FALSE); +} + /*----------------------------------------------------------------------------*/ gboolean +setting_details (NMSetting *setting, NmCli *nmc) +{ + GType setting_type; + + g_return_val_if_fail (NM_IS_SETTING (setting), FALSE); + + setting_type = G_OBJECT_TYPE (setting); + + if (setting_type == NM_TYPE_SETTING_CONNECTION) + return setting_connection_details (NM_SETTING_CONNECTION (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_WIRED) + return setting_wired_details (NM_SETTING_WIRED (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_802_1X) + return setting_802_1X_details (NM_SETTING_802_1X (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_WIRELESS) + return setting_wireless_details (NM_SETTING_WIRELESS (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_WIRELESS_SECURITY) + return setting_wireless_security_details (NM_SETTING_WIRELESS_SECURITY (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_IP4_CONFIG) + return setting_ip4_config_details (NM_SETTING_IP4_CONFIG (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_IP6_CONFIG) + return setting_ip6_config_details (NM_SETTING_IP6_CONFIG (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_SERIAL) + return setting_serial_details (NM_SETTING_SERIAL (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_PPP) + return setting_ppp_details (NM_SETTING_PPP (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_PPPOE) + return setting_pppoe_details (NM_SETTING_PPPOE (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_GSM) + return setting_gsm_details (NM_SETTING_GSM (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_CDMA) + return setting_cdma_details (NM_SETTING_CDMA (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_BLUETOOTH) + return setting_bluetooth_details (NM_SETTING_BLUETOOTH (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_OLPC_MESH) + return setting_olpc_mesh_details (NM_SETTING_OLPC_MESH (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_VPN) + return setting_vpn_details (NM_SETTING_VPN (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_WIMAX) + return setting_wimax_details (NM_SETTING_WIMAX (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_INFINIBAND) + return setting_infiniband_details (NM_SETTING_INFINIBAND (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_BOND) + return setting_bond_details (NM_SETTING_BOND (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_VLAN) + return setting_vlan_details (NM_SETTING_VLAN (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_ADSL) + return setting_adsl_details (NM_SETTING_ADSL (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_BRIDGE) + return setting_bridge_details (NM_SETTING_BRIDGE (setting), nmc); + else if (setting_type == NM_TYPE_SETTING_BRIDGE_PORT) + return setting_bridge_port_details (NM_SETTING_BRIDGE_PORT (setting), nmc); + else + /* should not be reached */ + return FALSE; +} + +gboolean setting_connection_details (NMSettingConnection *s_con, NmCli *nmc) { guint64 timestamp; @@ -849,7 +967,8 @@ setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) NMSetting8021xCKScheme scheme; GString *eap_str, *alt_sub_match, *phase2_alt_sub_match; char *ca_cert_str = NULL, *client_cert_str = NULL, *phase2_ca_cert_str = NULL; - char *phase2_client_cert_str = NULL, *private_key_str = NULL, *phase2_private_key_str = NULL; + char *phase2_client_cert_str = NULL, *private_key_str = NULL, *phase2_private_key_str = NULL, *pswd_raw_str = NULL; + char *pswd_flags, *pswd_raw_flags, *priv_key_pswd_flags, *phase2_priv_key_pswd_flags, *pin_flags; int i; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; @@ -870,37 +989,37 @@ setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) } scheme = nm_setting_802_1x_get_ca_cert_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - ca_cert_str = blob_cert_to_string (nm_setting_802_1x_get_ca_cert_blob (s_8021X)); + ca_cert_str = byte_array_to_string (nm_setting_802_1x_get_ca_cert_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) ca_cert_str = g_strdup (nm_setting_802_1x_get_ca_cert_path (s_8021X)); scheme = nm_setting_802_1x_get_client_cert_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - client_cert_str = blob_cert_to_string (nm_setting_802_1x_get_client_cert_blob (s_8021X)); + client_cert_str = byte_array_to_string (nm_setting_802_1x_get_client_cert_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) client_cert_str = g_strdup (nm_setting_802_1x_get_client_cert_path (s_8021X)); scheme = nm_setting_802_1x_get_phase2_ca_cert_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - phase2_ca_cert_str = blob_cert_to_string (nm_setting_802_1x_get_phase2_ca_cert_blob (s_8021X)); + phase2_ca_cert_str = byte_array_to_string (nm_setting_802_1x_get_phase2_ca_cert_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) phase2_ca_cert_str = g_strdup (nm_setting_802_1x_get_phase2_ca_cert_path (s_8021X)); scheme = nm_setting_802_1x_get_phase2_client_cert_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - phase2_client_cert_str = blob_cert_to_string (nm_setting_802_1x_get_phase2_client_cert_blob (s_8021X)); + phase2_client_cert_str = byte_array_to_string (nm_setting_802_1x_get_phase2_client_cert_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) phase2_client_cert_str = g_strdup (nm_setting_802_1x_get_phase2_client_cert_path (s_8021X)); scheme = nm_setting_802_1x_get_private_key_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - private_key_str = blob_cert_to_string (nm_setting_802_1x_get_private_key_blob (s_8021X)); + private_key_str = byte_array_to_string (nm_setting_802_1x_get_private_key_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) private_key_str = g_strdup (nm_setting_802_1x_get_private_key_path (s_8021X)); scheme = nm_setting_802_1x_get_phase2_private_key_scheme (s_8021X); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) - phase2_private_key_str = blob_cert_to_string (nm_setting_802_1x_get_phase2_private_key_blob (s_8021X)); + phase2_private_key_str = byte_array_to_string (nm_setting_802_1x_get_phase2_private_key_blob (s_8021X)); if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) phase2_private_key_str = g_strdup (nm_setting_802_1x_get_phase2_private_key_path (s_8021X)); @@ -914,6 +1033,14 @@ setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) g_string_append_printf (phase2_alt_sub_match, "%s,", nm_setting_802_1x_get_phase2_altsubject_match (s_8021X, i)); g_string_truncate (phase2_alt_sub_match, phase2_alt_sub_match->len-1); /* chop off trailing ',' */ + pswd_raw_str = byte_array_to_string (nm_setting_802_1x_get_password_raw (s_8021X)); + + pswd_flags = secret_flags_to_string (nm_setting_802_1x_get_password_flags (s_8021X)); + pswd_raw_flags = secret_flags_to_string (nm_setting_802_1x_get_password_raw_flags (s_8021X)); + priv_key_pswd_flags = secret_flags_to_string (nm_setting_802_1x_get_private_key_password_flags (s_8021X)); + phase2_priv_key_pswd_flags = secret_flags_to_string (nm_setting_802_1x_get_phase2_private_key_password_flags (s_8021X)); + pin_flags = secret_flags_to_string (nm_setting_802_1x_get_pin_flags (s_8021X)); + nmc->allowed_fields[0].value = NM_SETTING_802_1X_SETTING_NAME; nmc->allowed_fields[1].value = eap_str->str; nmc->allowed_fields[2].value = nm_setting_802_1x_get_identity (s_8021X); @@ -935,12 +1062,18 @@ setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) nmc->allowed_fields[18].value = phase2_alt_sub_match->str; nmc->allowed_fields[19].value = phase2_client_cert_str; nmc->allowed_fields[20].value = nm_setting_802_1x_get_password (s_8021X); - nmc->allowed_fields[21].value = private_key_str; - nmc->allowed_fields[22].value = nm_setting_802_1x_get_private_key_password (s_8021X); - nmc->allowed_fields[23].value = phase2_private_key_str; - nmc->allowed_fields[24].value = nm_setting_802_1x_get_phase2_private_key_password (s_8021X); - nmc->allowed_fields[25].value = nm_setting_802_1x_get_pin (s_8021X); - nmc->allowed_fields[26].value = nm_setting_802_1x_get_system_ca_certs (s_8021X) ? _("yes") : _("no"); + nmc->allowed_fields[21].value = pswd_flags; + nmc->allowed_fields[22].value = pswd_raw_str; + nmc->allowed_fields[23].value = pswd_raw_flags; + nmc->allowed_fields[24].value = private_key_str; + nmc->allowed_fields[25].value = nm_setting_802_1x_get_private_key_password (s_8021X); + nmc->allowed_fields[26].value = priv_key_pswd_flags; + nmc->allowed_fields[27].value = phase2_private_key_str; + nmc->allowed_fields[28].value = nm_setting_802_1x_get_phase2_private_key_password (s_8021X); + nmc->allowed_fields[29].value = phase2_priv_key_pswd_flags; + nmc->allowed_fields[30].value = nm_setting_802_1x_get_pin (s_8021X); + nmc->allowed_fields[31].value = pin_flags; + nmc->allowed_fields[32].value = nm_setting_802_1x_get_system_ca_certs (s_8021X) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -951,6 +1084,12 @@ setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) g_free (phase2_client_cert_str); g_free (private_key_str); g_free (phase2_private_key_str); + g_free (pswd_flags); + g_free (pswd_raw_str); + g_free (pswd_raw_flags); + g_free (priv_key_pswd_flags); + g_free (phase2_priv_key_pswd_flags); + g_free (pin_flags); g_string_free (eap_str, TRUE); g_string_free (alt_sub_match, TRUE); g_string_free (phase2_alt_sub_match, TRUE); @@ -963,8 +1102,8 @@ setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc) { int i; const GByteArray *ssid, *bssid, *mac; - char *ssid_str, *channel_str, *rate_str, *tx_power_str, *mtu_str; - char *device_mac_str = NULL, *cloned_mac_str = NULL, *bssid_str = NULL; + char *channel_str, *rate_str, *tx_power_str, *mtu_str; + char *device_mac_str = NULL, *cloned_mac_str = NULL, *ssid_str = NULL, *bssid_str = NULL; GString *mac_blacklist, *seen_bssids; const GSList *iter; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; @@ -979,7 +1118,8 @@ setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc) print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ ssid = nm_setting_wireless_get_ssid (s_wireless); - ssid_str = ssid_to_printable ((const char *) ssid->data, ssid->len); + if (ssid) + ssid_str = ssid_to_printable ((const char *) ssid->data, ssid->len); channel_str = g_strdup_printf ("%d", nm_setting_wireless_get_channel (s_wireless)); rate_str = g_strdup_printf ("%d", nm_setting_wireless_get_rate (s_wireless)); bssid = nm_setting_wireless_get_bssid (s_wireless); @@ -1023,6 +1163,7 @@ setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc) nmc->allowed_fields[11].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); nmc->allowed_fields[12].value = seen_bssids->str; nmc->allowed_fields[13].value = nm_setting_wireless_get_security (s_wireless); + nmc->allowed_fields[14].value = nm_setting_wireless_get_hidden (s_wireless) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -1045,7 +1186,7 @@ gboolean setting_wireless_security_details (NMSettingWirelessSecurity *s_wireless_sec, NmCli *nmc) { int i; - char *wep_tx_keyidx_str, *wep_key_type_str; + char *wep_tx_keyidx_str, *wep_key_type_str, *wep_flags, *psk_flags, *leap_flags; GString *protos, *pairwises, *groups; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; @@ -1079,6 +1220,10 @@ setting_wireless_security_details (NMSettingWirelessSecurity *s_wireless_sec, Nm } wep_key_type_str = wep_key_type_to_string (nm_setting_wireless_security_get_wep_key_type (s_wireless_sec)); + wep_flags = secret_flags_to_string (nm_setting_wireless_security_get_wep_key_flags (s_wireless_sec)); + psk_flags = secret_flags_to_string (nm_setting_wireless_security_get_psk_flags (s_wireless_sec)); + leap_flags = secret_flags_to_string (nm_setting_wireless_security_get_leap_password_flags (s_wireless_sec)); + nmc->allowed_fields[0].value = NM_SETTING_WIRELESS_SECURITY_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_wireless_security_get_key_mgmt (s_wireless_sec); nmc->allowed_fields[2].value = wep_tx_keyidx_str; @@ -1091,15 +1236,21 @@ setting_wireless_security_details (NMSettingWirelessSecurity *s_wireless_sec, Nm nmc->allowed_fields[9].value = nm_setting_wireless_security_get_wep_key (s_wireless_sec, 1); nmc->allowed_fields[10].value = nm_setting_wireless_security_get_wep_key (s_wireless_sec, 2); nmc->allowed_fields[11].value = nm_setting_wireless_security_get_wep_key (s_wireless_sec, 3); - nmc->allowed_fields[12].value = nm_setting_wireless_security_get_psk (s_wireless_sec); - nmc->allowed_fields[13].value = nm_setting_wireless_security_get_leap_password (s_wireless_sec); - nmc->allowed_fields[14].value = wep_key_type_str; + nmc->allowed_fields[12].value = wep_flags; + nmc->allowed_fields[13].value = wep_key_type_str; + nmc->allowed_fields[14].value = nm_setting_wireless_security_get_psk (s_wireless_sec); + nmc->allowed_fields[15].value = psk_flags; + nmc->allowed_fields[16].value = nm_setting_wireless_security_get_leap_password (s_wireless_sec); + nmc->allowed_fields[17].value = leap_flags; nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ g_free (wep_tx_keyidx_str); g_free (wep_key_type_str); + g_free (wep_flags); + g_free (psk_flags); + g_free (leap_flags); g_string_free (protos, TRUE); g_string_free (pairwises, TRUE); g_string_free (groups, TRUE); @@ -1364,6 +1515,7 @@ setting_ip6_config_details (NMSettingIP6Config *s_ip6, NmCli *nmc) nmc->allowed_fields[8].value = nm_setting_ip6_config_get_never_default (s_ip6) ? _("yes") : _("no"); nmc->allowed_fields[9].value = nm_setting_ip6_config_get_may_fail (s_ip6) ? _("yes") : _("no"); nmc->allowed_fields[10].value = ip6_privacy_str; + nmc->allowed_fields[11].value = nm_setting_ip6_config_get_dhcp_hostname (s_ip6); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -1473,6 +1625,7 @@ setting_ppp_details (NMSettingPPP *s_ppp, NmCli *nmc) gboolean setting_pppoe_details (NMSettingPPPOE *s_pppoe, NmCli *nmc) { + char *pswd_flags; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -1484,21 +1637,26 @@ setting_pppoe_details (NMSettingPPPOE *s_pppoe, NmCli *nmc) nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + pswd_flags = secret_flags_to_string (nm_setting_pppoe_get_password_flags (s_pppoe)); + nmc->allowed_fields[0].value = NM_SETTING_PPPOE_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_pppoe_get_service (s_pppoe); nmc->allowed_fields[2].value = nm_setting_pppoe_get_username (s_pppoe); nmc->allowed_fields[3].value = nm_setting_pppoe_get_password (s_pppoe); + nmc->allowed_fields[4].value = pswd_flags; nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + g_free (pswd_flags); + return TRUE; } gboolean setting_gsm_details (NMSettingGsm *s_gsm, NmCli *nmc) { - char *network_type_str, *allowed_bands_str; + char *network_type_str, *allowed_bands_str, *pswd_flags, *pin_flags; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -1513,22 +1671,29 @@ setting_gsm_details (NMSettingGsm *s_gsm, NmCli *nmc) network_type_str = g_strdup_printf ("%d", nm_setting_gsm_get_network_type (s_gsm)); allowed_bands_str = allowed_bands_to_string (nm_setting_gsm_get_allowed_bands (s_gsm)); + pswd_flags = secret_flags_to_string (nm_setting_gsm_get_password_flags (s_gsm)); + pin_flags = secret_flags_to_string (nm_setting_gsm_get_pin_flags (s_gsm)); + nmc->allowed_fields[0].value = NM_SETTING_GSM_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_gsm_get_number (s_gsm); nmc->allowed_fields[2].value = nm_setting_gsm_get_username (s_gsm); nmc->allowed_fields[3].value = nm_setting_gsm_get_password (s_gsm); - nmc->allowed_fields[4].value = nm_setting_gsm_get_apn (s_gsm); - nmc->allowed_fields[5].value = nm_setting_gsm_get_network_id (s_gsm); - nmc->allowed_fields[6].value = network_type_str; - nmc->allowed_fields[7].value = allowed_bands_str; - nmc->allowed_fields[8].value = nm_setting_gsm_get_pin (s_gsm); - nmc->allowed_fields[9].value = nm_setting_gsm_get_home_only (s_gsm) ? _("yes") : _("no"); + nmc->allowed_fields[4].value = pswd_flags; + nmc->allowed_fields[5].value = nm_setting_gsm_get_apn (s_gsm); + nmc->allowed_fields[6].value = nm_setting_gsm_get_network_id (s_gsm); + nmc->allowed_fields[7].value = network_type_str; + nmc->allowed_fields[8].value = allowed_bands_str; + nmc->allowed_fields[9].value = nm_setting_gsm_get_pin (s_gsm); + nmc->allowed_fields[10].value = pin_flags; + nmc->allowed_fields[11].value = nm_setting_gsm_get_home_only (s_gsm) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ g_free (network_type_str); g_free (allowed_bands_str); + g_free (pswd_flags); + g_free (pin_flags); return TRUE; } @@ -1536,6 +1701,7 @@ setting_gsm_details (NMSettingGsm *s_gsm, NmCli *nmc) gboolean setting_cdma_details (NMSettingCdma *s_cdma, NmCli *nmc) { + char *pswd_flags; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -1547,14 +1713,19 @@ setting_cdma_details (NMSettingCdma *s_cdma, NmCli *nmc) nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + pswd_flags = secret_flags_to_string (nm_setting_cdma_get_password_flags (s_cdma)); + nmc->allowed_fields[0].value = NM_SETTING_CDMA_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_cdma_get_number (s_cdma); nmc->allowed_fields[2].value = nm_setting_cdma_get_username (s_cdma); nmc->allowed_fields[3].value = nm_setting_cdma_get_password (s_cdma); + nmc->allowed_fields[4].value = pswd_flags; nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + g_free (pswd_flags); + return TRUE; } @@ -1594,7 +1765,7 @@ gboolean setting_olpc_mesh_details (NMSettingOlpcMesh *s_olpc_mesh, NmCli *nmc) { const GByteArray *ssid, *dhcp_anycast; - char *ssid_str, *channel_str, *dhcp_anycast_str = NULL; + char *channel_str, *ssid_str = NULL, *dhcp_anycast_str = NULL; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -1607,7 +1778,8 @@ setting_olpc_mesh_details (NMSettingOlpcMesh *s_olpc_mesh, NmCli *nmc) print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ ssid = nm_setting_olpc_mesh_get_ssid (s_olpc_mesh); - ssid_str = ssid_to_printable ((const char *) ssid->data, ssid->len); + if (ssid) + ssid_str = ssid_to_printable ((const char *) ssid->data, ssid->len); channel_str = g_strdup_printf ("%d", nm_setting_olpc_mesh_get_channel (s_olpc_mesh)); dhcp_anycast = nm_setting_olpc_mesh_get_dhcp_anycast_address (s_olpc_mesh); if (dhcp_anycast) @@ -1820,6 +1992,7 @@ setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc) gboolean setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc) { + char *pswd_flags; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -1831,19 +2004,23 @@ setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc) nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + pswd_flags = secret_flags_to_string (nm_setting_adsl_get_password_flags (s_adsl)); + nmc->allowed_fields[0].value = NM_SETTING_ADSL_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_adsl_get_username (s_adsl); nmc->allowed_fields[2].value = nm_setting_adsl_get_password (s_adsl); - nmc->allowed_fields[3].value = g_strdup_printf ("%d", nm_setting_adsl_get_vpi (s_adsl)); - nmc->allowed_fields[4].value = g_strdup_printf ("%d", nm_setting_adsl_get_vci (s_adsl)); + nmc->allowed_fields[3].value = pswd_flags; + nmc->allowed_fields[4].value = nm_setting_adsl_get_protocol (s_adsl); nmc->allowed_fields[5].value = nm_setting_adsl_get_encapsulation (s_adsl); - nmc->allowed_fields[6].value = nm_setting_adsl_get_protocol (s_adsl); + nmc->allowed_fields[6].value = g_strdup_printf ("%d", nm_setting_adsl_get_vpi (s_adsl)); + nmc->allowed_fields[7].value = g_strdup_printf ("%d", nm_setting_adsl_get_vci (s_adsl)); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ - g_free ((char*) nmc->allowed_fields[3].value); - g_free ((char*) nmc->allowed_fields[4].value); + g_free (pswd_flags); + g_free ((char*) nmc->allowed_fields[6].value); + g_free ((char*) nmc->allowed_fields[7].value); return TRUE; } diff --git a/cli/src/settings.h b/cli/src/settings.h index 2a64052a..15e5577f 100644 --- a/cli/src/settings.h +++ b/cli/src/settings.h @@ -47,6 +47,7 @@ #include "utils.h" +gboolean setting_details (NMSetting *ssetting, NmCli *nmc); gboolean setting_connection_details (NMSettingConnection *s_con, NmCli *nmc); gboolean setting_wired_details (NMSettingWired *s_wired, NmCli *nmc); gboolean setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc); |