Re: Merging rc.d/network_ipv6 into rc.d/netif



On Thu, Apr 05, 2007 at 06:46:44PM +0300, Mike Makonnen wrote:
On Tue, Apr 03, 2007 at 06:14:23PM -0500, Brooks Davis wrote:
- You can now do things like:
# Start/Stop IPv6 on all interfaces
/etc/rc.d/netif (start|stop) ip6
# Start/Stop IPv6 only on interface rl0
/etc/rc.d/netif (start|stop) rl0 ip6
# Do IPv6 options processing
/etc/rc.d/routing options ip6

I think I'd prefer (start|stop)(4|6). I not sure what the value of the
separation is, but don't care much.

I'll post a new patch with this change. Now that its been mentioned
I agree, it's a better thatn what I came up with.

Overview of the changes in src/etc
-----------------------------------
- In order to differentiate between v4 and v6 configuration directives some
knobs in rc.conf(5)have been renamed with an ipv4_ prefix:
network_interfaces

I fell fairly strongly that ipv6_network_interfaces and
network_interfaces are a mistake and that we should remove them
rather than propagating them. The way I'd prefer to see interfaces
that are exceptional with regard to address families specified with
(|NO)IPV(4|6) variables in ifconfig_<interface> or simply by not
having ipv(4|6)_ifconfig_interface variables (that it's a little more
complicated than that with ipv4_addrs_<interface> around, but I think
the concept holds).

I agree completely. However, when this hits the tree I don't want peoples
configurations to break (especially since I would like to see this in
6-stable if we can aggree on it). Also, since this feature is already
deprecated in the man page I think we can provide silent support for
it without explicitly advertising it untill people have had a suffient
transition period.

OK, do you think it would be possible to kill off

ifconfig_DEFAULT
ifconfig_<interface>

ipv4 versions of these make sense, but at least ifconfig_<interface>
should continue to exist. For example both setting the mac address and
starting WPA via the WPA keyword should not work in any address specific
version because that would be a layering violation.


Ok. That should be doable, but it's probably going to make
configuration decisions more complicated. For example, do we ignore
the WPA in the ipv(4|6)_* variables or does it's presence in any
of the variables enable it?

I'd ignore WPA outside of ifconfig_<interface>. I think we'll want DHCP
to work there and under ipv4_ifconfig_<interface>, but not IPv6. That
will change if/when a dhcp6 client arrives, but who knows when that will
happen.

I would
especially like feedback from folks more familiar with IPv6. One
gotcha I've noticed is that if you boot with ipv6_enable turned
off, then try to start IPv6 on an interface later on, it doesn't
work because none of the interfaces (except lo0) has a link-local
address (see rc.d/auto_linklocal). How can we fix this? Also, I
would appreciate feedback on how stopping IPv6 on an interface
should be handled. In rc.d/network_ipv6 it was handled at all.
Currently, it goes through and deletes all
IPv6 addresses on the interface.

I'd say if ipv6_enable=NO, attempting to configure IPv6 on an interface
should fail. If they turn it on, I'm not sure what the best approach
is. Not worrying about it may well be most appropriate.

I don't agree. I would expect that if I enable IPv6 in rc.conf I wouldn't
have to reboot the machine to get my network interfaces configured
properly.

That would be nice if we can make it work. I'm just not sure how much
effort it's worth to make all the edge cases work.

-- Brooks

Attachment: pgpsgI5nKRq8U.pgp
Description: PGP signature



Relevant Pages