1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2020 Microsoft Corporation
4 * PCAP Next Generation Capture File writer
6 * See: https://github.com/pcapng/pcapng/ for the file format.
9 enum pcapng_block_types {
10 PCAPNG_INTERFACE_BLOCK = 1,
11 PCAPNG_PACKET_BLOCK, /* Obsolete */
12 PCAPNG_SIMPLE_PACKET_BLOCK,
13 PCAPNG_NAME_RESOLUTION_BLOCK,
14 PCAPNG_INTERFACE_STATS_BLOCK,
15 PCAPNG_ENHANCED_PACKET_BLOCK,
17 PCAPNG_SECTION_BLOCK = 0x0A0D0D0A,
20 struct pcapng_option {
26 #define PCAPNG_BYTE_ORDER_MAGIC 0x1A2B3C4D
27 #define PCAPNG_MAJOR_VERS 1
28 #define PCAPNG_MINOR_VERS 0
32 PCAPNG_OPT_COMMENT = 1,
35 struct pcapng_section_header {
37 uint32_t block_length;
38 uint32_t byte_order_magic;
39 uint16_t major_version;
40 uint16_t minor_version;
41 uint64_t section_length;
44 enum pcapng_section_opt {
45 PCAPNG_SHB_HARDWARE = 2,
47 PCAPNG_SHB_USERAPPL = 4,
50 struct pcapng_interface_block {
51 uint32_t block_type; /* 1 */
52 uint32_t block_length;
58 enum pcapng_interface_options {
60 PCAPNG_IFB_DESCRIPTION,
75 struct pcapng_enhance_packet_block {
76 uint32_t block_type; /* 6 */
77 uint32_t block_length;
78 uint32_t interface_id;
79 uint32_t timestamp_hi;
80 uint32_t timestamp_lo;
81 uint32_t capture_length;
82 uint32_t original_length;
86 #define PCAPNG_IFB_INBOUND 0b01
87 #define PCAPNG_IFB_OUTBOUND 0b10
89 enum pcapng_epb_options {
98 enum pcapng_epb_hash {
99 PCAPNG_HASH_2COMP = 0,
104 PCAPNG_HASH_TOEPLITZ,
107 struct pcapng_simple_packet {
108 uint32_t block_type; /* 3 */
109 uint32_t block_length;
110 uint32_t packet_length;
113 struct pcapng_statistics {
114 uint32_t block_type; /* 5 */
115 uint32_t block_length;
116 uint32_t interface_id;
117 uint32_t timestamp_hi;
118 uint32_t timestamp_lo;
121 enum pcapng_isb_options {
122 PCAPNG_ISB_STARTTIME = 2,
126 PCAPNG_ISB_FILTERACCEPT,