FreeNAS Code
This project has moved to github - see https://github.com/freenas
Brought to you by:
cochard,
mattolander
#!/bin/sh # # $FreeBSD: src/etc/rc.d/sysctl,v 1.16.2.2 2008/01/28 08:22:33 dougb Exp $ # # Modified by Volker Theile (votdev@gmx.de) # # PROVIDE: sysctl # REQUIRE: root # BEFORE: DAEMON . /etc/rc.subr . /etc/configxml.subr name="sysctl" stop_cmd=":" start_precmd="create_conf" start_cmd="sysctl_start" reload_cmd="sysctl_start" lastload_cmd="sysctl_start last" extra_commands="reload lastload" # Defaults sysctl_config=${sysctl_config:-"/etc/sysctl.conf"} create_conf() { # Clear /etc/sysctl.conf cat /dev/null > ${sysctl_config} # Generate /etc/sysctl.conf /usr/local/bin/xml sel -t -m "//system/sysctl/param" \ -i "string-length(comment) > 0" \ -v "concat('# ',comment)" -n \ -b \ -v "concat(name,'=',value)" -n \ ${configxml_file} | /usr/local/bin/xml unesc >> ${sysctl_config} } sysctl_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}) ;; *) /sbin/sysctl "${var}" ;; esac elif [ "$1" = "last" ]; then warn "sysctl ${mib} does not exist." fi ;; esac done < /etc/sysctl.conf fi } load_rc_config $name run_rc_command "$1"