[trouble] restart network & vlan`s interface (if_vlan /
conf/63700 redux)
Brian A. Seklecki
bseklecki at collaborativefusion.com
Fri Jun 4 19:43:06 UTC 2010
[Originally from freebsd-hackers@ / Feb 2008]
All:
pf conf/63700 got the ball rolling on fixing cloned/VLAN
interface management with rc.d/netif, but problems still remain.
For example, adding an alias to a VLAN and running:
/etc/rc.d/netif restart && /etc/rc.d/routing restart
is a failure.
Take the following rc.conf(4) config:
hostname="sexdrugsandunix"
cloned_interfaces="vlan14"
ifconfig_em0="up media 100baseTX mediaopt full-duplex -tso"
ifconfig_vlan14="inet 1.2.3.4 netmask 255.255.255.128 vlan 14 vlandev
em0 up"
ifconfig_vlan14_alias0="inet 1.2.3.5 netmask 255.255.255.255"
Change it to include a second alias without a reboot, instead run
'rc.d/netif restart', as works on a physical interface:
hostname="sexdrugsandunix"
cloned_interfaces="vlan14"
ifconfig_em0="up media 100baseTX mediaopt full-duplex -tso"
ifconfig_vlan14="inet 1.2.3.4 netmask 255.255.255.128 vlan 14 vlandev
em0 up"
ifconfig_vlan14_alias0="inet 1.2.3.5 netmask 255.255.255.255"
ifconfig_vlan14_alias1="inet 1.2.3.6 netmask 255.255.255.255"
The result will be:
% ifconfig vlan14
[bseklecki at sureshot ~]$ ifconfig vlan14
vlan14: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
inet 1.2.3.6 netmask 0xffffffff broadcast 192.168.158.152
inet 1.2.3.5 netmask 0xffffffff broadcast 192.168.158.255
1) I'm not sure where the .152 broadcast comes from. ?!
2) The new _alias1= data is now in the primary IP slot
3) The primary IP is lost, there is no routable IP
4) The original _alias0= data is now in the 1st alias slot
5) rc.d/routing fails because the interface lacks a routable
IP with a valid netmask/broadcast combination.
---------------------------
Problem #1: rc.d/netif::network_stop()
The core problem is that rc.d/netif::network_stop() never calls
network.subr::clone_down() in the same way that
rc.d/netif::network_start() calls network.subr::cloned_up()
I'd speculate that this is a design decision not to destroy
network interfaces that certain userland daemons (DHCP, RTADVD,
BPF) may be strictly bound to; I disagree.
Even if you explicitly pass your VLAN interface to rc.d/netif,
a stop doesn't call 'ifconfig VL destory', and, when 'rc.d/netif start'
is called later, SIOCSETVLAN results.
jail-host-80:/home/bseklecki% sudo ifconfig vlan666 destroy
jail-host-80:/home/bseklecki% sudo ifconfig vlan666
create inet 1.2.3.4 netmask 255.255.255.0 vlan 666 vlandev em0
jail-host-80:/home/bseklecki% sudo ifconfig vlan666
create inet 1.2.3.4 netmask 255.255.255.0 vlan 666 vlandev em0
ifconfig: create: bad value
A simple rc.d/network_stop() patch could fix this problem if
we can avoid bikeshedding.
------------------------------------------
Problem #2: VLAN interface data structures maintain configuration
data after being destroyed, *SOMETIMES*
%ifconfig vlan666
vlan666: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
options=3<RXCSUM,TXCSUM>
ether 00:0c:29:a1:4b:9d
inet 192.168.15.54 netmask 0xffffff00 broadcast 192.168.15.255
media: Ethernet 1000baseT <full-duplex>
status: active
vlan: 666 parent interface: em0
%sudo ifconfig vlan666 destroy
%sudo ifconfig vlan666 create
%ifconfig vlan666
vlan666: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
options=3<RXCSUM,TXCSUM>
ether 00:0c:29:a1:4b:9d
!!**?>> inet 192.168.15.54 netmask 0xffffff00 broadcast 192.168.15.255
media: Ethernet 1000baseT <full-duplex>
status: active
vlan: 666 parent interface: em0
Now, that's something you don't see very day!!
----------------------------------------------------
NOTE: I can't get that persistent IP data problem to happen
consistently, but its highly reproducible.
I also have no idea on the fixes, I'll check this weekend, but I have a
work-around.
To avoid destroying your routing table after adding an alias to a VLAN
interface in rc.conf(5), simply run:
$ sudo /etc/rc.d/netif [VLAN####] start
DO NOT RESTART, and you should be okay.
~BAS
References:
http://lists.freebsd.org/pipermail/freebsd-hackers/2008-February/023440.html
http://www.freebsd.org/cgi/query-pr.cgi?pr=63700&cat= (Circa 2004)
http://lists.freebsd.org/pipermail/freebsd-net/2007-September/015447.html
--
Brian A. Seklecki <bseklecki at collaborativefusion.com>
Collaborative Fusion, Inc.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20100604/be5db369/attachment.pgp
More information about the freebsd-net
mailing list