mirror of
https://github.com/juanfont/headscale.git
synced 2025-11-10 01:20:58 +01:00
policy/v2: simplify, use slices.Contains
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
7aed2e8468
commit
b5bb3bfc9d
@ -7,6 +7,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"slices"
|
||||||
|
|
||||||
"github.com/juanfont/headscale/hscontrol/types"
|
"github.com/juanfont/headscale/hscontrol/types"
|
||||||
"go4.org/netipx"
|
"go4.org/netipx"
|
||||||
"tailscale.com/net/tsaddr"
|
"tailscale.com/net/tsaddr"
|
||||||
@ -174,12 +176,10 @@ func (pm *PolicyManager) NodeCanHaveTag(node *types.Node, tag string) bool {
|
|||||||
defer pm.mu.Unlock()
|
defer pm.mu.Unlock()
|
||||||
|
|
||||||
if ips, ok := pm.tagOwnerMap[Tag(tag)]; ok {
|
if ips, ok := pm.tagOwnerMap[Tag(tag)]; ok {
|
||||||
for _, nodeAddr := range node.IPs() {
|
if slices.ContainsFunc(node.IPs(), ips.Contains) {
|
||||||
if ips.Contains(nodeAddr) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -196,12 +196,10 @@ func (pm *PolicyManager) NodeCanApproveRoute(node *types.Node, route netip.Prefi
|
|||||||
// where there is an exact entry, e.g. 10.0.0.0/8, then
|
// where there is an exact entry, e.g. 10.0.0.0/8, then
|
||||||
// check and return quickly
|
// check and return quickly
|
||||||
if _, ok := pm.autoApproveMap[route]; ok {
|
if _, ok := pm.autoApproveMap[route]; ok {
|
||||||
for _, nodeAddr := range node.IPs() {
|
if slices.ContainsFunc(node.IPs(), pm.autoApproveMap[route].Contains) {
|
||||||
if pm.autoApproveMap[route].Contains(nodeAddr) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// The slow path is that the node tries to approve
|
// The slow path is that the node tries to approve
|
||||||
// 10.0.10.0/24, which is a part of 10.0.0.0/8, then we
|
// 10.0.10.0/24, which is a part of 10.0.0.0/8, then we
|
||||||
@ -220,13 +218,11 @@ func (pm *PolicyManager) NodeCanApproveRoute(node *types.Node, route netip.Prefi
|
|||||||
// Check if prefix is larger (so containing) and then overlaps
|
// Check if prefix is larger (so containing) and then overlaps
|
||||||
// the route to see if the node can approve a subset of an autoapprover
|
// the route to see if the node can approve a subset of an autoapprover
|
||||||
if prefix.Bits() <= route.Bits() && prefix.Overlaps(route) {
|
if prefix.Bits() <= route.Bits() && prefix.Overlaps(route) {
|
||||||
for _, nodeAddr := range node.IPs() {
|
if slices.ContainsFunc(node.IPs(), approveAddrs.Contains) {
|
||||||
if approveAddrs.Contains(nodeAddr) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user