network scripts: properly maintain the network state's list of assigned interfaces
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 30 Jul 2008 22:39:56 +0000 (22:39 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 30 Jul 2008 22:39:56 +0000 (22:39 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12026 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/base-files/files/etc/hotplug.d/net/10-net

index 77eb6da9d4352a27abb400471e21f29efb97c970..06e5244447ec669f2194dc6c59e9a22b2859ed4c 100644 (file)
@@ -30,6 +30,24 @@ addif() {
        done
 }
 
+
+delif() {
+       scan_interfaces
+
+       # find all vlan configurations for this interface and nuke 'em
+       for ifc in $interfaces; do
+               config_get iftype "$ifc" type
+               config_get ifs "$ifc" device
+               confdevs="$(uci get network.$ifc.ifname)"
+               for dev in $ifs; do
+                       [ "${dev%%\.*}" = "$INTERFACE" ] && {
+                               list_contains confdevs "$dev" || list_remove ifs "$dev"
+                       }
+               done
+               uci_set_state "network" "$ifc" device "$ifs"
+       done
+}
+
 case "$ACTION" in
        add|register)
                case "$PHYSDEVDRIVER" in
@@ -37,4 +55,7 @@ case "$ACTION" in
                esac
                addif
        ;;
+       remove|unregister)
+               delif
+       ;;
 esac