That the mac of active-slave is invalid(e.g. 00:00:00:00:00:00) is incidental. The reason is described as below.
In the bridge_reconfig(): 1. bond devices created in port_configure(). 2. the bonded interfaces may be disabled even calling bridge_run__(), because the interface link is not ready. The OvS will run bridge_run__() in next loop. In next loop, the active-slave may be selected. But OvS the bridge_reconfig() again, the bond_reconfigure() set active-slave mac zero and flag false. If using the 'ovs-appctl bond/show bond-name' to check active-slave mac, you will find the mac is zero and mac in the ovsdb is also zero. The active_slave_mac and active_slave_changed should be initialized when created. Signed-off-by: nickcooper-zhangtonghao <n...@opencloud.tech> --- ofproto/bond.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ofproto/bond.c b/ofproto/bond.c index 5063b3f..2e018aa 100644 --- a/ofproto/bond.c +++ b/ofproto/bond.c @@ -242,6 +242,9 @@ bond_create(const struct bond_settings *s, struct ofproto_dpif *ofproto) ovs_refcount_init(&bond->ref_cnt); hmap_init(&bond->pr_rule_ops); + bond->active_slave_mac = eth_addr_zero; + bond->active_slave_changed = false; + bond_reconfigure(bond, s); return bond; } @@ -457,9 +460,6 @@ bond_reconfigure(struct bond *bond, const struct bond_settings *s) bond_entry_reset(bond); } - bond->active_slave_mac = s->active_slave_mac; - bond->active_slave_changed = false; - ovs_rwlock_unlock(&rwlock); return revalidate; } -- 1.8.3.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev