Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
e5c9d5b
fix(net): enforce RFC 4884 original-datagram length
daniel-noland Aug 19, 2026
b90afa4
build(duvet): track RFC 4884 compliance offline
daniel-noland Aug 19, 2026
478bbc0
build(duvet): expose RFC 5382 compliance gaps
daniel-noland Aug 19, 2026
0ae761f
build(duvet): expose RFC 4787 compliance gaps
daniel-noland Aug 19, 2026
089391c
test(masquerade): verify RFC 4787 paired address pooling
daniel-noland Aug 19, 2026
604befa
test(masquerade): check RFC 4787 outbound refresh
daniel-noland Aug 19, 2026
92f0c5a
test(masquerade): classify RFC 4787 filtering behavior
daniel-noland Aug 19, 2026
7fa3f1c
test(masquerade): share the RFC 4787 REQ-12 contract
daniel-noland Aug 19, 2026
0ff28df
test(masquerade): fail builds on stale RFC contract IDs
daniel-noland Aug 19, 2026
b4c8ef7
docs(forwarding): document missing RFC 4787 ICMP behavior
daniel-noland Aug 20, 2026
fe4b91f
fix(duvet): refresh the compliance snapshot
daniel-noland Aug 20, 2026
848de60
test(net): cover RFC 4884 minimum boundaries
daniel-noland Aug 21, 2026
e41c9fb
test(nat): move port-overloading citations to enforceable code
daniel-noland Aug 21, 2026
8c998a1
test(nat): cite allocator exhaustion coverage
daniel-noland Aug 21, 2026
498bdc5
ci(dev): enforce and report Duvet compliance
daniel-noland Aug 27, 2026
6ab4b7e
fix(net): read ICMP extension length from the ICMP header
daniel-noland Aug 27, 2026
76bac13
fix(net): exclude ICMPv6 Parameter Problem from extensions
daniel-noland Aug 27, 2026
83f00d9
test(routing): reduce large-response setup cost
daniel-noland Aug 27, 2026
e416a55
fix(nat): refresh unanswered UDP and ICMP mappings
daniel-noland Aug 27, 2026
a2b8de8
fix(net): measure quoted datagrams from their start
daniel-noland Aug 27, 2026
260d489
fix(nat): reject unrepresentable port-forwarding rulesets
daniel-noland Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .duvet/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
reports/
34 changes: 34 additions & 0 deletions .duvet/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'$schema' = "https://awslabs.github.io/duvet/config/v0.4.0.json"

# Citations live next to the code they annotate, so every crate's `src` tree is a source.
# Both patterns are needed: `**` does not match zero path components here, so the first
# finds `<crate>/src/<dir>/<file>.rs` and the second finds `<crate>/src/lib.rs`. Getting
# this wrong is silent in the dangerous direction -- an unmatched file simply contributes
# no citations, the snapshot does not change, and `duvet-check` passes.
[[source]]
pattern = "*/src/**/*.rs"

[[source]]
pattern = "*/src/*.rs"

# Every RFC tracked here restates its numbered requirements in a summary section (RFC 4787
# section 12, RFC 5382 section 8, RFC 5508 section 9). duvet keys citations by section
# anchor and cannot be told that two sections carry the same requirement, so each of those
# copies reads as uncovered no matter what is annotated. The convention, settled in the
# RFC 5508 chapter, is to cite the *normative* section -- where the requirement is argued
# rather than tabulated -- and to read the summary sections as permanently uncited.

[[specification]]
source = "https://www.rfc-editor.org/rfc/rfc4884"

[[specification]]
source = "https://www.rfc-editor.org/rfc/rfc5382"

[report.html]
enabled = true

[report.snapshot]
enabled = true

[[specification]]
source = "https://www.rfc-editor.org/rfc/rfc4787"

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading