]> err.no Git - linux-2.6/blobdiff - net/dccp/ipv6.c
[IPV6]: Remove unused code in ndisc_send_redirect().
[linux-2.6] / net / dccp / ipv6.c
index ed0a0053a797ffdf74d9e07b8f9fdfdabd04a62c..2fec1af1a8c39e6e1e70472f2633d41f8dae6d68 100644 (file)
@@ -39,21 +39,15 @@ static struct socket *dccp_v6_ctl_socket;
 static struct inet_connection_sock_af_ops dccp_ipv6_mapped;
 static struct inet_connection_sock_af_ops dccp_ipv6_af_ops;
 
-static int dccp_v6_get_port(struct sock *sk, unsigned short snum)
-{
-       return inet_csk_get_port(&dccp_hashinfo, sk, snum,
-                                inet6_csk_bind_conflict);
-}
-
 static void dccp_v6_hash(struct sock *sk)
 {
        if (sk->sk_state != DCCP_CLOSED) {
                if (inet_csk(sk)->icsk_af_ops == &dccp_ipv6_mapped) {
-                       dccp_hash(sk);
+                       inet_hash(sk);
                        return;
                }
                local_bh_disable();
-               __inet6_hash(&dccp_hashinfo, sk);
+               __inet6_hash(sk);
                local_bh_enable();
        }
 }
@@ -230,8 +224,7 @@ out:
 }
 
 
-static int dccp_v6_send_response(struct sock *sk, struct request_sock *req,
-                                struct dst_entry *dst)
+static int dccp_v6_send_response(struct sock *sk, struct request_sock *req)
 {
        struct inet6_request_sock *ireq6 = inet6_rsk(req);
        struct ipv6_pinfo *np = inet6_sk(sk);
@@ -240,6 +233,7 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req,
        struct in6_addr *final_p = NULL, final;
        struct flowi fl;
        int err = -1;
+       struct dst_entry *dst;
 
        memset(&fl, 0, sizeof(fl));
        fl.proto = IPPROTO_DCCP;
@@ -251,28 +245,26 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req,
        fl.fl_ip_sport = inet_sk(sk)->sport;
        security_req_classify_flow(req, &fl);
 
-       if (dst == NULL) {
-               opt = np->opt;
+       opt = np->opt;
 
-               if (opt != NULL && opt->srcrt != NULL) {
-                       const struct rt0_hdr *rt0 = (struct rt0_hdr *)opt->srcrt;
+       if (opt != NULL && opt->srcrt != NULL) {
+               const struct rt0_hdr *rt0 = (struct rt0_hdr *)opt->srcrt;
 
-                       ipv6_addr_copy(&final, &fl.fl6_dst);
-                       ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
-                       final_p = &final;
-               }
+               ipv6_addr_copy(&final, &fl.fl6_dst);
+               ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
+               final_p = &final;
+       }
 
-               err = ip6_dst_lookup(sk, &dst, &fl);
-               if (err)
-                       goto done;
+       err = ip6_dst_lookup(sk, &dst, &fl);
+       if (err)
+               goto done;
 
-               if (final_p)
-                       ipv6_addr_copy(&fl.fl6_dst, final_p);
+       if (final_p)
+               ipv6_addr_copy(&fl.fl6_dst, final_p);
 
-               err = xfrm_lookup(&dst, &fl, sk, 0);
-               if (err < 0)
-                       goto done;
-       }
+       err = xfrm_lookup(&dst, &fl, sk, 0);
+       if (err < 0)
+               goto done;
 
        skb = dccp_make_response(sk, dst, req);
        if (skb != NULL) {
@@ -454,7 +446,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
        dreq->dreq_iss     = dccp_v6_init_sequence(skb);
        dreq->dreq_service = service;
 
-       if (dccp_v6_send_response(sk, req, NULL))
+       if (dccp_v6_send_response(sk, req))
                goto drop_and_free;
 
        inet6_csk_reqsk_queue_hash_add(sk, req, DCCP_TIMEOUT_INIT);
@@ -630,8 +622,8 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
 
        newinet->daddr = newinet->saddr = newinet->rcv_saddr = LOOPBACK4_IPV6;
 
-       __inet6_hash(&dccp_hashinfo, newsk);
-       inet_inherit_port(&dccp_hashinfo, sk, newsk);
+       __inet6_hash(newsk);
+       inet_inherit_port(sk, newsk);
 
        return newsk;
 
@@ -1054,6 +1046,7 @@ static struct inet_connection_sock_af_ops dccp_ipv6_af_ops = {
        .getsockopt        = ipv6_getsockopt,
        .addr2sockaddr     = inet6_csk_addr2sockaddr,
        .sockaddr_len      = sizeof(struct sockaddr_in6),
+       .bind_conflict     = inet6_csk_bind_conflict,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_ipv6_setsockopt,
        .compat_getsockopt = compat_ipv6_getsockopt,
@@ -1123,9 +1116,9 @@ static struct proto dccp_v6_prot = {
        .recvmsg           = dccp_recvmsg,
        .backlog_rcv       = dccp_v6_do_rcv,
        .hash              = dccp_v6_hash,
-       .unhash            = dccp_unhash,
+       .unhash            = inet_unhash,
        .accept            = inet_csk_accept,
-       .get_port          = dccp_v6_get_port,
+       .get_port          = inet_csk_get_port,
        .shutdown          = dccp_shutdown,
        .destroy           = dccp_v6_destroy_sock,
        .orphan_count      = &dccp_orphan_count,
@@ -1133,6 +1126,7 @@ static struct proto dccp_v6_prot = {
        .obj_size          = sizeof(struct dccp6_sock),
        .rsk_prot          = &dccp6_request_sock_ops,
        .twsk_prot         = &dccp6_timewait_sock_ops,
+       .h.hashinfo        = &dccp_hashinfo,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_dccp_setsockopt,
        .compat_getsockopt = compat_dccp_getsockopt,