xref: /dflybsd-src/etc/rc.d/sysctl (revision 925dae71dffcc17c2a71c6e2b51aabfd05c37d80)
1#!/bin/sh
2#
3# $NetBSD: sysctl,v 1.12 2002/04/29 12:10:23 lukem Exp $
4# $FreeBSD: src/etc/rc.d/sysctl,v 1.12 2003/04/24 08:20:47 mtm Exp $
5#
6
7# PROVIDE: sysctl
8# REQUIRE: root modules
9# BEFORE:  DAEMON
10
11. /etc/rc.subr
12
13name="sysctl"
14required_files="/etc/sysctl.conf"
15stop_cmd=":"
16start_cmd="sysctl_start"
17reload_cmd="sysctl_start"
18lastload_cmd="sysctl_start last"
19extra_commands="reload lastload"
20
21sysctl_start()
22{
23	local config extra mib val old_val
24
25	if [ ! -f "/etc/sysctl.conf" ]; then
26		return
27	fi
28
29	# NOTE: Do not miss the last line when it does not end with a LF.
30	while read config extra || [ -n "${config}" ]; do
31		case ${config} in
32		\#*|'')
33			continue
34			;;
35		*[^=]=[^=]*)
36			mib=${config%=*}
37			val=${config#*=}
38			;;
39		*)
40			warn "invalid syntax: ${config}"
41			continue
42			;;
43		esac
44
45		if old_val=$(${SYSCTL_N} -q ${mib}); then
46			debug "sysctl '${mib}': '${old_val}' -> '${val}'"
47			if [ "${old_val}" != "${val}" ]; then
48				${SYSCTL_W} ${mib}=${val}
49			fi
50		elif [ "$1" = "last" ]; then
51			warn "sysctl '${mib}' does not exist."
52		fi
53	done < /etc/sysctl.conf
54}
55
56load_rc_config $name
57run_rc_command "$1"
58