mirror of
https://github.com/openvswitch/ovs
synced 2025-09-01 14:55:18 +00:00
ofproto/bond: Validate active-slave mac.
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 <nic@opencloud.tech> Signed-off-by: Andy Zhou <azhou@ovn.org>
This commit is contained in:
committed by
Andy Zhou
parent
a12e4861b5
commit
603381ad6b
@@ -242,6 +242,9 @@ bond_create(const struct bond_settings *s, struct ofproto_dpif *ofproto)
|
|||||||
ovs_refcount_init(&bond->ref_cnt);
|
ovs_refcount_init(&bond->ref_cnt);
|
||||||
hmap_init(&bond->pr_rule_ops);
|
hmap_init(&bond->pr_rule_ops);
|
||||||
|
|
||||||
|
bond->active_slave_mac = eth_addr_zero;
|
||||||
|
bond->active_slave_changed = false;
|
||||||
|
|
||||||
bond_reconfigure(bond, s);
|
bond_reconfigure(bond, s);
|
||||||
return bond;
|
return bond;
|
||||||
}
|
}
|
||||||
@@ -457,9 +460,6 @@ bond_reconfigure(struct bond *bond, const struct bond_settings *s)
|
|||||||
bond_entry_reset(bond);
|
bond_entry_reset(bond);
|
||||||
}
|
}
|
||||||
|
|
||||||
bond->active_slave_mac = s->active_slave_mac;
|
|
||||||
bond->active_slave_changed = false;
|
|
||||||
|
|
||||||
ovs_rwlock_unlock(&rwlock);
|
ovs_rwlock_unlock(&rwlock);
|
||||||
return revalidate;
|
return revalidate;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user