diff options
author | DmitriyEshenko <dmitriy.eshenko@vyos.io> | 2021-12-06 19:41:55 +0000 |
---|---|---|
committer | DmitriyEshenko <dmitriy.eshenko@vyos.io> | 2021-12-07 17:36:43 +0000 |
commit | 3b6504d4bfc8a7f19613ee32fef5242711ca390a (patch) | |
tree | 6acb188a1441f7df9620e19b9b6a71a8ee5f7234 /src/conf_mode | |
parent | ae16a51506cdc4de8e18f4678b8f55654d4abbba (diff) | |
download | vyos-1x-3b6504d4bfc8a7f19613ee32fef5242711ca390a.tar.gz vyos-1x-3b6504d4bfc8a7f19613ee32fef5242711ca390a.zip |
pppoe-server: T3006: Add range to regex generator
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/service_pppoe-server.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/conf_mode/service_pppoe-server.py b/src/conf_mode/service_pppoe-server.py index 9fbd531da..1f31d132d 100755 --- a/src/conf_mode/service_pppoe-server.py +++ b/src/conf_mode/service_pppoe-server.py @@ -24,8 +24,11 @@ from vyos.configverify import verify_accel_ppp_base_service from vyos.template import render from vyos.util import call from vyos.util import dict_search +from vyos.util import get_interface_config from vyos import ConfigError from vyos import airbag +from vyos.range_regex import range_to_regex + airbag.enable() pppoe_conf = r'/run/accel-pppd/pppoe.conf' @@ -56,6 +59,11 @@ def verify(pppoe): if 'interface' not in pppoe: raise ConfigError('At least one listen interface must be defined!') + # Check is interface exists in the system + for iface in pppoe['interface']: + if not get_interface_config(iface): + raise ConfigError(f'Interface {iface} does not exist!') + # local ippool and gateway settings config checks if not (dict_search('client_ip_pool.subnet', pppoe) or (dict_search('client_ip_pool.start', pppoe) and @@ -73,6 +81,13 @@ def generate(pppoe): if not pppoe: return None + # Generate special regex for dynamic interfaces + for iface in pppoe['interface']: + if 'vlan_range' in pppoe['interface'][iface]: + pppoe['interface'][iface]['regex'] = [] + for vlan_range in pppoe['interface'][iface]['vlan_range']: + pppoe['interface'][iface]['regex'].append(range_to_regex(vlan_range)) + render(pppoe_conf, 'accel-ppp/pppoe.config.tmpl', pppoe) if dict_search('authentication.mode', pppoe) == 'local': |