void slirp_input(const uint8_t *pkt, int pkt_len)

{

    struct mbuf *m;

    int proto;



    if (pkt_len < ETH_HLEN)

        return;



    proto = ntohs(*(uint16_t *)(pkt + 12));

    switch(proto) {

    case ETH_P_ARP:

        arp_input(pkt, pkt_len);

        break;

    case ETH_P_IP:

        m = m_get();

        if (!m)

            return;

        /* Note: we add to align the IP header */




        m->m_len = pkt_len + 2;

        memcpy(m->m_data + 2, pkt, pkt_len);



        m->m_data += 2 + ETH_HLEN;

        m->m_len -= 2 + ETH_HLEN;



        ip_input(m);

        break;

    default:

        break;


void slirp_input(const uint8_t *pkt, int pkt_len)

{

    struct mbuf *m;

    int proto;



    if (pkt_len < ETH_HLEN)

        return;



    proto = ntohs(*(uint16_t *)(pkt + 12));

    switch(proto) {

    case ETH_P_ARP:

        arp_input(pkt, pkt_len);

        break;

    case ETH_P_IP:

        m = m_get();

        if (!m)

            return;

        




        m->m_len = pkt_len + 2;

        memcpy(m->m_data + 2, pkt, pkt_len);



        m->m_data += 2 + ETH_HLEN;

        m->m_len -= 2 + ETH_HLEN;



        ip_input(m);

        break;

    default:

        break;


void FUNC_0(const uint8_t *VAR_0, int VAR_1)

{

    struct mbuf *VAR_2;

    int VAR_3;



    if (VAR_1 < ETH_HLEN)

        return;



    VAR_3 = ntohs(*(uint16_t *)(VAR_0 + 12));

    switch(VAR_3) {

    case ETH_P_ARP:

        arp_input(VAR_0, VAR_1);

        break;

    case ETH_P_IP:

        VAR_2 = m_get();

        if (!VAR_2)

            return;

        




        VAR_2->m_len = VAR_1 + 2;

        memcpy(VAR_2->m_data + 2, VAR_0, VAR_1);



        VAR_2->m_data += 2 + ETH_HLEN;

        VAR_2->m_len -= 2 + ETH_HLEN;



        ip_input(VAR_2);

        break;

    default:

        break;


void FUNC_0(const uint8_t *VAR_0, int VAR_1)
{ struct mbuf *VAR_2; int VAR_3; if (VAR_1 < ETH_HLEN)
return; VAR_3 = ntohs(*(uint16_t *)(VAR_0 + 12)); switch(VAR_3) { case ETH_P_ARP:
arp_input(VAR_0, VAR_1); break; case ETH_P_IP:
VAR_2 = m_get(); if (!VAR_2)
return; VAR_2->m_len = VAR_1 + 2; memcpy(VAR_2->m_data + 2, VAR_0, VAR_1); VAR_2->m_data += 2 + ETH_HLEN; VAR_2->m_len -= 2 + ETH_HLEN; ip_input(VAR_2); break; default:
break;