[SCTP]: Set assoc_id correctly during INIT collision.
authorVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 4 May 2007 20:55:27 +0000 (13:55 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 May 2007 20:55:27 +0000 (13:55 -0700)
commit07d939677166cc4f000c767196872a9becc2697b
treebef3d3c75ac3dd56813adbc63281feb4195a5b47
parent827bf12236fbafc02bc899aec1b37c342c8cf4e5
[SCTP]: Set assoc_id correctly during INIT collision.

During the INIT/COOKIE-ACK collision cases, it's possible to get
into a situation where the association id is not yet set at the time
of the user event generation.  As a result, user events have an
association id set to 0 which will confuse applications.

This happens if we hit case B of duplicate cookie processing.
In the particular example found and provided by Oscar Isaula
<Oscar.Isaula@motorola.com>, flow looks like this:
A B
---- INIT------->  (lost)
    <---------INIT------
---- INIT-ACK--->
    <------ Cookie ECHO

When the Cookie Echo is received, we end up trying to update the
association that was created on A as a result of the (lost) INIT,
but that association doesn't have the ID set yet.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sctp/command.h
include/net/sctp/structs.h
net/sctp/associola.c
net/sctp/sm_make_chunk.c
net/sctp/sm_sideeffect.c
net/sctp/sm_statefuns.c