relay.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef _RELAY_H_
  2. #define _RELAY_H_
  3. #include "flow.h"
  4. #include <stdint.h>
  5. struct proxy_thread_data {
  6. uint8_t *initial_data;
  7. uint16_t initial_len;
  8. uint8_t stream_id;
  9. int32_t pipefd;
  10. };
  11. typedef struct stream_st {
  12. uint8_t stream_id;
  13. int32_t pipefd;
  14. struct stream_st *next;
  15. } stream;
  16. typedef struct stream_table_st {
  17. stream *first;
  18. } stream_table;
  19. extern stream_table *streams;
  20. struct socks_req {
  21. uint8_t version;
  22. uint8_t cmd;
  23. uint8_t rsvd;
  24. uint8_t addr_type;
  25. };
  26. struct __attribute__((__packed__)) sl_up_hdr {
  27. uint8_t stream_id;
  28. uint16_t len;
  29. };
  30. int replace_packet(flow *f, struct packet_info *info);
  31. int process_downstream(flow *f, int32_t offset, struct packet_info *info);
  32. int read_header(flow *f, struct packet_info *info);
  33. uint32_t get_response_length(uint8_t *response);
  34. int fill_with_downstream(uint8_t *data, int32_t length);
  35. uint16_t tcp_checksum(struct packet_info *info);
  36. void *proxy_covert_site(void *data);
  37. #define BEGIN_HEADER 0x10
  38. #define PARSE_HEADER 0x20
  39. #define MID_CONTENT 0x30
  40. #define BEGIN_CHUNK 0x40
  41. #define MID_CHUNK 0x50
  42. #define END_CHUNK 0x60
  43. #define END_BODY 0x70
  44. #define FORFEIT_REST 0x80
  45. #define USE_REST 0x90
  46. #endif /* _RELAY_H_ */