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