diff options
author | Wei Yongjun <yjwei@cn.fujitsu.com> | 2009-06-15 22:07:23 -0400 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-09-04 18:20:55 -0400 |
commit | 3cd9749c0b758223a71e059fa44c2234547d9ee0 (patch) | |
tree | 62f99f43c552621e3fbdc30aaf56583073058afd /net/sctp | |
parent | 44e65c1ef1e771b32c82546ebfba910137aa8871 (diff) |
sctp: update the route for non-active transports after addresses are added
Update the route and saddr entries for the non-active transports as some
of the added addresses can be used as better source addresses, or may
be there is a better route.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 3d867ce0e5ec..9d881a61ac02 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -3134,6 +3134,14 @@ static void sctp_asconf_param_success(struct sctp_association *asoc, | |||
3134 | saddr->state = SCTP_ADDR_SRC; | 3134 | saddr->state = SCTP_ADDR_SRC; |
3135 | } | 3135 | } |
3136 | local_bh_enable(); | 3136 | local_bh_enable(); |
3137 | list_for_each_entry(transport, &asoc->peer.transport_addr_list, | ||
3138 | transports) { | ||
3139 | if (transport->state == SCTP_ACTIVE) | ||
3140 | continue; | ||
3141 | dst_release(transport->dst); | ||
3142 | sctp_transport_route(transport, NULL, | ||
3143 | sctp_sk(asoc->base.sk)); | ||
3144 | } | ||
3137 | break; | 3145 | break; |
3138 | case SCTP_PARAM_DEL_IP: | 3146 | case SCTP_PARAM_DEL_IP: |
3139 | local_bh_disable(); | 3147 | local_bh_disable(); |