ifcfg-rh: save/restore dhcp related properties also when ip method != DHCP/AUTO
affected properties are: ipv4.dhcp-client-id, ipv4.fqdn, ipv4.dhcp-timeout, ipvX.ignore-auto-routes, ipvX.ignore-auto-dns, ipvX.dhcp-hostname and ipvX.dhcp-send-hostname.
This commit is contained in:
@@ -1070,31 +1070,29 @@ make_ip4_setting (shvarFile *ifcfg,
|
|||||||
return NM_SETTING (s_ip4);
|
return NM_SETTING (s_ip4);
|
||||||
|
|
||||||
/* Handle DHCP settings */
|
/* Handle DHCP settings */
|
||||||
if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) {
|
value = svGetValueString (ifcfg, "DHCP_HOSTNAME");
|
||||||
value = svGetValueString (ifcfg, "DHCP_HOSTNAME");
|
if (value && *value)
|
||||||
if (value && *value)
|
g_object_set (s_ip4, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
|
||||||
g_object_set (s_ip4, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
|
g_free (value);
|
||||||
g_free (value);
|
|
||||||
|
|
||||||
value = svGetValueString (ifcfg, "DHCP_FQDN");
|
|
||||||
if (value && *value) {
|
|
||||||
g_object_set (s_ip4,
|
|
||||||
NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, NULL,
|
|
||||||
NM_SETTING_IP4_CONFIG_DHCP_FQDN, value,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
g_free (value);
|
|
||||||
|
|
||||||
|
value = svGetValueString (ifcfg, "DHCP_FQDN");
|
||||||
|
if (value && *value) {
|
||||||
g_object_set (s_ip4,
|
g_object_set (s_ip4,
|
||||||
NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, svGetValueBoolean (ifcfg, "DHCP_SEND_HOSTNAME", TRUE),
|
NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, NULL,
|
||||||
NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, svGetValueInt64 (ifcfg, "IPV4_DHCP_TIMEOUT", 10, 0, G_MAXINT32, 0),
|
NM_SETTING_IP4_CONFIG_DHCP_FQDN, value,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
value = svGetValueString (ifcfg, "DHCP_CLIENT_ID");
|
|
||||||
if (value && strlen (value))
|
|
||||||
g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, value, NULL);
|
|
||||||
g_free (value);
|
|
||||||
}
|
}
|
||||||
|
g_free (value);
|
||||||
|
|
||||||
|
g_object_set (s_ip4,
|
||||||
|
NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, svGetValueBoolean (ifcfg, "DHCP_SEND_HOSTNAME", TRUE),
|
||||||
|
NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, svGetValueInt64 (ifcfg, "IPV4_DHCP_TIMEOUT", 10, 0, G_MAXINT32, 0),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
value = svGetValueString (ifcfg, "DHCP_CLIENT_ID");
|
||||||
|
if (value && strlen (value))
|
||||||
|
g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, value, NULL);
|
||||||
|
g_free (value);
|
||||||
|
|
||||||
/* Read static IP addresses.
|
/* Read static IP addresses.
|
||||||
* Read them even for AUTO method - in this case the addresses are
|
* Read them even for AUTO method - in this case the addresses are
|
||||||
@@ -1508,14 +1506,10 @@ make_ip6_setting (shvarFile *ifcfg,
|
|||||||
if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0)
|
if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0)
|
||||||
return NM_SETTING (s_ip6);
|
return NM_SETTING (s_ip6);
|
||||||
|
|
||||||
if ( !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
|
value = svGetValueString (ifcfg, "DHCP_HOSTNAME");
|
||||||
|| !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
if (value && value[0])
|
||||||
/* METHOD_AUTO may trigger DHCPv6, so save the hostname to send to DHCP */
|
g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
|
||||||
value = svGetValueString (ifcfg, "DHCP_HOSTNAME");
|
g_free (value);
|
||||||
if (value && value[0])
|
|
||||||
g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
|
|
||||||
g_free (value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Read static IP addresses.
|
/* Read static IP addresses.
|
||||||
* Read them even for AUTO and DHCP methods - in this case the addresses are
|
* Read them even for AUTO and DHCP methods - in this case the addresses are
|
||||||
|
@@ -2174,34 +2174,28 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||||||
|
|
||||||
svUnsetValue (ifcfg, "PEERDNS");
|
svUnsetValue (ifcfg, "PEERDNS");
|
||||||
svUnsetValue (ifcfg, "PEERROUTES");
|
svUnsetValue (ifcfg, "PEERROUTES");
|
||||||
svUnsetValue (ifcfg, "DHCP_CLIENT_ID");
|
svSetValueBoolean (ifcfg, "PEERDNS", !nm_setting_ip_config_get_ignore_auto_dns (s_ip4));
|
||||||
if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) {
|
svSetValueBoolean (ifcfg, "PEERROUTES", !nm_setting_ip_config_get_ignore_auto_routes (s_ip4));
|
||||||
svSetValueBoolean (ifcfg, "PEERDNS", !nm_setting_ip_config_get_ignore_auto_dns (s_ip4));
|
|
||||||
svSetValueBoolean (ifcfg, "PEERROUTES", !nm_setting_ip_config_get_ignore_auto_routes (s_ip4));
|
|
||||||
|
|
||||||
value = nm_setting_ip_config_get_dhcp_hostname (s_ip4);
|
value = nm_setting_ip_config_get_dhcp_hostname (s_ip4);
|
||||||
if (value)
|
svSetValueString (ifcfg, "DHCP_HOSTNAME", value);
|
||||||
svSetValueString (ifcfg, "DHCP_HOSTNAME", value);
|
|
||||||
|
|
||||||
value = nm_setting_ip4_config_get_dhcp_fqdn (NM_SETTING_IP4_CONFIG (s_ip4));
|
value = nm_setting_ip4_config_get_dhcp_fqdn (NM_SETTING_IP4_CONFIG (s_ip4));
|
||||||
if (value)
|
svSetValueString (ifcfg, "DHCP_FQDN", value);
|
||||||
svSetValueString (ifcfg, "DHCP_FQDN", value);
|
|
||||||
|
|
||||||
/* Missing DHCP_SEND_HOSTNAME means TRUE, and we prefer not write it explicitly
|
/* Missing DHCP_SEND_HOSTNAME means TRUE, and we prefer not write it explicitly
|
||||||
* in that case, because it is NM-specific variable
|
* in that case, because it is NM-specific variable
|
||||||
*/
|
*/
|
||||||
svSetValueString (ifcfg, "DHCP_SEND_HOSTNAME",
|
svSetValueString (ifcfg, "DHCP_SEND_HOSTNAME",
|
||||||
nm_setting_ip_config_get_dhcp_send_hostname (s_ip4) ? NULL : "no");
|
nm_setting_ip_config_get_dhcp_send_hostname (s_ip4) ? NULL : "no");
|
||||||
|
|
||||||
value = nm_setting_ip4_config_get_dhcp_client_id (NM_SETTING_IP4_CONFIG (s_ip4));
|
value = nm_setting_ip4_config_get_dhcp_client_id (NM_SETTING_IP4_CONFIG (s_ip4));
|
||||||
if (value)
|
svSetValueString (ifcfg, "DHCP_CLIENT_ID", value);
|
||||||
svSetValueString (ifcfg, "DHCP_CLIENT_ID", value);
|
|
||||||
|
|
||||||
timeout = nm_setting_ip_config_get_dhcp_timeout (s_ip4);
|
timeout = nm_setting_ip_config_get_dhcp_timeout (s_ip4);
|
||||||
tmp = timeout ? g_strdup_printf ("%d", timeout) : NULL;
|
tmp = timeout ? g_strdup_printf ("%d", timeout) : NULL;
|
||||||
svSetValueString (ifcfg, "IPV4_DHCP_TIMEOUT", tmp);
|
svSetValueString (ifcfg, "IPV4_DHCP_TIMEOUT", tmp);
|
||||||
g_free (tmp);
|
g_free (tmp);
|
||||||
}
|
|
||||||
|
|
||||||
svSetValueBoolean (ifcfg, "IPV4_FAILURE_FATAL", !nm_setting_ip_config_get_may_fail (s_ip4));
|
svSetValueBoolean (ifcfg, "IPV4_FAILURE_FATAL", !nm_setting_ip_config_get_may_fail (s_ip4));
|
||||||
|
|
||||||
@@ -2493,13 +2487,9 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||||||
svSetValueString (ifcfg, "IPV6_AUTOCONF", "yes");
|
svSetValueString (ifcfg, "IPV6_AUTOCONF", "yes");
|
||||||
svUnsetValue (ifcfg, "DHCPV6C");
|
svUnsetValue (ifcfg, "DHCPV6C");
|
||||||
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
||||||
const char *hostname;
|
|
||||||
svSetValueString (ifcfg, "IPV6INIT", "yes");
|
svSetValueString (ifcfg, "IPV6INIT", "yes");
|
||||||
svSetValueString (ifcfg, "IPV6_AUTOCONF", "no");
|
svSetValueString (ifcfg, "IPV6_AUTOCONF", "no");
|
||||||
svSetValueString (ifcfg, "DHCPV6C", "yes");
|
svSetValueString (ifcfg, "DHCPV6C", "yes");
|
||||||
hostname = nm_setting_ip_config_get_dhcp_hostname (s_ip6);
|
|
||||||
if (hostname)
|
|
||||||
svSetValueString (ifcfg, "DHCP_HOSTNAME", hostname);
|
|
||||||
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) {
|
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) {
|
||||||
svSetValueString (ifcfg, "IPV6INIT", "yes");
|
svSetValueString (ifcfg, "IPV6INIT", "yes");
|
||||||
svSetValueString (ifcfg, "IPV6_AUTOCONF", "no");
|
svSetValueString (ifcfg, "IPV6_AUTOCONF", "no");
|
||||||
@@ -2514,6 +2504,10 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||||||
svUnsetValue (ifcfg, "DHCPV6C");
|
svUnsetValue (ifcfg, "DHCPV6C");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hostname = nm_setting_ip_config_get_dhcp_hostname (s_ip6);
|
||||||
|
if (hostname)
|
||||||
|
svSetValueString (ifcfg, "DHCP_HOSTNAME", hostname);
|
||||||
|
|
||||||
/* Write out IP addresses */
|
/* Write out IP addresses */
|
||||||
num = nm_setting_ip_config_get_num_addresses (s_ip6);
|
num = nm_setting_ip_config_get_num_addresses (s_ip6);
|
||||||
ip_str1 = g_string_new (NULL);
|
ip_str1 = g_string_new (NULL);
|
||||||
@@ -2577,15 +2571,11 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||||||
else
|
else
|
||||||
svSetValueString (ifcfg, "IPV6_DEFROUTE", "yes");
|
svSetValueString (ifcfg, "IPV6_DEFROUTE", "yes");
|
||||||
|
|
||||||
svUnsetValue (ifcfg, "IPV6_PEERDNS");
|
svSetValueString (ifcfg, "IPV6_PEERDNS",
|
||||||
svUnsetValue (ifcfg, "IPV6_PEERROUTES");
|
nm_setting_ip_config_get_ignore_auto_dns (s_ip6) ? "no" : "yes");
|
||||||
if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_AUTO)) {
|
|
||||||
svSetValueString (ifcfg, "IPV6_PEERDNS",
|
|
||||||
nm_setting_ip_config_get_ignore_auto_dns (s_ip6) ? "no" : "yes");
|
|
||||||
|
|
||||||
svSetValueString (ifcfg, "IPV6_PEERROUTES",
|
svSetValueString (ifcfg, "IPV6_PEERROUTES",
|
||||||
nm_setting_ip_config_get_ignore_auto_routes (s_ip6) ? "no" : "yes");
|
nm_setting_ip_config_get_ignore_auto_routes (s_ip6) ? "no" : "yes");
|
||||||
}
|
|
||||||
|
|
||||||
svSetValueString (ifcfg, "IPV6_FAILURE_FATAL",
|
svSetValueString (ifcfg, "IPV6_FAILURE_FATAL",
|
||||||
nm_setting_ip_config_get_may_fail (s_ip6) ? "no" : "yes");
|
nm_setting_ip_config_get_may_fail (s_ip6) ? "no" : "yes");
|
||||||
|
Reference in New Issue
Block a user