diff options
-rw-r--r-- | procd.h | 1 | ||||
-rw-r--r-- | state.c | 14 | ||||
-rw-r--r-- | ubus.c | 1 |
3 files changed, 13 insertions, 3 deletions
@@ -35,6 +35,7 @@ void ubus_init_service(struct ubus_context *ctx); void ubus_init_system(struct ubus_context *ctx); void procd_state_next(void); +void procd_state_ubus_connect(void); void procd_shutdown(int event); void procd_early(void); void procd_preinit(void); @@ -27,6 +27,7 @@ enum { STATE_NONE = 0, STATE_EARLY, + STATE_UBUS, STATE_INIT, STATE_RUNNING, STATE_SHUTDOWN, @@ -49,16 +50,17 @@ static void state_enter(void) procd_coldplug(); break; - case STATE_INIT: + case STATE_UBUS: // try to reopen incase the wdt was not available before coldplug watchdog_init(0); LOG("- ubus -\n"); procd_connect_ubus(); - - LOG("- init -\n"); service_init(); service_start_early("ubus", ubus_cmd); + break; + case STATE_INIT: + LOG("- init -\n"); procd_inittab(); procd_inittab_run("respawn"); procd_inittab_run("askconsole"); @@ -118,6 +120,12 @@ void procd_state_next(void) state_enter(); } +void procd_state_ubus_connect(void) +{ + if (state == STATE_UBUS) + procd_state_next(); +} + void procd_shutdown(int event) { if (state >= STATE_SHUTDOWN) @@ -57,6 +57,7 @@ ubus_connect_cb(struct uloop_timeout *timeout) DEBUG(2, "Connected to ubus, id=%08x\n", ctx->local_id); ubus_add_uloop(ctx); + procd_state_ubus_connect(); } void |