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