sctp: release cached route when the transport goes down.
authorVlad Yasevich <vladislav.yasevich@hp.com>
Tue, 23 Jun 2009 15:28:05 +0000 (11:28 -0400)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 4 Sep 2009 22:20:55 +0000 (18:20 -0400)
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>
net/sctp/associola.c

index 525864bf4f07d6caef08520d195053d5b0e25edf..215b56951d76bde24512c87f8c50f01814e7ad49 100644 (file)
@@ -810,11 +810,16 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
                break;
 
        case SCTP_TRANSPORT_DOWN:
-               /* if the transort was never confirmed, do not transition it
-                * to inactive state.
+               /* If the transport was never confirmed, do not transition it
+                * to inactive state.  Also, release the cached route since
+                * there may be a better route next time.
                 */
                if (transport->state != SCTP_UNCONFIRMED)
                        transport->state = SCTP_INACTIVE;
+               else {
+                       dst_release(transport->dst);
+                       transport->dst = NULL;
+               }
 
                spc_state = SCTP_ADDR_UNREACHABLE;
                break;