blob: 6a1fb495c47d2d14f96348ce2853a1efdc525fb5 [file] [log] [blame] [raw]
#!/bin/sh
#
# chkconfig: 2345 26 74
# description: ipfilter
# processname: ipfilter
# config: /etc/sysconfig/ipfilter
CONFIG=/etc/sysconfig/ipfilter
LOGPRI=user.info
IPFCONF=/etc/ipf.conf
IPNATCONF=/etc/ipnat.conf
IPPOOLCONF=/etc/ippool.conf
# Source function library.
. /etc/rc.status
if [ ! -f /etc/ipf.conf -a ! -f /etc/ipnat.conf ] ; then
exit 0
fi
rc_reset
rc=0
logit() {
if [ $1 -ne 0 ] ; then
logger -t $2 -p $LOGPRI "$3"
fi
}
start() {
modprobe ipfilter
rc=$?
if [ ${rc} -ne 0 ] ; then
rc_status -v
exit $rc
fi
echo -n $"Starting IPFilter: "
minor=0
ipfdev=`awk ' /ipf/ { print $1; } ' /proc/devices`
for i in ipl ipnat ipstate ipauth ipsync ipscan iplookup; do
/bin/rm -f /dev/$i
mknod /dev/$i c $ipfdev $minor
minor=`expr $minor + 1`
done
/sbin/ipf -E
if [ -f $IPFCONF ] ; then
msg=`/sbin/ipf -f $IPFCONF 2>&1`
rc=$?
logit $rc ipf "$msg"
fi
if [ $rc -eq 0 -a -f $IPNATCONF ] ; then
msg=`/sbin/ipnat -f $IPNATCONF 2>&1`
rc=$?
logit $rc ipnat "$msg"
fi
if [ $rc -eq 0 -a -f $IPPOOLCONF ] ; then
msg=`/sbin/ippool -f $IPPOOLCONF 2>&1`
rc=$?
logit $rc ippool "$msg"
fi
if [ $rc -eq 0 ] ; then
/usr/bin/ipmon -Das
rc=$?
fi
rc_status -v
return $rc
}
stop() {
echo -n $"Shutting down IPFilter: "
killproc ipmon
rc=$?
[ $rc -eq 0 ] && /sbin/modprobe -r ipfilter 2>&1 >/dev/null
rc_status -v
}
dostatus() {
# status ipmon
rc=$?
}
restart() {
stop
start
rc=$?
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
dostatus
;;
restart|reload)
restart
;;
*)
echo "Usage: ipfilter {start|stop|status|restart|reload}"
rc=1
esac
rc_status -v
exit $?