From 4ea86b956c3ba4ed4ae7c20ea1849bfb7004f97a Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Mon, 30 Apr 2012 18:23:56 +0000
Subject: [PATCH] base-files-network: add a fixup_interface function like with
 the netifd compatibility scripts - allows selective fixup of individual
 interface sections instead of having to do the full scan_interfaces

SVN-Revision: 31543
---
 .../files/lib/network/config.sh               | 44 +++++++++++--------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/package/base-files-network/files/lib/network/config.sh b/package/base-files-network/files/lib/network/config.sh
index 5e8b05909c..8ba31a8784 100755
--- a/package/base-files-network/files/lib/network/config.sh
+++ b/package/base-files-network/files/lib/network/config.sh
@@ -48,34 +48,40 @@ find_config() {
 	return 1;
 }
 
-scan_interfaces() {
-	local cfgfile="${1:-network}"
-	interfaces=
-	config_cb() {
-		case "$1" in
-			interface)
-				config_set "$2" auto 1
-			;;
-		esac
+fixup_interface() {
 		local iftype ifname device proto
-		config_get iftype "$CONFIG_SECTION" TYPE
+		local __cfg="$1"
+
+		config_get iftype "$__cfg" TYPE
 		case "$iftype" in
 			interface)
-				append interfaces "$CONFIG_SECTION"
-				config_get proto "$CONFIG_SECTION" proto
-				config_get iftype "$CONFIG_SECTION" type
-				config_get ifname "$CONFIG_SECTION" ifname
-				config_get device "$CONFIG_SECTION" device "$ifname"
-				config_set "$CONFIG_SECTION" device "$device"
+				append interfaces "$__cfg"
+				config_get proto "$__cfg" proto
+				config_get iftype "$__cfg" type
+				config_get ifname "$__cfg" ifname
+				config_get device "$__cfg" device "$ifname"
+				config_set "$__cfg" device "$device"
 				case "$iftype" in
 					bridge)
-						config_set "$CONFIG_SECTION" ifnames "$device"
-						config_set "$CONFIG_SECTION" ifname br-"$CONFIG_SECTION"
+						config_set "$__cfg" ifnames "$device"
+						config_set "$__cfg" ifname br-"$CONFIG_SECTION"
 					;;
 				esac
-				( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$CONFIG_SECTION'"
+				( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$__cfg'"
+			;;
+		esac
+}
+
+scan_interfaces() {
+	local cfgfile="${1:-network}"
+	interfaces=
+	config_cb() {
+		case "$1" in
+			interface)
+				config_set "$2" auto 1
 			;;
 		esac
+		fixup_interface "$CONFIG_SECTION"
 	}
 	config_load "${cfgfile}"
 }
-- 
2.30.2