summaryrefslogtreecommitdiff
path: root/include/quic.h
blob: dcb25c852132b80d9c9148c9bfcf13f9f7cb9d35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
 * quic.h
 *
 *  Created on: 2021-11-08
 *  Author: liuxueli
 */

#ifndef __QUIC_H__
#define __QUIC_H__

#define QUIC_INTEREST_KEY		    (1<<QUIC_INTEREST_KEY_MASK)
#define QUIC_CLIENT_HELLO		    (1<<QUIC_CLIENT_HELLO_MASK)
#define QUIC_SERVER_HELLO		    (1<<QUIC_SERVER_HELLO_MASK)
#define QUIC_CACHED_CERT		    (1<<QUIC_CACHED_CERT_MASK)
#define QUIC_COMM_CERT		        (1<<QUIC_COMM_CERT_MASK)
#define QUIC_CERT_CHAIN		        (1<<QUIC_CERT_CHAIN_MASK)
#define QUIC_APPLICATION_DATA	    (1<<QUIC_APPLICATION_DATA_MASK)
#define QUIC_USEING_VERSION			(1<<QUIC_USEING_VERSION_MASK)
#define QUIC_NEGOTIATION_VERSION	(1<<QUIC_NEGOTIATION_VERSION_MASK)
#define QUIC_REJECTION			    (1<<QUIC_REJECTION_MASK)


enum quic_interested_region
{
	QUIC_INTEREST_KEY_MASK = 0,
	QUIC_CLIENT_HELLO_MASK,
	QUIC_SERVER_HELLO_MASK,
	QUIC_CACHED_CERT_MASK,
	QUIC_COMM_CERT_MASK,
	QUIC_CERT_CHAIN_MASK,
	QUIC_APPLICATION_DATA_MASK,
	QUIC_USEING_VERSION_MASK,
	QUIC_NEGOTIATION_VERSION_MASK,
	QUIC_REJECTION_MASK
};

struct quic_client_hello
{
	char *sni;
	char *user_agent;
};

struct quic_info
{
	unsigned int quic_version;
	struct quic_client_hello *client_hello;
};


//buff_len minimun 32bytes
int quic_version_int2string(unsigned int version, char *buff, int buff_len);
//ret: NULL: not quic, quic_info: quic version
struct quic_info *quic_protocol_identify(const struct streaminfo *a_stream);

#endif /* SRC__QUIC_H__ */