ip6_getmoptions(): IPV6_MULTICAST_LOOP default echoes the hop-limit default instead of the loop default
Summary
The IPV6_MULTICAST_LOOP GET branch returns *loop = ip6_defmcasthlim when no options are attached, instead of IPV6_DEFAULT_MULTICAST_LOOP (copy-paste from the HOPS branch). The two sysctl-tunable defaults diverge whenever net.inet6.ip6.defmcasthlim != 1, making getsockopt(IPV6_MULTICAST_LOOP) report a loop setting the socket does not have. API correctness only (values coincide under default sysctls); trivial repro (sysctl defmcasthlim=5 then getsockopt returns 5). Fix: one-constant substitution. [VERIFIED pass2: reproduced - defmcasthlim 5 makes IPV6_MULTICAST_LOOP return 5 via copy-paste; F40FIX returns 1]
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-3309 Β· 6 files| File | Type | Description | Size | |
|---|---|---|---|---|
| README.md | β | 221 B | β raw | |
| df3309.c | β | 702 B | view raw | |
| fix.diff | β | 375 B | view raw | |
| manifest.json | β | 379 B | view raw | |
| run.log | β | 496 B | view raw | |
| verdict.json | β | 1.4 KB | view raw |
DF-3309 evidence pack
What
IPV6_MULTICAST_LOOP GET echoes the hop-limit default
Verdict
status=reproduced impact=none confidence=certain
See VERDICT.md for the full narrative and fix.diff for the verified fix.
Fix verification
fixedA/B complete: with defmcasthlim=5 the fixed kernel returns IPV6_MULTICAST_LOOP=1 (stock returned 5).
Confirmed kernel references
Detail
Evidence (decisive lines)
VERDICT.md with path:line citations; run.log where a live demo exists; fix.diff
PoC changes
n/a - first probe already correct
Verified recommended fix
return IPV6_DEFAULT_MULTICAST_LOOP instead of ip6_defmcasthlim
Verdict
Reproduced on the stock INVARIANTS guest: after sysctl -w net.inet6.ip6.defmcasthlim=5, getsockopt(IPV6_MULTICAST_LOOP) on a fresh socket (no multicast options attached) returns 5; with the default sysctl it returns 1. The GET branch copies ip6_defmcasthlim instead of IPV6_DEFAULT_MULTICAST_LOOP (ip6_output.c:2511-2515) - copy-paste from the HOPS branch two cases above. API correctness only. Post-fix A/B on the F40FIX kernel: with defmcasthlim=5 the same getsockopt returns 1.
No comments yet.