summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-04-19 22:45:50 +0200
committerChristian Breunig <christian@breunig.cc>2026-04-21 06:13:21 +0200
commit754635c257b1860ce393cdc342c1b7ca7e65da1f (patch)
tree0fbb50cbf62c7ceb09a1a5f4568318ff0314f5c4 /src/tests
parent1d81dd0c6190d9fd36d01014f3b0a2d4bb91a919 (diff)
downloadvyos-1x-754635c257b1860ce393cdc342c1b7ca7e65da1f.tar.gz
vyos-1x-754635c257b1860ce393cdc342c1b7ca7e65da1f.zip
T8534: refactor sysctl_(read|write) to accept key parts
Interface names can contain dots (e.g. VLAN subinterfaces like eth0.10), which conflicts with sysctl's dot-separated key syntax. Change sysctl_read() and sysctl_write() to take key components as a list and normalize each component by replacing . with / before invoking sysctl. This fixes sysctl lookups/updates for VLAN subinterfaces. Extend the SR-TE smoketest to cover a VLAN subinterface. Previous error raising this issue: vyos-configd: sysctl: cannot stat /proc/sys/net/ipv6/conf/eth0/10/seg6_enabled: No such file or directory vyos-configd: sysctl: cannot stat /proc/sys/net/ipv6/conf/eth0/201/seg6_enabled: No such file or directory
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/test_utils.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tests/test_utils.py b/src/tests/test_utils.py
index 9cf6f7a1e..bbf1cb523 100644
--- a/src/tests/test_utils.py
+++ b/src/tests/test_utils.py
@@ -13,6 +13,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from unittest import TestCase
+from unittest.mock import patch
class TestVyOSUtils(TestCase):
def test_key_mangling(self):
@@ -24,7 +25,17 @@ class TestVyOSUtils(TestCase):
def test_sysctl_read(self):
from vyos.utils.system import sysctl_read
- self.assertEqual(sysctl_read('net.ipv4.conf.lo.forwarding'), '1')
+ self.assertEqual(sysctl_read(['net', 'ipv4', 'conf', 'lo', 'forwarding']), '1')
+
+ def test_sysctl_key_normalization(self):
+ from vyos.utils.system import sysctl_read
+ with patch('vyos.utils.system.run') as mock_run:
+ mock_run.return_value.stdout = b'1\n'
+ sysctl_read(['net', 'ipv4', 'conf', 'eth0.10', 'forwarding'])
+ mock_run.assert_called_with(
+ ['sysctl', '-nb', 'net.ipv4.conf.eth0/10.forwarding'],
+ capture_output=True,
+ )
def test_list_strip(self):
from vyos.utils.list import list_strip