diff options
Diffstat (limited to 'etc/rc.d/sysctl')
-rw-r--r-- | etc/rc.d/sysctl | 119 |
1 files changed, 64 insertions, 55 deletions
diff --git a/etc/rc.d/sysctl b/etc/rc.d/sysctl index 1e315f2..c478828 100644 --- a/etc/rc.d/sysctl +++ b/etc/rc.d/sysctl @@ -1,61 +1,70 @@ #!/bin/sh # -# Copyright (c) 1999 Warner Losh -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# +# $NetBSD: sysctl,v 1.12 2002/04/29 12:10:23 lukem Exp $ # $FreeBSD$ # -# -# Read in /etc/sysctl.conf and set things accordingly -# +# PROVIDE: sysctl +# REQUIRE: root ipfilter ipsec +# BEFORE: DAEMON +# KEYWORD: FreeBSD NetBSD + +. /etc/rc.subr + +name="sysctl" +stop_cmd=":" + +case `${CMD_OSTYPE}` in +FreeBSD) + start_cmd="FreeBSD_start" + extra_commands="reload lastload" + reload_cmd="FreeBSD_start" + lastload_cmd="FreeBSD_start last" + ;; +NetBSD) + start_cmd="NetBSD_start" + ;; +esac + +FreeBSD_start() +{ + # + # Read in /etc/sysctl.conf and set things accordingly + # + if [ -f /etc/sysctl.conf ]; then + while read var comments + do + case ${var} in + \#*|'') + ;; + *) + mib=${var%=*} + val=${var#*=} + + if current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then + case ${current_value} in + ${val}) + ;; + *) + sysctl ${var} + ;; + esac + elif [ "$1" -eq "last" ]; then + warn "sysctl ${mib} does not exits." + fi + ;; + esac + done < /etc/sysctl.conf + fi +} + +NetBSD_start() +{ + if [ -r /etc/sysctl.conf ]; then + echo "Setting sysctl variables:" + ${SYSCTL} -f /etc/sysctl.conf + fi +} -if [ -f /etc/sysctl.conf ]; then - while read var comments - do - case ${var} in - \#*|'') - ;; - *) - mib=${var%=*} - val=${var#*=} - - if current_value=`sysctl -n ${mib} 2>/dev/null`; then - case ${current_value} in - ${val}) ;; - *) - sysctl ${var} - ;; - esac - else - case ${1} in - last) - echo "Warning: sysctl ${mib} does not exist" - ;; - esac - fi - ;; - esac - done < /etc/sysctl.conf -fi +load_rc_config $name +run_rc_command "$1" |