fix egressing exclient set route issue

This commit is contained in:
Max Ma 2024-06-03 19:41:13 +02:00
parent 7ff30599ed
commit 0180481ddb
2 changed files with 12 additions and 17 deletions

View file

@ -431,7 +431,7 @@ func GetExtPeers(node, peer *models.Node) ([]wgtypes.PeerConfig, []models.IDandA
allowedips = append(allowedips, *cidr) allowedips = append(allowedips, *cidr)
} }
} }
egressRoutes = append(egressRoutes, getExtPeerEgressRoute(extPeer)...) egressRoutes = append(egressRoutes, getExtPeerEgressRoute(*node, extPeer)...)
primaryAddr := extPeer.Address primaryAddr := extPeer.Address
if primaryAddr == "" { if primaryAddr == "" {
primaryAddr = extPeer.Address6 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) { func getExtPeerEgressRoute(node models.Node, extPeer models.ExtClient) (egressRoutes []models.EgressNetworkRoutes) {
if extPeer.Address != "" {
egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{ egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{
NodeAddr: extPeer.AddressIPNet4(), EgressGwAddr: extPeer.AddressIPNet4(),
EgressGwAddr6: extPeer.AddressIPNet6(),
NodeAddr: node.Address,
NodeAddr6: node.Address6,
EgressRanges: extPeer.ExtraAllowedIPs, EgressRanges: extPeer.ExtraAllowedIPs,
}) })
}
if extPeer.Address6 != "" {
egressRoutes = append(egressRoutes, models.EgressNetworkRoutes{
NodeAddr: extPeer.AddressIPNet6(),
EgressRanges: extPeer.ExtraAllowedIPs,
})
}
return return
} }
func getExtpeersExtraRoutes(network string) (egressRoutes []models.EgressNetworkRoutes) { func getExtpeersExtraRoutes(node models.Node, network string) (egressRoutes []models.EgressNetworkRoutes) {
extPeers, err := GetNetworkExtClients(network) extPeers, err := GetNetworkExtClients(network)
if err != nil { if err != nil {
return return
@ -478,7 +473,7 @@ func getExtpeersExtraRoutes(network string) (egressRoutes []models.EgressNetwork
if len(extPeer.ExtraAllowedIPs) == 0 { if len(extPeer.ExtraAllowedIPs) == 0 {
continue continue
} }
egressRoutes = append(egressRoutes, getExtPeerEgressRoute(extPeer)...) egressRoutes = append(egressRoutes, getExtPeerEgressRoute(node, extPeer)...)
} }
return return
} }

View file

@ -181,7 +181,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
}) })
} }
if peer.IsIngressGateway { 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()] _, isFailOverPeer := node.FailOverPeers[peer.ID.String()]
if servercfg.IsPro { if servercfg.IsPro {