udp: add rehash on connect()
[firefly-linux-kernel-4.4.55.git] / net / ipv4 / datagram.c
index fb2465811b48658b6be95d6cfd2498c3f8d41da7..721a8a37b45c77ce1d3ae78afffe57cf9eaeedf1 100644 (file)
@@ -62,16 +62,17 @@ int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
        }
        if (!inet->inet_saddr)
                inet->inet_saddr = rt->rt_src;  /* Update source address */
-       if (!inet->inet_rcv_saddr)
+       if (!inet->inet_rcv_saddr) {
                inet->inet_rcv_saddr = rt->rt_src;
+               if (sk->sk_prot->rehash)
+                       sk->sk_prot->rehash(sk);
+       }
        inet->inet_daddr = rt->rt_dst;
        inet->inet_dport = usin->sin_port;
        sk->sk_state = TCP_ESTABLISHED;
        inet->inet_id = jiffies;
 
-       sk_dst_set(sk, &rt->u.dst);
+       sk_dst_set(sk, &rt->dst);
        return(0);
 }
-
 EXPORT_SYMBOL(ip4_datagram_connect);
-