From 0180481ddbd96860b35486b3bd2e0c07fb2d1978 Mon Sep 17 00:00:00 2001 From: Max Ma Date: Mon, 3 Jun 2024 19:41:13 +0200 Subject: [PATCH] fix egressing exclient set route issue --- logic/extpeers.go | 27 +++++++++++---------------- logic/peers.go | 2 +- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/logic/extpeers.go b/logic/extpeers.go index 0ea68980..f874f1a8 100644 --- a/logic/extpeers.go +++ b/logic/extpeers.go @@ -431,7 +431,7 @@ func GetExtPeers(node, peer *models.Node) ([]wgtypes.PeerConfig, []models.IDandA allowedips = append(allowedips, *cidr) } } - egressRoutes = append(egressRoutes, getExtPeerEgressRoute(extPeer)...) + egressRoutes = append(egressRoutes, getExtPeerEgressRoute(*node, extPeer)...) primaryAddr := extPeer.Address if primaryAddr == "" { primaryAddr = extPeer.Address6 @@ -453,23 +453,18 @@ func GetExtPeers(node, peer *models.Node) ([]wgtypes.PeerConfig, []models.IDandA } -func getExtPeerEgressRoute(extPeer models.ExtClient) (egressRoutes []models.EgressNetworkRoutes) { - if extPeer.Address != "" { - egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{ - NodeAddr: extPeer.AddressIPNet4(), - EgressRanges: extPeer.ExtraAllowedIPs, - }) - } - if extPeer.Address6 != "" { - egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{ - NodeAddr: extPeer.AddressIPNet6(), - EgressRanges: extPeer.ExtraAllowedIPs, - }) - } +func getExtPeerEgressRoute(node models.Node, extPeer models.ExtClient) (egressRoutes []models.EgressNetworkRoutes) { + egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{ + EgressGwAddr: extPeer.AddressIPNet4(), + EgressGwAddr6: extPeer.AddressIPNet6(), + NodeAddr: node.Address, + NodeAddr6: node.Address6, + EgressRanges: extPeer.ExtraAllowedIPs, + }) return } -func getExtpeersExtraRoutes(network string) (egressRoutes []models.EgressNetworkRoutes) { +func getExtpeersExtraRoutes(node models.Node, network string) (egressRoutes []models.EgressNetworkRoutes) { extPeers, err := GetNetworkExtClients(network) if err != nil { return @@ -478,7 +473,7 @@ func getExtpeersExtraRoutes(network string) (egressRoutes []models.EgressNetwork if len(extPeer.ExtraAllowedIPs) == 0 { continue } - egressRoutes = append(egressRoutes, getExtPeerEgressRoute(extPeer)...) + egressRoutes = append(egressRoutes, getExtPeerEgressRoute(node, extPeer)...) } return } diff --git a/logic/peers.go b/logic/peers.go index ec82ba9f..dc21e4cd 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -181,7 +181,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N }) } if peer.IsIngressGateway { - hostPeerUpdate.EgressRoutes = append(hostPeerUpdate.EgressRoutes, getExtpeersExtraRoutes(peer.Network)...) + hostPeerUpdate.EgressRoutes = append(hostPeerUpdate.EgressRoutes, getExtpeersExtraRoutes(node, peer.Network)...) } _, isFailOverPeer := node.FailOverPeers[peer.ID.String()] if servercfg.IsPro {