From ee63d76964e3129e372e5c3fd8bc5bf028fc3874 Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Sat, 18 Apr 2020 11:57:49 +0200 Subject: pppoe-server: T2314: migrate IPv4/IPv6 name-servers to common node Instead of having "dns-server server-1|server-2" nodes and the same for IPv6 all DNS nameservers are migrated to a common name-servers node. --- src/conf_mode/service_pppoe-server.py | 41 ++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'src/conf_mode/service_pppoe-server.py') diff --git a/src/conf_mode/service_pppoe-server.py b/src/conf_mode/service_pppoe-server.py index 8b7f5a0e9..238208eff 100755 --- a/src/conf_mode/service_pppoe-server.py +++ b/src/conf_mode/service_pppoe-server.py @@ -22,9 +22,10 @@ from stat import S_IRUSR, S_IWUSR, S_IRGRP from sys import exit from vyos.config import Config -from vyos import ConfigError -from vyos.util import call from vyos.template import render +from vyos.util import call +from vyos.validate import is_ipv4 +from vyos import ConfigError pppoe_conf = r'/run/accel-pppd/pppoe.conf' pppoe_chap_secrets = r'/run/accel-pppd/pppoe.chap-secrets' @@ -40,7 +41,7 @@ default_config_data = { 'local_users' : [], 'svc_name': [], - 'dns': [], + 'dnsv4': [], 'dnsv6': [], 'wins': [], 'mtu': '1492', @@ -118,24 +119,15 @@ def get_config(): if conf.exists(['local-ip']): pppoe['ppp_gw'] = conf.return_value(['local-ip']) - if conf.exists(['dns-servers']): - for server in ['server-1', 'server-2']: - if conf.return_value(['dns-servers', server]): - tmp = conf.return_value(['dns-servers', server]) - pppoe['dns'].append(tmp) - - - if conf.exists(['dnsv6-servers']): - for server in ['server-1', 'server-2', 'server-3']: - if conf.return_value(['dnsv6-servers', server]): - tmp = conf.return_value(['dnsv6-servers', server]) - pppoe['dnsv6'].append(tmp) + if conf.exists(['name-server']): + for name_server in conf.return_values(['name-server']): + if is_ipv4(name_server): + pppoe['dnsv4'].append(name_server) + else: + pppoe['dnsv6'].append(name_server) - if conf.exists(['wins-servers']): - for server in ['server-1', 'server-2']: - if conf.return_value(['wins-servers', server]): - tmp = conf.return_value(['wins-servers', server]) - pppoe['wins'].append(tmp) + if conf.exists(['wins-server']): + pppoe['wins'] = conf.return_values(['wins-server']) if conf.exists(['client-ip-pool']): if conf.exists(['client-ip-pool', 'start']) and conf.exists(['client-ip-pool', 'stop']): @@ -374,6 +366,15 @@ def verify(pppoe): server = radius['server'] raise ConfigError(f'Missing RADIUS secret key for server "{{ server }}"') + if len(pppoe['wins']) > 2: + raise ConfigError('Not more then two IPv4 WINS name-servers can be configured') + + if len(pppoe['dnsv4']) > 2: + raise ConfigError('Not more then two IPv4 DNS name-servers can be configured') + + if len(pppoe['dnsv6']) > 3: + raise ConfigError('Not more then three IPv6 DNS name-servers can be configured') + # local ippool and gateway settings config checks if pppoe['client_ip_subnets'] or pppoe['client_ip_pool']: if not pppoe['ppp_gw']: -- cgit v1.2.3