📄 socket.h
字号:
u_short sp_protocol; /* protocol */};/* * RFC 2553: protocol-independent placeholder for socket addresses */#define _SS_MAXSIZE 28#define _SS_ALIGNSIZE (sizeof(int64_t))#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t))#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(u_char) - sizeof(sa_family_t) - \ _SS_PAD1SIZE - _SS_ALIGNSIZE)struct sockaddr_storage { u_char ss_len; /* address length */ sa_family_t ss_family; /* address family */ char __ss_pad1[_SS_PAD1SIZE]; int64_t __ss_align; /* force desired structure storage alignment */ char __ss_pad2[_SS_PAD2SIZE];};#ifdef INET6typedef struct sockaddr_storage SOCKADDR_STORAGE_T;#elsetypedef struct sockaddr SOCKADDR_STORAGE_T;#endif /* INET6 *//* * Protocol families, same as address families for now. */#define PF_UNSPEC AF_UNSPEC#define PF_LOCAL AF_LOCAL#define PF_UNIX PF_LOCAL /* backward compatibility */#define PF_INET AF_INET#define PF_IMPLINK AF_IMPLINK#define PF_PUP AF_PUP#define PF_CHAOS AF_CHAOS#define PF_NS AF_NS#define PF_ISO AF_ISO#define PF_OSI AF_ISO#define PF_ECMA AF_ECMA#define PF_DATAKIT AF_DATAKIT#define PF_CCITT AF_CCITT#define PF_SNA AF_SNA#define PF_DECnet AF_DECnet#define PF_DLI AF_DLI#define PF_LAT AF_LAT#define PF_HYLINK AF_HYLINK#define PF_APPLETALK AF_APPLETALK#define PF_ROUTE AF_ROUTE#define PF_LINK AF_LINK#define PF_XTP pseudo_AF_XTP /* really just proto family, no AF */#define PF_COIP AF_COIP#define PF_CNT AF_CNT#define PF_SIP AF_SIP#define PF_IPX AF_IPX /* same format as AF_NS */#define PF_RTIP pseudo_AF_RTIP /* same format as AF_INET */#define PF_PIP pseudo_AF_PIP#define PF_ISDN AF_ISDN#define PF_KEY pseudo_AF_KEY#define PF_INET6 AF_INET6#define PF_NATM AF_NATM#define PF_ATM AF_ATM#define PF_NETGRAPH AF_NETGRAPH#define PF_MOBILITY AF_MOBILITY#define PF_MAX AF_MAX/* * Definitions for network related sysctl, CTL_NET. * * Second level is protocol family. * Third level is protocol number. * * Further levels are defined by the individual families below. */#define NET_MAXID AF_MAX#define CTL_NET_NAMES { \ { 0, 0 }, \ { "unix", CTLTYPE_NODE }, \ { "inet", CTLTYPE_NODE }, \ { "implink", CTLTYPE_NODE }, \ { "pup", CTLTYPE_NODE }, \ { "chaos", CTLTYPE_NODE }, \ { "xerox_ns", CTLTYPE_NODE }, \ { "iso", CTLTYPE_NODE }, \ { "emca", CTLTYPE_NODE }, \ { "datakit", CTLTYPE_NODE }, \ { "ccitt", CTLTYPE_NODE }, \ { "ibm_sna", CTLTYPE_NODE }, \ { "decnet", CTLTYPE_NODE }, \ { "dec_dli", CTLTYPE_NODE }, \ { "lat", CTLTYPE_NODE }, \ { "hylink", CTLTYPE_NODE }, \ { "appletalk", CTLTYPE_NODE }, \ { "route", CTLTYPE_NODE }, \ { "link_layer", CTLTYPE_NODE }, \ { "xtp", CTLTYPE_NODE }, \ { "coip", CTLTYPE_NODE }, \ { "cnt", CTLTYPE_NODE }, \ { "rtip", CTLTYPE_NODE }, \ { "ipx", CTLTYPE_NODE }, \ { "sip", CTLTYPE_NODE }, \ { "pip", CTLTYPE_NODE }, \ { "isdn", CTLTYPE_NODE }, \ { "key", CTLTYPE_NODE }, \ { "inet6", CTLTYPE_NODE }, \ { "natm", CTLTYPE_NODE }, \ { "atm", CTLTYPE_NODE }, \ { "hdrcomplete", CTLTYPE_NODE }, \ { "netgraph", CTLTYPE_NODE }, \}/* * PF_ROUTE - Routing table * * Three additional levels are defined: * Fourth: address family, 0 is wildcard * Fifth: type of info, defined below * Sixth: flag(s) to mask with for NET_RT_FLAGS */#define NET_RT_DUMP 1 /* dump; may limit to a.f. */#define NET_RT_FLAGS 2 /* by flags, e.g. RESOLVING */#define NET_RT_IFLIST 3 /* survey interface list */#define NET_RT_MAXID 4#define CTL_NET_RT_NAMES { \ { 0, 0 }, \ { "dump", CTLTYPE_STRUCT }, \ { "flags", CTLTYPE_STRUCT }, \ { "iflist", CTLTYPE_STRUCT }, \}/* * Maximum queue length specifiable by listen. */#define SOMAXCONN 128/* * Message header for recvmsg and sendmsg calls. * Used value-result for recvmsg, value only for sendmsg. */struct msghdr { void *msg_name; /* optional address */ socklen_t msg_namelen; /* size of address */ struct iovec *msg_iov; /* scatter/gather array */ int msg_iovlen; /* # elements in msg_iov */ void *msg_control; /* ancillary data, see below */ socklen_t msg_controllen; /* ancillary data buffer len */ int msg_flags; /* flags on received message */};#define MSG_OOB 0x1 /* process out-of-band data */#define MSG_PEEK 0x2 /* peek at incoming message */#define MSG_DONTROUTE 0x4 /* send without using routing tables */#define MSG_EOR 0x8 /* data completes record */#define MSG_TRUNC 0x10 /* data discarded before delivery */#define MSG_CTRUNC 0x20 /* control data lost before delivery */#define MSG_WAITALL 0x40 /* wait for full request or error */#define MSG_DONTWAIT 0x80 /* this message should be nonblocking */#define MSG_EOF 0x100 /* data completes connection */#define MSG_EXP 0x200 /* COMP-only: send express message */#define MSG_MBUF 0x400 /* WRS extension */#define MSG_NOTIFICATION 0x800 /* notification message */#define MSG_COMPAT 0x8000 /* used in sendit() *//* * Header for ancillary data objects in msg_control buffer. * Used for additional information with/about a datagram * not expressible by flags. The format is a sequence * of message elements headed by cmsghdr structures. */struct cmsghdr { socklen_t cmsg_len; /* data byte count, including hdr */ int cmsg_level; /* originating protocol */ int cmsg_type; /* protocol-specific type *//* followed by u_char cmsg_data[]; */};/* * While we may have more groups than this, the cmsgcred struct must * be able to fit in an mbuf, and NGROUPS_MAX is too large to allow * this.*/#define CMGROUP_MAX 16/* * Credentials structure, used to verify the identity of a peer * process that has sent us a message. This is allocated by the * peer process but filled in by the kernel. This prevents the * peer from lying about its identity. (Note that cmcred_groups[0] * is the effective GID.) */struct cmsgcred { pid_t cmcred_pid; /* PID of sending process */ uid_t cmcred_uid; /* real UID of sending process */ uid_t cmcred_euid; /* effective UID of sending process */ gid_t cmcred_gid; /* real GID of sending process */ short cmcred_ngroups; /* number or groups */ gid_t cmcred_groups[CMGROUP_MAX]; /* groups */};#define _ALIGNBYTES (sizeof (int) - 1)#define _ALIGN(p) (((unsigned) (p) + _ALIGNBYTES) & ~_ALIGNBYTES)/* given pointer to struct cmsghdr, return pointer to data */#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + \ _ALIGN(sizeof(struct cmsghdr)))/* given pointer to struct cmsghdr, return pointer to next cmsghdr */#define CMSG_NXTHDR(mhdr, cmsg) \ (((caddr_t)(cmsg) + _ALIGN((cmsg)->cmsg_len) + \ _ALIGN(sizeof(struct cmsghdr)) > \ (caddr_t)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \ (struct cmsghdr *)NULL : \ (struct cmsghdr *)((caddr_t)(cmsg) + _ALIGN((cmsg)->cmsg_len)))#define CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control)/* RFC 2292 additions */ #define CMSG_SPACE(l) (_ALIGN(sizeof(struct cmsghdr)) + _ALIGN(l))#define CMSG_LEN(l) (_ALIGN(sizeof(struct cmsghdr)) + (l))#ifdef _WRS_KERNEL#define CMSG_ALIGN(n) _ALIGN(n)#endif/* "Socket"-level control message types: */#define SCM_RIGHTS 0x01 /* access rights (array of int) */#define SCM_TIMESTAMP 0x02 /* timestamp (struct timeval) */#define SCM_CREDS 0x03 /* process creds (struct cmsgcred) *//* * 4.3 compat sockaddr, move to compat file later */struct osockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */};/* * 4.3-compat message header (move to compat file later). */struct omsghdr { caddr_t msg_name; /* optional address */ int msg_namelen; /* size of address */ struct iovec *msg_iov; /* scatter/gather array */ int msg_iovlen; /* # elements in msg_iov */ caddr_t msg_accrights; /* access rights sent/received */ int msg_accrightslen;};/* * howto arguments for shutdown(2), specified by Posix.1g. */#define SHUT_RD 0 /* shut down the reading side */#define SHUT_WR 1 /* shut down the writing side */#define SHUT_RDWR 2 /* shut down both sides *//* * sendfile(2) header/trailer struct */struct sf_hdtr { struct iovec *headers; /* pointer to an array of header struct iovec's */ int hdr_cnt; /* number of header iovec's */ struct iovec *trailers; /* pointer to an array of trailer struct iovec's */ int trl_cnt; /* number of trailer iovec's */};#ifdef __cplusplus}#endif #endif /* !_SYS_SOCKET_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -