macvlan: Deterministic ingress packet delivery
authorEric Biederman <ebiederm@aristanetworks.com>
Fri, 13 Mar 2009 20:16:13 +0000 (13:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Mar 2009 20:16:13 +0000 (13:16 -0700)
commitf9ac30f080d23ef0a2d4a1b7c6806c9a21c0f324
treed10817f083028f8be53d48693f7cf3fadd24a3e0
parentb0832a2961022a076c812384435b5f0290b3fc91
macvlan: Deterministic ingress packet delivery

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: Eric Biederman <ebiederm@aristanetworks.com>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvlan.c