On Fri, 2011-07-29 at 18:24 -0400, Stéphane Graber wrote: > On 07/29/2011 05:54 PM, Dan Williams wrote: > > On Thu, 2011-07-28 at 10:23 -0400, Stéphane Graber wrote: > >> Hello, > >> > >> As I'm not subscribed to this mailing-list, I'd appreciate it if > >> you could Cc me on your replies. Thanks > >> > >> > >> I've recently been spending quite a bit of time testing Network > >> Manager's IPv6 support on Ubuntu as part of our ongoing effort of > >> getting full IPv6 support for Oneiric. > >> > >> It's really looking good and Network Manager does a great job of > >> handling all the possible use cases I have, except one small > >> detail. > >> > >> I noticed yesterday that Network Manager uses a different DHCP > >> lease file for each connection. I can understand why it's been done > >> this way for DHCPv4 (makes it more readable and easier to cleanup) > >> but that's unfortunately breaking DHCPv6 support. > > > > Thanks for investigating this. > > > >> > >> You're probably aware that with DHCPv6, "host" definitions on the > >> server side are no longer tied to a MAC address but instead to a > >> DUID. This DUID is defined in RFC 3315, section 9. > >> http://www.ietf.org/rfc/rfc3315.txt > >> > >> Quoting part of this specific section: The DUID is carried in an > >> option because it may be variable length and because it is not > >> required in all DHCP messages. The DUID is designed to be unique > >> across all DHCP clients and servers, and stable for any specific > >> client or server - that is, the DUID used by a client or server > >> SHOULD NOT change over time if at all possible; for example, a > >> device's DUID should not change as a result of a change in the > >> device's network hardware. > >> > >> The way the ISC dhclient works, it's looking for a default-duid > >> field in its lease file. For example, on my machine I currently > >> have: default-duid > >> "\000\001\000\001\025\303}\370\000#\024\243\331\244"; > >> > >> This is fine as long as dhclient always uses the same lease file > >> but it's sadly not the current behavior when used with Network > >> Manager. > >> > >> The current behavior's IPv4 equivalent would be a changing MAC > >> address for every single network defined in Network Manager, which > >> is really problematic for system administrators who need to do > >> per-host configuration with DHCPv6. > >> > >> > >> I'd highly recommend Network Manager either uses > >> /var/lib/dhcp/dhclient6.leases as its lease file or if you > >> absolutely want to keep a separate lease file per connection, then > >> use the following algorithm: > >> > >> 1) Check if /var/lib/dhcp/dhclient6.leases exists 1a) If it does, > >> grab the DUID from it. 1b) If it doesn't, generate a new DUID and > >> write it to /var/lib/dhcp/dhclient6.leases 2) Write that DUID to > >> your per-connection lease file prior to starting dhclient > > > > This is probably the best course of action; if there's already a > > leasefile but that leasefile doesn't have a default DUID, then we > > add the default DUID to the top of the leasefile. If there isnt' a > > leasefile, then we create a new leasefile with one line (for the > > default-duid) and pass that file to dhclient like we normally do. > > > > If /var/lib/dhcp/dhclient6.leases doesn't exist (it doesn't on any of > > my systems) then we should probably scan existing leasefiles and grab > > the first default duid that we find. That could be a performance > > issue though, so if possible the code should only do this *once* (in > > nm-dhcp-dhclient.c) and store the value in a global 'static char *' > > variable so that it can be re-used from other instances of > > NMDHCPDhclient without having to be re-read. > > My suggestion in this case would be to instead create > /var/lib/dhcp/dhclient6.leases containing only the duid. > > This way you shouldn't have to scan through all your .leases file and > someone manually starting dhclient6 will still get the same duid.
Good point. Dan > > > > Anyone want to take a stab at the patch? Should be pretty simple. > > Testcases earn you a bonus :) > > > > Dan > > _______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
