xref: /onnv-gate/usr/src/lib/libbc/inc/include/sys/socket.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * Copyright 1989 Sun Microsystems, Inc.  All rights reserved.
3*0Sstevel@tonic-gate  * Use is subject to license terms.
4*0Sstevel@tonic-gate  */
5*0Sstevel@tonic-gate 
6*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
7*0Sstevel@tonic-gate 
8*0Sstevel@tonic-gate /*
9*0Sstevel@tonic-gate  * Copyright (c) 1982, 1985, 1986 Regents of the University of California.
10*0Sstevel@tonic-gate  * All rights reserved.  The Berkeley software License Agreement
11*0Sstevel@tonic-gate  * specifies the terms and conditions for redistribution.
12*0Sstevel@tonic-gate  */
13*0Sstevel@tonic-gate 
14*0Sstevel@tonic-gate #ifndef _sys_socket_h
15*0Sstevel@tonic-gate #define _sys_socket_h
16*0Sstevel@tonic-gate 
17*0Sstevel@tonic-gate /*
18*0Sstevel@tonic-gate  * Definitions related to sockets: types, address families, options.
19*0Sstevel@tonic-gate  */
20*0Sstevel@tonic-gate 
21*0Sstevel@tonic-gate /*
22*0Sstevel@tonic-gate  * Types
23*0Sstevel@tonic-gate  */
24*0Sstevel@tonic-gate #define	SOCK_STREAM	1		/* stream socket */
25*0Sstevel@tonic-gate #define	SOCK_DGRAM	2		/* datagram socket */
26*0Sstevel@tonic-gate #define	SOCK_RAW	3		/* raw-protocol interface */
27*0Sstevel@tonic-gate #define	SOCK_RDM	4		/* reliably-delivered message */
28*0Sstevel@tonic-gate #define	SOCK_SEQPACKET	5		/* sequenced packet stream */
29*0Sstevel@tonic-gate 
30*0Sstevel@tonic-gate /*
31*0Sstevel@tonic-gate  * Option flags per-socket.
32*0Sstevel@tonic-gate  */
33*0Sstevel@tonic-gate #define	SO_DEBUG	0x0001		/* turn on debugging info recording */
34*0Sstevel@tonic-gate #define	SO_ACCEPTCONN	0x0002		/* socket has had listen() */
35*0Sstevel@tonic-gate #define	SO_REUSEADDR	0x0004		/* allow local address reuse */
36*0Sstevel@tonic-gate #define	SO_KEEPALIVE	0x0008		/* keep connections alive */
37*0Sstevel@tonic-gate #define	SO_DONTROUTE	0x0010		/* just use interface addresses */
38*0Sstevel@tonic-gate #define	SO_BROADCAST	0x0020		/* permit sending of broadcast msgs */
39*0Sstevel@tonic-gate #define	SO_USELOOPBACK	0x0040		/* bypass hardware when possible */
40*0Sstevel@tonic-gate #define	SO_LINGER	0x0080		/* linger on close if data present */
41*0Sstevel@tonic-gate #define	SO_OOBINLINE	0x0100		/* leave received OOB data in line */
42*0Sstevel@tonic-gate /*
43*0Sstevel@tonic-gate  * N.B.: The following definition is present only for compatibility
44*0Sstevel@tonic-gate  * with release 3.0.  It will disappear in later releases.
45*0Sstevel@tonic-gate  */
46*0Sstevel@tonic-gate #define	SO_DONTLINGER	(~SO_LINGER)	/* ~SO_LINGER */
47*0Sstevel@tonic-gate 
48*0Sstevel@tonic-gate /*
49*0Sstevel@tonic-gate  * Additional options, not kept in so_options.
50*0Sstevel@tonic-gate  */
51*0Sstevel@tonic-gate #define	SO_SNDBUF	0x1001		/* send buffer size */
52*0Sstevel@tonic-gate #define	SO_RCVBUF	0x1002		/* receive buffer size */
53*0Sstevel@tonic-gate #define	SO_SNDLOWAT	0x1003		/* send low-water mark */
54*0Sstevel@tonic-gate #define	SO_RCVLOWAT	0x1004		/* receive low-water mark */
55*0Sstevel@tonic-gate #define	SO_SNDTIMEO	0x1005		/* send timeout */
56*0Sstevel@tonic-gate #define	SO_RCVTIMEO	0x1006		/* receive timeout */
57*0Sstevel@tonic-gate #define	SO_ERROR	0x1007		/* get error status and clear */
58*0Sstevel@tonic-gate #define	SO_TYPE		0x1008		/* get socket type */
59*0Sstevel@tonic-gate 
60*0Sstevel@tonic-gate /*
61*0Sstevel@tonic-gate  * Structure used for manipulating linger option.
62*0Sstevel@tonic-gate  */
63*0Sstevel@tonic-gate struct	linger {
64*0Sstevel@tonic-gate 	int	l_onoff;		/* option on/off */
65*0Sstevel@tonic-gate 	int	l_linger;		/* linger time */
66*0Sstevel@tonic-gate };
67*0Sstevel@tonic-gate 
68*0Sstevel@tonic-gate /*
69*0Sstevel@tonic-gate  * Level number for (get/set)sockopt() to apply to socket itself.
70*0Sstevel@tonic-gate  */
71*0Sstevel@tonic-gate #define	SOL_SOCKET	0xffff		/* options for socket level */
72*0Sstevel@tonic-gate 
73*0Sstevel@tonic-gate /*
74*0Sstevel@tonic-gate  * Address families.
75*0Sstevel@tonic-gate  */
76*0Sstevel@tonic-gate #define	AF_UNSPEC	0		/* unspecified */
77*0Sstevel@tonic-gate #define	AF_UNIX		1		/* local to host (pipes, portals) */
78*0Sstevel@tonic-gate #define	AF_INET		2		/* internetwork: UDP, TCP, etc. */
79*0Sstevel@tonic-gate #define	AF_IMPLINK	3		/* arpanet imp addresses */
80*0Sstevel@tonic-gate #define	AF_PUP		4		/* pup protocols: e.g. BSP */
81*0Sstevel@tonic-gate #define	AF_CHAOS	5		/* mit CHAOS protocols */
82*0Sstevel@tonic-gate #define	AF_NS		6		/* XEROX NS protocols */
83*0Sstevel@tonic-gate #define	AF_NBS		7		/* nbs protocols */
84*0Sstevel@tonic-gate #define	AF_ECMA		8		/* european computer manufacturers */
85*0Sstevel@tonic-gate #define	AF_DATAKIT	9		/* datakit protocols */
86*0Sstevel@tonic-gate #define	AF_CCITT	10		/* CCITT protocols, X.25 etc */
87*0Sstevel@tonic-gate #define	AF_SNA		11		/* IBM SNA */
88*0Sstevel@tonic-gate #define	AF_DECnet	12		/* DECnet */
89*0Sstevel@tonic-gate #define	AF_DLI		13		/* Direct data link interface */
90*0Sstevel@tonic-gate #define	AF_LAT		14		/* LAT */
91*0Sstevel@tonic-gate #define	AF_HYLINK	15		/* NSC Hyperchannel */
92*0Sstevel@tonic-gate #define	AF_APPLETALK	16		/* Apple Talk */
93*0Sstevel@tonic-gate 
94*0Sstevel@tonic-gate #define	AF_NIT		17		/* Network Interface Tap */
95*0Sstevel@tonic-gate #define	AF_802		18		/* IEEE 802.2, also ISO 8802 */
96*0Sstevel@tonic-gate #define	AF_OSI		19		/* umbrella for all families used
97*0Sstevel@tonic-gate 					 * by OSI (e.g. protosw lookup) */
98*0Sstevel@tonic-gate #define	AF_X25		20		/* CCITT X.25 in particular */
99*0Sstevel@tonic-gate #define	AF_OSINET	21		/* AFI = 47, IDI = 4 */
100*0Sstevel@tonic-gate #define	AF_GOSIP	22		/* U.S. Government OSI */
101*0Sstevel@tonic-gate 
102*0Sstevel@tonic-gate #define	AF_MAX		21
103*0Sstevel@tonic-gate 
104*0Sstevel@tonic-gate /*
105*0Sstevel@tonic-gate  * Structure used by kernel to store most
106*0Sstevel@tonic-gate  * addresses.
107*0Sstevel@tonic-gate  */
108*0Sstevel@tonic-gate struct sockaddr {
109*0Sstevel@tonic-gate 	u_short	sa_family;		/* address family */
110*0Sstevel@tonic-gate 	char	sa_data[14];		/* up to 14 bytes of direct address */
111*0Sstevel@tonic-gate };
112*0Sstevel@tonic-gate 
113*0Sstevel@tonic-gate /*
114*0Sstevel@tonic-gate  * Structure used by kernel to pass protocol
115*0Sstevel@tonic-gate  * information in raw sockets.
116*0Sstevel@tonic-gate  */
117*0Sstevel@tonic-gate struct sockproto {
118*0Sstevel@tonic-gate 	u_short	sp_family;		/* address family */
119*0Sstevel@tonic-gate 	u_short	sp_protocol;		/* protocol */
120*0Sstevel@tonic-gate };
121*0Sstevel@tonic-gate 
122*0Sstevel@tonic-gate /*
123*0Sstevel@tonic-gate  * Protocol families, same as address families for now.
124*0Sstevel@tonic-gate  */
125*0Sstevel@tonic-gate #define	PF_UNSPEC	AF_UNSPEC
126*0Sstevel@tonic-gate #define	PF_UNIX		AF_UNIX
127*0Sstevel@tonic-gate #define	PF_INET		AF_INET
128*0Sstevel@tonic-gate #define	PF_IMPLINK	AF_IMPLINK
129*0Sstevel@tonic-gate #define	PF_PUP		AF_PUP
130*0Sstevel@tonic-gate #define	PF_CHAOS	AF_CHAOS
131*0Sstevel@tonic-gate #define	PF_NS		AF_NS
132*0Sstevel@tonic-gate #define	PF_NBS		AF_NBS
133*0Sstevel@tonic-gate #define	PF_ECMA		AF_ECMA
134*0Sstevel@tonic-gate #define	PF_DATAKIT	AF_DATAKIT
135*0Sstevel@tonic-gate #define	PF_CCITT	AF_CCITT
136*0Sstevel@tonic-gate #define	PF_SNA		AF_SNA
137*0Sstevel@tonic-gate #define	PF_DECnet	AF_DECnet
138*0Sstevel@tonic-gate #define	PF_DLI		AF_DLI
139*0Sstevel@tonic-gate #define	PF_LAT		AF_LAT
140*0Sstevel@tonic-gate #define	PF_HYLINK	AF_HYLINK
141*0Sstevel@tonic-gate #define	PF_APPLETALK	AF_APPLETALK
142*0Sstevel@tonic-gate #define	PF_NIT		AF_NIT
143*0Sstevel@tonic-gate #define	PF_802		AF_802
144*0Sstevel@tonic-gate #define	PF_OSI		AF_OSI
145*0Sstevel@tonic-gate #define	PF_X25		AF_X25
146*0Sstevel@tonic-gate #define	PF_OSINET	AF_OSINET
147*0Sstevel@tonic-gate #define	PF_GOSIP	AF_GOSIP
148*0Sstevel@tonic-gate 
149*0Sstevel@tonic-gate #define	PF_MAX		AF_MAX
150*0Sstevel@tonic-gate 
151*0Sstevel@tonic-gate /*
152*0Sstevel@tonic-gate  * Maximum queue length specifiable by listen.
153*0Sstevel@tonic-gate  */
154*0Sstevel@tonic-gate #define	SOMAXCONN	5
155*0Sstevel@tonic-gate 
156*0Sstevel@tonic-gate /*
157*0Sstevel@tonic-gate  * Message header for recvmsg and sendmsg calls.
158*0Sstevel@tonic-gate  */
159*0Sstevel@tonic-gate struct msghdr {
160*0Sstevel@tonic-gate 	caddr_t	msg_name;		/* optional address */
161*0Sstevel@tonic-gate 	int	msg_namelen;		/* size of address */
162*0Sstevel@tonic-gate 	struct	iovec *msg_iov;		/* scatter/gather array */
163*0Sstevel@tonic-gate 	int	msg_iovlen;		/* # elements in msg_iov */
164*0Sstevel@tonic-gate 	caddr_t	msg_accrights;		/* access rights sent/received */
165*0Sstevel@tonic-gate 	int	msg_accrightslen;
166*0Sstevel@tonic-gate };
167*0Sstevel@tonic-gate 
168*0Sstevel@tonic-gate #define	MSG_OOB		0x1		/* process out-of-band data */
169*0Sstevel@tonic-gate #define	MSG_PEEK	0x2		/* peek at incoming message */
170*0Sstevel@tonic-gate #define	MSG_DONTROUTE	0x4		/* send without using routing tables */
171*0Sstevel@tonic-gate 
172*0Sstevel@tonic-gate #define	MSG_MAXIOVLEN	16
173*0Sstevel@tonic-gate 
174*0Sstevel@tonic-gate #endif /*!_sys_socket_h*/
175