chiark / gitweb /
networkd-wait-online: flush monitor events after processing
[elogind.git] / src / network / networkd-link.c
index 2f99b5374afc39621eb23e33ec5540fab23d7948..04b2265610703fbb69e8cfddb9fc911b9f33174e 100644 (file)
@@ -1139,9 +1139,6 @@ static int link_update_flags(Link *link, sd_rtnl_message *m) {
 
         assert(link);
 
-        if (link->state == LINK_STATE_FAILED)
-                return 0;
-
         r = sd_rtnl_message_link_get_flags(m, &flags);
         if (r < 0) {
                 log_warning_link(link, "Could not get link flags");
@@ -1232,6 +1229,10 @@ static int link_update_flags(Link *link, sd_rtnl_message *m) {
 
         link_save(link);
 
+        if (link->state == LINK_STATE_FAILED ||
+            link->state == LINK_STATE_UNMANAGED)
+                return 0;
+
         if (carrier_gained) {
                 log_info_link(link, "gained carrier");
 
@@ -1621,9 +1622,6 @@ int link_update(Link *link, sd_rtnl_message *m) {
         assert(link->ifname);
         assert(m);
 
-        if (link->state == LINK_STATE_FAILED || link->state == LINK_STATE_UNMANAGED)
-                return 0;
-
         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);
@@ -1695,7 +1693,7 @@ int link_save(Link *link) {
         admin_state = link_state_to_string(link->state);
         assert(admin_state);
 
-        if (link->operstate & IF_OPER_DORMANT)
+        if (link->operstate == IF_OPER_DORMANT)
                 oper_state = "dormant";
         else if (link_has_carrier(link->flags, link->operstate))
                 oper_state = "carrier";