• Eric Biederman's avatar
    macvlan: Deterministic ingress packet delivery · f9ac30f0
    Eric Biederman authored
    Changing the mac address when a macvlan device is up will leave the
    device on the wrong hash chain making it impossible to receive
    packets.
    
    There is no checking of the mac address set on the macvlan.  Allowing
    a misconfiguration to grab packets from the the underlying device or
    another macvlan.
    
    To resolve these problems I update the hash table of macvlans when the
    mac address of a macvlan changes, and when updating the hash table
    I verify that the new mac address is usable.
    
    The result is well defined and predictable if not perfect handling of
    mac vlan mac addresses.
    
    To keep the code clear I have created a set of hash table maintenance
    in macvlan so I am not open coding the hash function and the logic
    needed to update the hash table all over the place.
    Signed-off-by: default avatarEric Biederman <ebiederm@aristanetworks.com>
    Acked-by: default avatarPatrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f9ac30f0
macvlan.c 15.4 KB