diff options
Diffstat (limited to 'src/network/networkd.c')
-rw-r--r-- | src/network/networkd.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/network/networkd.c b/src/network/networkd.c index 2851432eff..fe60f1ed14 100644 --- a/src/network/networkd.c +++ b/src/network/networkd.c @@ -18,6 +18,7 @@ ***/ #include "sd-daemon.h" +#include "sd-event.h" #include "capability-util.h" #include "networkd-conf.h" @@ -26,6 +27,7 @@ #include "user-util.h" int main(int argc, char *argv[]) { + sd_event *event = NULL; _cleanup_manager_free_ Manager *m = NULL; const char *user = "systemd-network"; uid_t uid; @@ -78,7 +80,15 @@ int main(int argc, char *argv[]) { assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0); - r = manager_new(&m); + r = sd_event_default(&event); + if (r < 0) + goto out; + + sd_event_set_watchdog(event, true); + sd_event_add_signal(event, NULL, SIGTERM, NULL, NULL); + sd_event_add_signal(event, NULL, SIGINT, NULL, NULL); + + r = manager_new(&m, event); if (r < 0) { log_error_errno(r, "Could not create manager: %m"); goto out; @@ -118,22 +128,29 @@ int main(int argc, char *argv[]) { goto out; } + r = manager_start(m); + if (r < 0) { + log_error_errno(r, "Could not start manager: %m"); + goto out; + } + log_info("Enumeration completed"); sd_notify(false, "READY=1\n" "STATUS=Processing requests..."); - r = manager_run(m); + r = sd_event_loop(event); if (r < 0) { log_error_errno(r, "Event loop failed: %m"); goto out; } - out: sd_notify(false, "STOPPING=1\n" "STATUS=Shutting down..."); + sd_event_unref(event); + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } |