diff options
Diffstat (limited to 'cli/src/devices.c')
| -rw-r--r-- | cli/src/devices.c | 466 |
1 files changed, 244 insertions, 222 deletions
diff --git a/cli/src/devices.c b/cli/src/devices.c index 500d2341..0b1b6d6e 100644 --- a/cli/src/devices.c +++ b/cli/src/devices.c @@ -14,7 +14,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * (C) Copyright 2010 - 2011 Red Hat, Inc. + * (C) Copyright 2010 - 2012 Red Hat, Inc. */ #include "config.h" @@ -24,10 +24,6 @@ #include <stdlib.h> #include <errno.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> - #include <glib.h> #include <glib/gi18n.h> @@ -37,10 +33,13 @@ #include <nm-device-wifi.h> #include <nm-device-modem.h> #include <nm-device-bt.h> -//#include <nm-device-olpc-mesh.h> +#include <nm-device-olpc-mesh.h> #if WITH_WIMAX #include <nm-device-wimax.h> #endif +#include <nm-device-infiniband.h> +#include <nm-device-bond.h> +#include <nm-device-vlan.h> #include <nm-utils.h> #include <nm-setting-ip4-config.h> #include <nm-setting-ip6-config.h> @@ -56,8 +55,10 @@ #if WITH_WIMAX #include <nm-setting-wimax.h> #endif +#include <nm-setting-infiniband.h> #include "utils.h" +#include "common.h" #include "devices.h" @@ -82,32 +83,40 @@ static NmcOutputField nmc_fields_dev_list_sections[] = { {"WIRED-PROPERTIES", N_("WIRED-PROPERTIES"), 0, NULL, 0}, /* 4 */ {"WIMAX-PROPERTIES", N_("WIMAX-PROPERTIES"), 0, NULL, 0}, /* 5 */ {"NSP", N_("NSP"), 0, NULL, 0}, /* 6 */ - {"IP4-SETTINGS", N_("IP4-SETTINGS"), 0, NULL, 0}, /* 7 */ - {"IP4-DNS", N_("IP4-DNS"), 0, NULL, 0}, /* 8 */ - {"IP6-SETTINGS", N_("IP6-SETTINGS"), 0, NULL, 0}, /* 9 */ - {"IP6-DNS", N_("IP6-DNS"), 0, NULL, 0}, /* 10 */ + {"IP4", N_("IP4"), 0, NULL, 0}, /* 7 */ + {"DHCP4", N_("DHCP4"), 0, NULL, 0}, /* 8 */ + {"IP6", N_("IP6"), 0, NULL, 0}, /* 9 */ + {"DHCP6", N_("DHCP6"), 0, NULL, 0}, /* 10 */ {NULL, NULL, 0, NULL, 0} }; #if WITH_WIMAX -#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4-SETTINGS,IP4-DNS,IP6-SETTINGS,IP6-DNS" -#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4-SETTINGS,IP4-DNS,IP6-SETTINGS,IP6-DNS" +#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6" +#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6" #else -#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4-SETTINGS,IP4-DNS,IP6-SETTINGS,IP6-DNS" -#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4-SETTINGS,IP4-DNS,IP6-SETTINGS,IP6-DNS" +#define NMC_FIELDS_DEV_LIST_SECTIONS_ALL "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6" +#define NMC_FIELDS_DEV_LIST_SECTIONS_COMMON "GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,IP4,DHCP4,IP6,DHCP6" #endif /* Available fields for 'dev list' - GENERAL part */ static NmcOutputField nmc_fields_dev_list_general[] = { - {"NAME", N_("NAME"), 10, NULL, 0}, /* 0 */ - {"DEVICE", N_("DEVICE"), 10, NULL, 0}, /* 1 */ - {"TYPE", N_("TYPE"), 17, NULL, 0}, /* 2 */ - {"DRIVER", N_("DRIVER"), 10, NULL, 0}, /* 3 */ - {"HWADDR", N_("HWADDR"), 19, NULL, 0}, /* 4 */ - {"STATE", N_("STATE"), 14, NULL, 0}, /* 5 */ - {NULL, NULL, 0, NULL, 0} + {"NAME", N_("NAME"), 10, NULL, 0}, /* 0 */ + {"DEVICE", N_("DEVICE"), 10, NULL, 0}, /* 1 */ + {"TYPE", N_("TYPE"), 17, NULL, 0}, /* 2 */ + {"VENDOR", N_("VENDOR"), 20, NULL, 0}, /* 3 */ + {"PRODUCT", N_("PRODUCT"), 50, NULL, 0}, /* 4 */ + {"DRIVER", N_("DRIVER"), 9, NULL, 0}, /* 5 */ + {"HWADDR", N_("HWADDR"), 19, NULL, 0}, /* 6 */ + {"STATE", N_("STATE"), 14, NULL, 0}, /* 7 */ + {"REASON", N_("REASON"), 25, NULL, 0}, /* 8 */ + {"UDI", N_("UDI"), 64, NULL, 0}, /* 9 */ + {"IP-IFACE", N_("IP-IFACE"), 10, NULL, 0}, /* 10 */ + {"NM-MANAGED", N_("NM-MANAGED"), 15, NULL, 0}, /* 11 */ + {"FIRMWARE-MISSING", N_("FIRMWARE-MISSING"), 18, NULL, 0}, /* 12 */ + {"CONNECTION", N_("CONNECTION"), 51, NULL, 0}, /* 13 */ + {NULL, NULL, 0, NULL, 0} }; -#define NMC_FIELDS_DEV_LIST_GENERAL_ALL "NAME,DEVICE,TYPE,DRIVER,HWADDR,STATE" -#define NMC_FIELDS_DEV_LIST_GENERAL_COMMON "NAME,DEVICE,TYPE,DRIVER,HWADDR,STATE" +#define NMC_FIELDS_DEV_LIST_GENERAL_ALL "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE,REASON,UDI,IP-IFACE,NM-MANAGED,FIRMWARE-MISSING,CONNECTION" +#define NMC_FIELDS_DEV_LIST_GENERAL_COMMON "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE" /* Available fields for 'dev list' - CAPABILITIES part */ static NmcOutputField nmc_fields_dev_list_cap[] = { @@ -157,46 +166,6 @@ static NmcOutputField nmc_fields_dev_list_wimax_prop[] = { #define NMC_FIELDS_DEV_LIST_WIMAX_PROP_COMMON "NAME,CTR-FREQ,RSSI,CINR,TX-POW,BSID" #endif -/* Available fields for 'dev list' - IPv4 settings part */ -static NmcOutputField nmc_fields_dev_list_ip4_settings[] = { - {"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */ - {"ADDRESS", N_("ADDRESS"), 15, NULL, 0}, /* 1 */ - {"PREFIX", N_("PREFIX"), 20, NULL, 0}, /* 2 */ - {"GATEWAY", N_("GATEWAY"), 20, NULL, 0}, /* 3 */ - {NULL, NULL, 0, NULL, 0} -}; -#define NMC_FIELDS_DEV_LIST_IP4_SETTINGS_ALL "NAME,ADDRESS,PREFIX,GATEWAY" -#define NMC_FIELDS_DEV_LIST_IP4_SETTINGS_COMMON "NAME,ADDRESS,PREFIX,GATEWAY" - -/* Available fields for 'dev list' - IPv6 settings part */ -static NmcOutputField nmc_fields_dev_list_ip6_settings[] = { - {"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */ - {"ADDRESS", N_("ADDRESS"), 15, NULL, 0}, /* 1 */ - {"PREFIX", N_("PREFIX"), 20, NULL, 0}, /* 2 */ - {"GATEWAY", N_("GATEWAY"), 20, NULL, 0}, /* 3 */ - {NULL, NULL, 0, NULL, 0} -}; -#define NMC_FIELDS_DEV_LIST_IP6_SETTINGS_ALL "NAME,ADDRESS,PREFIX,GATEWAY" -#define NMC_FIELDS_DEV_LIST_IP6_SETTINGS_COMMON "NAME,ADDRESS,PREFIX,GATEWAY" - -/* Available fields for 'dev list' - IPv4 settings DNS part */ -static NmcOutputField nmc_fields_dev_list_ip4_dns[] = { - {"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */ - {"DNS", N_("DNS"), 17, NULL, 0}, /* 1 */ - {NULL, NULL, 0, NULL, 0} -}; -#define NMC_FIELDS_DEV_LIST_IP4_DNS_ALL "NAME,DNS" -#define NMC_FIELDS_DEV_LIST_IP4_DNS_COMMON "NAME,DNS" - -/* Available fields for 'dev list' - IPv6 settings DNS part */ -static NmcOutputField nmc_fields_dev_list_ip6_dns[] = { - {"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */ - {"DNS", N_("DNS"), 17, NULL, 0}, /* 1 */ - {NULL, NULL, 0, NULL, 0} -}; -#define NMC_FIELDS_DEV_LIST_IP6_DNS_ALL "NAME,DNS" -#define NMC_FIELDS_DEV_LIST_IP6_DNS_COMMON "NAME,DNS" - /* Available fields for 'dev wifi list' */ static NmcOutputField nmc_fields_dev_wifi_list[] = { {"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */ @@ -299,6 +268,167 @@ device_state_to_string (NMDeviceState state) } } +static const char * +device_reason_to_string (NMDeviceStateReason reason) +{ + switch (reason) { + case NM_DEVICE_STATE_REASON_NONE: + return _("No reason given"); + + case NM_DEVICE_STATE_REASON_UNKNOWN: + return _("Unknown error"); + + case NM_DEVICE_STATE_REASON_NOW_MANAGED: + return _("Device is now managed"); + + case NM_DEVICE_STATE_REASON_NOW_UNMANAGED: + return _("Device is now unmanaged"); + + case NM_DEVICE_STATE_REASON_CONFIG_FAILED: + return _("The device could not be readied for configuration"); + + case NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE: + return _("IP configuration could not be reserved (no available address, timeout, etc)"); + + case NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED: + return _("The IP configuration is no longer valid"); + + case NM_DEVICE_STATE_REASON_NO_SECRETS: + return _("Secrets were required, but not provided"); + + case NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT: + return _("802.1X supplicant disconnected"); + + case NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED: + return _("802.1X supplicant configuration failed"); + + case NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED: + return _("802.1X supplicant failed"); + + case NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT: + return _("802.1X supplicant took too long to authenticate"); + + case NM_DEVICE_STATE_REASON_PPP_START_FAILED: + return _("PPP service failed to start"); + + case NM_DEVICE_STATE_REASON_PPP_DISCONNECT: + return _("PPP service disconnected"); + + case NM_DEVICE_STATE_REASON_PPP_FAILED: + return _("PPP failed"); + + case NM_DEVICE_STATE_REASON_DHCP_START_FAILED: + return _("DHCP client failed to start"); + + case NM_DEVICE_STATE_REASON_DHCP_ERROR: + return _("DHCP client error"); + + case NM_DEVICE_STATE_REASON_DHCP_FAILED: + return _("DHCP client failed"); + + case NM_DEVICE_STATE_REASON_SHARED_START_FAILED: + return _("Shared connection service failed to start"); + + case NM_DEVICE_STATE_REASON_SHARED_FAILED: + return _("Shared connection service failed"); + + case NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED: + return _("AutoIP service failed to start"); + + case NM_DEVICE_STATE_REASON_AUTOIP_ERROR: + return _("AutoIP service error"); + + case NM_DEVICE_STATE_REASON_AUTOIP_FAILED: + return _("AutoIP service failed"); + + case NM_DEVICE_STATE_REASON_MODEM_BUSY: + return _("The line is busy"); + + case NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE: + return _("No dial tone"); + + case NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER: + return _("No carrier could be established"); + + case NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT: + return _("The dialing request timed out"); + + case NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED: + return _("The dialing attempt failed"); + + case NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED: + return _("Modem initialization failed"); + + case NM_DEVICE_STATE_REASON_GSM_APN_FAILED: + return _("Failed to select the specified APN"); + + case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING: + return _("Not searching for networks"); + + case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED: + return _("Network registration denied"); + + case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT: + return _("Network registration timed out"); + + case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED: + return _("Failed to register with the requested network"); + + case NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED: + return _("PIN check failed"); + + case NM_DEVICE_STATE_REASON_FIRMWARE_MISSING: + return _("Necessary firmware for the device may be missing"); + + case NM_DEVICE_STATE_REASON_REMOVED: + return _("The device was removed"); + + case NM_DEVICE_STATE_REASON_SLEEPING: + return _("NetworkManager went to sleep"); + + case NM_DEVICE_STATE_REASON_CONNECTION_REMOVED: + return _("The device's active connection disappeared"); + + case NM_DEVICE_STATE_REASON_USER_REQUESTED: + return _("Device disconnected by user or client"); + + case NM_DEVICE_STATE_REASON_CARRIER: + return _("Carrier/link changed"); + + case NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED: + return _("The device's existing connection was assumed"); + + case NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE: + return _("The supplicant is now available"); + + case NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND: + return _("The modem could not be found"); + + case NM_DEVICE_STATE_REASON_BT_FAILED: + return _("The Bluetooth connection failed or timed out"); + + case NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED: + return _("GSM Modem's SIM card not inserted"); + + case NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED: + return _("GSM Modem's SIM PIN required"); + + case NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED: + return _("GSM Modem's SIM PUK required"); + + case NM_DEVICE_STATE_REASON_GSM_SIM_WRONG: + return _("GSM Modem's SIM wrong"); + + case NM_DEVICE_STATE_REASON_INFINIBAND_MODE: + return _("InfiniBand device does not support connected mode"); + + case NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED: + return _("A dependency of the connection failed"); + default: + return _("Unknown"); + } +} + /* Convert device type to string. Use setting names strings to match with * connection type names. */ @@ -321,12 +451,18 @@ device_type_to_string (NMDevice *device) return _("Unknown"); case NM_DEVICE_TYPE_BT: return NM_SETTING_BLUETOOTH_SETTING_NAME; -// case NM_DEVICE_TYPE_OLPC_MESH: -// return NM_SETTING_OLPC_MESH_SETTING_NAME; + case NM_DEVICE_TYPE_OLPC_MESH: + return NM_SETTING_OLPC_MESH_SETTING_NAME; #if WITH_WIMAX case NM_DEVICE_TYPE_WIMAX: return NM_SETTING_WIMAX_SETTING_NAME; #endif + case NM_DEVICE_TYPE_INFINIBAND: + return NM_SETTING_INFINIBAND_SETTING_NAME; + case NM_DEVICE_TYPE_BOND: + return NM_SETTING_BOND_SETTING_NAME; + case NM_DEVICE_TYPE_VLAN: + return NM_SETTING_VLAN_SETTING_NAME; default: return _("Unknown"); } @@ -374,46 +510,6 @@ ap_wpa_rsn_flags_to_string (NM80211ApSecurityFlags flags) return ret_str; } -static gchar * -ip4_address_as_string (guint32 ip) -{ - struct in_addr tmp_addr; - char buf[INET_ADDRSTRLEN+1]; - - memset (&buf, '\0', sizeof (buf)); - tmp_addr.s_addr = ip; - - if (inet_ntop (AF_INET, &tmp_addr, buf, INET_ADDRSTRLEN)) { - return g_strdup (buf); - } else { - g_warning (_("%s: error converting IP4 address 0x%X"), - __func__, ntohl (tmp_addr.s_addr)); - return NULL; - } -} - -static gchar * -ip6_address_as_string (const struct in6_addr *ip) -{ - char buf[INET6_ADDRSTRLEN]; - - memset (&buf, '\0', sizeof (buf)); - - if (inet_ntop (AF_INET6, ip, buf, INET6_ADDRSTRLEN)) { - return g_strdup (buf); - } else { - int j; - GString *ip6_str = g_string_new (NULL); - g_string_append_printf (ip6_str, "%02X", ip->s6_addr[0]); - for (j = 1; j < 16; j++) - g_string_append_printf (ip6_str, " %02X", ip->s6_addr[j]); - g_warning ("%s: error converting IP6 address %s", - __func__, ip6_str->str); - g_string_free (ip6_str, TRUE); - return NULL; - } -} - typedef struct { NmCli *nmc; int index; @@ -572,13 +668,15 @@ show_device_info (gpointer data, gpointer user_data) NmCli *nmc = (NmCli *) user_data; GError *error = NULL; APInfo *info; - char *tmp; const char *hwaddr = NULL; NMDeviceState state = NM_DEVICE_STATE_UNKNOWN; + NMDeviceStateReason reason = NM_DEVICE_STATE_REASON_NONE; NMDeviceCapabilities caps; + NMActiveConnection *acon; guint32 speed; char *speed_str = NULL; - const GArray *array; + char *state_str = NULL; + char *reason_str = NULL; GArray *sections_array; int k; char *fields_str; @@ -623,7 +721,7 @@ show_device_info (gpointer data, gpointer user_data) was_output = FALSE; - state = nm_device_get_state (device); + state = nm_device_get_state_reason (device, &reason); /* section GENERAL */ if (!strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[0].name)) { @@ -640,16 +738,36 @@ show_device_info (gpointer data, gpointer user_data) else if (NM_IS_DEVICE_WIMAX (device)) hwaddr = nm_device_wimax_get_hw_address (NM_DEVICE_WIMAX (device)); #endif + else if (NM_IS_DEVICE_INFINIBAND (device)) + hwaddr = nm_device_infiniband_get_hw_address (NM_DEVICE_INFINIBAND (device)); + else if (NM_IS_DEVICE_BOND (device)) + hwaddr = nm_device_bond_get_hw_address (NM_DEVICE_BOND (device)); + else if (NM_IS_DEVICE_VLAN (device)) + hwaddr = nm_device_vlan_get_hw_address (NM_DEVICE_VLAN (device)); + + state_str = g_strdup_printf ("%d (%s)", state, device_state_to_string (state)); + reason_str = g_strdup_printf ("%d (%s)", reason, device_reason_to_string (reason)); nmc->allowed_fields[0].value = nmc_fields_dev_list_sections[0].name; /* "GENERAL"*/ nmc->allowed_fields[1].value = nm_device_get_iface (device); nmc->allowed_fields[2].value = device_type_to_string (device); - nmc->allowed_fields[3].value = nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)"); - nmc->allowed_fields[4].value = hwaddr ? hwaddr : _("unknown)"); - nmc->allowed_fields[5].value = device_state_to_string (state); + nmc->allowed_fields[3].value = nm_device_get_vendor (device); + nmc->allowed_fields[4].value = nm_device_get_product (device); + nmc->allowed_fields[5].value = nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)"); + nmc->allowed_fields[6].value = hwaddr ? hwaddr : _("(unknown)"); + nmc->allowed_fields[7].value = state_str; + nmc->allowed_fields[8].value = reason_str; + nmc->allowed_fields[9].value = nm_device_get_udi (device); + nmc->allowed_fields[10].value = nm_device_get_ip_iface (device); + nmc->allowed_fields[11].value = nm_device_get_managed (device) ? _("yes") : _("no"); + nmc->allowed_fields[12].value = nm_device_get_firmware_missing (device) ? _("yes") : _("no"); + nmc->allowed_fields[13].value = (acon = nm_device_get_active_connection (device)) ? + nm_object_get_path (NM_OBJECT (acon)) : _("not connected"); 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 (state_str); + g_free (reason_str); was_output = TRUE; } @@ -823,124 +941,28 @@ show_device_info (gpointer data, gpointer user_data) } #endif - /* IP Setup info */ + /* IP configuration info */ if (state == NM_DEVICE_STATE_ACTIVATED) { NMIP4Config *cfg4 = nm_device_get_ip4_config (device); NMIP6Config *cfg6 = nm_device_get_ip6_config (device); - GSList *iter; + NMDHCP4Config *dhcp4 = nm_device_get_dhcp4_config (device); + NMDHCP6Config *dhcp6 = nm_device_get_dhcp6_config (device); - /* IP4-SETTINGS */ - if (cfg4 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[7].name)) { - nmc->allowed_fields = nmc_fields_dev_list_ip4_settings; - 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_IP4_SETTINGS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - for (iter = (GSList *) nm_ip4_config_get_addresses (cfg4); iter; iter = g_slist_next (iter)) { - NMIP4Address *addr = (NMIP4Address *) iter->data; - guint32 prefix = nm_ip4_address_get_prefix (addr); - char *tmp2; - char *addr_str, *prefix_str, *gateway_str; - - addr_str = ip4_address_as_string (nm_ip4_address_get_address (addr)); - - tmp2 = ip4_address_as_string (nm_utils_ip4_prefix_to_netmask (prefix)); - prefix_str = g_strdup_printf ("%d (%s)", prefix, tmp2); - g_free (tmp2); - - gateway_str = ip4_address_as_string (nm_ip4_address_get_gateway (addr)); - - nmc->allowed_fields[0].value = nmc_fields_dev_list_sections[7].name; /* "IP4-SETTINGS" */ - nmc->allowed_fields[1].value = addr_str; - nmc->allowed_fields[2].value = prefix_str; - nmc->allowed_fields[3].value = gateway_str; - - 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 (addr_str); - g_free (prefix_str); - g_free (gateway_str); - } - was_output = TRUE; - } - /* IP4-DNS */ - if (cfg4 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[8].name)) { - array = nm_ip4_config_get_nameservers (cfg4); - if (array) { - int i; - - nmc->allowed_fields = nmc_fields_dev_list_ip4_dns; - 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_IP4_DNS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - for (i = 0; i < array->len; i++) { - char *dns_name = g_strdup_printf ("%s%d", nmc_fields_dev_list_sections[8].name, i+1); - tmp = ip4_address_as_string (g_array_index (array, guint32, i)); - nmc->allowed_fields[0].value = dns_name; /* "IP4-DNS<num>" */ - nmc->allowed_fields[1].value = tmp; - - 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 (tmp); - g_free (dns_name); - } - } - was_output = TRUE; - } - - /* IP6-SETTINGS */ - if (cfg6 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[9].name)) { - nmc->allowed_fields = nmc_fields_dev_list_ip6_settings; - 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_IP6_SETTINGS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - for (iter = (GSList *) nm_ip6_config_get_addresses (cfg6); iter; iter = g_slist_next (iter)) { - NMIP6Address *addr = (NMIP6Address *) iter->data; - guint32 prefix = nm_ip6_address_get_prefix (addr); - char *addr_str, *prefix_str, *gateway_str; - - addr_str = ip6_address_as_string (nm_ip6_address_get_address (addr)); + /* IP4 */ + if (cfg4 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[7].name)) + was_output = print_ip4_config (cfg4, nmc, nmc_fields_dev_list_sections[7].name); - prefix_str = g_strdup_printf ("%d", prefix); - gateway_str = ip6_address_as_string (nm_ip6_address_get_gateway (addr)); + /* DHCP4 */ + if (dhcp4 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[8].name)) + was_output = print_dhcp4_config (dhcp4, nmc, nmc_fields_dev_list_sections[8].name); - nmc->allowed_fields[0].value = nmc_fields_dev_list_sections[9].name; /* "IP6-SETTINGS" */ - nmc->allowed_fields[1].value = addr_str; - nmc->allowed_fields[2].value = prefix_str; - nmc->allowed_fields[3].value = gateway_str; + /* IP6 */ + if (cfg6 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[9].name)) + was_output = print_ip6_config (cfg6, nmc, nmc_fields_dev_list_sections[9].name); - 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 (addr_str); - g_free (prefix_str); - g_free (gateway_str); - } - was_output = TRUE; - } - /* IP6-DNS */ - if (cfg6 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[10].name)) { - int i = 1; - nmc->allowed_fields = nmc_fields_dev_list_ip6_dns; - 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_IP6_DNS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - for (iter = (GSList *) nm_ip6_config_get_nameservers (cfg6); iter; iter = g_slist_next (iter)) { - char *dns_name = g_strdup_printf ("%s%d", nmc_fields_dev_list_sections[10].name, i++); - - tmp = ip6_address_as_string (iter->data); - nmc->allowed_fields[0].value = dns_name; /* "IP6-DNS<num>" */ - nmc->allowed_fields[1].value = tmp; - - 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 (tmp); - g_free (dns_name); - } - was_output = TRUE; - } + /* DHCP6 */ + if (dhcp6 && !strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[10].name)) + was_output = print_dhcp6_config (dhcp6, nmc, nmc_fields_dev_list_sections[10].name); } } |