Hello,
For study and testing purposes, I am implementing dccp under older version of linux 2.6.10 to run as a module. During basic testing of the protocol packet exchange I've noticed a small problem at input processing pseudocode. It doesn’t seem to take into account a case, when sequence numbers are wrapping back to 0,1,2.... I am wonderring, If I have missed something in the algorithm and it’s a bug in my implementation.
Step 6: Check sequence numbers
If P.X == 0 and the relevant Allow Short Seqnos feature is 0,
/* Packet has short seqnos, but short seqnos not allowed */
Drop packet and return
Otherwise, if P.X == 0,
Extend P.seqno and P.ackno to 48 bits using the procedure
in Section 7.6
Let LSWL = S.SWL and LAWL = S.AWL
If P.type == CloseReq or P.type == Close or P.type == Reset,
LSWL := S.GSR + 1, LAWL := S.GAR
*******
If LSWL <= P.seqno <= S.SWH
and (P.ackno does not exist or LAWL <= P.ackno <= S.AWH),
*******
Update S.GSR, S.SWL, S.SWH
If P.type != Sync,
Update S.GAR
Otherwise,
If P.type == Reset,
Send Sync packet acknowledging S.GSR
Otherwise,
Send Sync packet acknowledging P.seqno
Drop packet and return
B.R.
Vladimir.