IPv6 DNS pin rejected on ignore, disabled and link-local profiles #48

Open
opened 2026-10-20 18:18:03 +08:00 by Breadway · 0 comments
Owner

Found during independent review of breadcrumbs PR46, following the pre-existing observation in comment 5672. Confidence: high. Deduplicated against all current CRUMB issue cards; none covers this mode-specific rejection.

At reviewed head 2dff10b59c, src/nm.rs:835-875 preserves an existing IPv6 method but unconditionally writes the nonempty IPv6 DNS list. enforce_dns then sends Update2. With ipv6.method ignore, disabled or link-local, libnm rejects ipv6.dns. This behavior also exists on base 939d9edcfe, so it is separate from CRUMB-32 missing-section repair.

Independent reproduction on Hestia using only in-process libnm 1.46.0, no NMClient, daemon, D-Bus or live networking: construct a valid ethernet connection dictionary with ipv4.method=auto and ipv6.method equal to each of ignore/disabled/link-local, add IPv6 dns 2606:4700:4700::1111 and ignore-auto-dns=true, then NM.SimpleConnection.new_from_dbus/verify. Each rejects with ipv6.dns: this property is not allowed for method=. The same dictionary with method=auto verifies and normalizes. Script and output: /tmp/opencode/crumb46-2dff-evidence/libnm.py and libnm.log.

Effect: a mixed-family pin cannot be persisted, including its IPv4 changes; caller logs DNS application failure. Decide explicit behavior for incompatible modes without silently enabling IPv6. Add mode-aware error/handling and real libnm or faithful fixture regression checks. Not fixed or deployed during review.

Found during independent review of breadcrumbs PR46, following the pre-existing observation in comment 5672. Confidence: high. Deduplicated against all current CRUMB issue cards; none covers this mode-specific rejection. At reviewed head 2dff10b59ceaa61cb391132121080603055c3c46, src/nm.rs:835-875 preserves an existing IPv6 method but unconditionally writes the nonempty IPv6 DNS list. enforce_dns then sends Update2. With ipv6.method ignore, disabled or link-local, libnm rejects ipv6.dns. This behavior also exists on base 939d9edcfe143bdf942829de7db45b4707394764, so it is separate from CRUMB-32 missing-section repair. Independent reproduction on Hestia using only in-process libnm 1.46.0, no NMClient, daemon, D-Bus or live networking: construct a valid ethernet connection dictionary with ipv4.method=auto and ipv6.method equal to each of ignore/disabled/link-local, add IPv6 dns 2606:4700:4700::1111 and ignore-auto-dns=true, then NM.SimpleConnection.new_from_dbus/verify. Each rejects with ipv6.dns: this property is not allowed for method=<mode>. The same dictionary with method=auto verifies and normalizes. Script and output: /tmp/opencode/crumb46-2dff-evidence/libnm.py and libnm.log. Effect: a mixed-family pin cannot be persisted, including its IPv4 changes; caller logs DNS application failure. Decide explicit behavior for incompatible modes without silently enabling IPv6. Add mode-aware error/handling and real libnm or faithful fixture regression checks. Not fixed or deployed during review. <!-- breadboard-import:CRUMB-48 -->
Sign in to join this conversation.
No labels
bug
ci
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/breadcrumbs#48
No description provided.