Repository navigation
feat(transport): dissect DCCP, with its checksum over the IP pseudo-header - #2593
Conversation
|
GOOD TO GO at
|
|
Question for the owner:
|
|
Would prefer 1. But if that is so, we need to rework all other make paths to follow this convention. |
|
Owner chose 1, paraphrased: |
|
The red "Python pypy3.11" leg is a lost runner, not a test failure. The log ends at 9 m 23 s with "The runner has received a shutdown signal", in the middle of the |
|
Coverage: 94.06% (unit tier, Python 3.15,
Per-file detail: the |
…#2489) - DCCP dissects the RFC 4340 generic header with short and long sequence numbers, the fields of every packet type, DCCP-Listen (RFC 5596) and the options, and rebuilds each packet byte for byte; an option length under 2 is refused, and an over-long NDP Count keeps its width. - The enclosing IP layer verifies its checksum under CHECKSUM_VERIFY and computes it under CHECKSUM_COMPUTE, over the part CsCov gives; a CsCov reaching the end is written as 0 when computed, as Linux did. - IP protocol 33 dispatches to it; register_dccp and register_dccp_option write its port and option maps. - The IANA DCCP registries get crawlers and generated const modules. - Docs pages, the dispatch and option round-trip generators and the guard tables follow; the NotImplemented stub goes.
0bfbe21 to
30e3b29
Compare
|
Rebased onto
|
…1.6.0 (#2449) - Added: DCCP, its checksum over the IP pseudo-header, register_dccp and register_dccp_option, and the pcapkit.const.dccp registries (#2593). - Folded into unreleased entries: LinuxSLL's stop on its ARPHRD path (#2587) and ARPHRD's __proto_dest__ (#2598), SSLv2 records chained in a segment (#2585), the checksum's move to pcapkit.corekit.checksum.internet (#2586), and IGMPv2's and IGMPv3's versioned name (#2590). - Breaking: InARP moves to pcapkit.protocols.link.inarp with no re-export, joining the DRARP entry (#2596). - Changed: the conventions' new rulings (#2599), the milestone workflow's next-open-milestone lookup (#2591), the PyPy protocols shards (#2604). Fixed: a handled next-layer refusal is quiet under beholder (#2597); the IPX crawlers restore sys.path (#2601). - CHANGELOG.md regenerated; util/changelog_md.py --check passes.
…graph (#2564) - ARPHRD values on LinuxSLL each have a dissector (#2460, #2502, #2510); radiotap hands 802.11 to IEEE802_11 (#2575), its own fields stay #2576. - Release Plan: drop the Mermaid chain that workflows.rst already draws. - Wave 2 done, ruled on #2564; the "wave 2 or 3" items become wave 3. - Deterministic Construction Arguments: scoped for 1.6.0, ruled in review of #2593 (#2489) and on #2594. - The SSL family's listings gain SSLv2 (#2457, #2567). - Reassembly covers DTLS handshakes; dpkt, scapy and pypcapfile disable it. - Binding lists gain LINUX_SLL/SLL2, TLS 443 and DTLS 5684; the checksum list gains GRE and IGMP (#2618). Consistency sweep marked done; timed words dropped. Docs tests under tests/project pass, one module per process.
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
DCCP (RFC 4340, plus DCCP-Listen from RFC 5596) gets a full dissector in
pcapkit.protocols.transport.dccp, replacing the NotImplemented stub. IP protocol 33 dispatches to it.Raw.ChecksumStatus, and the coverage is CsCov's (§9.2).make()writes CsCov 0 when the coverage reaches the end of the packet, as Linux'sdccp_csum_outgoingdid.DCCP.register_optionplus theregister_dccpandregister_dccp_optionwrappers. There are six IANA registries, as crawlers plus generated const modules that regenerate byte-identically.Settled on the worker's recommendations, open to the owner:
ChecksumWarning.Follow-ups:
register_apptypefan-out to DCCP's port map.Closes #2489