void ip6_input(struct mbuf *m)

{

    struct ip6 *ip6;



    DEBUG_CALL("ip6_input");

    DEBUG_ARG("m = %lx", (long)m);

    DEBUG_ARG("m_len = %d", m->m_len);



    if (m->m_len < sizeof(struct ip6)) {

        goto bad;

    }



    ip6 = mtod(m, struct ip6 *);



    if (ip6->ip_v != IP6VERSION) {

        goto bad;

    }



    /* check ip_ttl for a correct ICMP reply */

    if (ip6->ip_hl == 0) {

        /*icmp_send_error(m, ICMP_TIMXCEED,ICMP_TIMXCEED_INTRANS, 0,"ttl");*/

        goto bad;

    }



    /*

     * Switch out to protocol's input routine.

     */

    switch (ip6->ip_nh) {

    case IPPROTO_TCP:

        /*tcp_input(m, hlen, (struct socket *)NULL);*/

        break;

    case IPPROTO_UDP:

        /*udp_input(m, hlen);*/

        break;

    case IPPROTO_ICMPV6:

        icmp6_input(m);

        break;

    default:

        m_free(m);

    }

    return;

bad:

    m_free(m);

}

void ip6_input(struct mbuf *m)

{

    struct ip6 *ip6;



    DEBUG_CALL("ip6_input");

    DEBUG_ARG("m = %lx", (long)m);

    DEBUG_ARG("m_len = %d", m->m_len);



    if (m->m_len < sizeof(struct ip6)) {

        goto bad;

    }



    ip6 = mtod(m, struct ip6 *);



    if (ip6->ip_v != IP6VERSION) {

        goto bad;

    }



    

    if (ip6->ip_hl == 0) {

        

        goto bad;

    }



    





    switch (ip6->ip_nh) {

    case IPPROTO_TCP:

        

        break;

    case IPPROTO_UDP:

        

        break;

    case IPPROTO_ICMPV6:

        icmp6_input(m);

        break;

    default:

        m_free(m);

    }

    return;

bad:

    m_free(m);

}

void FUNC_0(struct mbuf *VAR_0)

{

    struct VAR_1 *VAR_1;



    DEBUG_CALL("FUNC_0");

    DEBUG_ARG("VAR_0 = %lx", (long)VAR_0);

    DEBUG_ARG("m_len = %d", VAR_0->m_len);



    if (VAR_0->m_len < sizeof(struct VAR_1)) {

        goto bad;

    }



    VAR_1 = mtod(VAR_0, struct VAR_1 *);



    if (VAR_1->ip_v != IP6VERSION) {

        goto bad;

    }



    

    if (VAR_1->ip_hl == 0) {

        

        goto bad;

    }



    





    switch (VAR_1->ip_nh) {

    case IPPROTO_TCP:

        

        break;

    case IPPROTO_UDP:

        

        break;

    case IPPROTO_ICMPV6:

        icmp6_input(VAR_0);

        break;

    default:

        m_free(VAR_0);

    }

    return;

bad:

    m_free(VAR_0);

}

void FUNC_0(struct mbuf *VAR_0)
{ struct VAR_1 *VAR_1; DEBUG_CALL("FUNC_0"); DEBUG_ARG("VAR_0 = %lx", (long)VAR_0); DEBUG_ARG("m_len = %d", VAR_0->m_len); if (VAR_0->m_len < sizeof(struct VAR_1)) { goto bad; } VAR_1 = mtod(VAR_0, struct VAR_1 *); if (VAR_1->ip_v != IP6VERSION) { goto bad; } if (VAR_1->ip_hl == 0) { goto bad; } switch (VAR_1->ip_nh) { case IPPROTO_TCP:
break; case IPPROTO_UDP:
break; case IPPROTO_ICMPV6:
icmp6_input(VAR_0); break; default:
m_free(VAR_0); } return; bad:
m_free(VAR_0); }