]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit9522419f0b694640b82753499a17d3475fb59ed4
treed10817f083028f8be53d48693f7cf3fadd24a3e0
parent5153f0dbe7d6821d0d3aa754ab33bca3de1e6cc9
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