#! /bin/sh
### BEGIN INIT INFO
# Provides:           snmpd snmptrapd
# Required-Start:     $network $local_fs
# Required-Stop:      $network $local_fs
# Default-Start:      2 3 4 5
# Default-Stop:       0 6
# Short-Description:  SNMP agents
# Description:        NET SNMP (Simple Network Management Protocol) Agents
### END INIT INFO
#
# Author:    Jochen Friedrich <jochen@scram.de>
#

export PATH=/sbin:/usr/sbin:/bin:/usr/bin

test -x /usr/sbin/snmpd || exit 0
test -x /usr/sbin/snmptrapd || exit 0

# Defaults
export MIBDIRS=/usr/share/snmp/mibs
SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid 127.0.0.1'
TRAPDRUN=no
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'

# Reads config file (will override defaults above)
[ -r /etc/default/snmpd ] && . /etc/default/snmpd

ssd_oknodo="-o"

# Cd to / before starting any daemons.
cd /

# Create compatibility link to old AgentX socket location
if [ "$SNMPDCOMPAT" = "yes" ]; then
  ln -sf /var/agentx/master /var/run/agentx
fi

start() {
    if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then
        printf "Starting SNMP daemon: "
        start-stop-daemon -q -S -x /usr/sbin/snmpd -- $SNMPDOPTS
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi

    if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then
        printf "Starting SNMP trap daemon: "
        start-stop-daemon -q -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi
}

stop() {
    if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then
        printf "Stopping SNMP daemon: "
        start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmpd
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi

    if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then
        printf "Stopping SNMP trap daemon: "
        start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmptrapd
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi
}

reload() {
    if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then
        printf "Reloading SNMP daemon: "
        start-stop-daemon -q -K -s 1 -p /var/run/snmpd.pid -x /usr/sbin/snmpd
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi

    if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then
        printf "Reloading SNMP trap daemon: "
        start-stop-daemon -q -K -s 1 -p /var/run/snmptrapd.pid -x /usr/sbin/snmptrapd
        [ $? = 0 ] && echo "OK" || echo "FAIL"
    fi
}

case "$1" in
    start)
        start
        ;;

    stop)
        stop
        ;;

    restart)
        stop
        # Allow the daemons time to exit completely.
        sleep 2
        start
        ;;

    reload|force-reload)
        reload
        ;;

    *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload}"
        exit 1
esac

exit 0
