mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 16:57:51 +08:00
NET-1224:add egressGW ip for setroutes (#2933)
* add egressGW ip for setroutes * fix peer endpoint selection --------- Co-authored-by: abhishek9686 <abhi281342@gmail.com>
This commit is contained in:
@@ -475,6 +475,9 @@ func getExtpeersExtraRoutes(network string) (egressRoutes []models.EgressNetwork
|
||||
return
|
||||
}
|
||||
for _, extPeer := range extPeers {
|
||||
if len(extPeer.ExtraAllowedIPs) == 0 {
|
||||
continue
|
||||
}
|
||||
egressRoutes = append(egressRoutes, getExtPeerEgressRoute(extPeer)...)
|
||||
}
|
||||
return
|
||||
|
@@ -173,6 +173,8 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
|
||||
}
|
||||
if peer.IsEgressGateway {
|
||||
hostPeerUpdate.EgressRoutes = append(hostPeerUpdate.EgressRoutes, models.EgressNetworkRoutes{
|
||||
EgressGwAddr: peer.Address,
|
||||
EgressGwAddr6: peer.Address6,
|
||||
NodeAddr: node.Address,
|
||||
NodeAddr6: node.Address6,
|
||||
EgressRanges: peer.EgressGatewayRanges,
|
||||
@@ -213,17 +215,16 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
|
||||
}
|
||||
}
|
||||
|
||||
//1. check currHost has ipv4 endpoint and peerhost has ipv4 then set ipv4 endpoint for peer
|
||||
// 2. check currHost has ipv6 endpoint and peerhost has ipv6 then set ipv6 endpoint for peer
|
||||
|
||||
//if host is ipv4 only or ipv4+ipv6, set the peer endpoint to ipv4 address, if host is ipv6 only, set the peer endpoint to ipv6 address
|
||||
peerEndpoint := peerHost.EndpointIP
|
||||
if ipv4 := host.EndpointIP.To4(); ipv4 != nil {
|
||||
var peerEndpoint net.IP
|
||||
if host.EndpointIP != nil && peerHost.EndpointIP != nil {
|
||||
peerEndpoint = peerHost.EndpointIP
|
||||
} else {
|
||||
//if peer host's ipv6 address is empty, it means that peer is an IPv4 only host
|
||||
//IPv4 only host could not communicate with IPv6 only host
|
||||
if peerHost.EndpointIPv6 != nil && peerHost.EndpointIPv6.String() != "" {
|
||||
} else if host.EndpointIPv6 != nil && peerHost.EndpointIPv6 != nil {
|
||||
peerEndpoint = peerHost.EndpointIPv6
|
||||
}
|
||||
}
|
||||
|
||||
peerConfig.Endpoint = &net.UDPAddr{
|
||||
IP: peerEndpoint,
|
||||
|
@@ -44,6 +44,8 @@ type EgressInfo struct {
|
||||
|
||||
// EgressNetworkRoutes - struct for egress network routes for adding routes to peer's interface
|
||||
type EgressNetworkRoutes struct {
|
||||
EgressGwAddr net.IPNet `json:"egress_gw_addr" yaml:"egress_gw_addr"`
|
||||
EgressGwAddr6 net.IPNet `json:"egress_gw_addr6" yaml:"egress_gw_addr6"`
|
||||
NodeAddr net.IPNet `json:"node_addr"`
|
||||
NodeAddr6 net.IPNet `json:"node_addr6"`
|
||||
EgressRanges []string `json:"egress_ranges"`
|
||||
|
Reference in New Issue
Block a user