netifd: initialize the switch early at start time and on reload (fixes #13015)
[openwrt/openwrt.git] / package / network / config / netifd / files / etc / init.d / network
index 9427a8635723f37f444f9fb62cf5f5c6f6882717..e117463ad1745bd8ca78c881dadddb34e50672e0 100755 (executable)
@@ -5,7 +5,16 @@ STOP=90
 
 USE_PROCD=1
 
+init_switch() {
+       setup_switch() { return 0; }
+
+       include /lib/network
+       setup_switch
+}
+
 start_service() {
+       init_switch
+
        procd_open_instance
        procd_set_param command /sbin/netifd
        procd_set_param respawn
@@ -17,6 +26,7 @@ start_service() {
 }
 
 reload_service() {
+       init_switch
        ubus call network reload
        /sbin/wifi reload_legacy
 }
@@ -26,19 +36,16 @@ stop_service() {
 }
 
 service_running() {
-       setup_switch() { return 0; }
-
-       include /lib/network
-       setup_switch
-
        sleep 5
-
-       /sbin/wifi up
+       /sbin/wifi reload_legacy
 }
 
 service_triggers()
 {
-       procd_add_reload_trigger "network"
+       procd_open_trigger
+       procd_add_config_trigger "config.change" "network" /etc/init.d/network reload
+       procd_add_config_trigger "config.change" "wireless" /etc/init.d/network reload
+       procd_close_trigger
 }
 
 restart() {