Features/NetworkManagerIPv6

= NetworkManagerIPv6 =

Summary
Add full IPv6 support to NetworkManager.

Owner

 * Name: Dan Winship
 * email: 

Current status

 * Targeted release: Fedora 12
 * Last updated: July 28, 2009
 * Percentage of completion: 100%

Detailed Description
NetworkManager already has the required Settings defined in its specification to handle IPv6, and the validation of those settings is mostly complete. The following tasks need to be completed, though for most of them, the existing IPv4 code can be reused extensively:


 * nm-connection-editor UI page for IPv6
 * nm-connection-editor UI dialog for custom IPv6 routes
 * NetworkManager support for spawning dhclient6 and retrieving options (for sites that use DHCPv6)
 * Make dhcpv6-client support running a script with options instead of configuring the interface itself
 * Add/remove addresses and routes using libnl
 * RDNSS support

Benefit to Fedora
Many installations already use IPv6, and we want IPv6 support back in Anaconda. There's no reason NM shouldn't support IPv6 fully. It will also remove one more use-case for keeping system-config-network.

Scope
At this time, only NetworkManager, nm-applet, and nm-connection-editor need to be updated to support IPv6. IPv6 will remain off in new connections, unless specifically turned on by the user. NetworkManager will gain a requirement on dhclient6.

How To Test
No special hardware should be required, but an existing IPv6 network setup is. There are a few autoconfiguration methods available with IPv6; the router sends advertisements which can contain limited configuration information. Alternatively, DHCP can also be performed to either (a) acquire a lease, or (b) only return information like DNS servers, etc. To test the DHCP functionality, obviously the test network would require a DHCPv6 server.

Once the network infrastructure is in place, configure a connection (either via ifcfg files, or nm-connection-editor) and test that NetworkManager sets the connection up correctly, including assigning the default route to the interface, that the router is reachable with a ping, etc.

User Experience
For non GUI users, and those that use ifcfg files directly, NetworkMangaer should bring up the interface with IPv6 connectivity correctly at boot. No modification of the ifcfg files should be necessary.

For GUI users, a new IPv6 tab will appear in the connection editor which will allow for control if the IPv6 settings similar to control of IPv4 settings already. After selecting the configuration method ("auto" is the default, which will honor router-advertisements and attempt to retrieve DNS information with DHCPv6 information-only mode) and entering any additional settings they may wish to use, then saving the connection, activating that connection should configure the interface fully with IPv6 as requested by the user.

Dependencies

 * dhcpv6-client

Contingency Plan
We turn off IPv6 support like it already is by hiding the IPv6 functions from the libnm-util and libnm-glib API/ABI, and turn off any IPv6 code inside NetworkManager.

Documentation
The NetworkManager configuration specification will get updated with the right settings values when those bits get added. In the mean time, the general IPv6 API is contained in libnm-util/nm-setting-ip6-config.c and .h.

Release Notes
NetworkManager has been enhanced to fully support IPv6.

Comments and Discussion

 * See Talk:Features/NetworkManagerIPv6