From dd9f319d94c99b96fc9b34ccde7389a91059fe31 Mon Sep 17 00:00:00 2001 From: Flavio Leitner Date: Tue, 5 Mar 2013 08:11:01 +0000 Subject: [PATCH] tcp: ipv6: bind() use stronger condition for bind_conflict We must try harder to get unique (addr, port) pairs when doing port autoselection for sockets with SO_REUSEADDR option set. This is a continuation of commit aacd9289af8b82f5fb01bcdd53d0e3406d1333c7 for IPv6. Signed-off-by: Flavio Leitner Signed-off-by: David S. Miller --- net/ipv6/inet6_connection_sock.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c index 9bfab19ff3c..5f25510f584 100644 --- a/net/ipv6/inet6_connection_sock.c +++ b/net/ipv6/inet6_connection_sock.c @@ -54,6 +54,10 @@ int inet6_csk_bind_conflict(const struct sock *sk, if (ipv6_rcv_saddr_equal(sk, sk2)) break; } + if (!relax && reuse && sk2->sk_reuse && + sk2->sk_state != TCP_LISTEN && + ipv6_rcv_saddr_equal(sk, sk2)) + break; } } -- 2.46.0