1#include <endian.h> 2 3struct 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 23struct 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 SO_DEBUG 1 36#define SO_REUSEADDR 2 37#define SO_TYPE 3 38#define SO_ERROR 4 39#define SO_DONTROUTE 5 40#define SO_BROADCAST 6 41#define SO_SNDBUF 7 42#define SO_RCVBUF 8 43#define SO_KEEPALIVE 9 44#define SO_OOBINLINE 10 45#define SO_NO_CHECK 11 46#define SO_PRIORITY 12 47#define SO_LINGER 13 48#define SO_BSDCOMPAT 14 49#define SO_REUSEPORT 15 50#define SO_RCVLOWAT 16 51#define SO_SNDLOWAT 17 52#define SO_RCVTIMEO 18 53#define SO_SNDTIMEO 19 54#define SO_PASSCRED 20 55#define SO_PEERCRED 21 56#define SO_ACCEPTCONN 30 57#define SO_SNDBUFFORCE 32 58#define SO_RCVBUFFORCE 33 59#define SO_PROTOCOL 38 60#define SO_DOMAIN 39 61