mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-10 23:24:32 +08:00
* revert relays * initial relay commit * get relayed allowed ips * add more relay validation checks, peer logic cleanup * rm relayed nodes from relay node when relayed node is deleted * fix egress updates for relayed nodes * rm unused func * remove debug logs * avoid adding egress ranges on the relayed gw node --------- Co-authored-by: Matthew R Kasun <mkasun@nusak.ca>
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package logic
|
|
|
|
import (
|
|
"github.com/gravitl/netmaker/models"
|
|
)
|
|
|
|
// IfaceDelta - checks if the new node causes an interface change
|
|
func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
|
// single comparison statements
|
|
if newNode.Address.String() != currentNode.Address.String() ||
|
|
newNode.Address6.String() != currentNode.Address6.String() ||
|
|
newNode.IsEgressGateway != currentNode.IsEgressGateway ||
|
|
newNode.IsIngressGateway != currentNode.IsIngressGateway ||
|
|
newNode.IsRelay != currentNode.IsRelay ||
|
|
newNode.PersistentKeepalive != currentNode.PersistentKeepalive ||
|
|
newNode.DNSOn != currentNode.DNSOn ||
|
|
newNode.Connected != currentNode.Connected {
|
|
return true
|
|
}
|
|
// multi-comparison statements
|
|
if newNode.IsEgressGateway {
|
|
if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) {
|
|
return true
|
|
}
|
|
for _, address := range newNode.EgressGatewayRanges {
|
|
if !StringSliceContains(currentNode.EgressGatewayRanges, address) {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
if newNode.IsRelay {
|
|
if len(currentNode.RelayedNodes) != len(newNode.RelayedNodes) {
|
|
return true
|
|
}
|
|
for _, node := range newNode.RelayedNodes {
|
|
if !StringSliceContains(currentNode.RelayedNodes, node) {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// == Private Functions ==
|