#!/bin/sh
# Version 00.00.01
# script fuer CTI  :
# Netzwerk IP pruefen
# wegen dhcp und Switch bootet zu lange, <Erklaerung noch schreibern>

# eigentlich starten nach Link is up/Cable plug in

SCRIPTNAME=`basename "$0"`

IPCHECKSTATE=1

start()
{
	logger -s "$SCRIPTNAME : DHCP IP Check "

	while [ $IPCHECKSTATE -gt 0 ]
#	wlan, eth operstate
	do
		CurrentIP=`ip addr show |grep "inet " |grep -v 127.0.0. |head -1|cut -d" " -f6|cut -d/ -f1`
		# wenn existent und lesbar
		if [ -r /sys/class/net/eth0 ]; then
			CurrentOperstate=`cat /sys/class/net/eth0/operstate`
			if [ "$CurrentOperstate" = "up" ] ; then
				if [ -z "$CurrentIP" ] ; then
					logger -s "$SCRIPTNAME [ETH0] Missing IP -> Restart Network if's "
					killall udhcpc
					ifdown -a
					ifup -a
				else
#debug					echo -en "---- $(date) ---- IP:  $CurrentIP , state: $CurrentOperstate\n"
					sleep 30
				fi
#debug 			else 				echo -en "if eth0 not up! Cable disconnected? -> ignore \n"
			fi
		fi 	# Ende Pruefung LAN
		if [ -r /sys/class/net/wlan0 ]; then
				CurrentOperstate=`cat /sys/class/net/wlan0/operstate`
				if [ "$CurrentOperstate" = "up" ] ; then
					if [ -z "$CurrentIP" ] ; then
						logger -s "$SCRIPTNAME [WLAN0] Missing IP -> Restart Network if's "
						ifdown -a
						ifup -a
					else
#debug					echo -en "---- $(date) ---- IP:  $CurrentIP , state: $CurrentOperstate\n"
						sleep 30
					fi
				fi
		fi 	# Ende Pruefung WLAN
# Pruefung alle 5 minuten
		sleep 300
	done
}
#-------------
stop()
{
	IPCHECKSTATE=0
}
#-------------
restart()
{
	stop
	start
}
#====================
# main case ...
#====================
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
	;;
  *)
	echo "Usage: $0 {start | stop | restart }"
	exit 1
esac

exit $?

