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/peekclassic.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/peekclassic.c')
-rw-r--r-- | wiretap/peekclassic.c | 30 |
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) { |