aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/peekclassic.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/peekclassic.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/peekclassic.c')
-rw-r--r--wiretap/peekclassic.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/wiretap/peekclassic.c b/wiretap/peekclassic.c
index 906594e845..92b54a6ef1 100644
--- a/wiretap/peekclassic.c
+++ b/wiretap/peekclassic.c
@@ -423,6 +423,7 @@ static int peekclassic_read_packet_v7(wtap *wth, FILE_T fh,
guint64 timestamp;
time_t tsecs;
guint32 tusecs;
+ guint32 pack_flags;
guint8 radio_info[RADIO_INFO_SIZE];
if (!wtap_read_bytes_or_eof(fh, ep_pkt, sizeof(ep_pkt), err, err_info))
@@ -450,20 +451,24 @@ static int peekclassic_read_packet_v7(wtap *wth, FILE_T fh,
/* fill in packet header values */
rec->rec_type = REC_TYPE_PACKET;
- rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN|WTAP_HAS_PACK_FLAGS;
+ rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN;
tsecs = (time_t) (timestamp/1000000);
tusecs = (guint32) (timestamp - tsecs*1000000);
rec->ts.secs = tsecs - EPOCH_DELTA_1904_01_01_00_00_00_UTC;
rec->ts.nsecs = tusecs * 1000;
rec->rec_header.packet_header.len = length;
rec->rec_header.packet_header.caplen = sliceLength;
- rec->rec_header.packet_header.pack_flags = 0;
+ rec->block = wtap_block_create(WTAP_BLOCK_PACKET);
+ pack_flags = 0;
if (flags & FLAGS_HAS_CRC_ERROR)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_CRC_ERROR;
+ pack_flags |= PACK_FLAGS_CRC_ERROR;
if (flags & FLAGS_FRAME_TOO_LONG)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_PACKET_TOO_LONG;
+ pack_flags |= PACK_FLAGS_PACKET_TOO_LONG;
if (flags & FLAGS_FRAME_TOO_SHORT)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;
+ pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;
+ if (pack_flags != 0) {
+ wtap_block_add_uint32_option(rec->block, OPT_PKT_FLAGS, pack_flags);
+ }
switch (wth->file_encap) {
@@ -611,6 +616,7 @@ static gboolean peekclassic_read_packet_v56(wtap *wth, FILE_T fh,
guint16 length;
guint16 sliceLength;
guint8 flags;
+ guint32 pack_flags;
#if 0
guint8 status;
#endif
@@ -660,19 +666,23 @@ static gboolean peekclassic_read_packet_v56(wtap *wth, FILE_T fh,
/* fill in packet header values */
rec->rec_type = REC_TYPE_PACKET;
- rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN|WTAP_HAS_PACK_FLAGS;
+ rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN;
/* timestamp is in milliseconds since reference_time */
rec->ts.secs = peekclassic->reference_time + (timestamp / 1000);
rec->ts.nsecs = 1000 * (timestamp % 1000) * 1000;
rec->rec_header.packet_header.len = length;
rec->rec_header.packet_header.caplen = sliceLength;
- rec->rec_header.packet_header.pack_flags = 0;
+ rec->block = wtap_block_create(WTAP_BLOCK_PACKET);
+ pack_flags = 0;
if (flags & FLAGS_HAS_CRC_ERROR)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_CRC_ERROR;
+ pack_flags |= PACK_FLAGS_CRC_ERROR;
if (flags & FLAGS_FRAME_TOO_LONG)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_PACKET_TOO_LONG;
+ pack_flags |= PACK_FLAGS_PACKET_TOO_LONG;
if (flags & FLAGS_FRAME_TOO_SHORT)
- rec->rec_header.packet_header.pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;
+ pack_flags |= PACK_FLAGS_PACKET_TOO_SHORT;
+ if (pack_flags != 0) {
+ wtap_block_add_uint32_option(rec->block, OPT_PKT_FLAGS, pack_flags);
+ }
switch (wth->file_encap) {