aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp
diff options
context:
space:
mode:
authorWei Yongjun <yjwei@cn.fujitsu.com>2009-06-15 22:07:23 -0400
committerVlad Yasevich <vladislav.yasevich@hp.com>2009-09-04 18:20:55 -0400
commit3cd9749c0b758223a71e059fa44c2234547d9ee0 (patch)
tree62f99f43c552621e3fbdc30aaf56583073058afd /net/sctp
parent44e65c1ef1e771b32c82546ebfba910137aa8871 (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.c8
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();