types/node, mapper: strip own IPv4 from emission when node has disable-ipv4 cap
When a node carries the disable-ipv4 nodeAttr documented at https://tailscale.com/docs/reference/troubleshooting/network-configuration/cgnat-conflicts, SaaS stops sending the node's CGNAT IPv4 prefix in MapResponse. The allocator keeps assigning IPv4 server-side; only the wire-shape delivery is filtered. Subnet routes the node advertises -- including IPv4 prefixes -- survive in AllowedIPs and PrimaryRoutes. TailNode now drops Is4 prefixes from Addresses and from the node's own /32 slot in AllowedIPs when selfPolicyCaps carries disable-ipv4. Mapper.buildTailPeers passes each peer's policy CapMap so the filter applies in viewer netmaps too; the CapMap merge that follows is overwritten by PeerCapMap so only the address filter survives on the peer path. Two captures land in testdata/nodeattrs_results to anchor the behaviour: - nodeattrs-attr-c15-disable-ipv4 (on tag:client) - nodeattrs-attr-c16-disable-ipv4-router (on tag:router, which advertises 10.33.0.0/16, confirming subnet routes survive)
This commit is contained in:
parent
64d13f77e8
commit
5d502bfb88
5 changed files with 19639 additions and 3 deletions
9725
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c15-disable-ipv4.hujson
vendored
Normal file
9725
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c15-disable-ipv4.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
9766
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c16-disable-ipv4-router.hujson
vendored
Normal file
9766
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c16-disable-ipv4-router.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue