summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2009-11-11 11:54:37 +0000
committerDavid S. Miller <davem@davemloft.net>2009-11-13 19:56:52 -0800
commita78102e74e782914039cd8a6939532649825a2e3 (patch)
treed741fc090641c3cb01f872bce286ccc2265b4b6f /net
parentf9c67811ebc00a42f62f5d542d3abd36bd49ae35 (diff)
downloadlinux-a78102e74e782914039cd8a6939532649825a2e3.tar.gz
linux-a78102e74e782914039cd8a6939532649825a2e3.tar.bz2
linux-a78102e74e782914039cd8a6939532649825a2e3.zip
sctp: Set socket source address when additing first transport
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>
Diffstat (limited to 'net')
-rw-r--r--net/sctp/transport.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sctp/transport.c b/net/sctp/transport.c
index c256e4839316..3b141bb32faf 100644
--- a/net/sctp/transport.c
+++ b/net/sctp/transport.c
@@ -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