rc.conf - Add support for FreeBSD-style vlan conf
authorAlex Hornung <alex@alexhornung.com>
Sun, 13 Jul 2014 09:56:35 +0000 (10:56 +0100)
committerAlex Hornung <alex@alexhornung.com>
Sun, 13 Jul 2014 11:22:25 +0000 (12:22 +0100)
Obtained-from: FreeBSD

etc/rc.d/netif
share/man/man5/rc.conf.5

index 5968651..3ca64bd 100644 (file)
@@ -206,6 +206,30 @@ childif_create()
                ifn_start $child
        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
+               ifn_start $child
+       done
+
        return ${cfg}
 }
 
index becc205..56a3637 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.197 2003/07/28 13:56:00 mbr Exp $
 .\"
-.Dd January 4, 2014
+.Dd July 13, 2014
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -659,6 +659,46 @@ ifconfig_ed0="DHCP"
 .Ed
 .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 and the optional the IPv4 address 192.0.2.1/24:
+.Bd -literal
+vlans_em0="101"
+ifconfig_em0_101="inet 192.0.2.1/24"
+.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
@@ -2614,6 +2654,7 @@ if it is not set.
 .Xr pf 4 ,
 .Xr tcp 4 ,
 .Xr udp 4 ,
+.Xr vlan 4 ,
 .Xr exports 5 ,
 .Xr motd 5 ,
 .Xr resident.conf 5 ,