xref: /dragonfly/etc/rc.d/pflog (revision 0cfebe3d)
1#!/bin/sh
2#
3# $FreeBSD: src/etc/rc.d/pflog,v 1.2 2004/08/31 14:23:51 mlaier Exp $
4# $DragonFly: src/etc/rc.d/pflog,v 1.6 2008/02/21 22:42:10 hasso Exp $
5#
6
7# PROVIDE: pflog
8# REQUIRE: root mountcritlocal netif
9# BEFORE:  DAEMON LOGIN
10# KEYWORD: nojail
11
12. /etc/rc.subr
13
14name="pflog"
15rcvar=`set_rcvar`
16load_rc_config $name
17stop_precmd="test -x ${pflog_program}"
18start_precmd="pflog_prestart"
19start_cmd="pflog_start"
20stop_cmd="pflog_stop"
21resync_precmd="$stop_precmd"
22resync_cmd="pflog_resync"
23status_precmd="$stop_precmd"
24status_cmd="pflog_status"
25extra_commands="resync status"
26
27pflog_prestart()
28{
29	# load pflog kernel module if needed
30	if ! kldstat -q -m "pflog"; then
31		if kldload pf; then
32			info 'pflog module loaded.'
33		else
34			err 1 'pflog module failed to load.'
35		fi
36	fi
37
38	# set pflog0 interface to up state
39	if ! ifconfig pflog0 up; then
40		warn 'pflog: COULD NOT SET UP pflog0'
41	fi
42
43	# check for pflogd binary
44	if [ ! -x "${pflog_program:-/sbin/pflogd}" ]
45	then
46		warn 'pflog: NO PFLOGD BINARY FOUND'
47		return 1
48	fi
49}
50
51pflog_start()
52{
53	echo -n "Enabling pflogd"
54	if ! ${pflog_program:-/sbin/pflogd} ${pflog_flags} \
55	    -f ${pflog_logfile:-/var/log/pflog}; then
56		echo " failed!"
57	else
58		echo "."
59	fi
60}
61
62pflog_stop()
63{
64	if [ -r /var/run/pflogd.pid ]; then
65		echo "Stopping pflogd."
66		kill `cat /var/run/pflogd.pid`
67	fi
68}
69
70pflog_resync()
71{
72	if [ -r /var/run/pflogd.pid ]; then
73		kill -SIGHUP `cat /var/run/pflogd.pid`
74	fi
75}
76
77pflog_status()
78{
79	if [ -r /var/run/pflogd.pid ]; then
80		ps -p `cat /var/run/pflogd.pid` | tail -n 1
81	else
82		echo 'pflogd not running.'
83	fi
84}
85
86run_rc_command "$1"
87