summaryrefslogtreecommitdiff
path: root/src/conf_mode/service_pppoe-server.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-05-01 21:28:48 +0200
committerGitHub <noreply@github.com>2024-05-01 21:28:48 +0200
commite019155e3d7a1383f480f2bdf4c7e17d807fc7db (patch)
treeb95ccc6bbe06e1e0dfee8d3c908316eb2ae72a35 /src/conf_mode/service_pppoe-server.py
parentc37bbccf18b82f47bb7211a445b054d3606da3cb (diff)
parent0891817c6f0b4d4bb3e8d4c21f2873ab43e1be26 (diff)
downloadvyos-1x-e019155e3d7a1383f480f2bdf4c7e17d807fc7db.tar.gz
vyos-1x-e019155e3d7a1383f480f2bdf4c7e17d807fc7db.zip
Merge pull request #3388 from vyos/mergify/bp/sagitta/pr-3364
pppoe-server: T6234: PPPoE-server pado-delay refactoring (backport #3364)
Diffstat (limited to 'src/conf_mode/service_pppoe-server.py')
-rwxr-xr-xsrc/conf_mode/service_pppoe-server.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/conf_mode/service_pppoe-server.py b/src/conf_mode/service_pppoe-server.py
index 328487985..c95f976d3 100755
--- a/src/conf_mode/service_pppoe-server.py
+++ b/src/conf_mode/service_pppoe-server.py
@@ -84,12 +84,29 @@ def verify_pado_delay(pppoe):
pado_delay = pppoe['pado_delay']
delays_without_sessions = pado_delay['delays_without_sessions']
+ if 'disable' in delays_without_sessions:
+ raise ConfigError(
+ 'Number of sessions must be specified for "pado-delay disable"'
+ )
+
if len(delays_without_sessions) > 1:
raise ConfigError(
f'Cannot add more then ONE pado-delay without sessions, '
f'but {len(delays_without_sessions)} were set'
)
+ if 'disable' in [delay[0] for delay in pado_delay['delays_with_sessions']]:
+ # need to sort delays by sessions to verify if there is no delay
+ # for sessions after disabling
+ sorted_pado_delay = sorted(pado_delay['delays_with_sessions'], key=lambda k_v: k_v[1])
+ last_delay = sorted_pado_delay[-1]
+
+ if last_delay[0] != 'disable':
+ raise ConfigError(
+ f'Cannot add pado-delay after disabled sessions, but '
+ f'"pado-delay {last_delay[0]} sessions {last_delay[1]}" was set'
+ )
+
def verify(pppoe):
if not pppoe:
return None