ipnat revision 121964
1156952Sume#!/bin/sh
2156952Sume#
3156952Sume# $NetBSD: ipnat,v 1.6 2000/09/19 13:04:38 lukem Exp $
4156952Sume# $FreeBSD: head/etc/rc.d/ipnat 121964 2003-11-03 17:03:01Z mux $
5156952Sume#
6156952Sume
7156952Sume# PROVIDE: ipnat
8156952Sume# REQUIRE: ipfilter
9156952Sume# BEFORE:  DAEMON netif
10156952Sume# KEYWORD: FreeBSD NetBSD
11156952Sume
12156952Sume. /etc/rc.subr
13156952Sume
14156952Sumename="ipnat"
15156952Sumercvar=`set_rcvar`
16156952Sumeload_rc_config $name
17156952Sume
18156952Sumecase ${OSTYPE} in
19156952SumeNetBSD)
20156952Sume	ipnat_flags=
21156952Sume	ipnat_rules="/etc/ipnat.conf"
22156952Sume	ipnat_program="/usr/sbin/ipnat"
23156952Sume	;;
24156952Sumeesac
25156952Sume
26156952Sumestart_precmd="ipnat_precmd"
27156952Sumestart_cmd="ipnat_start"
28156952Sumestop_cmd="${ipnat_program} -F -C"
29156952Sumereload_cmd="${ipnat_program} -F -C -f ${ipnat_rules}"
30156952Sumeextra_commands="reload"
31156952Sume
32156952Sumeipnat_precmd()
33156952Sume{
34156952Sume	case ${OSTYPE} in
35156952Sume	NetBSD)
36156952Sume		if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then
37156952Sume			echo "Enabling ipfilter for NAT."
38156952Sume			/sbin/ipf -E -Fa
39156952Sume		fi
40156952Sume		return 0
41156952Sume		;;
42156952Sume	esac
43156952Sume
44156952Sume	# Make sure ipfilter is loaded before continuing
45156952Sume	if ! ${SYSCTL} net.inet.ipf.fr_pass >/dev/null 2>&1; then
46156952Sume		if kldload ipl; then
47156952Sume			info 'IP-filter module loaded.'
48156952Sume		else
49170244Sume			err 1 'IP-filter module failed to load.'
50156952Sume		fi
51156956Sume	fi
52156956Sume	return 0
53156952Sume}
54156952Sume
55156952Sumeipnat_start()
56156956Sume{
57156952Sume	if [ ! -f ${ipnat_rules} ]; then
58156952Sume		warn 'NO IPNAT RULES'
59156952Sume		return 0
60156952Sume	fi
61156952Sume	echo "Installing NAT rules."
62156952Sume	${ipnat_program} -CF -f ${ipnat_rules} ${ipnat_flags}
63156952Sume}
64156952Sume
65156952Sumerun_rc_command "$1"
66156952Sume