#include <endian.h> | |
struct msghdr { | |
void *msg_name; | |
socklen_t msg_namelen; | |
struct iovec *msg_iov; | |
#if __BYTE_ORDER == __BIG_ENDIAN | |
int __pad1, msg_iovlen; | |
#else | |
int msg_iovlen, __pad1; | |
#endif | |
void *msg_control; | |
#if __BYTE_ORDER == __BIG_ENDIAN | |
int __pad2; | |
socklen_t msg_controllen; | |
#else | |
socklen_t msg_controllen; | |
int __pad2; | |
#endif | |
int msg_flags; | |
}; | |
struct cmsghdr { | |
#if __BYTE_ORDER == __BIG_ENDIAN | |
int __pad1; | |
socklen_t cmsg_len; | |
#else | |
socklen_t cmsg_len; | |
int __pad1; | |
#endif | |
int cmsg_level; | |
int cmsg_type; | |
}; | |
#define SOCK_STREAM 2 | |
#define SOCK_DGRAM 1 | |
#define SOL_SOCKET 65535 | |
#define SO_DEBUG 1 | |
#define SO_REUSEADDR 0x0004 | |
#define SO_KEEPALIVE 0x0008 | |
#define SO_DONTROUTE 0x0010 | |
#define SO_BROADCAST 0x0020 | |
#define SO_LINGER 0x0080 | |
#define SO_OOBINLINE 0x0100 | |
#define SO_REUSEPORT 0x0200 | |
#define SO_SNDBUF 0x1001 | |
#define SO_RCVBUF 0x1002 | |
#define SO_SNDLOWAT 0x1003 | |
#define SO_RCVLOWAT 0x1004 | |
#define SO_RCVTIMEO 0x1006 | |
#define SO_SNDTIMEO 0x1005 | |
#define SO_ERROR 0x1007 | |
#define SO_TYPE 0x1008 | |
#define SO_ACCEPTCONN 0x1009 | |
#define SO_PROTOCOL 0x1028 | |
#define SO_DOMAIN 0x1029 | |
#define SO_NO_CHECK 11 | |
#define SO_PRIORITY 12 | |
#define SO_BSDCOMPAT 14 | |
#define SO_PASSCRED 17 | |
#define SO_PEERCRED 18 | |
#define SO_PEERSEC 30 | |
#define SO_SNDBUFFORCE 31 | |
#define SO_RCVBUFFORCE 33 | |
#define SOCK_NONBLOCK 0200 | |
#define SOCK_CLOEXEC 02000000 |