diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2015-03-26 11:14:18 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2015-05-13 17:15:34 +0200 |
commit | 7467e255935392885c8fb4efd46327edac7b96c7 (patch) | |
tree | 6bf2b66009fa0c2356bd66d5cef9785bf61dd176 | |
parent | bb9c7e2c188f351ef78e506fdd8c45df0a9315c5 (diff) |
cli: add support for DNS options
-rw-r--r-- | clients/cli/settings.c | 184 |
1 files changed, 140 insertions, 44 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c index a255fb38a2..3c8a86c79e 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -259,23 +259,25 @@ NmcOutputField nmc_fields_setting_ip4_config[] = { 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 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS_OPTIONS, 15), /* 4 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ADDRESSES, 20), /* 5 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_GATEWAY, 20), /* 6 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTES, 20), /* 7 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTE_METRIC, 15), /* 8 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 9 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, 16), /* 10 */ + SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, 15), /* 11 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 12 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, 14), /* 13 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, 15), /* 14 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_MAY_FAIL, 12), /* 15 */ {NULL, NULL, 0, NULL, FALSE, FALSE, 0} }; #define NMC_FIELDS_SETTING_IP4_CONFIG_ALL "name"","\ NM_SETTING_IP_CONFIG_METHOD","\ NM_SETTING_IP_CONFIG_DNS","\ NM_SETTING_IP_CONFIG_DNS_SEARCH","\ + NM_SETTING_IP_CONFIG_DNS_OPTIONS","\ NM_SETTING_IP_CONFIG_ADDRESSES","\ NM_SETTING_IP_CONFIG_GATEWAY","\ NM_SETTING_IP_CONFIG_ROUTES","\ @@ -295,23 +297,25 @@ NmcOutputField nmc_fields_setting_ip6_config[] = { 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 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DNS_OPTIONS, 15), /* 4 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ADDRESSES, 20), /* 5 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_GATEWAY, 20), /* 6 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTES, 20), /* 7 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_ROUTE_METRIC, 15), /* 8 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 9 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, 16), /* 10 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, 15), /* 11 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_MAY_FAIL, 12), /* 12 */ + SETTING_FIELD (NM_SETTING_IP6_CONFIG_IP6_PRIVACY, 15), /* 13 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 14 */ + SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, 14), /* 15 */ {NULL, NULL, 0, NULL, FALSE, FALSE, 0} }; #define NMC_FIELDS_SETTING_IP6_CONFIG_ALL "name"","\ NM_SETTING_IP_CONFIG_METHOD","\ NM_SETTING_IP_CONFIG_DNS","\ NM_SETTING_IP_CONFIG_DNS_SEARCH","\ + NM_SETTING_IP_CONFIG_DNS_OPTIONS","\ NM_SETTING_IP_CONFIG_ADDRESSES","\ NM_SETTING_IP_CONFIG_GATEWAY","\ NM_SETTING_IP_CONFIG_ROUTES","\ @@ -1221,6 +1225,7 @@ DEFINE_GETTER (nmc_property_ib_get_parent, NM_SETTING_INFINIBAND_PARENT) 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) +DEFINE_GETTER (nmc_property_ipv4_get_dns_options, NM_SETTING_IP_CONFIG_DNS_OPTIONS) static char * nmc_property_ip_get_addresses (NMSetting *setting) @@ -1298,6 +1303,7 @@ DEFINE_GETTER (nmc_property_ipv4_get_may_fail, NM_SETTING_IP_CONFIG_MAY_FAIL) 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) +DEFINE_GETTER (nmc_property_ipv6_get_dns_options, NM_SETTING_IP_CONFIG_DNS_OPTIONS) static char * nmc_property_ipv6_get_routes (NMSetting *setting) @@ -3294,6 +3300,43 @@ DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_dns_search, nm_setting_ip_config_remove_dns_search, _validate_and_remove_ipv4_dns_search) +/* 'dns-options' */ +static gboolean +nmc_property_ipv4_set_dns_options (NMSetting *setting, const char *prop, const char *val, GError **error) +{ + char **strv = NULL; + guint i = 0; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + strv = nmc_strsplit_set (val, " \t,", 0); + while (strv && strv[i]) + nm_setting_ip_config_add_dns_option (NM_SETTING_IP_CONFIG (setting), strv[i++]); + g_strfreev (strv); + + return TRUE; +} + +static gboolean +_validate_and_remove_ipv4_dns_option (NMSettingIPConfig *setting, + const char *dns_option, + GError **error) +{ + gboolean ret; + + ret = nm_setting_ip_config_remove_dns_option_by_value (setting, dns_option); + if (!ret) + g_set_error (error, 1, 0, + _("the property doesn't contain DNS option '%s'"), + dns_option); + return ret; +} +DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv4_remove_dns_option, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns_options, + nm_setting_ip_config_remove_dns_option, + _validate_and_remove_ipv4_dns_option) + /* 'addresses' */ static NMIPAddress * _parse_ipv4_address (const char *address, GError **error) @@ -3601,6 +3644,43 @@ DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_dns_search, nm_setting_ip_config_remove_dns_search, _validate_and_remove_ipv6_dns_search) +/* 'dns-options' */ +static gboolean +nmc_property_ipv6_set_dns_options (NMSetting *setting, const char *prop, const char *val, GError **error) +{ + char **strv = NULL; + guint i = 0; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + strv = nmc_strsplit_set (val, " \t,", 0); + while (strv && strv[i]) + nm_setting_ip_config_add_dns_option (NM_SETTING_IP_CONFIG (setting), strv[i++]); + g_strfreev (strv); + + return TRUE; +} + +static gboolean +_validate_and_remove_ipv6_dns_option (NMSettingIPConfig *setting, + const char *dns_option, + GError **error) +{ + gboolean ret; + + ret = nm_setting_ip_config_remove_dns_option_by_value (setting, dns_option); + if (!ret) + g_set_error (error, 1, 0, + _("the property doesn't contain DNS option '%s'"), + dns_option); + return ret; +} +DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_ipv6_remove_dns_option, + NM_SETTING_IP_CONFIG, + nm_setting_ip_config_get_num_dns_options, + nm_setting_ip_config_remove_dns_option, + _validate_and_remove_ipv6_dns_option) + /* 'addresses' */ static NMIPAddress * _parse_ipv6_address (const char *address, GError **error) @@ -5543,6 +5623,13 @@ nmc_properties_init (void) NULL, NULL, NULL); + nmc_add_prop_funcs (GLUE_IP (4, DNS_OPTIONS), + nmc_property_ipv4_get_dns_options, + nmc_property_ipv4_set_dns_options, + nmc_property_ipv4_remove_dns_option, + NULL, + NULL, + NULL); nmc_add_prop_funcs (GLUE_IP (4, ADDRESSES), nmc_property_ip_get_addresses, nmc_property_ipv4_set_addresses, @@ -5643,6 +5730,13 @@ nmc_properties_init (void) NULL, NULL, NULL); + nmc_add_prop_funcs (GLUE_IP (6, DNS_OPTIONS), + nmc_property_ipv6_get_dns_options, + nmc_property_ipv6_set_dns_options, + nmc_property_ipv6_remove_dns_option, + NULL, + NULL, + NULL); nmc_add_prop_funcs (GLUE_IP (6, ADDRESSES), nmc_property_ip_get_addresses, nmc_property_ipv6_set_addresses, @@ -6886,17 +6980,18 @@ 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_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)); + set_val_str (arr, 4, nmc_property_ipv4_get_dns_options (setting)); + set_val_str (arr, 5, nmc_property_ip_get_addresses (setting)); + set_val_str (arr, 6, nmc_property_ipv4_get_gateway (setting)); + set_val_str (arr, 7, nmc_property_ipv4_get_routes (setting)); + set_val_str (arr, 8, nmc_property_ipv4_get_route_metric (setting)); + set_val_str (arr, 9, nmc_property_ipv4_get_ignore_auto_routes (setting)); + set_val_str (arr, 10, nmc_property_ipv4_get_ignore_auto_dns (setting)); + set_val_str (arr, 11, nmc_property_ipv4_get_dhcp_client_id (setting)); + set_val_str (arr, 12, nmc_property_ipv4_get_dhcp_send_hostname (setting)); + set_val_str (arr, 13, nmc_property_ipv4_get_dhcp_hostname (setting)); + set_val_str (arr, 14, nmc_property_ipv4_get_never_default (setting)); + set_val_str (arr, 15, nmc_property_ipv4_get_may_fail (setting)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6925,17 +7020,18 @@ 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_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)); + set_val_str (arr, 4, nmc_property_ipv6_get_dns_options (setting)); + set_val_str (arr, 5, nmc_property_ip_get_addresses (setting)); + set_val_str (arr, 6, nmc_property_ipv6_get_gateway (setting)); + set_val_str (arr, 7, nmc_property_ipv6_get_routes (setting)); + set_val_str (arr, 8, nmc_property_ipv6_get_route_metric (setting)); + set_val_str (arr, 9, nmc_property_ipv6_get_ignore_auto_routes (setting)); + set_val_str (arr, 10, nmc_property_ipv6_get_ignore_auto_dns (setting)); + set_val_str (arr, 11, nmc_property_ipv6_get_never_default (setting)); + set_val_str (arr, 12, nmc_property_ipv6_get_may_fail (setting)); + set_val_str (arr, 13, nmc_property_ipv6_get_ip6_privacy (setting)); + set_val_str (arr, 14, nmc_property_ipv6_get_dhcp_send_hostname (setting)); + set_val_str (arr, 15, nmc_property_ipv6_get_dhcp_hostname (setting)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ |