Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
packet-quic.h
1/* packet-quic.h
2 *
3 * Wireshark - Network traffic analyzer
4 * By Gerald Combs <[email protected]>
5 * Copyright 1998 Gerald Combs
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10#ifndef __PACKET_QUIC_H__
11#define __PACKET_QUIC_H__
12
13#include "ws_symbol_export.h"
14
15#include <glibconfig.h>
16#include <wsutil/wsgcrypt.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif /* __cplusplus */
21
22
27typedef struct _quic_stream_info {
28 uint64_t stream_id;
29 uint64_t stream_offset;
30 uint32_t offset;
32 bool from_server;
34
39typedef struct _quic_datagram_info {
41 bool from_server;
43
44/*
45 * Although the QUIC SCID/DCID length field can store at most 255, v1 limits the
46 * CID length to 20.
47 */
48#define QUIC_MAX_CID_LENGTH 20
49
50typedef struct quic_cid {
51 uint8_t len;
52 uint8_t cid[QUIC_MAX_CID_LENGTH];
53 uint8_t reset_token[16];
54 bool reset_token_set;
55 uint64_t seq_num;
56 uint64_t path_id;
58
63#define QUIC_STREAM_TYPE(stream_id) ((stream_id) & 3U)
64#define QUIC_STREAM_CLIENT_BIDI 0
65#define QUIC_STREAM_SERVER_BIDI 1
66#define QUIC_STREAM_CLIENT_UNI 2
67#define QUIC_STREAM_SERVER_UNI 3
68
72#define QUIC_MP_NO_PATH_ID 1
73#define QUIC_MP_PATH_ID 2
74
77void quic_stream_add_proto_data(struct _packet_info *pinfo, quic_stream_info *stream_info, void *proto_data);
78void *quic_stream_get_proto_data(struct _packet_info *pinfo, quic_stream_info *stream_info);
79
81WS_DLL_PUBLIC uint32_t get_quic_connections_count(void);
82
83typedef struct gquic_info_data {
84 uint8_t version;
85 bool version_valid;
86 bool encoding;
87 uint16_t server_port;
89
90int
91dissect_gquic_frame_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, unsigned offset, uint8_t len_pkn, gquic_info_data_t *gquic_info);
92uint32_t
93dissect_gquic_tags(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ft_tree, unsigned offset);
94
95void
96quic_add_connection(packet_info *pinfo, quic_cid_t *cid);
97void
98quic_add_loss_bits(packet_info *pinfo, uint64_t value);
99void
100quic_add_stateless_reset_token(packet_info *pinfo, tvbuff_t *tvb, int offset, const quic_cid_t *cid);
101void
102quic_add_multipath(packet_info *pinfo, unsigned version);
103void
104quic_add_grease_quic_bit(packet_info *pinfo);
105void
106quic_proto_tree_add_version(tvbuff_t *tvb, proto_tree *tree, int hfindex, unsigned offset);
107
112WS_DLL_PUBLIC bool
113quic_get_stream_id_le(unsigned streamid, unsigned sub_stream_id, unsigned *sub_stream_id_out);
114
119WS_DLL_PUBLIC bool
120quic_get_stream_id_ge(unsigned streamid, unsigned sub_stream_id, unsigned *sub_stream_id_out);
121
122
126WS_DLL_PUBLIC bool
127quic_conn_data_get_conn_client_dcid_initial(struct _packet_info *pinfo, quic_cid_t *dcid);
128
129#ifdef __cplusplus
130}
131#endif /* __cplusplus */
132
133#endif /* __PACKET_QUIC_H__ */
Definition packet_info.h:43
Definition proto.h:907
Definition packet-quic.h:39
struct quic_info_data * quic_info
Definition packet-quic.h:40
Definition packet-quic.h:27
struct quic_info_data * quic_info
Definition packet-quic.h:31
uint32_t offset
Definition packet-quic.h:30
uint64_t stream_offset
Definition packet-quic.h:29
uint64_t stream_id
Definition packet-quic.h:28
Definition packet-quic.h:83
Definition packet-quic.h:50
Definition packet-quic.c:417
Definition tvbuff-int.h:36