You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up from #2502: Radiotap (#2509) records every present-flags word but keeps the optional fields it selects as raw fields. Decode them per the radiotap.org field specification: each field's alignment rule and size, the vendor namespace, and extended presence words. Keep unknown and vendor fields raw, with byte-exact round trips.
Blocked:#2575 also edits radiotap.py, its payload dispatch. This unblocks when #2575's PR merges.
#2607 has merged, so radiotap.py is free. Unblocked. A worker is on it. Optional fields are decoded per the radiotap.org specification and cross-checked against Wireshark or the kernel. Unknown and vendor fields stay raw, with byte-exact round trips.
Optional-field decoding is done locally, and a Sonnet review is running.
Each defined field is decoded per radiotap.org, with its alignment counted from the header start. Extended presence words, the radiotap/vendor namespace switches and TLV mode are all handled.
Unknown and vendor fields stay raw. Captured octets round-trip exactly. Output for existing captures is unchanged.
The field types are a new pcapkit.const.radiotap.FieldType, generated by a crawler of radiotap.org.
Needs deciding. The branch implements both recommendations unless you choose otherwise.
Bits 16 and 17 (RTS retries, data retries). radiotap.org lists them only as unofficial, but Linux mac80211 writes bit 17 on TX-status frames. Decoding currently stops at them.
(a) Leave them undecoded.
(b) Decode both.
(c) Decode only bit 17, since OpenBSD writes RSSI in bit 16.
Recommend (c), as a follow-up.
Bitmap fields stay plain integers. This covers Flags, the Channel flags, RX/TX flags and the MCS/VHT/HE known bits.
(a) Keep them as integers.
(b) Decode them into named flags. Each flag table then needs its own crawler.
Recommend (a). A follow-up could use the Flags FCS (0x10) and data-pad (0x20) bits to let IEEE802_11 split off the FCS and padding.
Bits 16 and 17 are decoded. They are RTS retries and data retries, one octet each, and both are added to FieldType from radiotap.org's unofficial-fields table. The docstring notes that OpenBSD uses bit 16 differently.
Bitmap fields decode into named flags rather than integers. This covers Flags, the Channel flags, RX/TX flags, and the MCS/VHT/HE/EHT/U-SIG known and flag bitmaps. Each flag table is a const registry with its own radiotap.org crawler. Undefined bits still round-trip.
The six other bit-by-bit bitmaps are added: A-MPDU flags, timestamp flags, L-SIG data1, S1G known, HE-MU-other-user per_user_known and VHT coding. Each gets a crawler.
Member names get a name map in each crawler, using Linux's short names, as vendor/tcp/flags.py does.
The "[Currently unspecified but used]" caption stays verbatim.
This settles everything open here, so needs: decision comes off. The branch is being reworked for 2 and 3, then gets a cross-review before its PR opens.
Activity
JarryShaw commentedon Nov 2, 2026
#2607 has merged, so
radiotap.pyis free. Unblocked. A worker is on it. Optional fields are decoded per the radiotap.org specification and cross-checked against Wireshark or the kernel. Unknown and vendor fields stay raw, with byte-exact round trips.docs(pep): correct stale status lines and drop the redundant release …
JarryShaw commentedon Nov 2, 2026
Optional-field decoding is done locally, and a Sonnet review is running.
pcapkit.const.radiotap.FieldType, generated by a crawler of radiotap.org.Needs deciding. The branch implements both recommendations unless you choose otherwise.
IEEE802_11split off the FCS and padding.JarryShaw commentedon Nov 2, 2026
Take (b) on both questions
JarryShaw commentedon Nov 2, 2026
The owner chose (b) on both, paraphrased.
FieldTypefrom radiotap.org's unofficial-fields table. The docstring notes that OpenBSD uses bit 16 differently.The branch is being reworked to match.
3 remaining items
JarryShaw commentedon Nov 2, 2026
JarryShaw commentedon Nov 2, 2026
The owner answered all four, paraphrased:
data1, S1Gknown, HE-MU-other-userper_user_knownand VHTcoding. Each gets a crawler.vendor/tcp/flags.pydoes.This settles everything open here, so
needs: decisioncomes off. The branch is being reworked for 2 and 3, then gets a cross-review before its PR opens.JarryShaw commentedon Nov 2, 2026
The PR is #2657.
feat(link): decode radiotap's optional fields (#2576)
feat(link): decode radiotap's optional fields (#2576)
feat(link): decode radiotap's optional fields (#2576) (#2657)
feat(link): decode radiotap TLV items a producer cut short (#2655)
feat(link): decode radiotap TLV items a producer cut short (#2655) (#…
feat(link): split radiotap's mixed bitmaps into value subfields (#2647)
feat(link): split radiotap's mixed bitmaps into value subfields (#2647)…