net_rx_pkt_pull_data(struct NetRxPkt *pkt,

                        const struct iovec *iov, int iovcnt,

                        size_t ploff)

{

    if (pkt->vlan_stripped) {

        net_rx_pkt_iovec_realloc(pkt, iovcnt + 1);



        pkt->vec[0].iov_base = pkt->ehdr_buf;

        pkt->vec[0].iov_len = sizeof(pkt->ehdr_buf);



        pkt->tot_len =

            iov_size(iov, iovcnt) - ploff + sizeof(struct eth_header);



        pkt->vec_len = iov_copy(pkt->vec + 1, pkt->vec_len_total - 1,

                                iov, iovcnt, ploff, pkt->tot_len);

    } else {

        net_rx_pkt_iovec_realloc(pkt, iovcnt);



        pkt->tot_len = iov_size(iov, iovcnt) - ploff;

        pkt->vec_len = iov_copy(pkt->vec, pkt->vec_len_total,

                                iov, iovcnt, ploff, pkt->tot_len);

    }



    eth_get_protocols(pkt->vec, pkt->vec_len, &pkt->isip4, &pkt->isip6,

                      &pkt->isudp, &pkt->istcp,

                      &pkt->l3hdr_off, &pkt->l4hdr_off, &pkt->l5hdr_off,

                      &pkt->ip6hdr_info, &pkt->ip4hdr_info, &pkt->l4hdr_info);



    trace_net_rx_pkt_parsed(pkt->isip4, pkt->isip6, pkt->isudp, pkt->istcp,

                            pkt->l3hdr_off, pkt->l4hdr_off, pkt->l5hdr_off);

}

net_rx_pkt_pull_data(struct NetRxPkt *pkt,

                        const struct iovec *iov, int iovcnt,

                        size_t ploff)

{

    if (pkt->vlan_stripped) {

        net_rx_pkt_iovec_realloc(pkt, iovcnt + 1);



        pkt->vec[0].iov_base = pkt->ehdr_buf;

        pkt->vec[0].iov_len = sizeof(pkt->ehdr_buf);



        pkt->tot_len =

            iov_size(iov, iovcnt) - ploff + sizeof(struct eth_header);



        pkt->vec_len = iov_copy(pkt->vec + 1, pkt->vec_len_total - 1,

                                iov, iovcnt, ploff, pkt->tot_len);

    } else {

        net_rx_pkt_iovec_realloc(pkt, iovcnt);



        pkt->tot_len = iov_size(iov, iovcnt) - ploff;

        pkt->vec_len = iov_copy(pkt->vec, pkt->vec_len_total,

                                iov, iovcnt, ploff, pkt->tot_len);

    }



    eth_get_protocols(pkt->vec, pkt->vec_len, &pkt->isip4, &pkt->isip6,

                      &pkt->isudp, &pkt->istcp,

                      &pkt->l3hdr_off, &pkt->l4hdr_off, &pkt->l5hdr_off,

                      &pkt->ip6hdr_info, &pkt->ip4hdr_info, &pkt->l4hdr_info);



    trace_net_rx_pkt_parsed(pkt->isip4, pkt->isip6, pkt->isudp, pkt->istcp,

                            pkt->l3hdr_off, pkt->l4hdr_off, pkt->l5hdr_off);

}

    if (pkt->vlan_stripped) {         pkt->vec[0].iov_len = sizeof(pkt->ehdr_buf);         pkt->tot_len =             iov_size(iov, iovcnt) - ploff + sizeof(struct eth_header);
FUNC_0(struct NetRxPkt *VAR_0,

                        const struct iovec *VAR_1, int VAR_2,

                        size_t VAR_3)

{

    if (VAR_0->vlan_stripped) {

        net_rx_pkt_iovec_realloc(VAR_0, VAR_2 + 1);



        VAR_0->vec[0].iov_base = VAR_0->ehdr_buf;

        VAR_0->vec[0].iov_len = sizeof(VAR_0->ehdr_buf);



        VAR_0->tot_len =

            iov_size(VAR_1, VAR_2) - VAR_3 + sizeof(struct eth_header);



        VAR_0->vec_len = iov_copy(VAR_0->vec + 1, VAR_0->vec_len_total - 1,

                                VAR_1, VAR_2, VAR_3, VAR_0->tot_len);

    } else {

        net_rx_pkt_iovec_realloc(VAR_0, VAR_2);



        VAR_0->tot_len = iov_size(VAR_1, VAR_2) - VAR_3;

        VAR_0->vec_len = iov_copy(VAR_0->vec, VAR_0->vec_len_total,

                                VAR_1, VAR_2, VAR_3, VAR_0->tot_len);

    }



    eth_get_protocols(VAR_0->vec, VAR_0->vec_len, &VAR_0->isip4, &VAR_0->isip6,

                      &VAR_0->isudp, &VAR_0->istcp,

                      &VAR_0->l3hdr_off, &VAR_0->l4hdr_off, &VAR_0->l5hdr_off,

                      &VAR_0->ip6hdr_info, &VAR_0->ip4hdr_info, &VAR_0->l4hdr_info);



    trace_net_rx_pkt_parsed(VAR_0->isip4, VAR_0->isip6, VAR_0->isudp, VAR_0->istcp,

                            VAR_0->l3hdr_off, VAR_0->l4hdr_off, VAR_0->l5hdr_off);

}

FUNC_0(struct NetRxPkt *VAR_0,
const struct iovec *VAR_1, int VAR_2,
size_t VAR_3)
{ if (VAR_0->vlan_stripped) { net_rx_pkt_iovec_realloc(VAR_0, VAR_2 + 1); VAR_0->vec[0].iov_base = VAR_0->ehdr_buf; VAR_0->vec[0].iov_len = sizeof(VAR_0->ehdr_buf); VAR_0->tot_len =
iov_size(VAR_1, VAR_2) - VAR_3 + sizeof(struct eth_header); VAR_0->vec_len = iov_copy(VAR_0->vec + 1, VAR_0->vec_len_total - 1,
VAR_1, VAR_2, VAR_3, VAR_0->tot_len); } else { net_rx_pkt_iovec_realloc(VAR_0, VAR_2); VAR_0->tot_len = iov_size(VAR_1, VAR_2) - VAR_3; VAR_0->vec_len = iov_copy(VAR_0->vec, VAR_0->vec_len_total,
VAR_1, VAR_2, VAR_3, VAR_0->tot_len); } eth_get_protocols(VAR_0->vec, VAR_0->vec_len, &VAR_0->isip4, &VAR_0->isip6,
&VAR_0->isudp, &VAR_0->istcp,
&VAR_0->l3hdr_off, &VAR_0->l4hdr_off, &VAR_0->l5hdr_off,
&VAR_0->ip6hdr_info, &VAR_0->ip4hdr_info, &VAR_0->l4hdr_info); trace_net_rx_pkt_parsed(VAR_0->isip4, VAR_0->isip6, VAR_0->isudp, VAR_0->istcp,
VAR_0->l3hdr_off, VAR_0->l4hdr_off, VAR_0->l5hdr_off); }