X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=vswitchd%2Fbridge.c;h=b525f3d6d117029af825c97097bda2f37adee312;hb=ef5925df6af03cf47a4931539016715f6ac3f661;hp=a00799a11b66ab09a114831d741a08dca515da39;hpb=b9e8b45a3936441bd0fd1fd156cae498bf72cac8;p=openvswitch diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index a00799a1..b525f3d6 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -578,6 +578,7 @@ bridge_reconfigure(void) VLOG_ERR("bridge %s: problem setting netflow collectors", br->name); } + svec_destroy(&nf_hosts); /* Update the controller and related settings. It would be more * straightforward to call this from bridge_reconfigure_one(), but we @@ -2960,7 +2961,21 @@ 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; + + /* We need to make the same determination as the Linux bonding + * code to determine whether a slave should be consider "up". + * The Linux function bond_miimon_inspect() supports four + * BOND_LINK_* states: + * + * - BOND_LINK_UP: carrier detected, updelay has passed. + * - BOND_LINK_FAIL: carrier lost, downdelay in progress. + * - BOND_LINK_DOWN: carrier lost, downdelay has passed. + * - BOND_LINK_BACK: carrier detected, updelay in progress. + * + * The function bond_info_show_slave() only considers BOND_LINK_UP + * to be "up" and anything else to be "down". + */ + slave->up = iface->enabled && iface->delay_expires == LLONG_MAX; if (slave->up) { bond.up = true; }