svn commit: r202167 - in stable/8: etc etc/defaults share/man/man5
John Baldwin
jhb at FreeBSD.org
Tue Jan 12 19:55:07 UTC 2010
Author: jhb
Date: Tue Jan 12 19:55:07 2010
New Revision: 202167
URL: http://svn.freebsd.org/changeset/base/202167
Log:
MFC 201215:
Add support for configuring vlan(4) interfaces as child devices similar to
wlan(4) interfaces. vlan(4) interfaces are listed via a new 'vlans_<IF>'
variable. If a vlan interface is a number, then that number is treated as
the vlan tag for the interface and the interface will be named '<IF>.<tag>'.
Otherwise, the vlan tag must be provided via a vlan parameter in a
'create_args_<vlan>' variable.
While I'm here, fix a few nits in rc.conf(5) and mention create_args_<IF> in
the description of cloned_interfaces.
Modified:
stable/8/etc/defaults/rc.conf
stable/8/etc/network.subr
stable/8/share/man/man5/rc.conf.5
Directory Properties:
stable/8/etc/ (props changed)
stable/8/share/man/man5/ (props changed)
Modified: stable/8/etc/defaults/rc.conf
==============================================================================
--- stable/8/etc/defaults/rc.conf Tue Jan 12 19:41:07 2010 (r202166)
+++ stable/8/etc/defaults/rc.conf Tue Jan 12 19:55:07 2010 (r202167)
@@ -198,6 +198,8 @@ ifconfig_lo0="inet 127.0.0.1" # default
#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
#ifconfig_ed0_ipx="ipx 0x00010010" # Sample IPX address family entry.
#ifconfig_fxp0_name="net0" # Change interface name from fxp0 to net0.
+#vlans_fxp0="101 vlan0" # vlan(4) interfaces for fxp0 device
+#create_arg_vlan0="vlan 102" # vlan tag for vlan0 device
#wlans_ath0="wlan0" # wlan(4) interfaces for ath0 device
#wlandebug_wlan0="scan+auth+assoc" # Set debug flags with wlanddebug(8)
#ipv4_addrs_fxp0="192.168.0.1/24 192.168.1.1-5/28" # example IPv4 address entry.
Modified: stable/8/etc/network.subr
==============================================================================
--- stable/8/etc/network.subr Tue Jan 12 19:41:07 2010 (r202166)
+++ stable/8/etc/network.subr Tue Jan 12 19:55:07 2010 (r202167)
@@ -46,7 +46,7 @@ ifn_start()
ifconfig_up ${ifn} && cfg=0
ipv4_up ${ifn} && cfg=0
ipx_up ${ifn} && cfg=0
- childif_create ${ifn}
+ childif_create ${ifn} && cfg=0
return $cfg
}
@@ -67,7 +67,7 @@ ifn_stop()
ipv4_down ${ifn} && cfg=0
ifconfig_down ${ifn} && cfg=0
ifscript_down ${ifn} && cfg=0
- childif_destroy ${ifn}
+ childif_destroy ${ifn} && cfg=0
return $cfg
}
@@ -530,7 +530,7 @@ clone_down()
#
childif_create()
{
- local cfg child child_wlans create_args debug_flags ifn i
+ local cfg child child_vlans child_wlans create_args debug_flags ifn i
cfg=1
ifn=$1
@@ -559,6 +559,32 @@ childif_create()
fi
done
+ # Create vlan interfaces
+ child_vlans=`get_if_var $ifn vlans_IF`
+
+ if [ -n "${child_vlans}" ]; then
+ load_kld if_vlan
+ fi
+
+ for child in ${child_vlans}; do
+ if expr $child : '[1-9][0-9]*$' >/dev/null 2>&1; then
+ child="${ifn}.${child}"
+ create_args=`get_if_var $child create_args_IF`
+ ifconfig $child create ${create_args} && cfg=0
+ else
+ create_args="vlandev $ifn `get_if_var $child create_args_IF`"
+ if expr $child : 'vlan[0-9][0-9]*$' >/dev/null 2>&1; then
+ ifconfig $child create ${create_args} && cfg=0
+ else
+ i=`ifconfig vlan create ${create_args}`
+ ifconfig $i name $child && cfg=0
+ fi
+ fi
+ if autoif $child; then
+ ifn_start $child
+ fi
+ done
+
return ${cfg}
}
@@ -566,12 +592,34 @@ childif_create()
#
childif_destroy()
{
- local cfg child child_wlans ifn
+ local cfg child child_vlans child_wlans ifn
child_wlans=`get_if_var $ifn wlans_IF`
for child in ${child_wlans}; do
+ if ! ifexists $child; then
+ continue
+ fi
+ if autoif $child; then
+ ifn_stop $child
+ fi
ifconfig $child destroy && cfg=0
done
+
+ child_vlans=`get_if_var $ifn vlans_IF`
+ for child in ${child_vlans}; do
+ if expr $child : '[1-9][0-9]*$' >/dev/null 2>&1; then
+ child="${ifn}.${child}"
+ fi
+ if ! ifexists $child; then
+ continue
+ fi
+ if autoif $child; then
+ ifn_stop $child
+ fi
+ ifconfig $child destroy && cfg=0
+ done
+
+ return ${cfg}
}
# Create netgraph nodes.
Modified: stable/8/share/man/man5/rc.conf.5
==============================================================================
--- stable/8/share/man/man5/rc.conf.5 Tue Jan 12 19:41:07 2010 (r202166)
+++ stable/8/share/man/man5/rc.conf.5 Tue Jan 12 19:55:07 2010 (r202167)
@@ -1161,6 +1161,45 @@ and
variables.
.Pp
If a
+.Va vlans_ Ns Aq Ar interface
+variable is set,
+a
+.Xr vlan 4
+interface will be created for each item in the list with the
+.Ar vlandev
+argument set to
+.Ar interface .
+If a vlan interface's name is a number,
+then that number is used as the vlan tag and the new vlan interface is
+named
+.Ar interface . Ns Ar tag .
+Otherwise,
+the vlan tag must be specified via a
+.Va vlan
+parameter in the
+.Va create_args_ Ns Aq Ar interface
+variable.
+.Pp
+To create a vlan device named
+.Li em0.101
+on
+.Li em0
+with the vlan tag 101:
+.Bd -literal
+vlans_em0="101"
+.Ed
+.Pp
+To create a vlan device named
+.Li myvlan
+on
+.Li em0
+with the vlan tag 102:
+.Bd -literal
+vlans_em0="myvlan"
+create_args_myvlan="vlan 102"
+.Ed
+.Pp
+If a
.Va wlans_ Ns Aq Ar interface
variable is set,
an
@@ -1227,7 +1266,7 @@ Finally, you can add
options in this variable, in addition to the
.Pa /etc/start_if. Ns Aq Ar interface
file.
-For instance, configure an
+For instance, to configure an
.Xr ath 4
wireless device in station mode with an address obtained
via DHCP, using WPA authentication and 802.11b mode, it is
@@ -1249,7 +1288,7 @@ This is intended to replace the no longe
.Va pccard_ifconfig
variable.
.Pp
-It is also possible to rename interface by doing:
+It is also possible to rename an interface by doing:
.Bd -literal
ifconfig_ed0_name="net0"
ifconfig_net0="inet 192.0.2.1 netmask 0xffffff00"
@@ -1286,6 +1325,12 @@ Now this works only for IPv6 link local
.It Va cloned_interfaces
.Pq Vt str
Set to the list of clonable network interfaces to create on this host.
+Further cloning arguments may be passed to the
+.Xr ifconfig 8
+.Cm create
+command for each interface by setting the
+.Va create_args_ Ns Aq Ar interface
+variable.
Entries in
.Va cloned_interfaces
are automatically appended to
More information about the svn-src-stable
mailing list