1#!/bin/sh
2#
3# $FreeBSD$
4#
5
6# PROVIDE: sysctl
7
8. /etc/rc.subr
9
10name="sysctl"
11stop_cmd=":"
12start_cmd="sysctl_start"
13reload_cmd="sysctl_start"
14lastload_cmd="sysctl_start last"
15extra_commands="reload lastload"
16
17#
18# Read in a file containing sysctl settings and set things accordingly.
19#
20parse_file()
21{
22	if [ -f $1 ]; then
23		while read var comments
24		do
25			case ${var} in
26			\#*|'')
27				;;
28			*)
29				mib=${var%%=*}
30				val=${var#*=}
31
32				if current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then
33					case ${current_value} in
34					${val})
35						;;
36					*)
37						if ! sysctl "${var}" >/dev/null 2>&1; then
38							warn "unable to set ${var}"
39						fi
40						;;
41					esac
42				elif [ "$2" = "last" ]; then
43					warn "sysctl ${mib} does not exist."
44				fi
45				;;
46			esac
47		done < $1
48	fi
49}
50
51sysctl_start()
52{
53
54	parse_file /etc/sysctl.conf $1
55	parse_file /etc/sysctl.conf.local $1
56}
57
58load_rc_config $name
59run_rc_command "$1"
60