mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-11 11:40:47 +08:00
Merge branch 'develop' of https://github.com/gravitl/netmaker into NET-390-scale-latest
This commit is contained in:
@@ -131,6 +131,61 @@ func GetPeerUpdateForHost(ctx context.Context, network string, host *models.Host
|
||||
if !node.Connected || node.PendingDelete || node.Action == models.NODE_DELETE {
|
||||
continue
|
||||
}
|
||||
if host.OS == models.OS_Types.IoT {
|
||||
hostPeerUpdate.NodeAddrs = append(hostPeerUpdate.NodeAddrs, node.PrimaryAddressIPNet())
|
||||
if node.IsRelayed {
|
||||
relayNode, err := GetNodeByID(node.RelayedBy)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
relayHost, err := GetHost(relayNode.HostID.String())
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
relayPeer := wgtypes.PeerConfig{
|
||||
PublicKey: relayHost.PublicKey,
|
||||
PersistentKeepaliveInterval: &relayNode.PersistentKeepalive,
|
||||
ReplaceAllowedIPs: true,
|
||||
AllowedIPs: GetAllowedIPs(&node, &relayNode, nil),
|
||||
}
|
||||
uselocal := false
|
||||
if host.EndpointIP.String() == relayHost.EndpointIP.String() {
|
||||
// peer is on same network
|
||||
// set to localaddress
|
||||
uselocal = true
|
||||
if node.LocalAddress.IP == nil {
|
||||
// use public endpint
|
||||
uselocal = false
|
||||
}
|
||||
if node.LocalAddress.String() == relayNode.LocalAddress.String() {
|
||||
uselocal = false
|
||||
}
|
||||
}
|
||||
relayPeer.Endpoint = &net.UDPAddr{
|
||||
IP: relayHost.EndpointIP,
|
||||
Port: getPeerWgListenPort(relayHost),
|
||||
}
|
||||
|
||||
if uselocal {
|
||||
relayPeer.Endpoint.IP = relayNode.LocalAddress.IP
|
||||
relayPeer.Endpoint.Port = relayHost.ListenPort
|
||||
}
|
||||
|
||||
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, relayPeer)
|
||||
} else if deletedNode != nil && deletedNode.IsRelay {
|
||||
relayHost, err := GetHost(deletedNode.HostID.String())
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
relayPeer := wgtypes.PeerConfig{
|
||||
PublicKey: relayHost.PublicKey,
|
||||
Remove: true,
|
||||
}
|
||||
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, relayPeer)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
currentPeers := GetNetworkNodesMemory(allNodes, node.Network)
|
||||
var nodePeerMap map[string]models.PeerRouteInfo
|
||||
if node.IsIngressGateway || node.IsEgressGateway {
|
||||
|
Reference in New Issue
Block a user