diff options
author | Christian Breunig <christian@breunig.cc> | 2023-10-03 18:14:23 +0200 |
---|---|---|
committer | Christian Breunig <christian@breunig.cc> | 2023-10-08 09:45:00 +0200 |
commit | 88c1fd3a35926d813967b3c969e01b41ea67771a (patch) | |
tree | bb82d0f91913d711b2281e54d82774d0840e0123 | |
parent | da4006c2a784ff06cf3af3aad6adee7fef8a5330 (diff) | |
download | vyos-1x-88c1fd3a35926d813967b3c969e01b41ea67771a.tar.gz vyos-1x-88c1fd3a35926d813967b3c969e01b41ea67771a.zip |
pppoe: T5630: allow to specify MRU in addition to already configurable MTU
Set the MRU (Maximum Receive Unit) value to n. PPPd will ask the peer to send
packets of no more than n bytes. The value of n must be between 128 and 16384,
the default was always 1492 to match PPPoE MTU.
A value of 296 works well on very slow links (40 bytes for TCP/IP header + 256
bytes of data). Note that for the IPv6 protocol, the MRU must be at least 1280.
CLI:
set interfaces pppoe pppoe0 mru 1280
(cherry picked from commit e062a8c11856f213983f5b41f50d4f9dbc0dde0f)
-rw-r--r-- | data/templates/pppoe/peer.tmpl | 2 | ||||
-rw-r--r-- | interface-definitions/interfaces-pppoe.xml.in | 14 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_interfaces_pppoe.py | 4 |
3 files changed, 19 insertions, 1 deletions
diff --git a/data/templates/pppoe/peer.tmpl b/data/templates/pppoe/peer.tmpl index b681bea77..536d484de 100644 --- a/data/templates/pppoe/peer.tmpl +++ b/data/templates/pppoe/peer.tmpl @@ -50,7 +50,7 @@ ifname {{ ifname }} ipparam {{ ifname }} debug mtu {{ mtu }} -mru {{ mtu }} +mru {{ mru }} {% if authentication is defined %} {{ 'user "' + authentication.user + '"' if authentication.user is defined }} diff --git a/interface-definitions/interfaces-pppoe.xml.in b/interface-definitions/interfaces-pppoe.xml.in index 581a8a59c..5e39ac65d 100644 --- a/interface-definitions/interfaces-pppoe.xml.in +++ b/interface-definitions/interfaces-pppoe.xml.in @@ -114,6 +114,20 @@ <leafNode name="mtu"> <defaultValue>1492</defaultValue> </leafNode> + <leafNode name="mru"> + <properties> + <help>Maximum Receive Unit (MRU)</help> + <valueHelp> + <format>u32:128-16384</format> + <description>Maximum Receive Unit in byte</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 128-16384"/> + </constraint> + <constraintErrorMessage>MRU must be between 128 and 16384</constraintErrorMessage> + </properties> + <defaultValue>1492</defaultValue> + </leafNode> <leafNode name="no-peer-dns"> <properties> <help>Do not use DNS servers provided by the peer</help> diff --git a/smoketest/scripts/cli/test_interfaces_pppoe.py b/smoketest/scripts/cli/test_interfaces_pppoe.py index 8dcac4d7d..6774a86ba 100755 --- a/smoketest/scripts/cli/test_interfaces_pppoe.py +++ b/smoketest/scripts/cli/test_interfaces_pppoe.py @@ -58,11 +58,13 @@ class PPPoEInterfaceTest(VyOSUnitTestSHIM.TestCase): user = 'VyOS-user-' + interface passwd = 'VyOS-passwd-' + interface mtu = '1400' + mru = '1300' self.cli_set(base_path + [interface, 'authentication', 'user', user]) self.cli_set(base_path + [interface, 'authentication', 'password', passwd]) self.cli_set(base_path + [interface, 'default-route', 'auto']) self.cli_set(base_path + [interface, 'mtu', mtu]) + self.cli_set(base_path + [interface, 'mru', mru]) self.cli_set(base_path + [interface, 'no-peer-dns']) # check validate() - a source-interface is required @@ -80,6 +82,8 @@ class PPPoEInterfaceTest(VyOSUnitTestSHIM.TestCase): tmp = get_config_value(interface, 'mtu')[1] self.assertEqual(tmp, mtu) + tmp = get_config_value(interface, 'mru')[1] + self.assertEqual(tmp, mru) tmp = get_config_value(interface, 'user')[1].replace('"', '') self.assertEqual(tmp, user) tmp = get_config_value(interface, 'password')[1].replace('"', '') |