1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_SOCKET_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_SOCKET_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _K_SS_MAXSIZE 128 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *)) 17951a39d68df598db08dfced8b4707755864a0492Ying Wang 18951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct __kernel_sockaddr_storage { 19951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short ss_family; 20951a39d68df598db08dfced8b4707755864a0492Ying Wang 21951a39d68df598db08dfced8b4707755864a0492Ying Wang char __data[_K_SS_MAXSIZE - sizeof(unsigned short)]; 22951a39d68df598db08dfced8b4707755864a0492Ying Wang 23951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); 24951a39d68df598db08dfced8b4707755864a0492Ying Wang 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#if !defined(__GLIBC__) || __GLIBC__ < 2 26951a39d68df598db08dfced8b4707755864a0492Ying Wang 27951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/socket.h> 28951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/sockios.h> 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/uio.h> 30951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/types.h> 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/compiler.h> 32951a39d68df598db08dfced8b4707755864a0492Ying Wang 33951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef unsigned short sa_family_t; 34951a39d68df598db08dfced8b4707755864a0492Ying Wang 35951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct sockaddr { 36951a39d68df598db08dfced8b4707755864a0492Ying Wang sa_family_t sa_family; 37951a39d68df598db08dfced8b4707755864a0492Ying Wang char sa_data[14]; 38951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 39951a39d68df598db08dfced8b4707755864a0492Ying Wang 40951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct linger { 41951a39d68df598db08dfced8b4707755864a0492Ying Wang int l_onoff; 42951a39d68df598db08dfced8b4707755864a0492Ying Wang int l_linger; 43951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 44951a39d68df598db08dfced8b4707755864a0492Ying Wang 45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define sockaddr_storage __kernel_sockaddr_storage 46951a39d68df598db08dfced8b4707755864a0492Ying Wang 47951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct msghdr { 48951a39d68df598db08dfced8b4707755864a0492Ying Wang void * msg_name; 49951a39d68df598db08dfced8b4707755864a0492Ying Wang int msg_namelen; 50951a39d68df598db08dfced8b4707755864a0492Ying Wang struct iovec * msg_iov; 51951a39d68df598db08dfced8b4707755864a0492Ying Wang __kernel_size_t msg_iovlen; 52951a39d68df598db08dfced8b4707755864a0492Ying Wang void * msg_control; 53951a39d68df598db08dfced8b4707755864a0492Ying Wang __kernel_size_t msg_controllen; 54951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned msg_flags; 55951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 56951a39d68df598db08dfced8b4707755864a0492Ying Wang 57951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct cmsghdr { 58951a39d68df598db08dfced8b4707755864a0492Ying Wang __kernel_size_t cmsg_len; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang int cmsg_level; 60951a39d68df598db08dfced8b4707755864a0492Ying Wang int cmsg_type; 61951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 62951a39d68df598db08dfced8b4707755864a0492Ying Wang 63951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg)) 64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg)) 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) ) 67951a39d68df598db08dfced8b4707755864a0492Ying Wang 68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_DATA(cmsg) ((void *)((char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr)))) 69951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) 70951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) 71951a39d68df598db08dfced8b4707755864a0492Ying Wang 72951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __CMSG_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr) ? (struct cmsghdr *)(ctl) : (struct cmsghdr *)NULL) 73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_FIRSTHDR(msg) __CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen) 74951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) && (cmsg)->cmsg_len <= (unsigned long) ((mhdr)->msg_controllen - ((char *)(cmsg) - (char *)(mhdr)->msg_control))) 75951a39d68df598db08dfced8b4707755864a0492Ying Wang 76951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifdef __GNUC__ 77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __KINLINE static __inline__ 78951a39d68df598db08dfced8b4707755864a0492Ying Wang#elif defined(__cplusplus) 79951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __KINLINE static inline 80951a39d68df598db08dfced8b4707755864a0492Ying Wang#else 81951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __KINLINE static 82951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 83951a39d68df598db08dfced8b4707755864a0492Ying Wang 84951a39d68df598db08dfced8b4707755864a0492Ying Wang__KINLINE struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, 85951a39d68df598db08dfced8b4707755864a0492Ying Wang struct cmsghdr *__cmsg) 86951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 87951a39d68df598db08dfced8b4707755864a0492Ying Wang struct cmsghdr * __ptr; 88951a39d68df598db08dfced8b4707755864a0492Ying Wang 89951a39d68df598db08dfced8b4707755864a0492Ying Wang __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + CMSG_ALIGN(__cmsg->cmsg_len)); 90951a39d68df598db08dfced8b4707755864a0492Ying Wang if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size) 91951a39d68df598db08dfced8b4707755864a0492Ying Wang return (struct cmsghdr *)0; 92951a39d68df598db08dfced8b4707755864a0492Ying Wang 93951a39d68df598db08dfced8b4707755864a0492Ying Wang return __ptr; 94951a39d68df598db08dfced8b4707755864a0492Ying Wang} 95951a39d68df598db08dfced8b4707755864a0492Ying Wang 96951a39d68df598db08dfced8b4707755864a0492Ying Wang__KINLINE struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) 97951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 98951a39d68df598db08dfced8b4707755864a0492Ying Wang return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); 99951a39d68df598db08dfced8b4707755864a0492Ying Wang} 100951a39d68df598db08dfced8b4707755864a0492Ying Wang 101951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCM_RIGHTS 0x01 102951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCM_CREDENTIALS 0x02 103951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCM_SECURITY 0x03 104951a39d68df598db08dfced8b4707755864a0492Ying Wang 105951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ucred { 106951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 pid; 107951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 uid; 108951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 gid; 109951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 110951a39d68df598db08dfced8b4707755864a0492Ying Wang 111951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_UNSPEC 0 112951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_UNIX 1 113951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_LOCAL 1 114951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_INET 2 115951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_AX25 3 116951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_IPX 4 117951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_APPLETALK 5 118951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_NETROM 6 119951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_BRIDGE 7 120951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ATMPVC 8 121951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_X25 9 122951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_INET6 10 123951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ROSE 11 124951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_DECnet 12 125951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_NETBEUI 13 126951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_SECURITY 14 127951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_KEY 15 128951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_NETLINK 16 129951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ROUTE AF_NETLINK 130951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_PACKET 17 131951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ASH 18 132951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ECONET 19 133951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_ATMSVC 20 134951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_SNA 22 135951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_IRDA 23 136951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_PPPOX 24 137951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_WANPIPE 25 138951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_LLC 26 139951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_TIPC 30 140951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_BLUETOOTH 31 141951a39d68df598db08dfced8b4707755864a0492Ying Wang#define AF_MAX 32 142951a39d68df598db08dfced8b4707755864a0492Ying Wang 143951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_UNSPEC AF_UNSPEC 144951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_UNIX AF_UNIX 145951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_LOCAL AF_LOCAL 146951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_INET AF_INET 147951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_AX25 AF_AX25 148951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_IPX AF_IPX 149951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_APPLETALK AF_APPLETALK 150951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_NETROM AF_NETROM 151951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_BRIDGE AF_BRIDGE 152951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ATMPVC AF_ATMPVC 153951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_X25 AF_X25 154951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_INET6 AF_INET6 155951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ROSE AF_ROSE 156951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_DECnet AF_DECnet 157951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_NETBEUI AF_NETBEUI 158951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_SECURITY AF_SECURITY 159951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_KEY AF_KEY 160951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_NETLINK AF_NETLINK 161951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ROUTE AF_ROUTE 162951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_PACKET AF_PACKET 163951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ASH AF_ASH 164951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ECONET AF_ECONET 165951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_ATMSVC AF_ATMSVC 166951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_SNA AF_SNA 167951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_IRDA AF_IRDA 168951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_PPPOX AF_PPPOX 169951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_WANPIPE AF_WANPIPE 170951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_LLC AF_LLC 171951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_TIPC AF_TIPC 172951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_BLUETOOTH AF_BLUETOOTH 173951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_MAX AF_MAX 174951a39d68df598db08dfced8b4707755864a0492Ying Wang 175951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOMAXCONN 128 176951a39d68df598db08dfced8b4707755864a0492Ying Wang 177951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_OOB 1 178951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_PEEK 2 179951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_DONTROUTE 4 180951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_TRYHARD 4 181951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_CTRUNC 8 182951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_PROBE 0x10 183951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_TRUNC 0x20 184951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_DONTWAIT 0x40 185951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_EOR 0x80 186951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_WAITALL 0x100 187951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_FIN 0x200 188951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_SYN 0x400 189951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_CONFIRM 0x800 190951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_RST 0x1000 191951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_ERRQUEUE 0x2000 192951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_NOSIGNAL 0x4000 193951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_MORE 0x8000 194951a39d68df598db08dfced8b4707755864a0492Ying Wang 195951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_EOF MSG_FIN 196951a39d68df598db08dfced8b4707755864a0492Ying Wang 197951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MSG_CMSG_COMPAT 0 198951a39d68df598db08dfced8b4707755864a0492Ying Wang 199951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_IP 0 200951a39d68df598db08dfced8b4707755864a0492Ying Wang 201951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_TCP 6 202951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_UDP 17 203951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_IPV6 41 204951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_ICMPV6 58 205951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_SCTP 132 206951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_RAW 255 207951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_IPX 256 208951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_AX25 257 209951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_ATALK 258 210951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_NETROM 259 211951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_ROSE 260 212951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_DECNET 261 213951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_X25 262 214951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_PACKET 263 215951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_ATM 264 216951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_AAL 265 217951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_IRDA 266 218951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_NETBEUI 267 219951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_LLC 268 220951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_DCCP 269 221951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_NETLINK 270 222951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SOL_TIPC 271 223951a39d68df598db08dfced8b4707755864a0492Ying Wang 224951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IPX_TYPE 1 225951a39d68df598db08dfced8b4707755864a0492Ying Wang 226951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 227951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 228