/*-------------------------------------------------------------*/
#define netwib_pkt_append_uint8(data,u) *data++=(netwib_uint8)(u);
#define netwib_pkt_append_uint16(data,u) *data++=netwib_c2_uint16_0(u);*data++=netwib_c2_uint16_1(u);
#define netwib_pkt_append_uint32(data,u) *data++=netwib_c2_uint32_0(u);*data++=netwib_c2_uint32_1(u);*data++=netwib_c2_uint32_2(u);*data++=netwib_c2_uint32_3(u);
/*-------------------------------------------------------------*/
#define netwib_pkt_decode_uint8(data,u) u=*data++;
#define netwib_pkt_decode_uint16(data,u) u=*data++;u=(netwib_uint16)(u<<8|*data++);
#define netwib_pkt_decode_uint32(data,u) u=*data++;u=u<<8|*data++;u=u<<8|*data++;u=u<<8|*data++;
#define netwib_pkt_decode_uint8t(data,u,t) u=(t)(*data++);
#define netwib_pkt_decode_uint16t(data,u,t) u=(t)(*data++);u=(t)(u<<8|*data++);
#define netwib_pkt_decode_uint32t(data,u,t) u=(t)(*data++);u=(t)(u<<8|*data++);u=(t)(u<<8|*data++);u=(t)(u<<8|*data++);
/*-------------------------------------------------------------*/
netwib_err netwib_priv_pkt_convert(netwib_device_dlttype dlttypein,
netwib_constbuf *ppktin,
netwib_pkt_newfield newfieldopt,
netwib_pkt_newfield newfieldreq,
netwib_ip *pgw, /* NULL if unknown */
netwib_device_dlttype dlttypeout,
netwib_linkhdr *plinkhdrout,
netwib_bufext *ppktout,
netwib_bool *pdevnumset,
netwib_uint32 *pdevnum);
/*-------------------------------------------------------------*/
netwib_err netwib_priv_ippkt_decode_iptype(netwib_constbuf *ppkt,
netwib_iptype *piptype);
netwib_err netwib_priv_ippkt_decode_srcdst(netwib_constbuf *ppkt,
netwib_ip *psrc,
netwib_ip *pdst);
/*-------------------------------------------------------------*/
netwib_err netwib_priv_ip6exts_skip_ip6ext(netwib_ipproto pktproto,
netwib_constbuf *ppkt,
netwib_ipproto *pnextproto,
netwib_uint32 *pskipsize);
netwib_err netwib_priv_ip6exts_skip_notfrag(netwib_ipproto pktproto,
netwib_constbuf *ppkt,
netwib_uint32 *pskipsize);
/*-------------------------------------------------------------*/
netwib_err netwib_priv_icmp4_size(netwib_consticmp4 *picmp4,
netwib_uint32 *psize);
netwib_err netwib_priv_icmp6_size(netwib_consticmp6 *picmp6,
netwib_uint32 *psize);
/*-------------------------------------------------------------*/
#define NETWIB_PRIV_IP4HDR_MINLEN 20
#define NETWIB_PRIV_IP4HDR_MAXLEN 64
#define NETWIB_PRIV_IP6HDR_MINLEN 40