From ea4271d7cb23a7972f2f2530dd359d133bc2525f Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Fri, 1 May 2020 19:15:53 -0700 Subject: [PATCH] changed defaultroute service to behave similarly as before and use the first interface for a default .1 address --- .../configservices/utilservices/services.py | 21 +++++++----------- daemon/core/services/utility.py | 22 +++++++------------ 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/daemon/core/configservices/utilservices/services.py b/daemon/core/configservices/utilservices/services.py index 75b5c745..8ddf1cc7 100644 --- a/daemon/core/configservices/utilservices/services.py +++ b/daemon/core/configservices/utilservices/services.py @@ -4,7 +4,6 @@ import netaddr from core import utils from core.configservice.base import ConfigService, ConfigServiceMode -from core.nodes.base import CoreNode GROUP_NAME = "Utility" @@ -26,18 +25,14 @@ class DefaultRouteService(ConfigService): def data(self) -> Dict[str, Any]: # only add default routes for linked routing nodes routes = [] - for other_node in self.node.session.nodes.values(): - if not isinstance(other_node, CoreNode): - continue - if other_node.type not in ["router", "mdr"]: - continue - commonnets = self.node.commonnets(other_node) - if commonnets: - _, _, router_eth = commonnets[0] - for x in router_eth.addrlist: - addr, prefix = x.split("/") - routes.append(addr) - break + netifs = self.node.netifs(sort=True) + if netifs: + netif = netifs[0] + for x in netif.addrlist: + net = netaddr.IPNetwork(x).cidr + if net.size > 1: + router = net[1] + routes.append(str(router)) return dict(routes=routes) diff --git a/daemon/core/services/utility.py b/daemon/core/services/utility.py index 028c2c0b..8a6e828b 100644 --- a/daemon/core/services/utility.py +++ b/daemon/core/services/utility.py @@ -7,7 +7,6 @@ import netaddr from core import constants, utils from core.errors import CoreCommandError -from core.nodes.base import CoreNode from core.services.coreservices import CoreService, ServiceMode @@ -77,20 +76,15 @@ class DefaultRouteService(UtilService): @classmethod def generate_config(cls, node, filename): - # only add default routes for linked routing nodes routes = [] - for other_node in node.session.nodes.values(): - if not isinstance(other_node, CoreNode): - continue - if other_node.type not in ["router", "mdr"]: - continue - commonnets = node.commonnets(other_node) - if commonnets: - _, _, router_eth = commonnets[0] - for x in router_eth.addrlist: - addr, prefix = x.split("/") - routes.append(addr) - break + netifs = node.netifs(sort=True) + if netifs: + netif = netifs[0] + for x in netif.addrlist: + net = netaddr.IPNetwork(x).cidr + if net.size > 1: + router = net[1] + routes.append(str(router)) cfg = "#!/bin/sh\n" cfg += "# auto-generated by DefaultRoute service (utility.py)\n" for route in routes: