sctp: Set socket source address when additing first transport
authorVlad Yasevich <vladislav.yasevich@hp.com>
Wed, 11 Nov 2009 11:54:37 +0000 (11:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 14 Nov 2009 03:56:52 +0000 (19:56 -0800)
Recent commits
sctp: Get rid of an extra routing lookup when adding a transport
and
sctp: Set source addresses on the association before adding transports

changed when routes are added to the sctp transports.  As such,
we didn't set the socket source address correctly when adding the first
transport.  The first transport is always the primary/active one, so
when adding it, set the socket source address.  This was causing
regression failures in SCTP tests.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/transport.c

index c256e4839316b1cadc1480a8a6b482a306882a22..3b141bb32faf1b954dcd0ed2b1fd77e8bc1340b6 100644 (file)
@@ -308,7 +308,8 @@ void sctp_transport_route(struct sctp_transport *transport,
                /* Initialize sk->sk_rcv_saddr, if the transport is the
                 * association's active path for getsockname().
                 */
-               if (asoc && (transport == asoc->peer.active_path))
+               if (asoc && (!asoc->peer.primary_path ||
+                               (transport == asoc->peer.active_path)))
                        opt->pf->af->to_sk_saddr(&transport->saddr,
                                                 asoc->base.sk);
        } else