xref: /dragonfly/etc/rc.d/sysctl (revision ce0833857e05eba4d13f3fd8a4d049ea68c5ffa4)
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: FILESYSTEMS
9# REQUIRE: modules
10# BEFORE:  NETWORKING
11
12. /etc/rc.subr
13
14name="sysctl"
15required_files="/etc/sysctl.conf"
16stop_cmd=":"
17start_cmd="sysctl_start"
18reload_cmd="sysctl_start"
19lastload_cmd="sysctl_start last"
20extra_commands="reload lastload"
21
22sysctl_start()
23{
24          local config extra mib val old_val output
25
26          if [ ! -f "/etc/sysctl.conf" ]; then
27                    return
28          fi
29
30          # NOTE: Do not miss the last line when it does not end with a LF.
31          while read config extra || [ -n "${config}" ]; do
32                    case ${config} in
33                    \#*|'')
34                              continue
35                              ;;
36                    *[^=]=[^=]*)
37                              mib=${config%=*}
38                              val=${config#*=}
39                              ;;
40                    *)
41                              warn "invalid syntax: ${config}"
42                              continue
43                              ;;
44                    esac
45
46                    if old_val=$(${SYSCTL_N} -q ${mib}); then
47                              debug "sysctl '${mib}': '${old_val}' -> '${val}'"
48                              if [ "${old_val}" != "${val}" ]; then
49                                        output=$(${SYSCTL_W} ${mib}=${val})
50                                        echo ${output}
51                              fi
52                    elif [ "$1" = "last" ]; then
53                              warn "sysctl '${mib}' does not exist."
54                    fi
55          done < /etc/sysctl.conf
56}
57
58load_rc_config $name
59run_rc_command "$1"
60