[backfire] merge network config fixes: r21641, r21652, r21655, r21659 and r21661
[openwrt-10.03/.git] / package / base-files / files / etc / hotplug.d / iface / 10-routes
index 011668218c300841fc2f0df2c77734367540b9e2..14fb75eec2b01b1fd5a782da3fe25016a180a6d5 100644 (file)
@@ -68,7 +68,36 @@ case "$ACTION" in
        ifup)
                include /lib/network
                scan_interfaces
+
+               # Setup aliases
+               config_set "$INTERFACE" aliases ""
+               config_set "$INTERFACE" alias_count 0
+               config_foreach setup_interface_alias alias "$INTERFACE" "$DEVICE"
+
+               # Save alias references in state vars
+               local aliases
+               config_get aliases "$INTERFACE" aliases
+               [ -z "$aliases" ] || uci_set_state network "$INTERFACE" aliases "$aliases"
+
+               # Make ip6addr of parent iface the main address again
+               local ip6addr
+               config_get ip6addr "$INTERFACE" ip6addr
+               [ -z "$ip6addr" ] || {
+                       ifconfig "$DEVICE" del "$ip6addr"
+                       ifconfig "$DEVICE" add "$ip6addr"
+               }
+
+               # Setup routes
                config_foreach "add_route" route
                config_foreach "add_route6" route6
        ;;
+       ifdown)
+               # Bring down named aliases
+               local device=$(uci_get_state network "$INTERFACE" device)
+               local ifn
+               for ifn in $(ifconfig | sed -ne "s/^\(\($DEVICE${device:+\|$device}\|br-$INTERFACE\):[^[:space:]]\+\).*/\1/p"); do
+                       ifconfig "$ifn" down
+               done
+       ;;
 esac
+