From: Stephen Hemminger <shemminger@linux-foundation.org>
To: David Miller <davem@davemloft.net>
Cc: xen-devel@lists.xensource.com, jeff@garzik.org,
ian.pratt@xensource.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, chrisw@sous-sol.org,
virtualization@lists.osdl.org, akpm@linux-foundation.org,
ak@muc.de
Subject: [RFC] ARP notify option
Date: Tue, 6 Mar 2007 10:51:32 -0800 [thread overview]
Message-ID: <20070306105132.52c77491@freekitty> (raw)
In-Reply-To: <20070305.203536.92584097.davem@davemloft.net>
This adds another inet device option to enable gratuitous ARP
when device is brought up or address change. This is handy for
clusters or virtualization.
Tested on a normal device (not Xen).
Signed-off-by: Stephen Hemminger <shemminge@linux-foundation.org>
---
Documentation/networking/ip-sysctl.txt | 6 ++++++
include/linux/inetdevice.h | 2 ++
include/linux/sysctl.h | 1 +
net/ipv4/devinet.c | 16 ++++++++++++++++
4 files changed, 25 insertions(+)
--- net-2.6.22.orig/Documentation/networking/ip-sysctl.txt 2007-03-05 14:35:31.000000000 -0800
+++ net-2.6.22/Documentation/networking/ip-sysctl.txt 2007-03-05 16:46:47.000000000 -0800
@@ -732,6 +732,12 @@
The max value from conf/{all,interface}/arp_ignore is used
when ARP request is received on the {interface}
+arp_notify - BOOLEAN
+ Define mode for notification of address and device changes.
+ 0 - (default): do nothing
+ 1 - Generate gratuitous arp replies when device is brought up
+ or hardware address changes.
+
arp_accept - BOOLEAN
Define behavior when gratuitous arp replies are received:
0 - drop gratuitous arp frames
--- net-2.6.22.orig/include/linux/inetdevice.h 2007-03-05 14:35:34.000000000 -0800
+++ net-2.6.22/include/linux/inetdevice.h 2007-03-05 16:46:47.000000000 -0800
@@ -26,6 +26,7 @@
int arp_announce;
int arp_ignore;
int arp_accept;
+ int arp_notify;
int medium_id;
int no_xfrm;
int no_policy;
@@ -84,6 +85,7 @@
#define IN_DEV_ARPFILTER(in_dev) (ipv4_devconf.arp_filter || (in_dev)->cnf.arp_filter)
#define IN_DEV_ARP_ANNOUNCE(in_dev) (max(ipv4_devconf.arp_announce, (in_dev)->cnf.arp_announce))
#define IN_DEV_ARP_IGNORE(in_dev) (max(ipv4_devconf.arp_ignore, (in_dev)->cnf.arp_ignore))
+#define IN_DEV_ARP_NOTIFY(in_dev) (ipv4_devconf.arp_notify || (in_dev)->cnf.arp_notify)
struct in_ifaddr
{
--- net-2.6.22.orig/include/linux/sysctl.h 2007-03-05 14:35:34.000000000 -0800
+++ net-2.6.22/include/linux/sysctl.h 2007-03-05 16:46:47.000000000 -0800
@@ -495,6 +495,7 @@
NET_IPV4_CONF_ARP_IGNORE=19,
NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
NET_IPV4_CONF_ARP_ACCEPT=21,
+ NET_IPV4_CONF_ARP_NOTIFY=22,
__NET_IPV4_CONF_MAX
};
--- net-2.6.22.orig/net/ipv4/devinet.c 2007-03-05 14:35:34.000000000 -0800
+++ net-2.6.22/net/ipv4/devinet.c 2007-03-05 16:46:47.000000000 -0800
@@ -1089,6 +1089,14 @@
}
}
ip_mc_up(in_dev);
+ /* fall through */
+ case NETDEV_CHANGEADDR:
+ if (IN_DEV_ARP_NOTIFY(in_dev))
+ arp_send(ARPOP_REQUEST, ETH_P_ARP,
+ in_dev->ifa_list->ifa_address,
+ dev,
+ in_dev->ifa_list->ifa_address,
+ NULL, dev->dev_addr, NULL);
break;
case NETDEV_DOWN:
ip_mc_down(in_dev);
@@ -1495,6 +1503,14 @@
.proc_handler = &proc_dointvec,
},
{
+ .ctl_name = NET_IPV4_CONF_ARP_NOTIFY,
+ .procname = "arp_notify",
+ .data = &ipv4_devconf.arp_notify,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec,
+ },
+ {
.ctl_name = NET_IPV4_CONF_NOXFRM,
.procname = "disable_xfrm",
.data = &ipv4_devconf.no_xfrm,
next prev parent reply other threads:[~2007-03-06 18:51 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070301232443.195603797@goop.org>
2007-03-01 23:25 ` [patch 26/26] Xen-paravirt_ops: Add the Xen virtual network device driver Jeremy Fitzhardinge
2007-03-02 0:42 ` Stephen Hemminger
2007-03-02 0:56 ` Jeremy Fitzhardinge
2007-03-02 1:30 ` [RFC] Arp announce (for Xen) Stephen Hemminger
2007-03-02 8:09 ` Pekka Savola
2007-03-02 18:29 ` Ben Greear
2007-03-02 19:59 ` Stephen Hemminger
2007-03-02 8:46 ` Keir Fraser
2007-03-02 12:54 ` Andi Kleen
2007-03-02 14:08 ` jamal
2007-03-02 18:08 ` Chris Wright
2007-03-06 4:35 ` David Miller
2007-03-06 18:51 ` Stephen Hemminger [this message]
2007-03-06 19:04 ` [RFC] ARP notify option Jeremy Fitzhardinge
2007-03-06 19:07 ` Chris Wright
2007-03-06 21:18 ` Chris Friesen
2007-03-06 22:52 ` Stephen Hemminger
2007-03-07 6:42 ` Pekka Savola
2007-03-07 17:00 ` Stephen Hemminger
2007-03-02 1:21 ` [patch 26/26] Xen-paravirt_ops: Add the Xen virtual network device driver Christoph Hellwig
2007-03-02 1:26 ` Chris Wright
[not found] ` <20070301232527.956565107@goop.org>
[not found] ` <20070316092445.GM23174@elte.hu>
[not found] ` <20070316.023331.59468179.davem@davemloft.net>
2007-03-16 20:38 ` [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable Jeremy Fitzhardinge
2007-03-17 10:33 ` Rusty Russell
2007-03-18 7:33 ` David Miller
2007-03-18 7:59 ` Jeremy Fitzhardinge
2007-03-18 12:08 ` Andi Kleen
2007-03-18 15:58 ` Jeremy Fitzhardinge
2007-03-18 17:04 ` Andi Kleen
2007-03-18 17:29 ` Jeremy Fitzhardinge
2007-03-18 19:30 ` Andi Kleen
2007-03-18 23:46 ` Jeremy Fitzhardinge
2007-03-19 10:57 ` Andi Kleen
2007-03-19 17:58 ` Jeremy Fitzhardinge
2007-03-19 19:08 ` David Miller
2007-03-19 20:59 ` Andi Kleen
2007-03-20 3:18 ` Linus Torvalds
2007-03-20 3:47 ` David Miller
2007-03-20 4:19 ` Eric W. Biederman
2007-03-20 13:28 ` Andi Kleen
2007-03-20 16:25 ` Eric W. Biederman
2007-03-20 17:42 ` Andi Kleen
2007-03-20 16:52 ` Linus Torvalds
2007-03-20 18:03 ` Andi Kleen
2007-03-20 17:27 ` Linus Torvalds
2007-03-20 19:21 ` Andi Kleen
2007-03-20 18:49 ` Linus Torvalds
2007-03-20 20:23 ` Andi Kleen
2007-03-20 21:39 ` Alan Cox
2007-03-20 21:49 ` [Xen-devel] " Andi Kleen
2007-03-20 23:51 ` Linus Torvalds
2007-03-20 23:43 ` Linus Torvalds
2007-03-21 6:08 ` Andrew Morton
2007-03-20 16:12 ` Chuck Ebbert
2007-03-20 1:23 ` Zachary Amsden
2007-03-20 1:45 ` Jeremy Fitzhardinge
2007-03-19 2:47 ` Rusty Russell
2007-03-19 18:25 ` Eric W. Biederman
2007-03-19 18:38 ` Linus Torvalds
2007-03-19 18:44 ` Linus Torvalds
2007-03-19 19:33 ` Jeremy Fitzhardinge
2007-03-20 0:01 ` Rusty Russell
2007-03-20 2:00 ` Zachary Amsden
2007-03-20 4:20 ` Rusty Russell
2007-03-20 5:54 ` Jeremy Fitzhardinge
2007-03-20 11:33 ` Andreas Kleen
2007-03-20 15:09 ` Linus Torvalds
2007-03-20 15:58 ` Eric W. Biederman
2007-03-20 16:06 ` Linus Torvalds
2007-03-20 16:31 ` Jeremy Fitzhardinge
2007-03-20 22:09 ` Zachary Amsden
2007-03-21 0:24 ` Linus Torvalds
2007-03-21 2:53 ` Zachary Amsden
2007-03-21 2:15 ` Linus Torvalds
2007-03-21 3:43 ` Zachary Amsden
2007-03-20 22:43 ` Matt Mackall
2007-03-20 23:08 ` Zachary Amsden
2007-03-20 23:33 ` Jeremy Fitzhardinge
2007-03-21 1:14 ` Zachary Amsden
2007-03-20 23:41 ` Matt Mackall
2007-03-21 0:20 ` Jeremy Fitzhardinge
2007-03-20 19:28 ` Andi Kleen
2007-03-20 19:54 ` Zachary Amsden
2007-03-20 20:02 ` Andi Kleen
2007-03-20 16:26 ` Jeremy Fitzhardinge
2007-03-20 22:41 ` Rusty Russell
2007-03-20 17:00 ` Ingo Molnar
2007-03-21 0:03 ` Paul Mackerras
2007-04-12 23:16 ` David Miller
2007-03-19 18:41 ` Chris Wright
2007-03-19 19:10 ` Jeremy Fitzhardinge
2007-03-19 19:46 ` David Miller
2007-03-19 20:06 ` Jeremy Fitzhardinge
2007-03-19 23:42 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070306105132.52c77491@freekitty \
--to=shemminger@linux-foundation.org \
--cc=ak@muc.de \
--cc=akpm@linux-foundation.org \
--cc=chrisw@sous-sol.org \
--cc=davem@davemloft.net \
--cc=ian.pratt@xensource.com \
--cc=jeff@garzik.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=virtualization@lists.osdl.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).