Skip to content

feat(link): bind LinkType 105 and 127 to the 802.11 and radiotap dissectors in Frame and PCAP-NG #2608

Closed

Description

@JarryShaw

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).

Activity

  1. added
    featPull requests that add a new capability (feat: subject prefix)
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Nov 1, 2026
  2. moved this to Blocked in PyPCAPKiton Nov 1, 2026
  3. added this to the PyPCAPKit v1.6 milestone on Nov 2, 2026
  4. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    #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.

  5. added
    wipWork in flight - a covering PR is open or an agent is actively on it
    and removed
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Nov 2, 2026
  6. moved this from Blocked to WIP in PyPCAPKiton Nov 2, 2026
  7. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    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.

    1. Keep 803. Loopback does the same: it returns NULL although LOOP also reaches it.
    2. Switch to LinkType.IEEE802_11_RADIOTAP (127). This would be done in feat(link): decode radiotap's optional fields #2576, which owns radiotap.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.

  8. added
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Nov 2, 2026
  9. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    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.

  10. removed
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Nov 2, 2026
  11. removed
    wipWork in flight - a covering PR is open or an agent is actively on it
    on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featPull requests that add a new capability (feat: subject prefix)

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions