From 2e7054507a277bc997f8228b33d068332945b4cc Mon Sep 17 00:00:00 2001 From: Abhishek Kondur Date: Fri, 3 Feb 2023 11:45:30 +0400 Subject: [PATCH] get ext peers for egress gw if node is ingress too --- logic/peers.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index 7775d3f8..a4f861bb 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -429,8 +429,10 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) { } } + var extPeers []wgtypes.PeerConfig + var extPeerIDAndAddrs []models.IDandAddr if node.IsIngressGateway { - extPeers, extPeerIDAndAddrs, err := getExtPeers(&node) + extPeers, extPeerIDAndAddrs, err = getExtPeers(&node) if err == nil { hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...) for _, extPeerIdAndAddr := range extPeerIDAndAddrs { @@ -461,8 +463,25 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) { } } if node.IsEgressGateway { + if node.IsIngressGateway { + for _, extPeerIdAndAddr := range extPeerIDAndAddrs { + nodePeerMap[extPeerIdAndAddr.ID] = models.PeerRouteInfo{ + PeerAddr: net.IPNet{ + IP: net.ParseIP(extPeerIdAndAddr.Address), + Mask: getCIDRMaskFromAddr(extPeerIdAndAddr.Address), + }, + PeerKey: extPeerIdAndAddr.ID, + Allow: true, + } + } + + } hostPeerUpdate.EgressInfo[node.ID.String()] = models.EgressInfo{ - EgressID: node.ID.String(), + EgressID: node.ID.String(), + EgressGwAddr: net.IPNet{ + IP: net.ParseIP(node.PrimaryAddress()), + Mask: getCIDRMaskFromAddr(node.PrimaryAddress()), + }, GwPeers: nodePeerMap, EgressGWCfg: node.EgressGatewayRequest, }