changed defaultroute service to behave similarly as before and use the first interface for a default .1 address

This commit is contained in:
Blake Harnden 2020-05-01 19:15:53 -07:00
parent 0ee679d978
commit ea4271d7cb
2 changed files with 16 additions and 27 deletions

View file

@ -4,7 +4,6 @@ import netaddr
from core import utils from core import utils
from core.configservice.base import ConfigService, ConfigServiceMode from core.configservice.base import ConfigService, ConfigServiceMode
from core.nodes.base import CoreNode
GROUP_NAME = "Utility" GROUP_NAME = "Utility"
@ -26,18 +25,14 @@ class DefaultRouteService(ConfigService):
def data(self) -> Dict[str, Any]: def data(self) -> Dict[str, Any]:
# only add default routes for linked routing nodes # only add default routes for linked routing nodes
routes = [] routes = []
for other_node in self.node.session.nodes.values(): netifs = self.node.netifs(sort=True)
if not isinstance(other_node, CoreNode): if netifs:
continue netif = netifs[0]
if other_node.type not in ["router", "mdr"]: for x in netif.addrlist:
continue net = netaddr.IPNetwork(x).cidr
commonnets = self.node.commonnets(other_node) if net.size > 1:
if commonnets: router = net[1]
_, _, router_eth = commonnets[0] routes.append(str(router))
for x in router_eth.addrlist:
addr, prefix = x.split("/")
routes.append(addr)
break
return dict(routes=routes) return dict(routes=routes)

View file

@ -7,7 +7,6 @@ import netaddr
from core import constants, utils from core import constants, utils
from core.errors import CoreCommandError from core.errors import CoreCommandError
from core.nodes.base import CoreNode
from core.services.coreservices import CoreService, ServiceMode from core.services.coreservices import CoreService, ServiceMode
@ -77,20 +76,15 @@ class DefaultRouteService(UtilService):
@classmethod @classmethod
def generate_config(cls, node, filename): def generate_config(cls, node, filename):
# only add default routes for linked routing nodes
routes = [] routes = []
for other_node in node.session.nodes.values(): netifs = node.netifs(sort=True)
if not isinstance(other_node, CoreNode): if netifs:
continue netif = netifs[0]
if other_node.type not in ["router", "mdr"]: for x in netif.addrlist:
continue net = netaddr.IPNetwork(x).cidr
commonnets = node.commonnets(other_node) if net.size > 1:
if commonnets: router = net[1]
_, _, router_eth = commonnets[0] routes.append(str(router))
for x in router_eth.addrlist:
addr, prefix = x.split("/")
routes.append(addr)
break
cfg = "#!/bin/sh\n" cfg = "#!/bin/sh\n"
cfg += "# auto-generated by DefaultRoute service (utility.py)\n" cfg += "# auto-generated by DefaultRoute service (utility.py)\n"
for route in routes: for route in routes: