Wireshark 4.7.3
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
packet-udx.h
1/* packet-udx.h
2 * Routines for UDX dissection
3 * Copyright 2026, Prabakaran Sivakumar <zkasuran@gmail.com>
4 *
5 * Wireshark - Network traffic analyzer
6 * By Gerald Combs <gerald@wireshark.org>
7 * Copyright 1998 Gerald Combs
8 *
9 * SPDX-License-Identifier: GPL-2.0-or-later
10 */
11
12#ifndef __PACKET_UDX_H__
13#define __PACKET_UDX_H__
14
15#include "ws_symbol_export.h"
16
17#include <epan/conversation.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif /* __cplusplus */
22
23/* Bounds the SACK blocks carried per packet. A packet carrying data is
24 * limited by data_offset to 255 bytes of them, but one carrying none leaves
25 * that byte zero and lets the blocks run to the end of the datagram, where
26 * libudx sends up to UDX_MAX_SACKS of them. */
27#define UDX_MAX_SACK_BLOCKS 50
28
29/*
30 * Queued on the "udx" tap: one decoded UDX header, with the stream it belongs
31 * to and the addresses and ports of the datagram that carried it.
32 *
33 * Sequence and acknowledgement numbers count packets rather than bytes, so
34 * seq advances by one per packet whatever the payload size. Consumers that
35 * want a byte offset have to accumulate payload_len themselves.
36 */
37typedef struct udx_info {
38 uint32_t id; /* the receiver's stream id, as carried on the wire */
39 uint32_t seq; /* per-packet sequence counter */
40 uint32_t ack; /* next seq expected from the peer */
41 uint32_t window; /* sender's receive window, in bytes */
42 uint32_t payload_len; /* payload bytes, excluding SACK blocks and padding */
43 uint32_t stream; /* Wireshark UDX stream index, as in udx.stream */
44 uint32_t sport; /* UDP source port of the carrying datagram */
45 uint32_t dport; /* UDP destination port of the carrying datagram */
46 uint8_t flags; /* UDX type flags */
47 uint8_t data_offset; /* bytes between the fixed header and the payload */
48 address ip_src;
49 address ip_dst;
50 unsigned num_sack_blocks;
51 uint32_t sack_start[UDX_MAX_SACK_BLOCKS];
52 uint32_t sack_end[UDX_MAX_SACK_BLOCKS];
53} udx_info_t;
54
55#ifdef __cplusplus
56}
57#endif /* __cplusplus */
58
59#endif /* __PACKET_UDX_H__ */
60
61/*
62 * Editor modelines - https://www.wireshark.org/tools/modelines.html
63 *
64 * Local variables:
65 * c-basic-offset: 4
66 * tab-width: 8
67 * indent-tabs-mode: nil
68 * End:
69 *
70 * vi: set shiftwidth=4 tabstop=8 expandtab:
71 * :indentSize=4:tabSize=8:noTabs=true:
72 */
struct _address address
Holds a network or link-layer address of any supported type.
Definition packet-udx.h:37