summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-11-26 23:18:24 +0100
committerChristian Breunig <christian@breunig.cc>2025-11-27 08:12:03 +0100
commitd5f096a578f8146f18a3f718dc0c8a9b40d65400 (patch)
treec74c6539daa1d42dd3ddcc686f31084ad1f7ac0a /smoketest/scripts/cli
parentba1b8f6359adfaba3b4289afaffe997c16d6fed6 (diff)
downloadvyos-1x-d5f096a578f8146f18a3f718dc0c8a9b40d65400.tar.gz
vyos-1x-d5f096a578f8146f18a3f718dc0c8a9b40d65400.zip
snmp: T8039: fix v3 trap targets
The generated Net-SNMP configuration for SNMPv3 trap-targets was fundamentally broken. Not only was the auth/priv type not written in uppercase letters, but also the ordering of transport protocol, IP(v6) address and port was wrong. To complete the issues above - IPv6 addresses did not get wrapped into mandatory [] brackets.
Diffstat (limited to 'smoketest/scripts/cli')
-rwxr-xr-xsmoketest/scripts/cli/test_service_snmp.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/smoketest/scripts/cli/test_service_snmp.py b/smoketest/scripts/cli/test_service_snmp.py
index 6f6aeb7b6..a23692982 100755
--- a/smoketest/scripts/cli/test_service_snmp.py
+++ b/smoketest/scripts/cli/test_service_snmp.py
@@ -20,13 +20,16 @@ import unittest
from base_vyostest_shim import VyOSUnitTestSHIM
from vyos.configsession import ConfigSessionError
-from vyos.template import is_ipv4
from vyos.template import address_from_cidr
+from vyos.template import bracketize_ipv6
+from vyos.template import is_ipv4
+from vyos.template import is_ipv6
from vyos.utils.process import call
from vyos.utils.process import DEVNULL
from vyos.utils.file import read_file
from vyos.utils.process import process_named_running
from vyos.version import get_version_data
+from vyos.xml_ref import default_value
PROCESS_NAME = 'snmpd'
SNMPD_CONF = '/etc/snmp/snmpd.conf'
@@ -246,6 +249,36 @@ class TestSNMPService(VyOSUnitTestSHIM.TestCase):
for excluded in snmpv3_view_oid_exclude:
self.assertIn(f'view {snmpv3_view} excluded .{excluded}', tmp)
+ def test_snmpv3_trap(self):
+ trap_targets = ['192.0.2.55', '2001:db8::1']
+
+ self.cli_set(base_path + ['v3', 'engineid', snmpv3_engine_id])
+ self.cli_set(base_path + ['v3', 'group', snmpv3_group, 'view', snmpv3_view])
+ self.cli_set(base_path + ['v3', 'view', snmpv3_view, 'oid', snmpv3_view_oid])
+
+ for trap_target in trap_targets:
+ trap_base = base_path + ['v3', 'trap-target', trap_target]
+
+ self.cli_set(trap_base + ['auth', 'plaintext-password', snmpv3_auth_pw])
+ self.cli_set(trap_base + ['auth', 'type', 'sha'])
+ self.cli_set(trap_base + ['privacy', 'plaintext-password', snmpv3_priv_pw])
+ self.cli_set(trap_base + ['privacy', 'type', 'aes'])
+ self.cli_set(trap_base + ['type', 'trap'])
+ self.cli_set(trap_base + ['user', snmpv3_user])
+
+ self.cli_commit()
+
+ tmp = read_file(SNMPD_CONF)
+ for trap_target in trap_targets:
+ cli_default_trap_port = default_value(base_path + ['v3', 'trap-target', trap_target, 'port'])
+ cli_default_trap_protocol = default_value(base_path + ['v3', 'trap-target', trap_target, 'protocol'])
+ if is_ipv6(trap_target):
+ cli_default_trap_protocol = f'{cli_default_trap_protocol}6'
+
+ self.assertIn(f'trapsess -v 3 -e "{snmpv3_engine_id}" -u {snmpv3_user} -a SHA -A {snmpv3_auth_pw} ' \
+ f'-x AES -X {snmpv3_priv_pw} -l authPriv ' \
+ f'{cli_default_trap_protocol}:{bracketize_ipv6(trap_target)}:{cli_default_trap_port}', tmp)
+
def test_snmp_script_extensions(self):
extensions = {
'default': 'snmp_smoketest_extension_script.sh',