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:
Vlad Yasevich 2009-06-23 11:28:05 -04:00
parent 3cd9749c0b
commit 40187886bc
1 changed files with 7 additions and 2 deletions

View File

@ -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;