int udp_output(struct socket *so, struct mbuf *m,

               struct sockaddr_in *addr)



{

    struct sockaddr_in saddr, daddr;



    saddr = *addr;

    if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) {

        if ((so->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff))

            saddr.sin_addr.s_addr = alias_addr.s_addr;

        else if (addr->sin_addr.s_addr == loopback_addr.s_addr ||

                 ((so->so_faddr.s_addr & htonl(CTL_DNS)) == htonl(CTL_DNS)))

            saddr.sin_addr.s_addr = so->so_faddr.s_addr;

    }

    daddr.sin_addr = so->so_laddr;

    daddr.sin_port = so->so_lport;



    return udp_output2(so, m, &saddr, &daddr, so->so_iptos);

}

int udp_output(struct socket *so, struct mbuf *m,

               struct sockaddr_in *addr)



{

    struct sockaddr_in saddr, daddr;



    saddr = *addr;

    if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) {

        if ((so->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff))

            saddr.sin_addr.s_addr = alias_addr.s_addr;

        else if (addr->sin_addr.s_addr == loopback_addr.s_addr ||

                 ((so->so_faddr.s_addr & htonl(CTL_DNS)) == htonl(CTL_DNS)))

            saddr.sin_addr.s_addr = so->so_faddr.s_addr;

    }

    daddr.sin_addr = so->so_laddr;

    daddr.sin_port = so->so_lport;



    return udp_output2(so, m, &saddr, &daddr, so->so_iptos);

}

int FUNC_0(struct socket *VAR_0, struct mbuf *VAR_1,

               struct sockaddr_in *VAR_2)



{

    struct sockaddr_in VAR_3, VAR_4;



    VAR_3 = *VAR_2;

    if ((VAR_0->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) {

        if ((VAR_0->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff))

            VAR_3.sin_addr.s_addr = alias_addr.s_addr;

        else if (VAR_2->sin_addr.s_addr == loopback_addr.s_addr ||

                 ((VAR_0->so_faddr.s_addr & htonl(CTL_DNS)) == htonl(CTL_DNS)))

            VAR_3.sin_addr.s_addr = VAR_0->so_faddr.s_addr;

    }

    VAR_4.sin_addr = VAR_0->so_laddr;

    VAR_4.sin_port = VAR_0->so_lport;



    return udp_output2(VAR_0, VAR_1, &VAR_3, &VAR_4, VAR_0->so_iptos);

}

int FUNC_0(struct socket *VAR_0, struct mbuf *VAR_1,
struct sockaddr_in *VAR_2)
{ struct sockaddr_in VAR_3, VAR_4; VAR_3 = *VAR_2; if ((VAR_0->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) { if ((VAR_0->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff))
VAR_3.sin_addr.s_addr = alias_addr.s_addr; else if (VAR_2->sin_addr.s_addr == loopback_addr.s_addr ||
((VAR_0->so_faddr.s_addr & htonl(CTL_DNS)) == htonl(CTL_DNS)))
VAR_3.sin_addr.s_addr = VAR_0->so_faddr.s_addr; } VAR_4.sin_addr = VAR_0->so_laddr; VAR_4.sin_port = VAR_0->so_lport; return udp_output2(VAR_0, VAR_1, &VAR_3, &VAR_4, VAR_0->so_iptos); }