#ifndef _QUIC_ANALYSIS_H_
#define _QUIC_ANALYSIS_H_

#include "gquic.h"

#define FALSE	0x00
#define TRUE 	0x01
#define MAYBE 	0x02

#define	SUPPORT_QUIC_PORT_NUM	128

#define QUIC_HALF_CLOSE 			0x01
#define QUIC_WHOLE_CLOSE 			0x02
#define QUIC_DATA 			        0x03
#define QUIC_KEY 					1
#define QUIC_RETURN_NORM 				0x60
#define QUIC_RETURN_UNNORM 				0x61
#define QUIC_RETURN_RESET_BUFFER		0x62
#define QUIC_RETURN_DROPME 				0x63
#define MAX_REGION_NUM                  15
#define REGION_NAME_LEN                 32

struct _quic_param_t
{
	unsigned long long 	quic_interested_region_flag;
	unsigned long long 	quic_region_cnt;
	unsigned short 		quic_plugid;
	int level;
	int quic_port_num;
	int dump_packet_switch;
	unsigned short quic_port_list[SUPPORT_QUIC_PORT_NUM];
	char quic_conf_regionname[MAX_REGION_NUM][REGION_NAME_LEN];
	char log_path[128];
	void *logger;
};

enum quic_mes_type{
  VER_NEGO = 0,    //vertion negotiation packet
  PUB_RST,          //public reset packet
  FRAME,           //frame packet
  FEC,              //FEC packet
  Initial,          //iquic
  Retey,            //iquic
  Handshake,        //iquic
  MSG_UNKNOWN = 255
};

extern struct _quic_param_t g_quic_param;

int is_quic_port(struct streaminfo *pstream);
void quic_release_exts(int thread_seq, quic_tlv_t *ext_tags, int ext_tag_num);

#endif /* SRC_QUIC_ANALYSIS_H_ */

