#!/bin/sh

# Testing this script is possible by running e.g. the following commands:
# srcdir=/z/software/net-snmp/trunk builddir=/z/software/net-snmp/trunk-mingw
# cd $builddir/testing
# TRAPD_FLAGS="-Dsnmptrapd -Drun:shell" $srcdir/testing/fulltests/support/simple_run $srcdir/testing/fulltests/default/T059trapdtraphandle_simple

# "inline" trap handler
if [ "x$1" = "xtraphandle" ]; then
  cat - >>"$2"
  exit 0
fi

. ../support/simple_eval_tools.sh

TRAPHANDLE_LOGFILE=${SNMP_TMPDIR}/traphandle.log

HEADER snmptrapd traphandle: launching external shell script

SKIPIF NETSNMP_DISABLE_SNMPV2C
SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE

#
# Begin test
#

snmp_version=v2c
TESTCOMMUNITY=testcommunity

# Make the paths of arguments $0 and $1 absolute.
NETSNMPDIR="`pwd`"
NETSNMPDIR="`dirname ${NETSNMPDIR}`"
NETSNMPDIR="`dirname ${NETSNMPDIR}`"
NETSNMPDIR="`dirname ${NETSNMPDIR}`"
if [ "`echo $1|cut -c1`" = "/" ]; then
  traphandle_arg="$1"
else
  traphandle_arg="${NETSNMPDIR}/$1"
fi

CONFIGTRAPD [snmp] persistentDir $SNMP_TMP_PERSISTENTDIR
CONFIGTRAPD [snmp] tempFilePattern /tmp/snmpd-tmp-XXXXXX
CONFIGTRAPD authcommunity execute $TESTCOMMUNITY
CONFIGTRAPD doNotLogTraps true
if [ "x$OSTYPE" = "xmsys" ]; then
    CONFIGTRAPD traphandle default $MSYS_SH -c "'" $traphandle_arg traphandle $TRAPHANDLE_LOGFILE "'"
else
    CONFIGTRAPD traphandle default $traphandle_arg traphandle $TRAPHANDLE_LOGFILE
fi
CONFIGTRAPD agentxsocket /dev/null

STARTTRAPD

## 1) test notification handler

CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s handled_inform_$snmp_version"
DELAY
CHECKORDIE "handled_inform_$snmp_version" $TRAPHANDLE_LOGFILE 

## 2) persistency: reconfigure (SIGHUP), re-test

HUPTRAPD
CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s handled_inform2_$snmp_version"
DELAY
CHECKORDIE "handled_inform2_$snmp_version" $TRAPHANDLE_LOGFILE

## stop
STOPTRAPD

FINISHED
