1
/* ==== socket.h.h ============================================================
2
* Copyright (c) 1994 by Chris Provenzano, proven@athena.mit.edu
4
* Description : Correct Linux header file.
7
#ifndef _PTHREAD_SOCKET_H_
8
#define _PTHREAD_SOCKET_H_
10
/* #include <linux/socket.h> */
11
#ifndef _LINUX_SOCKET_H
12
#define _LINUX_SOCKET_H
16
#define IPTOS_LOWDELAY 0x10
17
#define IPTOS_THROUGHPUT 0x08
18
#define IPTOS_RELIABILITY 0x04
23
#ifdef V1_3_WILL_DO_THIS_FUNKY_STUFF
29
/* #include <asm/socket.h> arch-dependent defines */
30
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
31
#include <pthread/posix.h>
34
unsigned short sa_family; /* address family, AF_xxx */
35
char sa_data[14]; /* 14 bytes of protocol address */
39
int l_onoff; /* Linger active */
40
int l_linger; /* How long to linger for */
45
void * msg_name; /* Socket name */
46
int msg_namelen; /* Length of name */
47
struct iovec * msg_iov; /* Data blocks */
48
int msg_iovlen; /* Number of blocks */
49
void * msg_accrights; /* Per protocol magic (eg BSD file descriptor passing) */
50
int msg_accrightslen;/* Length of rights list */
54
#define SOCK_STREAM 1 /* stream (connection) socket */
55
#define SOCK_DGRAM 2 /* datagram (conn.less) socket */
56
#define SOCK_RAW 3 /* raw socket */
57
#define SOCK_RDM 4 /* reliably-delivered message */
58
#define SOCK_SEQPACKET 5 /* sequential packet socket */
59
#define SOCK_PACKET 10 /* linux specific way of */
60
/* getting packets at the dev */
61
/* level. For writing rarp and */
62
/* other similar things on the */
65
/* Supported address families. */
67
#define AF_UNIX 1 /* Unix domain sockets */
68
#define AF_INET 2 /* Internet IP Protocol */
69
#define AF_AX25 3 /* Amateur Radio AX.25 */
70
#define AF_IPX 4 /* Novell IPX */
71
#define AF_APPLETALK 5 /* Appletalk DDP */
72
#define AF_NETROM 6 /* Amateur radio NetROM */
73
#define AF_BRIDGE 7 /* Multiprotocol bridge */
74
#define AF_AAL5 8 /* Reserved for Werner's ATM */
75
#define AF_X25 9 /* Reserved for X.25 project */
76
#define AF_INET6 10 /* IP version 6 */
77
#define AF_MAX 12 /* For now.. */
79
/* Protocol families, same as address families. */
80
#define PF_UNSPEC AF_UNSPEC
81
#define PF_UNIX AF_UNIX
82
#define PF_INET AF_INET
83
#define PF_AX25 AF_AX25
85
#define PF_APPLETALK AF_APPLETALK
86
#define PF_NETROM AF_NETROM
87
#define PF_BRIDGE AF_BRIDGE
88
#define PF_AAL5 AF_AAL5
90
#define PF_INET6 AF_INET6
94
/* Maximum queue length specificable by listen. */
97
/* Flags we can use with send/ and recv. */
100
#define MSG_DONTROUTE 4
102
/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
107
#define SOL_ATALK 258
108
#define SOL_NETROM 259
112
/* For setsockoptions(2) */
114
#define SO_REUSEADDR 2
117
#define SO_DONTROUTE 5
118
#define SO_BROADCAST 6
121
#define SO_KEEPALIVE 9
122
#define SO_OOBINLINE 10
123
#define SO_NO_CHECK 11
124
#define SO_PRIORITY 12
126
/* To add :#define SO_REUSEPORT 14 */
129
#define IP_MULTICAST_IF 32
130
#define IP_MULTICAST_TTL 33
131
#define IP_MULTICAST_LOOP 34
132
#define IP_ADD_MEMBERSHIP 35
133
#define IP_DROP_MEMBERSHIP 36
136
/* These need to appear somewhere around here */
137
#define IP_DEFAULT_MULTICAST_TTL 1
138
#define IP_DEFAULT_MULTICAST_LOOP 1
139
#define IP_MAX_MEMBERSHIPS 20
144
/* TCP options - this way around because someone left a set in the c library includes */
145
#define TCP_NODELAY 1
148
/* The various priorities. */
149
#define SOPRI_INTERACTIVE 0
150
#define SOPRI_NORMAL 1
151
#define SOPRI_BACKGROUND 2
159
int accept __P_((int, struct sockaddr *, int *));
160
int bind __P_((int, const struct sockaddr *, int));
161
int connect __P_((int, const struct sockaddr *, int));
162
int listen __P_((int, int));
163
int socket __P_((int, int, int));
165
int getsockopt __P_((int __s, int __level, int __optname,
166
void *__optval, int *__optlen));
167
int setsockopt __P_((int __s, int __level, int __optname,
168
__const void *__optval, int optlen));
169
int getsockname __P_((int __sockfd, struct sockaddr *__addr,
171
int getpeername __P_((int __sockfd, struct sockaddr *__peer,
173
ssize_t send __P_((int __sockfd, __const void *__buff, size_t __len, int __flags));
174
ssize_t recv __P_((int __sockfd, void *__buff, size_t __len, int __flags));
175
ssize_t sendto __P_((int __sockfd, __const void *__buff, size_t __len,
176
int __flags, __const struct sockaddr *__to,
178
ssize_t recvfrom __P_((int __sockfd, void *__buff, size_t __len,
179
int __flags, struct sockaddr *__from,
181
extern ssize_t sendmsg __P_((int __fd, __const struct msghdr *__message,
183
extern ssize_t recvmsg __P_((int __fd, struct msghdr *__message,
185
int shutdown __P_((int __sockfd, int __how));