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: add network_get_by_name
[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 c66470c3e27f275065d8492164b765f174d6f0bd..cafe110e50dabdb305f8881c9c70eb4fda746ce6 100644
(file)
--- a/
src/network/networkd-wait-online-manager.c
+++ b/
src/network/networkd-wait-online-manager.c
@@
-21,6
+21,7
@@
#include <netinet/ether.h>
#include <linux/if.h>
#include <netinet/ether.h>
#include <linux/if.h>
+#include <fnmatch.h>
#include "rtnl-util.h"
#include "rtnl-util.h"
@@
-30,16
+31,20
@@
#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) {
bool manager_ignore_link(Manager *m, Link *link) {
+ char **ignore;
+
assert(m);
assert(link);
if (link->flags & IFF_LOOPBACK)
return true;
assert(m);
assert(link);
if (link->flags & IFF_LOOPBACK)
return true;
- if (strv_contains(m->ignore, link->ifname))
- return true;
+ STRV_FOREACH(ignore, m->ignore)
+ if (fnmatch(*ignore, link->ifname, 0) == 0)
+ return true;
return false;
}
return false;
}
@@
-258,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;
@@
-278,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);