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