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