Repository navigation
fix(engines): dpkt float timestamps, Simple Packet Blocks and raw-IP tracing (#1501, #1520, #1548) - #1550
Conversation
dc52be3 to
46a9e1e
Compare
|
Verdict: GOOD TO GO at
Not blocking:
|
|
Coverage: 89.66% (unit tier, Python 3.14,
Per-file detail: the |
|
resolve conflicts |
|
On it. #1531 merged, so the worker is rebasing onto |
46a9e1e to
f0e0802
Compare
|
Verdict: GOOD TO GO at
|
|
resolve conflicts |
…tracing (#1501, #1520, #1548) - The dpkt reassembly and flow-tracing adapters passed the reader's timestamp straight through, so a nanosecond PCAP gave reassembly and the flow tracer a Decimal where every other engine gives a float, and flow labels were spelled with nine places. They now hand on float(timestamp), as the default and scapy toolkits do; the PCAP frame record is still built from the exact timestamp attached to the frame, so traces stay byte-exact. - PCAPNGReader skipped Simple Packet Blocks, dropping their packets and renumbering every later frame. It now parses an SPB with pcapkit's own PCAPNG against interface 0, dates it at the epoch as the default engine does, and keeps the block's original length. The engine docs no longer say that dpkt drops them. - On a raw-IP link type (228, 229) dpkt reads a frame as a bare IP or IP6, which names no ip or ip6 layer, so all four adapters returned None and nothing was reassembled or traced. They now take such a packet as its own network layer. - Deletes the Gap(1501) and Gap(1520) rows from the engine-agreement table, and the labels=False workaround from the nanosecond PCAP trace test.
|
On it. #1535 merged as |
f0e0802 to
b4702f1
Compare
|
Verdict: GOOD TO GO at
|
Please follow the guide below
You will be asked some questions, please read them carefully and answer honestly
Put an
xinto all the boxes [ ] relevant to your pull request (like that [x])Use Preview tab to see how your pull request will actually look like
Searched for similar pull requests
Followed the coding style (
make pylint,make mypy,make isort)make testpasses, and a test case covers the changeAdded a changelog entry under
docs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible — N/A — centralised in docs(changelog): shared 1.5.0 changelog — long-lived, merges last (#610, #616, #617, #618, #620) #657What is the purpose of your pull request?
Tick the commit type your subject line carries.
fix— corrects a defectfeat— adds a featureperf— changes performance, not behaviourrefactor— changes neither behaviour nor performancetest— tests onlydocs— documentation onlyci— workflows or build toolingrelease— bumps the version or rolls up a distributionchore— anything elseDescription of your pull request and other information
Three dpkt-engine defects, one commit.
pcapkit/toolkit/dpkt.py) passed the reader's timestamp through unchanged, so a nanosecond PCAP handed them aDecimal. They now hand onfloat(timestamp), which is whatpcapkit/toolkit/pcap.pyand the scapy toolkit do. The PCAP frame record is still built from the exact timestamp attached to the frame, so nanosecond traces stay byte-exact and their labels now match the default engine's.PCAPNGReadernow yields Simple Packet Blocks. Each one is parsed with pcapkit'sPCAPNGagainst interface 0, with data lengthmin(original_len, snaplen). Like the default engine, it dates the block at the epoch, and it keeps the block's original length. The stale.. important::block indocs/source/pcapkit/foundation/engines/3rdparty.rstthat said dpkt drops these blocks is replaced by one sentence describing this.IP/IP6, and a bare packet has no.ip/.ip6attribute. All four adapters now treat such a packet as its own network layer. Stripping Ethernet fromtcp.pcap(228) andhttp6.cap(229) now gives PCAP traces byte-identical to the default engine's.Deletes
Gap(1501)andGap(1520)from the engine-agreement table. Every new test fails onmain.Closes #1501
Closes #1520
Closes #1548