/*-------------------------------------------------------------*/ /* TCP header */ typedef struct { netwib_port src; netwib_port dst; netwib_uint32 seqnum; netwib_uint32 acknum; netwib_uint8 doff; netwib_bool reserved1; netwib_bool reserved2; netwib_bool reserved3; netwib_bool reserved4; netwib_bool cwr; /* RFC 3168 */ netwib_bool ece; /* RFC 3168 */ netwib_bool urg; netwib_bool ack; netwib_bool psh; netwib_bool rst; netwib_bool syn; netwib_bool fin; netwib_uint16 window; netwib_uint16 check; netwib_uint16 urgptr; netwib_bufext opts; /* TCP options as defined in tcpopts.h */ } netwib_tcphdr; typedef const netwib_tcphdr netwib_consttcphdr; #define NETWIB_TCPHDR_MINLEN 20 #define NETWIB_TCPHDR_MAXLEN 64 /*-------------------------------------------------------------*/ /* Name : netwib_tcphdr_initdefault Description : Initialize a netwib_tcphdr with default values. Input parameter(s) : Input/output parameter(s) : Output parameter(s) : *ptcphdr : netwib_tcphdr to initialize Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_tcphdr_initdefault(netwib_tcphdr *ptcphdr); /*-------------------------------------------------------------*/ /* Name : netwib_pkt_append_tcphdr Description : Initialize physical data from a netwib_tcphdr. Input parameter(s) : *ptcphdr : netwib_tcphdr Input/output parameter(s) : *ppht : buffer to initialize Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok Note : field doff is eventually recomputed. */ netwib_err netwib_pkt_append_tcphdr(netwib_consttcphdr *ptcphdr, netwib_buf *ppkt); netwib_err netwib_pkt_prepend_tcphdr(netwib_consttcphdr *ptcphdr, netwib_buf *ppkt); /*-------------------------------------------------------------*/ /* Name : netwib_pkt_decode_tcphdr Description : Decode a netwib_tcphdr from physical data. Input parameter(s) : *ppkt : buffer containing physical data Input/output parameter(s) : Output parameter(s) : *ptcphdr : netwib_tcphdr contained in pkt *pskipsize : size to use to skip this header Normal return values : NETWIB_ERR_OK : ok NETWIB_ERR_NOTCONVERTED : pkt could not be decoded NETWIB_ERR_DATAMISSING : pkt was not big enough */ netwib_err netwib_pkt_decode_tcphdr(netwib_constbuf *ppkt, netwib_tcphdr *ptcphdr, netwib_uint32 *pskipsize);