summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-05-25 08:25:45 +0200
committerGitHub <noreply@github.com>2026-05-25 08:25:45 +0200
commitdc47f550e908eb4252ab2a30791b851403a3feae (patch)
tree4f6a7985a3f46c2474beabf1622699de20f3a09b
parent9554a316c80ac808a6b94f098484380cc422e597 (diff)
parentce401c3f099a92c49ee8a0344ac80e113e19883e (diff)
downloadvyos-1x-dc47f550e908eb4252ab2a30791b851403a3feae.tar.gz
vyos-1x-dc47f550e908eb4252ab2a30791b851403a3feae.zip
Merge pull request #5215 from alexk37/T8910-ipoe-idle-timeout
T8910: ipoe-server: expose accel-ppp idle-timeout option
-rw-r--r--data/templates/accel-ppp/ipoe.config.j23
-rw-r--r--interface-definitions/include/accel-ppp/idle-timeout.xml.i15
-rw-r--r--interface-definitions/service_ipoe-server.xml.in1
-rwxr-xr-xsmoketest/scripts/cli/test_service_ipoe-server.py19
4 files changed, 38 insertions, 0 deletions
diff --git a/data/templates/accel-ppp/ipoe.config.j2 b/data/templates/accel-ppp/ipoe.config.j2
index 34dfa529a..b0f83a0d6 100644
--- a/data/templates/accel-ppp/ipoe.config.j2
+++ b/data/templates/accel-ppp/ipoe.config.j2
@@ -38,6 +38,9 @@ level={{ log.level }}
[ipoe]
verbose=1
+{% if idle_timeout is vyos_defined %}
+idle-timeout={{ idle_timeout }}
+{% endif %}
{% if lua_file is vyos_defined %}
lua-file={{ lua_file }}
{% endif %}
diff --git a/interface-definitions/include/accel-ppp/idle-timeout.xml.i b/interface-definitions/include/accel-ppp/idle-timeout.xml.i
new file mode 100644
index 000000000..98af5aa85
--- /dev/null
+++ b/interface-definitions/include/accel-ppp/idle-timeout.xml.i
@@ -0,0 +1,15 @@
+<!-- include start from accel-ppp/idle-timeout.xml.i -->
+<leafNode name="idle-timeout">
+ <properties>
+ <help>Disconnect idle sessions after the specified time (in seconds)</help>
+ <valueHelp>
+ <format>u32:0-86400</format>
+ <description>Idle timeout in seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-86400"/>
+ </constraint>
+ <constraintErrorMessage>Idle timeout must be in range 0 to 86400</constraintErrorMessage>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/service_ipoe-server.xml.in b/interface-definitions/service_ipoe-server.xml.in
index 3093151ea..27b163001 100644
--- a/interface-definitions/service_ipoe-server.xml.in
+++ b/interface-definitions/service_ipoe-server.xml.in
@@ -233,6 +233,7 @@
#include <include/accel-ppp/default-ipv6-pool.xml.i>
#include <include/accel-ppp/extended-scripts.xml.i>
#include <include/accel-ppp/gateway-address-multi.xml.i>
+ #include <include/accel-ppp/idle-timeout.xml.i>
#include <include/accel-ppp/limits.xml.i>
#include <include/accel-ppp/max-concurrent-sessions.xml.i>
#include <include/accel-ppp/shaper.xml.i>
diff --git a/smoketest/scripts/cli/test_service_ipoe-server.py b/smoketest/scripts/cli/test_service_ipoe-server.py
index 47d6cce4b..614295fd8 100755
--- a/smoketest/scripts/cli/test_service_ipoe-server.py
+++ b/smoketest/scripts/cli/test_service_ipoe-server.py
@@ -319,6 +319,25 @@ delegate={delegate_2_prefix},{delegate_mask},name={pool_name}"""
conf.read(self._config_file)
self.assertIn(f'start={start_session}', conf['ipoe']['interface'])
+ def test_ipoe_server_idle_timeout(self):
+ idle_timeout = '300'
+
+ self.basic_config()
+ self.cli_commit()
+
+ # Default: no idle-timeout emitted
+ conf = ConfigParser(allow_no_value=True, delimiters='=', strict=False)
+ conf.read(self._config_file)
+ self.assertNotIn('idle-timeout', conf['ipoe'])
+
+ # Configure idle-timeout
+ self.set(['idle-timeout', idle_timeout])
+ self.cli_commit()
+
+ conf = ConfigParser(allow_no_value=True, delimiters='=', strict=False)
+ conf.read(self._config_file)
+ self.assertEqual(conf['ipoe']['idle-timeout'], idle_timeout)
+
@unittest.skip("PPP is not a part of IPoE")
def test_accel_ppp_options(self):
pass