main index

section index




/*-------------------------------------------------------------*/
/* Protocol values */
typedef enum {
  NETWIB_IP4HDRPROTO_IP = 0,        /* Dummy protocol for TCP */
  NETWIB_IP4HDRPROTO_HOPOPTS = 0,   /* IPv6 Hop-by-Hop options */
  NETWIB_IP4HDRPROTO_ICMP4 = 1,     /* Internet Control Message Protocol */
  NETWIB_IP4HDRPROTO_IGMP = 2,      /* Internet Group Management Protocol */
  NETWIB_IP4HDRPROTO_IPIP = 4,      /* IPIP tunnels */
  NETWIB_IP4HDRPROTO_TCP = 6,       /* Transmission Control Protocol */
  NETWIB_IP4HDRPROTO_EGP = 8,       /* Exterior Gateway Protocol */
  NETWIB_IP4HDRPROTO_PUP = 12,      /* PUP protocol */
  NETWIB_IP4HDRPROTO_UDP = 17,      /* User Datagram Protocol */
  NETWIB_IP4HDRPROTO_IDP = 22,      /* XNS IDP protocol */
  NETWIB_IP4HDRPROTO_TP = 29,       /* SO Transport Protocol Class 4 */
  NETWIB_IP4HDRPROTO_IP6 = 41,      /* IPv6 header */
  NETWIB_IP4HDRPROTO_ROUTING = 43,  /* IPv6 routing header */
  NETWIB_IP4HDRPROTO_FRAGMENT = 44, /* IPv6 fragmentation header */
  NETWIB_IP4HDRPROTO_RSVP = 46,     /* Reservation Protocol */
  NETWIB_IP4HDRPROTO_GRE = 47,      /* General Routing Encapsulation */
  NETWIB_IP4HDRPROTO_ESP = 50,      /* encapsulating security payload */
  NETWIB_IP4HDRPROTO_AH = 51,       /* authentication header */
  NETWIB_IP4HDRPROTO_ICMP6 = 58,    /* ICMPv6 */
  NETWIB_IP4HDRPROTO_NONE = 59,     /* IPv6 no next header */
  NETWIB_IP4HDRPROTO_DSTOPTS = 60,  /* IPv6 destination options */
  NETWIB_IP4HDRPROTO_MTP = 92,      /* Multicast Transport Protocol */
  NETWIB_IP4HDRPROTO_ENCAP = 98,    /* Encapsulation Header */
  NETWIB_IP4HDRPROTO_PIM = 103,     /* Protocol Independent Multicast */
  NETWIB_IP4HDRPROTO_COMP = 108,    /* Compression Header Protocol */
  NETWIB_IP4HDRPROTO_RAW = 255      /* Raw IP packets */
} netwib_ip4hdrproto;
/* IPv4 header */
typedef struct {
  netwib_uint8 version;
  netwib_uint8 ihl;
  netwib_uint8 tos;
  netwib_uint16 totlen;
  netwib_uint16 id;
  netwib_bool reserved;
  netwib_bool dontfrag;
  netwib_bool morefrag;
  netwib_uint16 offsetfrag;
  netwib_uint8 ttl;
  netwib_ip4hdrproto protocol;
  netwib_uint16 check;
  netwib_ip src;
  netwib_ip dst;
} netwib_ip4hdr;
typedef const netwib_ip4hdr netwib_constip4hdr;
#define NETWIB_IP4HDR_LEN 20

/*-------------------------------------------------------------*/
/* Name : netwib_ip4hdr_initdefault
   Description :
     Initialize a netwib_ip4hdr with default values.
   Input parameter(s) :
   Input/output parameter(s) :
   Output parameter(s) :
     *pip4hdr : netwib_ip4hdr to initialize
   Normal return values :
     NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip4hdr_initdefault(netwib_ip4hdr *pip4hdr);

/*-------------------------------------------------------------*/
/* Name : netwib_pkt_append_ip4hdr
   Description :
     Initialize physical data from a netwib_ip4hdr.
   Input parameter(s) :
     *pip4hdr : netwib_ip4hdr
   Input/output parameter(s) :
     *ppht : buffer to initialize
   Output parameter(s) :
   Normal return values :
     NETWIB_ERR_OK : ok
*/
netwib_err netwib_pkt_append_ip4hdr(netwib_constip4hdr *pip4hdr,
                                    netwib_buf *ppkt);
netwib_err netwib_pkt_prepend_ip4hdr(netwib_constip4hdr *pip4hdr,
                                     netwib_buf *ppkt);

/*-------------------------------------------------------------*/
/* Name : netwib_pkt_decode_ip4hdr
   Description :
     Decode a netwib_ip4hdr from physical data.
   Input parameter(s) :
     *ppkt : buffer containing physical data
   Input/output parameter(s) :
   Output parameter(s) :
     *pip4hdr : netwib_ip4hdr contained in pkt
     *pskipsize : size to use to skip this header
   Normal return values :
     NETWIB_ERR_OK : ok
     NETWIB_ERR_OKNOTDECODED : pkt could not be decoded
*/
netwib_err netwib_pkt_decode_ip4hdr(netwib_constbuf *ppkt,
                                    netwib_ip4hdr *pip4hdr,
                                    netwib_uint32 *pskipsize);

/*-------------------------------------------------------------*/
/* Name : netwib_buf_append_ip4hdr
   Description :
     Print a netwib_ip4hdr.
   Input parameter(s) :
     *pip4hdr : netwib_ip4hdr to print
     encodetype : netwib_encodetype to use
   Input/output parameter(s) :
   Output parameter(s) :
     *pbuf : netwib_buf receiving data
   Normal return values :
     NETWIB_ERR_OK : ok
*/
netwib_err netwib_buf_append_ip4hdr(netwib_constip4hdr *pip4hdr,
                                    netwib_encodetype encodetype,
                                    netwib_buf *pbuf);




main index

section index