• Gerrit Renker's avatar
    dccp ccid-2: Implementation of circular Ack Vector buffer with overflow handling · b3d14bff
    Gerrit Renker authored
    This completes the implementation of a circular buffer for Ack Vectors, by
    extending the current (linear array-based) implementation.  The changes are:
    
     (a) An `overflow' flag to deal with the case of overflow. As before, dynamic
         growth of the buffer will not be supported; but code will be added to deal
         robustly with overflowing Ack Vector buffers.
    
     (b) A `tail_seqno' field. When naively implementing the algorithm of Appendix A
         in RFC 4340, problems arise whenever subsequent Ack Vector records overlap,
         which can bring the entire run length calculation completely out of synch.
         (This is documented on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/\
                                                 ack_vectors/tracking_tail_ackno/ .)
     (c) The buffer length is now computed dynamically (i.e. current fill level),
         as the span between head to tail.
    
    As a result, dccp_ackvec_pending() is now simpler - the #ifdef is no longer
    necessary since buf_empty is always true when IP_DCCP_ACKVEC is not configured.
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    b3d14bff
ackvec.h 4.35 KB