diff options
Diffstat (limited to 'cli/src/settings.c')
| -rw-r--r-- | cli/src/settings.c | 416 |
1 files changed, 297 insertions, 119 deletions
diff --git a/cli/src/settings.c b/cli/src/settings.c index ccbe9589..bf422920 100644 --- a/cli/src/settings.c +++ b/cli/src/settings.c @@ -14,11 +14,13 @@ * 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" +#include "net/if_arp.h" + #include <glib.h> #include <glib/gi18n.h> #include <libnm-util/nm-utils.h> @@ -88,34 +90,36 @@ static NmcOutputField nmc_fields_setting_8021X[] = { 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_CA_CERT, 10), /* 4 */ - SETTING_FIELD (NM_SETTING_802_1X_CA_PATH, 10), /* 5 */ - SETTING_FIELD (NM_SETTING_802_1X_SUBJECT_MATCH, 10), /* 6 */ - SETTING_FIELD (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, 10), /* 7 */ - SETTING_FIELD (NM_SETTING_802_1X_CLIENT_CERT, 10), /* 8 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPVER, 10), /* 9 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPLABEL, 10), /* 10 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, 10), /* 11 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTH, 10), /* 12 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTHEAP, 10), /* 13 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_CERT, 20), /* 14 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_PATH, 20), /* 15 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH, 10), /* 16 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, 10), /* 17 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, 20), /* 18 */ - SETTING_FIELD (NM_SETTING_802_1X_PASSWORD, 10), /* 19 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY, 15), /* 20 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, 20), /* 21 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, 20), /* 22 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, 20), /* 23 */ - SETTING_FIELD (NM_SETTING_802_1X_PIN, 8), /* 24 */ - SETTING_FIELD (NM_SETTING_802_1X_SYSTEM_CA_CERTS, 17), /* 25 */ + 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 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_802_1X_ALL "name"","\ NM_SETTING_802_1X_EAP","\ NM_SETTING_802_1X_IDENTITY","\ NM_SETTING_802_1X_ANONYMOUS_IDENTITY","\ + NM_SETTING_802_1X_PAC_FILE","\ NM_SETTING_802_1X_CA_CERT","\ NM_SETTING_802_1X_CA_PATH","\ NM_SETTING_802_1X_SUBJECT_MATCH","\ @@ -438,6 +442,52 @@ static NmcOutputField nmc_fields_setting_wimax[] = { NM_SETTING_WIMAX_NETWORK_NAME #define NMC_FIELDS_SETTING_WIMAX_COMMON NMC_FIELDS_SETTING_WIMAX_ALL +/* Available fields for NM_SETTING_INFINIBAND_SETTING_NAME */ +static NmcOutputField nmc_fields_setting_infiniband[] = { + SETTING_FIELD ("name", 12), /* 0 */ + SETTING_FIELD (NM_SETTING_INFINIBAND_MAC_ADDRESS, 61), /* 1 */ + SETTING_FIELD (NM_SETTING_INFINIBAND_MTU, 6), /* 2 */ + SETTING_FIELD (NM_SETTING_INFINIBAND_TRANSPORT_MODE, 12), /* 3 */ + {NULL, NULL, 0, NULL, 0} +}; +#define NMC_FIELDS_SETTING_INFINIBAND_ALL "name"","\ + NM_SETTING_INFINIBAND_MAC_ADDRESS","\ + NM_SETTING_INFINIBAND_MTU","\ + NM_SETTING_INFINIBAND_TRANSPORT_MODE +#define NMC_FIELDS_SETTING_INFINIBAND_COMMON NMC_FIELDS_SETTING_INFINIBAND_ALL + +/* Available fields for NM_SETTING_BOND_SETTING_NAME */ +static NmcOutputField nmc_fields_setting_bond[] = { + SETTING_FIELD ("name", 8), /* 0 */ + SETTING_FIELD (NM_SETTING_BOND_INTERFACE_NAME, 15), /* 1 */ + SETTING_FIELD (NM_SETTING_BOND_OPTIONS, 30), /* 2 */ + {NULL, NULL, 0, NULL, 0} +}; +#define NMC_FIELDS_SETTING_BOND_ALL "name"","\ + NM_SETTING_BOND_INTERFACE_NAME","\ + NM_SETTING_BOND_OPTIONS +#define NMC_FIELDS_SETTING_BOND_COMMON NMC_FIELDS_SETTING_BOND_ALL + +/* Available fields for NM_SETTING_VLAN_SETTING_NAME */ +static NmcOutputField nmc_fields_setting_vlan[] = { + SETTING_FIELD ("name", 6), /* 0 */ + SETTING_FIELD (NM_SETTING_VLAN_INTERFACE_NAME, 15), /* 1 */ + SETTING_FIELD (NM_SETTING_VLAN_PARENT, 8), /* 2 */ + SETTING_FIELD (NM_SETTING_VLAN_ID, 6), /* 3 */ + SETTING_FIELD (NM_SETTING_VLAN_FLAGS, 45), /* 4 */ + SETTING_FIELD (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, 22), /* 5 */ + SETTING_FIELD (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, 22), /* 6 */ + {NULL, NULL, 0, NULL, 0} +}; +#define NMC_FIELDS_SETTING_VLAN_ALL "name"","\ + NM_SETTING_VLAN_INTERFACE_NAME","\ + NM_SETTING_VLAN_PARENT","\ + NM_SETTING_VLAN_ID","\ + NM_SETTING_VLAN_FLAGS","\ + NM_SETTING_VLAN_INGRESS_PRIORITY_MAP","\ + NM_SETTING_VLAN_EGRESS_PRIORITY_MAP +#define NMC_FIELDS_SETTING_VLAN_COMMON NMC_FIELDS_SETTING_VLAN_ALL + static char * wep_key_type_to_string (NMWepKeyType type) @@ -519,10 +569,57 @@ allowed_bands_to_string (guint32 bands) return g_string_free (band_str, FALSE); } +static char * +vlan_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_VLAN_FLAG_REORDER_HEADERS) + g_string_append (flag_str, _("REORDER_HEADERS, ")); + if (flags & NM_VLAN_FLAG_GVRP) + g_string_append (flag_str, _("GVRP, ")); + if (flags & NM_VLAN_FLAG_LOOSE_BINDING) + g_string_append (flag_str, _("LOOSE_BINDING, ")); + + 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); +} + +static char * +vlan_priorities_to_string (NMSettingVlan *s_vlan, NMVlanPriorityMap map) +{ + GString *priorities; + int i; + + priorities = g_string_new (NULL); + for (i = 0; i < nm_setting_vlan_get_num_priorities (s_vlan, map); i++) { + guint32 from, to; + + nm_setting_vlan_get_priority (s_vlan, map, i, &from, &to); + g_string_append_printf (priorities, "%d:%d,", from, to); + } + g_string_truncate (priorities, priorities->len-1); /* chop off trailing ',' */ + + return g_string_free (priorities, FALSE); +} + +/*----------------------------------------------------------------------------*/ + gboolean -setting_connection_details (NMSetting *setting, NmCli *nmc) +setting_connection_details (NMSettingConnection *s_con, NmCli *nmc) { - NMSettingConnection *s_con; guint64 timestamp; char *timestamp_str; const char *perm_item; @@ -533,8 +630,7 @@ setting_connection_details (NMSetting *setting, NmCli *nmc) guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; - g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE); - s_con = (NMSettingConnection *) setting; + g_return_val_if_fail (NM_IS_SETTING_CONNECTION (s_con), FALSE); nmc->allowed_fields = nmc_fields_setting_connection; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CONNECTION_ALL, nmc->allowed_fields, NULL); @@ -572,9 +668,8 @@ setting_connection_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_wired_details (NMSetting *setting, NmCli *nmc) +setting_wired_details (NMSettingWired *s_wired, NmCli *nmc) { - NMSettingWired *s_wired; const GByteArray *mac; const GSList *iter; const GPtrArray *s390_channels; @@ -585,8 +680,7 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; - g_return_val_if_fail (NM_IS_SETTING_WIRED (setting), FALSE); - s_wired = (NMSettingWired *) setting; + g_return_val_if_fail (NM_IS_SETTING_WIRED (s_wired), FALSE); nmc->allowed_fields = nmc_fields_setting_wired; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRED_ALL, nmc->allowed_fields, NULL); @@ -597,10 +691,10 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) mtu_str = g_strdup_printf ("%d", nm_setting_wired_get_mtu (s_wired)); mac = nm_setting_wired_get_mac_address (s_wired); if (mac) - device_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + device_mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_ETHER); mac = nm_setting_wired_get_cloned_mac_address (s_wired); if (mac) - cloned_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + cloned_mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_ETHER); mac_blacklist_s = g_string_new (NULL); iter = nm_setting_wired_get_mac_address_blacklist (s_wired); @@ -653,9 +747,8 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_802_1X_details (NMSetting *setting, NmCli *nmc) +setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) { - NMSetting8021x *s_8021X; 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; @@ -665,8 +758,7 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; - g_return_val_if_fail (NM_IS_SETTING_802_1X (setting), FALSE); - s_8021X = (NMSetting8021x *) setting; + g_return_val_if_fail (NM_IS_SETTING_802_1X (s_8021X), FALSE); nmc->allowed_fields = nmc_fields_setting_8021X; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_802_1X_ALL, nmc->allowed_fields, NULL); @@ -729,28 +821,29 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[1].value = eap_str->str; nmc->allowed_fields[2].value = nm_setting_802_1x_get_identity (s_8021X); nmc->allowed_fields[3].value = nm_setting_802_1x_get_anonymous_identity (s_8021X); - nmc->allowed_fields[4].value = ca_cert_str; - nmc->allowed_fields[5].value = nm_setting_802_1x_get_ca_path (s_8021X); - nmc->allowed_fields[6].value = nm_setting_802_1x_get_subject_match (s_8021X); - nmc->allowed_fields[7].value = alt_sub_match->str; - nmc->allowed_fields[8].value = client_cert_str; - nmc->allowed_fields[9].value = nm_setting_802_1x_get_phase1_peapver (s_8021X); - nmc->allowed_fields[10].value = nm_setting_802_1x_get_phase1_peaplabel (s_8021X); - nmc->allowed_fields[11].value = nm_setting_802_1x_get_phase1_fast_provisioning (s_8021X); - nmc->allowed_fields[12].value = nm_setting_802_1x_get_phase2_auth (s_8021X); - nmc->allowed_fields[13].value = nm_setting_802_1x_get_phase2_autheap (s_8021X); - nmc->allowed_fields[14].value = phase2_ca_cert_str; - nmc->allowed_fields[15].value = nm_setting_802_1x_get_phase2_ca_path (s_8021X); - nmc->allowed_fields[16].value = nm_setting_802_1x_get_phase2_subject_match (s_8021X); - nmc->allowed_fields[17].value = phase2_alt_sub_match->str; - nmc->allowed_fields[18].value = phase2_client_cert_str; - nmc->allowed_fields[19].value = nm_setting_802_1x_get_password (s_8021X); - nmc->allowed_fields[20].value = private_key_str; - nmc->allowed_fields[21].value = nm_setting_802_1x_get_private_key_password (s_8021X); - nmc->allowed_fields[22].value = phase2_private_key_str; - nmc->allowed_fields[23].value = nm_setting_802_1x_get_phase2_private_key_password (s_8021X); - nmc->allowed_fields[24].value = nm_setting_802_1x_get_pin (s_8021X); - nmc->allowed_fields[25].value = nm_setting_802_1x_get_system_ca_certs (s_8021X) ? _("yes") : _("no"); + nmc->allowed_fields[4].value = nm_setting_802_1x_get_pac_file (s_8021X); + nmc->allowed_fields[5].value = ca_cert_str; + nmc->allowed_fields[6].value = nm_setting_802_1x_get_ca_path (s_8021X); + nmc->allowed_fields[7].value = nm_setting_802_1x_get_subject_match (s_8021X); + nmc->allowed_fields[8].value = alt_sub_match->str; + nmc->allowed_fields[9].value = client_cert_str; + nmc->allowed_fields[10].value = nm_setting_802_1x_get_phase1_peapver (s_8021X); + nmc->allowed_fields[11].value = nm_setting_802_1x_get_phase1_peaplabel (s_8021X); + nmc->allowed_fields[12].value = nm_setting_802_1x_get_phase1_fast_provisioning (s_8021X); + nmc->allowed_fields[13].value = nm_setting_802_1x_get_phase2_auth (s_8021X); + nmc->allowed_fields[14].value = nm_setting_802_1x_get_phase2_autheap (s_8021X); + nmc->allowed_fields[15].value = phase2_ca_cert_str; + nmc->allowed_fields[16].value = nm_setting_802_1x_get_phase2_ca_path (s_8021X); + nmc->allowed_fields[17].value = nm_setting_802_1x_get_phase2_subject_match (s_8021X); + 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->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -769,9 +862,8 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_wireless_details (NMSetting *setting, NmCli *nmc) +setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc) { - NMSettingWireless *s_wireless; int i; const GByteArray *ssid, *bssid, *mac; char *ssid_str, *channel_str, *rate_str, *tx_power_str, *mtu_str; @@ -782,8 +874,7 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; - g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), FALSE); - s_wireless = (NMSettingWireless *) setting; + g_return_val_if_fail (NM_IS_SETTING_WIRELESS (s_wireless), FALSE); nmc->allowed_fields = nmc_fields_setting_wireless; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_ALL, nmc->allowed_fields, NULL); @@ -796,15 +887,15 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) rate_str = g_strdup_printf ("%d", nm_setting_wireless_get_rate (s_wireless)); bssid = nm_setting_wireless_get_bssid (s_wireless); if (bssid) - bssid_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", bssid->data[0], bssid->data[1], bssid->data[2], bssid->data[3], bssid->data[4], bssid->data[5]); + bssid_str = nm_utils_hwaddr_ntoa (bssid->data, ARPHRD_ETHER); tx_power_str = g_strdup_printf ("%d", nm_setting_wireless_get_tx_power (s_wireless)); mtu_str = g_strdup_printf ("%d", nm_setting_wireless_get_mtu (s_wireless)); mac = nm_setting_wireless_get_mac_address (s_wireless); if (mac) - device_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + device_mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_ETHER); mac = nm_setting_wireless_get_cloned_mac_address (s_wireless); if (mac) - cloned_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + cloned_mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_ETHER); mac_blacklist = g_string_new (NULL); iter = nm_setting_wireless_get_mac_address_blacklist (s_wireless); @@ -854,9 +945,8 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_wireless_security_details (NMSetting *setting, NmCli *nmc) +setting_wireless_security_details (NMSettingWirelessSecurity *s_wireless_sec, NmCli *nmc) { - NMSettingWirelessSecurity *s_wireless_sec; int i; char *wep_tx_keyidx_str, *wep_key_type_str; GString *protos, *pairwises, *groups; @@ -864,8 +954,7 @@ setting_wireless_security_details (NMSetting *setting, NmCli *nmc) guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; - g_return_val_if_fail (NM_IS_SETTING_WIRELESS_SECURITY (setting), FALSE); - s_wireless_sec = (NMSettingWirelessSecurity *) setting; + g_return_val_if_fail (NM_IS_SETTING_WIRELESS_SECURITY (s_wireless_sec), FALSE); nmc->allowed_fields = nmc_fields_setting_wireless_security; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL, nmc->allowed_fields, NULL); @@ -922,17 +1011,15 @@ setting_wireless_security_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_ip4_config_details (NMSetting *setting, NmCli *nmc) +setting_ip4_config_details (NMSettingIP4Config *s_ip4, NmCli *nmc) { - NMSettingIP4Config *s_ip4; GString *dns_str, *dns_search_str, *addr_str, *route_str; int i, num; 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; - g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (setting), FALSE); - s_ip4 = (NMSettingIP4Config *) setting; + g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (s_ip4), FALSE); nmc->allowed_fields = nmc_fields_setting_ip4_config; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP4_CONFIG_ALL, nmc->allowed_fields, NULL); @@ -1058,17 +1145,15 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_ip6_config_details (NMSetting *setting, NmCli *nmc) +setting_ip6_config_details (NMSettingIP6Config *s_ip6, NmCli *nmc) { - NMSettingIP6Config *s_ip6; GString *dns_str, *dns_search_str, *addr_str, *route_str; int i, num; 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; - g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), FALSE); - s_ip6 = (NMSettingIP6Config *) setting; + g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (s_ip6), FALSE); nmc->allowed_fields = nmc_fields_setting_ip6_config; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP6_CONFIG_ALL, nmc->allowed_fields, NULL); @@ -1191,16 +1276,14 @@ setting_ip6_config_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_serial_details (NMSetting *setting, NmCli *nmc) +setting_serial_details (NMSettingSerial *s_serial, NmCli *nmc) { - NMSettingSerial *s_serial; char *baud_str, *bits_str, *parity_str, *stopbits_str, *send_delay_str; 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; - g_return_val_if_fail (NM_IS_SETTING_SERIAL (setting), FALSE); - s_serial = (NMSettingSerial *) setting; + g_return_val_if_fail (NM_IS_SETTING_SERIAL (s_serial), FALSE); nmc->allowed_fields = nmc_fields_setting_serial; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_SERIAL_ALL, nmc->allowed_fields, NULL); @@ -1233,16 +1316,14 @@ setting_serial_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_ppp_details (NMSetting *setting, NmCli *nmc) +setting_ppp_details (NMSettingPPP *s_ppp, NmCli *nmc) { - NMSettingPPP *s_ppp; char *baud_str, *mru_str, *mtu_str, *lcp_echo_failure_str, *lcp_echo_interval_str; 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; - g_return_val_if_fail (NM_IS_SETTING_PPP (setting), FALSE); - s_ppp = (NMSettingPPP *) setting; + g_return_val_if_fail (NM_IS_SETTING_PPP (s_ppp), FALSE); nmc->allowed_fields = nmc_fields_setting_ppp; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPP_ALL, nmc->allowed_fields, NULL); @@ -1288,15 +1369,13 @@ setting_ppp_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_pppoe_details (NMSetting *setting, NmCli *nmc) +setting_pppoe_details (NMSettingPPPOE *s_pppoe, NmCli *nmc) { - NMSettingPPPOE *s_pppoe; 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; - g_return_val_if_fail (NM_IS_SETTING_PPPOE (setting), FALSE); - s_pppoe = (NMSettingPPPOE *) setting; + g_return_val_if_fail (NM_IS_SETTING_PPPOE (s_pppoe), FALSE); nmc->allowed_fields = nmc_fields_setting_pppoe; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPPOE_ALL, nmc->allowed_fields, NULL); @@ -1315,16 +1394,14 @@ setting_pppoe_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_gsm_details (NMSetting *setting, NmCli *nmc) +setting_gsm_details (NMSettingGsm *s_gsm, NmCli *nmc) { - NMSettingGsm *s_gsm; char *network_type_str, *allowed_bands_str; 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; - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), FALSE); - s_gsm = (NMSettingGsm *) setting; + g_return_val_if_fail (NM_IS_SETTING_GSM (s_gsm), FALSE); nmc->allowed_fields = nmc_fields_setting_gsm; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_GSM_ALL, nmc->allowed_fields, NULL); @@ -1355,15 +1432,13 @@ setting_gsm_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_cdma_details (NMSetting *setting, NmCli *nmc) +setting_cdma_details (NMSettingCdma *s_cdma, NmCli *nmc) { - NMSettingCdma *s_cdma; 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; - g_return_val_if_fail (NM_IS_SETTING_CDMA (setting), FALSE); - s_cdma = (NMSettingCdma *) setting; + g_return_val_if_fail (NM_IS_SETTING_CDMA (s_cdma), FALSE); nmc->allowed_fields = nmc_fields_setting_cdma; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CDMA_ALL, nmc->allowed_fields, NULL); @@ -1382,17 +1457,15 @@ setting_cdma_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_bluetooth_details (NMSetting *setting, NmCli *nmc) +setting_bluetooth_details (NMSettingBluetooth *s_bluetooth, NmCli *nmc) { - NMSettingBluetooth *s_bluetooth; const GByteArray *bdaddr; char *bdaddr_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; - g_return_val_if_fail (NM_IS_SETTING_BLUETOOTH (setting), FALSE); - s_bluetooth = (NMSettingBluetooth *) setting; + g_return_val_if_fail (NM_IS_SETTING_BLUETOOTH (s_bluetooth), FALSE); nmc->allowed_fields = nmc_fields_setting_bluetooth; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BLUETOOTH_ALL, nmc->allowed_fields, NULL); @@ -1401,8 +1474,8 @@ setting_bluetooth_details (NMSetting *setting, NmCli *nmc) bdaddr = nm_setting_bluetooth_get_bdaddr (s_bluetooth); if (bdaddr) - bdaddr_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", bdaddr->data[0], bdaddr->data[1], bdaddr->data[2], - bdaddr->data[3], bdaddr->data[4], bdaddr->data[5]); + bdaddr_str = nm_utils_hwaddr_ntoa (bdaddr->data, ARPHRD_ETHER); + nmc->allowed_fields[0].value = NM_SETTING_BLUETOOTH_SETTING_NAME; nmc->allowed_fields[1].value = bdaddr_str; nmc->allowed_fields[2].value = nm_setting_bluetooth_get_connection_type (s_bluetooth); @@ -1416,17 +1489,15 @@ setting_bluetooth_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_olpc_mesh_details (NMSetting *setting, NmCli *nmc) +setting_olpc_mesh_details (NMSettingOlpcMesh *s_olpc_mesh, NmCli *nmc) { - NMSettingOlpcMesh *s_olpc_mesh; const GByteArray *ssid, *dhcp_anycast; char *ssid_str, *channel_str, *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; - g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (setting), FALSE); - s_olpc_mesh = (NMSettingOlpcMesh *) setting; + g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (s_olpc_mesh), FALSE); nmc->allowed_fields = nmc_fields_setting_olpc_mesh; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_OLPC_MESH_ALL, nmc->allowed_fields, NULL); @@ -1438,8 +1509,8 @@ setting_olpc_mesh_details (NMSetting *setting, NmCli *nmc) 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) - dhcp_anycast_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", dhcp_anycast->data[0], dhcp_anycast->data[1], dhcp_anycast->data[2], - dhcp_anycast->data[3], dhcp_anycast->data[4], dhcp_anycast->data[5]); + dhcp_anycast_str = nm_utils_hwaddr_ntoa (dhcp_anycast->data, ARPHRD_ETHER); + nmc->allowed_fields[0].value = NM_SETTING_OLPC_MESH_SETTING_NAME; nmc->allowed_fields[1].value = ssid_str; nmc->allowed_fields[2].value = channel_str; @@ -1467,16 +1538,14 @@ vpn_data_item (const char *key, const char *value, gpointer user_data) } gboolean -setting_vpn_details (NMSetting *setting, NmCli *nmc) +setting_vpn_details (NMSettingVPN *s_vpn, NmCli *nmc) { - NMSettingVPN *s_vpn; GString *data_item_str, *secret_str; 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; - g_return_val_if_fail (NM_IS_SETTING_VPN (setting), FALSE); - s_vpn = (NMSettingVPN *) setting; + g_return_val_if_fail (NM_IS_SETTING_VPN (s_vpn), FALSE); nmc->allowed_fields = nmc_fields_setting_vpn; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VPN_ALL, nmc->allowed_fields, NULL); @@ -1504,17 +1573,15 @@ setting_vpn_details (NMSetting *setting, NmCli *nmc) } gboolean -setting_wimax_details (NMSetting *setting, NmCli *nmc) +setting_wimax_details (NMSettingWimax *s_wimax, NmCli *nmc) { - NMSettingWimax *s_wimax; const GByteArray *mac; char *device_mac_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; - g_return_val_if_fail (NM_IS_SETTING_WIMAX (setting), FALSE); - s_wimax = (NMSettingWimax *) setting; + g_return_val_if_fail (NM_IS_SETTING_WIMAX (s_wimax), FALSE); nmc->allowed_fields = nmc_fields_setting_wimax; nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIMAX_ALL, nmc->allowed_fields, NULL); @@ -1523,7 +1590,7 @@ setting_wimax_details (NMSetting *setting, NmCli *nmc) mac = nm_setting_wimax_get_mac_address (s_wimax); if (mac) - device_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + device_mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_ETHER); nmc->allowed_fields[0].value = NM_SETTING_WIMAX_SETTING_NAME; nmc->allowed_fields[1].value = device_mac_str; @@ -1537,3 +1604,114 @@ setting_wimax_details (NMSetting *setting, NmCli *nmc) return TRUE; } +gboolean +setting_infiniband_details (NMSettingInfiniband *s_infiniband, NmCli *nmc) +{ + const GByteArray *mac; + char *mtu_str, *mac_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; + + g_return_val_if_fail (NM_IS_SETTING_INFINIBAND (s_infiniband), FALSE); + + nmc->allowed_fields = nmc_fields_setting_infiniband; + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_INFINIBAND_ALL, nmc->allowed_fields, NULL); + 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 */ + + mac = nm_setting_infiniband_get_mac_address (s_infiniband); + if (mac) + mac_str = nm_utils_hwaddr_ntoa (mac->data, ARPHRD_INFINIBAND); + mtu_str = g_strdup_printf ("%d", nm_setting_infiniband_get_mtu (s_infiniband)); + + nmc->allowed_fields[0].value = NM_SETTING_INFINIBAND_SETTING_NAME; + nmc->allowed_fields[1].value = mac_str; + nmc->allowed_fields[2].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); + nmc->allowed_fields[3].value = nm_setting_infiniband_get_transport_mode (s_infiniband); + + 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 (mac_str); + g_free (mtu_str); + + return TRUE; +} + +gboolean +setting_bond_details (NMSettingBond *s_bond, NmCli *nmc) +{ + GString *bond_options_s; + 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; + guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + + g_return_val_if_fail (NM_IS_SETTING_BOND (s_bond), FALSE); + + nmc->allowed_fields = nmc_fields_setting_bond; + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BOND_ALL, nmc->allowed_fields, NULL); + 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 */ + + bond_options_s = g_string_new (NULL); + for (i = 0; i < nm_setting_bond_get_num_options (s_bond); i++) { + const char *key, *value; + + nm_setting_bond_get_option (s_bond, i, &key, &value); + g_string_append_printf (bond_options_s, "%s=%s,", key, value); + } + g_string_truncate (bond_options_s, bond_options_s->len-1); /* chop off trailing ',' */ + + nmc->allowed_fields[0].value = NM_SETTING_BOND_SETTING_NAME; + nmc->allowed_fields[1].value = nm_setting_bond_get_interface_name (s_bond); + nmc->allowed_fields[2].value = bond_options_s->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_string_free (bond_options_s, TRUE); + + return TRUE; +} + +gboolean +setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc) +{ + char *vlan_id_str, *vlan_flags_str, *vlan_ingress_prio_str, *vlan_egress_prio_str; + 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; + + g_return_val_if_fail (NM_IS_SETTING_VLAN (s_vlan), FALSE); + + nmc->allowed_fields = nmc_fields_setting_vlan; + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VLAN_ALL, nmc->allowed_fields, NULL); + 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 */ + + vlan_id_str = g_strdup_printf ("%d", nm_setting_vlan_get_id (s_vlan)); + vlan_flags_str = vlan_flags_to_string (nm_setting_vlan_get_flags (s_vlan)); + vlan_ingress_prio_str = vlan_priorities_to_string (s_vlan, NM_VLAN_INGRESS_MAP); + vlan_egress_prio_str = vlan_priorities_to_string (s_vlan, NM_VLAN_EGRESS_MAP); + + nmc->allowed_fields[0].value = NM_SETTING_VLAN_SETTING_NAME; + nmc->allowed_fields[1].value = nm_setting_vlan_get_interface_name (s_vlan); + nmc->allowed_fields[2].value = nm_setting_vlan_get_parent (s_vlan); + nmc->allowed_fields[3].value = vlan_id_str; + nmc->allowed_fields[4].value = vlan_flags_str; + nmc->allowed_fields[5].value = vlan_ingress_prio_str; + nmc->allowed_fields[6].value = vlan_egress_prio_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 (vlan_id_str); + g_free (vlan_flags_str); + g_free (vlan_ingress_prio_str); + g_free (vlan_egress_prio_str); + + return TRUE; +} + |