• Gerrit Renker's avatar
    dccp: Basic data structure for feature negotiation · 5c7c9451
    Gerrit Renker authored
    This patch prepares for the new and extended feature-negotiation routines.
    
    The following feature-negotiation data structures are provided:
    	* a container for the various (SP or NN) values,
    	* symbolic state names to track feature states,
    	* an entry struct which holds all current information together,
    	* elementary functions to fill in and process these structures.
    
    Entry structs are arranged as FIFO for the following reason: RFC 4340 specifies
    that if multiple options of the same type are present, they are processed in the
    order of their appearance in the packet; which means that this order needs to be
    preserved in the local data structure (the later insertion code also respects
    this order).
    
    The struct list_head has been chosen for the following reasons: the most 
    frequent operations are
     * add new entry at tail (when receiving Change or setting socket options);
     * delete entry (when Confirm has been received);
     * deep copy of entire list (cloning from listening socket onto request socket).
    
    The NN value has been set to 64 bit, which is a currently sufficient upper limit
    (Sequence Window feature has 48 bit).
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
    5c7c9451
feat.c 16 KB