ipnat revision 113959
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $NetBSD: ipnat,v 1.6 2000/09/19 13:04:38 lukem Exp $
498184Sgordon# $FreeBSD: head/etc/rc.d/ipnat 113959 2003-04-24 08:20:47Z mtm $
578344Sobrien#
678344Sobrien
778344Sobrien# PROVIDE: ipnat
8113959Smtm# REQUIRE: ipfilter
9113959Smtm# BEFORE:  DAEMON netif
1098184Sgordon# KEYWORD: FreeBSD NetBSD
1178344Sobrien
1278344Sobrien. /etc/rc.subr
1378344Sobrien
1478344Sobrienname="ipnat"
1598184Sgordonrcvar=`set_rcvar`
16113959Smtmload_rc_config $name
1798184Sgordon
18103019Sgordoncase ${OSTYPE} in
1998184SgordonNetBSD)
20113959Smtm	ipnat_flags=
21113959Smtm	ipnat_rules="/etc/ipnat.conf"
22113959Smtm	ipnat_program="/usr/sbin/ipnat"
2398184Sgordon	;;
2498184Sgordonesac
2598184Sgordon
26113959Smtmstart_precmd="ipnat_precmd"
2778344Sobrienstart_cmd="ipnat_start"
28113959Smtmstop_cmd="${ipnat_program} -F -C"
29113959Smtmreload_cmd="${ipnat_program} -F -C -f ${ipnat_rules}"
3078344Sobrienextra_commands="reload"
3178344Sobrien
3298184Sgordonipnat_precmd()
3378344Sobrien{
34113959Smtm	case ${OSTYPE} in
35113959Smtm	NetBSD)
36113959Smtm		if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then	
37113959Smtm			echo "Enabling ipfilter for NAT."
38113959Smtm			/sbin/ipf -E -Fa
39113959Smtm		fi
40113959Smtm		return 0
41113959Smtm		;;
42113959Smtm	esac
43113959Smtm
4498184Sgordon	# Make sure ipfilter is loaded before continuing
45104980Sschweikh	if ! ${SYSCTL} net.inet.ipf.fr_pass >/dev/null 2>&1; then
46113959Smtm		if kldload ipl; then
47113959Smtm			echo 'IP-filter module loaded.'
48113959Smtm		else
49113959Smtm			err 1 'IP-filter module failed to load.'
50113959Smtm		fi
5178344Sobrien	fi
5298184Sgordon	return 0
5378344Sobrien}
5478344Sobrien
5598184Sgordonipnat_start()
5698184Sgordon{
57113959Smtm	if [ ! -f ${ipnat_rules} ]; then
58113959Smtm		echo -n ' NO IPNAT RULES'
59113959Smtm		return 0
60113959Smtm	fi
61113959Smtm	echo -n "Installing NAT rules ... "
62113959Smtm	/usr/sbin/ipnat -CF -f ${ipnat_rules} ${ipnat_flags}
6398184Sgordon}
6498184Sgordon
6578344Sobrienrun_rc_command "$1"
66