• Vladimir Oltean's avatar
    selftests: forwarding: add option to run tests with stable MAC addresses · b343734e
    Vladimir Oltean authored
    By default, DSA switch ports inherit their MAC address from the DSA
    master.
    
    This works well for practical situations, but some selftests like
    bridge_vlan_unaware.sh loop back 2 standalone DSA ports with 2 bridged
    DSA ports, and require the bridge to forward packets between the
    standalone ports.
    
    Due to the bridge seeing that the MAC DA it needs to forward is present
    as a local FDB entry (it coincides with the MAC address of the bridge
    ports), the test packets are not forwarded, but terminated locally on
    br0. In turn, this makes the ping and ping6 tests fail.
    
    Address this by introducing an option to have stable MAC addresses.
    When mac_addr_prepare is called, the current addresses of the netifs are
    saved and replaced with 00:01:02:03:04:${netif number}. Then when
    mac_addr_restore is called at the end of the test, the original MAC
    addresses are restored. This ensures that the MAC addresses are unique,
    which makes the test pass even for DSA ports.
    
    The usage model is for the behavior to be opt-in via STABLE_MAC_ADDRS,
    which DSA should set to true, all others behave as before. By hooking
    the calls to mac_addr_prepare and mac_addr_restore within the forwarding
    lib itself, we do not need to patch each individual selftest, the only
    requirement is that pre_cleanup is called.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b343734e
lib.sh 30.2 KB