add chaos_calmer branch
[15.05/openwrt.git] / package / base-files / files / etc / rc.common
1 #!/bin/sh
2 # Copyright (C) 2006-2012 OpenWrt.org
3
4 . $IPKG_INSTROOT/lib/functions.sh
5 . $IPKG_INSTROOT/lib/functions/service.sh
6
7 initscript=$1
8 action=${2:-help}
9 shift 2
10
11 start() {
12         return 0
13 }
14
15 stop() {
16         return 0
17 }
18
19 reload() {
20         return 1
21 }
22
23 restart() {
24         trap '' TERM
25         stop "$@"
26         start "$@"
27 }
28
29 boot() {
30         start "$@"
31 }
32
33 shutdown() {
34         stop
35 }
36
37 disable() {
38         name="$(basename "${initscript}")"
39         rm -f "$IPKG_INSTROOT"/etc/rc.d/S??$name
40         rm -f "$IPKG_INSTROOT"/etc/rc.d/K??$name
41 }
42
43 enable() {
44         name="$(basename "${initscript}")"
45         disable
46         [ -n "$START" -o -n "$STOP" ] || {
47                 echo "/etc/init.d/$name does not have a START or STOP value"
48                 return 1
49         }
50         [ "$START" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}"
51         [ "$STOP"  ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}"
52 }
53
54 enabled() {
55         name="$(basename "${initscript}")"
56         [ -x "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" ]
57 }
58
59 depends() {
60         return 0
61 }
62
63 help() {
64         cat <<EOF
65 Syntax: $initscript [command]
66
67 Available commands:
68         start   Start the service
69         stop    Stop the service
70         restart Restart the service
71         reload  Reload configuration files (or restart if that fails)
72         enable  Enable service autostart
73         disable Disable service autostart
74 $EXTRA_HELP
75 EOF
76 }
77
78 # for procd
79 start_service() {
80         return 0
81 }
82
83 stop_service() {
84         return 0
85 }
86
87 service_triggers() {
88         return 0
89 }
90
91 service_running() {
92         return 0
93 }
94
95 ${INIT_TRACE:+set -x}
96
97 . "$initscript"
98
99 [ -n "$USE_PROCD" ] && {
100         EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
101
102         . $IPKG_INSTROOT/lib/functions/procd.sh
103         basescript=$(readlink "$initscript")
104         rc_procd() {
105                 procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
106                 "$@"
107                 procd_close_service
108         }
109
110         start() {
111                 rc_procd start_service "$@"
112                 if eval "type service_started" 2>/dev/null >/dev/null; then
113                         service_started
114                 fi
115         }
116
117         trace() {
118                 TRACE_SYSCALLS=1
119                 start "$@"
120         }
121
122         stop() {
123                 stop_service "$@"
124                 procd_kill "$(basename ${basescript:-$initscript})" "$1"
125         }
126
127         reload() {
128                 if eval "type reload_service" 2>/dev/null >/dev/null; then
129                         reload_service "$@"
130                 else
131                         start
132                 fi
133         }
134
135         running() {
136                 service_running "$@"
137         }
138 }
139
140 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
141 list_contains ALL_COMMANDS "$action" || action=help
142 [ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'
143 $action "$@"