On Jan 28, 2008 11:16 PM, Gerrit Renker <[EMAIL PROTECTED]> wrote:
> This patch was triggered by finding the following message in the syslog:
> "kernel: dccp_check_seqno: DCCP: Step 6 failed for DATAACK packet, [...]
> P.ackno exists or LAWL(82947089) <= P.ackno(82948208)
> <= S.AWH(82948728), sending SYNC..."
>
> Note the difference between AWH and AWL: it is 1639 packets (while Sequence
> Window was actually at 100). A closer look at the trace showed that
> LAWL = AWL = 82947089 equalled the ISS on the Response.
>
> The cause of the bug was that AWL was only ever set on the first packet - the
> DCCP-Request sent by dccp_v{4,6}_connect().
>
> The fix is to continually update AWL/AWH with each new packet (as GSS=AWH).
>
> In addition, AWL/AWH are now updated to enforce more stringent checks on the
> initial sequence numbers when connecting:
> * AWL is initialised to ISS and remains at this value;
> * AWH is always set to GSS (via dccp_update_gss());
> * so on the first Request: AWL = AWH = ISS,
> and on the n-th Request: AWL = ISS, AWH = ISS+n.
>
> As a consequence, only Response packets that refer to Requests sent by this
> host will pass, all others are discarded. This is the intention and in effect
> implements the initial adjustments for AWL as specified in RFC 4340, 7.5.1.
>
> Note: A problem that remains is that ISS can potentially be under-run even
> after
> the initial handshake; this is addressed a subsequent patch.
>
> Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
Yes I had seen this and had worked out that variables weren't being
updated as they should be but hadn't got as far as a fix before I
stopped my coding days so much :-(
Acked-by: Ian McDonald <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html