15 #ifdef HAVE_SYS_SELECT_H 16 # include <sys/select.h> 18 #ifdef HAVE_SYS_SOCKET_H 19 # include <sys/socket.h> 20 # define OPTVAL_T(t) (t) 21 # define OPTVAL_GT(t) (t) 23 #ifdef HAVE_SYS_IOCTL_H 24 #include <sys/ioctl.h> 26 #ifdef HAVE_NETINET_IN_H 27 # include <netinet/in.h> 29 #ifdef HAVE_WS2TCPIP_H 31 # define OPTVAL_T(t) (const char*)(t) 32 # define OPTVAL_GT(t) (char*)(t) 34 # define CMSG_DATA WSA_CMSG_DATA 43 #ifdef COAP_EPOLL_SUPPORT 44 #include <sys/epoll.h> 45 #include <sys/timerfd.h> 52 #if !defined(WITH_CONTIKI) 54 #if defined(IP_PKTINFO) 55 # define GEN_IP_PKTINFO IP_PKTINFO 56 #elif defined(IP_RECVDSTADDR) 57 # define GEN_IP_PKTINFO IP_RECVDSTADDR 59 # error "Need IP_PKTINFO or IP_RECVDSTADDR to request ancillary data from OS." 63 #ifdef IPV6_RECVPKTINFO 64 # define GEN_IPV6_PKTINFO IPV6_RECVPKTINFO 65 #elif defined(IPV6_PKTINFO) 66 # define GEN_IPV6_PKTINFO IPV6_PKTINFO 68 # error "Need IPV6_PKTINFO or IPV6_RECVPKTINFO to request ancillary data from OS." 75 static int ep_initialized = 0;
98 sock->conn = udp_new(NULL, 0, NULL);
106 uip_ipaddr_copy(&bound_addr->
addr, &listen_addr->
addr);
107 bound_addr->port = listen_addr->port;
108 udp_bind((
struct uip_udp_conn *)sock->conn, bound_addr->port);
166 uip_udp_remove((
struct uip_udp_conn *)sock->conn);
193 sock->
fd = socket(listen_addr->
addr.
sa.sa_family, SOCK_DGRAM, 0);
210 if (setsockopt(sock->
fd, SOL_SOCKET, SO_REUSEADDR, OPTVAL_T(&on),
sizeof(on)) ==
COAP_SOCKET_ERROR)
212 "coap_socket_bind_udp: setsockopt SO_REUSEADDR: %s\n",
215 switch (listen_addr->
addr.