1 #ifndef __TCPCRYPT_DIVERT_H__ 2 #define __TCPCRYPT_DIVERT_H__ 3 4 #define INJECT_TOS 0x22 5 6 enum { 7 DIVERT_ACCEPT = 0, 8 DIVERT_DROP, 9 DIVERT_MODIFY, 10 }; 11 12 #define DF_IN 0x1 13 14 typedef int (*divert_cb)(void *data, int len, int flags); 15 16 struct divert { 17 int (*open)(int port, divert_cb cb); 18 void (*next_packet)(int s); 19 void (*close)(void); 20 void (*inject)(void *data, int len); 21 void (*cycle)(void); 22 int (*orig_dest)(struct sockaddr_in *out, struct ip *ip, int *flags); 23 }; 24 25 extern struct divert *divert_get(void); 26 extern struct divert *_divert; 27 28 extern void raw_inject(void *data, int len); 29 extern void raw_open(void); 30 extern struct divert *divert_get_pcap(void); 31 32 extern void win_dont_rdr(int s); 33 extern uint32_t win_local_ip(void); 34 extern void win_handshake_complete(int s); 35 36 #endif /* __TCPCRYPT_DIVERT_H__ */ 37