linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / net / ipv6 / udp.c
index 7ecfe82..513ed8f 100644 (file)
@@ -23,6 +23,7 @@
  *      2 of the License, or (at your option) any later version.
  */
 
+#include <linux/config.h>
 #include <linux/errno.h>
 #include <linux/types.h>
 #include <linux/socket.h>
@@ -781,7 +782,7 @@ do_udp_sendmsg:
                connected = 0;
        }
 
-       err = ip6_sk_dst_lookup(sk, &dst, fl);
+       err = ip6_dst_lookup(sk, &dst, fl);
        if (err)
                goto out;
        if (final_p)
@@ -878,13 +879,16 @@ static int udpv6_destroy_sock(struct sock *sk)
 /*
  *     Socket option code for UDP
  */
-static int do_udpv6_setsockopt(struct sock *sk, int level, int optname,
+static int udpv6_setsockopt(struct sock *sk, int level, int optname, 
                          char __user *optval, int optlen)
 {
        struct udp_sock *up = udp_sk(sk);
        int val;
        int err = 0;
 
+       if (level != SOL_UDP)
+               return ipv6_setsockopt(sk, level, optname, optval, optlen);
+
        if(optlen<sizeof(int))
                return -EINVAL;
 
@@ -922,31 +926,15 @@ static int do_udpv6_setsockopt(struct sock *sk, int level, int optname,
        return err;
 }
 
-static int udpv6_setsockopt(struct sock *sk, int level, int optname,
-                         char __user *optval, int optlen)
-{
-       if (level != SOL_UDP)
-               return ipv6_setsockopt(sk, level, optname, optval, optlen);
-       return do_udpv6_setsockopt(sk, level, optname, optval, optlen);
-}
-
-#ifdef CONFIG_COMPAT
-static int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
-                                  char __user *optval, int optlen)
-{
-       if (level != SOL_UDP)
-               return compat_ipv6_setsockopt(sk, level, optname,
-                                             optval, optlen);
-       return do_udpv6_setsockopt(sk, level, optname, optval, optlen);
-}
-#endif
-
-static int do_udpv6_getsockopt(struct sock *sk, int level, int optname,
+static int udpv6_getsockopt(struct sock *sk, int level, int optname, 
                          char __user *optval, int __user *optlen)
 {
        struct udp_sock *up = udp_sk(sk);
        int val, len;
 
+       if (level != SOL_UDP)
+               return ipv6_getsockopt(sk, level, optname, optval, optlen);
+
        if(get_user(len,optlen))
                return -EFAULT;
 
@@ -975,25 +963,6 @@ static int do_udpv6_getsockopt(struct sock *sk, int level, int optname,
        return 0;
 }
 
-static int udpv6_getsockopt(struct sock *sk, int level, int optname,
-                         char __user *optval, int __user *optlen)
-{
-       if (level != SOL_UDP)
-               return ipv6_getsockopt(sk, level, optname, optval, optlen);
-       return do_udpv6_getsockopt(sk, level, optname, optval, optlen);
-}
-
-#ifdef CONFIG_COMPAT
-static int compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
-                                  char __user *optval, int __user *optlen)
-{
-       if (level != SOL_UDP)
-               return compat_ipv6_getsockopt(sk, level, optname,
-                                             optval, optlen);
-       return do_udpv6_getsockopt(sk, level, optname, optval, optlen);
-}
-#endif
-
 static struct inet6_protocol udpv6_protocol = {
        .handler        =       udpv6_rcv,
        .err_handler    =       udpv6_err,
@@ -1067,26 +1036,22 @@ void udp6_proc_exit(void) {
 /* ------------------------------------------------------------------------ */
 
 struct proto udpv6_prot = {
-       .name              = "UDPv6",
-       .owner             = THIS_MODULE,
-       .close             = udpv6_close,
-       .connect           = ip6_datagram_connect,
-       .disconnect        = udp_disconnect,
-       .ioctl             = udp_ioctl,
-       .destroy           = udpv6_destroy_sock,
-       .setsockopt        = udpv6_setsockopt,
-       .getsockopt        = udpv6_getsockopt,
-       .sendmsg           = udpv6_sendmsg,
-       .recvmsg           = udpv6_recvmsg,
-       .backlog_rcv       = udpv6_queue_rcv_skb,
-       .hash              = udp_v6_hash,
-       .unhash            = udp_v6_unhash,
-       .get_port          = udp_v6_get_port,
-       .obj_size          = sizeof(struct udp6_sock),
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_udpv6_setsockopt,
-       .compat_getsockopt = compat_udpv6_getsockopt,
-#endif
+       .name =         "UDPv6",
+       .owner =        THIS_MODULE,
+       .close =        udpv6_close,
+       .connect =      ip6_datagram_connect,
+       .disconnect =   udp_disconnect,
+       .ioctl =        udp_ioctl,
+       .destroy =      udpv6_destroy_sock,
+       .setsockopt =   udpv6_setsockopt,
+       .getsockopt =   udpv6_getsockopt,
+       .sendmsg =      udpv6_sendmsg,
+       .recvmsg =      udpv6_recvmsg,
+       .backlog_rcv =  udpv6_queue_rcv_skb,
+       .hash =         udp_v6_hash,
+       .unhash =       udp_v6_unhash,
+       .get_port =     udp_v6_get_port,
+       .obj_size =     sizeof(struct udp6_sock),
 };
 
 static struct inet_protosw udpv6_protosw = {