sysctl revision 181070
145096Simp#!/bin/sh
245096Simp#
350472Speter# $FreeBSD: head/etc/rc.d/sysctl 181070 2008-07-31 21:57:35Z jhb $
466830Sobrien#
564446Schris
6100280Sgordon# PROVIDE: sysctl
7113959Smtm# REQUIRE: root
8100280Sgordon# BEFORE:  DAEMON
966830Sobrien
10100280Sgordon. /etc/rc.subr
1192516Sdougb
12100280Sgordonname="sysctl"
13100280Sgordonstop_cmd=":"
14124625Smtmstart_cmd="sysctl_start"
15124625Smtmreload_cmd="sysctl_start"
16124625Smtmlastload_cmd="sysctl_start last"
17124622Smtmextra_commands="reload lastload"
18100280Sgordon
19181070Sjhb#
20181070Sjhb# Read in a file containing sysctl settings and set things accordingly.
21181070Sjhb#
22181070Sjhbparse_file()
23100280Sgordon{
24181070Sjhb	if [ -f $1 ]; then
25100280Sgordon		while read var comments
26100280Sgordon		do
27100280Sgordon			case ${var} in
28100280Sgordon			\#*|'')
29100280Sgordon				;;
30100280Sgordon			*)
31100280Sgordon				mib=${var%=*}
32100280Sgordon				val=${var#*=}
33100280Sgordon
34100280Sgordon				if current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then
35100280Sgordon					case ${current_value} in
36100280Sgordon					${val})
37100280Sgordon						;;
38100280Sgordon					*)
39181070Sjhb						sysctl "${var}"
40100280Sgordon						;;
41100280Sgordon					esac
42181070Sjhb				elif [ "$2" = "last" ]; then
43105968Sfenner					warn "sysctl ${mib} does not exist."
44100280Sgordon				fi
45100280Sgordon				;;
46100280Sgordon			esac
47181070Sjhb		done < $1
48100280Sgordon	fi
49100280Sgordon}
50100280Sgordon
51181070Sjhbsysctl_start()
52181070Sjhb{
53181070Sjhb
54181070Sjhb	parse_file /etc/sysctl.conf $1
55181070Sjhb	parse_file /etc/sysctl.conf.local $1
56181070Sjhb}
57181070Sjhb
58100280Sgordonload_rc_config $name
59100280Sgordonrun_rc_command "$1"
60