vswitch: Fix handling of multicast packets received by bonds.
authorBen Pfaff <blp@nicira.com>
Wed, 10 Jun 2009 22:24:03 +0000 (15:24 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 10 Jun 2009 22:31:20 +0000 (15:31 -0700)
commitc93b1d6a4c7f96c5f75f7ec0972fe62e94d369dc
tree7fa104b040c0cebca553800533ab6877c3d866c2
parentda285df4bf68df22b0b987d3859b2d1a023125aa
vswitch: Fix handling of multicast packets received by bonds.

As long as bonding has been implemented, the vswitch has refused to learn
from multicast packets that arrive on a bond slave if it has already
learned any other port for that source MAC, because it is likely that we
sent the packet out ourselves and are only now receiving a copy of it on
our active slave.

This is entirely correct, but it does not go far enough.  In fact, the
bridge needs to entirely drop such packets.  Otherwise, a host whose MAC
is assigned to a slave other than the active slave will receive a second
copy of multicast packets that it sends out the bond, and other ports
will receive two copies of every multicast packet sent by such a host.

This commit implements this new policy, which simplifies the code at the
same time.

Bug #1387.
vswitchd/bridge.c