diff options
author | Francesco Giudici <fgiudici@redhat.com> | 2016-12-05 16:07:10 +0100 |
---|---|---|
committer | Francesco Giudici <fgiudici@redhat.com> | 2016-12-12 12:41:13 +0100 |
commit | 003164540a48f7a0af08cb07243fef0280dce4ea (patch) | |
tree | 2d84ee2808f38075a7935e5e3a09060d9b6cc0d4 | |
parent | c5fe886a36e67a270ca063675f7330b21a5689e5 (diff) | |
download | NetworkManager-003164540a48f7a0af08cb07243fef0280dce4ea.tar.gz |
ifcfg-rh: add DHCPV6_HOSTNAME and DHCPV6_SEND_HOSTNAME vars
Currently ipv4 and ipv6 settings share the ifcfg plugin vars for the
dhcp-hostname and dhcp-send-hostname options (DHCP_HOSTNAME and
DHCP_SEND_HOSTNAME). Add brand new vars DHCPV6_HOSTNAME and
DHCPV6_SEND_HOSTNAME to have var-property one to one mappings.
-rw-r--r-- | src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c | 13 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 26 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 2 |
3 files changed, 34 insertions, 7 deletions
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c index 843bad1c62..5ddd8db0fe 100644 --- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c +++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c @@ -1511,10 +1511,19 @@ make_ip6_setting (shvarFile *ifcfg, if ( !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) || !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) { /* METHOD_AUTO may trigger DHCPv6, so save the hostname to send to DHCP */ - value = svGetValueString (ifcfg, "DHCP_HOSTNAME"); - if (value && value[0]) + value = svGetValueString (ifcfg, "DHCPV6_HOSTNAME"); + if (!value) { + /* Use DHCP_HOSTNAME as fallback if it is a FQDN to support old ifcfg files */ + value = svGetValueString (ifcfg, "DHCP_HOSTNAME"); + if (value && !strchr (value, '.')) + g_clear_pointer (&value, g_free); + } + if (value) g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL); g_free (value); + + g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, + svGetValueBoolean (ifcfg, "DHCPV6_SEND_HOSTNAME", TRUE), NULL); } /* Read static IP addresses. diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c index 22454fb347..de19ee1fcc 100644 --- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c +++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c @@ -2446,6 +2446,23 @@ error: return success; } +static void +write_ip6_setting_dhcp_hostname (NMSettingIPConfig *s_ip6, shvarFile *ifcfg) +{ + const char *hostname; + + hostname = nm_setting_ip_config_get_dhcp_hostname (s_ip6); + svSetValueString (ifcfg, "DHCPV6_HOSTNAME", hostname); + + /* Missing DHCPV6_SEND_HOSTNAME means TRUE, and we prefer not write it + * explicitly in that case, because it is NM-specific variable + */ + if (nm_setting_ip_config_get_dhcp_send_hostname (s_ip6)) + svUnsetValue (ifcfg, "DHCPV6_SEND_HOSTNAME"); + else + svSetValueString (ifcfg, "DHCPV6_SEND_HOSTNAME", "no"); +} + static gboolean write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) { @@ -2473,6 +2490,8 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) svUnsetValue (ifcfg, "IPV6INIT"); svUnsetValue (ifcfg, "IPV6_AUTOCONF"); svUnsetValue (ifcfg, "DHCPV6C"); + svUnsetValue (ifcfg, "DHCPV6_HOSTNAME"); + svUnsetValue (ifcfg, "DHCPV6_SEND_HOSTNAME"); svUnsetValue (ifcfg, "IPV6_DEFROUTE"); svUnsetValue (ifcfg, "IPV6_PEERDNS"); svUnsetValue (ifcfg, "IPV6_PEERROUTES"); @@ -2492,14 +2511,12 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) svSetValueString (ifcfg, "IPV6INIT", "yes"); svSetValueString (ifcfg, "IPV6_AUTOCONF", "yes"); svUnsetValue (ifcfg, "DHCPV6C"); + write_ip6_setting_dhcp_hostname (s_ip6, ifcfg); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) { - const char *hostname; svSetValueString (ifcfg, "IPV6INIT", "yes"); svSetValueString (ifcfg, "IPV6_AUTOCONF", "no"); svSetValueString (ifcfg, "DHCPV6C", "yes"); - hostname = nm_setting_ip_config_get_dhcp_hostname (s_ip6); - if (hostname) - svSetValueString (ifcfg, "DHCP_HOSTNAME", hostname); + write_ip6_setting_dhcp_hostname (s_ip6, ifcfg); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { svSetValueString (ifcfg, "IPV6INIT", "yes"); svSetValueString (ifcfg, "IPV6_AUTOCONF", "no"); @@ -2570,6 +2587,7 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) g_free (ip4_domains); } + /* handle IPV6_DEFROUTE */ /* IPV6_DEFROUTE has the opposite meaning from 'never-default' */ if (nm_setting_ip_config_get_never_default(s_ip6)) diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index a35a830b86..9a9d48d3e9 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -3891,7 +3891,7 @@ test_read_write_wired_dhcp_send_hostname (void) g_assert (s_ip6); g_assert (nm_setting_ip_config_get_dhcp_send_hostname (s_ip4) == TRUE); g_assert_cmpstr (nm_setting_ip_config_get_dhcp_hostname (s_ip4), ==, "svata-pulec"); - g_assert_cmpstr (nm_setting_ip_config_get_dhcp_hostname (s_ip6), ==, "svata-pulec"); + g_assert_null (nm_setting_ip_config_get_dhcp_hostname (s_ip6)); /* Set dhcp-send-hostname=false dhcp-hostname="kamil-patka" and write the connection. */ g_object_set (s_ip4, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, FALSE, NULL); |