-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsystem_includes_nacl.h
executable file
·174 lines (154 loc) · 6.15 KB
/
system_includes_nacl.h
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
// The core library - copyright GarageGames. The core library is released under the MIT Open Source software license. See /license.txt in this distribution for specific license terms.
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/time.h>
#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdarg.h>
typedef __uint8_t sa_family_t;
struct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses from name server */
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
};
struct hostent *gethostbyname(const char *) {
return 0;
}
struct sockaddr {
unsigned char sa_len;
unsigned char sa_family;
char sa_data[14];
};
typedef __uint32_t in_addr_t; /* base type for internet address */
typedef __uint16_t in_port_t;
struct in_addr {
in_addr_t s_addr;
};
struct sockaddr_in {
__uint8_t sin_len;
__uint8_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
inline in_addr_t inet_addr(const char *addr_str) {
unsigned int a, b, c, d;
if(sscanf(addr_str, "%d.%d.%d.%d", &a, &b, &c, &d) == 4)
{
return (a << 24) | (b << 16) | (c << 8) | d;
}
else
return 0;
}
typedef unsigned int socklen_t;
#define SOCK_DGRAM 2
#define AF_INET 2
#define SOL_SOCKET 0xffff
#define SO_SNDBUF 0x1001
#define SO_RCVBUF 0x1002
#define FIONBIO 1
#define SO_BROADCAST 0x0020
#define INADDR_ANY 0x00000000
#define INADDR_BROADCAST 0xffffffff
#define INADDR_LOOPBACK 0x7f000001
#define INADDR_NONE 0xffffffff
int ioctl(int, unsigned long, ...) { return 0; }
int bind(int, const struct sockaddr *, socklen_t) { return 0; }
int getsockname(int, struct sockaddr * __restrict, socklen_t * __restrict) { return 0; }
int getsockopt(int, int, int, void * __restrict, socklen_t * __restrict) { return 0; }
int setsockopt(int, int, int, const void *, socklen_t) { return 0; }
ssize_t recvfrom(int, void *, size_t, int, struct sockaddr * __restrict, socklen_t * __restrict)
{ errno = EAGAIN; return -1; }
ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) { return 0; }
int socket(int, int, int) { return 0; }
// NaCl is defined to be LSB first (little endian) and network byte order is MSB first
inline __uint32_t htonl(__uint32_t val) { return ((val >> 24) & 0xFF) | ((val >> 8) & 0xFF00) | ((val << 8) & 0xFF0000) | ((val << 24) & 0xFF000000); }
inline __uint16_t htons(__uint16_t val) { return ((val >> 8) & 0xFF) | ((val << 8) & 0xFF00); }
#define NO_IPX_SUPPORT
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr * PSOCKADDR;
typedef struct sockaddr SOCKADDR;
typedef struct in_addr IN_ADDR;
typedef int SOCKET;
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket close
#ifdef __cplusplus
#include <new>
#include <queue>
#endif
inline int pthread_cancel(pthread_t thread)
{
return 0;
}
extern "C" {
int kill(pid_t pid, int sig)
{
return 0;
}
};
/*
* 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 */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
#define SO_LINGER 0x0080 /* linger on close if data present (in ticks) */
#else
#define SO_LINGER 0x1080 /* linger on close if data present (in seconds) */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */
#define SO_TIMESTAMP 0x0400 /* timestamp received dgram traffic */
#ifndef __APPLE__
#define SO_ACCEPTFILTER 0x1000 /* there is an accept filter */
#else
#define SO_DONTTRUNC 0x2000 /* APPLE: Retain unread data */
/* (ATOMIC proto) */
#define SO_WANTMORE 0x4000 /* APPLE: Give hint when more data ready */
#define SO_WANTOOBFLAG 0x8000 /* APPLE: Want OOB in MSG_FLAG on receive */
#endif
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
/*
* Additional options, not kept in so_options.
*/
#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 */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
/*efine SO_PRIVSTATE 0x1009 get/deny privileged state */
#ifdef __APPLE__
#define SO_NREAD 0x1020 /* APPLE: get 1st-packet byte count */
#define SO_NKE 0x1021 /* APPLE: Install socket-level NKE */
#define SO_NOSIGPIPE 0x1022 /* APPLE: No SIGPIPE on EPIPE */
#define SO_NOADDRERR 0x1023 /* APPLE: Returns EADDRNOTAVAIL when src is not available anymore */
#define SO_NWRITE 0x1024 /* APPLE: Get number of bytes currently in send socket buffer */
#define SO_REUSESHAREUID 0x1025 /* APPLE: Allow reuse of port/socket by different userids */
#ifdef __APPLE_API_PRIVATE
#define SO_NOTIFYCONFLICT 0x1026 /* APPLE: send notification if there is a bind on a port which is already in use */
#endif
#define SO_LINGER_SEC 0x1080 /* linger on close if data present (in seconds) */
#define SO_RESTRICTIONS 0x1081 /* APPLE: deny inbound/outbound/both/flag set */
#define SO_RESTRICT_DENYIN 0x00000001 /* flag for SO_RESTRICTIONS - deny inbound */
#define SO_RESTRICT_DENYOUT 0x00000002 /* flag for SO_RESTRICTIONS - deny outbound */
#define SO_RESTRICT_DENYSET 0x80000000 /* flag for SO_RESTRICTIONS - deny has been set */
#endif
#define SO_LABEL 0x1010 /* socket's MAC label */
#define SO_PEERLABEL 0x1011 /* socket's peer MAC label */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */