1 #ifndef USOCKET_H
2 #define USOCKET_H
3 /*=========================================================================*\
4 * Socket compatibilization module for Unix
5 * LuaSocket toolkit
6 \*=========================================================================*/
7 
8 /*=========================================================================*\
9 * BSD include files
10 \*=========================================================================*/
11 /* error codes */
12 #include <errno.h>
13 /* close function */
14 #include <unistd.h>
15 /* fnctnl function and associated constants */
16 #include <fcntl.h>
17 /* struct sockaddr */
18 #include <sys/types.h>
19 /* socket function */
20 #include <sys/socket.h>
21 /* struct timeval */
22 #include <sys/time.h>
23 /* gethostbyname and gethostbyaddr functions */
24 #include <netdb.h>
25 /* sigpipe handling */
26 #include <signal.h>
27 /* IP stuff*/
28 #include <netinet/in.h>
29 #include <arpa/inet.h>
30 /* TCP options (nagle algorithm disable) */
31 #include <netinet/tcp.h>
32 #include <net/if.h>
33 
34 #ifndef SO_REUSEPORT
35 #define SO_REUSEPORT SO_REUSEADDR
36 #endif
37 
38 /* Some platforms use IPV6_JOIN_GROUP instead if
39  * IPV6_ADD_MEMBERSHIP. The semantics are same, though. */
40 #ifndef IPV6_ADD_MEMBERSHIP
41 #ifdef IPV6_JOIN_GROUP
42 #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
43 #endif /* IPV6_JOIN_GROUP */
44 #endif /* !IPV6_ADD_MEMBERSHIP */
45 
46 /* Same with IPV6_DROP_MEMBERSHIP / IPV6_LEAVE_GROUP. */
47 #ifndef IPV6_DROP_MEMBERSHIP
48 #ifdef IPV6_LEAVE_GROUP
49 #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
50 #endif /* IPV6_LEAVE_GROUP */
51 #endif /* !IPV6_DROP_MEMBERSHIP */
52 
53 typedef int t_socket;
54 typedef t_socket *p_socket;
55 typedef struct sockaddr_storage t_sockaddr_storage;
56 
57 #define SOCKET_INVALID (-1)
58 
59 #endif /* USOCKET_H */
60