From bc658556201283b4226f43de47df6e5b7e6a5870 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 30 Jul 2008 22:39:56 +0000
Subject: network scripts: properly maintain the network state's list of
 assigned interfaces

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 | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/package/base-files/files/etc/hotplug.d/net/10-net b/package/base-files/files/etc/hotplug.d/net/10-net
index 77eb6da9d4..06e5244447 100644
--- a/package/base-files/files/etc/hotplug.d/net/10-net
+++ b/package/base-files/files/etc/hotplug.d/net/10-net
@@ -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
-- 
cgit v1.2.3