| #!/bin/sh | 
 | # | 
 | # Major device number definition from /dev/MAKEDEV: | 
 | C_IPL=79	# IP packet filtering device | 
 | # | 
 | PATH=/sbin:/usr/etc:/usr/sbin:${PATH} | 
 | if [ -r /var/sysgen/boot/ipflkm.o ]; then | 
 | 	ipflkm=true | 
 | else | 
 | 	ipflkm=false | 
 | fi | 
 | id=`ml list | grep ipl | awk ' { print $2; } ' -` | 
 | pid=`ps -e | grep ipmon | awk ' { print $1 } ' -` | 
 |  | 
 | IPFILCONF=/etc/ipf.conf | 
 | IPNATCONF=/etc/ipnat.conf | 
 |  | 
 | case "$1" in | 
 | 	start) | 
 | 		if [ x$pid != x ] ; then | 
 | 			kill -TERM $pid | 
 | 		fi | 
 | 		if [ x$id != x ] ; then | 
 | 			/sbin/ml unld $id | 
 | 		fi | 
 | 		if ${ipflkm}; then | 
 | 			/sbin/ml ld -v -c /var/sysgen/boot/ipflkm.o -p ipl -s $C_IPL | 
 | 		fi | 
 | 		(cd /dev && rm -f ipf ipl ipnat ipstate ipauth) | 
 | 		(cd /dev && rm -f ipsync ipscan iplookup) | 
 | 		mknod /dev/ipf c $C_IPL 0 | 
 | 		mknod /dev/ipl c $C_IPL 0 | 
 | 		mknod /dev/ipnat c $C_IPL 1 | 
 | 		mknod /dev/ipstate c $C_IPL 2 | 
 | 		mknod /dev/ipauth c $C_IPL 3 | 
 | 		mknod /dev/ipsync c $C_IPL 4 | 
 | 		mknod /dev/ipscan c $C_IPL 5 | 
 | 		mknod /dev/iplookup c $C_IPL 7 | 
 | 		(cd /dev && chmod 600 ipf ipl ipnat ipstate ipauth) | 
 | 		(cd /dev && chmod 600 ipsync ipscan iplookup) | 
 | 		ipf -E | 
 | 		[ -r ${IPFILCONF} ] && ipf -Fa -f ${IPFILCONF} | 
 | 		[ -r ${IPNATCONF} ] && ipnat -CF -f ${IPNATCONF} | 
 | 		ipmon -sn </dev/null >/dev/null 2>&1 & | 
 | 		;; | 
 |  | 
 | 	stop) | 
 | 		if [ "x$pid" != "x" ] ; then | 
 | 			kill -TERM $pid | 
 | 		fi | 
 | 		if ${ipflkm}; then | 
 | 			if [ x$id != x ] ; then | 
 | 			    /sbin/ml unld $id && \ | 
 | 				(cd /dev && rm -f ipf ipl ipnat ipstate ipauth) | 
 | 				(cd /dev && rm -f ipsync ipscan iplookup) | 
 | 			fi | 
 | 		else | 
 | 			ipf -D | 
 | 		fi | 
 | 		;; | 
 |  | 
 | 	reload) | 
 | 		if [ -r ${IPFILCONF} ]; then | 
 | 			ipf -I -Fa -f ${IPFILCONF} | 
 | 			if [ $? != 0 ]; then | 
 | 				echo "$0: reload of ${IPFILCONF} into alternate set failed" | 
 | 			else | 
 | 				ipf -s | 
 | 			fi | 
 | 		fi | 
 | 		if [ -r ${IPNATCONF} ]; then | 
 | 			ipnat -CF -f ${IPNATCONF} | 
 | 			if [ $? != 0 ]; then | 
 | 				echo "$0: reload of ${IPNATCONF} failed" | 
 | 			fi | 
 | 		fi | 
 | 		;; | 
 |  | 
 | 	*) | 
 | 		echo "Usage: $0 (start|stop|reload)" >&2 | 
 | 		exit 1 | 
 | 		;; | 
 |  | 
 | esac | 
 | exit 0 |