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