1 #ifndef __TCPCRYPT_TCPCRYPT_H__
2 #define __TCPCRYPT_TCPCRYPT_H__
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #pragma GCC visibility push(default)
7 #endif
8 
9 #ifndef __WIN32__
10 #include <sys/socket.h>
11 #include <stdint.h>
12 #else
13 #include <winsock2.h>
14 #include <ws2tcpip.h> /* TODO: needed? */
15 #endif
16 
17 #define TCPCRYPT_SID_MAXLEN	32
18 
19 /* tcpcrypt get/setsockopt optnames */
20 enum {
21         TCP_CRYPT_ENABLE	= 0,
22         TCP_CRYPT_CMODE,
23 	TCP_CRYPT_SESSID,
24 	TCP_CRYPT_RSA_KEY	= 3,
25 
26 	TCP_CRYPT_APP_SUPPORT	= 15,
27 
28 	/* non standard options */
29 	TCP_CRYPT_RESET		= 100,
30 	TCP_CRYPT_NOCACHE,
31 	TCP_CRYPT_NETSTAT,
32 };
33 
34 enum {
35 	TCPCRYPT_PARAM_CTLPATH	= 0,
36 };
37 
38 extern void tcpcrypt_setparam(int param, void *val);
39 
40 extern int tcpcrypt_getsockopt(int s, int level, int optname, void *optval,
41 			       socklen_t *optlen);
42 extern int tcpcrypt_setsockopt(int s, int level, int optname,
43 			       const void *optval, socklen_t optlen);
44 
45 extern char *tcpcrypt_getsessid(char *remote_ip, uint16_t remote_port,
46                                 char *local_ip,  uint16_t local_port);
47 
48 #ifdef __cplusplus
49 }
50 #pragma GCC visibility pop
51 #endif
52 
53 
54 #endif // __TCPCRYPT_TCPCRYPT_H__
55