#!/bin/sh # # $NetBSD: ipnat,v 1.6 2000/09/19 13:04:38 lukem Exp $ # $FreeBSD: src/etc/rc.d/ipnat,v 1.8 2003/04/30 02:54:17 mtm Exp $ # $DragonFly: src/etc/rc.d/ipnat,v 1.1 2003/07/24 06:35:37 dillon Exp $ # # PROVIDE: ipnat # REQUIRE: ipfilter # BEFORE: DAEMON netif # KEYWORD: DragonFly FreeBSD NetBSD . /etc/rc.subr name="ipnat" rcvar=`set_rcvar` load_rc_config $name case ${OSTYPE} in NetBSD) ipnat_flags= ipnat_rules="/etc/ipnat.conf" ipnat_program="/usr/sbin/ipnat" ;; esac start_precmd="ipnat_precmd" start_cmd="ipnat_start" stop_cmd="${ipnat_program} -F -C" reload_cmd="${ipnat_program} -F -C -f ${ipnat_rules}" extra_commands="reload" ipnat_precmd() { case ${OSTYPE} in NetBSD) if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then echo "Enabling ipfilter for NAT." /sbin/ipf -E -Fa fi return 0 ;; esac # Make sure ipfilter is loaded before continuing if ! ${SYSCTL} net.inet.ipf.fr_pass >/dev/null 2>&1; then if kldload ipl; then info 'IP-filter module loaded.' else err 1 'IP-filter module failed to load.' fi fi return 0 } ipnat_start() { if [ ! -f ${ipnat_rules} ]; then warn 'NO IPNAT RULES' return 0 fi echo -n "Installing NAT rules." ${ipnat_program} -CF -f ${ipnat_rules} ${ipnat_flags} } run_rc_command "$1"