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;
31 uint32_t inorder_offset;
33 bool from_server;
35
40typedef struct _quic_datagram_info {
42 bool from_server;
44
45/*
46 * Although the QUIC SCID/DCID length field can store at most 255, v1 limits the
47 * CID length to 20.
48 */
49#define QUIC_MAX_CID_LENGTH 20
50
51typedef struct quic_cid {
52 uint8_t len;
53 uint8_t cid[QUIC_MAX_CID_LENGTH];
54 uint8_t reset_token[16];
55 bool reset_token_set;
56 uint64_t seq_num;
57 uint64_t path_id;
59
64#define QUIC_STREAM_TYPE(stream_id) ((stream_id) & 3U)
65#define QUIC_STREAM_CLIENT_BIDI 0
66#define QUIC_STREAM_SERVER_BIDI 1
67#define QUIC_STREAM_CLIENT_UNI 2
68#define QUIC_STREAM_SERVER_UNI 3
69
73#define QUIC_MP_NO_PATH_ID 1
74#define QUIC_MP_PATH_ID 2
75
78void quic_stream_add_proto_data(struct _packet_info *pinfo, quic_stream_info *stream_info, void *proto_data);
79void *quic_stream_get_proto_data(struct _packet_info *pinfo, quic_stream_info *stream_info);
80
82WS_DLL_PUBLIC uint32_t get_quic_connections_count(void);
83
84typedef struct gquic_info_data {
85 uint8_t version;
86 bool version_valid;
87 bool encoding;
88 uint16_t server_port;
90
91int
92dissect_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);
93uint32_t
94dissect_gquic_tags(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ft_tree, unsigned offset);
95
96void
97quic_add_connection(packet_info *pinfo, quic_cid_t *cid);
98void
99quic_add_loss_bits(packet_info *pinfo, uint64_t value);
100void
101quic_add_stateless_reset_token(packet_info *pinfo, tvbuff_t *tvb, int offset, const quic_cid_t *cid);
102void
103quic_add_multipath(packet_info *pinfo, unsigned version);
104void
105quic_add_grease_quic_bit(packet_info *pinfo);
106void
107quic_proto_tree_add_version(tvbuff_t *tvb, proto_tree *tree, int hfindex, unsigned offset);
108
113WS_DLL_PUBLIC bool
114quic_get_stream_id_le(unsigned streamid, unsigned sub_stream_id, unsigned *sub_stream_id_out);
115
120WS_DLL_PUBLIC bool
121quic_get_stream_id_ge(unsigned streamid, unsigned sub_stream_id, unsigned *sub_stream_id_out);
122
123
127WS_DLL_PUBLIC bool
128quic_conn_data_get_conn_client_dcid_initial(struct _packet_info *pinfo, quic_cid_t *dcid);
129
130#ifdef __cplusplus
131}
132#endif /* __cplusplus */
133
134#endif /* __PACKET_QUIC_H__ */
Definition packet_info.h:43
Definition proto.h:907
Definition packet-quic.h:40
struct quic_info_data * quic_info
Definition packet-quic.h:41
Definition packet-quic.h:27
uint32_t inorder_offset
Definition packet-quic.h:31
struct quic_info_data * quic_info
Definition packet-quic.h:32
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:84
Definition packet-quic.h:51
Definition packet-quic.c:415
Definition tvbuff-int.h:35