chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: move the connection to the bus out of manager_new (again)
[elogind.git]
/
src
/
network
/
networkd-wait-online-manager.c
diff --git
a/src/network/networkd-wait-online-manager.c
b/src/network/networkd-wait-online-manager.c
index d1273725f075c835c9765d0681d6717f0eaf8b7a..cafe110e50dabdb305f8881c9c70eb4fda746ce6 100644
(file)
--- a/
src/network/networkd-wait-online-manager.c
+++ b/
src/network/networkd-wait-online-manager.c
@@
-31,6
+31,7
@@
#include "networkd-wait-online.h"
#include "util.h"
#include "networkd-wait-online.h"
#include "util.h"
+#include "time-util.h"
bool manager_ignore_link(Manager *m, Link *link) {
char **ignore;
bool manager_ignore_link(Manager *m, Link *link) {
char **ignore;
@@
-262,7
+263,7
@@
static int manager_network_monitor_listen(Manager *m) {
return 0;
}
return 0;
}
-int manager_new(Manager **ret, char **interfaces, char **ignore) {
+int manager_new(Manager **ret, char **interfaces, char **ignore
, usec_t timeout
) {
_cleanup_(manager_freep) Manager *m = NULL;
int r;
_cleanup_(manager_freep) Manager *m = NULL;
int r;
@@
-282,6
+283,16
@@
int manager_new(Manager **ret, char **interfaces, char **ignore) {
sd_event_add_signal(m->event, NULL, SIGTERM, NULL, NULL);
sd_event_add_signal(m->event, NULL, SIGINT, NULL, NULL);
sd_event_add_signal(m->event, NULL, SIGTERM, NULL, NULL);
sd_event_add_signal(m->event, NULL, SIGINT, NULL, NULL);
+ if (timeout > 0) {
+ usec_t usec;
+
+ usec = now(clock_boottime_or_monotonic()) + timeout;
+
+ r = sd_event_add_time(m->event, NULL, clock_boottime_or_monotonic(), usec, 0, NULL, INT_TO_PTR(-ETIMEDOUT));
+ if (r < 0)
+ return r;
+ }
+
sd_event_set_watchdog(m->event, true);
r = manager_network_monitor_listen(m);
sd_event_set_watchdog(m->event, true);
r = manager_network_monitor_listen(m);