1 /* 2 * Public domain 3 * sys/socket.h compatibility shim 4 */ 5 6 #include_next <sys/socket.h> 7 8 #ifndef SA_LEN 9 #define SA_LEN(X) \ 10 (((struct sockaddr*)(X))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : \ 11 ((struct sockaddr*)(X))->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : \ 12 ((struct sockaddr*)(X))->sa_family == AF_UNSPEC ? sizeof(struct sockaddr) : \ 13 sizeof(struct sockaddr)) 14 #endif 15 16 #if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC) 17 #define NEED_SOCKET_FLAGS 18 int _socket(int domain, int type, int protocol); 19 int _socketpair(int domain, int type, int protocol, int socket_vector[2]); 20 #ifndef SOCKET_FLAGS_PRIV 21 #define socket(d, t, p) _socket(d, t, p) 22 #define socketpair(d, t, p, s) _socketpair(d, t, p, s) 23 #endif 24 #endif 25 26 /* 27 * Prevent Solaris 10 system header leakage 28 */ 29 #ifdef MODEMASK 30 #undef MODEMASK 31 #endif 32 33 #ifndef SOCK_NONBLOCK 34 #define SOCK_NONBLOCK 0x4000 /* set O_NONBLOCK */ 35 #endif 36 37 #ifndef SOCK_CLOEXEC 38 #define SOCK_CLOEXEC 0x8000 /* set FD_CLOEXEC */ 39 #endif 40