[PATCH v3 net-next] bonding: extend bond_arp_send_all to bridge devices

Subsystems: bonding driver, networking drivers, the rest

STALE5035d

3 messages, 2 authors, 2012-11-06 · open the first message on its own page

[PATCH v3 net-next] bonding: extend bond_arp_send_all to bridge devices

From: Chris J Arges <hidden>
Date: 2012-11-05 22:30:47

ARP monitoring does not work when we have a network in the
following configuration:

eth0----+ +----bond0.100----br0-100---{+virtual machines
          | |
          +----bond0----+----br0---(fixed IP)->--{LAN arp_ip_target}
          | |
eth1----+ +----bond0.200----br0-200---{+virtual machines

This patch extends bond_arp_send_all to check if a device
is also in a bridge.

This is related to the following issues:
http://launchpad.net/bugs/736226
http://bugzilla.kernel.org/show_bug.cgi?id=31822

Thanks to help from Andy Gospodarek [off-list ref].

Signed-off-by: Chris J Arges <redacted>
---
 drivers/net/bonding/bond_main.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index b2530b0..cb791f6 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2708,6 +2708,18 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
 			continue;
 		}
 
+		/*
+		 * Check if the target is part of a bridge.
+		 */
+		if (rt->dst.dev->priv_flags & IFF_EBRIDGE) {
+			/* Confirm addr is part of the bridge */
+			addr = bond_confirm_addr(rt->dst.dev, targets[i], 0);
+
+			/* Send ARP request */
+			bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], addr, 0);
+			continue;
+		}
+
 		if (net_ratelimit()) {
 			pr_warning("%s: no path to arp_ip_target %pI4 via rt.dev %s\n",
 				   bond->dev->name, &targets[i],
-- 
1.7.9.5

Re: [PATCH v3 net-next] bonding: extend bond_arp_send_all to bridge devices

From: Jay Vosburgh <hidden>
Date: 2012-11-05 22:45:52

Chris J Arges [off-list ref] wrote:
ARP monitoring does not work when we have a network in the
following configuration:

eth0----+ +----bond0.100----br0-100---{+virtual machines
         | |
         +----bond0----+----br0---(fixed IP)->--{LAN arp_ip_target}
         | |
eth1----+ +----bond0.200----br0-200---{+virtual machines

This patch extends bond_arp_send_all to check if a device
is also in a bridge.

This is related to the following issues:
http://launchpad.net/bugs/736226
http://bugzilla.kernel.org/show_bug.cgi?id=31822

Thanks to help from Andy Gospodarek [off-list ref].

Signed-off-by: Chris J Arges <redacted>
	What has changed that you're up to version 3 now?
quoted hunk
drivers/net/bonding/bond_main.c |   12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index b2530b0..cb791f6 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2708,6 +2708,18 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
			continue;
		}

+		/*
+		 * Check if the target is part of a bridge.
+		 */
		/* Comment should be formatted like this.
		 */
+		if (rt->dst.dev->priv_flags & IFF_EBRIDGE) {
+			/* Confirm addr is part of the bridge */
+			addr = bond_confirm_addr(rt->dst.dev, targets[i], 0);
+
+			/* Send ARP request */
	I think this comment is unnecessary.

	-J
+			bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], addr, 0);
+			continue;
+		}
+
		if (net_ratelimit()) {
			pr_warning("%s: no path to arp_ip_target %pI4 via rt.dev %s\n",
				   bond->dev->name, &targets[i],
-- 
1.7.9.5
---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com

Re: [PATCH v3 net-next] bonding: extend bond_arp_send_all to bridge devices

From: Chris J Arges <hidden>
Date: 2012-11-06 13:56:18

On 11/05/2012 04:45 PM, Jay Vosburgh wrote:
Chris J Arges [off-list ref] wrote:
quoted
ARP monitoring does not work when we have a network in the
following configuration:

eth0----+ +----bond0.100----br0-100---{+virtual machines
         | |
         +----bond0----+----br0---(fixed IP)->--{LAN arp_ip_target}
         | |
eth1----+ +----bond0.200----br0-200---{+virtual machines

This patch extends bond_arp_send_all to check if a device
is also in a bridge.

This is related to the following issues:
http://launchpad.net/bugs/736226
http://bugzilla.kernel.org/show_bug.cgi?id=31822

Thanks to help from Andy Gospodarek [off-list ref].

Signed-off-by: Chris J Arges <redacted>
	What has changed that you're up to version 3 now?
Had (user) issues with git send-email, and wanted to send a clean patch.
Sorry about that.
quoted
drivers/net/bonding/bond_main.c |   12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index b2530b0..cb791f6 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2708,6 +2708,18 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
			continue;
		}

+		/*
+		 * Check if the target is part of a bridge.
+		 */
		/* Comment should be formatted like this.
		 */
quoted
+		if (rt->dst.dev->priv_flags & IFF_EBRIDGE) {
+			/* Confirm addr is part of the bridge */
+			addr = bond_confirm_addr(rt->dst.dev, targets[i], 0);
+
+			/* Send ARP request */
	I think this comment is unnecessary.

	-J
quoted
+			bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], addr, 0);
+			continue;
+		}
+
Great, sending v4 soon with these changes.
--chris j arges
quoted
		if (net_ratelimit()) {
			pr_warning("%s: no path to arp_ip_target %pI4 via rt.dev %s\n",
				   bond->dev->name, &targets[i],
-- 
1.7.9.5
---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help