bridge: Filter some gratuitous ARPs on bond slaves.
authorJesse Gross <jesse@nicira.com>
Wed, 2 Jun 2010 23:26:46 +0000 (16:26 -0700)
committerJesse Gross <jesse@nicira.com>
Fri, 4 Jun 2010 02:46:44 +0000 (19:46 -0700)
commit7febb9100b6a63aab46f8850de6de335f8a47345
tree5de263fd407f303de6975ba61aad7f0642d31260
parentb33c0ddb28655b5cc0dd851d3e26829a961c0e3d
bridge: Filter some gratuitous ARPs on bond slaves.

Normally we filter out packets received on a bond if we have
learned the source MAC as belonging to another port to avoid packets
sent on one slave and reflected back on another.  The exception to
this is gratuitous ARPs because they indicate that the host
has moved to another port.  However, this can result in an additional
problem on the switch that the host moved to if the gratuitous ARP is
reflected back on a bond slave.  In this case, we incorrectly relearn
the slave as the source of the MAC address.  To solve this, we lock the
learning entry for 5 seconds after receiving a gratuitous ARP against
further updates caused by gratuitous ARPs on bond slaves.

Bug #2516

Reported-by: Ian Campbell <ian.campbell@citrix.com>
lib/learning-switch.c
lib/mac-learning.c
lib/mac-learning.h
ofproto/ofproto.c
vswitchd/bridge.c