diff options
author | David Perry <boolean263@protonmail.com> | 2021-07-12 12:41:57 -0400 |
---|---|---|
committer | David Perry <boolean263@protonmail.com> | 2021-07-12 12:41:57 -0400 |
commit | 06ed6930dc602b5b3b1a79a176272c1846840f8f (patch) | |
tree | f56b5523b9409634357f1a3aa440dea69d3f1f5a /wiretap/ngsniffer.c | |
parent | 86e2fda11e199b8d0e874147e60a1ba1f0ddb803 (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.c | 22 |
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) { |