chiark / gitweb /
networkd: restore logic for enslaving to a master bonding interface
authorMark Oteiza <mvoteiza@udel.edu>
Wed, 5 Mar 2014 09:41:13 +0000 (10:41 +0100)
committerTom Gundersen <teg@jklm.no>
Wed, 5 Mar 2014 09:41:20 +0000 (10:41 +0100)
This partially reverts commit 54abf46, which unintentionally removed the
enslaving support for bonding interfaces

src/network/networkd-link.c

index c10d947589f6f9b87eeea1d0dc5fb0f766b86d27..61e257c1d53b1db4968b2089bb1e1ab7b6b11adc 100644 (file)
@@ -1194,6 +1194,27 @@ static int link_enter_enslave(Link *link) {
                 link->enslaving ++;
         }
 
+        if (link->network->bond) {
+                log_struct_link(LOG_DEBUG, link,
+                                "MESSAGE=%s: enslaving by '%s'",
+                                link->ifname, link->network->bond->name,
+                                NETDEV(link->network->bond),
+                                NULL);
+
+                r = netdev_enslave(link->network->bond, link, &enslave_handler);
+                if (r < 0) {
+                        log_struct_link(LOG_WARNING, link,
+                                        "MESSAGE=%s: could not enslave by '%s': %s",
+                                        link->ifname, link->network->bond->name, strerror(-r),
+                                        NETDEV(link->network->bond),
+                                        NULL);
+                        link_enter_failed(link);
+                        return r;
+                }
+
+                link->enslaving ++;
+        }
+
         HASHMAP_FOREACH(vlan, link->network->vlans, i) {
                 log_struct_link(LOG_DEBUG, link,
                                 "MESSAGE=%s: enslaving by '%s'",