diff --git a/package/base-files-network/files/lib/network/config.sh b/package/base-files-network/files/lib/network/config.sh
index 5e8b05909ccfb0d13178ec6c882b9a028095e52f..8ba31a8784906db8eaf10776145499c08b9f84af 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}"
 }