From 8d7b67dcc1e0f49d11bb98614dc1aad30ddfb4a1 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 29 Dec 2009 22:25:14 +0100 Subject: make vlan configuration work with ifup/ifdown --- .../extra/etc/network/if-post-down.d/01-bridge | 2 ++ .../extra/etc/network/if-post-down.d/02-vlan | 10 +++++++ .../extra/etc/network/if-pre-up.d/01-atm | 6 ++-- .../extra/etc/network/if-pre-up.d/02-bridge | 32 -------------------- .../extra/etc/network/if-pre-up.d/02-vlan | 35 ++++++++++++++++++++++ .../extra/etc/network/if-pre-up.d/03-bridge | 29 ++++++++++++++++++ .../base-files/extra/etc/network/if-up.d/01-bridge | 1 + 7 files changed, 79 insertions(+), 36 deletions(-) create mode 100755 package/base-files/extra/etc/network/if-post-down.d/02-vlan delete mode 100755 package/base-files/extra/etc/network/if-pre-up.d/02-bridge create mode 100755 package/base-files/extra/etc/network/if-pre-up.d/02-vlan create mode 100755 package/base-files/extra/etc/network/if-pre-up.d/03-bridge mode change 100644 => 100755 package/base-files/extra/etc/network/if-up.d/01-bridge (limited to 'package/base-files/extra') diff --git a/package/base-files/extra/etc/network/if-post-down.d/01-bridge b/package/base-files/extra/etc/network/if-post-down.d/01-bridge index eda1fe3bf..47f3c976b 100755 --- a/package/base-files/extra/etc/network/if-post-down.d/01-bridge +++ b/package/base-files/extra/etc/network/if-post-down.d/01-bridge @@ -22,3 +22,5 @@ for IF in $INTERFACES; do done ip link set down dev $IFACE || exit 1 +brctl delbr $IFACE +exit 0 diff --git a/package/base-files/extra/etc/network/if-post-down.d/02-vlan b/package/base-files/extra/etc/network/if-post-down.d/02-vlan new file mode 100755 index 000000000..e448a7641 --- /dev/null +++ b/package/base-files/extra/etc/network/if-post-down.d/02-vlan @@ -0,0 +1,10 @@ +#!/bin/sh + +[ -x /sbin/vconfig ] || exit 0 + +[ -e /proc/net/vlan/$IFACE ] && ( + ip link set down dev $IFACE + vconfig rem $IFACE +) + +exit 0 diff --git a/package/base-files/extra/etc/network/if-pre-up.d/01-atm b/package/base-files/extra/etc/network/if-pre-up.d/01-atm index 0abf9d368..5c168c001 100755 --- a/package/base-files/extra/etc/network/if-pre-up.d/01-atm +++ b/package/base-files/extra/etc/network/if-pre-up.d/01-atm @@ -1,9 +1,6 @@ #!/bin/sh -if [ ! -x /usr/sbin/br2684ctl ] -then - exit 0 -fi +[ -x /usr/sbin/br2684ctl ] || exit 0 [ "${IFACE%%[0-9]*}" = "nas" ] || exit 0 @@ -40,4 +37,5 @@ esac br2684ctl -b -c ${IFACE##*[a-z]} -e $encap -p $payload -a $IF_ATM_VPI.$IF_ATM_VCI ifconfig nas${IFACE##*[a-z]} up + exit 0 diff --git a/package/base-files/extra/etc/network/if-pre-up.d/02-bridge b/package/base-files/extra/etc/network/if-pre-up.d/02-bridge deleted file mode 100755 index 766084de1..000000000 --- a/package/base-files/extra/etc/network/if-pre-up.d/02-bridge +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -if [ ! -x /usr/sbin/brctl ] -then - exit 0 -fi - -case "$IF_BRIDGE_PORTS" in - "") - exit 0 - ;; - none) - INTERFACES="" - ;; - *) - INTERFACES="$IF_BRIDGE_PORTS" - ;; -esac - -brctl addbr $IFACE || exit 1 - -for IF in $INTERFACES; do - if ! grep -q $IF /proc/net/dev; then - echo "Error: interface '$IF' does not exist!" - brctl delbr $IFACE - exit 1 - fi - brctl addif $IFACE $IF - ip link set up dev $IF -done - -exit 0 diff --git a/package/base-files/extra/etc/network/if-pre-up.d/02-vlan b/package/base-files/extra/etc/network/if-pre-up.d/02-vlan new file mode 100755 index 000000000..09b9cf0da --- /dev/null +++ b/package/base-files/extra/etc/network/if-pre-up.d/02-vlan @@ -0,0 +1,35 @@ +#!/bin/sh + +[ -x /sbin/vconfig ] || 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 diff --git a/package/base-files/extra/etc/network/if-pre-up.d/03-bridge b/package/base-files/extra/etc/network/if-pre-up.d/03-bridge new file mode 100755 index 000000000..41ddb2b58 --- /dev/null +++ b/package/base-files/extra/etc/network/if-pre-up.d/03-bridge @@ -0,0 +1,29 @@ +#!/bin/sh + +[ -x /usr/sbin/brctl ] || exit 0 + +case "$IF_BRIDGE_PORTS" in + "") + exit 0 + ;; + none) + INTERFACES="" + ;; + *) + INTERFACES="$IF_BRIDGE_PORTS" + ;; +esac + +brctl addbr $IFACE || exit 1 + +for IF in $INTERFACES; do + if ! grep -q $IF /proc/net/dev; then + echo "Error: interface '$IF' does not exist!" + brctl delbr $IFACE + exit 1 + fi + brctl addif $IFACE $IF + ip link set up dev $IF +done + +exit 0 diff --git a/package/base-files/extra/etc/network/if-up.d/01-bridge b/package/base-files/extra/etc/network/if-up.d/01-bridge old mode 100644 new mode 100755 index 786efe0f8..e5962f12f --- a/package/base-files/extra/etc/network/if-up.d/01-bridge +++ b/package/base-files/extra/etc/network/if-up.d/01-bridge @@ -1,3 +1,4 @@ #!/bin/sh [ "${IFACE%%[0-9]*}" = "br" ] && ip link set up dev $IFACE +exit 0 -- cgit v1.2.3