inet: fill request sock ir_iif for IPv4
authorEric Dumazet <edumazet@google.com>
Fri, 13 Mar 2015 22:51:10 +0000 (15:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 14 Mar 2015 19:05:10 +0000 (15:05 -0400)
Once request socks will be in ehash table, they will need to have
a valid ir_iff field.

This is currently true only for IPv6. This patch extends support
for IPv4 as well.

This means inet_diag_fill_req() can now properly use ir_iif,
which is better for IPv6 link locals anyway, as request sockets
and established sockets will propagate consistent netlink idiag_if.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ipv4.c
net/ipv4/inet_diag.c
net/ipv4/syncookies.c
net/ipv4/tcp_input.c
net/ipv6/tcp_ipv6.c

index 8f6f400..7f6456a 100644 (file)
@@ -643,6 +643,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
        ireq->ir_rmt_addr = ip_hdr(skb)->saddr;
        write_pnet(&ireq->ireq_net, sock_net(sk));
        ireq->ireq_family = AF_INET;
+       ireq->ir_iif = sk->sk_bound_dev_if;
 
        /*
         * Step 3: Process LISTEN state
Simple merge
Simple merge
Simple merge
Simple merge