Ejemplo n.º 1
0
    int
procket_open_socket(PROCKET_STATE *ps)
{
    switch (ps->protocol) {
        case IPPROTO_ICMP:
            /* getaddrinfo(3): node for SOCK_RAW must not be NULL */
            if (ps->address == NULL) {
              char *ipaddr = ps->family == AF_INET6 ? "::" : "0.0.0.0";
              ps->address = strdup(ipaddr);
              if (ps->address == NULL)
                return -1;
            }

            /* getaddrinfo(3): port for SOCK_RAW must NULL */
            free(ps->port);
            ps->port = NULL;

            /* fall through */

        case IPPROTO_TCP:
        case IPPROTO_UDP:
            if (procket_lookup_socket(ps) < 0)
                return -1;
            break;

        default:
            if (procket_create_socket(ps) < 0)
                return -1;
            break;
    }

    return 0;
}
Ejemplo n.º 2
0
    int
procket_open_socket(PROCKET_STATE *ps)
{
    switch (ps->protocol) {
        case IPPROTO_TCP:
        case IPPROTO_UDP:
            if (procket_lookup_socket(ps) < 0)
                return -1;
            break;

        default:
            if (procket_create_socket(ps) < 0)
                return -1;
            break;
    }

    return 0;
}