inet: request sock should init IPv6/IPv4 addresses
authorEric Dumazet <edumazet@google.com>
Wed, 18 Mar 2015 21:05:38 +0000 (14:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 19 Mar 2015 02:00:35 +0000 (22:00 -0400)
In order to be able to use sk_ehashfn() for request socks,
we need to initialize their IPv6/IPv4 addresses.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/request_sock.h
net/dccp/ipv4.c
net/ipv4/inet_diag.c
net/ipv4/syncookies.c
net/ipv4/tcp_ipv4.c

index 3fa4f82..e7ef863 100644 (file)
@@ -91,6 +91,11 @@ static inline struct request_sock *inet_reqsk(struct sock *sk)
        return (struct request_sock *)sk;
 }
 
+static inline struct sock *req_to_sk(struct request_sock *req)
+{
+       return (struct sock *)req;
+}
+
 static inline void reqsk_free(struct request_sock *req)
 {
        /* temporary debugging */
index f3f8906..e7ad291 100644 (file)
@@ -638,8 +638,8 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
                goto drop_and_free;
 
        ireq = inet_rsk(req);
-       ireq->ir_loc_addr = ip_hdr(skb)->daddr;
-       ireq->ir_rmt_addr = ip_hdr(skb)->saddr;
+       sk_rcv_saddr_set(req_to_sk(req), ip_hdr(skb)->daddr);
+       sk_daddr_set(req_to_sk(req), ip_hdr(skb)->saddr);
        ireq->ireq_family = AF_INET;
        ireq->ir_iif = sk->sk_bound_dev_if;
 
Simple merge
Simple merge
Simple merge