Просмотр исходного кода

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 <[email protected]>
Sonia Appasamy 2 лет назад
Родитель
Сommit
bc4e303846
2 измененных файлов с 9 добавлено и 0 удалено
  1. 4 0
      ipn/ipnlocal/local.go
  2. 5 0
      ipn/ipnstate/ipnstate.go

+ 4 - 0
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

+ 5 - 0
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
 	}