[NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware
[powerpc.git] / net / ipv6 / reassembly.c
index 76c88a9..5cd0bc6 100644 (file)
@@ -82,13 +82,6 @@ struct frag_queue
        __u16                   nhoffset;
 };
 
-struct inet_frags_ctl ip6_frags_ctl __read_mostly = {
-       .high_thresh     = 256 * 1024,
-       .low_thresh      = 192 * 1024,
-       .timeout         = IPV6_FRAG_TIMEOUT,
-       .secret_interval = 10 * 60 * HZ,
-};
-
 static struct inet_frags ip6_frags;
 
 int ip6_frag_nqueues(void)
@@ -605,7 +598,7 @@ static int ipv6_frag_rcv(struct sk_buff *skb)
                return 1;
        }
 
-       if (atomic_read(&ip6_frags.mem) > ip6_frags_ctl.high_thresh)
+       if (atomic_read(&ip6_frags.mem) > init_net.ipv6.sysctl.frags.high_thresh)
                ip6_evictor(ip6_dst_idev(skb->dst));
 
        if ((fq = fq_find(fhdr->identification, &hdr->saddr, &hdr->daddr,
@@ -632,12 +625,19 @@ static struct inet6_protocol frag_protocol =
        .flags          =       INET6_PROTO_NOPOLICY,
 };
 
-void __init ipv6_frag_init(void)
+void ipv6_frag_sysctl_init(struct net *net)
+{
+       ip6_frags.ctl = &net->ipv6.sysctl.frags;
+}
+
+int __init ipv6_frag_init(void)
 {
-       if (inet6_add_protocol(&frag_protocol, IPPROTO_FRAGMENT) < 0)
-               printk(KERN_ERR "ipv6_frag_init: Could not register protocol\n");
+       int ret;
+
+       ret = inet6_add_protocol(&frag_protocol, IPPROTO_FRAGMENT);
+       if (ret)
+               goto out;
 
-       ip6_frags.ctl = &ip6_frags_ctl;
        ip6_frags.hashfn = ip6_hashfn;
        ip6_frags.constructor = ip6_frag_init;
        ip6_frags.destructor = NULL;
@@ -646,4 +646,12 @@ void __init ipv6_frag_init(void)
        ip6_frags.match = ip6_frag_match;
        ip6_frags.frag_expire = ip6_frag_expire;
        inet_frags_init(&ip6_frags);
+out:
+       return ret;
+}
+
+void ipv6_frag_exit(void)
+{
+       inet_frags_fini(&ip6_frags);
+       inet6_del_protocol(&frag_protocol, IPPROTO_FRAGMENT);
 }