From 718d11daa2bd74b1b3318a9fdd54bd878ea5ff3e Mon Sep 17 00:00:00 2001
From: Viacheslav Hletenko <v.gletenko@vyos.io>
Date: Tue, 9 May 2023 11:33:04 +0000
Subject: T5213: Add accounting-interim-interval option for PPPoE IPoE SSTP

Add RADIUS accounting-interim-interval option for PPPoE/IPoE/SSTP
servers.
Specifies interval in seconds to send accounting information
(may be overridden by radius Acct-Interim-Interval attribute)

set service pppoe-server authentication radius accounting-interim-interval '60'
---
 data/templates/accel-ppp/config_chap_secrets_radius.j2      |  3 +++
 .../include/accel-ppp/radius-additions.xml.i                | 13 +++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/data/templates/accel-ppp/config_chap_secrets_radius.j2 b/data/templates/accel-ppp/config_chap_secrets_radius.j2
index bb820497b..a498d8186 100644
--- a/data/templates/accel-ppp/config_chap_secrets_radius.j2
+++ b/data/templates/accel-ppp/config_chap_secrets_radius.j2
@@ -7,6 +7,9 @@ verbose=1
 {%     for server, options in authentication.radius.server.items() if not options.disable is vyos_defined %}
 server={{ server }},{{ options.key }},auth-port={{ options.port }},acct-port={{ options.acct_port }},req-limit=0,fail-time={{ options.fail_time }}
 {%     endfor %}
+{%     if authentication.radius.accounting_interim_interval is vyos_defined %}
+acct-interim-interval={{ authentication.radius.accounting_interim_interval }}
+{%     endif %}
 {%     if authentication.radius.acct_interim_jitter is vyos_defined %}
 acct-interim-jitter={{ authentication.radius.acct_interim_jitter }}
 {%     endif %}
diff --git a/interface-definitions/include/accel-ppp/radius-additions.xml.i b/interface-definitions/include/accel-ppp/radius-additions.xml.i
index 15ff5165f..cdd0bf300 100644
--- a/interface-definitions/include/accel-ppp/radius-additions.xml.i
+++ b/interface-definitions/include/accel-ppp/radius-additions.xml.i
@@ -1,6 +1,19 @@
 <!-- include start from accel-ppp/radius-additions.xml.i -->
 <node name="radius">
   <children>
+    <leafNode name="accounting-interim-interval">
+      <properties>
+        <help>Interval in seconds to send accounting information</help>
+        <valueHelp>
+          <format>u32:1-3600</format>
+          <description>Interval in seconds to send accounting information</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 1-3600"/>
+        </constraint>
+        <constraintErrorMessage>Interval value must be between 1 and 3600 seconds</constraintErrorMessage>
+      </properties>
+    </leafNode>
     <leafNode name="acct-interim-jitter">
       <properties>
         <help>Maximum jitter value in seconds to be applied to accounting information interval</help>
-- 
cgit v1.2.3


From 7c23983ba121a23e19ec3bf1d35489b818c25e85 Mon Sep 17 00:00:00 2001
From: Viacheslav Hletenko <v.gletenko@vyos.io>
Date: Tue, 9 May 2023 11:36:37 +0000
Subject: T5213: Add smoketest for pppoe-server accounting-interim-interval

---
 smoketest/scripts/cli/test_service_pppoe-server.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/smoketest/scripts/cli/test_service_pppoe-server.py b/smoketest/scripts/cli/test_service_pppoe-server.py
index 4f9181704..bb6a1c1cd 100755
--- a/smoketest/scripts/cli/test_service_pppoe-server.py
+++ b/smoketest/scripts/cli/test_service_pppoe-server.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2022 VyOS maintainers and contributors
+# Copyright (C) 2022-2023 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
@@ -243,9 +243,11 @@ class TestServicePPPoEServer(BasicAccelPPPTest.TestCase):
     def test_accel_radius_authentication(self):
         radius_called_sid = 'ifname:mac'
         radius_acct_interim_jitter = '9'
+        radius_acct_interim_interval = '60'
 
         self.set(['authentication', 'radius', 'called-sid-format', radius_called_sid])
         self.set(['authentication', 'radius', 'acct-interim-jitter', radius_acct_interim_jitter])
+        self.set(['authentication', 'radius', 'accounting-interim-interval', radius_acct_interim_interval])
 
         # run common tests
         super().test_accel_radius_authentication()
@@ -257,6 +259,7 @@ class TestServicePPPoEServer(BasicAccelPPPTest.TestCase):
         # Validate configuration
         self.assertEqual(conf['pppoe']['called-sid'], radius_called_sid)
         self.assertEqual(conf['radius']['acct-interim-jitter'], radius_acct_interim_jitter)
+        self.assertEqual(conf['radius']['acct-interim-interval'], radius_acct_interim_interval)
 
 
     def test_pppoe_server_vlan(self):
-- 
cgit v1.2.3


From ac0fedb7ac243947451e7263047a0f9e568c643a Mon Sep 17 00:00:00 2001
From: Viacheslav Hletenko <v.gletenko@vyos.io>
Date: Tue, 9 May 2023 11:38:12 +0000
Subject: T5214: Fix warning if a named pool is defined for PPPoE-server

---
 src/conf_mode/service_pppoe-server.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/conf_mode/service_pppoe-server.py b/src/conf_mode/service_pppoe-server.py
index 600ba4e92..adeefaa37 100755
--- a/src/conf_mode/service_pppoe-server.py
+++ b/src/conf_mode/service_pppoe-server.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2018-2022 VyOS maintainers and contributors
+# Copyright (C) 2018-2023 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
@@ -71,8 +71,9 @@ def verify(pppoe):
 
     # local ippool and gateway settings config checks
     if not (dict_search('client_ip_pool.subnet', pppoe) or
+           (dict_search('client_ip_pool.name', pppoe) or
            (dict_search('client_ip_pool.start', pppoe) and
-            dict_search('client_ip_pool.stop', pppoe))):
+            dict_search('client_ip_pool.stop', pppoe)))):
         print('Warning: No PPPoE client pool defined')
 
     if dict_search('authentication.radius.dynamic_author.server', pppoe):
-- 
cgit v1.2.3