#!/bin/bash
#
# chkconfig: - 65 55
# description:  dhcp_probe attempts to discover DHCP and BootP servers on a directly-attached
#		Ethernet network. A network administrator can use this tool to locate
#		unauthorized DHCP and BootP servers.
# processname: dhcp_probe
# pidfile: /var/run/dhcp_probe.pid
# config: /etc/dhcp_probe.cf
### BEGIN INIT INFO
# Provides: dhcp_probe 
# Required-Start: $network 
# Required-Stop: $network 
# Default-Stop: 0 1 2 6 
# Short-Description: start/stop/restart the dhcp_probe daemon 
# Description: dhcp_probe attempts to discover DHCP and BootP servers.
### END INIT INFO

. /etc/init.d/functions

CWD=$(pwd)
cd /etc/sysconfig/network-scripts
. ./network-functions

PIDFILE="/var/run/dhcp_probe.pid"
RETVAL=0
DHCP_PROBE="/usr/sbin/dhcp_probe"
prog=dhcp_probe
lockfile=/var/lock/subsys/$prog
ip="/sbin/ip"

check_down( ){
        if LC_ALL=C $ip -o link show dev $1 2>/dev/null | grep -q "DOWN" ; then
                return 1
        else
                return 0
        fi
}

checkdevices( ){
	INETS=$(nmcli dev |grep eth |cut -d " " -f 1)
	for dev in $INETS
	do
        	check_down $dev
	        rtnvl=$?
		if [ $rtnvl == "0" ]
		then
			let cntdv++
		fi
	done
	if [ -z $cntdv ]
	then
		return 1
	else
		return 0
	fi
}

start() {
	echo -n "Starting $prog: "
	checkdevices
	rtrnch=$?
	if [ $rtrnch == 0 ]
	then
		$DHCP_PROBE ${INETS[0]} >/dev/null
		success
		echo
		RETVAL=0
	else
		failure
		echo
		RETVAL=1
	fi
	[ $RETVAL == 0 ] && touch $lockfile 
	return $RETVAL
}	

stop() {
	echo -n "Shutting down $prog: "
	killproc $DHCP_PROBE
	echo
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f $lockfile

	return $RETVAL
}
restart() {
	if [ -e $PIDFILE ]
	then
		stop
		start
		RETVAL=$?
		else
			echo -n "$prog not running"
			failure
			echo
			RETVAL=$?
	fi
	return $RETVAL
}
reload(){
	if [ -e $PIDFILE ]
	then
	killproc -p $PIDFILE $prog -HUP
	echo
	RETVAL=$?
	else
		echo -n "$prog not running"
		failure
		echo
		RETVAL=$?
	fi
	return $RETVAL
}
status() {
	if [ -e $PIDFILE ]
	then
		echo "$prog running."
		echo "PID: $(cat $PIDFILE)"
	else
		echo "$prog NOT running"
	fi
}
force_reload(){
	restart
}
rh_status(){
	status -p $PIDFILE $prog
}
rh_status_q() {
	rh_status >/dev/null 2>&1
}

case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    status)
	status
	;;
    restart)
	restart
	;;
    reload)
	reload	
	;;
   force-reload)
	force_reload
	;;	
   condrestart|try-restart)
	rh_status_q || exit 0
	restart
	;;
    *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" 
	exit 2
	;;
esac
exit $RETVAL 
