From: Anders Wallin <walli...@gmail.com> Added 6 test case for sending traps from snmpd. The test cases includes traps or informs, statically configured trapsess in snmpd and dynamically configured traps using snmpset.
Signed-off-by: Anders Wallin <walli...@gmail.com> [bvanassche: Fixed shellcheck warnings / introduced settmib() and setnmib()] --- testing/fulltests/default/Sv3usmtraps | 162 ++++++++++++++++++ .../default/T031snmpv3dynamicinform_simple | 18 ++ .../default/T031snmpv3dynamictrap_simple | 18 ++ .../fulltests/default/T031snmpv3inform_simple | 18 ++ .../default/T031snmpv3staticinform_simple | 18 ++ .../default/T031snmpv3statictrap_simple | 18 ++ .../fulltests/default/T031snmpv3trap_simple | 18 ++ 7 files changed, 270 insertions(+) create mode 100644 testing/fulltests/default/Sv3usmtraps create mode 100644 testing/fulltests/default/T031snmpv3dynamicinform_simple create mode 100644 testing/fulltests/default/T031snmpv3dynamictrap_simple create mode 100644 testing/fulltests/default/T031snmpv3inform_simple create mode 100644 testing/fulltests/default/T031snmpv3staticinform_simple create mode 100644 testing/fulltests/default/T031snmpv3statictrap_simple create mode 100644 testing/fulltests/default/T031snmpv3trap_simple diff --git a/testing/fulltests/default/Sv3usmtraps b/testing/fulltests/default/Sv3usmtraps new file mode 100644 index 000000000000..3f110c4acfe2 --- /dev/null +++ b/testing/fulltests/default/Sv3usmtraps @@ -0,0 +1,162 @@ +#!/bin/sh +# +# SNMPv3 dynamic trap config +# +# Input variables: +# NOTIFYTYPE trap|inform +# TRAPSESS yes|no +# DYNTRAP yes|no +# + +SKIPIFNOT NETSNMP_SECMOD_USM + +## Defaults +[ "x$NOTIFYTYPE" = "x" ] && NOTIFYTYPE="trap" +[ "x$TRAPSESS" = "x" ] && TRAPSESS="yes" +[ "x$DYNTRAP" = "x" ] && DYNTRAP="no" + +case "$NOTIFYTYPE" in + "trap") + notifytype=1 + trapsess_arg="";; + "inform") + notifytype=2 + trapsess_arg="-Ci";; + *) + echo "Error: NOTIFYTYPE = $NOTIFYTYPE is not supported" + return 1;; +esac + +ipv4_2_hex() { + # remove the ':' at the end of the first argument + local host=${1%:} + local port=$2 + + printf "0x" + for i in $(echo "$host" | tr '.' ' '); do + printf "%02x" "$i" + done + printf "%04x\\n" "$port" +} + +ipv6_2_hex() { + # remove the ':' at the end of the first argument + local host=${1%:} + local port=$2 + + printf "0x" + if echo "$host" | grep -q ::; then + no_of_colons=$(echo "$host" | tr -d -c ':' | awk '{ print length }') + case $no_of_colons in + 7) host=$(echo "$host" | sed 's/::/:0:/') ;; + 6) host=$(echo "$host" | sed 's/::/:0:0:/') ;; + 5) host=$(echo "$host" | sed 's/::/:0:0:0:/') ;; + 4) host=$(echo "$host" | sed 's/::/:0:0:0:0:/') ;; + esac + fi + for i in $(echo "$host" | tr ':' ' '); do + printf "%04x" "${i:-0}" + done + printf "%04x\\n" "$port" +} + +settmib() { + CAPTURE "snmpset -t 3 -r 0 -d $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT SNMP-TARGET-MIB::$1 $2 $3" +} + +setnmib() { + CAPTURE "snmpset -t 3 -r 0 -d $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT SNMP-NOTIFICATION-MIB::$1 $2 $3" +} + +dyntrap_config() { + if [ "$SNMP_TRANSPORT_SPEC" = "udp" ]; then + tdomain="SNMPv2-TM::snmpUDPDomain" + targetaddr=$(ipv4_2_hex "$SNMP_TEST_DEST" "$SNMP_SNMPTRAPD_PORT") + elif [ "$SNMP_TRANSPORT_SPEC" = "udp6" ]; then + tdomain="SNMPv2-SMI::mib-2.100.1.2" + targetaddr=$(ipv6_2_hex "$SNMP_TEST_DEST" "$SNMP_SNMPTRAPD_PORT") + else + tdomain="NA" + targetaddr="NA" + fi + + obj="'dynamictrap'" + link=dynamictrap + + settmib "snmpTargetParamsRowStatus.$obj" = 5 + settmib "snmpTargetParamsStorageType.$obj" = 3 # nonVolatile + settmib "snmpTargetParamsMPModel.$obj" = 3 # USM + settmib "snmpTargetParamsSecurityModel.$obj" = 3 # USM + settmib "snmpTargetParamsSecurityName.$obj" = "$TESTAUTHUSER" + settmib "snmpTargetParamsSecurityLevel.$obj" = 2 # authNoPriv + + # snmpNotify + setnmib "snmpNotifyRowStatus.$obj" = 5 + setnmib "snmpNotifyTag.$obj" = "$link" + setnmib "snmpNotifyType.$obj" = "$notifytype" + setnmib "snmpNotifyStorageType.$obj" = 3 + + # snmpTargetAddr + settmib "snmpTargetAddrRowStatus.$obj" = 5 + settmib "snmpTargetAddrTimeout.$obj" = 1000 + settmib "snmpTargetAddrRetryCount.$obj" = 5 + settmib "snmpTargetAddrTagList.$obj" = "$link" + settmib "snmpTargetAddrParams.$obj" = "$link" + settmib "snmpTargetAddrStorageType.$obj" = 3 + settmib "snmpTargetAddrTDomain.$obj" = "$tdomain" + settmib "snmpTargetAddrTAddress.$obj" x "$targetaddr" + + # enable the trap + settmib "snmpTargetAddrRowStatus.$obj" = 1 + settmib "snmpTargetParamsRowStatus.$obj" = 1 + setnmib "snmpNotifyRowStatus.$obj" = 1 + + if [ "$SNMP_VERBOSE" -gt 0 ]; then + for table in SNMP-TARGET-MIB::snmpTargetAddrTable \ + SNMP-TARGET-MIB::snmpTargetParamsTable \ + SNMP-NOTIFICATION-MIB::snmpNotifyTable; do + CAPTURE "snmpwalk -v 3 -r 2 -t 10 $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT ${table}" + done + fi +} + + +## common SNMPv3 USM config +CREATEUSERENGINEID=0x80001f88802b3d0e1111111111 +. ./Sv3usmconfigbase + +CONFIGTRAPD "[snmp]" persistentDir "$SNMP_TMP_PERSISTENTDIR" +CONFIGTRAPD oldEngineID "$CREATEUSERENGINEID" +CONFIGTRAPD "$CREATEAUTHUSER" +CONFIGTRAPD authUser log $TESTAUTHUSER + +STARTTRAPD + +CONFIGAGENT "[snmp]" persistentdir "$SNMP_TMP_PERSISTENTDIR" +CONFIGAGENT oldEngineID "$CREATEUSERENGINEID" +CONFIGAGENT "$CREATEAUTHUSER" +CONFIGAGENT rwuser "$TESTAUTHUSER" auth + +if [ "x$TRAPSESS" = "xyes" ]; then + CONFIGAGENT trapsess $trapsess_arg -e $CREATEUSERENGINEID $TESTAUTHARGS \ + "${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT}" +fi + +#AGENT_FLAGS="$AGENT_FLAGS -Dtrap -Dsend_notifications -DsnmpTargetAddrEntry -Dtarget_sessions -DsnmpNotifyTable_data" +STARTAGENT + +[ "x$DYNTRAP" = "xyes" ] && dyntrap_config + +CAPTURE "snmpset -On -t 3 -r 0 -d $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1" + +STOPAGENT + +STOPTRAPD + +NO_OF_TRAPS=0 +[ "x$TRAPSESS" = "xyes" ] && NO_OF_TRAPS=$((NO_OF_TRAPS+1)) +[ "x$DYNTRAP" = "xyes" ] && NO_OF_TRAPS=$((NO_OF_TRAPS+1)) + +CHECKTRAPDCOUNT $NO_OF_TRAPS "life the universe and everything" + +FINISHED diff --git a/testing/fulltests/default/T031snmpv3dynamicinform_simple b/testing/fulltests/default/T031snmpv3dynamicinform_simple new file mode 100644 index 000000000000..dbff2e67c3fe --- /dev/null +++ b/testing/fulltests/default/T031snmpv3dynamicinform_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 dynamic informs are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE=inform +TRAPSESS=no +DYNTRAP=yes + +# +# Begin test +# + +. ./Sv3usmtraps diff --git a/testing/fulltests/default/T031snmpv3dynamictrap_simple b/testing/fulltests/default/T031snmpv3dynamictrap_simple new file mode 100644 index 000000000000..1991e53701fa --- /dev/null +++ b/testing/fulltests/default/T031snmpv3dynamictrap_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 dynamic traps are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE="trap" +TRAPSESS="no" +DYNTRAP="yes" + +# +# Begin test +# + +. ./Sv3usmtraps diff --git a/testing/fulltests/default/T031snmpv3inform_simple b/testing/fulltests/default/T031snmpv3inform_simple new file mode 100644 index 000000000000..4e0306372384 --- /dev/null +++ b/testing/fulltests/default/T031snmpv3inform_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 dynamic and static informs are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE=inform +TRAPSESS=yes +DYNTRAP=yes + +# +# Begin test +# + +. ./Sv3usmtraps diff --git a/testing/fulltests/default/T031snmpv3staticinform_simple b/testing/fulltests/default/T031snmpv3staticinform_simple new file mode 100644 index 000000000000..58912d12f26f --- /dev/null +++ b/testing/fulltests/default/T031snmpv3staticinform_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 static informs are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE=inform +TRAPSESS=yes +DYNTRAP=no + +# +# Begin test +# + +. ./Sv3usmtraps diff --git a/testing/fulltests/default/T031snmpv3statictrap_simple b/testing/fulltests/default/T031snmpv3statictrap_simple new file mode 100644 index 000000000000..e8dcb7bdd9f6 --- /dev/null +++ b/testing/fulltests/default/T031snmpv3statictrap_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 static traps are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE="trap" +TRAPSESS="yes" +DYNTRAP="no" + +# +# Begin test +# + +. ./Sv3usmtraps diff --git a/testing/fulltests/default/T031snmpv3trap_simple b/testing/fulltests/default/T031snmpv3trap_simple new file mode 100644 index 000000000000..c1bfd718f0e5 --- /dev/null +++ b/testing/fulltests/default/T031snmpv3trap_simple @@ -0,0 +1,18 @@ +#!/bin/sh + +. ../support/simple_eval_tools.sh + +HEADER "snmpv3 dynamic and static traps are sent by snmpd API" + +SKIPIFNOT NETSNMP_SECMOD_USM +SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE + +NOTIFYTYPE="trap" +TRAPSESS="yes" +DYNTRAP="yes" + +# +# Begin test +# + +. ./Sv3usmtraps -- 2.17.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Net-snmp-coders mailing list Net-snmp-coders@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/net-snmp-coders