summaryrefslogtreecommitdiff
path: root/mit-pthreads/machdep/sunos-5.3/socket.h
blob: 0b075622fed93368e866978ee319ca5772ab22d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/*
 * Copyright (c) 1982, 1985, 1986 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 *	@(#)socket.h	7.3 (Berkeley) 6/27/88
 */

#ifndef _SYS_SOCKET_H
#define _SYS_SOCKET_H

/*
 * Types of sockets
 */
#define	SOCK_STREAM			2			/* stream socket */
#define	SOCK_DGRAM			1			/* datagram socket */
#define	SOCK_RAW			4			/* raw-protocol interface */
#define	SOCK_RDM			5			/* reliably-delivered message */
#define	SOCK_SEQPACKET		6			/* sequenced packet stream */

/*
 * Option flags per-socket.
 */
#define	SO_DEBUG			0x0001		/* turn on debugging info recording */
#define	SO_ACCEPTCONN		0x0002		/* socket has had listen() */
#define	SO_REUSEADDR		0x0004		/* allow local address reuse */
#define	SO_KEEPALIVE		0x0008		/* keep connections alive */
#define	SO_DONTROUTE		0x0010		/* just use interface addresses */
#define	SO_BROADCAST		0x0020		/* permit sending of broadcast msgs */
#define	SO_USELOOPBACK		0x0040		/* bypass hardware when possible */
#define	SO_LINGER			0x0080		/* linger on close if data present */
#define	SO_OOBINLINE		0x0100		/* leave received OOB data in line */

/*
 * Additional options, not kept in so_options.
 */
#define SO_SNDBUF			0x1001		/* send buffer size */
#define SO_RCVBUF			0x1002		/* receive buffer size */
#define SO_SNDLOWAT			0x1003		/* send low-water mark */
#define SO_RCVLOWAT			0x1004		/* receive low-water mark */
#define SO_SNDTIMEO			0x1005		/* send timeout */
#define SO_RCVTIMEO			0x1006		/* receive timeout */
#define	SO_ERROR			0x1007		/* get error status and clear */
#define	SO_TYPE				0x1008		/* get socket type */
#define SO_PROTOTYPE    0x1009      /* get/set protocol type */

/*
 * Level number for (get/set)sockopt() to apply to socket itself.
 */
#define	SOL_SOCKET	0xffff		/* options for socket level */

/*
 * Address families.
 */
#define	AF_UNSPEC		0		/* unspecified */
#define	AF_UNIX			1		/* local to host (pipes, portals) */
#define	AF_INET			2		/* internetwork: UDP, TCP, etc. */
#define	AF_IMPLINK		3		/* arpanet imp addresses */
#define	AF_PUP			4		/* pup protocols: e.g. BSP */
#define	AF_CHAOS		5		/* mit CHAOS protocols */
#define	AF_NS			6		/* XEROX NS protocols */
#define	AF_NBS			7		/* nbs protocols */
#define	AF_ECMA			8		/* european computer manufacturers */
#define	AF_DATAKIT		9		/* datakit protocols */
#define	AF_CCITT		10		/* CCITT protocols, X.25 etc */
#define	AF_SNA			11		/* IBM SNA */
#define AF_DECnet		12		/* DECnet */
#define AF_DLI			13		/* Direct data link interface */
#define AF_LAT			14		/* LAT */
#define	AF_HYLINK		15		/* NSC Hyperchannel */
#define	AF_APPLETALK	16		/* Apple Talk */
#define	AF_NIT			17		/* NIT */
#define AF_802          18          /* IEEE 802.2, also ISO 8802 */
#define AF_ISO          19          /* ISO protocols */
#define AF_OSI          AF_ISO
#define AF_X25          20          /* CCITT X.25 in particular */
#define AF_OSINET       21
#define AF_GOSIP        22
#define AF_MAX          22

/*
 * Structure used by kernel to store most
 * addresses.
 */
struct sockaddr {
	unsigned short sa_family;	/* address family */
	char           sa_data[14];	/* up to 14 bytes of direct address */
};

/*
 * Structure used by kernel to pass protocol
 * information in raw sockets.
 */
struct sockproto {
	unsigned short	sp_family;	/* address family */
	unsigned short	sp_protocol;	/* protocol */
};

/*
 * Protocol families, same as address families for now.
 */
#define	PF_UNSPEC		AF_UNSPEC
#define	PF_UNIX			AF_UNIX
#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_NBS			AF_NBS
#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_NIT          AF_NIT
#define PF_802          AF_802
#define PF_ISO          AF_ISO
#define PF_OSI          AF_ISO
#define PF_X25          AF_X25
#define PF_OSINET       AF_OSINET
#define PF_GOSIP        AF_GOSIP
#define PF_MAX          AF_MAX

/*
 * Maximum queue length specifiable by listen.
 */
#define	SOMAXCONN		5

/*
 * Message header for recvmsg and sendmsg calls.
 */
struct msghdr {
	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;
};

#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_MAXIOVLEN	16

#include <sys/cdefs.h>
/* 
 * Functions
 */

__BEGIN_DECLS

int			accept			__P_((int, struct sockaddr *, int *));
int			bind			__P_((int, const struct sockaddr *, int));
int			connect			__P_((int, const struct sockaddr *, int));
int			listen			__P_((int, int));
int			socket			__P_((int, int, int));
int			setsockopt		__P_((int, int, int, const void *, int));
int			getsockname		__P_((int, struct sockaddr *, int *));
int			shutdown		__P_((int, int));
int      		getpeername __P_((int, struct sockaddr *, int *));
__END_DECLS

#endif  /* _SYS_SOCKET_H */