patch-2.4.26 linux-2.4.26/net/ipv4/igmp.c
Next file: linux-2.4.26/net/ipv4/ip_sockglue.c
Previous file: linux-2.4.26/net/ipv4/icmp.c
Back to the patch index
Back to the overall index
- Lines: 82
- Date:
2004-04-14 06:05:41.000000000 -0700
- Orig file:
linux-2.4.25/net/ipv4/igmp.c
- Orig date:
2004-02-18 05:36:32.000000000 -0800
diff -urN linux-2.4.25/net/ipv4/igmp.c linux-2.4.26/net/ipv4/igmp.c
@@ -101,7 +101,8 @@
#endif
-#define IP_MAX_MEMBERSHIPS 20
+#define IP_MAX_MEMBERSHIPS 20
+#define IP_MAX_MSF 10
#ifdef CONFIG_IP_MULTICAST
/* Parameter names and values are taken from igmp-v2-06 draft */
@@ -1204,6 +1205,9 @@
ASSERT_RTNL();
+ for (i=in_dev->mc_list; i; i=i->next)
+ igmp_group_dropped(i);
+
#ifdef CONFIG_IP_MULTICAST
in_dev->mr_ifc_count = 0;
if (del_timer(&in_dev->mr_ifc_timer))
@@ -1211,24 +1215,14 @@
in_dev->mr_gq_running = 0;
if (del_timer(&in_dev->mr_gq_timer))
__in_dev_put(in_dev);
-#endif
-
- for (i=in_dev->mc_list; i; i=i->next)
- igmp_group_dropped(i);
-
-#ifdef CONFIG_IP_MULTICAST
igmpv3_clear_delrec(in_dev);
#endif
ip_mc_dec_group(in_dev, IGMP_ALL_HOSTS);
}
-/* Device going up */
-
-void ip_mc_up(struct in_device *in_dev)
+void ip_mc_init_dev(struct in_device *in_dev)
{
- struct ip_mc_list *i;
-
ASSERT_RTNL();
in_dev->mc_tomb = 0;
@@ -1245,6 +1239,16 @@
#endif
in_dev->mc_lock = RW_LOCK_UNLOCKED;
+}
+
+/* Device going up */
+
+void ip_mc_up(struct in_device *in_dev)
+{
+ struct ip_mc_list *i;
+
+ ASSERT_RTNL();
+
ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS);
for (i=in_dev->mc_list; i; i=i->next)
@@ -1311,6 +1315,7 @@
* Join a socket to a group
*/
int sysctl_igmp_max_memberships = IP_MAX_MEMBERSHIPS;
+int sysctl_igmp_max_msf = IP_MAX_MSF;
static int ip_mc_del1_src(struct ip_mc_list *pmc, int sfmode,
@@ -1772,6 +1777,10 @@
}
/* else, add a new source to the filter */
+ if (psl && psl->sl_count >= sysctl_igmp_max_msf) {
+ err = -ENOBUFS;
+ goto done;
+ }
if (!psl || psl->sl_count == psl->sl_max) {
struct ip_sf_socklist *newpsl;
int count = IP_SFBLOCK;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)