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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
/* ==== socket.h.h ============================================================
* Copyright (c) 1994 by Chris Provenzano, proven@athena.mit.edu
*
* Description : Correct Linux header file.
*/
#ifndef _PTHREAD_SOCKET_H_
#define _PTHREAD_SOCKET_H_
/* #include <linux/socket.h> */
#ifndef _LINUX_SOCKET_H
#define _LINUX_SOCKET_H
/* IP options */
#define IP_TOS 1
#define IPTOS_LOWDELAY 0x10
#define IPTOS_THROUGHPUT 0x08
#define IPTOS_RELIABILITY 0x04
#define IP_TTL 2
#ifndef IP_HDRINCL
#define IP_HDRINCL 3
#endif
#ifdef V1_3_WILL_DO_THIS_FUNKY_STUFF
#define IP_OPTIONS 4
#endif
#endif
/* Type for length arguments in socket calls. */
typedef unsigned int socklen_t;
/* #include <asm/socket.h> arch-dependent defines */
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
#include <pthread/posix.h>
struct sockaddr {
unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
struct linger {
int l_onoff; /* Linger active */
int l_linger; /* How long to linger for */
};
struct msghdr
{
void * msg_name; /* Socket name */
int msg_namelen; /* Length of name */
struct iovec * msg_iov; /* Data blocks */
int msg_iovlen; /* Number of blocks */
void * msg_accrights; /* Per protocol magic (eg BSD file descriptor passing) */
int msg_accrightslen;/* Length of rights list */
};
/* Socket types. */
#define SOCK_STREAM 1 /* stream (connection) socket */
#define SOCK_DGRAM 2 /* datagram (conn.less) socket */
#define SOCK_RAW 3 /* raw socket */
#define SOCK_RDM 4 /* reliably-delivered message */
#define SOCK_SEQPACKET 5 /* sequential packet socket */
#define SOCK_PACKET 10 /* linux specific way of */
/* getting packets at the dev */
/* level. For writing rarp and */
/* other similar things on the */
/* user level. */
/* Supported address families. */
#define AF_UNSPEC 0
#define AF_UNIX 1 /* Unix domain sockets */
#define AF_INET 2 /* Internet IP Protocol */
#define AF_AX25 3 /* Amateur Radio AX.25 */
#define AF_IPX 4 /* Novell IPX */
#define AF_APPLETALK 5 /* Appletalk DDP */
#define AF_NETROM 6 /* Amateur radio NetROM */
#define AF_BRIDGE 7 /* Multiprotocol bridge */
#define AF_AAL5 8 /* Reserved for Werner's ATM */
#define AF_X25 9 /* Reserved for X.25 project */
#define AF_INET6 10 /* IP version 6 */
#define AF_MAX 12 /* For now.. */
/* Protocol families, same as address families. */
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#define PF_AX25 AF_AX25
#define PF_IPX AF_IPX
#define PF_APPLETALK AF_APPLETALK
#define PF_NETROM AF_NETROM
#define PF_BRIDGE AF_BRIDGE
#define PF_AAL5 AF_AAL5
#define PF_X25 AF_X25
#define PF_INET6 AF_INET6
#define PF_MAX AF_MAX
/* Maximum queue length specificable by listen. */
#define SOMAXCONN 128
/* Flags we can use with send/ and recv. */
#define MSG_OOB 1
#define MSG_PEEK 2
#define MSG_DONTROUTE 4
/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
#define SOL_SOCKET 1
#define SOL_IP 0
#define SOL_IPX 256
#define SOL_AX25 257
#define SOL_ATALK 258
#define SOL_NETROM 259
#define SOL_TCP 6
#define SOL_UDP 17
/* For setsockoptions(2) */
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
#define SO_ERROR 4
#define SO_DONTROUTE 5
#define SO_BROADCAST 6
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
#define SO_OOBINLINE 10
#define SO_NO_CHECK 11
#define SO_PRIORITY 12
#define SO_LINGER 13
/* To add :#define SO_REUSEPORT 14 */
#define IP_MULTICAST_IF 32
#define IP_MULTICAST_TTL 33
#define IP_MULTICAST_LOOP 34
#define IP_ADD_MEMBERSHIP 35
#define IP_DROP_MEMBERSHIP 36
/* These need to appear somewhere around here */
#define IP_DEFAULT_MULTICAST_TTL 1
#define IP_DEFAULT_MULTICAST_LOOP 1
#define IP_MAX_MEMBERSHIPS 20
/* IPX options */
#define IPX_TYPE 1
/* TCP options - this way around because someone left a set in the c library includes */
#define TCP_NODELAY 1
#define TCP_MAXSEG 2
/* The various priorities. */
#define SOPRI_INTERACTIVE 0
#define SOPRI_NORMAL 1
#define SOPRI_BACKGROUND 2
/*
* Functions
*/
__BEGIN_DECLS
int accept __P_((int, struct sockaddr *, socklen_t *));
int bind __P_((int, const struct sockaddr *, socklen_t));
int connect __P_((int, const struct sockaddr *, socklen_t));
int listen __P_((int, int));
int socket __P_((int, int, int));
int getsockopt __P_((int __s, int __level, int __optname,
void *__optval, socklen_t *__optlen));
int setsockopt __P_((int __s, int __level, int __optname,
__const void *__optval, socklen_t optlen));
int getsockname __P_((int __sockfd, struct sockaddr *__addr,
socklen_t *__paddrlen));
int getpeername __P_((int __sockfd, struct sockaddr *__peer,
socklen_t *__paddrlen));
ssize_t send __P_((int __sockfd, __const void *__buff, size_t __len, int __flags));
ssize_t recv __P_((int __sockfd, void *__buff, size_t __len, int __flags));
ssize_t sendto __P_((int __sockfd, __const void *__buff, size_t __len,
int __flags, __const struct sockaddr *__to,
socklen_t __tolen));
ssize_t recvfrom __P_((int __sockfd, void *__buff, size_t __len,
int __flags, struct sockaddr *__from,
socklen_t *__fromlen));
extern ssize_t sendmsg __P_((int __fd, __const struct msghdr *__message,
int __flags));
extern ssize_t recvmsg __P_((int __fd, struct msghdr *__message,
int __flags));
int shutdown __P_((int __sockfd, int __how));
__END_DECLS
#endif
|