app: name the two half-configured IPv6 shapes, per network
v6.no_icmp_reply infers trouble from silence, which is ambiguous by construction: a firewall dropping echo requests looks the same as a network that cannot carry IPv6 at all. Two much stronger signals were already sitting unread in the link snapshot, and a test device on a Netbird tunnel surfaced both at once. v6.route_without_address — a ::/0 route with no global address. The router advertises itself as an IPv6 gateway while SLAAC produces nothing usable. Hosts believe IPv6 is available and pay a connection timeout on every dual-stack destination before falling back, which is felt as general slowness with no packet loss to explain it. v6.no_default_route — the mirror: a global address with nothing to route it. A VPN installing host routes to specific destinations produces this deliberately and it works, so a VPN transport reports it as INFO rather than as a fault; without one it means the network handed out an address it does not carry traffic for. Both are read from the routing table, so neither is inferred from silence, and both are reported per interface — "IPv6 is broken" is useless advice when wifi is the broken one and cellular is fine. Classification lives in core-measurement rather than the ViewModel so it can be tested without a device; the fixtures are a real dumpsys table (wifi advertising a route it cannot source from, working cellular, a tunnel with two host routes) because the risk here is not bad boolean logic but imagining shapes real networks do not produce. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
fec374abf5
commit
7eaf0c4190
@@ -89,6 +89,8 @@ rolled up under *connectivity* instead — the third occurrence of rule 1 being
|
||||
|
||||
| code | severity | means | rules out |
|
||||
|---|---|---|---|
|
||||
| `v6.no_default_route` | medium | The device has a global IPv6 address but no IPv6 default route. | Guesswork: this is read from the routing table, not inferred from silence. |
|
||||
| `v6.route_without_address` | medium | The network advertises an IPv6 default route but the device has no global IPv6 address. | A working IPv6 setup: SLAAC did not produce a usable address on this link. |
|
||||
| `v6.no_icmp_reply` | low | IPv6 is configured but ICMPv6 echo gets no reply. | Nothing on its own: IPv6 may work fine with ICMP filtered. |
|
||||
| `v6.not_offered` | info | This network does not offer IPv6. | — |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user