31#define likely(x) __builtin_expect((x), 1)
32#define unlikely(x) __builtin_expect((x), 0)
35#define unlikely(x) (x)
42#define sleep(x) Sleep((x) * 1000)
47#if defined(_MSC_VER) && !defined(__clang__)
48#define __func__ __FUNCTION__
49#define __attribute__(x)
53#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070
54#define __APPLE_USE_RFC_3542 1
58#ifdef HAVE_SYS_TYPES_H
68#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
71#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
81#ifdef HAVE_SYS_SOCKET_H
82#include <sys/socket.h>
89#ifdef HAVE_SYS_IOCTL_H
101#ifdef HAVE_SYS_FILE_H
140#ifdef HAVE_NETINET_IN_H
141#include <netinet/in.h>
153#include <selinux/selinux.h>
156#if defined(HAVE_LIBGEN_H)
168#if defined(TARGET_HAIKU)
169#include <SupportDefs.h>
171#include <sys/sockio.h>
174#ifdef HAVE_ARPA_INET_H
175#include <arpa/inet.h>
183#include <net/if_tap.h>
186#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
188#ifdef HAVE_LINUX_IF_TUN_H
189#include <linux/if_tun.h>
192#ifdef HAVE_NETINET_IP_H
193#include <netinet/ip.h>
196#ifdef HAVE_LINUX_SOCKIOS_H
197#include <linux/sockios.h>
200#ifdef HAVE_LINUX_TYPES_H
201#include <linux/types.h>
204#ifdef HAVE_LINUX_ERRQUEUE_H
205#include <linux/errqueue.h>
208#ifdef HAVE_NETINET_TCP_H
209#include <netinet/tcp.h>
221#ifdef HAVE_NET_IF_TUN_H
222#include <net/if_tun.h>
225#ifdef HAVE_SYS_SOCKIO_H
226#include <sys/sockio.h>
229#ifdef HAVE_NETINET_IP_H
230#include <netinet/ip.h>
233#ifdef HAVE_NETINET_TCP_H
234#include <netinet/tcp.h>
245#ifdef HAVE_NETINET_IP_H
246#include <netinet/ip.h>
249#ifdef HAVE_NETINET_TCP_H
250#include <netinet/tcp.h>
253#ifdef HAVE_NET_IF_TUN_H
254#include <net/if_tun.h>
265#ifdef HAVE_NETINET_IP_H
266#include <netinet/ip.h>
269#ifdef HAVE_NETINET_TCP_H
270#include <netinet/tcp.h>
273#ifdef HAVE_NET_IF_TUN_H
274#include <net/if_tun.h>
281#ifdef HAVE_NET_IF_TUN_H
282#include <net/if_tun.h>
285#ifdef HAVE_NETINET_TCP_H
286#include <netinet/tcp.h>
291#ifdef TARGET_DRAGONFLY
297#ifdef HAVE_NETINET_IP_H
298#include <netinet/ip.h>
301#ifdef HAVE_NET_TUN_IF_TUN_H
302#include <net/tun/if_tun.h>
309#ifdef HAVE_NETINET_TCP_H
310#include <netinet/tcp.h>
317#if defined(__MINGW32__)
318typedef int MIB_TCP_STATE;
332#ifdef HAVE_SYS_MMAN_H
334#define _P1003_1B_VISIBLE
340#include <sys/utsname.h>
348#undef HAVE_CPP_VARARG_MACRO_GCC
349#undef HAVE_CPP_VARARG_MACRO_ISO
357#if defined(IPPROTO_IP) && defined(IP_TOS)
358#define PASSTOS_CAPABILITY 1
360#define PASSTOS_CAPABILITY 0
366#if defined(HAVE_LINUX_TYPES_H) && defined(HAVE_LINUX_ERRQUEUE_H)
367#define EXTENDED_SOCKET_ERROR_CAPABILITY 1
369#define EXTENDED_SOCKET_ERROR_CAPABILITY 0
376#if ((defined(HAVE_IN_PKTINFO) && defined(IP_PKTINFO)) || defined(IP_RECVDSTADDR)) \
377 && defined(HAVE_MSGHDR) && defined(HAVE_CMSGHDR) && defined(CMSG_FIRSTHDR) \
378 && defined(CMSG_NXTHDR) && defined(HAVE_RECVMSG) && defined(HAVE_SENDMSG)
379#define ENABLE_IP_PKTINFO 1
381#define ENABLE_IP_PKTINFO 0
389#define SOL_IP IPPROTO_IP
395#ifndef HAVE_SA_FAMILY_T
403#undef EXTENDED_SOCKET_ERROR_CAPABILITY
404#define EXTENDED_SOCKET_ERROR_CAPABILITY 0
410#if defined(HAVE_OPENLOG) && defined(HAVE_SYSLOG)
411#define SYSLOG_CAPABILITY 1
413#define SYSLOG_CAPABILITY 0
427#define PATH_SEPARATOR '\\'
428#define PATH_SEPARATOR_STR "\\"
430#define PATH_SEPARATOR '/'
431#define PATH_SEPARATOR_STR "/"
438#define SOCKET_UNDEFINED (INVALID_SOCKET)
439#define SOCKET_PRINTF "%" PRIxPTR
442#define SOCKET_UNDEFINED (-1)
443#define SOCKET_PRINTF "%d"
457#if defined(HAVE_EXECVE) && defined(HAVE_FORK)
458#define ENABLE_FEATURE_EXECVE
464#if defined(ENABLE_PORT_SHARE) && defined(SCM_RIGHTS) && defined(HAVE_MSGHDR) \
465 && defined(HAVE_CMSGHDR) && defined(CMSG_FIRSTHDR) && defined(CMSG_NXTHDR) \
466 && defined(HAVE_RECVMSG) && defined(HAVE_SENDMSG)
472#ifdef ENABLE_CRYPTO_MBEDTLS
473#define ENABLE_PREDICTION_RESISTANCE
479#if defined(PF_UNIX) && !defined(_WIN32)
480#define UNIX_SOCK_SUPPORT 1
482#define UNIX_SOCK_SUPPORT 0
495#define PROXY_DIGEST_AUTH 1
500#if defined(_WIN32) && defined(ENABLE_CRYPTO_OPENSSL) && !defined(ENABLE_CRYPTO_WOLFSSL)
501#define ENABLE_CRYPTOAPI
509#if defined(HAVE_POLL_H) || !defined(_WIN32)
518#if defined(HAVE_EPOLL_CREATE) && defined(HAVE_SYS_EPOLL_H)
527#if defined(ENABLE_LZO) || defined(ENABLE_LZ4) || defined(ENABLE_COMP_STUB)
535#define ENABLE_MEMSTATS
540#define PATH_MAX MAX_PATH
unsigned short sa_family_t
SOCKET socket_descriptor_t
static int socket_defined(const socket_descriptor_t sd)