|
@@ -575,12 +575,22 @@ func IsPeerAllowed(node, peer models.Node, checkDefaultPolicy bool) bool {
|
|
|
if peer.IsStatic {
|
|
|
peer = peer.StaticNode.ConvertToStaticNode()
|
|
|
}
|
|
|
- node.Mutex.Lock()
|
|
|
- nodeTags := maps.Clone(node.Tags)
|
|
|
- node.Mutex.Unlock()
|
|
|
- peer.Mutex.Lock()
|
|
|
- peerTags := maps.Clone(peer.Tags)
|
|
|
- peer.Mutex.Unlock()
|
|
|
+ var nodeTags, peerTags map[models.TagID]struct{}
|
|
|
+ if node.Mutex != nil {
|
|
|
+ node.Mutex.Lock()
|
|
|
+ nodeTags = maps.Clone(node.Tags)
|
|
|
+ node.Mutex.Unlock()
|
|
|
+ } else {
|
|
|
+ nodeTags = node.Tags
|
|
|
+ }
|
|
|
+ if peer.Mutex != nil {
|
|
|
+ peer.Mutex.Lock()
|
|
|
+ peerTags = maps.Clone(peer.Tags)
|
|
|
+ peer.Mutex.Unlock()
|
|
|
+ } else {
|
|
|
+ peerTags = peer.Tags
|
|
|
+ }
|
|
|
+
|
|
|
if checkDefaultPolicy {
|
|
|
// check default policy if all allowed return true
|
|
|
defaultPolicy, err := GetDefaultPolicy(models.NetworkID(node.Network), models.DevicePolicy)
|
|
@@ -662,12 +672,21 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|
|
if peer.IsStatic {
|
|
|
peer = peer.StaticNode.ConvertToStaticNode()
|
|
|
}
|
|
|
- node.Mutex.Lock()
|
|
|
- nodeTags := maps.Clone(node.Tags)
|
|
|
- node.Mutex.Unlock()
|
|
|
- peer.Mutex.Lock()
|
|
|
- peerTags := maps.Clone(peer.Tags)
|
|
|
- peer.Mutex.Unlock()
|
|
|
+ var nodeTags, peerTags map[models.TagID]struct{}
|
|
|
+ if node.Mutex != nil {
|
|
|
+ node.Mutex.Lock()
|
|
|
+ nodeTags = maps.Clone(node.Tags)
|
|
|
+ node.Mutex.Unlock()
|
|
|
+ } else {
|
|
|
+ nodeTags = node.Tags
|
|
|
+ }
|
|
|
+ if peer.Mutex != nil {
|
|
|
+ peer.Mutex.Lock()
|
|
|
+ peerTags = maps.Clone(peer.Tags)
|
|
|
+ peer.Mutex.Unlock()
|
|
|
+ } else {
|
|
|
+ peerTags = peer.Tags
|
|
|
+ }
|
|
|
if checkDefaultPolicy {
|
|
|
// check default policy if all allowed return true
|
|
|
defaultPolicy, err := GetDefaultPolicy(models.NetworkID(node.Network), models.DevicePolicy)
|