#!/bin/sh # # $NetBSD: sysctl,v 1.12 2002/04/29 12:10:23 lukem Exp $ # $FreeBSD: src/etc/rc.d/sysctl,v 1.12 2003/04/24 08:20:47 mtm Exp $ # # PROVIDE: sysctl # REQUIRE: root modules # BEFORE: DAEMON . /etc/rc.subr name="sysctl" required_files="/etc/sysctl.conf" stop_cmd=":" start_cmd="sysctl_start" reload_cmd="sysctl_start" lastload_cmd="sysctl_start last" extra_commands="reload lastload" sysctl_start() { local config extra mib val old_val output if [ ! -f "/etc/sysctl.conf" ]; then return fi # NOTE: Do not miss the last line when it does not end with a LF. while read config extra || [ -n "${config}" ]; do case ${config} in \#*|'') continue ;; *[^=]=[^=]*) mib=${config%=*} val=${config#*=} ;; *) warn "invalid syntax: ${config}" continue ;; esac if old_val=$(${SYSCTL_N} -q ${mib}); then debug "sysctl '${mib}': '${old_val}' -> '${val}'" if [ "${old_val}" != "${val}" ]; then output=$(${SYSCTL_W} ${mib}=${val}) echo ${output} fi elif [ "$1" = "last" ]; then warn "sysctl '${mib}' does not exist." fi done < /etc/sysctl.conf } load_rc_config $name run_rc_command "$1"