VLAN support in rcNG [PATCH]

From: Adam C. Migus <adam_at_migus.org>
Date: Sat, 17 Apr 2004 16:25:06 -0400
The following is a patch that adds support for vlan creation and
destruction within rcNG.  Using the patch it's possible, for example,
to create a vlan, `vlan0' with the following directives in rc.conf:

vlan_interfaces="vlan0"
ifconfig_vlan0="DHCP"
ifconfig_vlan0_vlan_dev="xl0"
ifconfig_vlan0_vlan_tag="2"

Is this patch of general interest?  Should I submit a PR?

The patch (also attached):

--- etc/network.subr.orig       Sat Apr 17 16:13:28 2004
+++ etc/network.subr    Sat Apr 17 16:03:04 2004
_at__at_ -250,6 +250,47 _at__at_
        return $_ret
 }
  
+# Create vlan interfaces.
+#
+vlan_up()
+{
+       _prefix=
+       _list=
+       for ifn in ${vlan_interfaces}; do
+               ifconfig ${ifn} create
+               if [ $? -eq 0 ]; then
+                       _list="${_list}${_prefix}${ifn}"
+                       [ -z "$_prefix" ] && _prefix=' '
+                       eval local _v_dev=\$ifconfig_${ifn}_vlan_dev
+                       eval local _v_tag=\$ifconfig_${ifn}_vlan_tag
+                       if [ -n "${_v_dev}" -a -n "${_v_tag}" ]; then
+                               ifconfig ${ifn} vlan ${_v_tag} vlandev
${_v_dev}+                               if [ $? -ne 0 ]; then
+                                       debug "Vlan: cannot set vlan
dev/tag."
+                               fi
+                       fi
+               fi
+       done
+       debug "Vlan created: ${_list}"
+}
+
+# Destroy vlan interfaces. Destroyed interfaces are echoed
+# to standard output.
+#
+vlan_down()
+{
+       _prefix=
+       _list=
+       for ifn in ${vlan_interfaces}; do
+               ifconfig ${ifn} destroy
+               if [ $? -eq 0 ]; then
+                       _list="${_list}${_prefix}${ifn}"
+                       [ -z "$_prefix" ] && _prefix=' '
+               fi
+       done
+       debug "Destroyed vlans: ${_list}"
+}
+
 #
 # list_net_interfaces type
 #      List all network interfaces. The type of interface returned
--- etc/rc.d/netif.orig Sat Apr 17 15:57:48 2004
+++ etc/rc.d/netif      Sat Apr 17 15:57:40 2004
_at__at_ -50,6 +50,9 _at__at_
                # Create cloned interfaces
                clone_up
  
+               # Create cloned interfaces
+               vlan_up
+
                # Create IPv6<-->IPv4 tunnels
                gif_up
        fi
--- etc/defaults/rc.conf.orig   Sat Apr 17 16:06:53 2004
+++ etc/defaults/rc.conf        Sat Apr 17 16:11:49 2004
_at__at_ -108,6 +108,10 _at__at_
 network_interfaces="auto"      # List of network interfaces (or
"auto").
 cloned_interfaces=""           # List of cloned network interfaces to
create.
 #cloned_interfaces="gif0 gif1 gif2 gif3" # Pre-cloning GENERIC config.
+vlan_interfaces=""             # List of vlan network interfaces to
create.
+#vlan_interfaces="vlan0"       # Sample vlan entry.
+#ifconfig_vlan0_vlan_dev=""    # Physical interface associated with
this vlan.
+#ifconfig_vlan0_vlan_tag=""    # Vlan tag associated with this vlan.
 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.

-- 
Adam C. Migus -- http://people.migus.org/~adam/

Received on Sat Apr 17 2004 - 11:25:08 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:51 UTC