sctp: release cached route when the transport goes down.
When the sctp transport is marked down, we can release the cached route and force a new lookup when attempting to use this transport for anything. This way, if a better route or source address is available, we'll try to use it. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
This commit is contained in:
parent
3cd9749c0b
commit
40187886bc
|
@ -810,11 +810,16 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCTP_TRANSPORT_DOWN:
|
case SCTP_TRANSPORT_DOWN:
|
||||||
/* if the transort was never confirmed, do not transition it
|
/* If the transport was never confirmed, do not transition it
|
||||||
* to inactive state.
|
* to inactive state. Also, release the cached route since
|
||||||
|
* there may be a better route next time.
|
||||||
*/
|
*/
|
||||||
if (transport->state != SCTP_UNCONFIRMED)
|
if (transport->state != SCTP_UNCONFIRMED)
|
||||||
transport->state = SCTP_INACTIVE;
|
transport->state = SCTP_INACTIVE;
|
||||||
|
else {
|
||||||
|
dst_release(transport->dst);
|
||||||
|
transport->dst = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
spc_state = SCTP_ADDR_UNREACHABLE;
|
spc_state = SCTP_ADDR_UNREACHABLE;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue