2
0
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:
nickcooper-zhangtonghao
2017-02-13 22:52:50 -08:00
committed by Andy Zhou
parent a12e4861b5
commit 603381ad6b

View File

@@ -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;
}