#!/bin/sh
#
# snmpd	This shell script takes care of starting and stopping
#	the net-snmp SNMP daemon
#
# chkconfig: - 26 74
# description: snmpd is net-snmp SNMP daemon.

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
#. /etc/sysconfig/network

# Check that networking is up.
#[ ${NETWORKING} = "no" ] && exit 0


RETVAL=0

start() {
        # Start daemons.
        if [ -f /etc/config/network ]; then
            #. /etc/config/network;
            configfile='/etc/config/network'                                                                                                                         
            configfile_secured='/etc/config/network'                                                                                                                 
            # check if the file contains something we don't want                                                                                                     
            if egrep -q -v '^#|^[^ ]*=[^;]*' "$configfile"; then                                                                                                     
                # filter the original to a new file                                                                                                                  
                egrep '^#|^[^ ]*=[^;&]*'  "$configfile" > "$configfile_secured"                                                                                      
                configfile="$configfile_secured"                                                                                                                     
            fi                                                                                                                                                       
            source "$configfile"
            sed -i /trapsink/d /etc/snmp/snmpdv2.conf
            sed -i /trap2sink/d /etc/snmp/snmpdv2.conf
            sed -i /informsink/d /etc/snmp/snmpdv2.conf
            sed -i /trapsink/d /etc/snmp/snmpdv3.conf
            sed -i /trap2sink/d /etc/snmp/snmpdv3.conf
            sed -i /informsink/d /etc/snmp/snmpdv3.conf
            sed -i /trapsink/d /etc/snmp/snmpd_none.conf
            sed -i /trap2sink/d /etc/snmp/snmpd_none.conf
            sed -i /informsink/d /etc/snmp/snmpd_none.conf
            
	    if [ -r /etc/snmp/trapsv1 ]; then
		   ip=$(sed -n '1p' /etc/snmp/trapsv1)
   		       if [ "$ip"  != "" ]; then
		            sed -i '/^trapsink/d' /etc/snmp/snmpdv2.conf
			    sed -i '/^trapsink/d' /etc/snmp/snmpdv3.conf
			    sed -i '/^trapsink/d' /etc/snmp/snmpd_none.conf
				
                            echo "trapsink $ip" >> /etc/snmp/snmpdv2.conf
                            echo "trapsink $ip" >> /etc/snmp/snmpdv3.conf
                            echo "trapsink $ip" >> /etc/snmp/snmpd_none.conf
			    /usr/sbin/snmptrapreconf	
		       fi;	
    
 	    fi;	

	    if [ -r /etc/snmp/trapsv2 ]; then
		   ip=$(sed -n '1p' /etc/snmp/trapsv2)
   		       if [ "$ip"  != "" ]; then
		            sed -i '/^trap2sink/d' /etc/snmp/snmpdv2.conf
			    sed -i '/^trap2sink/d' /etc/snmp/snmpdv3.conf
			    sed -i '/^trap2sink/d' /etc/snmp/snmpd_none.conf
				
                            echo "trap2sink $ip" >> /etc/snmp/snmpdv2.conf
                            echo "trap2sink $ip" >> /etc/snmp/snmpdv3.conf
                            echo "trap2sink $ip" >> /etc/snmp/snmpd_none.conf
                            /usr/sbin/snmptrapreconf
		       fi;	
    
 	    fi;

	    if [ -r /etc/snmp/informs ]; then
		   ip=$(sed -n '1p' /etc/snmp/informs)
   		       if [ "$ip"  != "" ]; then
		            sed -i '/^informsink/d' /etc/snmp/snmpdv2.conf
			    sed -i '/^informsink/d' /etc/snmp/snmpdv3.conf
			    sed -i '/^informsink/d' /etc/snmp/snmpd_none.conf
				
                            echo "informsink $ip" >> /etc/snmp/snmpdv2.conf
                            echo "informsink $ip" >> /etc/snmp/snmpdv3.conf
                            echo "informsink $ip" >> /etc/snmp/snmpd_none.conf
                            
                            /usr/sbin/snmptrapreconf
		       fi;	
    
 	    fi;

	
	      if [ -r /etc/snmp/snmp_enable ]; then
                   if [ -r /etc/snmp/v3 ]; then
                       /usr/sbin/snmpd -c /etc/snmp/snmpdv3.conf -p /var/run/snmpd.pid
                   else
                       /usr/sbin/snmpd -c /etc/snmp/snmpdv2.conf -p /var/run/snmpd.pid
                   fi;
              else
            	    /usr/sbin/snmpd -c /etc/snmp/snmpd_none.conf -p /var/run/snmpd.pid
	      fi
                   RETVAL=$?
                   echo
                   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/snmpd
	               return $RETVAL
	      
        fi;
        return 1
	}

stop() {
        # Stop daemons.
        echo -n "Shutting down snmpd: "
	killall snmpd
	sleep 4
	if [ -r /var/run/snmpd.pid ]
	then
	AGENTPID=`cat /var/run/snmpd.pid`
	kill -SIGKILL $AGENTPID
	fi
	RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/snmpd
	return $RETVAL
}

# See how we were called.
case "$1" in
  start)
	start
        ;;
  stop)
	stop
        ;;
  status)
	status snmpd
	RETVAL=$?
	;;
  restart|reload)
	stop
	start
	RETVAL=$?
	;;
  condrestart)
	if [ -f /var/lock/subsys/snmpd ]; then
	    stop
	    start
	    RETVAL=$?
	fi
	;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL
