/* * Setup UDP client socket and bind to it. * * Return bound socket. */ static int dns_client_setup(int port, char *ip) { int ret, sock; sock = udp_create_socket(); if (sock < 0) { goto error; } ret = udp_bind_socket(sock, port, ip); if (ret < 0) { goto error; } return sock; error: return -1; }
int socket_base_bind(int s, sockaddr6_t *addr, int addrlen) { if (socket_base_exists_socket(s)) { socket_t *current_socket = &socket_base_get_socket(s)->socket_values; switch (current_socket->domain) { case (PF_INET): { /* Not provided */ return -1; break; } case (PF_INET6): { switch (current_socket->type) { /* TCP */ case (SOCK_STREAM): { if ((current_socket->protocol == 0) || (current_socket->protocol == IPPROTO_TCP)) { return tcp_bind_socket(s, addr, addrlen, thread_getpid()); break; } else { return -1; break; } break; } /* UDP */ case (SOCK_DGRAM): { if ((current_socket->protocol == 0) || (current_socket->protocol == IPPROTO_UDP)) { return udp_bind_socket(s, addr, addrlen, thread_getpid()); break; } else { return -1; break; } break; } case (SOCK_SEQPACKET): { /* not provided */ return -1; break; } case (SOCK_RAW): { /* not provided */ return -1; break; } default: { return -1; break; } } break; } case (PF_UNIX): { /* Not provided */ return -1; break; } } } else { printf("SOCKET DOES NOT EXIST!\n"); return -1; } return -1; }