conf/63700: Double configuration of cloned_interfaces if
network_interfaces=auto
Yar Tikhiy
yar at comp.chem.msu.su
Wed Mar 3 09:30:16 PST 2004
>Number: 63700
>Category: conf
>Synopsis: Double configuration of cloned_interfaces if network_interfaces=auto
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 03 09:30:16 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Yar Tikhiy
>Release: FreeBSD 5.2-CURRENT i386
>Organization:
Moscow State University
>Environment:
System: FreeBSD stylish.chem.msu.su 5.2-CURRENT FreeBSD 5.2-CURRENT #1: Wed Mar 3 17:07:22 MSK 2004 yar at stylish.chem.msu.su:/usr/obj/usr/src/sys/STYLISH i386
>Description:
If the rc.conf(5) variable network_interfaces is set to "auto",
its default value, interfaces listed in cloned_interfaces will
be doubly configured and their post-configuration status will be
displayed twice.
That is because the rc function network.subr:list_net_interfaces()
doesn't check if the interfaces listed in cloned_interfaces have
already been created--the function just concatenates the value of
cloned_interfaces to output from `ifconfig -l`, which may include
the names of the cloned interfaces, too.
>How-To-Repeat:
Leave out network_interfaces from rc.conf, thus depending on
the rc system to figure out the list of existing interfaces.
In addition, specify some interfaces to clone through
cloned_interfaces. Observe the results to doubly configure
the latter interfaces in rc(8) output.
For example:
%%% rc.conf snippet %%%
### network_interfaces="lo0 fxp0"
cloned_interfaces="vlan99"
ifconfig_fxp0="inet 158.250.XX.XX netmask 255.255.255.224"
ifconfig_vlan99="inet 192.168.XX.XX netmask 255.255.255.0 vlan 99 vlandev fxp1"
%%% rc(8) output %%%
vlan99: bpf attached
ifconfig: SIOCSETVLAN: Device busy
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 158.250.32.111 netmask 0xffffffe0 broadcast 158.250.32.127
ether 00:04:ac:98:a7:b9
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
vlan99: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 169.254.1.1 netmask 0xffff0000 broadcast 169.254.255.255
ether 00:90:27:a6:97:e9
media: Ethernet autoselect (none)
status: no carrier
vlan: 99 parent interface: fxp1
vlan99: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 169.254.1.1 netmask 0xffff0000 broadcast 169.254.255.255
ether 00:90:27:a6:97:e9
media: Ethernet autoselect (none)
status: no carrier
vlan: 99 parent interface: fxp1
%%% end of example %%%
Things to note are:
(1) "SIOCSETVLAN: Device busy" from ifconfig when it tried
to set VLAN parameters on vlan99 for the second time;
(2) vlan99 appearing twice in the status display.
>Fix:
I can see a few ways to address this issue:
(1) list_net_interfaces() could eliminate duplicates from
the list of interface names to return.
(2) The automatic list of interfaces could be saved early,
before cloning.
(3) A flag variable could be introduced to tell whether cloned
interfaced have been created.
Each route is easy to implement, but I'm afraid I don't know
the internals of rcNG well enough to choose the best one.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list