Repository navigation
feat(link): split radiotap's mixed bitmaps into value subfields (#2647) - #2696
Conversation
|
NEEDS CHANGES at
Optional: |
- Split the MCS flags, HE data1 and data2, HE-MU flags1 and flags2, and U-SIG common into their value subfields, each an int, and the rest of their bits. - Keep the rest as a member of a known-bits registry, so undefined bits still round-trip: HEData1Known, HEData2Known, HEMUFlags1Known, HEMUFlags2Known and USIGCommonKnown, crawled from radiotap.org, named after Linux's macros. - Add corekit's BitmapField, a word split from its least-significant bit in its byte order, and VALUES to the shared flag crawler for value rows. - make() takes each bitmap as a mapping of range-checked subfields, its known bits a member or an int; new data models for each word. - Tests: layouts against Linux, Wireshark and radiotap.org, both round trips, the crawlers and BitmapField; update the #2576 and #2655 expectations. The link, const, vendor, dumpkit, corekit, foundation, project and root protocols legs pass.
e212650 to
ddf28f9
Compare
|
GOOD TO GO at
The link, const and corekit legs pass. All 7677 differential records rebuild exactly against the new base, and captures are identical. |
|
can actually use |
|
Needs deciding: whether the generated known-bits registries can use
Recommendation: 1. Each line then states its radiotap.org bit, so the file reviews against the spec line by line. A dropped crawler row fails loudly instead of shifting every later bit, and it matches the |
|
okay take 1 |
|
The owner chose 1, paraphrased: the generated known-bits registries keep explicit |
…s, the cut schema lists, the TSO checksum cut and short ZigBee keys into 1.6.0 (#2449) - Breaking: MH (#2700) refuses a mobility option, or a sub-option, QoS attribute or CGA extension of one, whose fields do not take its length, where 1.5.x rebuilt another; QualityOfServiceOption gains a required tc_reserved. Prefix lengths are held to their field's width, the NAI and service identifier makers count octets, and a long-form DER CGA key parses. Folded into the MH/DSS and makers' range-check entries, with a QoS entry of its own; old and new values measured against v1.5.1. - Fixed: ListField zero-fills a cut list of schema items, bounded by ZERO_PAD_BUDGET_RATIO with no free band, and a SACK past the data raises ProtocolError where it raised FieldValueError (#2701); a Decryption Secrets Block made from a short parsed ZigBee key is written as captured, and zigbee_key_held's schema holds the octets given (#2697). - Folded into unreleased entries: radiotap's mixed bitmaps, their known-bits registries and BitmapField (#2696), into the Radiotap entry; the TSO and AH checksum cut (#2699), into the checksum and contextvars entries; the zero-filled SETTINGS and IGMPv3 records and the IGMPv3 Additional Data rebuild (#2701), into the HTTP/2 SETTINGS and IGMP entries, dropping HTTPv2.make's unreleased frame_length. - No entry for the docstring-and-test-only be83061 (#2695). - CHANGELOG.md regenerated; util/changelog_md.py --check passes.
make pylint,make mypy,make isort)make testpasses, and a test case covers the changeWhat is the purpose of your pull request?
feat— adds a featureDescription of your pull request and other information
The owner asked on #2576 for radiotap's mixed bitmaps to be decoded properly, in their final shape for 1.6.0. MCS
flags, HEdata1/data2, HE-MUflags1/flags2and U-SIGcommoneach decode into a typed data model: integer value subfields plus aknownmember.HEData1Known,HEData2Known,HEMUFlags1Known,HEMUFlags2KnownandUSIGCommonKnown. They are crawled through the shared radiotap flag template, which gains aVALUEStuple so value rows stay subfields. Names come from Linuxieee80211_radiotap.h. Undefined bits are kept. MCSflagsneeds no registry, since its known bits areMCSKnown.BitmapFieldinpcapkit.corekit.fields.numbersreads a word into value subfields and a remainder. The layouts are concreteRadiotapFieldschemas, per the ruling on feat(link): decode radiotap's optional fields (#2576) #2657.make(): it takes each bitmap as a mapping and range-checks every subfield with_make_uint.knowntakes a member or an int, and a remainder that sets a subfield's bit raisesProtocolError.Every subfield mask is checked against Linux, Wireshark and radiotap.org. Recomposed, every bitmap is identical to
mainacross #2576's vectors and the fuzz cases, and every record rebuilds exactly.Closes #2647