vswitch: Correctly identify slave status in /proc compatibility layer
authorJustin Pettit <jpettit@nicira.com>
Mon, 14 Sep 2009 11:07:53 +0000 (04:07 -0700)
committerJustin Pettit <jpettit@nicira.com>
Mon, 14 Sep 2009 16:42:21 +0000 (09:42 -0700)
In the /proc compatibility layer, the bond member was reported as up
immediately after link recovery, regardless of the updelay.  I believe
the compatibility code was correct if the check had been done with carrier,
but since 'iface->enabled' already does that calculation, we can use it
directly.

Additinally, when a bond slave was enabled or disabled, the bond
compatibility code was not being told to update its state.  This commit
makes that call.

NIC-39

vswitchd/bridge.c

index b13ed8dc430f82af5684b6da5481359e6cf3bad8..c39670a3b2a0d90f01a470e26cf8fa40479a9fd4 100644 (file)
@@ -1525,6 +1525,7 @@ bond_enable_slave(struct iface *iface, bool enable)
         }
         iface->tag = tag_create_random();
     }
+    port_update_bond_compat(port);
 }
 
 static void
@@ -2977,8 +2978,7 @@ port_update_bond_compat(struct port *port)
         struct iface *iface = port->ifaces[i];
         struct compat_bond_slave *slave = &bond.slaves[i];
         slave->name = iface->name;
-        slave->up = ((iface->enabled && iface->delay_expires == LLONG_MAX) ||
-                     (!iface->enabled && iface->delay_expires != LLONG_MAX));
+        slave->up = iface->enabled;
         if (slave->up) {
             bond.up = true;
         }