chiark / gitweb /
networkd: only track state of links we are managing
authorTom Gundersen <teg@jklm.no>
Thu, 2 Jan 2014 14:56:10 +0000 (15:56 +0100)
committerTom Gundersen <teg@jklm.no>
Thu, 2 Jan 2014 14:56:10 +0000 (15:56 +0100)
If a network is not (yet) set for a link, we do not care about its state (as we
anyway don't know what to do with it).

src/network/networkd-link.c
src/network/networkd-manager.c

index 9d942f436b3ad0e0307ad461cdd87c4e98c6e2e2..a59434019d4ab4f7a66bbc953db96b49b4a1a3e9 100644 (file)
@@ -619,6 +619,7 @@ int link_update(Link *link, sd_rtnl_message *m) {
         int r;
 
         assert(link);
+        assert(link->network);
         assert(m);
 
         r = sd_rtnl_message_link_get_flags(m, &flags);
@@ -645,7 +646,7 @@ int link_update(Link *link, sd_rtnl_message *m) {
         } else if (!(link->flags & IFF_LOWER_UP) && flags & IFF_LOWER_UP) {
                 log_info("%s: connected", link->ifname);
 
-                if (link->network && link->network->dhcp) {
+                if (link->network->dhcp) {
                         r = link_acquire_conf(link);
                         if (r < 0) {
                                 link_enter_failed(link);
index 73e0c87f34888251783c9a4ce80510f458cda0b8..07552063ecd50ea210fb28db067270cfbbfc3d1b 100644 (file)
@@ -247,9 +247,12 @@ static int manager_rtnl_process_link(sd_rtnl *rtnl, sd_rtnl_message *message, vo
         if (!link)
                 return 0;
 
-        r = link_update(link, message);
-        if (r < 0)
-                return 0;
+        /* only track the status of links we want to manage */
+        if (link->network) {
+                r = link_update(link, message);
+                if (r < 0)
+                        return 0;
+        }
 
         return 1;
 }