mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-21 19:50:38 +02:00
Removed unused code and filter network resources HA routes
Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
nbdns "github.com/netbirdio/netbird/dns"
|
nbdns "github.com/netbirdio/netbird/dns"
|
||||||
"github.com/netbirdio/netbird/management/domain"
|
"github.com/netbirdio/netbird/management/domain"
|
||||||
@@ -1237,48 +1238,6 @@ func GetAllRoutePoliciesFromGroups(account *Account, accessControlGroups []strin
|
|||||||
return routePolicies
|
return routePolicies
|
||||||
}
|
}
|
||||||
|
|
||||||
// getRoutingPeerNetworkResourcesRoutes returns the network resources routes associated with a routing peer ID for the account.
|
|
||||||
func (a *Account) getRoutingPeerNetworkResourcesRoutes(ctx context.Context, peerID string) []*route.Route {
|
|
||||||
var routes []*route.Route
|
|
||||||
|
|
||||||
peer := a.GetPeer(peerID)
|
|
||||||
if peer == nil {
|
|
||||||
log.WithContext(ctx).Errorf("peer %s that doesn't exist under account %s", peerID, a.Id)
|
|
||||||
return routes
|
|
||||||
}
|
|
||||||
|
|
||||||
// currently we support only linux routing peers
|
|
||||||
if peer.Meta.GoOS != "linux" {
|
|
||||||
return routes
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, router := range a.NetworkRouters {
|
|
||||||
isMember := false
|
|
||||||
for _, groupID := range router.PeerGroups {
|
|
||||||
group := a.GetGroup(groupID)
|
|
||||||
if group == nil {
|
|
||||||
log.WithContext(ctx).Warnf("router %s has peers group %s that doesn't exist under account %s, will continue map generation", router.ID, groupID, a.Id)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, id := range group.Peers {
|
|
||||||
if id == peerID {
|
|
||||||
isMember = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if isMember || router.Peer == peerID {
|
|
||||||
resources := a.getNetworkResources(router.NetworkID)
|
|
||||||
routes = append(routes, a.getNetworkResourcesRoutes(resources, router, peer)...)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return routes
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPeerNetworkResourceFirewallRules gets the network resources firewall rules associated with a routing peer ID for the account.
|
// GetPeerNetworkResourceFirewallRules gets the network resources firewall rules associated with a routing peer ID for the account.
|
||||||
func (a *Account) GetPeerNetworkResourceFirewallRules(ctx context.Context, peer *nbpeer.Peer, validatedPeersMap map[string]struct{}, routes []*route.Route) []*RouteFirewallRule {
|
func (a *Account) GetPeerNetworkResourceFirewallRules(ctx context.Context, peer *nbpeer.Peer, validatedPeersMap map[string]struct{}, routes []*route.Route) []*RouteFirewallRule {
|
||||||
routesFirewallRules := make([]*RouteFirewallRule, 0)
|
routesFirewallRules := make([]*RouteFirewallRule, 0)
|
||||||
@@ -1328,7 +1287,7 @@ func (a *Account) GetNetworkResourcesRoutesToSync(ctx context.Context, peerID st
|
|||||||
|
|
||||||
resourceRouters := routers[resource.NetworkID]
|
resourceRouters := routers[resource.NetworkID]
|
||||||
|
|
||||||
if resourceRouters == nil || len(resourceRouters) == 0 {
|
if len(resourceRouters) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1340,7 +1299,7 @@ func (a *Account) GetNetworkResourcesRoutesToSync(ctx context.Context, peerID st
|
|||||||
for _, peerGroup := range router.PeerGroups {
|
for _, peerGroup := range router.PeerGroups {
|
||||||
g := a.Groups[peerGroup]
|
g := a.Groups[peerGroup]
|
||||||
if g != nil {
|
if g != nil {
|
||||||
if slices.Contains(router.PeerGroups, peerID) {
|
if slices.Contains(g.Peers, peerID) {
|
||||||
resources = append(resources, resource)
|
resources = append(resources, resource)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1393,12 +1352,17 @@ func (a *Account) GetNetworkResourcesRoutesToSync(ctx context.Context, peerID st
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, peerId := range resourceRoutingPeers {
|
for _, peerId := range resourceRoutingPeers {
|
||||||
routes = append(routes, a.getNetworkResourcesRoutesG(resources, router, peerId)...)
|
routes = append(routes, a.getNetworkResourcesRoutes(resources, router, peerId)...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return routes
|
peerRoutesMembership := make(map[string]*route.Route)
|
||||||
|
for _, r := range routes {
|
||||||
|
peerRoutesMembership[string(r.GetHAUniqueID())] = r
|
||||||
|
}
|
||||||
|
|
||||||
|
return maps.Values(peerRoutesMembership)
|
||||||
}
|
}
|
||||||
|
|
||||||
// getNetworkResources filters and returns a list of network resources associated with the given network ID.
|
// getNetworkResources filters and returns a list of network resources associated with the given network ID.
|
||||||
@@ -1466,22 +1430,7 @@ func (a *Account) GetPoliciesAppliedInNetwork(networkID string) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getNetworkResourcesRoutes convert the network resources list to routes list.
|
// getNetworkResourcesRoutes convert the network resources list to routes list.
|
||||||
func (a *Account) getNetworkResourcesRoutes(resources []*resourceTypes.NetworkResource, router *routerTypes.NetworkRouter, peer *nbpeer.Peer) []*route.Route {
|
func (a *Account) getNetworkResourcesRoutes(resources []*resourceTypes.NetworkResource, router *routerTypes.NetworkRouter, peerId string) []*route.Route {
|
||||||
routes := make([]*route.Route, 0, len(resources))
|
|
||||||
for _, resource := range resources {
|
|
||||||
resourceAppliedPolicies := a.GetPoliciesForNetworkResource(resource.ID)
|
|
||||||
|
|
||||||
// distribute the resource routes only if there is policy applied to it
|
|
||||||
if len(resourceAppliedPolicies) > 0 {
|
|
||||||
routes = append(routes, resource.ToRoute(peer, router))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return routes
|
|
||||||
}
|
|
||||||
|
|
||||||
// getNetworkResourcesRoutes convert the network resources list to routes list.
|
|
||||||
func (a *Account) getNetworkResourcesRoutesG(resources []*resourceTypes.NetworkResource, router *routerTypes.NetworkRouter, peerId string) []*route.Route {
|
|
||||||
routes := make([]*route.Route, 0, len(resources))
|
routes := make([]*route.Route, 0, len(resources))
|
||||||
for _, resource := range resources {
|
for _, resource := range resources {
|
||||||
resourceAppliedPolicies := a.GetPoliciesForNetworkResource(resource.ID)
|
resourceAppliedPolicies := a.GetPoliciesForNetworkResource(resource.ID)
|
||||||
|
Reference in New Issue
Block a user