Hi ovs-dev,

I'm seeing behaviour that feels like a bug, related to preservation of active bond member selection across OVS restarts. But the behaviour has been there for several years, so I wonder whether I'm missing something.

The OVS DB has a bond_active_slave field. This gets read by port_configure_bond() into struct bond_setting's active_member_mac field. But this gets ignored by bond_create(), which sets bond->active_slave_mac to eth_addr_zero.

Why is it being set to eth_addr_zero rather than to the value of active_member_mac from the struct bond_settings that is passed to bond_create()? It means that the bond_active_slave field is ignored.

The behaviour was introduced in commit 30353934 ("ofproto/bond: Validate active-slave mac.") but I'm having a hard time understanding why it changed from using s->active_member_mac to eth_addr_zero when the initialisation logic moved to bond_create(). I'd be grateful for more context.

If this is the intended behaviour, why do we bother saving the bond_active_slave field at all? The original rationale described in commit 3e5aeeb5 ("bridge: Keep bond active slave selection across OVS restart") still seems sound to me.

Thanks,
Jonathan
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to