kernel: r8125: disable ASPM
[openwrt/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 restart
21 }
22
23 restart() {
24 trap '' TERM
25 stop "$@"
26 trap - TERM
27 start "$@"
28 }
29
30 boot() {
31 start "$@"
32 }
33
34 shutdown() {
35 stop
36 }
37
38 disable() {
39 name="$(basename "${initscript}")"
40 rm -f "$IPKG_INSTROOT"/etc/rc.d/S??$name
41 rm -f "$IPKG_INSTROOT"/etc/rc.d/K??$name
42 }
43
44 enable() {
45 err=1
46 name="$(basename "${initscript}")"
47 [ "$START" ] && \
48 ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" && \
49 err=0
50 [ "$STOP" ] && \
51 ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" && \
52 err=0
53 return $err
54 }
55
56 enabled() {
57 name="$(basename "${initscript}")"
58 name="${name##[SK][0-9][0-9]}"
59 {
60 [ -z "${START:-}" ] || [ -L "$IPKG_INSTROOT/etc/rc.d/S${START}$name" ]
61 } && {
62 [ -z "${STOP:-}" ] || [ -L "$IPKG_INSTROOT/etc/rc.d/K${STOP}$name" ]
63 }
64 }
65
66 depends() {
67 return 0
68 }
69
70 ALL_HELP=""
71 ALL_COMMANDS="boot shutdown depends"
72 extra_command() {
73 local cmd="$1"
74 local help="$2"
75
76 local extra="$(printf "%-16s%s" "${cmd}" "${help}")"
77 ALL_HELP="${ALL_HELP}\t${extra}\n"
78 ALL_COMMANDS="${ALL_COMMANDS} ${cmd}"
79 }
80
81 help() {
82 cat <<EOF
83 Syntax: $initscript [command]
84
85 Available commands:
86 EOF
87 echo -e "$ALL_HELP"
88 }
89
90 # for procd
91 start_service() {
92 return 0
93 }
94
95 stop_service() {
96 return 0
97 }
98
99 service_triggers() {
100 return 0
101 }
102
103 service_running() {
104 local instance="${1:-*}"
105
106 procd_running "$(basename $initscript)" "$instance"
107 }
108
109 ${INIT_TRACE:+set -x}
110
111 extra_command "start" "Start the service"
112 extra_command "stop" "Stop the service"
113 extra_command "restart" "Restart the service"
114 extra_command "reload" "Reload configuration files (or restart if service does not implement reload)"
115 extra_command "enable" "Enable service autostart"
116 extra_command "disable" "Disable service autostart"
117 extra_command "enabled" "Check if service is started on boot"
118
119 . "$initscript"
120
121 [ -n "$USE_PROCD" ] && {
122 extra_command "running" "Check if service is running"
123 extra_command "status" "Service status"
124 extra_command "trace" "Start with syscall trace"
125 extra_command "info" "Dump procd service info"
126
127 . $IPKG_INSTROOT/lib/functions/procd.sh
128 basescript=$(readlink "$initscript")
129 rc_procd() {
130 local method="set"
131 [ -n "$2" ] && method="add"
132 procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
133 "$@"
134 procd_close_service "$method"
135 }
136
137 start() {
138 rc_procd start_service "$@"
139 if eval "type service_started" 2>/dev/null >/dev/null; then
140 service_started
141 fi
142 }
143
144 trace() {
145 TRACE_SYSCALLS=1
146 start "$@"
147 }
148
149 info() {
150 json_init
151 json_add_string name "$(basename ${basescript:-$initscript})"
152 json_add_boolean verbose "1"
153 _procd_ubus_call list
154 }
155
156 stop() {
157 procd_lock
158 stop_service "$@"
159 procd_kill "$(basename ${basescript:-$initscript})" "$1"
160 if eval "type service_stopped" 2>/dev/null >/dev/null; then
161 service_stopped
162 fi
163 }
164
165 reload() {
166 if eval "type reload_service" 2>/dev/null >/dev/null; then
167 procd_lock
168 reload_service "$@"
169 else
170 start
171 fi
172 }
173
174 running() {
175 service_running "$@"
176 }
177
178 status() {
179 if eval "type status_service" 2>/dev/null >/dev/null; then
180 status_service "$@"
181 else
182 _procd_status "$(basename ${basescript:-$initscript})" "$1"
183 fi
184 }
185 }
186
187 ALL_COMMANDS="${ALL_COMMANDS} ${EXTRA_COMMANDS}"
188 ALL_HELP="${ALL_HELP}${EXTRA_HELP}"
189 list_contains ALL_COMMANDS "$action" || action=help
190 $action "$@"