1 #include <endian.h> 2 3 struct msghdr { 4 void *msg_name; 5 socklen_t msg_namelen; 6 struct iovec *msg_iov; 7 #if __BYTE_ORDER == __BIG_ENDIAN 8 int __pad1, msg_iovlen; 9 #else 10 int msg_iovlen, __pad1; 11 #endif 12 void *msg_control; 13 #if __BYTE_ORDER == __BIG_ENDIAN 14 int __pad2; 15 socklen_t msg_controllen; 16 #else 17 socklen_t msg_controllen; 18 int __pad2; 19 #endif 20 int msg_flags; 21 }; 22 23 struct cmsghdr { 24 #if __BYTE_ORDER == __BIG_ENDIAN 25 int __pad1; 26 socklen_t cmsg_len; 27 #else 28 socklen_t cmsg_len; 29 int __pad1; 30 #endif 31 int cmsg_level; 32 int cmsg_type; 33 }; 34 35 #define SOCK_STREAM 2 36 #define SOCK_DGRAM 1 37 #define SOL_SOCKET 65535 38 #define SO_DEBUG 1 39 40 #define SO_REUSEADDR 0x0004 41 #define SO_KEEPALIVE 0x0008 42 #define SO_DONTROUTE 0x0010 43 #define SO_BROADCAST 0x0020 44 #define SO_LINGER 0x0080 45 #define SO_OOBINLINE 0x0100 46 #define SO_REUSEPORT 0x0200 47 #define SO_SNDBUF 0x1001 48 #define SO_RCVBUF 0x1002 49 #define SO_SNDLOWAT 0x1003 50 #define SO_RCVLOWAT 0x1004 51 #define SO_RCVTIMEO 0x1006 52 #define SO_SNDTIMEO 0x1005 53 #define SO_ERROR 0x1007 54 #define SO_TYPE 0x1008 55 #define SO_ACCEPTCONN 0x1009 56 #define SO_PROTOCOL 0x1028 57 #define SO_DOMAIN 0x1029 58 59 #define SO_NO_CHECK 11 60 #define SO_PRIORITY 12 61 #define SO_BSDCOMPAT 14 62 #define SO_PASSCRED 17 63 #define SO_PEERCRED 18 64 #define SO_PEERSEC 30 65 #define SO_SNDBUFFORCE 31 66 #define SO_RCVBUFFORCE 33 67 68 #define SOCK_NONBLOCK 0200 69 #define SOCK_CLOEXEC 02000000 70