summaryrefslogtreecommitdiff
path: root/src/network/networkd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/networkd.c')
-rw-r--r--src/network/networkd.c23
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;
}