diff options
author | Tom Gundersen <teg@jklm.no> | 2014-05-09 12:11:15 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-05-09 14:41:27 +0200 |
commit | 7619683b46bddcf753786fd20581322da9825f99 (patch) | |
tree | 5b853d3267444fb91f36b0d90f7ab057e746bd7a | |
parent | d9c67ea112724e271c39553d966eae612e272e34 (diff) |
networkd: link - handle links coming back to life
When enslaving devices, we may receieve DELLINK/NEWLINK for the same ifindex,
let's not be confused by this.
-rw-r--r-- | src/network/networkd-link.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 7cb9ee6754..d23be9ccbf 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -160,7 +160,7 @@ void link_drop(Link *link) { link->state = LINK_STATE_LINGER; - log_debug_link(link, "dropped"); + log_debug_link(link, "link removed"); link_unref(link); @@ -1733,6 +1733,12 @@ int link_update(Link *link, sd_rtnl_message *m) { assert(link->ifname); assert(m); + if (link->state == LINK_STATE_LINGER) { + link_ref(link); + log_info_link(link, "link readded"); + link->state = LINK_STATE_ENSLAVING; + } + r = sd_rtnl_message_read_string(m, IFLA_IFNAME, &ifname); if (r >= 0 && !streq(ifname, link->ifname)) { log_info_link(link, "renamed to %s", ifname); |