From c9b33da5260db44c70e066f61711e61f7341bf1e Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Tue, 19 Apr 2022 19:59:34 +0200
Subject: pppoe: static: T4379: bugfix default-route lost after applying
 additional static routes

Issue is identical to the problem in T3680 (05aa22dcb4ce) which was for DHCP
based routes. Once a static route is added to the system, the PPPoE
auto-installed default route is lost.
---
 python/vyos/configdict.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'python')

diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py
index f50db0c99..3f5b9a246 100644
--- a/python/vyos/configdict.py
+++ b/python/vyos/configdict.py
@@ -335,10 +335,12 @@ def get_dhcp_interfaces(conf, vrf=None):
 
     def check_dhcp(config, ifname):
         tmp = {}
-        if 'address' in config and 'dhcp' in config['address']:
+        if dict_search('address', config) == 'dhcp' or dict_search('default_route', config) != None:
             options = {}
-            if 'dhcp_options' in config and 'default_route_distance' in config['dhcp_options']:
+            if dict_search('dhcp_options.default_route_distance', config) != None:
                 options.update({'distance' : config['dhcp_options']['default_route_distance']})
+            if dict_search('default_route', config) != None:
+                options.update({'distance' : config['default_route']})
             if 'vrf' in config:
                 if vrf is config['vrf']: tmp.update({ifname : options})
             else: tmp.update({ifname : options})
@@ -346,6 +348,8 @@ def get_dhcp_interfaces(conf, vrf=None):
 
     for section, interface in dict.items():
         for ifname in interface:
+            # always reset config level
+            conf.set_level([])
             # we already have a dict representation of the config from get_config_dict(),
             # but with the extended information from get_interface_dict() we also
             # get the DHCP client default-route-distance default option if not specified.
-- 
cgit v1.2.3