1 #ifndef __TCPCRYPT_TCPCRYPTD_H__
2 #define __TCPCRYPT_TCPCRYPTD_H__
3 
4 #define REDIRECT_PORT 65530
5 
6 #define MAX_PARAM	12
7 
8 enum {
9 	XP_ALWAYS = 0,
10 	XP_DEFAULT,
11 	XP_DEBUG,
12 	XP_NOISY,
13 };
14 
15 enum {
16         TEST_CRYPT = 0,
17         TEST_TCP,
18 };
19 
20 enum {
21         TEST_STATE_START = 0,
22         TEST_STATE_CONNECTING,
23         TEST_STATE_REQ_SENT,
24         TEST_SUCCESS,
25         TEST_STATE_DONE,
26 };
27 
28 enum {
29         TEST_ERR_TIMEOUT 		= 666,
30         TEST_ERR_DISCONNECT		= 667,
31         TEST_ERR_BADINPUT		= 668,
32         TEST_ERR_UNEXPECTED_CRYPT	= 669,
33         TEST_ERR_NO_CRYPT		= 670,
34 };
35 
36 struct params {
37 	char	*p_params[MAX_PARAM];
38 	int	p_paramc;
39 };
40 
41 struct conf {
42 	int		cf_divert;
43 	int		cf_verbose;
44 	int		cf_disable;
45 	const char	*cf_ctl;
46 	int		cf_nocache;
47 	int		cf_accept;
48 	int		cf_modify;
49 	int		cf_dummy;
50 	int		cf_profile;
51 	int		cf_test;
52 	int		cf_debug;
53 	struct params	cf_test_params;
54 	struct params	cf_divert_params;
55 	int		cf_nat;
56 	int		cf_cipher;
57 	int		cf_mac;
58 	int		cf_rsa_client_hack;
59 	int		cf_disable_timers;
60 	int		cf_disable_network_test;
61 	int		cf_rdr;
62 	const char	*cf_test_server;
63 	const char	*cf_random_path;
64 	const char	*cf_jail_dir;
65 	const char	*cf_jail_user;
66 };
67 
68 struct fd;
69 typedef void (*fd_cb)(struct fd *fd);
70 
71 enum {
72 	FDS_IDLE = 0,
73 	FDS_READ,
74 	FDS_WRITE,
75 	FDS_DEAD
76 };
77 
78 struct fd {
79 	int	  fd_fd;
80 	fd_cb	  fd_cb;
81 	int	  fd_state;
82 	void	  *fd_priv;
83 	struct fd *fd_next;
84 };
85 
86 extern struct conf _conf;
87 
88 typedef void (*timer_cb)(void *a);
89 typedef int  (*packet_hook)(int rc, void *packet, int len, int flags);
90 
91 extern void *add_timer(unsigned int usec, timer_cb cb, void *arg);
92 extern struct fd *add_fd(int fd, fd_cb cb);
93 extern void clear_timer(void *timer);
94 extern void xprintf(int level, char *fmt, ...);
95 extern void hexdump(void *p, int len);
96 extern void errssl(int x, char *fmt, ...);
97 extern void set_time(struct timeval *tv);
98 extern void tcpcryptd(void);
99 extern void set_packet_hook(int post, packet_hook hook);
100 extern char *driver_param(int x);
101 extern char *test_param(int x);
102 extern void set_nonblocking(int x);
103 
104 extern uint64_t xbe64toh(uint64_t x);
105 extern uint64_t xhtobe64(uint64_t x);
106 
107 #endif /* __TCPCRYPT_TCPCRYPTD_H__ */
108