ipfw revision 104980
1#!/bin/sh
2#
3# $FreeBSD: head/etc/rc.d/ipfw 104980 2002-10-12 10:31:31Z schweikh $
4#
5
6# PROVIDE: ipfw
7# REQUIRE: ppp-user
8# BEFORE: NETWORKING
9# KEYWORD: FreeBSD
10
11. /etc/rc.subr
12
13name="ipfw"
14rcvar="firewall_enable"
15start_cmd="ipfw_start"
16start_precmd="ipfw_precmd"
17stop_cmd="${SYSCTL_W} net.inet.ip.fw.enable=0"
18
19ipfw_precmd()
20{
21	if ! ${SYSCTL} net.inet.ip.fw.enable > /dev/null 2>&1; then
22		if ! kldload ipfw; then
23			warn unable to load firewall module.
24			return 1
25		fi
26	fi
27
28	return 0
29}
30
31ipfw_start()
32{
33	# set the firewall rules script if none was specified
34	[ -z "${firewall_script}" ] && firewall_script=/etc/rc.firewall
35
36	if [ -r "${firewall_script}" ]; then
37		. "${firewall_script}"
38		echo -n 'Firewall rules loaded, starting divert daemons:'
39
40		# Network Address Translation daemon
41		#
42		if checkyesno natd_enable; then
43			if [ -n "${natd_interface}" ]; then
44				if echo ${natd_interface} | \
45				grep -q -E '^[0-9]+(\.[0-9]+){0,3}$'; then
46					natd_flags="$natd_flags -a ${natd_interface}"
47				else
48					natd_flags="$natd_flags -n ${natd_interface}"
49				fi
50				echo -n ' natd'
51				${natd_program:-/sbin/natd} ${natd_flags} ${natd_ifarg}
52			fi
53		fi
54	elif [ "`ipfw l 65535`" = "65535 deny ip from any to any" ]; then
55		echo 'Warning: kernel has firewall functionality, but' \
56		    ' firewall rules are not enabled.'
57		echo '           All ip services are disabled.'
58	fi
59	echo '.'
60
61	# Firewall logging
62	#
63	! checkyesno firewall_logging && return 0
64
65	echo 'Firewall logging=YES'
66	sysctl net.inet.ip.fw.verbose=1 >/dev/null
67}
68
69load_rc_config $name
70run_rc_command "$1"
71