}
 
 extern int sysctl_igmp_llm_reports;
-extern int sysctl_igmp_max_msf;
 extern int sysctl_igmp_qrv;
 
 struct ip_sf_socklist {
 
        unsigned int sysctl_tcp_notsent_lowat;
 
        int sysctl_igmp_max_memberships;
+       int sysctl_igmp_max_msf;
 
        struct ping_group_range ping_group_range;
 
 
 #include <linux/seq_file.h>
 #endif
 
-#define IP_MAX_MSF             10
-
 /* IGMP reports for link-local multicast groups are enabled by default */
 int sysctl_igmp_llm_reports __read_mostly = 1;
 
 /*
  *     Join a socket to a group
  */
-int sysctl_igmp_max_msf __read_mostly = IP_MAX_MSF;
 #ifdef CONFIG_IP_MULTICAST
 int sysctl_igmp_qrv __read_mostly = IGMP_QUERY_ROBUSTNESS_VARIABLE;
 #endif
        }
        /* else, add a new source to the filter */
 
-       if (psl && psl->sl_count >= sysctl_igmp_max_msf) {
+       if (psl && psl->sl_count >= net->ipv4.sysctl_igmp_max_msf) {
                err = -ENOBUFS;
                goto done;
        }
 
                            int optname, char __user *optval, unsigned int optlen)
 {
        struct inet_sock *inet = inet_sk(sk);
+       struct net *net = sock_net(sk);
        int val = 0, err;
        bool needs_rtnl = setsockopt_needs_rtnl(optname);
 
                }
                /* numsrc >= (1G-4) overflow in 32 bits */
                if (msf->imsf_numsrc >= 0x3ffffffcU ||
-                   msf->imsf_numsrc > sysctl_igmp_max_msf) {
+                   msf->imsf_numsrc > net->ipv4.sysctl_igmp_max_msf) {
                        kfree(msf);
                        err = -ENOBUFS;
                        break;
 
                /* numsrc >= (4G-140)/128 overflow in 32 bits */
                if (gsf->gf_numsrc >= 0x1ffffff ||
-                   gsf->gf_numsrc > sysctl_igmp_max_msf) {
+                   gsf->gf_numsrc > net->ipv4.sysctl_igmp_max_msf) {
                        err = -ENOBUFS;
                        goto mc_msf_out;
                }
 
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       {
-               .procname       = "igmp_max_msf",
-               .data           = &sysctl_igmp_max_msf,
-               .maxlen         = sizeof(int),
-               .mode           = 0644,
-               .proc_handler   = proc_dointvec
-       },
 #ifdef CONFIG_IP_MULTICAST
        {
                .procname       = "igmp_qrv",
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
+       {
+               .procname       = "igmp_max_msf",
+               .data           = &init_net.ipv4.sysctl_igmp_max_msf,
+               .maxlen         = sizeof(int),
+               .mode           = 0644,
+               .proc_handler   = proc_dointvec
+       },
        {
                .procname       = "tcp_keepalive_time",
                .data           = &init_net.ipv4.sysctl_tcp_keepalive_time,
 
        net->ipv4.sysctl_tcp_notsent_lowat = UINT_MAX;
 
        net->ipv4.sysctl_igmp_max_memberships = 20;
+       net->ipv4.sysctl_igmp_max_msf = 10;
 
        return 0;
 fail: