1 |
199 |
simons |
#ifndef _SYS_SOCKET_H
|
2 |
|
|
#define _SYS_SOCKET_H
|
3 |
|
|
|
4 |
|
|
#include <features.h>
|
5 |
|
|
#include <sys/types.h>
|
6 |
|
|
#include <linux/socket.h>
|
7 |
|
|
|
8 |
|
|
#ifdef _MIT_POSIX_THREADS
|
9 |
|
|
#include <pthread/mit/posix.h>
|
10 |
|
|
#endif
|
11 |
|
|
|
12 |
|
|
__BEGIN_DECLS
|
13 |
|
|
|
14 |
|
|
/* struct msghdr is not defined in linux 1.2. This will allow sendmsg
|
15 |
|
|
and recvmsg in libc 5.2.9 to compile under 1.2.x and shouldn't cause
|
16 |
|
|
any problem for 1.3.x */
|
17 |
|
|
struct msghdr;
|
18 |
|
|
|
19 |
|
|
/* Create a new socket of type TYPE in domain DOMAIN, using
|
20 |
|
|
protocol PROTOCOL. If PROTOCOL is zero, one is chosen
|
21 |
|
|
automatically. Returns a file descriptor for the new socket,
|
22 |
|
|
or -1 for errors. */
|
23 |
|
|
int socket __P ((int __family, int __type, int __protocol));
|
24 |
|
|
|
25 |
|
|
/* Create two new sockets, of type TYPE in domain DOMAIN and using
|
26 |
|
|
protocol PROTOCOL, which are connected to each other, and put file
|
27 |
|
|
descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero,
|
28 |
|
|
one will be chosen automatically. Returns 0 on success, -1
|
29 |
|
|
for errors. */
|
30 |
|
|
int socketpair __P ((int __family, int __type, int __protocol,
|
31 |
|
|
int __sockvec[2]));
|
32 |
|
|
|
33 |
|
|
/* Give the socket FD the local address ADDR (which is LEN bytes
|
34 |
|
|
long). */
|
35 |
|
|
int bind __P ((int __sockfd, __const struct sockaddr *__my_addr,
|
36 |
|
|
int __addrlen));
|
37 |
|
|
|
38 |
|
|
/* Open a connection on socket FD to peer at ADDR (which LEN bytes
|
39 |
|
|
long). For connectionless socket types, just set the default
|
40 |
|
|
address to send to and the only address from which to accept
|
41 |
|
|
transmissions. Return 0 on success, -1 for errors. */
|
42 |
|
|
int connect __P ((int __sockfd, __const struct sockaddr *__serv_addr,
|
43 |
|
|
int __addrlen));
|
44 |
|
|
|
45 |
|
|
/* Prepare to accept connections on socket FD.
|
46 |
|
|
N connection requests will be queued before further requests are
|
47 |
|
|
refused. Returns 0 on success, -1 for errors. */
|
48 |
|
|
int listen __P ((int __sockfd, int __n));
|
49 |
|
|
|
50 |
|
|
/* Await a connection on socket FD.
|
51 |
|
|
When a connection arrives, open a new socket to communicate with it,
|
52 |
|
|
set *ADDR (which is *ADDR_LEN bytes long) to the address of the
|
53 |
|
|
connecting peer and *ADDR_LEN to the address's actual length, and
|
54 |
|
|
return the new socket's descriptor, or -1 for errors. */
|
55 |
|
|
int accept __P ((int __sockfd, __const struct sockaddr *__peer,
|
56 |
|
|
int *__paddrlen));
|
57 |
|
|
|
58 |
|
|
/* Put the current value for socket FD's option OPTNAME at protocol
|
59 |
|
|
level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set
|
60 |
|
|
*OPTLEN to the value's actual length. Returns 0 on success, -1 for
|
61 |
|
|
errors. */
|
62 |
|
|
int getsockopt __P ((int __s, int __level, int __optname,
|
63 |
|
|
void *__optval, int *__optlen));
|
64 |
|
|
|
65 |
|
|
/* Set socket FD's option OPTNAME at protocol level LEVEL
|
66 |
|
|
to *OPTVAL (which is OPTLEN bytes long).
|
67 |
|
|
Returns 0 on success, -1 for errors. */
|
68 |
|
|
int setsockopt __P ((int __s, int __level, int __optname,
|
69 |
|
|
__const void *__optval, int optlen));
|
70 |
|
|
|
71 |
|
|
/* Put the local address of FD into *ADDR and its length in *LEN. */
|
72 |
|
|
int getsockname __P ((int __sockfd, struct sockaddr *__addr,
|
73 |
|
|
int *__paddrlen));
|
74 |
|
|
|
75 |
|
|
/* Put the address of the peer connected to socket FD into *ADDR
|
76 |
|
|
(which is *LEN bytes long), and its actual length into *LEN. */
|
77 |
|
|
int getpeername __P ((int __sockfd, struct sockaddr *__peer,
|
78 |
|
|
int *__paddrlen));
|
79 |
|
|
|
80 |
|
|
/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
|
81 |
|
|
int send __P ((int __sockfd, __const void *__buff, size_t __len,
|
82 |
|
|
unsigned int __flags));
|
83 |
|
|
|
84 |
|
|
/* Read N bytes into BUF from socket FD.
|
85 |
|
|
Returns the number read or -1 for errors. */
|
86 |
|
|
int recv __P ((int __sockfd, void *__buff, size_t __len,
|
87 |
|
|
unsigned int __flags));
|
88 |
|
|
|
89 |
|
|
/* Send N bytes of BUF on socket FD to peer at address ADDR (which is
|
90 |
|
|
ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */
|
91 |
|
|
int sendto __P ((int __sockfd, __const void *__buff, size_t __len,
|
92 |
|
|
unsigned int __flags, __const struct sockaddr *__to,
|
93 |
|
|
int __tolen));
|
94 |
|
|
|
95 |
|
|
/* Read N bytes into BUF through socket FD.
|
96 |
|
|
If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address
|
97 |
|
|
of the sender, and store the actual size of the address in
|
98 |
|
|
*ADDR_LEN. Returns the number of bytes read or -1 for errors. */
|
99 |
|
|
int recvfrom __P ((int __sockfd, void *__buff, size_t __len,
|
100 |
|
|
unsigned int __flags, struct sockaddr *__from,
|
101 |
|
|
int *__fromlen));
|
102 |
|
|
|
103 |
|
|
/* Send a message described MESSAGE on socket FD.
|
104 |
|
|
Returns the number of bytes sent, or -1 for errors. */
|
105 |
|
|
extern int sendmsg __P ((int __fd, __const struct msghdr *__message,
|
106 |
|
|
unsigned int __flags));
|
107 |
|
|
|
108 |
|
|
/* Receive a message as described by MESSAGE from socket FD.
|
109 |
|
|
Returns the number of bytes read or -1 for errors. */
|
110 |
|
|
extern int recvmsg __P ((int __fd, struct msghdr *__message,
|
111 |
|
|
unsigned int __flags));
|
112 |
|
|
|
113 |
|
|
/* Shut down all or part of the connection open on socket FD.
|
114 |
|
|
HOW determines what to shut down:
|
115 |
|
|
|
116 |
|
|
1 = No more transmissions;
|
117 |
|
|
2 = No more receptions or transmissions.
|
118 |
|
|
Returns 0 on success, -1 for errors. */
|
119 |
|
|
int shutdown __P ((int __sockfd, int __how));
|
120 |
|
|
|
121 |
|
|
|
122 |
|
|
/* belongs here or elsewhere? */
|
123 |
|
|
int rcmd __P ((char **__ahost, unsigned short __inport,
|
124 |
|
|
__const char *__locuser, __const char *__remuser,
|
125 |
|
|
__const char *__cmd, int *__fd2p));
|
126 |
|
|
int rresvport __P ((int *__port));
|
127 |
|
|
int ruserok __P ((__const char *__rhost, int __superuser,
|
128 |
|
|
__const char *__ruser, __const char *__luser));
|
129 |
|
|
int rexec __P ((char **__ahost, int __inport, __const char *__user,
|
130 |
|
|
__const char *__passwd, __const char *__cmd,
|
131 |
|
|
int *__fd2p));
|
132 |
|
|
|
133 |
|
|
__END_DECLS
|
134 |
|
|
|
135 |
|
|
#endif /* _SYS_SOCKET_H */
|