mirror of
https://github.com/opnsense/src.git
synced 2026-03-25 04:03:09 -04:00
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.
This commit is contained in:
parent
bd048c87c0
commit
d46150d432
3 changed files with 101 additions and 6 deletions
|
|
@ -198,6 +198,8 @@ ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
|
|||
#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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 longer supported
|
|||
.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 multicast addresses.
|
|||
.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
|
||||
|
|
|
|||
Loading…
Reference in a new issue