Conversation
Separate Ethernet ARP reply authorization from AnyIP admission. Container veth interfaces must not answer requests for the bridge gateway or other namespaces, while namespace-local weak-host replies remain valid across interfaces. Use the prepared namespace FIB view in both direct and NAPI ingress; retain the existing routed-poll and output-backend decisions. Reject loopback and nonzero 0/8 senders, preserve authorized zero-source DAD, and leave neighbor-learning policy to the protocol stack. Pin smoltcp PR DragonOS-Community#39 at a55fa7ea7a2734c7337731a9fcc11689a2a1a79b. Add eight packet-level dunitest cases for foreign targets, weak-host replies, DAD, invalid addresses, removal, gratuitous requests, and namespace moves. Validation: make fmt and make kernel; Linux and guest ARP 8/8; guest Netfilter 107/107, bridge/veth 9/9, MTU 3/3, conntrack 9/9; two Docker cold boots, repeated published-port requests and container/IP recreation; three-role adversarial review. Raw HTTP repetition remains an independent pre-existing sendfile investigation. Signed-off-by: longjin <longjin@dragonos.org>
Member
Author
|
@codex review |
Update smoltcp to the merged Community dragonos/v0.12.0 commit a2c9cc0da88f41baab5ecc603c33af68384d4cea from PR DragonOS-Community#39. The merged commit has the same Git tree as the previously validated PR revision. Preserve all other locked dependencies and features. Validation: kernel build, formatting check, diff check, and independent revision-only review. Signed-off-by: longjin <longjin@dragonos.org>
Member
Author
|
@codex review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
a2c9cc0da88f41baab5ecc603c33af68384d4ceaand add eight packet-level dunitest regressions.Root cause
AnyIP veth interfaces answered ARP requests for the bridge gateway with a container MAC. Packet capture showed competing gateway replies and subsequent published-port response packets forwarded to the wrong container. The bridge forwarded the incorrect destination MAC correctly; resetting caches or disabling AnyIP would not fix address ownership.
The optional dependency hook separates response permission from neighbor learning. DragonOS reuses its pre-acquired namespace route view, with no new per-packet lock, device scan, or ownership cache.
Validation
make fmt,make kernel, diff checks, and three-role adversarial review passed. The reviewed martian-source boundary was fixed and covered by a Linux/guest test.Scope and remaining boundary
This fixes namespace ARP reply ownership, not every optional proxy-ARP/NUD policy. An independent pre-existing HTTP body repetition issue remains: raw TCP reads exceed Content-Length, while curl stops at the declared length. The suspected sendfile offset-update defect needs a separate syscall-level fix; HTTP 200 here validates timeout recovery, not full raw-stream correctness.
Dependency merge update
smoltcp #39 has merged into
dragonos/v0.12.0. The pin now uses its merged commit. Its Git tree is identical to the previously validated dependency commit; no protocol behavior or other dependency version changes in this update.