From 943fc97fb0340c01d8039bccbfc6c90ddcffc774 Mon Sep 17 00:00:00 2001
From: thepeople <thepeople@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sun, 6 Sep 2009 17:02:14 +0000
Subject: fix nonhotpluggable networks not being brought up. Closes #2781

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17527 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/base-files/files/etc/init.d/network              | 15 +++++++++++++++
 package/base-files/files/lib/network/config.sh           |  1 +
 package/base-files/files/usr/share/udhcpc/default.script |  1 +
 3 files changed, 17 insertions(+)

(limited to 'package/base-files')

diff --git a/package/base-files/files/etc/init.d/network b/package/base-files/files/etc/init.d/network
index e77db0251..75103ec07 100755
--- a/package/base-files/files/etc/init.d/network
+++ b/package/base-files/files/etc/init.d/network
@@ -4,7 +4,18 @@
 START=40
 STOP=40
 
+config_cb() {
+	local cfg_type="$1"
+
+	case "$cfg_type" in
+		interface)
+			append networks "$2" "$N"
+		;;
+	esac
+}
+
 boot() {
+	uci_load network
 	setup_switch() { return 0; }
 
 	include /lib/network
@@ -12,6 +23,10 @@ boot() {
 	[ -s /etc/config/wireless ] || \
 		/sbin/wifi detect > /etc/config/wireless
 	/sbin/wifi up
+	for network in $networks; do
+		config_get startupcheck $network started
+		[ "$startupcheck" = "" ] && ifup $network
+	done
 }
 
 start() {
diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh
index bfadf40c8..12a3378b8 100755
--- a/package/base-files/files/lib/network/config.sh
+++ b/package/base-files/files/lib/network/config.sh
@@ -153,6 +153,7 @@ set_interface_ifname() {
 	config_get device "$1" device
 	uci_set_state network "$config" ifname "$ifname"
 	uci_set_state network "$config" device "$device"
+	uci_set_state network "$config" started 1
 }
 
 setup_interface_none() {
diff --git a/package/base-files/files/usr/share/udhcpc/default.script b/package/base-files/files/usr/share/udhcpc/default.script
index b32b2c9f2..ea0a28b3a 100755
--- a/package/base-files/files/usr/share/udhcpc/default.script
+++ b/package/base-files/files/usr/share/udhcpc/default.script
@@ -203,6 +203,7 @@ for ifc in $interfaces __default; do
 				config_get ifname "$ifc" ifname
 				config_get aliases "$ifc" aliases
 				uci_revert_state network "$ifc"
+				uci_set_state network "$ifc" started 1
 				[ -n "$device" ] && uci_set_state network "$ifc" device "$device"
 				[ -n "$ifname" ] && uci_set_state network "$ifc" ifname "$ifname"
 				[ -n "$aliases" ] && uci_set_state network "$ifc" aliases "$aliases"
-- 
cgit v1.2.3