From bc4e303846c3bb15dcb3a545a2cee110361ba028 Mon Sep 17 00:00:00 2001 From: Sonia Appasamy Date: Wed, 29 Nov 2023 11:17:00 -0500 Subject: [PATCH] ipn/ipnstate: add AllowedIPs to PeerStatus Adds AllowedIPs to PeerStatus, allowing for easier lookup of the routes allowed to be routed to a node. Will be using the AllowedIPs of the self node from the web client interface to display approval status of advertised routes. Updates #10261 Signed-off-by: Sonia Appasamy --- ipn/ipnlocal/local.go | 4 ++++ ipn/ipnstate/ipnstate.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index a4c8cc414..842e38406 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -900,6 +900,10 @@ func peerStatusFromNode(ps *ipnstate.PeerStatus, n tailcfg.NodeView) { v := n.PrimaryRoutes() ps.PrimaryRoutes = &v } + if n.AllowedIPs().Len() != 0 { + v := n.AllowedIPs() + ps.AllowedIPs = &v + } if n.Expired() { ps.Expired = true diff --git a/ipn/ipnstate/ipnstate.go b/ipn/ipnstate/ipnstate.go index 1a58b0170..4a3c80106 100644 --- a/ipn/ipnstate/ipnstate.go +++ b/ipn/ipnstate/ipnstate.go @@ -216,6 +216,8 @@ type PeerStatus struct { // TailscaleIPs are the IP addresses assigned to the node. TailscaleIPs []netip.Addr + // AllowedIPs are IP addresses allowed to route to this node. + AllowedIPs *views.Slice[netip.Prefix] `json:",omitempty"` // Tags are the list of ACL tags applied to this node. // See tailscale.com/tailcfg#Node.Tags for more information. @@ -414,6 +416,9 @@ func (sb *StatusBuilder) AddPeer(peer key.NodePublic, st *PeerStatus) { if v := st.PrimaryRoutes; v != nil && !v.IsNil() { e.PrimaryRoutes = v } + if v := st.AllowedIPs; v != nil && !v.IsNil() { + e.AllowedIPs = v + } if v := st.Tags; v != nil && !v.IsNil() { e.Tags = v }