Message ID | 4DAD1A6A.1090805@cn.fujitsu.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Wei Yongjun <yjwei@cn.fujitsu.com> Date: Tue, 19 Apr 2011 13:15:22 +0800 > From: Vlad Yasevich <vladislav.yasevich@hp.com> > > When processing an ACK for ADD_IP parameter, we only release > the routes on non-active transports. This can cause a wrong > source address to be used. We can release the routes and > cause new route lookups and source address selection so that > new addresses can be used as source. Additionally, we don't need > to lookup routes for all transports at the same time. We can let > the transmit code path update the cached route when the transport > actually sends something. > > Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> > Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 844adfd..f87ccb1 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -3193,11 +3193,8 @@ static void sctp_asconf_param_success(struct sctp_association *asoc, local_bh_enable(); list_for_each_entry(transport, &asoc->peer.transport_addr_list, transports) { - if (transport->state == SCTP_ACTIVE) - continue; dst_release(transport->dst); - sctp_transport_route(transport, NULL, - sctp_sk(asoc->base.sk)); + transport->dst = NULL; } break; case SCTP_PARAM_DEL_IP: @@ -3207,8 +3204,7 @@ static void sctp_asconf_param_success(struct sctp_association *asoc, list_for_each_entry(transport, &asoc->peer.transport_addr_list, transports) { dst_release(transport->dst); - sctp_transport_route(transport, NULL, - sctp_sk(asoc->base.sk)); + transport->dst = NULL; } break; default: