]>
Commit | Line | Data |
---|---|---|
064af421 BP |
1 | #!/bin/bash |
2 | # | |
3 | # vswitch | |
4 | # | |
5 | # chkconfig: 2345 09 91 | |
6 | # description: Manage vswitch kernel modules and user-space daemon | |
7 | ||
0b1fae1b | 8 | # Copyright (C) 2009, 2010 Nicira Networks, Inc. |
064af421 | 9 | # |
a14bc59f BP |
10 | # Licensed under the Apache License, Version 2.0 (the "License"); |
11 | # you may not use this file except in compliance with the License. | |
12 | # You may obtain a copy of the License at: | |
064af421 | 13 | # |
a14bc59f | 14 | # http://www.apache.org/licenses/LICENSE-2.0 |
064af421 | 15 | # |
a14bc59f BP |
16 | # Unless required by applicable law or agreed to in writing, software |
17 | # distributed under the License is distributed on an "AS IS" BASIS, | |
18 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
19 | # See the License for the specific language governing permissions and | |
20 | # limitations under the License. | |
064af421 BP |
21 | |
22 | . /etc/init.d/functions | |
23 | ||
24 | test -e /etc/sysconfig/vswitch && . /etc/sysconfig/vswitch | |
25 | ||
26 | # General config variables in /etc/sysconfig/vswitch | |
df9fd4a5 BP |
27 | : ${ENABLE_BRCOMPAT:=y} |
28 | : ${ENABLE_FAKE_PROC_NET:=y} | |
f3ac83df | 29 | : ${ENABLE_MONITOR:=y} |
df9fd4a5 | 30 | : ${FORCE_COREFILES:=y} |
064af421 | 31 | |
fea28b07 | 32 | # Config variables specific to ovsdb-server |
0b1fae1b | 33 | : ${OVSDB_SERVER_REMOTES:=punix:/var/run/ovsdb-server db:Open_vSwitch,managers} |
fea28b07 JP |
34 | : ${OVSDB_SERVER_DB:=/etc/ovs-vswitchd.conf.db} |
35 | : ${OVSDB_SERVER_PIDFILE:=/var/run/ovsdb-server.pid} | |
36 | : ${OVSDB_SERVER_RUN_DIR:=/var/xen/vswitch} | |
37 | : ${OVSDB_SERVER_PRIORITY:=-10} | |
38 | : ${OVSDB_SERVER_LOGFILE:=/var/log/ovsdb-server.log} | |
39 | : ${OVSDB_SERVER_FILE_LOGLEVEL:=INFO} | |
40 | : ${OVSDB_SERVER_SYSLOG_LOGLEVEL:=ERR} | |
41 | : ${OVSDB_SERVER_MEMLEAK_LOGFILE:=} | |
42 | : ${OVSDB_SERVER_STRACE_LOG:=} | |
43 | : ${OVSDB_SERVER_STRACE_OPT:=} | |
44 | : ${OVSDB_SERVER_VALGRIND_LOG:=} | |
45 | : ${OVSDB_SERVER_VALGRIND_OPT:=} | |
46 | ||
064af421 | 47 | # Config variables specific to ovs-vswitchd |
fea28b07 | 48 | : ${VSWITCHD_OVSDB_SERVER:=unix:/var/run/ovsdb-server} |
f78b38e9 | 49 | : ${VSWITCHD_OVSDB_SCHEMA:=/usr/share/vswitch/vswitch.ovsschema} |
df9fd4a5 BP |
50 | : ${VSWITCHD_PIDFILE:=/var/run/ovs-vswitchd.pid} |
51 | : ${VSWITCHD_RUN_DIR:=/var/xen/vswitch} | |
44cb492f | 52 | : ${VSWITCHD_PRIORITY:=-10} |
a0bc29a5 | 53 | : ${VSWITCHD_MLOCKALL:=yes} |
df9fd4a5 | 54 | : ${VSWITCHD_LOGFILE:=/var/log/ovs-vswitchd.log} |
39fb0881 JP |
55 | : ${VSWITCHD_FILE_LOGLEVEL:=INFO} |
56 | : ${VSWITCHD_SYSLOG_LOGLEVEL:=ERR} | |
df9fd4a5 BP |
57 | : ${VSWITCHD_MEMLEAK_LOGFILE:=} |
58 | : ${VSWITCHD_STRACE_LOG:=} | |
59 | : ${VSWITCHD_STRACE_OPT:=} | |
60 | : ${VSWITCHD_VALGRIND_LOG:=} | |
61 | : ${VSWITCHD_VALGRIND_OPT:=} | |
064af421 BP |
62 | |
63 | # Config variables specific to ovs-brcompatd | |
df9fd4a5 BP |
64 | : ${BRCOMPATD_PIDFILE:=/var/run/ovs-brcompatd.pid} |
65 | : ${BRCOMPATD_RUN_DIR:=/var/xen/vswitch} | |
44cb492f | 66 | : ${BRCOMPATD_PRIORITY:=-10} |
df9fd4a5 | 67 | : ${BRCOMPATD_LOGFILE:=/var/log/ovs-brcompatd.log} |
39fb0881 JP |
68 | : ${BRCOMPATD_FILE_LOGLEVEL:=INFO} |
69 | : ${BRCOMPATD_SYSLOG_LOGLEVEL:=ERR} | |
df9fd4a5 BP |
70 | : ${BRCOMPATD_MEMLEAK_LOGFILE:=} |
71 | : ${BRCOMPATD_STRACE_LOG:=} | |
72 | : ${BRCOMPATD_STRACE_OPT:=} | |
73 | : ${BRCOMPATD_VALGRIND_LOG:=} | |
74 | : ${BRCOMPATD_VALGRIND_OPT:=} | |
064af421 BP |
75 | |
76 | # Full paths to executables & modules | |
fea28b07 JP |
77 | ovsdb_server="/usr/sbin/ovsdb-server" |
78 | ovsdb_tool="/usr/bin/ovsdb-tool" | |
eaa3c7e8 BP |
79 | vswitchd="/usr/sbin/ovs-vswitchd" |
80 | brcompatd="/usr/sbin/ovs-brcompatd" | |
81 | dpctl="/usr/bin/ovs-dpctl" | |
82 | appctl="/usr/bin/ovs-appctl" | |
83 | ofctl="/usr/bin/ovs-ofctl" | |
e404c41f | 84 | vsctl="/usr/bin/ovs-vsctl" |
064af421 | 85 | |
612f6d49 | 86 | if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then |
064af421 BP |
87 | if [ "$ENABLE_BRCOMPAT" != "y" ]; then |
88 | warning "FAKE_PROC_NET required BRCOMPAT which was disabled. Force enabling." | |
89 | ENABLE_BRCOMPAT="y" | |
90 | fi | |
91 | fi | |
92 | ||
f3ac83df BP |
93 | if test "$ENABLE_MONITOR" = "y"; then |
94 | monitor_opt="--monitor" | |
95 | else | |
96 | monitor_opt= | |
97 | fi | |
98 | ||
064af421 BP |
99 | function dp_list { |
100 | "$dpctl" show | grep '^dp[0-9]\+:' | cut -d':' -f 1 | |
101 | } | |
102 | ||
103 | function turn_on_corefiles { | |
16cd277e | 104 | ulimit -Sc 67108864 |
064af421 BP |
105 | } |
106 | ||
107 | function remove_all_dp { | |
108 | for dp in $(dp_list); do | |
109 | action "Removing datapath: $dp" "$dpctl" del-dp "$dp" | |
110 | done | |
111 | } | |
112 | ||
113 | function insert_modules_if_required { | |
114 | if ! lsmod | grep -q "openvswitch_mod"; then | |
115 | action "Inserting llc module" modprobe llc | |
6867bc36 | 116 | action "Inserting openvswitch module" modprobe openvswitch_mod |
064af421 BP |
117 | fi |
118 | if [ -n "$BRCOMPATD_PIDFILE" ] && ! lsmod | grep -q "brcompat_mod"; then | |
6867bc36 | 119 | action "Inserting brcompat module" modprobe brcompat_mod |
064af421 | 120 | fi |
c3e3d2a1 JG |
121 | if [ -f "/lib/modules/`uname -r`/kernel/net/vswitch/ip_gre_mod.ko" ] && ! lsmod | grep -q "ip_gre_mod"; then |
122 | action "Inserting ip_gre module" modprobe ip_gre_mod | |
123 | fi | |
064af421 BP |
124 | } |
125 | ||
126 | function remove_modules { | |
127 | if lsmod | grep -q "brcompat_mod"; then | |
128 | action "Removing brcompat module" rmmod brcompat_mod.ko | |
129 | fi | |
130 | if lsmod | grep -q "openvswitch_mod"; then | |
131 | action "Removing openvswitch module" rmmod openvswitch_mod.ko | |
132 | fi | |
5c8ef29c JP |
133 | if lsmod | grep -q "ip_gre_mod"; then |
134 | action "Removing ip_gre module" rmmod ip_gre_mod.ko | |
135 | fi | |
064af421 BP |
136 | } |
137 | ||
fea28b07 JP |
138 | function start_ovsdb_server { |
139 | local syslog_opt="-vANY:SYSLOG:${OVSDB_SERVER_SYSLOG_LOGLEVEL}" | |
140 | local logfile_file_opt="" | |
141 | local logfile_level_opt="" | |
142 | if [ ! -d "$OVSDB_SERVER_RUN_DIR" ]; then | |
143 | mkdir -p "$OVSDB_SERVER_RUN_DIR" | |
144 | fi | |
145 | cd "$OVSDB_SERVER_RUN_DIR" | |
0b1fae1b | 146 | local remotes= |
50866f3f BP |
147 | for remote in $OVSDB_SERVER_REMOTES; do |
148 | remotes="$remotes --remote=$remote" | |
0b1fae1b | 149 | done |
fea28b07 JP |
150 | if [ -n "$OVSDB_SERVER_FILE_LOGLEVEL" ]; then |
151 | logfile_level_opt="-vANY:FILE:${OVSDB_SERVER_FILE_LOGLEVEL}" | |
152 | logfile_file_opt="--log-file=$OVSDB_SERVER_LOGFILE" | |
153 | fi | |
154 | local leak_opt="" | |
155 | if [ -n "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then | |
156 | leak_opt="--check-leaks=$OVSDB_SERVER_MEMLEAK_LOGFILE" | |
157 | if [ -e "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then | |
158 | mv "$OVSDB_SERVER_MEMLEAK_LOGFILE" "$OVSDB_SERVER_MEMLEAK_LOGFILE.prev" | |
159 | fi | |
160 | fi | |
161 | local strace_opt="" | |
162 | local daemonize="y" | |
163 | if [ -n "$OVSDB_SERVER_STRACE_LOG" ] && [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then | |
164 | printf "Can not start with both VALGRIND and STRACE\n" | |
165 | exit 1 | |
166 | fi | |
167 | if [ -n "$OVSDB_SERVER_STRACE_LOG" ]; then | |
168 | strace_opt="strace -o $OVSDB_SERVER_STRACE_LOG $OVSDB_SERVER_STRACE_OPT" | |
169 | daemonize="n" | |
170 | fi | |
171 | if [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then | |
172 | valgrind_opt="valgrind --log-file=$OVSDB_SERVER_VALGRIND_LOG $OVSDB_SERVER_VALGRIND_OPT" | |
173 | daemonize="n" | |
174 | fi | |
78876719 | 175 | ssl_opts="--private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert" |
fea28b07 JP |
176 | if [ "$daemonize" != "y" ]; then |
177 | # Start in background and force a "success" message | |
178 | action "Starting ovsdb_server ($strace_opt$valgrind_opt)" true | |
78876719 | 179 | (nice -n "$OVSDB_SERVER_PRIORITY" $strace_opt $valgrind_opt "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts) & |
fea28b07 | 180 | else |
78876719 | 181 | action "Starting ovsdb-server" nice -n "$OVSDB_SERVER_PRIORITY" "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts |
fea28b07 JP |
182 | fi |
183 | } | |
184 | ||
064af421 BP |
185 | function start_vswitchd { |
186 | local syslog_opt="-vANY:SYSLOG:${VSWITCHD_SYSLOG_LOGLEVEL}" | |
187 | local logfile_file_opt="" | |
188 | local logfile_level_opt="" | |
16cd277e JP |
189 | if [ ! -d "$VSWITCHD_RUN_DIR" ]; then |
190 | mkdir -p "$VSWITCHD_RUN_DIR" | |
191 | fi | |
192 | cd "$VSWITCHD_RUN_DIR" | |
064af421 BP |
193 | if [ -n "$VSWITCHD_FILE_LOGLEVEL" ]; then |
194 | logfile_level_opt="-vANY:FILE:${VSWITCHD_FILE_LOGLEVEL}" | |
195 | logfile_file_opt="--log-file=$VSWITCHD_LOGFILE" | |
196 | fi | |
197 | local leak_opt="" | |
198 | if [ -n "$VSWITCHD_MEMLEAK_LOGFILE" ]; then | |
199 | leak_opt="--check-leaks=$VSWITCHD_MEMLEAK_LOGFILE" | |
200 | if [ -e "$VSWITCHD_MEMLEAK_LOGFILE" ]; then | |
201 | mv "$VSWITCHD_MEMLEAK_LOGFILE" "$VSWITCHD_MEMLEAK_LOGFILE.prev" | |
202 | fi | |
203 | fi | |
204 | local strace_opt="" | |
205 | local daemonize="y" | |
206 | if [ -n "$VSWITCHD_STRACE_LOG" ] && [ -n "$VSWITCHD_VALGRIND_LOG" ]; then | |
207 | printf "Can not start with both VALGRIND and STRACE\n" | |
208 | exit 1 | |
209 | fi | |
210 | if [ -n "$VSWITCHD_STRACE_LOG" ]; then | |
211 | strace_opt="strace -o $VSWITCHD_STRACE_LOG $VSWITCHD_STRACE_OPT" | |
212 | daemonize="n" | |
213 | fi | |
214 | if [ -n "$VSWITCHD_VALGRIND_LOG" ]; then | |
215 | valgrind_opt="valgrind --log-file=$VSWITCHD_VALGRIND_LOG $VSWITCHD_VALGRIND_OPT" | |
216 | daemonize="n" | |
217 | fi | |
218 | local fake_proc_net_opt="" | |
612f6d49 | 219 | if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then |
064af421 BP |
220 | fake_proc_net_opt="--fake-proc-net" |
221 | fi | |
86a06318 BP |
222 | if [ "$VSWITCHD_MLOCKALL" != "no" ]; then |
223 | mlockall_opt="--mlockall" | |
224 | fi | |
064af421 BP |
225 | if [ "$daemonize" != "y" ]; then |
226 | # Start in background and force a "success" message | |
227 | action "Starting ovs-vswitchd ($strace_opt$valgrind_opt)" true | |
a0bc29a5 | 228 | (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER") & |
064af421 | 229 | else |
a0bc29a5 | 230 | action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER" |
064af421 BP |
231 | fi |
232 | } | |
233 | ||
234 | function start_brcompatd { | |
235 | local syslog_opt="-vANY:SYSLOG:${BRCOMPATD_SYSLOG_LOGLEVEL}" | |
236 | local logfile_file_opt="" | |
237 | local logfile_level_opt="" | |
16cd277e JP |
238 | if [ -d "$BRCOMPATD_RUN_DIR" ]; then |
239 | mkdir -p "$BRCOMPATD_RUN_DIR" | |
240 | fi | |
241 | cd "$BRCOMPATD_RUN_DIR" | |
d4016a58 | 242 | if [ -n "$BRCOMPATD_FILE_LOGLEVEL" ]; then |
064af421 BP |
243 | logfile_level_opt="-vANY:FILE:${BRCOMPATD_FILE_LOGLEVEL}" |
244 | logfile_file_opt="--log-file=$BRCOMPATD_LOGFILE" | |
245 | fi | |
246 | local leak_opt="" | |
9a2e1953 | 247 | if [ -n "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then |
064af421 BP |
248 | leak_opt="--check-leaks=$BRCOMPATD_MEMLEAK_LOGFILE" |
249 | if [ -e "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then | |
250 | mv "$BRCOMPATD_MEMLEAK_LOGFILE" "$BRCOMPATD_MEMLEAK_LOGFILE.prev" | |
251 | fi | |
252 | fi | |
253 | local strace_opt="" | |
254 | local daemonize="y" | |
255 | if [ -n "$BRCOMPATD_STRACE_LOG" ] && [ -n "$BRCOMPATD_VALGRIND_LOG" ]; then | |
256 | printf "Can not start with both VALGRIND and STRACE\n" | |
257 | exit 1 | |
258 | fi | |
259 | if [ -n "$BRCOMPATD_STRACE_LOG" ]; then | |
260 | strace_opt="strace -o $BRCOMPATD_STRACE_LOG $BRCOMPATD_STRACE_OPT" | |
261 | daemonize="n" | |
262 | fi | |
263 | if [ -n "$VALGRIND_LOG" ]; then | |
264 | valgrind_opt="valgrind --log-file=$BRCOMPATD_VALGRIND_LOG $BRCOMPATD_VALGRIND_OPT" | |
265 | daemonize="n" | |
266 | fi | |
3fbe1d30 | 267 | appctl_cmd="$appctl --target=/var/run/ovs-vswitchd.\`cat $VSWITCHD_PIDFILE\`.ctl %s" |
064af421 BP |
268 | if [ "$daemonize" != "y" ]; then |
269 | # Start in background and force a "success" message | |
270 | action "Starting ovs-brcompatd ($strace_opt$valgrind_opt)" true | |
fea28b07 | 271 | (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd"--no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER") & |
064af421 | 272 | else |
f3ac83df | 273 | action "Starting ovs-brcompatd" nice -n "$BRCOMPATD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd" --no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE --detach $monitor_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER" |
fea28b07 JP |
274 | fi |
275 | } | |
276 | ||
277 | function stop_ovsdb_server { | |
278 | if [ -f "$OVSDB_SERVER_PIDFILE" ]; then | |
279 | local pid=$(cat "$OVSDB_SERVER_PIDFILE") | |
280 | action "Killing ovsdb-server ($pid)" kill -TERM $pid | |
281 | rm -f "$OVSDB_SERVER_PIDFILE" | |
064af421 BP |
282 | fi |
283 | } | |
284 | ||
285 | function stop_vswitchd { | |
286 | if [ -f "$VSWITCHD_PIDFILE" ]; then | |
287 | local pid=$(cat "$VSWITCHD_PIDFILE") | |
288 | action "Killing ovs-vswitchd ($pid)" kill -TERM $pid | |
289 | rm -f "$VSWITCHD_PIDFILE" | |
290 | fi | |
291 | } | |
292 | ||
293 | function stop_brcompatd { | |
294 | if [ -f "$BRCOMPATD_PIDFILE" ]; then | |
295 | local pid=$(cat "$BRCOMPATD_PIDFILE") | |
296 | action "Killing ovs-brcompatd ($pid)" kill -TERM $pid | |
297 | rm -f "$BRCOMPATD_PIDFILE" | |
298 | fi | |
299 | } | |
300 | ||
301 | function restart_approval { | |
302 | if test ! -t 0; then | |
303 | # Don't prompt if invoked non-interactively. | |
304 | return 0 | |
305 | fi | |
306 | cat <<EOF | |
307 | ||
308 | WARNING!!! | |
309 | ||
310 | Restarting vswitch on a live server is not guaranteed to work. It is | |
311 | provided as a convenience for those situations in which it does work. | |
064af421 BP |
312 | |
313 | EOF | |
314 | read -s -r -n 1 -p "Countinue with restart (y/N): " response | |
315 | printf "\n" | |
316 | case "$response" in | |
317 | y|Y) | |
318 | return 0 | |
319 | ;; | |
320 | *) | |
321 | return 1 | |
322 | ;; | |
323 | esac | |
324 | } | |
325 | ||
f5e7ed5d JP |
326 | function set_system_uuid { |
327 | system_uuid=$(. /etc/xensource-inventory && echo $INSTALLATION_UUID) | |
328 | if test -n "$system_uuid"; then | |
329 | action "Configuring Open vSwitch system UUID" true | |
883b1061 | 330 | $vsctl --no-wait set Open_vSwitch . external-ids:system-uuid="$system_uuid" |
f5e7ed5d JP |
331 | else |
332 | action "Configuring Open vSwitch system UUID" false | |
333 | fi | |
334 | } | |
335 | ||
064af421 | 336 | function start { |
ae825abb JP |
337 | if [ "$FORCE_COREFILES" = "y" ]; then |
338 | turn_on_corefiles | |
339 | fi | |
340 | ||
064af421 | 341 | insert_modules_if_required |
63920cb9 JP |
342 | |
343 | # Increase the limit on the number of open file descriptors since | |
344 | # ovs-vswitchd needs a few per bridge | |
345 | ulimit -n 4096 | |
346 | ||
1e50dd6c JG |
347 | # Allow GRE traffic. |
348 | iptables -I INPUT -p gre -j ACCEPT | |
349 | ||
fea28b07 JP |
350 | if [ ! -e "$OVSDB_SERVER_DB" ]; then |
351 | warning "$OVSDB_SERVER_DB does not exist" | |
f72e2b36 JP |
352 | |
353 | action "Creating empty database $OVSDB_SERVER_DB" true | |
ef5e2fe5 | 354 | $ovsdb_tool -vANY:console:emer create "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA" |
23817ac7 BP |
355 | else |
356 | # Upgrade or downgrade schema and compact database. | |
357 | $ovsdb_tool -vANY:console:emer convert "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA" | |
b1bdd85c BP |
358 | fi |
359 | ||
fea28b07 | 360 | start_ovsdb_server |
524555d1 | 361 | $vsctl --no-wait init |
e404c41f BP |
362 | if [ ! -e /var/run/vswitch.booted ]; then |
363 | touch /var/run/vswitch.booted | |
364 | for bridge in $($vsctl list-br); do | |
365 | $vsctl --no-wait del-br $bridge | |
366 | done | |
367 | fi | |
368 | ||
f5e7ed5d JP |
369 | set_system_uuid |
370 | ||
064af421 BP |
371 | start_vswitchd |
372 | start_brcompatd | |
3f2c96d6 | 373 | touch /var/lock/subsys/vswitch |
064af421 BP |
374 | } |
375 | ||
376 | function stop { | |
377 | stop_brcompatd | |
378 | stop_vswitchd | |
fea28b07 | 379 | stop_ovsdb_server |
3f2c96d6 | 380 | rm -f /var/lock/subsys/vswitch |
064af421 BP |
381 | } |
382 | ||
383 | function restart { | |
384 | if restart_approval; then | |
385 | stop | |
386 | start | |
387 | fi | |
388 | } | |
389 | ||
390 | case "$1" in | |
391 | start) | |
064af421 BP |
392 | start |
393 | ;; | |
394 | stop) | |
395 | stop | |
396 | ;; | |
397 | restart) | |
398 | restart | |
399 | ;; | |
064af421 BP |
400 | strace-vswitchd) |
401 | shift | |
402 | strace -p $(cat "$VSWITCHD_PIDFILE") "$@" | |
403 | ;; | |
404 | strace-brcompatd) | |
405 | shift | |
406 | strace -p $(cat "$BRCOMPATD_PIDFILE") "$@" | |
407 | ;; | |
408 | status) | |
a4af0040 | 409 | status -p "$OVSDB_SERVER_PIDFILE" ovsdb-server |
e4bfff8f BP |
410 | status -p "$VSWITCHD_PIDFILE" ovs-vswitchd |
411 | status -p "$BRCOMPATD_PIDFILE" ovs-brcompatd | |
064af421 BP |
412 | ;; |
413 | version) | |
70feacd5 | 414 | /usr/sbin/ovsdb-server -V |
eaa3c7e8 BP |
415 | /usr/sbin/ovs-vswitchd -V |
416 | /usr/sbin/ovs-brcompatd -V | |
064af421 BP |
417 | ;; |
418 | help) | |
f72e2b36 | 419 | printf "vswitch [start|stop|restart|unload|status|version]\n" |
064af421 BP |
420 | ;; |
421 | *) | |
422 | printf "Unknown command: $1\n" | |
423 | exit 1 | |
424 | ;; | |
425 | esac |