aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/ngsniffer.c
diff options
context:
space:
mode:
authorDavid Perry <boolean263@protonmail.com>2021-07-12 12:41:57 -0400
committerDavid Perry <boolean263@protonmail.com>2021-07-12 12:41:57 -0400
commit06ed6930dc602b5b3b1a79a176272c1846840f8f (patch)
treef56b5523b9409634357f1a3aa440dea69d3f1f5a /wiretap/ngsniffer.c
parent86e2fda11e199b8d0e874147e60a1ba1f0ddb803 (diff)
Carry EPB flags as an option on the packet block
As requested by [this comment][1] on !2859, move `pack_flags` from a dedicated field in `wtap_rec` to a block option on the packet block in `wtap_rec.block`. [1]: https://gitlab.com/wireshark/wireshark/-/merge_requests/2859#note_615984624
Diffstat (limited to 'wiretap/ngsniffer.c')
-rw-r--r--wiretap/ngsniffer.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c
index b4cb3510ab..73dd0912a4 100644
--- a/wiretap/ngsniffer.c
+++ b/wiretap/ngsniffer.c
@@ -1159,6 +1159,7 @@ ngsniffer_process_record(wtap *wth, gboolean is_random, guint *padding,
/* Initialize - we'll be setting some presence flags below. */
rec->presence_flags = 0;
+ rec->block = wtap_block_create(WTAP_BLOCK_PACKET);
ngsniffer = (ngsniffer_t *)wth->priv;
switch (rec_type) {
@@ -1370,6 +1371,7 @@ set_metadata_frame2(wtap *wth, wtap_rec *rec, struct frame2_rec *frame2)
{
ngsniffer_t *ngsniffer;
union wtap_pseudo_header *pseudo_header;
+ guint32 pack_flags = 0;
ngsniffer = (ngsniffer_t *)wth->priv;
@@ -1418,32 +1420,30 @@ set_metadata_frame2(wtap *wth, wtap_rec *rec, struct frame2_rec *frame2)
switch (ngsniffer->network) {
case NETWORK_ENET:
- rec->presence_flags |= WTAP_HAS_PACK_FLAGS;
- rec->rec_header.packet_header.pack_flags = 0;
if (frame2->fs & FS_ETH_CRC)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_CRC_ERROR;
+ pack_flags |= PACK_FLAGS_CRC_ERROR;
if (frame2->fs & FS_ETH_ALIGN)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_UNALIGNED_FRAME;
+ pack_flags |= PACK_FLAGS_UNALIGNED_FRAME;
if (frame2->fs & FS_ETH_RUNT)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;;
+ pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;
break;
case NETWORK_FDDI:
- rec->presence_flags |= WTAP_HAS_PACK_FLAGS;
- rec->rec_header.packet_header.pack_flags = 0;
if (!(frame2->fs & FS_FDDI_INVALID) &&
(frame2->fs & (FS_FDDI_PCI_CRC|FS_FDDI_ISA_CRC)))
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_CRC_ERROR;
+ pack_flags |= PACK_FLAGS_CRC_ERROR;
break;
case NETWORK_SYNCHRO:
- rec->presence_flags |= WTAP_HAS_PACK_FLAGS;
- rec->rec_header.packet_header.pack_flags = 0;
if (frame2->fs & FS_SYNC_CRC)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_CRC_ERROR;
+ pack_flags |= PACK_FLAGS_CRC_ERROR;
break;
}
+ if (pack_flags != 0) {
+ wtap_block_add_uint32_option(rec->block, OPT_PKT_FLAGS, pack_flags);
+ }
+
pseudo_header = &rec->rec_header.packet_header.pseudo_header;
switch (wth->file_encap) {