#include "stellar/socks_decoder.h" #define SOCKS_FIELD_VER_4 4 #define SOCKS_FIELD_VER_5 5 #define SOCKS5_REQUEST_METHOD_MIN_LEN 3 #define SOCKS5_REQUEST_MIN_LEN 6 #define SOCKS_VERSION_TYPE_SOCKS4 4 #define SOCKS_VERSION_TYPE_SOCKS5 5 #define SOCKS_CMD_CONNECT 0x01 #define SOCKS_CMD_BIND 0x02 #define SOCKS_CMD_UDP 0x03 #define SOCKS5_RSV_DEFAULT 0 #define SOCKS_ATYPE_IP4 1 #define SOCKS_ATYPE_IP6 4 #define SOCKS_ATYPE_FQDN 3 #define SOCKS5_AUTH_NONE 0x00 #define SOCKS5_AUTH_PASS 0x02 #define SOCKS_LOG_MOUDLE "SOCKS_DECODER" struct socks_decoder_info { int plugin_id; int sess_exdata_idx; struct stellar *st; struct logger *log_handle; int socks_decoder_topic_id; int tcp_topic_id; }; enum socks_establish_state { SS_BEGIN = 0, SS_SUB, SS_END, SS_FAILED }; enum socks_internal_state { STATE_INIT, STATE_OPENING, STATE_FAILED }; struct socks_tunnel_stream { enum socks_internal_state state; enum socks_establish_state client_state; enum socks_establish_state server_state; struct socks_info info; };