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
{{ message }}
Repository navigation
feat(link): bind LinkType 105 and 127 to the 802.11 and radiotap dissectors in Frame and PCAP-NG #2608
Once #2575 lands (#2607), the 802.11 dissector is reachable only through LinuxSLL's ARPHRD_IEEE80211_RADIOTAP entry or by direct construction. A native 802.11 capture stays Raw in both Frame and PCAP-NG, because neither binds LinkType.IEEE802_11 (105) or LinkType.IEEE802_11_RADIOTAP (127).
Fix: bind 105 to IEEE802_11 and 127 to Radiotap in the link-type registries Frame and PCAP-NG dispatch through (register_linktype), and add PINNED_TARGETS entries.
IEEE802_11.__index__, which raises today, could then return 105.
Tests: a pcap and a pcapng capture of each link type parse to 802.11 and Radiotap:802.11, with byte-exact round trips.
Blocked: this builds on #2607's dissector and radiotap registry, so it unblocks when #2607 merges (gh pr view 2607 --json state -q .state prints MERGED).
#2607 has merged. Unblocked. A worker is binding LinkType 105 to IEEE802_11 and 127 to Radiotap in Frame and PCAP-NG, with pcap and pcapng tests for each.
The bindings are done locally and a Sonnet review is running. Frame and PCAP-NG send LinkType 105 to IEEE802_11 and LinkType 127 to Radiotap. Native 802.11 and radiotap captures parse in both formats and rebuild byte-exactly, and IEEE802_11.__index__ returns 105.
Needs deciding: what should Radiotap.__index__ return? It returns ARPHRD.IEEE80211_RADIOTAP (803), the key LinuxSLL dispatches by. Frame and PCAP-NG now also reach it by LinkType 127.
Keep 803. Loopback does the same: it returns NULL although LOOP also reaches it.
Recommendation: 1. It keeps the LinuxSLL lookup and the existing pin unchanged, and it follows Loopback's precedent. The branch keeps 803 unless you choose otherwise.
Owner ruling, paraphrased: a protocol's __index__ returns its LinkType, EtherType, TransType or AppType value wherever one exists. That answers the question here with option 2: Radiotap.__index__ becomes LinkType.IEEE802_11_RADIOTAP (127). This PR's IEEE802_11.__index__ → LinkType.IEEE802_11 (105) already follows the rule.
The switch is not made here. It is part of #2627, which applies the rule across every protocol and writes it onto the registry convention page. Any registration that keyed LinuxSLL's ARPHRD map by __index__ names the ARPHRD key explicitly there.
Activity
JarryShaw commentedon Nov 2, 2026
#2607 has merged. Unblocked. A worker is binding LinkType 105 to
IEEE802_11and 127 toRadiotapin Frame and PCAP-NG, with pcap and pcapng tests for each.JarryShaw commentedon Nov 2, 2026
The bindings are done locally and a Sonnet review is running. Frame and PCAP-NG send LinkType 105 to
IEEE802_11and LinkType 127 toRadiotap. Native 802.11 and radiotap captures parse in both formats and rebuild byte-exactly, andIEEE802_11.__index__returns 105.Needs deciding: what should
Radiotap.__index__return? It returnsARPHRD.IEEE80211_RADIOTAP(803), the key LinuxSLL dispatches by. Frame and PCAP-NG now also reach it by LinkType 127.LinkType.IEEE802_11_RADIOTAP(127). This would be done in feat(link): decode radiotap's optional fields #2576, which ownsradiotap.py.Recommendation: 1. It keeps the LinuxSLL lookup and the existing pin unchanged, and it follows Loopback's precedent. The branch keeps 803 unless you choose otherwise.
JarryShaw commentedon Nov 2, 2026
Owner ruling, paraphrased: a protocol's
__index__returns its LinkType, EtherType, TransType or AppType value wherever one exists. That answers the question here with option 2:Radiotap.__index__becomesLinkType.IEEE802_11_RADIOTAP(127). This PR'sIEEE802_11.__index__→LinkType.IEEE802_11(105) already follows the rule.The switch is not made here. It is part of #2627, which applies the rule across every protocol and writes it onto the registry convention page. Any registration that keyed LinuxSLL's ARPHRD map by
__index__names the ARPHRD key explicitly there.feat(link): bind LinkType 105 and 127 to the 802.11 and radiotap diss…