11 #ifndef ASIO_DETAIL_SOCKET_TYPES_HPP 12 #define ASIO_DETAIL_SOCKET_TYPES_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 20 #if defined(ASIO_WINDOWS_RUNTIME) 22 #elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) 23 # if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) 24 # error WinSock.h has already been included 25 # endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) 26 # if defined(__BORLANDC__) 28 # if !defined(_WSPIAPI_H_) 30 # define ASIO_WSPIAPI_H_DEFINED 31 # endif // !defined(_WSPIAPI_H_) 32 # endif // defined(__BORLANDC__) 33 # if defined(WINAPI_FAMILY) 34 # if ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) 36 # endif // ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) 37 # endif // defined(WINAPI_FAMILY) 38 # include <winsock2.h> 39 # include <ws2tcpip.h> 41 # if defined(ASIO_WSPIAPI_H_DEFINED) 43 # undef ASIO_WSPIAPI_H_DEFINED 44 # endif // defined(ASIO_WSPIAPI_H_DEFINED) 45 # if !defined(ASIO_NO_DEFAULT_LINKED_LIBS) 46 # if defined(UNDER_CE) 47 # pragma comment(lib, "ws2.lib") 48 # elif defined(_MSC_VER) || defined(__BORLANDC__) 49 # pragma comment(lib, "ws2_32.lib") 50 # pragma comment(lib, "mswsock.lib") 51 # endif // defined(_MSC_VER) || defined(__BORLANDC__) 52 # endif // !defined(ASIO_NO_DEFAULT_LINKED_LIBS) 55 # include <sys/ioctl.h> 56 # if !defined(__SYMBIAN32__) 57 # include <sys/poll.h> 59 # include <sys/types.h> 60 # include <sys/stat.h> 63 # include <sys/time.h> 65 # if !defined(__hpux) || defined(__SELECT) 66 # include <sys/select.h> 68 # include <sys/socket.h> 71 # include <netinet/in.h> 72 # if !defined(__SYMBIAN32__) 73 # include <netinet/tcp.h> 75 # include <arpa/inet.h> 80 # include <sys/filio.h> 81 # include <sys/sockio.h> 90 #if defined(ASIO_WINDOWS_RUNTIME) 99 unsigned long ipv6mr_interface; };
105 u_long_type sin6_flowinfo; u_long_type sin6_scope_id; };
107 unsigned char ss_bytes[128 -
sizeof(int)]; };
109 int ai_family, ai_socktype, ai_protocol;
110 int ai_addrlen;
const void* ai_addr;
112 struct linger_type { u_short_type l_onoff, l_linger; };
115 # define ASIO_OS_DEF(c) ASIO_OS_DEF_##c 116 # define ASIO_OS_DEF_AF_UNSPEC 0 117 # define ASIO_OS_DEF_AF_INET 2 118 # define ASIO_OS_DEF_AF_INET6 23 119 # define ASIO_OS_DEF_SOCK_STREAM 1 120 # define ASIO_OS_DEF_SOCK_DGRAM 2 121 # define ASIO_OS_DEF_SOCK_RAW 3 122 # define ASIO_OS_DEF_SOCK_SEQPACKET 5 123 # define ASIO_OS_DEF_IPPROTO_IP 0 124 # define ASIO_OS_DEF_IPPROTO_IPV6 41 125 # define ASIO_OS_DEF_IPPROTO_TCP 6 126 # define ASIO_OS_DEF_IPPROTO_UDP 17 127 # define ASIO_OS_DEF_IPPROTO_ICMP 1 128 # define ASIO_OS_DEF_IPPROTO_ICMPV6 58 129 # define ASIO_OS_DEF_FIONBIO 1 130 # define ASIO_OS_DEF_FIONREAD 2 131 # define ASIO_OS_DEF_INADDR_ANY 0 132 # define ASIO_OS_DEF_MSG_OOB 0x1 133 # define ASIO_OS_DEF_MSG_PEEK 0x2 134 # define ASIO_OS_DEF_MSG_DONTROUTE 0x4 135 # define ASIO_OS_DEF_MSG_EOR 0 // Not supported. 136 # define ASIO_OS_DEF_SHUT_RD 0x0 137 # define ASIO_OS_DEF_SHUT_WR 0x1 138 # define ASIO_OS_DEF_SHUT_RDWR 0x2 139 # define ASIO_OS_DEF_SOMAXCONN 0x7fffffff 140 # define ASIO_OS_DEF_SOL_SOCKET 0xffff 141 # define ASIO_OS_DEF_SO_BROADCAST 0x20 142 # define ASIO_OS_DEF_SO_DEBUG 0x1 143 # define ASIO_OS_DEF_SO_DONTROUTE 0x10 144 # define ASIO_OS_DEF_SO_KEEPALIVE 0x8 145 # define ASIO_OS_DEF_SO_LINGER 0x80 146 # define ASIO_OS_DEF_SO_SNDBUF 0x1001 147 # define ASIO_OS_DEF_SO_RCVBUF 0x1002 148 # define ASIO_OS_DEF_SO_SNDLOWAT 0x1003 149 # define ASIO_OS_DEF_SO_RCVLOWAT 0x1004 150 # define ASIO_OS_DEF_SO_REUSEADDR 0x4 151 # define ASIO_OS_DEF_TCP_NODELAY 0x1 152 # define ASIO_OS_DEF_IP_MULTICAST_IF 2 153 # define ASIO_OS_DEF_IP_MULTICAST_TTL 3 154 # define ASIO_OS_DEF_IP_MULTICAST_LOOP 4 155 # define ASIO_OS_DEF_IP_ADD_MEMBERSHIP 5 156 # define ASIO_OS_DEF_IP_DROP_MEMBERSHIP 6 157 # define ASIO_OS_DEF_IP_TTL 7 158 # define ASIO_OS_DEF_IPV6_UNICAST_HOPS 4 159 # define ASIO_OS_DEF_IPV6_MULTICAST_IF 9 160 # define ASIO_OS_DEF_IPV6_MULTICAST_HOPS 10 161 # define ASIO_OS_DEF_IPV6_MULTICAST_LOOP 11 162 # define ASIO_OS_DEF_IPV6_JOIN_GROUP 12 163 # define ASIO_OS_DEF_IPV6_LEAVE_GROUP 13 164 # define ASIO_OS_DEF_AI_CANONNAME 0x2 165 # define ASIO_OS_DEF_AI_PASSIVE 0x1 166 # define ASIO_OS_DEF_AI_NUMERICHOST 0x4 167 # define ASIO_OS_DEF_AI_NUMERICSERV 0x8 168 # define ASIO_OS_DEF_AI_V4MAPPED 0x800 169 # define ASIO_OS_DEF_AI_ALL 0x100 170 # define ASIO_OS_DEF_AI_ADDRCONFIG 0x400 171 #elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) 175 const int max_addr_v4_str_len = 256;
176 const int max_addr_v6_str_len = 256;
181 # if defined(ASIO_HAS_OLD_WIN_SDK) 199 # define ASIO_OS_DEF(c) ASIO_OS_DEF_##c 200 # define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC 201 # define ASIO_OS_DEF_AF_INET AF_INET 202 # define ASIO_OS_DEF_AF_INET6 AF_INET6 203 # define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM 204 # define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM 205 # define ASIO_OS_DEF_SOCK_RAW SOCK_RAW 206 # define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET 207 # define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP 208 # define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 209 # define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP 210 # define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP 211 # define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP 212 # define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 213 # define ASIO_OS_DEF_FIONBIO FIONBIO 214 # define ASIO_OS_DEF_FIONREAD FIONREAD 215 # define ASIO_OS_DEF_INADDR_ANY INADDR_ANY 216 # define ASIO_OS_DEF_MSG_OOB MSG_OOB 217 # define ASIO_OS_DEF_MSG_PEEK MSG_PEEK 218 # define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE 219 # define ASIO_OS_DEF_MSG_EOR 0 // Not supported on Windows. 220 # define ASIO_OS_DEF_SHUT_RD SD_RECEIVE 221 # define ASIO_OS_DEF_SHUT_WR SD_SEND 222 # define ASIO_OS_DEF_SHUT_RDWR SD_BOTH 223 # define ASIO_OS_DEF_SOMAXCONN SOMAXCONN 224 # define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET 225 # define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST 226 # define ASIO_OS_DEF_SO_DEBUG SO_DEBUG 227 # define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE 228 # define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE 229 # define ASIO_OS_DEF_SO_LINGER SO_LINGER 230 # define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF 231 # define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF 232 # define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT 233 # define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT 234 # define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR 235 # define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY 236 # define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF 237 # define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL 238 # define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP 239 # define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP 240 # define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP 241 # define ASIO_OS_DEF_IP_TTL IP_TTL 242 # define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS 243 # define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF 244 # define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS 245 # define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP 246 # define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP 247 # define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP 248 # define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME 249 # define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE 250 # define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST 251 # if defined(AI_NUMERICSERV) 252 # define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV 254 # define ASIO_OS_DEF_AI_NUMERICSERV 0 256 # if defined(AI_V4MAPPED) 257 # define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED 259 # define ASIO_OS_DEF_AI_V4MAPPED 0 262 # define ASIO_OS_DEF_AI_ALL AI_ALL 264 # define ASIO_OS_DEF_AI_ALL 0 266 # if defined(AI_ADDRCONFIG) 267 # define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG 269 # define ASIO_OS_DEF_AI_ADDRCONFIG 0 271 # if defined (_WIN32_WINNT) 274 const int max_iov_len = 16;
278 const int invalid_socket = -1;
279 const int socket_error_retval = -1;
280 const int max_addr_v4_str_len = INET_ADDRSTRLEN;
281 #if defined(INET6_ADDRSTRLEN) 282 const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
283 #else // defined(INET6_ADDRSTRLEN) 284 const int max_addr_v6_str_len = 256;
285 #endif // defined(INET6_ADDRSTRLEN) 292 struct in_addr imr_multiaddr;
293 struct in_addr imr_interface;
309 #if defined(ASIO_HAS_SSIZE_T) 311 #else // defined(ASIO_HAS_SSIZE_T) 313 #endif // defined(ASIO_HAS_SSIZE_T) 314 # define ASIO_OS_DEF(c) ASIO_OS_DEF_##c 315 # define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC 316 # define ASIO_OS_DEF_AF_INET AF_INET 317 # define ASIO_OS_DEF_AF_INET6 AF_INET6 318 # define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM 319 # define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM 320 # define ASIO_OS_DEF_SOCK_RAW SOCK_RAW 321 # define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET 322 # define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP 323 # define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 324 # define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP 325 # define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP 326 # define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP 327 # define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 328 # define ASIO_OS_DEF_FIONBIO FIONBIO 329 # define ASIO_OS_DEF_FIONREAD FIONREAD 330 # define ASIO_OS_DEF_INADDR_ANY INADDR_ANY 331 # define ASIO_OS_DEF_MSG_OOB MSG_OOB 332 # define ASIO_OS_DEF_MSG_PEEK MSG_PEEK 333 # define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE 334 # define ASIO_OS_DEF_MSG_EOR MSG_EOR 335 # define ASIO_OS_DEF_SHUT_RD SHUT_RD 336 # define ASIO_OS_DEF_SHUT_WR SHUT_WR 337 # define ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR 338 # define ASIO_OS_DEF_SOMAXCONN SOMAXCONN 339 # define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET 340 # define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST 341 # define ASIO_OS_DEF_SO_DEBUG SO_DEBUG 342 # define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE 343 # define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE 344 # define ASIO_OS_DEF_SO_LINGER SO_LINGER 345 # define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF 346 # define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF 347 # define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT 348 # define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT 349 # define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR 350 # define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY 351 # define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF 352 # define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL 353 # define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP 354 # define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP 355 # define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP 356 # define ASIO_OS_DEF_IP_TTL IP_TTL 357 # define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS 358 # define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF 359 # define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS 360 # define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP 361 # define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP 362 # define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP 363 # define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME 364 # define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE 365 # define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST 366 # if defined(AI_NUMERICSERV) 367 # define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV 369 # define ASIO_OS_DEF_AI_NUMERICSERV 0 373 # if defined(AI_V4MAPPED) && !defined(__QNXNTO__) 374 # define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED 376 # define ASIO_OS_DEF_AI_V4MAPPED 0 378 # if defined(AI_ALL) && !defined(__QNXNTO__) 379 # define ASIO_OS_DEF_AI_ALL AI_ALL 381 # define ASIO_OS_DEF_AI_ALL 0 383 # if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__) 384 # define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG 386 # define ASIO_OS_DEF_AI_ADDRCONFIG 0 388 # if defined(IOV_MAX) 389 const int max_iov_len = IOV_MAX;
392 const int max_iov_len = 16;
404 #endif // ASIO_DETAIL_SOCKET_TYPES_HPP
const int max_addr_v6_str_len
sockaddr_un sockaddr_un_type
sockaddr_storage sockaddr_storage_type
sockaddr_in sockaddr_in4_type
const int max_addr_v4_str_len
sockaddr socket_addr_type
const int custom_socket_option_level
const int always_fail_option
sockaddr_in6 sockaddr_in6_type
const int enable_connection_aborted_option
const int socket_error_retval