ipnat revision 104980
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 104980 2002-10-12 10:31:31Z schweikh $ 578344Sobrien# 678344Sobrien 778344Sobrien# PROVIDE: ipnat 878344Sobrien# REQUIRE: ipfilter mountcritremote 998184Sgordon# BEFORE: DAEMON 1098184Sgordon# KEYWORD: FreeBSD NetBSD 1178344Sobrien 1278344Sobrien. /etc/rc.subr 1378344Sobrien 1478344Sobrienname="ipnat" 1598184Sgordonrcvar=`set_rcvar` 1698184Sgordon 17103019Sgordoncase ${OSTYPE} in 1898184SgordonFreeBSD) 1998184Sgordon IPNATDIR="/sbin" 2098184Sgordon start_precmd="ipnat_precmd" 2198184Sgordon reload_cmd="ipnat_start" 2298184Sgordon ;; 2398184SgordonNetBSD) 2498184Sgordon IPNATDIR="/usr/sbin" 2598184Sgordon config="/etc/ipnat.conf" 2698184Sgordon reload_cmd="/usr/sbin/ipnat -F -C -f ${config}" 2798184Sgordon start_precmd= 2898184Sgordon ;; 2998184Sgordonesac 3098184Sgordon 3178344Sobrienstart_cmd="ipnat_start" 3298184Sgordonstop_cmd="${ipnat_program:-${IPNATDIR}/${name}} -F -C" 3378344Sobrienextra_commands="reload" 3478344Sobrien 3598184Sgordonipnat_precmd() 3678344Sobrien{ 3798184Sgordon # Make sure ipfilter is loaded before continuing 38104980Sschweikh if ! ${SYSCTL} net.inet.ipf.fr_pass >/dev/null 2>&1; then 3998184Sgordon err 'ipnat requires ipfilter be loaded' 4098184Sgordon return 1 4178344Sobrien fi 4298184Sgordon return 0 4378344Sobrien} 4478344Sobrien 4598184Sgordonipnat_start() 4698184Sgordon{ 47103019Sgordon case ${OSTYPE} in 4898184Sgordon FreeBSD) 4998184Sgordon echo -n 'Installing NAT rules ... ' 5098184Sgordon if [ -r "${ipnat_rules}" ]; then 5198184Sgordon ${ipnat_program:-/sbin/ipnat} -CF -f \ 5298184Sgordon "${ipnat_rules}" ${ipnat_flags} 5398184Sgordon else 5498184Sgordon echo -n ' NO IPNAT RULES' 5598184Sgordon fi 5698184Sgordon echo '.' 5798184Sgordon 5898184Sgordon # restore filter/NAT state tables after loading the rules 59104980Sschweikh if checkyesno ipfs_enable; then 6098184Sgordon if [ -r "/var/db/ipf/ipstate.ipf" ]; then 6198184Sgordon echo -n ' ipfs' 6298184Sgordon ${ipfs_program:-/sbin/ipfs} -R ${ipfs_flags} 6398184Sgordon # remove files to avoid reloading old state 6498184Sgordon # after an ungraceful shutdown 6598184Sgordon rm -f /var/db/ipf/ipstate.ipf 6698184Sgordon rm -f /var/db/ipf/ipnat.ipf 6798184Sgordon fi 6898184Sgordon fi 6998184Sgordon ;; 7098184Sgordon NetBSD) 7198184Sgordon if [ ! -f ${config} ]; then 7298184Sgordon return 0 7398184Sgordon fi 7498184Sgordon if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then 7598184Sgordon echo "Enabling ipfilter for NAT." 7698184Sgordon /sbin/ipf -E -Fa 7798184Sgordon fi 7898184Sgordon echo -n "Installing NAT rules ... " 7998184Sgordon /usr/sbin/ipnat -F -f ${config} 8098184Sgordon ;; 8198184Sgordon esac 8298184Sgordon} 8398184Sgordon 8478344Sobrienload_rc_config $name 8578344Sobrienrun_rc_command "$1" 86