X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=arpwatch.init;h=f50694b7f3471a1adc38729b8fba3e30eef9de8f;hb=17f908a36abad8fca286c573179342e00d0cf6e8;hp=763efdd4ac74e4a31d64a349b09aef6f05d86682;hpb=893060119830bd6e2ea7c834c1e05d80ceab1f5b;p=packages%2Farpwatch.git diff --git a/arpwatch.init b/arpwatch.init index 763efdd..f50694b 100644 --- a/arpwatch.init +++ b/arpwatch.init @@ -1,10 +1,9 @@ #!/bin/sh # -# chkconfig: 345 55 45 +# chkconfig: 345 55 45 # description: The arpwatch daemon attempts to keep track of ethernet/ip \ # address pairings. -# processname: arpwatch - +# processname: arpwatch # Source function library . /etc/rc.d/init.d/functions @@ -12,16 +11,33 @@ # Get network config . /etc/sysconfig/network +# Initial values +GLOBAL_OPTIONS="" + # Get service config [ -f /etc/sysconfig/arpwatch ] && . /etc/sysconfig/arpwatch # Check that networking is up. -if [ "${NETWORKING}" = "no" ]; then - msg_Network_Down "arpwatch" - exit 1 +if is_yes "${NETWORKING}"; then + if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then + msg_network_down "arpwatch" + exit 1 + fi +else + exit 0 fi +if is_yes "${NO_BOGON}"; then + GLOBAL_OPTIONS="$GLOBAL_OPTIONS -N" +else + if [ -n "${LOCAL_NETWORKS}" ]; then + for i in ${LOCAL_NETWORKS}; do + GLOBAL_OPTIONS="$GLOBAL_OPTIONS -n $i" + done + fi +fi +RETVAL=0 # See how we were called. case "$1" in start) @@ -32,15 +48,26 @@ case "$1" in | egrep '^[^ ].*' |egrep -v "NOARP|LOOPBACK" \ |sed 's/[0-9]*: \([a-zA-Z0-9]*\)[@:].*/\1/'|xargs`" fi + [ ! -z "$NETWORKS" ] && NETWORKS="-n $NETWORKS" for IFC in $INTERFACES; do - msg_starting "arpwatch" + msg_starting "arpwatch ($IFC)" touch /var/lib/arpwatch/$IFC.dat - daemon arpwatch -i $IFC -f /var/lib/arpwatch/$IFC.dat + chown 2:2 /var/lib/arpwatch/$IFC.dat + OPTIONS="$GLOBAL_OPTIONS" + if ! is_yes "${NO_BOGON}"; then + eval IF_LOCAL_NETWORKS=\$${IFC}_LOCAL_NETWORKS + if [ -n "${IF_LOCAL_NETWORKS}" ]; then + for i in ${IF_LOCAL_NETWORKS}; do + OPTIONS="$OPTIONS -n $i" + done + fi + fi + daemon arpwatch $NETWORKS -i $IFC -f /var/lib/arpwatch/$IFC.dat -u daemon $OPTIONS RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/arpwatch done else - msg_Already_Running "arpwatch" + msg_already_running "arpwatch" fi ;; stop) @@ -49,20 +76,21 @@ case "$1" in killproc arpwatch rm -f /var/lock/subsys/arpwatch >/dev/null 2>&1 else - msg_Not_Running "arpwatch" - exit 1 - fi + msg_not_running "arpwatch" + fi ;; status) status arpwatch + exit $? ;; - restart|reload) + restart|force-reload) $0 stop $0 start + exit $? ;; *) - msg_Usage "$0 {start|stop|status|restart|reload}" - exit 1 + msg_usage "$0 {start|stop|restart|force-reload|status}" + exit 3 esac exit $RETVAL