Re: [PATCH] Don't allow Managed DHCPv6 to short-circuit SLAAC
- From: Dan Williams <dcbw redhat com>
- To: Tore Anderson <tore fud no>
- Cc: networkmanager-list gnome org
- Subject: Re: [PATCH] Don't allow Managed DHCPv6 to short-circuit SLAAC
- Date: Fri, 26 Aug 2011 15:23:36 -0500
On Thu, 2011-08-11 at 00:10 +0200, Tore Anderson wrote:
> NetworkManager currently operates on the assumption that Managed
> (Stateful) DHCPv6 preempts SLAAC. This is not the case; Managed DHCPv6
> and SLAAC are completely orthogonal. My consumer-grade xDSL CPE (a ZyXEL
> P-2812HNU-F3) does both at the same time by default, which is a
> necessity to trigger the following bug:
Given the discussion from this week about SLAAC vs. the A=1 flag, is
this patch independent of that or should we wait for additional changes
in behavior?
Thanks!
Dan
> Currently NetworkManager will abandon SLAAC activation if it sees that
> Managed DHCPv6 is requested by the RA. As far as I have been able to
> understand, this makes NetworkManager overlook the kernel-configured
> SLAAC address, which in turn makes sync_addresses() remove it again at
> a later stage, as it's being considered as an "unwanted alien" of some
> sort.
>
> However, right after the device activation has finished,
> nm_ip6_device_sync_from_netlink() is run, which notices that the SLAAC
> address has vanished, and figures (incorrectly) that it must have been
> because the Valid Lifetime has reached zero and that the kernel has
> therefore removed it. In response, nm_ip6_device_sync_from_netlink()
> deactivates the entire interface, and the activation process starts over
> again. Given enough attempts (more than a dozen most of the time, and
> sometimes more than fifty has been necessary) NM will eventually manage
> to permanently activate the interface, though I don't know exactly what
> conditions are necessary for the activation to be a lasting success.
>
> This patch fixes the problem completely for me, the device is now being
> successfully activated on the first attempt every single time. It simply
> removes the flawed assumption that Managed DHCPv6 short-circuits SLAAC,
> and makes NM complete the SLAAC process regardless of Managed DHCPv6
> being requested or not.
>
> See: https://bugzilla.redhat.com/show_bug.cgi?id=720188
>
> diff --git a/src/ip6-manager/nm-ip6-manager.c b/src/ip6-manager/nm-ip6-manager.c
> index 4a5dee5..a4f8c9a 100644
> --- a/src/ip6-manager/nm-ip6-manager.c
> +++ b/src/ip6-manager/nm-ip6-manager.c
> @@ -474,12 +474,7 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
> }
>
> if (!device->addrconf_complete) {
> - /* Managed mode (ie DHCP only) short-circuits automatic addrconf, so
> - * we don't bother waiting for the device's target state to be reached
> - * when the RA requests managed mode.
> - */
> - if ( (device->state >= device->target_state)
> - || (dhcp_opts == IP6_DHCP_OPT_MANAGED)) {
> + if (device->state >= device->target_state) {
> /* device->finish_addrconf_id may currently be a timeout
> * rather than an idle, so we remove the existing source.
> */
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]