netwib doc_html (version 5.39.0)

## main index

## section index

    /*-------------------------------------------------------------*/
    typedef enum {
      NETWIB_TCPOPTTYPE_END = 0,          /* rfc 793 - end of options */
      NETWIB_TCPOPTTYPE_NOOP = 1,         /* rfc 793 - no operation */
      NETWIB_TCPOPTTYPE_MSS = 2,          /* rfc 793 - maximum segment size */
      NETWIB_TCPOPTTYPE_WINDOWSCALE = 3,  /* rfc 1323 - window scale */
      NETWIB_TCPOPTTYPE_SACKPERMITTED = 4,/* rfc 2018 - SACK permitted */
      NETWIB_TCPOPTTYPE_SACK = 5,    /* rfc 2018 - selective acknowledgment */
      NETWIB_TCPOPTTYPE_ECHOREQUEST = 6,  /* rfc 1072 - echo request */
      NETWIB_TCPOPTTYPE_ECHOREPLY = 7,    /* rfc 1072 - echo reply */
      NETWIB_TCPOPTTYPE_TIMESTAMP = 8,    /* rfc 1323 - timestamp */
      NETWIB_TCPOPTTYPE_CC = 11,          /* rfc 1644 - connection count */
      NETWIB_TCPOPTTYPE_CCNEW = 12,       /* rfc 1644 - connection count */
      NETWIB_TCPOPTTYPE_CCECHO = 13       /* rfc 1644 - connection count */
    } netwib_tcpopttype;

    /*-------------------------------------------------------------*/
    /* maximum length of one TCP option */
    #define NETWIB_TCPOPT_MAXLEN 40

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint16 maxsegsize;
    } netwib_tcpopt_mss;
    typedef const netwib_tcpopt_mss netwib_consttcpopt_mss;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint8 windowscale;
    } netwib_tcpopt_windowscale;
    typedef const netwib_tcpopt_windowscale netwib_consttcpopt_windowscale;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint32 storedvalues; /* 0 to 4 */
      netwib_uint32 leftedge[4];
      netwib_uint32 rightedge[4];
    } netwib_tcpopt_sack;
    typedef const netwib_tcpopt_sack netwib_consttcpopt_sack;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint32 data;
    } netwib_tcpopt_echo;
    typedef const netwib_tcpopt_echo netwib_consttcpopt_echo;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint32 val;
      netwib_uint32 echoreply;
    } netwib_tcpopt_timestamp;
    typedef const netwib_tcpopt_timestamp netwib_consttcpopt_timestamp;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_uint32 connectioncount;
    } netwib_tcpopt_cc;
    typedef const netwib_tcpopt_cc netwib_consttcpopt_cc;

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_tcpopttype type;
      union {
        /* type end : no value */
        /* type noop : no value */
        netwib_tcpopt_mss mss;
        netwib_tcpopt_windowscale windowscale;
        /* type sackpermitted : no value */
        netwib_tcpopt_sack sack;
        netwib_tcpopt_echo echo; /* used for request and reply */
        netwib_tcpopt_timestamp timestamp;
        netwib_tcpopt_cc cc; /* used for cc, ccnew and ccecho */
      } opt;
    } netwib_tcpopt;
    typedef const netwib_tcpopt netwib_consttcpopt;

    /*-------------------------------------------------------------*/
    /* Name : netwib_tcpopt_initdefault
       Description :
         Initialize a netwib_tcpopt with default values.
       Input parameter(s) :
       Input/output parameter(s) :
       Output parameter(s) :
         *ptcpopt : netwib_tcpopt to initialize
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_tcpopt_initdefault(netwib_tcpopttype tcpopttype,
                                         netwib_tcpopt *ptcpopt);

    /*-------------------------------------------------------------*/
    /* Name : netwib_pkt_append_tcpopt
       Description :
         Initialize physical data from a netwib_tcpopt.
       Input parameter(s) :
         tcpopt : netwib_tcpopt
       Input/output parameter(s) :
         *ppht : buffer to initialize
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_pkt_append_tcpopt(netwib_consttcpopt *ptcpopt,
                                        netwib_buf *ppkt);
    netwib_err netwib_pkt_prepend_tcpopt(netwib_consttcpopt *ptcpopt,
                                         netwib_buf *ppkt);

    /*-------------------------------------------------------------*/
    /* Name : netwib_pkt_decode_tcpopt
       Description :
         Decode a netwib_tcpopt from data coming from wire.
       Input parameter(s) :
         *ppkt : buffer containing physical data
       Input/output parameter(s) :
       Output parameter(s) :
         *ptcpopt : netwib_tcpopt to initialize
         *pskipsize : size to skip this option
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_pkt_decode_tcpopt(netwib_constbuf *ppkt,
                                        netwib_tcpopt *ptcpopt,
                                        netwib_uint32 *pskipsize);

## main index

## section index