#!/bin/sh case "$IFACE" in vlan0*) vconfig set_name_type VLAN_PLUS_VID VLANID=`echo $IFACE|sed "s/vlan0*//"` ;; vlan*) vconfig set_name_type VLAN_PLUS_VID_NO_PAD VLANID=`echo $IFACE|sed "s/vlan*//"` ;; eth*.0?*) vconfig set_name_type DEV_PLUS_VID VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.0*//g"` IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/"` ;; eth*.*) vconfig set_name_type DEV_PLUS_VID_NO_PAD VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.*//g"` IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/"` ;; *) exit 0 ;; esac if [ "$IF_VLAN_RAW_DEVICE" != "" ] then [ -x /sbin/vconfig ] || exit 0 if ! grep -q "$IF_VLAN_RAW_DEVICE" /proc/net/dev then echo "$IF_VLAN_RAW_DEVICE does not exist, unable to create $IFACE" exit 1 fi # enable vlan if [ -d /proc/switch/$IF_VLAN_RAW_DEVICE ] then echo 1 > /proc/switch/$IF_VLAN_RAW_DEVICE/enable_vlan fi ip link set up dev $IF_VLAN_RAW_DEVICE vconfig add $IF_VLAN_RAW_DEVICE $VLANID # change mac link layer address if [ "$IF_MAC_ADDRESS" != "" ] then ip link set $IF_VLAN_RAW_DEVICE.$VLANID address $IF_MAC_ADDRESS fi ip link set up dev $IF_VLAN_RAW_DEVICE.$VLANID # configure switch ports if [ "$IF_SWITCH_PORTS" != "" ] then echo "$IF_SWITCH_PORTS" > /proc/switch/$IF_VLAN_RAW_DEVICE/vlan/$VLANID/ports fi fi