[Bridge] [PATCH 3.2 01/06] "bridge should send gratuitous ARP to notify peer while a bond, which is a port of this bridge, changes."

邢庆杰 xqjcool at gmail.com
Sat Jan 6 09:25:20 UTC 2018


We create bond0 and add eth0&eth1 as slaves. Eth0 is active. Then we add
bond0
into br0 as a bridge port. Br0 has ip address. When eth0 is down, after
bond0's
failover eth1 become active. At this moment, we need br0 send a gratuitous
ARP
to notify peer to update ARP table.

Signed-off-by: Xing.Qingjie <xqjcool at gmail.com>
---
 net/bridge/br_notify.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/net/bridge/br_notify.c b/net/bridge/br_notify.c
index a76b621..90cf123 100644
--- a/net/bridge/br_notify.c
+++ b/net/bridge/br_notify.c
@@ -34,6 +34,7 @@ static int br_device_event(struct notifier_block *unused,
unsigned long event, v
        struct net_device *dev = ptr;
        struct net_bridge_port *p;
        struct net_bridge *br;
+       struct in_device *in_dev;
        bool changed_addr;
        int err;
@@ -102,6 +103,17 @@ static int br_device_event(struct notifier_block
*unused, unsigned long event, v
        case NETDEV_PRE_TYPE_CHANGE:
                /* Forbid underlaying device to change its type. */
                return NOTIFY_BAD;
+
+       case NETDEV_NOTIFY_PEERS:
+               /* Send gratuitous arp while bond,a port of bridge, changes
*/
+               if (dev->priv_flags & IFF_BONDING && dev->flags &
IFF_MASTER) {
+                       in_dev = __in_dev_get_rtnl(br->dev);
+
+                       ASSERT_RTNL();
+                       if (in_dev)
+                               inetdev_send_gratuitous_arp(br->dev,
in_dev);
+               }
+               break;
        }
        /* Events that may cause spanning tree to refresh */
--
1.7.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/bridge/attachments/20180106/537e67bb/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-bridge-should-send-gratuitous-ARP-to-notify-peer-whi.patch
Type: application/octet-stream
Size: 1677 bytes
Desc: not available
URL: <http://lists.linuxfoundation.org/pipermail/bridge/attachments/20180106/537e67bb/attachment.obj>


More information about the Bridge mailing list