base-files: allow failsafe to configure vlans
authorJonas Gorski <jonas.gorski@gmail.com>
Thu, 28 Jul 2016 22:23:55 +0000 (00:23 +0200)
committerJonas Gorski <jonas.gorski@gmail.com>
Sat, 13 Aug 2016 13:50:06 +0000 (15:50 +0200)
In preparation of properly setting up vlans and switches, add
support for configuring failsafe on a vlan tagged interface.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
package/base-files/files/lib/preinit/10_indicate_preinit

index 206243390ebf3ecfd00d94d6478f14507311cae3..33e90b1d283698f9cadeaeba06a52787f24b7962 100644 (file)
@@ -3,9 +3,22 @@
 # Copyright (C) 2010 Vertical Communications
 
 preinit_ip_config() {
-       grep -q "$1" /proc/net/dev || return
+       local netdev vid
 
-       ip link set dev $1 up
+       netdev=${1%\.*}
+       vid=${1#*\.}
+
+       if [ "$vid" = "$netdev" ]; then
+               vid=
+       fi
+
+       grep -q "$netdev" /proc/net/dev || return
+
+       if [ -n "$vid" ]; then
+               ip link add link $netdev name $1 type vlan id $vid
+       fi
+
+       ip link set dev $netdev up
        ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1
 }
 
@@ -52,8 +65,21 @@ preinit_ip() {
 
 preinit_ip_deconfig() {
        [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
+               local netdev vid
+
+               netdev=${pi_ifname%\.*}
+               vid=${pi_ifname#*\.}
+
+               if [ "$vid" = "$netdev" ]; then
+                       vid=
+               fi
+
                ip -4 address flush dev $pi_ifname
-               ip link set dev $pi_ifname down
+               ip link set dev $netdev down
+
+               if [ -n "$vid" ]; then
+                       ip link delete $pi_ifname
+               fi
        }
 }