summaryrefslogtreecommitdiff
path: root/package/base-files/src/etc/network/if-pre-up.d/02-vlan
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2010-02-07 22:01:27 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2010-02-07 22:01:27 +0100
commit7de93724af9791bad0a8e887d02bf7a3a872305c (patch)
treec4de7f2ecaa01cc7cf371eb3b771a6b8a8f9a9de /package/base-files/src/etc/network/if-pre-up.d/02-vlan
parentbd1730cdff6b88d54d5fdb3d63d5733ca33abe59 (diff)
parent254ae86e16cddf282b36c0593148e24151ce1f96 (diff)
Merge branch 'master' of git+ssh://openadk.org/git/openadk
Diffstat (limited to 'package/base-files/src/etc/network/if-pre-up.d/02-vlan')
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/02-vlan36
1 files changed, 36 insertions, 0 deletions
diff --git a/package/base-files/src/etc/network/if-pre-up.d/02-vlan b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
new file mode 100755
index 000000000..35b7fca59
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+[ -x /sbin/vconfig ] || exit 0
+[ -d /proc/net/vlan ] || exit 0
+
+case "$IFACE" in
+ vlan*)
+ vconfig set_name_type VLAN_PLUS_VID_NO_PAD
+ VLANID=`echo $IFACE|sed "s/vlan*//"`
+ ;;
+ 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
+ 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
+ ip link set up dev $IF_VLAN_RAW_DEVICE
+ vconfig add $IF_VLAN_RAW_DEVICE $VLANID
+ 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
+fi
+
+exit 0