about summary refs log tree commit diff
path: root/cli/src
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2013-02-20 23:06:45 +0100
committerMichael Biebl <biebl@debian.org>2013-02-20 23:06:45 +0100
commit8d275584fc94f398f0a7c990dcd057533d9a5856 (patch)
tree1bf4a928e201222a008e6776799d174ee3223be3 /cli/src
parente17c5736fc3722ce51cb33f3edb203960125a4c1 (diff)
Imported Upstream version 0.9.8.0 upstream/0.9.8.0
Diffstat (limited to 'cli/src')
-rw-r--r--cli/src/connections.c2
-rw-r--r--cli/src/devices.c77
2 files changed, 72 insertions, 7 deletions
diff --git a/cli/src/connections.c b/cli/src/connections.c
index d509ce04..b39b447e 100644
--- a/cli/src/connections.c
+++ b/cli/src/connections.c
@@ -464,6 +464,8 @@ active_connection_state_to_string (NMActiveConnectionState state)
 		return _("activated");
 	case NM_ACTIVE_CONNECTION_STATE_DEACTIVATING:
 		return _("deactivating");
+	case NM_ACTIVE_CONNECTION_STATE_DEACTIVATED:
+		return _("deactivated");
 	case NM_ACTIVE_CONNECTION_STATE_UNKNOWN:
 	default:
 		return _("unknown");
diff --git a/cli/src/devices.c b/cli/src/devices.c
index 52c8c855..0cea0188 100644
--- a/cli/src/devices.c
+++ b/cli/src/devices.c
@@ -93,14 +93,15 @@ static NmcOutputField nmc_fields_dev_list_sections[] = {
 	{"DHCP6",             N_("DHCP6"),             0, NULL, 0},  /* 10 */
 	{"BOND",              N_("BOND"),              0, NULL, 0},  /* 11 */
 	{"VLAN",              N_("VLAN"),              0, NULL, 0},  /* 12 */
+	{"CONNECTIONS",       N_("CONNECTIONS"),       0, NULL, 0},  /* 13 */
 	{NULL,                NULL,                    0, NULL, 0}
 };
 #if WITH_WIMAX
-#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL     "GENERAL,CAPABILITIES,BOND,VLAN,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6"
-#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON  "GENERAL,CAPABILITIES,BOND,VLAN,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6"
+#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL     "GENERAL,CAPABILITIES,BOND,VLAN,CONNECTIONS,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6"
+#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON  "GENERAL,CAPABILITIES,BOND,VLAN,CONNECTIONS,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6"
 #else
-#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL     "GENERAL,CAPABILITIES,BOND,VLAN,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6"
-#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON  "GENERAL,CAPABILITIES,BOND,VLAN,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6"
+#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL     "GENERAL,CAPABILITIES,BOND,VLAN,CONNECTIONS,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6"
+#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON  "GENERAL,CAPABILITIES,BOND,VLAN,CONNECTIONS,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6"
 #endif
 
 /* Available fields for 'dev list' - GENERAL part */
@@ -124,9 +125,20 @@ static NmcOutputField nmc_fields_dev_list_general[] = {
 	{"CONNECTION",        N_("CONNECTION"),        51, NULL, 0},  /* 16 */
 	{NULL, NULL, 0, NULL, 0}
 };
-#define NMC_FIELDS_DEV_LIST_GENERAL_ALL     "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,DRIVER-VERSION,FIRMWARE-VERSION,HWADDR,STATE,REASON,UDI,IP-IFACE,NM-MANAGED,AUTOCONNECT,FIRMWARE-MISSING,CONNECTION"
+#define NMC_FIELDS_DEV_LIST_GENERAL_ALL     "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,DRIVER-VERSION,FIRMWARE-VERSION,HWADDR,STATE,REASON,UDI,IP-IFACE,"\
+                                            "NM-MANAGED,AUTOCONNECT,FIRMWARE-MISSING,CONNECTION"
 #define NMC_FIELDS_DEV_LIST_GENERAL_COMMON  "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE"
 
+/* Available fields for 'dev list' - CONNECTIONS part */
+static NmcOutputField nmc_fields_dev_list_connections[] = {
+	{"NAME",                       N_("NAME"),                       10, NULL, 0},  /* 0 */
+	{"AVAILABLE-CONNECTION-PATHS", N_("AVAILABLE-CONNECTION-PATHS"), 80, NULL, 0},  /* 1 */
+	{"AVAILABLE-CONNECTIONS",      N_("AVAILABLE-CONNECTIONS"),      80, NULL, 0},  /* 2 */
+	{NULL, NULL, 0, NULL, 0}
+};
+#define NMC_FIELDS_DEV_LIST_CONNECTIONS_ALL     "AVAILABLE-CONNECTION-PATHS,AVAILABLE-CONNECTIONS"
+#define NMC_FIELDS_DEV_LIST_CONNECTIONS_COMMON  "AVAILABLE-CONNECTION-PATHS,AVAILABLE-CONNECTIONS"
+
 /* Available fields for 'dev list' - CAPABILITIES part */
 static NmcOutputField nmc_fields_dev_list_cap[] = {
 	{"NAME",            N_("NAME"),            13, NULL, 0},  /* 0 */
@@ -155,10 +167,12 @@ static NmcOutputField nmc_fields_dev_list_wifi_prop[] = {
 	{"WPA2",       N_("WPA2"),         6, NULL, 0},  /* 3 */
 	{"TKIP",       N_("TKIP"),         6, NULL, 0},  /* 4 */
 	{"CCMP",       N_("CCMP"),         6, NULL, 0},  /* 5 */
+	{"AP",         N_("AP"),           6, NULL, 0},  /* 6 */
+	{"ADHOC",      N_("ADHOC"),        6, NULL, 0},  /* 7 */
 	{NULL,         NULL,               0, NULL, 0}
 };
-#define NMC_FIELDS_DEV_LIST_WIFI_PROP_ALL     "NAME,WEP,WPA,WPA2,TKIP,CCMP"
-#define NMC_FIELDS_DEV_LIST_WIFI_PROP_COMMON  "NAME,WEP,WPA,WPA2,TKIP,CCMP"
+#define NMC_FIELDS_DEV_LIST_WIFI_PROP_ALL     "NAME,WEP,WPA,WPA2,TKIP,CCMP,AP,ADHOC"
+#define NMC_FIELDS_DEV_LIST_WIFI_PROP_COMMON  "NAME,WEP,WPA,WPA2,TKIP,CCMP,AP,ADHOC"
 
 #if WITH_WIMAX
 /* Available fields for 'dev list' - wimax properties part */
@@ -678,6 +692,8 @@ show_device_info (gpointer data, gpointer user_data)
 				nmc->allowed_fields[3].value = (wcaps & NM_WIFI_DEVICE_CAP_RSN) ? _("yes") : _("no");
 				nmc->allowed_fields[4].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP) ? _("yes") : _("no");
 				nmc->allowed_fields[5].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP) ? _("yes") : _("no");
+				nmc->allowed_fields[6].value = (wcaps & NM_WIFI_DEVICE_CAP_AP) ? _("yes") : _("no");
+				nmc->allowed_fields[7].value = (wcaps & NM_WIFI_DEVICE_CAP_ADHOC) ? _("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 */
@@ -878,6 +894,53 @@ show_device_info (gpointer data, gpointer user_data)
 			}
 		}
 
+		/* section CONNECTIONS */
+		if (!strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[13].name)) {
+			const GPtrArray *avail_cons;
+			GString *ac_paths_str;
+			char **ac_arr = NULL;
+			int i;
+
+			nmc->allowed_fields = nmc_fields_dev_list_connections;
+			nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
+			nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_CONNECTIONS_ALL, nmc->allowed_fields, NULL);
+			print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
+
+			/* available-connections */
+			avail_cons = nm_device_get_available_connections (device);
+			ac_paths_str = g_string_new (NULL);
+			if (avail_cons->len) {
+				ac_arr = g_new (char *, avail_cons->len + 1);
+				ac_arr[avail_cons->len] = NULL;
+			}
+			for (i = 0; avail_cons && (i < avail_cons->len); i++) {
+				NMRemoteConnection *avail_con = g_ptr_array_index (avail_cons, i);
+				const char *ac_path = nm_connection_get_path (NM_CONNECTION (avail_con));
+				const char *ac_id = nm_connection_get_id (NM_CONNECTION (avail_con));
+				const char *ac_uuid = nm_connection_get_uuid (NM_CONNECTION (avail_con));
+
+				ac_arr[i] = g_strdup_printf ("%s | %s", ac_uuid, ac_id);
+
+				if (i == 0)
+					g_string_printf (ac_paths_str, "%s/{", NM_DBUS_PATH_SETTINGS);
+				else
+					g_string_append_c (ac_paths_str, ',');
+				g_string_append (ac_paths_str, strrchr (ac_path, '/') + 1);
+			}
+			if (ac_paths_str->len > 0)
+				g_string_append_c (ac_paths_str, '}');
+
+			set_val_str (nmc->allowed_fields, 0, nmc_fields_dev_list_sections[13].name);  /* "CONNECTIONS" */
+			set_val_str (nmc->allowed_fields, 1, ac_paths_str->str);
+			set_val_arr (nmc->allowed_fields, 2, (const char **) ac_arr);
+
+			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_string_free (ac_paths_str, TRUE);
+			g_strfreev (ac_arr);
+			was_output = TRUE;
+		}
 	}
 
 	if (sections_array)