Skip to content

Commit

Permalink
NET-1224:add egressGW ip for setroutes (#2933)
Browse files Browse the repository at this point in the history
* add egressGW ip for setroutes

* fix peer endpoint selection

---------

Co-authored-by: abhishek9686 <[email protected]>
  • Loading branch information
yabinma and abhishek9686 authored May 14, 2024
1 parent faf50c8 commit 6dc8812
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
3 changes: 3 additions & 0 deletions logic/extpeers.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
23 changes: 12 additions & 11 deletions logic/peers.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,11 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
}
if peer.IsEgressGateway {
hostPeerUpdate.EgressRoutes = append(hostPeerUpdate.EgressRoutes, models.EgressNetworkRoutes{
NodeAddr: node.Address,
NodeAddr6: node.Address6,
EgressRanges: peer.EgressGatewayRanges,
EgressGwAddr: peer.Address,
EgressGwAddr6: peer.Address6,
NodeAddr: node.Address,
NodeAddr6: node.Address6,
EgressRanges: peer.EgressGatewayRanges,
})
}
if peer.IsIngressGateway {
Expand Down Expand Up @@ -213,16 +215,15 @@ 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() != "" {
peerEndpoint = peerHost.EndpointIPv6
}
} else if host.EndpointIPv6 != nil && peerHost.EndpointIPv6 != nil {
peerEndpoint = peerHost.EndpointIPv6
}

peerConfig.Endpoint = &net.UDPAddr{
Expand Down
8 changes: 5 additions & 3 deletions models/mqtt.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ type EgressInfo struct {

// EgressNetworkRoutes - struct for egress network routes for adding routes to peer's interface
type EgressNetworkRoutes struct {
NodeAddr net.IPNet `json:"node_addr"`
NodeAddr6 net.IPNet `json:"node_addr6"`
EgressRanges []string `json:"egress_ranges"`
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"`
}

// PeerRouteInfo - struct for peer info for an ext. client
Expand Down

0 comments on commit 6dc8812

Please sign in to comment.