• Gerrit Renker's avatar
    dccp: Basic data structure for feature negotiation · bd012f2e
    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).
    
    Thanks to Arnaldo, who contributed the streamlined layout of the entry
    struct.
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Acked-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bd012f2e
feat.h 3.18 KB