netdev
[Top] [All Lists]

Re: sysctl variable to force IGMP version [PATCH]

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: sysctl variable to force IGMP version [PATCH]
From: David Stevens <dlstevens@xxxxxxxxxx>
Date: Fri, 30 Jan 2004 13:49:40 -0700
Cc: netdev@xxxxxxxxxxx
Importance: Normal
Sender: netdev-bounce@xxxxxxxxxxx
Sensitivity:

Dave,
Here's the 2.4.x version of the "force IGMP version" sysctl patch.

+-DLS

diff -ruN linux-2.4.25-pre8/include/linux/inetdevice.h linux-2.4.25-pre8F1/include/linux/inetdevice.h
--- linux-2.4.25-pre8/include/linux/inetdevice.h 2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.25-pre8F1/include/linux/inetdevice.h 2004-01-29 16:24:53.000000000 -0800
@@ -19,6 +19,7 @@
int tag;
int arp_filter;
int medium_id;
+ int force_igmp_version;
void *sysctl;
};

diff -ruN linux-2.4.25-pre8/include/linux/sysctl.h linux-2.4.25-pre8F1/include/linux/sysctl.h
--- linux-2.4.25-pre8/include/linux/sysctl.h 2004-01-29 16:21:28.000000000 -0800
+++ linux-2.4.25-pre8F1/include/linux/sysctl.h 2004-01-29 16:39:42.000000000 -0800
@@ -359,6 +359,7 @@
NET_IPV4_CONF_TAG=12,
NET_IPV4_CONF_ARPFILTER=13,
NET_IPV4_CONF_MEDIUM_ID=14,
+ NET_IPV4_CONF_FORCE_IGMP_VERSION=15,
};

/* /proc/sys/net/ipv4/netfilter */
diff -ruN linux-2.4.25-pre8/net/ipv4/devinet.c linux-2.4.25-pre8F1/net/ipv4/devinet.c
--- linux-2.4.25-pre8/net/ipv4/devinet.c 2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.25-pre8F1/net/ipv4/devinet.c 2004-01-29 16:33:23.000000000 -0800
@@ -1057,7 +1057,7 @@
static struct devinet_sysctl_table
{
struct ctl_table_header *sysctl_header;
- ctl_table devinet_vars[15];
+ ctl_table devinet_vars[16];
ctl_table devinet_dev[2];
ctl_table devinet_conf_dir[2];
ctl_table devinet_proto_dir[2];
@@ -1106,6 +1106,9 @@
{NET_IPV4_CONF_ARPFILTER, "arp_filter",
&ipv4_devconf.arp_filter, sizeof(int), 0644, NULL,
&proc_dointvec},
+ {NET_IPV4_CONF_FORCE_IGMP_VERSION, "force_igmp_version",
+ &ipv4_devconf.force_igmp_version, sizeof(int), 0644, NULL,
+ &proc_dointvec},
{0}},

{{NET_PROTO_CONF_ALL, "all", NULL, 0, 0555, devinet_sysctl.devinet_vars},{0}},
diff -ruN linux-2.4.25-pre8/net/ipv4/igmp.c linux-2.4.25-pre8F1/net/ipv4/igmp.c
--- linux-2.4.25-pre8/net/ipv4/igmp.c 2004-01-29 16:21:28.000000000 -0800
+++ linux-2.4.25-pre8F1/net/ipv4/igmp.c 2004-01-29 16:22:55.000000000 -0800
@@ -122,10 +122,14 @@
* contradict to specs provided this delay is small enough.
*/

-#define IGMP_V1_SEEN(in_dev) ((in_dev)->mr_v1_seen && \
- time_before(jiffies, (in_dev)->mr_v1_seen))
-#define IGMP_V2_SEEN(in_dev) ((in_dev)->mr_v2_seen && \
- time_before(jiffies, (in_dev)->mr_v2_seen))
+#define IGMP_V1_SEEN(in_dev) (ipv4_devconf.force_igmp_version == 1 || \
+ (in_dev)->cnf.force_igmp_version == 1 || \
+ ((in_dev)->mr_v1_seen && \
+ time_before(jiffies, (in_dev)->mr_v1_seen)))
+#define IGMP_V2_SEEN(in_dev) (ipv4_devconf.force_igmp_version == 2 || \
+ (in_dev)->cnf.force_igmp_version == 2 || \
+ ((in_dev)->mr_v2_seen && \
+ time_before(jiffies, (in_dev)->mr_v2_seen)))

static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im);
static void igmpv3_del_delrec(struct in_device *in_dev, __u32 multiaddr);

(See attached file: 2.4igmpsysctl.patch)

Attachment: 2.4igmpsysctl.patch
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>