]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - etc/rc.d/sysctl
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / etc / rc.d / sysctl
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: sysctl
7
8 . /etc/rc.subr
9
10 name="sysctl"
11 stop_cmd=":"
12 start_cmd="sysctl_start"
13 reload_cmd="sysctl_start"
14 lastload_cmd="sysctl_start last"
15 extra_commands="reload lastload"
16
17 #
18 # Read in a file containing sysctl settings and set things accordingly.
19 #
20 parse_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
51 sysctl_start()
52 {
53
54         parse_file /etc/sysctl.conf $1
55         parse_file /etc/sysctl.conf.local $1
56 }
57
58 load_rc_config $name
59 run_rc_command "$1"