networkd: link - don't react to successfull link up
authorTom Gundersen <teg@jklm.no>
Tue, 22 Apr 2014 17:36:40 +0000 (19:36 +0200)
committerTom Gundersen <teg@jklm.no>
Tue, 22 Apr 2014 19:06:00 +0000 (21:06 +0200)
Avoid having two code-paths racing with eacother to do the same thing. The change
of flags will be detected in the normal way, so only use the link_up_handler
to detect if the 'up' failed and in that case fail the link.

src/network/networkd-link.c

index 9f632e4..723b919 100644 (file)
@@ -1242,14 +1242,15 @@ static int link_up_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
                 return 1;
 
         r = sd_rtnl_message_get_errno(m);
-        if (r >= 0)
-                link_update_flags(link, link->flags | IFF_UP);
-        else
+        if (r < 0) {
                 log_struct_link(LOG_WARNING, link,
                                 "MESSAGE=%s: could not bring up interface: %s",
                                 link->ifname, strerror(-r),
                                 "ERRNO=%d", -r,
                                 NULL);
+                link_enter_failed(link);
+        }
+
         return 1;
 }
 
@@ -1446,6 +1447,7 @@ static int link_configure(Link *link) {
 
         if (link->network->ipv4ll) {
                 uint8_t seed[8];
+
                 r = sd_ipv4ll_new(&link->ipv4ll);
                 if (r < 0)
                         return r;