Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 03 Apr 2010 02:45:02 -0700
From:      Doug Barton <dougb@FreeBSD.org>
To:        freebsd-current@FreeBSD.org
Subject:   ipv6_enable
Message-ID:  <4BB70E1E.3090102@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

hrs@ has been doing some great work on bringing IPv6 support up to par
with IPv4, and deserves a lot of credit for that work. Included in those
changes were changes to the traditional semantics of how ipv6_enable
works. That variable was previously overloaded to allow general IPv6
configuration support, rtsol autoconfiguration, and preference of IPv6
vs. IPv4. The ipv6_prefer variable was introduced to handle the first
and third functions, and ipv6_enable was deprecated.

In previous discussions on various lists (including this one) there
seems to have been general consensus on the following ideas:
1. There should be an ipv6_enable knob to easily turn IPv6 configuration
on and off when INET6 is in the kernel. I think the value of this kind
of knob is obvious, but I'd be happy to elaborate if that is necessary.
2. ipv6_network_interfaces should be set to AUTO, the same way that it
is for IPv4.
3. Each IPv6 interface (other than lo0) should be configured with rtsol
by default, but manual configuration should still be possible.

The first question is, are the defaults listed above reasonable? I'd
like to see some sort of consensus on this before we proceed with any
changes.

Next, I have a patch that implements the defaults suggested above that I
want to offer for testing and review:
http://people.freebsd.org/~dougb/v6-enable.diff

The patch has several features in addition to changing the defaults. The
network.subr changes in particular are difficult to visualize via the
diff, it's probably easier to apply it in a test tree and review it that
way.

1. Clean up and optimize the following functions:
ifconfig_up (the ipv6 elements)
noafif
ipv6if
ipv6_autoconfif
The general concepts of the cleanups were to move the "easy" tests
earlier in the functions, consolidate duplicate code, and of course to
make things work with the above-listed defaults.

2. Convert noafif() to use is_wired_interface() instead of listing
wireless interfaces explicitly.

3. In rc.d/netoptions, add code for an ipv6_privacy option to use RFC
4193 style privacy addresses (this is what windows does by default, FYI).

4. In /etc/defaults/rc.conf:
Add ipv6_enable back, default to off. If a user has INET6 in the kernel
(which it does by default) no external interfaces will be configured
unless the user enables it. The lo0 interface is always configured if
INET6 is in the kernel.

Set ipv6_network_interfaces to AUTO.

Switch ipv6_prefer to YES. If ipv6_enable is not set this will have no
effect.

5. Document all of this in rc.conf.5.


Enjoy,

Doug

- -- 

	... and that's just a little bit of history repeating.
			-- Propellerheads

	Improve the effectiveness of your Internet presence with
	a domain name makeover!    http://SupersetSolutions.com/

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEAREDAAYFAku3Dh4ACgkQyIakK9Wy8Pur8ACg9du7VjeEy5nxfeP1/Ij6RDQc
nqgAoLfOdoOGY48MzW7OOZMWRsBKMe+g
=S8zx
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BB70E1E.3090102>