diff options
Diffstat (limited to 'clients/cli/settings.c')
-rw-r--r-- | clients/cli/settings.c | 822 |
1 files changed, 424 insertions, 398 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 136c818641..dcd4f1cc72 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -20,6 +20,7 @@ #include "config.h" #include <stdlib.h> +#include <arpa/inet.h> #include <glib.h> #include <glib/gi18n.h> @@ -251,64 +252,74 @@ NmcOutputField nmc_fields_setting_wireless_security[] = { /* Available fields for NM_SETTING_IP4_CONFIG_SETTING_NAME */ NmcOutputField nmc_fields_setting_ip4_config[] = { - SETTING_FIELD ("name", 8), /* 0 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_METHOD, 10), /* 1 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_DNS, 20), /* 2 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_DNS_SEARCH, 15), /* 3 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_ADDRESSES, 20), /* 4 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_ROUTES, 20), /* 5 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 6 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS, 16), /* 7 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, 15), /* 8 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 9 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, 14), /* 10 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, 15), /* 11 */ - SETTING_FIELD (NM_SETTING_IP4_CONFIG_MAY_FAIL, 12), /* 12 */ + SETTING_FIELD ("name", 8), /* 0 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_METHOD, 10), /* 1 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS, 20), /* 2 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS_SEARCH, 15), /* 3 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ADDRESSES, 20), /* 4 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_GATEWAY, 20), /* 5 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTES, 20), /* 6 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTE_METRIC, 15), /* 7 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 8 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, 16), /* 9 */ + SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, 15), /* 10 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 11 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, 14), /* 12 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, 15), /* 13 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_MAY_FAIL, 12), /* 14 */ {NULL, NULL, 0, NULL, FALSE, FALSE, 0} }; #define NMC_FIELDS_SETTING_IP4_CONFIG_ALL "name"","\ - NM_SETTING_IP4_CONFIG_METHOD","\ - NM_SETTING_IP4_CONFIG_DNS","\ - NM_SETTING_IP4_CONFIG_DNS_SEARCH","\ - NM_SETTING_IP4_CONFIG_ADDRESSES","\ - NM_SETTING_IP4_CONFIG_ROUTES","\ - NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES","\ - NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS","\ + NM_SETTING_IP_CONFIG_METHOD","\ + NM_SETTING_IP_CONFIG_DNS","\ + NM_SETTING_IP_CONFIG_DNS_SEARCH","\ + NM_SETTING_IP_CONFIG_ADDRESSES","\ + NM_SETTING_IP_CONFIG_GATEWAY","\ + NM_SETTING_IP_CONFIG_ROUTES","\ + NM_SETTING_IP_CONFIG_ROUTE_METRIC","\ + NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES","\ + NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS","\ NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID","\ - NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME","\ - NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME","\ - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT","\ - NM_SETTING_IP4_CONFIG_MAY_FAIL + NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME","\ + NM_SETTING_IP_CONFIG_DHCP_HOSTNAME","\ + NM_SETTING_IP_CONFIG_NEVER_DEFAULT","\ + NM_SETTING_IP_CONFIG_MAY_FAIL #define NMC_FIELDS_SETTING_IP4_CONFIG_COMMON NMC_FIELDS_SETTING_IP4_CONFIG_ALL /* Available fields for NM_SETTING_IP6_CONFIG_SETTING_NAME */ NmcOutputField nmc_fields_setting_ip6_config[] = { - SETTING_FIELD ("name", 8), /* 0 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_METHOD, 10), /* 1 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_DNS, 20), /* 2 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_DNS_SEARCH, 15), /* 3 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_ADDRESSES, 20), /* 4 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_ROUTES, 20), /* 5 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 6 */ - SETTING_FIELD (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS, 16), /* 7 */ - 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 */ + SETTING_FIELD ("name", 8), /* 0 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_METHOD, 10), /* 1 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS, 20), /* 2 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS_SEARCH, 15), /* 3 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ADDRESSES, 20), /* 4 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_GATEWAY, 20), /* 5 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTES, 20), /* 6 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTE_METRIC, 15), /* 7 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 8 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, 16), /* 9 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, 15), /* 10 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_MAY_FAIL, 12), /* 11 */ + SETTING_FIELD (NM_SETTING_IP6_CONFIG_IP6_PRIVACY, 15), /* 12 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 13 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, 14), /* 14 */ {NULL, NULL, 0, NULL, FALSE, FALSE, 0} }; #define NMC_FIELDS_SETTING_IP6_CONFIG_ALL "name"","\ - NM_SETTING_IP6_CONFIG_METHOD","\ - NM_SETTING_IP6_CONFIG_DNS","\ - NM_SETTING_IP6_CONFIG_DNS_SEARCH","\ - NM_SETTING_IP6_CONFIG_ADDRESSES","\ - NM_SETTING_IP6_CONFIG_ROUTES","\ - NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES","\ - NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS","\ - NM_SETTING_IP6_CONFIG_NEVER_DEFAULT","\ - NM_SETTING_IP6_CONFIG_MAY_FAIL","\ + NM_SETTING_IP_CONFIG_METHOD","\ + NM_SETTING_IP_CONFIG_DNS","\ + NM_SETTING_IP_CONFIG_DNS_SEARCH","\ + NM_SETTING_IP_CONFIG_ADDRESSES","\ + NM_SETTING_IP_CONFIG_GATEWAY","\ + NM_SETTING_IP_CONFIG_ROUTES","\ + NM_SETTING_IP_CONFIG_ROUTE_METRIC","\ + NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES","\ + NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS","\ + NM_SETTING_IP_CONFIG_NEVER_DEFAULT","\ + NM_SETTING_IP_CONFIG_MAY_FAIL","\ NM_SETTING_IP6_CONFIG_IP6_PRIVACY","\ - NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME + NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME","\ + NM_SETTING_IP_CONFIG_DHCP_HOSTNAME #define NMC_FIELDS_SETTING_IP6_CONFIG_COMMON NMC_FIELDS_SETTING_IP4_CONFIG_ALL /* Available fields for NM_SETTING_SERIAL_SETTING_NAME */ @@ -1199,41 +1210,30 @@ nmc_property_ib_get_p_key (NMSetting *setting) DEFINE_GETTER (nmc_property_ib_get_parent, NM_SETTING_INFINIBAND_PARENT) /* --- NM_SETTING_IP4_CONFIG_SETTING_NAME property get functions --- */ -DEFINE_GETTER (nmc_property_ipv4_get_method, NM_SETTING_IP4_CONFIG_METHOD) -DEFINE_GETTER (nmc_property_ipv4_get_dns, NM_SETTING_IP4_CONFIG_DNS) -DEFINE_GETTER (nmc_property_ipv4_get_dns_search, NM_SETTING_IP4_CONFIG_DNS_SEARCH) +DEFINE_GETTER (nmc_property_ipv4_get_method, NM_SETTING_IP_CONFIG_METHOD) +DEFINE_GETTER (nmc_property_ipv4_get_dns, NM_SETTING_IP_CONFIG_DNS) +DEFINE_GETTER (nmc_property_ipv4_get_dns_search, NM_SETTING_IP_CONFIG_DNS_SEARCH) static char * -nmc_property_ipv4_get_addresses (NMSetting *setting) +nmc_property_ip_get_addresses (NMSetting *setting) { - NMSettingIP4Config *s_ip4 = NM_SETTING_IP4_CONFIG (setting); + NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting); GString *printable; guint32 num_addresses, i; - NMIP4Address *addr; - char buf[INET_ADDRSTRLEN]; + NMIPAddress *addr; printable = g_string_new (NULL); - num_addresses = nm_setting_ip4_config_get_num_addresses (s_ip4); + num_addresses = nm_setting_ip_config_get_num_addresses (s_ip); for (i = 0; i < num_addresses; i++) { - addr = nm_setting_ip4_config_get_address (s_ip4, i); + addr = nm_setting_ip_config_get_address (s_ip, i); if (printable->len > 0) - g_string_append (printable, "; "); - - g_string_append (printable, "{ "); - - nm_utils_inet4_ntop (nm_ip4_address_get_address (addr), buf); - g_string_append_printf (printable, "ip = %s", buf); - - g_string_append_printf (printable, "/%u", nm_ip4_address_get_prefix (addr)); - - if (nm_ip4_address_get_gateway (addr)) { - nm_utils_inet4_ntop (nm_ip4_address_get_gateway (addr), buf); - g_string_append_printf (printable, ", gw = %s", buf); - } + g_string_append (printable, ", "); - g_string_append (printable, " }"); + g_string_append_printf (printable, "%s/%u", + nm_ip_address_get_address (addr), + nm_ip_address_get_prefix (addr)); } return g_string_free (printable, FALSE); @@ -1242,35 +1242,33 @@ nmc_property_ipv4_get_addresses (NMSetting *setting) static char * nmc_property_ipv4_get_routes (NMSetting *setting) { - NMSettingIP4Config *s_ip4 = NM_SETTING_IP4_CONFIG (setting); + NMSettingIPConfig *s_ip4 = NM_SETTING_IP_CONFIG (setting); GString *printable; guint32 num_routes, i; - NMIP4Route *route; - char buf[INET_ADDRSTRLEN]; + NMIPRoute *route; printable = g_string_new (NULL); - num_routes = nm_setting_ip4_config_get_num_routes (s_ip4); + num_routes = nm_setting_ip_config_get_num_routes (s_ip4); for (i = 0; i < num_routes; i++) { - route = nm_setting_ip4_config_get_route (s_ip4, i); + route = nm_setting_ip_config_get_route (s_ip4, i); if (printable->len > 0) g_string_append (printable, "; "); g_string_append (printable, "{ "); - nm_utils_inet4_ntop (nm_ip4_route_get_dest (route), buf); - g_string_append_printf (printable, "ip = %s", buf); - - g_string_append_printf (printable, "/%u", nm_ip4_route_get_prefix (route)); + g_string_append_printf (printable, "ip = %s/%u", + nm_ip_route_get_dest (route), + nm_ip_route_get_prefix (route)); - if (nm_ip4_route_get_next_hop (route)) { - nm_utils_inet4_ntop (nm_ip4_route_get_next_hop (route), buf); - g_string_append_printf (printable, ", nh = %s", buf); + if (nm_ip_route_get_next_hop (route)) { + g_string_append_printf (printable, ", nh = %s", + nm_ip_route_get_next_hop (route)); } - if (nm_ip4_route_get_metric (route)) - g_string_append_printf (printable, ", mt = %u", nm_ip4_route_get_metric (route)); + if (nm_ip_route_get_metric (route) != -1) + g_string_append_printf (printable, ", mt = %u", (guint32) nm_ip_route_get_metric (route)); g_string_append (printable, " }"); } @@ -1278,87 +1276,51 @@ nmc_property_ipv4_get_routes (NMSetting *setting) return g_string_free (printable, FALSE); } -DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_routes, NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES) -DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_dns, NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS) +DEFINE_GETTER (nmc_property_ipv4_get_gateway, NM_SETTING_IP_CONFIG_GATEWAY) +DEFINE_GETTER (nmc_property_ipv4_get_route_metric, NM_SETTING_IP_CONFIG_ROUTE_METRIC) +DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_routes, NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES) +DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_dns, NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS) DEFINE_GETTER (nmc_property_ipv4_get_dhcp_client_id, NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID) -DEFINE_GETTER (nmc_property_ipv4_get_dhcp_send_hostname, NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME) -DEFINE_GETTER (nmc_property_ipv4_get_dhcp_hostname, NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME) -DEFINE_GETTER (nmc_property_ipv4_get_never_default, NM_SETTING_IP4_CONFIG_NEVER_DEFAULT) -DEFINE_GETTER (nmc_property_ipv4_get_may_fail, NM_SETTING_IP4_CONFIG_MAY_FAIL) +DEFINE_GETTER (nmc_property_ipv4_get_dhcp_send_hostname, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME) +DEFINE_GETTER (nmc_property_ipv4_get_dhcp_hostname, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME) +DEFINE_GETTER (nmc_property_ipv4_get_never_default, NM_SETTING_IP_CONFIG_NEVER_DEFAULT) +DEFINE_GETTER (nmc_property_ipv4_get_may_fail, NM_SETTING_IP_CONFIG_MAY_FAIL) /* --- NM_SETTING_IP6_CONFIG_SETTING_NAME property get functions --- */ -DEFINE_GETTER (nmc_property_ipv6_get_method, NM_SETTING_IP6_CONFIG_METHOD) -DEFINE_GETTER (nmc_property_ipv6_get_dns, NM_SETTING_IP6_CONFIG_DNS) -DEFINE_GETTER (nmc_property_ipv6_get_dns_search, NM_SETTING_IP6_CONFIG_DNS_SEARCH) - -static char * -nmc_property_ipv6_get_addresses (NMSetting *setting) -{ - NMSettingIP6Config *s_ip6 = NM_SETTING_IP6_CONFIG (setting); - GString *printable; - guint32 num_addresses, i; - NMIP6Address *addr; - char buf[INET6_ADDRSTRLEN]; - - printable = g_string_new (NULL); - - num_addresses = nm_setting_ip6_config_get_num_addresses (s_ip6); - for (i = 0; i < num_addresses; i++) { - addr = nm_setting_ip6_config_get_address (s_ip6, i); - - if (printable->len > 0) - g_string_append (printable, "; "); - - g_string_append (printable, "{ "); - - nm_utils_inet6_ntop (nm_ip6_address_get_address (addr), buf); - g_string_append_printf (printable, "ip = %s", buf); - - g_string_append_printf (printable, "/%u", nm_ip6_address_get_prefix (addr)); - - if (nm_ip6_address_get_gateway (addr)) { - nm_utils_inet6_ntop (nm_ip6_address_get_gateway (addr), buf); - g_string_append_printf (printable, ", gw = %s", buf); - } - - g_string_append (printable, " }"); - } - - return g_string_free (printable, FALSE); -} +DEFINE_GETTER (nmc_property_ipv6_get_method, NM_SETTING_IP_CONFIG_METHOD) +DEFINE_GETTER (nmc_property_ipv6_get_dns, NM_SETTING_IP_CONFIG_DNS) +DEFINE_GETTER (nmc_property_ipv6_get_dns_search, NM_SETTING_IP_CONFIG_DNS_SEARCH) static char * nmc_property_ipv6_get_routes (NMSetting *setting) { - NMSettingIP6Config *s_ip6 = NM_SETTING_IP6_CONFIG (setting); + NMSettingIPConfig *s_ip6 = NM_SETTING_IP_CONFIG (setting); GString *printable; guint32 num_routes, i; - NMIP6Route *route; - char buf[INET6_ADDRSTRLEN]; + NMIPRoute *route; printable = g_string_new (NULL); - num_routes = nm_setting_ip6_config_get_num_routes (s_ip6); + num_routes = nm_setting_ip_config_get_num_routes (s_ip6); for (i = 0; i < num_routes; i++) { - route = nm_setting_ip6_config_get_route (s_ip6, i); + route = nm_setting_ip_config_get_route (s_ip6, i); if (printable->len > 0) g_string_append (printable, "; "); g_string_append (printable, "{ "); - nm_utils_inet6_ntop (nm_ip6_route_get_dest (route), buf); - g_string_append_printf (printable, "ip = %s", buf); - - g_string_append_printf (printable, "/%u", nm_ip6_route_get_prefix (route)); + g_string_append_printf (printable, "ip = %s/%u", + nm_ip_route_get_dest (route), + nm_ip_route_get_prefix (route)); - if (nm_ip6_route_get_next_hop (route)) { - nm_utils_inet6_ntop (nm_ip6_route_get_next_hop (route), buf); - g_string_append_printf (printable, ", nh = %s", buf); + if (nm_ip_route_get_next_hop (route)) { + g_string_append_printf (printable, ", nh = %s", + nm_ip_route_get_next_hop (route)); } - if (nm_ip6_route_get_metric (route)) - g_string_append_printf (printable, ", mt = %u", nm_ip6_route_get_metric (route)); + if (nm_ip_route_get_metric (route) != -1) + g_string_append_printf (printable, ", mt = %u", (guint32) nm_ip_route_get_metric (route)); g_string_append (printable, " }"); } @@ -1366,11 +1328,14 @@ nmc_property_ipv6_get_routes (NMSetting *setting) return g_string_free (printable, FALSE); } -DEFINE_GETTER (nmc_property_ipv6_get_ignore_auto_routes, NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES) -DEFINE_GETTER (nmc_property_ipv6_get_ignore_auto_dns, NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS) -DEFINE_GETTER (nmc_property_ipv6_get_never_default, NM_SETTING_IP6_CONFIG_NEVER_DEFAULT) -DEFINE_GETTER (nmc_property_ipv6_get_may_fail, NM_SETTING_IP6_CONFIG_MAY_FAIL) -DEFINE_GETTER (nmc_property_ipv6_get_dhcp_hostname, NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME) +DEFINE_GETTER (nmc_property_ipv6_get_gateway, NM_SETTING_IP_CONFIG_GATEWAY) +DEFINE_GETTER (nmc_property_ipv6_get_route_metric, NM_SETTING_IP_CONFIG_ROUTE_METRIC) +DEFINE_GETTER (nmc_property_ipv6_get_ignore_auto_routes, NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES) +DEFINE_GETTER (nmc_property_ipv6_get_ignore_auto_dns, NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS) +DEFINE_GETTER (nmc_property_ipv6_get_never_default, NM_SETTING_IP_CONFIG_NEVER_DEFAULT) +DEFINE_GETTER (nmc_property_ipv6_get_may_fail, NM_SETTING_IP_CONFIG_MAY_FAIL) +DEFINE_GETTER (nmc_property_ipv6_get_dhcp_send_hostname, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME) +DEFINE_GETTER (nmc_property_ipv6_get_dhcp_hostname, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME) static char * nmc_property_ipv6_get_ip6_privacy (NMSetting *setting) @@ -1704,19 +1669,19 @@ ipv4_addresses_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_dat /* If we have some IP addresses set method to 'manual'. * Else if the method was 'manual', change it back to 'auto'. */ - if (nm_setting_ip4_config_get_num_addresses (NM_SETTING_IP4_CONFIG (object))) { - if (g_strcmp0 (nm_setting_ip4_config_get_method (NM_SETTING_IP4_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) { + if (nm_setting_ip_config_get_num_addresses (NM_SETTING_IP_CONFIG (object))) { + if (g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) { if (!answered) { answered = TRUE; answer = get_answer ("ipv4.method", "manual"); } if (answer) - g_object_set (object, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); + g_object_set (object, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); } } else { answered = FALSE; - if (!g_strcmp0 (nm_setting_ip4_config_get_method (NM_SETTING_IP4_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) - g_object_set (object, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + if (!g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) + g_object_set (object, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); } g_signal_handlers_unblock_by_func (object, G_CALLBACK (ipv4_method_changed_cb), NULL); @@ -1732,8 +1697,8 @@ ipv4_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data) g_signal_handlers_block_by_func (object, G_CALLBACK (ipv4_addresses_changed_cb), NULL); /* If method != manual, remove addresses (save them for restoring them later when method becomes 'manual' */ - if (g_strcmp0 (nm_setting_ip4_config_get_method (NM_SETTING_IP4_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) { - if (nm_setting_ip4_config_get_num_addresses (NM_SETTING_IP4_CONFIG (object))) { + if (g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) { + if (nm_setting_ip_config_get_num_addresses (NM_SETTING_IP_CONFIG (object))) { if (!answered) { answered = TRUE; answer = get_answer ("ipv4.addresses", NULL); @@ -1741,14 +1706,14 @@ ipv4_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data) if (answer) { if (G_IS_VALUE (&value)) g_value_unset (&value); - nmc_property_get_gvalue (NM_SETTING (object), NM_SETTING_IP4_CONFIG_ADDRESSES, &value); - g_object_set (object, NM_SETTING_IP4_CONFIG_ADDRESSES, NULL, NULL); + nmc_property_get_gvalue (NM_SETTING (object), NM_SETTING_IP_CONFIG_ADDRESSES, &value); + g_object_set (object, NM_SETTING_IP_CONFIG_ADDRESSES, NULL, NULL); } } } else { answered = FALSE; if (G_IS_VALUE (&value)) { - nmc_property_set_gvalue (NM_SETTING (object), NM_SETTING_IP4_CONFIG_ADDRESSES, &value); + nmc_property_set_gvalue (NM_SETTING (object), NM_SETTING_IP_CONFIG_ADDRESSES, &value); g_value_unset (&value); } } @@ -1767,19 +1732,19 @@ ipv6_addresses_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_dat /* If we have some IP addresses set method to 'manual'. * Else if the method was 'manual', change it back to 'auto'. */ - if (nm_setting_ip6_config_get_num_addresses (NM_SETTING_IP6_CONFIG (object))) { - if (g_strcmp0 (nm_setting_ip6_config_get_method (NM_SETTING_IP6_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { + if (nm_setting_ip_config_get_num_addresses (NM_SETTING_IP_CONFIG (object))) { + if (g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { if (!answered) { answered = TRUE; answer = get_answer ("ipv6.method", "manual"); } if (answer) - g_object_set (object, NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_MANUAL, NULL); + g_object_set (object, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_MANUAL, NULL); } } else { answered = FALSE; - if (!g_strcmp0 (nm_setting_ip6_config_get_method (NM_SETTING_IP6_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) - g_object_set (object, NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); + if (!g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) + g_object_set (object, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); } g_signal_handlers_unblock_by_func (object, G_CALLBACK (ipv6_method_changed_cb), NULL); @@ -1795,8 +1760,8 @@ ipv6_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data) g_signal_handlers_block_by_func (object, G_CALLBACK (ipv6_addresses_changed_cb), NULL); /* If method != manual, remove addresses (save them for restoring them later when method becomes 'manual' */ - if (g_strcmp0 (nm_setting_ip6_config_get_method (NM_SETTING_IP6_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { - if (nm_setting_ip6_config_get_num_addresses (NM_SETTING_IP6_CONFIG (object))) { + if (g_strcmp0 (nm_setting_ip_config_get_method (NM_SETTING_IP_CONFIG (object)), NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { + if (nm_setting_ip_config_get_num_addresses (NM_SETTING_IP_CONFIG (object))) { if (!answered) { answered = TRUE; answer = get_answer ("ipv6.addresses", NULL); @@ -1804,14 +1769,14 @@ ipv6_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data) if (answer) { if (G_IS_VALUE (&value)) g_value_unset (&value); - nmc_property_get_gvalue (NM_SETTING (object), NM_SETTING_IP6_CONFIG_ADDRESSES, &value); - g_object_set (object, NM_SETTING_IP6_CONFIG_ADDRESSES, NULL, NULL); + nmc_property_get_gvalue (NM_SETTING (object), NM_SETTING_IP_CONFIG_ADDRESSES, &value); + g_object_set (object, NM_SETTING_IP_CONFIG_ADDRESSES, NULL, NULL); } } } else { answered = FALSE; if (G_IS_VALUE (&value)) { - nmc_property_set_gvalue (NM_SETTING (object), NM_SETTING_IP6_CONFIG_ADDRESSES, &value); + nmc_property_set_gvalue (NM_SETTING (object), NM_SETTING_IP_CONFIG_ADDRESSES, &value); g_value_unset (&value); } } @@ -1875,24 +1840,24 @@ connection_master_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_ } void -nmc_setting_ip4_connect_handlers (NMSettingIP4Config *setting) +nmc_setting_ip4_connect_handlers (NMSettingIPConfig *setting) { g_return_if_fail (NM_IS_SETTING_IP4_CONFIG (setting)); - g_signal_connect (setting, "notify::" NM_SETTING_IP4_CONFIG_ADDRESSES, + g_signal_connect (setting, "notify::" NM_SETTING_IP_CONFIG_ADDRESSES, G_CALLBACK (ipv4_addresses_changed_cb), NULL); - g_signal_connect (setting, "notify::" NM_SETTING_IP4_CONFIG_METHOD, + g_signal_connect (setting, "notify::" NM_SETTING_IP_CONFIG_METHOD, G_CALLBACK (ipv4_method_changed_cb), NULL); } void -nmc_setting_ip6_connect_handlers (NMSettingIP6Config *setting) +nmc_setting_ip6_connect_handlers (NMSettingIPConfig *setting) { g_return_if_fail (NM_IS_SETTING_IP6_CONFIG (setting)); - g_signal_connect (setting, "notify::" NM_SETTING_IP6_CONFIG_ADDRESSES, + g_signal_connect (setting, "notify::" NM_SETTING_IP_CONFIG_ADDRESSES, G_CALLBACK (ipv6_addresses_changed_cb), NULL); - g_signal_connect (setting, "notify::" NM_SETTING_IP6_CONFIG_METHOD, + g_signal_connect (setting, "notify::" NM_SETTING_IP_CONFIG_METHOD, G_CALLBACK (ipv6_method_changed_cb), NULL); } @@ -1926,15 +1891,15 @@ nmc_setting_custom_init (NMSetting *setting) g_return_if_fail (NM_IS_SETTING (setting)); if (NM_IS_SETTING_IP4_CONFIG (setting)) { - g_object_set (NM_SETTING_IP4_CONFIG (setting), - NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, + g_object_set (NM_SETTING_IP_CONFIG (setting), + NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); - nmc_setting_ip4_connect_handlers (NM_SETTING_IP4_CONFIG (setting)); + nmc_setting_ip4_connect_handlers (NM_SETTING_IP_CONFIG (setting)); } else if (NM_IS_SETTING_IP6_CONFIG (setting)) { - g_object_set (NM_SETTING_IP6_CONFIG (setting), - NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, + g_object_set (NM_SETTING_IP_CONFIG (setting), + NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); - nmc_setting_ip6_connect_handlers (NM_SETTING_IP6_CONFIG (setting)); + nmc_setting_ip6_connect_handlers (NM_SETTING_IP_CONFIG (setting)); } else if (NM_IS_SETTING_WIRELESS (setting)) { g_object_set (NM_SETTING_WIRELESS (setting), NM_SETTING_WIRELESS_MODE, NM_SETTING_WIRELESS_MODE_INFRA, @@ -1990,6 +1955,27 @@ validate_int (NMSetting *setting, const char* prop, gint val, GError **error) return success; } +static gboolean +validate_int64 (NMSetting *setting, const char* prop, gint64 val, GError **error) +{ + GParamSpec *pspec; + GValue value = G_VALUE_INIT; + gboolean success = TRUE; + + g_value_init (&value, G_TYPE_INT64); + g_value_set_int64 (&value, val); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), prop); + g_assert (G_IS_PARAM_SPEC (pspec)); + if (g_param_value_validate (pspec, &value)) { + GParamSpecInt64 *pspec_int = (GParamSpecInt64 *) pspec; + g_set_error (error, 1, 0, _("'%"G_GINT64_FORMAT"' is not valid; use <%"G_GINT64_FORMAT"-%"G_GINT64_FORMAT">"), + val, pspec_int->minimum, pspec_int->maximum); + success = FALSE; + } + g_value_unset (&value); + return success; +} + /* Validate 'val' number against to uint property spec */ static gboolean validate_uint (NMSetting *setting, const char* prop, guint val, GError **error) @@ -2218,6 +2204,26 @@ nmc_property_set_int (NMSetting *setting, const char *prop, const char *val, GEr } static gboolean +nmc_property_set_int64 (NMSetting *setting, const char *prop, const char *val, GError **error) +{ + long val_int; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if (!nmc_string_to_int (val, FALSE, 0, 0, &val_int)) { + g_set_error (error, 1, 0, _("'%s' is not a valid number (or out of range)"), val); + return FALSE; + } + + /* Validate the number according to the property spec */ + if (!validate_int64 (setting, prop, (gint64) val_int, error)) + return FALSE; + + g_object_set (setting, prop, (gint64) val_int, NULL); + return TRUE; +} + +static gboolean nmc_property_set_bool (NMSetting *setting, const char *prop, const char *val, GError **error) { gboolean val_bool; @@ -2337,7 +2343,7 @@ nmc_property_set_byte_array (NMSetting *setting, const char *prop, const char *v char *val_strip; const char *delimiters = " \t,"; long int val_int; - char *bin; + GBytes *bytes; GByteArray *array = NULL; gboolean success = TRUE; @@ -2346,11 +2352,9 @@ nmc_property_set_byte_array (NMSetting *setting, const char *prop, const char *v val_strip = g_strstrip (g_strdup (val)); /* First try hex string in the format of AAbbCCDd */ - bin = nm_utils_hexstr2bin (val_strip, strlen (val_strip)); - if (bin) { - array = g_byte_array_sized_new (strlen (val_strip)/2); - g_byte_array_append (array, (const guint8 *) bin, strlen (val_strip)/2); - g_free (bin); + bytes = nm_utils_hexstr2bin (val_strip); + if (bytes) { + array = g_bytes_unref_to_array (bytes); goto done; } @@ -3074,6 +3078,41 @@ nmc_property_ib_set_p_key (NMSetting *setting, const char *prop, const char *val return TRUE; } +/* --- IP4 / IP6 shared functions --- */ +static NMIPAddress * +_parse_ip_address (int family, const char *address, GError **error) +{ + char *value = g_strdup (address); + NMIPAddress *ipaddr; + + ipaddr = nmc_parse_and_build_address (family, g_strstrip (value), error); + g_free (value); + return ipaddr; +} + +static NMIPRoute * +_parse_ip_route (int family, const char *route, GError **error) +{ + char *value = g_strdup (route); + char **routev; + guint len; + NMIPRoute *iproute = NULL; + + routev = nmc_strsplit_set (g_strstrip (value), " \t", 0); + len = g_strv_length (routev); + if (len < 1 || len > 3) { + g_set_error (error, 1, 0, _("'%s' is not valid (the format is: ip[/prefix] [next-hop] [metric])"), + route); + goto finish; + } + iproute = nmc_parse_and_build_route (family, routev[0], routev[1], len >= 2 ? routev[2] : NULL, error); + +finish: + g_free (value); + g_strfreev (routev); + return iproute; +} + /* --- NM_SETTING_IP4_CONFIG_SETTING_NAME property setter functions --- */ /* 'method' */ static const char *ipv4_valid_methods[] = { @@ -3114,14 +3153,14 @@ nmc_property_ipv4_set_dns (NMSetting *setting, const char *prop, const char *val g_strfreev (strv); return FALSE; } - nm_setting_ip4_config_add_dns (NM_SETTING_IP4_CONFIG (setting), addr); + nm_setting_ip_config_add_dns (NM_SETTING_IP_CONFIG (setting), addr); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv4_dns (NMSettingIP4Config *setting, +_validate_and_remove_ipv4_dns (NMSettingIPConfig *setting, const char *dns, GError **error) { @@ -3133,15 +3172,15 @@ _validate_and_remove_ipv4_dns (NMSettingIP4Config *setting, return FALSE; } - ret = nm_setting_ip4_config_remove_dns_by_value (setting, dns); + ret = nm_setting_ip_config_remove_dns_by_value (setting, dns); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain DNS server '%s'"), dns); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_dns, - NM_SETTING_IP4_CONFIG, - nm_setting_ip4_config_get_num_dns, - nm_setting_ip4_config_remove_dns, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns, + nm_setting_ip_config_remove_dns, _validate_and_remove_ipv4_dns) static const char * @@ -3167,20 +3206,20 @@ nmc_property_ipv4_set_dns_search (NMSetting *setting, const char *prop, const ch } while (strv && strv[i]) - nm_setting_ip4_config_add_dns_search (NM_SETTING_IP4_CONFIG (setting), strv[i++]); + nm_setting_ip_config_add_dns_search (NM_SETTING_IP_CONFIG (setting), strv[i++]); g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv4_dns_search (NMSettingIP4Config *setting, +_validate_and_remove_ipv4_dns_search (NMSettingIPConfig *setting, const char *dns_search, GError **error) { gboolean ret; - ret = nm_setting_ip4_config_remove_dns_search_by_value (setting, dns_search); + ret = nm_setting_ip_config_remove_dns_search_by_value (setting, dns_search); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain DNS search domain '%s'"), @@ -3188,38 +3227,23 @@ _validate_and_remove_ipv4_dns_search (NMSettingIP4Config *setting, return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_dns_search, - NM_SETTING_IP4_CONFIG, - nm_setting_ip4_config_get_num_dns_searches, - nm_setting_ip4_config_remove_dns_search, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns_searches, + nm_setting_ip_config_remove_dns_search, _validate_and_remove_ipv4_dns_search) /* 'addresses' */ -static NMIP4Address * +static NMIPAddress * _parse_ipv4_address (const char *address, GError **error) { - char *value = g_strdup (address); - char **addrv; - NMIP4Address *ip4addr; - - addrv = nmc_strsplit_set (g_strstrip (value), " \t", 0); - if (addrv[0] == NULL || g_strv_length (addrv) > 2) { - g_set_error (error, 1, 0, _("'%s' is not valid (use ip[/prefix] [gateway])"), - address); - g_free (value); - g_strfreev (addrv); - return NULL; - } - ip4addr = nmc_parse_and_build_ip4_address (addrv[0], addrv[1], error); - g_free (value); - g_strfreev (addrv); - return ip4addr; + return _parse_ip_address (AF_INET, address, error); } static gboolean nmc_property_ipv4_set_addresses (NMSetting *setting, const char *prop, const char *val, GError **error) { char **strv = NULL, **iter; - NMIP4Address *ip4addr; + NMIPAddress *ip4addr; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -3230,111 +3254,81 @@ nmc_property_ipv4_set_addresses (NMSetting *setting, const char *prop, const cha g_strfreev (strv); return FALSE; } - nm_setting_ip4_config_add_address (NM_SETTING_IP4_CONFIG (setting), ip4addr); - nm_ip4_address_unref (ip4addr); + nm_setting_ip_config_add_address (NM_SETTING_IP_CONFIG (setting), ip4addr); + nm_ip_address_unref (ip4addr); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv4_address (NMSettingIP4Config *setting, +_validate_and_remove_ipv4_address (NMSettingIPConfig *setting, const char *address, GError **error) { - NMIP4Address *ip4addr; + NMIPAddress *ip4addr; gboolean ret; ip4addr = _parse_ipv4_address (address, error); if (!ip4addr) return FALSE; - ret = nm_setting_ip4_config_remove_address_by_value (setting, ip4addr); + ret = nm_setting_ip_config_remove_address_by_value (setting, ip4addr); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain IP address '%s'"), address); - nm_ip4_address_unref (ip4addr); + nm_ip_address_unref (ip4addr); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_addresses, - NM_SETTING_IP4_CONFIG, - nm_setting_ip4_config_get_num_addresses, - nm_setting_ip4_config_remove_address, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_addresses, + nm_setting_ip_config_remove_address, _validate_and_remove_ipv4_address) static const char * nmc_property_ipv4_describe_addresses (NMSetting *setting, const char *prop) { return _("Enter a list of IPv4 addresses formatted as:\n" - " ip[/prefix] [gateway], ip[/prefix] [gateway],...\n" + " ip[/prefix], ip[/prefix],...\n" "Missing prefix is regarded as prefix of 32.\n\n" - "Example: 192.168.1.5/24 192.168.1.1, 10.0.0.11/24\n"); + "Example: 192.168.1.5/24, 10.0.0.11/24\n"); } -/* - * from: { ip = 1.2.3.4/24, gw = 1.2.3.254 }; { ip = 2.2.2.2/16, gw = 5.5.5.5 } - * to: 1.2.3.4/24 1.2.3.254, 2.2.2.2/16 5.5.5.5 - * from: { ip = 11::22/64, gw = 22::33 }; { ip = ab::cd/64, gw = ab::1 } - * to: 11::22/64 22:33, ab::cd/64 ab::1 -*/ -static char * -nmc_property_out2in_addresses (const char *out_format) +/* 'gateway' */ +static gboolean +nmc_property_ipv4_set_gateway (NMSetting *setting, const char *prop, const char *val, GError **error) { - GRegex *regex; - GString *str; - char **strv; - int i; + NMIPAddress *ip4addr; - str = g_string_sized_new (128); - regex = g_regex_new ("\\{ ip = ([^/]+)/([^,]+), gw = ([^ ]+) \\}", 0, 0, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - strv = g_regex_split (regex, out_format, 0); - for (i = 1; strv && strv[i] && strv[i+1] && strv[i+2]; i=i+4) { - g_string_append (str, strv[i]); /* IP */ - g_string_append_c (str, '/'); - g_string_append (str, strv[i+1]); /* prefix */ - g_string_append_c (str, ' '); - g_string_append (str, strv[i+2]); /* gateway */ - g_string_append (str, ", "); + if (strchr (val, '/')) { + g_set_error (error, 1, 0, + _("invalid gateway address '%s'"), val); + return FALSE; } - if (str->len > 0) - g_string_truncate (str, str->len - 2); - - g_strfreev (strv); - g_regex_unref (regex); + ip4addr = _parse_ipv4_address (val, error); + if (!ip4addr) + return FALSE; - return g_string_free (str, FALSE); + g_object_set (setting, prop, val, NULL); + nm_ip_address_unref (ip4addr); + return TRUE; } /* 'routes' */ -static NMIP4Route * +static NMIPRoute * _parse_ipv4_route (const char *route, GError **error) { - char *value = g_strdup (route); - char **routev; - guint len; - NMIP4Route *ip4route = NULL; - - routev = nmc_strsplit_set (g_strstrip (value), " \t", 0); - len = g_strv_length (routev); - if (len < 1 || len > 3) { - g_set_error (error, 1, 0, _("'%s' is not valid (the format is: ip[/prefix] [next-hop] [metric])"), - route); - goto finish; - } - ip4route = nmc_parse_and_build_ip4_route (routev[0], routev[1], len >= 2 ? routev[2] : NULL, error); - -finish: - g_free (value); - g_strfreev (routev); - return ip4route; + return _parse_ip_route (AF_INET, route, error); } static gboolean nmc_property_ipv4_set_routes (NMSetting *setting, const char *prop, const char *val, GError **error) { char **strv = NULL, **iter; - NMIP4Route *ip4route; + NMIPRoute *ip4route; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -3345,35 +3339,35 @@ nmc_property_ipv4_set_routes (NMSetting *setting, const char *prop, const char * g_strfreev (strv); return FALSE; } - nm_setting_ip4_config_add_route (NM_SETTING_IP4_CONFIG (setting), ip4route); - nm_ip4_route_unref (ip4route); + nm_setting_ip_config_add_route (NM_SETTING_IP_CONFIG (setting), ip4route); + nm_ip_route_unref (ip4route); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv4_route (NMSettingIP4Config *setting, +_validate_and_remove_ipv4_route (NMSettingIPConfig *setting, const char *route, GError **error) { - NMIP4Route *ip4route; + NMIPRoute *ip4route; gboolean ret; ip4route = _parse_ipv4_route (route, error); if (!ip4route) return FALSE; - ret = nm_setting_ip4_config_remove_route_by_value (setting, ip4route); + ret = nm_setting_ip_config_remove_route_by_value (setting, ip4route); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain route '%s'"), route); - nm_ip4_route_unref (ip4route); + nm_ip_route_unref (ip4route); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_routes, - NM_SETTING_IP4_CONFIG, - nm_setting_ip4_config_get_num_routes, - nm_setting_ip4_config_remove_route, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_routes, + nm_setting_ip_config_remove_route, _validate_and_remove_ipv4_route) static const char * @@ -3383,7 +3377,7 @@ nmc_property_ipv4_describe_routes (NMSetting *setting, const char *prop) " ip[/prefix] [next-hop] [metric],...\n\n" "Missing prefix is regarded as a prefix of 32.\n" "Missing next-hop is regarded as 0.0.0.0.\n" - "Missing metric or 0 means a default metric (NM/kernel will set a default value).\n\n" + "Missing metric means default (NM/kernel will set a default value).\n\n" "Examples: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n" " 10.1.2.0/24\n"); } @@ -3460,14 +3454,14 @@ nmc_property_ipv6_set_dns (NMSetting *setting, const char *prop, const char *val g_strfreev (strv); return FALSE; } - nm_setting_ip6_config_add_dns (NM_SETTING_IP6_CONFIG (setting), addr); + nm_setting_ip_config_add_dns (NM_SETTING_IP_CONFIG (setting), addr); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv6_dns (NMSettingIP6Config *setting, +_validate_and_remove_ipv6_dns (NMSettingIPConfig *setting, const char *dns, GError **error) { @@ -3479,15 +3473,15 @@ _validate_and_remove_ipv6_dns (NMSettingIP6Config *setting, return FALSE; } - ret = nm_setting_ip6_config_remove_dns_by_value (setting, dns); + ret = nm_setting_ip_config_remove_dns_by_value (setting, dns); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain DNS server '%s'"), dns); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_dns, - NM_SETTING_IP6_CONFIG, - nm_setting_ip6_config_get_num_dns, - nm_setting_ip6_config_remove_dns, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns, + nm_setting_ip_config_remove_dns, _validate_and_remove_ipv6_dns) static const char * @@ -3519,20 +3513,20 @@ nmc_property_ipv6_set_dns_search (NMSetting *setting, const char *prop, const ch } while (strv && strv[i]) - nm_setting_ip6_config_add_dns_search (NM_SETTING_IP6_CONFIG (setting), strv[i++]); + nm_setting_ip_config_add_dns_search (NM_SETTING_IP_CONFIG (setting), strv[i++]); g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv6_dns_search (NMSettingIP6Config *setting, +_validate_and_remove_ipv6_dns_search (NMSettingIPConfig *setting, const char *dns_search, GError **error) { gboolean ret; - ret = nm_setting_ip6_config_remove_dns_search_by_value (setting, dns_search); + ret = nm_setting_ip_config_remove_dns_search_by_value (setting, dns_search); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain DNS search domain '%s'"), @@ -3540,38 +3534,23 @@ _validate_and_remove_ipv6_dns_search (NMSettingIP6Config *setting, return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_dns_search, - NM_SETTING_IP6_CONFIG, - nm_setting_ip6_config_get_num_dns_searches, - nm_setting_ip6_config_remove_dns_search, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns_searches, + nm_setting_ip_config_remove_dns_search, _validate_and_remove_ipv6_dns_search) /* 'addresses' */ -static NMIP6Address * +static NMIPAddress * _parse_ipv6_address (const char *address, GError **error) { - char *value = g_strstrip (g_strdup (address)); - char **addrv; - NMIP6Address *ip6addr; - - addrv = nmc_strsplit_set (g_strstrip (value), " \t", 0); - if (addrv[0] == NULL || g_strv_length (addrv) > 2) { - g_set_error (error, 1, 0, _("'%s' is not valid (use ip[/prefix] [gateway])"), - address); - g_free (value); - g_strfreev (addrv); - return NULL; - } - ip6addr = nmc_parse_and_build_ip6_address (addrv[0], addrv[1], error); - g_free (value); - g_strfreev (addrv); - return ip6addr; + return _parse_ip_address (AF_INET6, address, error); } static gboolean nmc_property_ipv6_set_addresses (NMSetting *setting, const char *prop, const char *val, GError **error) { char **strv = NULL, **iter; - NMIP6Address *ip6addr; + NMIPAddress *ip6addr; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -3582,75 +3561,80 @@ nmc_property_ipv6_set_addresses (NMSetting *setting, const char *prop, const cha g_strfreev (strv); return FALSE; } - nm_setting_ip6_config_add_address (NM_SETTING_IP6_CONFIG (setting), ip6addr); - nm_ip6_address_unref (ip6addr); + nm_setting_ip_config_add_address (NM_SETTING_IP_CONFIG (setting), ip6addr); + nm_ip_address_unref (ip6addr); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv6_address (NMSettingIP6Config *setting, +_validate_and_remove_ipv6_address (NMSettingIPConfig *setting, const char *address, GError **error) { - NMIP6Address *ip6addr; + NMIPAddress *ip6addr; gboolean ret; ip6addr = _parse_ipv6_address (address, error); if (!ip6addr) return FALSE; - ret = nm_setting_ip6_config_remove_address_by_value (setting, ip6addr); + ret = nm_setting_ip_config_remove_address_by_value (setting, ip6addr); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain IP address '%s'"), address); - nm_ip6_address_unref (ip6addr); + nm_ip_address_unref (ip6addr); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_addresses, - NM_SETTING_IP6_CONFIG, - nm_setting_ip6_config_get_num_addresses, - nm_setting_ip6_config_remove_address, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_addresses, + nm_setting_ip_config_remove_address, _validate_and_remove_ipv6_address) static const char * nmc_property_ipv6_describe_addresses (NMSetting *setting, const char *prop) { return _("Enter a list of IPv6 addresses formatted as:\n" - " ip[/prefix] [gateway], ip[/prefix] [gateway],...\n" + " ip[/prefix], ip[/prefix],...\n" "Missing prefix is regarded as prefix of 128.\n\n" - "Example: 2607:f0d0:1002:51::4/64 2607:f0d0:1002:51::1, 1050:0:0:0:5:600:300c:326b\n"); + "Example: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"); } -/* 'routes' */ -static NMIP6Route * -_parse_ipv6_route (const char *route, GError **error) +/* 'gateway' */ +static gboolean +nmc_property_ipv6_set_gateway (NMSetting *setting, const char *prop, const char *val, GError **error) { - char *value = g_strdup (route); - char **routev; - guint len; - NMIP6Route *ip6route = NULL; + NMIPAddress *ip6addr; - routev = nmc_strsplit_set (g_strstrip (value), " \t", 0); - len = g_strv_length (routev); - if (len < 1 || len > 3) { - g_set_error (error, 1, 0, _("'%s' is not valid (the format is: ip[/prefix] [next-hop] [metric])"), - route); - goto finish; + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if (strchr (val, '/')) { + g_set_error (error, 1, 0, + _("invalid gateway address '%s'"), val); + return FALSE; } - ip6route = nmc_parse_and_build_ip6_route (routev[0], routev[1], len >= 2 ? routev[2] : NULL, error); + ip6addr = _parse_ipv6_address (val, error); + if (!ip6addr) + return FALSE; -finish: - g_free (value); - g_strfreev (routev); - return ip6route; + g_object_set (setting, prop, val, NULL); + nm_ip_address_unref (ip6addr); + return TRUE; +} + +/* 'routes' */ +static NMIPRoute * +_parse_ipv6_route (const char *route, GError **error) +{ + return _parse_ip_route (AF_INET6, route, error); } static gboolean nmc_property_ipv6_set_routes (NMSetting *setting, const char *prop, const char *val, GError **error) { char **strv = NULL, **iter; - NMIP6Route *ip6route; + NMIPRoute *ip6route; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -3661,35 +3645,35 @@ nmc_property_ipv6_set_routes (NMSetting *setting, const char *prop, const char * g_strfreev (strv); return FALSE; } - nm_setting_ip6_config_add_route (NM_SETTING_IP6_CONFIG (setting), ip6route); - nm_ip6_route_unref (ip6route); + nm_setting_ip_config_add_route (NM_SETTING_IP_CONFIG (setting), ip6route); + nm_ip_route_unref (ip6route); } g_strfreev (strv); return TRUE; } static gboolean -_validate_and_remove_ipv6_route (NMSettingIP6Config *setting, +_validate_and_remove_ipv6_route (NMSettingIPConfig *setting, const char *route, GError **error) { - NMIP6Route *ip6route; + NMIPRoute *ip6route; gboolean ret; ip6route = _parse_ipv6_route (route, error); if (!ip6route) return FALSE; - ret = nm_setting_ip6_config_remove_route_by_value (setting, ip6route); + ret = nm_setting_ip_config_remove_route_by_value (setting, ip6route); if (!ret) g_set_error (error, 1, 0, _("the property doesn't contain route '%s'"), route); - nm_ip6_route_unref (ip6route); + nm_ip_route_unref (ip6route); return ret; } DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_routes, - NM_SETTING_IP6_CONFIG, - nm_setting_ip6_config_get_num_routes, - nm_setting_ip6_config_remove_route, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_routes, + nm_setting_ip_config_remove_route, _validate_and_remove_ipv6_route) static const char * @@ -3699,7 +3683,7 @@ nmc_property_ipv6_describe_routes (NMSetting *setting, const char *prop) " ip[/prefix] [next-hop] [metric],...\n\n" "Missing prefix is regarded as a prefix of 128.\n" "Missing next-hop is regarded as \"::\".\n" - "Missing metric or 0 means a default metric (NM/kernel will set a default value).\n\n" + "Missing metric means default (NM/kernel will set a default value).\n\n" "Examples: 2001:db8:beef:2::/64 2001:db8:beef::2, 2001:db8:beef:3::/64 2001:db8:beef::3 2\n" " abbe::/64 55\n"); } @@ -4722,6 +4706,8 @@ nmc_add_prop_funcs (char *key, /* concatenate setting name and property name */ #define GLUE(A,B) (g_strconcat ((NM_SETTING_##A##_SETTING_NAME),(NM_SETTING_##A##_##B), NULL)) +#define GLUE_IP(A,B) (g_strconcat ((NM_SETTING_IP##A##_CONFIG_SETTING_NAME),(NM_SETTING_IP_CONFIG_##B), NULL)) + void nmc_properties_init (void) { @@ -5447,49 +5433,63 @@ nmc_properties_init (void) NULL); /* Add editable properties for NM_SETTING_IP4_CONFIG_SETTING_NAME */ - nmc_add_prop_funcs (GLUE (IP4_CONFIG, METHOD), + nmc_add_prop_funcs (GLUE_IP (4, METHOD), nmc_property_ipv4_get_method, nmc_property_ipv4_set_method, NULL, NULL, nmc_property_ipv4_allowed_method, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, DNS), + nmc_add_prop_funcs (GLUE_IP (4, DNS), nmc_property_ipv4_get_dns, nmc_property_ipv4_set_dns, nmc_property_ipv4_remove_dns, nmc_property_ipv4_describe_dns, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, DNS_SEARCH), + nmc_add_prop_funcs (GLUE_IP (4, DNS_SEARCH), nmc_property_ipv4_get_dns_search, nmc_property_ipv4_set_dns_search, nmc_property_ipv4_remove_dns_search, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, ADDRESSES), - nmc_property_ipv4_get_addresses, + nmc_add_prop_funcs (GLUE_IP (4, ADDRESSES), + nmc_property_ip_get_addresses, nmc_property_ipv4_set_addresses, nmc_property_ipv4_remove_addresses, nmc_property_ipv4_describe_addresses, NULL, - nmc_property_out2in_addresses); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, ROUTES), + NULL); + nmc_add_prop_funcs (GLUE_IP (4, GATEWAY), + nmc_property_ipv4_get_gateway, + nmc_property_ipv4_set_gateway, + NULL, + NULL, + NULL, + NULL); + nmc_add_prop_funcs (GLUE_IP (4, ROUTES), nmc_property_ipv4_get_routes, nmc_property_ipv4_set_routes, nmc_property_ipv4_remove_routes, nmc_property_ipv4_describe_routes, NULL, nmc_property_out2in_routes); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, IGNORE_AUTO_ROUTES), + nmc_add_prop_funcs (GLUE_IP (4, ROUTE_METRIC), + nmc_property_ipv4_get_route_metric, + nmc_property_set_int64, + NULL, + NULL, + NULL, + NULL); + nmc_add_prop_funcs (GLUE_IP (4, IGNORE_AUTO_ROUTES), nmc_property_ipv4_get_ignore_auto_routes, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, IGNORE_AUTO_DNS), + nmc_add_prop_funcs (GLUE_IP (4, IGNORE_AUTO_DNS), nmc_property_ipv4_get_ignore_auto_dns, nmc_property_set_bool, NULL, @@ -5503,28 +5503,28 @@ nmc_properties_init (void) NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, DHCP_SEND_HOSTNAME), + nmc_add_prop_funcs (GLUE_IP (4, DHCP_SEND_HOSTNAME), nmc_property_ipv4_get_dhcp_send_hostname, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, DHCP_HOSTNAME), + nmc_add_prop_funcs (GLUE_IP (4, DHCP_HOSTNAME), nmc_property_ipv4_get_dhcp_hostname, nmc_property_set_string, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, NEVER_DEFAULT), + nmc_add_prop_funcs (GLUE_IP (4, NEVER_DEFAULT), nmc_property_ipv4_get_never_default, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP4_CONFIG, MAY_FAIL), + nmc_add_prop_funcs (GLUE_IP (4, MAY_FAIL), nmc_property_ipv4_get_may_fail, nmc_property_set_bool, NULL, @@ -5533,63 +5533,77 @@ nmc_properties_init (void) NULL); /* Add editable properties for NM_SETTING_IP6_CONFIG_SETTING_NAME */ - nmc_add_prop_funcs (GLUE (IP6_CONFIG, METHOD), + nmc_add_prop_funcs (GLUE_IP (6, METHOD), nmc_property_ipv6_get_method, nmc_property_ipv6_set_method, NULL, NULL, nmc_property_ipv6_allowed_method, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, DNS), + nmc_add_prop_funcs (GLUE_IP (6, DNS), nmc_property_ipv6_get_dns, nmc_property_ipv6_set_dns, nmc_property_ipv6_remove_dns, nmc_property_ipv6_describe_dns, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, DNS_SEARCH), + nmc_add_prop_funcs (GLUE_IP (6, DNS_SEARCH), nmc_property_ipv6_get_dns_search, nmc_property_ipv6_set_dns_search, nmc_property_ipv6_remove_dns_search, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, ADDRESSES), - nmc_property_ipv6_get_addresses, + nmc_add_prop_funcs (GLUE_IP (6, ADDRESSES), + nmc_property_ip_get_addresses, nmc_property_ipv6_set_addresses, nmc_property_ipv6_remove_addresses, nmc_property_ipv6_describe_addresses, NULL, - nmc_property_out2in_addresses); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, ROUTES), + NULL); + nmc_add_prop_funcs (GLUE_IP (6, GATEWAY), + nmc_property_ipv6_get_gateway, + nmc_property_ipv6_set_gateway, + NULL, + NULL, + NULL, + NULL); + nmc_add_prop_funcs (GLUE_IP (6, ROUTES), nmc_property_ipv6_get_routes, nmc_property_ipv6_set_routes, nmc_property_ipv6_remove_routes, nmc_property_ipv6_describe_routes, NULL, nmc_property_out2in_routes); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, IGNORE_AUTO_ROUTES), + nmc_add_prop_funcs (GLUE_IP (6, ROUTE_METRIC), + nmc_property_ipv6_get_route_metric, + nmc_property_set_int64, + NULL, + NULL, + NULL, + NULL); + nmc_add_prop_funcs (GLUE_IP (6, IGNORE_AUTO_ROUTES), nmc_property_ipv6_get_ignore_auto_routes, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, IGNORE_AUTO_DNS), + nmc_add_prop_funcs (GLUE_IP (6, IGNORE_AUTO_DNS), nmc_property_ipv6_get_ignore_auto_dns, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, NEVER_DEFAULT), + nmc_add_prop_funcs (GLUE_IP (6, NEVER_DEFAULT), nmc_property_ipv6_get_never_default, nmc_property_set_bool, NULL, NULL, NULL, NULL); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, MAY_FAIL), + nmc_add_prop_funcs (GLUE_IP (6, MAY_FAIL), nmc_property_ipv6_get_may_fail, nmc_property_set_bool, NULL, @@ -5603,7 +5617,14 @@ nmc_properties_init (void) NULL, NULL, nmc_property_out2in_cut_paren); - nmc_add_prop_funcs (GLUE (IP6_CONFIG, DHCP_HOSTNAME), + nmc_add_prop_funcs (GLUE_IP (6, DHCP_SEND_HOSTNAME), + nmc_property_ipv6_get_dhcp_send_hostname, + nmc_property_set_bool, + NULL, + NULL, + NULL, + NULL); + nmc_add_prop_funcs (GLUE_IP (6, DHCP_HOSTNAME), nmc_property_ipv6_get_dhcp_hostname, nmc_property_set_string, NULL, @@ -6742,7 +6763,7 @@ setting_wireless_security_details (NMSetting *setting, NmCli *nmc, const char *o static gboolean setting_ip4_config_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets) { - NMSettingIP4Config *s_ip4 = NM_SETTING_IP4_CONFIG (setting); + NMSettingIPConfig *s_ip4 = NM_SETTING_IP_CONFIG (setting); NmcOutputField *tmpl, *arr; size_t tmpl_len; @@ -6760,15 +6781,17 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc, const char *one_pro set_val_str (arr, 1, nmc_property_ipv4_get_method (setting)); set_val_str (arr, 2, nmc_property_ipv4_get_dns (setting)); set_val_str (arr, 3, nmc_property_ipv4_get_dns_search (setting)); - set_val_str (arr, 4, nmc_property_ipv4_get_addresses (setting)); - set_val_str (arr, 5, nmc_property_ipv4_get_routes (setting)); - set_val_str (arr, 6, nmc_property_ipv4_get_ignore_auto_routes (setting)); - set_val_str (arr, 7, nmc_property_ipv4_get_ignore_auto_dns (setting)); - set_val_str (arr, 8, nmc_property_ipv4_get_dhcp_client_id (setting)); - set_val_str (arr, 9, nmc_property_ipv4_get_dhcp_send_hostname (setting)); - set_val_str (arr, 10, nmc_property_ipv4_get_dhcp_hostname (setting)); - set_val_str (arr, 11, nmc_property_ipv4_get_never_default (setting)); - set_val_str (arr, 12, nmc_property_ipv4_get_may_fail (setting)); + set_val_str (arr, 4, nmc_property_ip_get_addresses (setting)); + set_val_str (arr, 5, nmc_property_ipv4_get_gateway (setting)); + set_val_str (arr, 6, nmc_property_ipv4_get_routes (setting)); + set_val_str (arr, 7, nmc_property_ipv4_get_route_metric (setting)); + set_val_str (arr, 8, nmc_property_ipv4_get_ignore_auto_routes (setting)); + set_val_str (arr, 9, nmc_property_ipv4_get_ignore_auto_dns (setting)); + set_val_str (arr, 10, nmc_property_ipv4_get_dhcp_client_id (setting)); + set_val_str (arr, 11, nmc_property_ipv4_get_dhcp_send_hostname (setting)); + set_val_str (arr, 12, nmc_property_ipv4_get_dhcp_hostname (setting)); + set_val_str (arr, 13, nmc_property_ipv4_get_never_default (setting)); + set_val_str (arr, 14, nmc_property_ipv4_get_may_fail (setting)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6779,7 +6802,7 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc, const char *one_pro static gboolean setting_ip6_config_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets) { - NMSettingIP6Config *s_ip6 = NM_SETTING_IP6_CONFIG (setting); + NMSettingIPConfig *s_ip6 = NM_SETTING_IP_CONFIG (setting); NmcOutputField *tmpl, *arr; size_t tmpl_len; @@ -6797,14 +6820,17 @@ setting_ip6_config_details (NMSetting *setting, NmCli *nmc, const char *one_pro set_val_str (arr, 1, nmc_property_ipv6_get_method (setting)); set_val_str (arr, 2, nmc_property_ipv6_get_dns (setting)); set_val_str (arr, 3, nmc_property_ipv6_get_dns_search (setting)); - set_val_str (arr, 4, nmc_property_ipv6_get_addresses (setting)); - set_val_str (arr, 5, nmc_property_ipv6_get_routes (setting)); - set_val_str (arr, 6, nmc_property_ipv6_get_ignore_auto_routes (setting)); - set_val_str (arr, 7, nmc_property_ipv6_get_ignore_auto_dns (setting)); - set_val_str (arr, 8, nmc_property_ipv6_get_never_default (setting)); - set_val_str (arr, 9, nmc_property_ipv6_get_may_fail (setting)); - set_val_str (arr, 10, nmc_property_ipv6_get_ip6_privacy (setting)); - set_val_str (arr, 11, nmc_property_ipv6_get_dhcp_hostname (setting)); + set_val_str (arr, 4, nmc_property_ip_get_addresses (setting)); + set_val_str (arr, 5, nmc_property_ipv6_get_gateway (setting)); + set_val_str (arr, 6, nmc_property_ipv6_get_routes (setting)); + set_val_str (arr, 7, nmc_property_ipv6_get_route_metric (setting)); + set_val_str (arr, 8, nmc_property_ipv6_get_ignore_auto_routes (setting)); + set_val_str (arr, 9, nmc_property_ipv6_get_ignore_auto_dns (setting)); + set_val_str (arr, 10, nmc_property_ipv6_get_never_default (setting)); + set_val_str (arr, 11, nmc_property_ipv6_get_may_fail (setting)); + set_val_str (arr, 12, nmc_property_ipv6_get_ip6_privacy (setting)); + set_val_str (arr, 13, nmc_property_ipv6_get_dhcp_send_hostname (setting)); + set_val_str (arr, 14, nmc_property_ipv6_get_dhcp_hostname (setting)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ |