/*-------------------------------------------------------------*/
/***************************************************************
* Following functions create/decode packets. Their names *
* should be self explaining. They are specialized in decoding *
* one kind of packet. To support several kind of packets, use *
* netwib_pkt_decode_layer_abc instead. *
***************************************************************/
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_linkdata(netwib_constlinkhdr *plinkhdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkdata(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_bufext *pdata);
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_ipdata(netwib_constiphdr *piphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_ipdata(netwib_constbuf *ppkt,
netwib_iphdr *piphdr,
netwib_bufext *pdata);
netwib_err netwib_pkt_append_linkipdata(netwib_constlinkhdr *plinkhdr,
netwib_constiphdr *piphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkipdata(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_iphdr *piphdr,
netwib_bufext *pdata);
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_ipudpdata(netwib_constiphdr *piphdr,
netwib_constudphdr *pudphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_ipudpdata(netwib_constbuf *ppkt,
netwib_iphdr *piphdr,
netwib_udphdr *pudphdr,
netwib_bufext *pdata);
netwib_err netwib_pkt_append_linkipudpdata(netwib_constlinkhdr *plinkhdr,
netwib_constiphdr *piphdr,
netwib_constudphdr *pudphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkipudpdata(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_iphdr *piphdr,
netwib_udphdr *pudphdr,
netwib_bufext *pdata);
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_iptcpdata(netwib_constiphdr *piphdr,
netwib_consttcphdr *ptcphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_iptcpdata(netwib_constbuf *ppkt,
netwib_iphdr *piphdr,
netwib_tcphdr *ptcphdr,
netwib_bufext *pdata);
netwib_err netwib_pkt_append_linkiptcpdata(netwib_constlinkhdr *plinkhdr,
netwib_constiphdr *piphdr,
netwib_consttcphdr *ptcphdr,
netwib_constbuf *pdata,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkiptcpdata(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_iphdr *piphdr,
netwib_tcphdr *ptcphdr,
netwib_bufext *pdata);
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_ipicmp4(netwib_constiphdr *piphdr,
netwib_consticmp4 *picmp4,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_ipicmp4(netwib_constbuf *ppkt,
netwib_iphdr *piphdr,
netwib_icmp4 *picmp4);
netwib_err netwib_pkt_append_linkipicmp4(netwib_constlinkhdr *plinkhdr,
netwib_constiphdr *piphdr,
netwib_consticmp4 *picmp4,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkipicmp4(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_iphdr *piphdr,
netwib_icmp4 *picmp4);
/*-------------------------------------------------------------*/
netwib_err netwib_pkt_append_ipicmp6(netwib_constiphdr *piphdr,
netwib_consticmp6 *picmp6,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_ipicmp6(netwib_constbuf *ppkt,
netwib_iphdr *piphdr,
netwib_icmp6 *picmp6);
netwib_err netwib_pkt_append_linkipicmp6(netwib_constlinkhdr *plinkhdr,
netwib_constiphdr *piphdr,
netwib_consticmp6 *picmp6,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkipicmp6(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_iphdr *piphdr,
netwib_icmp6 *picmp6);
/*-------------------------------------------------------------*/
/* before calling this function, user has to set plinkhdr->type
to ARP or RARP */
netwib_err netwib_pkt_append_linkarp(netwib_constlinkhdr *plinkhdr,
netwib_constarphdr *parphdr,
netwib_buf *ppkt);
netwib_err netwib_pkt_decode_linkarp(netwib_device_dlttype dlttype,
netwib_constbuf *ppkt,
netwib_linkhdr *plinkhdr,
netwib_arphdr *parphdr);