mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-16 06:40:41 +00:00
Revert "ip6: remove standalone DHCP method since DHCPv6 can't provide gateways" (rh #612445)
This reverts commit a729d2f649
.
Turns out this is a valid IP config method that some sites use.
This commit is contained in:
parent
af2be00b8c
commit
bebf8d48b0
|
@ -471,7 +471,8 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
|
|||
NM_SETTING_IP6_CONFIG_ADDRESSES);
|
||||
return FALSE;
|
||||
}
|
||||
} else if (!strcmp (priv->method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)) {
|
||||
} else if ( !strcmp (priv->method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
|
||||
|| !strcmp (priv->method, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
||||
/* nothing to do */
|
||||
} else {
|
||||
g_set_error (error,
|
||||
|
@ -612,30 +613,34 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
|
|||
* NMSettingIP6Config:method:
|
||||
*
|
||||
* IPv6 configuration method. If 'auto' is specified then the appropriate
|
||||
* automatic method (DHCP, PPP, router advertisement, etc) is used for the
|
||||
* interface and most other properties can be left unset. If 'link-local'
|
||||
* is specified, then an IPv6 link-local address will be assigned to the
|
||||
* interface. If 'manual' is specified, static IP addressing is used and
|
||||
* at least one IP address must be given in the 'addresses' property. If
|
||||
* 'ignored' is specified, IPv6 configuration is not done. This property
|
||||
* must be set. NOTE: the 'shared' method are not yet supported.
|
||||
* automatic method (DHCP, PPP, advertisement, etc) is used for the
|
||||
* interface and most other properties can be left unset. To force the use
|
||||
* of DHCP only, specify 'dhcp'; this method is only valid for ethernet-
|
||||
* based hardware. If 'link-local' is specified, then an IPv6 link-local
|
||||
* address will be assigned to the interface. If 'manual' is specified,
|
||||
* static IP addressing is used and at least one IP address must be given
|
||||
* in the 'addresses' property. If 'ignored' is specified, IPv6
|
||||
* configuration is not done. This property must be set. NOTE: the 'shared'
|
||||
* method are not yet supported.
|
||||
**/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_METHOD,
|
||||
g_param_spec_string (NM_SETTING_IP6_CONFIG_METHOD,
|
||||
"Method",
|
||||
"IPv6 configuration method. If 'auto' is specified "
|
||||
"then the appropriate automatic method (DHCP, PPP, "
|
||||
"router advertisement, etc) is used for the "
|
||||
"interface and most other properties can be left "
|
||||
"unset. If 'link-local' is specified, then an "
|
||||
"IPv6 link-local address will be assigned to the "
|
||||
"interface. If 'manual' is specified, static IP "
|
||||
"addressing is used and at least one IP address "
|
||||
"must be given in the 'addresses' property. If "
|
||||
"'ignored' is specified, IPv6 configuration is not "
|
||||
"done. This property must be set. NOTE: the "
|
||||
"'shared' method are not yet supported.",
|
||||
"then the appropriate automatic method (PPP, router "
|
||||
"advertisement, etc) is used for the device and "
|
||||
"most other properties can be left unset. To force "
|
||||
"the use of DHCP only, specify 'dhcp'; this method "
|
||||
"is only valid for ethernet-based hardware. If "
|
||||
"'link-local' is specified, then an IPv6 link-local "
|
||||
"address will be assigned to the interface. If "
|
||||
"'manual' is specified, static IP addressing is "
|
||||
"used and at least one IP address must be given in "
|
||||
" the 'addresses' property. If 'ignored' is "
|
||||
"specified, IPv6 configuration is not done. This "
|
||||
"property must be set. NOTE: the 'shared' method"
|
||||
"is not yet supported.",
|
||||
NULL,
|
||||
G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
||||
|
@ -761,26 +766,26 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
|
|||
/**
|
||||
* NMSettingIP6Config:ignore-auto-routes:
|
||||
*
|
||||
* When the method is set to 'auto' and this property is set to TRUE,
|
||||
* automatically configured routes are ignored and only routes specified
|
||||
* in #NMSettingIP6Config:routes, if any, are used.
|
||||
* When the method is set to 'auto' or 'dhcp' and this property is set to
|
||||
* TRUE, automatically configured routes are ignored and only routes
|
||||
* specified in #NMSettingIP6Config:routes, if any, are used.
|
||||
**/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_IGNORE_AUTO_ROUTES,
|
||||
g_param_spec_boolean (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES,
|
||||
"Ignore automatic routes",
|
||||
"When the method is set to 'auto' and this property "
|
||||
"is set to TRUE, automatically configured routes are "
|
||||
"ignored and only routes specified in the 'routes' "
|
||||
"property, if any, are used.",
|
||||
"When the method is set to 'auto' or 'dhcp' and this "
|
||||
"property is set to TRUE, automatically configured "
|
||||
"routes are ignored and only routes specified in the "
|
||||
"'routes' property, if any, are used.",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
||||
/**
|
||||
* NMSettingIP6Config:ignore-auto-dns:
|
||||
*
|
||||
* When the method is set to 'auto' and this property is set to TRUE,
|
||||
* automatically configured nameservers and search domains are ignored
|
||||
* When the method is set to 'auto' or 'dhcp' and this property is set to
|
||||
* TRUE, automatically configured nameservers and search domains are ignored
|
||||
* and only nameservers and search domains specified in
|
||||
* #NMSettingIP6Config:dns and #NMSettingIP6Config:dns-search, if any, are
|
||||
* used.
|
||||
|
@ -789,11 +794,11 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
|
|||
(object_class, PROP_IGNORE_AUTO_DNS,
|
||||
g_param_spec_boolean (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS,
|
||||
"Ignore DHCPv6/RDNSS DNS",
|
||||
"When the method is set to 'auto' and this property "
|
||||
"is set to TRUE, automatically configured nameservers "
|
||||
"and search domains are ignored and only nameservers "
|
||||
"and search domains specified in 'dns' and 'dns-search' "
|
||||
"properties, if any, are used.",
|
||||
"When the method is set to 'auto' or 'dhcp' and this "
|
||||
"property is set to TRUE, automatically configured "
|
||||
"nameservers and search domains are ignored and only "
|
||||
"nameservers and search domains specified in the 'dns' "
|
||||
"and 'dns-search' properties, if any, are used.",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ GQuark nm_setting_ip6_config_error_quark (void);
|
|||
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_IGNORE "ignore"
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_AUTO "auto"
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_DHCP "dhcp"
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL "link-local"
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_MANUAL "manual"
|
||||
#define NM_SETTING_IP6_CONFIG_METHOD_SHARED "shared"
|
||||
|
|
|
@ -1656,6 +1656,13 @@ real_act_stage3_ip6_config_start (NMDevice *self, NMDeviceStateReason *reason)
|
|||
}
|
||||
nm_ip6_manager_begin_addrconf (priv->ip6_manager, nm_device_get_ip_ifindex (self));
|
||||
ret = NM_ACT_STAGE_RETURN_POSTPONE;
|
||||
} else if (ip6_method_matches (connection, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
||||
/* Router advertisements shouldn't be used in pure DHCP mode */
|
||||
if (priv->ip6_accept_ra_path)
|
||||
nm_utils_do_sysctl (priv->ip6_accept_ra_path, "0\n");
|
||||
|
||||
priv->dhcp6_mode = IP6_DHCP_OPT_MANAGED;
|
||||
ret = dhcp6_start (self, connection, priv->dhcp6_mode, reason);
|
||||
} else if (ip6_method_matches (connection, NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) {
|
||||
/* reset the saved RA value when ipv6 is ignored */
|
||||
if (priv->ip6_accept_ra_path) {
|
||||
|
@ -2109,7 +2116,8 @@ real_act_stage4_get_ip6_config (NMDevice *self,
|
|||
*reason = NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
} else if (ip6_method_matches (connection, NM_SETTING_IP6_CONFIG_METHOD_DHCP))
|
||||
g_assert (priv->dhcp6_client); /* sanity check */
|
||||
|
||||
/* Autoconf might have triggered DHCPv6 too */
|
||||
if (priv->dhcp6_client) {
|
||||
|
|
|
@ -1389,7 +1389,7 @@ make_ip6_setting (shvarFile *ifcfg,
|
|||
char *value = NULL;
|
||||
char *str_value;
|
||||
char *route6_path = NULL;
|
||||
gboolean bool_value, ipv6forwarding, ipv6_autoconf;
|
||||
gboolean bool_value, ipv6forwarding, ipv6_autoconf, dhcp6 = FALSE;
|
||||
char *method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
|
||||
guint32 i;
|
||||
shvarFile *network_ifcfg;
|
||||
|
@ -1466,9 +1466,12 @@ make_ip6_setting (shvarFile *ifcfg,
|
|||
/* Find out method property */
|
||||
ipv6forwarding = svTrueValue (ifcfg, "IPV6FORWARDING", FALSE);
|
||||
ipv6_autoconf = svTrueValue (ifcfg, "IPV6_AUTOCONF", !ipv6forwarding);
|
||||
dhcp6 = svTrueValue (ifcfg, "DHCPV6C", FALSE);
|
||||
|
||||
if (ipv6_autoconf)
|
||||
method = NM_SETTING_IP6_CONFIG_METHOD_AUTO;
|
||||
else if (dhcp6)
|
||||
method = NM_SETTING_IP6_CONFIG_METHOD_DHCP;
|
||||
else {
|
||||
/* IPV6_AUTOCONF=no and no IPv6 address -> method 'link-local' */
|
||||
str_value = svGetValue (ifcfg, "IPV6ADDR", FALSE);
|
||||
|
|
|
@ -1307,6 +1307,10 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||
svSetValue (ifcfg, "IPV6INIT", "yes", FALSE);
|
||||
svSetValue (ifcfg, "IPV6_AUTOCONF", "yes", FALSE);
|
||||
svSetValue (ifcfg, "DHCPV6C", NULL, FALSE);
|
||||
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) {
|
||||
svSetValue (ifcfg, "IPV6INIT", "yes", FALSE);
|
||||
svSetValue (ifcfg, "IPV6_AUTOCONF", "no", FALSE);
|
||||
svSetValue (ifcfg, "DHCPV6C", "yes", FALSE);
|
||||
} else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) {
|
||||
svSetValue (ifcfg, "IPV6INIT", "yes", FALSE);
|
||||
svSetValue (ifcfg, "IPV6_AUTOCONF", "no", FALSE);
|
||||
|
|
Loading…
Reference in a new issue