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