]> err.no Git - linux-2.6/blobdiff - net/ipv6/udplite.c
[IPV6]: Remove unused code in ndisc_send_redirect().
[linux-2.6] / net / ipv6 / udplite.c
index f54016a55004d2d931471c06f14db922efa5f84d..93e52e0d57f23a87bbb97c2e8db53c3e5cca0ad6 100644 (file)
 
 DEFINE_SNMP_STAT(struct udp_mib, udplite_stats_in6) __read_mostly;
 
-static int udplitev6_rcv(struct sk_buff **pskb)
+static int udplitev6_rcv(struct sk_buff *skb)
 {
-       return __udp6_lib_rcv(pskb, udplite_hash, IPPROTO_UDPLITE);
+       return __udp6_lib_rcv(skb, udplite_hash, IPPROTO_UDPLITE);
 }
 
 static void udplitev6_err(struct sk_buff *skb,
                          struct inet6_skb_parm *opt,
                          int type, int code, int offset, __be32 info)
 {
-       return __udp6_lib_err(skb, opt, type, code, offset, info, udplite_hash);
+       __udp6_lib_err(skb, opt, type, code, offset, info, udplite_hash);
 }
 
 static struct inet6_protocol udplitev6_protocol = {
@@ -35,10 +35,7 @@ static struct inet6_protocol udplitev6_protocol = {
        .flags          =       INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
 };
 
-static int udplite_v6_get_port(struct sock *sk, unsigned short snum)
-{
-       return udplite_get_port(sk, snum, ipv6_rcv_saddr_equal);
-}
+DEFINE_PROTO_INUSE(udplitev6)
 
 struct proto udplitev6_prot = {
        .name              = "UDPLITEv6",
@@ -56,12 +53,14 @@ struct proto udplitev6_prot = {
        .backlog_rcv       = udpv6_queue_rcv_skb,
        .hash              = udp_lib_hash,
        .unhash            = udp_lib_unhash,
-       .get_port          = udplite_v6_get_port,
+       .get_port          = udp_v6_get_port,
        .obj_size          = sizeof(struct udp6_sock),
+       .h.udp_hash        = udplite_hash,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_udpv6_setsockopt,
        .compat_getsockopt = compat_udpv6_getsockopt,
 #endif
+       REF_PROTO_INUSE(udplitev6)
 };
 
 static struct inet_protosw udplite6_protosw = {
@@ -74,12 +73,29 @@ static struct inet_protosw udplite6_protosw = {
        .flags          = INET_PROTOSW_PERMANENT,
 };
 
-void __init udplitev6_init(void)
+int __init udplitev6_init(void)
 {
-       if (inet6_add_protocol(&udplitev6_protocol, IPPROTO_UDPLITE) < 0)
-               printk(KERN_ERR "%s: Could not register.\n", __FUNCTION__);
+       int ret;
+
+       ret = inet6_add_protocol(&udplitev6_protocol, IPPROTO_UDPLITE);
+       if (ret)
+               goto out;
+
+       ret = inet6_register_protosw(&udplite6_protosw);
+       if (ret)
+               goto out_udplitev6_protocol;
+out:
+       return ret;
 
-       inet6_register_protosw(&udplite6_protosw);
+out_udplitev6_protocol:
+       inet6_del_protocol(&udplitev6_protocol, IPPROTO_UDPLITE);
+       goto out;
+}
+
+void udplitev6_exit(void)
+{
+       inet6_unregister_protosw(&udplite6_protosw);
+       inet6_del_protocol(&udplitev6_protocol, IPPROTO_UDPLITE);
 }
 
 #ifdef CONFIG_PROC_FS
@@ -95,11 +111,11 @@ static struct udp_seq_afinfo udplite6_seq_afinfo = {
 
 int __init udplite6_proc_init(void)
 {
-       return udp_proc_register(&udplite6_seq_afinfo);
+       return udp_proc_register(&init_net, &udplite6_seq_afinfo);
 }
 
 void udplite6_proc_exit(void)
 {
-       udp_proc_unregister(&udplite6_seq_afinfo);
+       udp_proc_unregister(&init_net, &udplite6_seq_afinfo);
 }
 #endif