]>
Commit | Line | Data |
---|---|---|
064af421 BP |
1 | #! /bin/sh |
2 | # | |
87530bc1 | 3 | # Copyright (C) 2011, 2012, 2016 Nicira, Inc. |
064af421 | 4 | # |
43bb5f82 BP |
5 | # Licensed under the Apache License, Version 2.0 (the "License"); |
6 | # you may not use this file except in compliance with the License. | |
7 | # You may obtain a copy of the License at: | |
064af421 | 8 | # |
43bb5f82 BP |
9 | # http://www.apache.org/licenses/LICENSE-2.0 |
10 | # | |
11 | # Unless required by applicable law or agreed to in writing, software | |
12 | # distributed under the License is distributed on an "AS IS" BASIS, | |
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | # See the License for the specific language governing permissions and | |
15 | # limitations under the License. | |
064af421 BP |
16 | # |
17 | ### BEGIN INIT INFO | |
18 | # Provides: openvswitch-switch | |
19 | # Required-Start: $network $named $remote_fs $syslog | |
9b094b09 | 20 | # Required-Stop: $remote_fs |
064af421 BP |
21 | # Default-Start: 2 3 4 5 |
22 | # Default-Stop: 0 1 6 | |
23 | # Short-Description: Open vSwitch switch | |
1db6b185 TG |
24 | # Description: openvswitch-switch provides the userspace components and utilities for |
25 | # the Open vSwitch kernel-based switch. | |
064af421 BP |
26 | ### END INIT INFO |
27 | ||
733a287e | 28 | (test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0 |
f3ac83df | 29 | |
873d8565 GS |
30 | _SYSTEMCTL_SKIP_REDIRECT=yes |
31 | ||
d422c118 | 32 | . /usr/share/openvswitch/scripts/ovs-lib |
43bb5f82 | 33 | test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch |
78a04c9f | 34 | |
1d63efc4 GS |
35 | network_interfaces () { |
36 | INTERFACES="/etc/network/interfaces" | |
37 | [ -e "${INTERFACES}" ] || return | |
2e601425 | 38 | bridges=`ifquery --allow ovs --list` |
1d63efc4 GS |
39 | [ -n "${bridges}" ] && $1 --allow=ovs ${bridges} |
40 | } | |
41 | ||
64624b3c SH |
42 | load_kmod () { |
43 | ovs_ctl load-kmod || exit $? | |
44 | } | |
45 | ||
5ae616d6 | 46 | start () { |
64624b3c SH |
47 | if ovs_ctl load-kmod; then |
48 | : | |
49 | else | |
50 | echo "Module has probably not been built for this kernel." | |
51 | if ! test -d /usr/share/doc/openvswitch-datapath-source; then | |
52 | echo "Install the openvswitch-datapath-source package, then read" | |
53 | else | |
54 | echo "For instructions, read" | |
55 | fi | |
56 | echo "/usr/share/doc/openvswitch-datapath-source/README.Debian" | |
8a5b3cfd BP |
57 | |
58 | if test X"$OVS_MISSING_KMOD_OK" = Xyes; then | |
59 | # We're being invoked by the package postinst. Do not | |
60 | # fail package installation just because the kernel module | |
61 | # is not available. | |
62 | exit 0 | |
63 | fi | |
64624b3c | 64 | fi |
9fc47ed7 | 65 | set ovs_ctl ${1-start} --system-id=random |
5ae616d6 BP |
66 | if test X"$FORCE_COREFILES" != X; then |
67 | set "$@" --force-corefiles="$FORCE_COREFILES" | |
68 | fi | |
f4d458c5 | 69 | set "$@" $OVS_CTL_OPTS |
b3a375f2 | 70 | "$@" || exit $? |
81e3044c GS |
71 | if [ "$2" = "start" ] && [ "$READ_INTERFACES" != "no" ]; then |
72 | network_interfaces ifup | |
73 | fi | |
5ae616d6 BP |
74 | } |
75 | ||
76 | stop () { | |
81e3044c | 77 | [ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown |
9fc47ed7 | 78 | ovs_ctl stop |
5ae616d6 BP |
79 | } |
80 | ||
aad12c5f | 81 | restart () { |
19cbf2b8 GS |
82 | # OVS_FORCE_RELOAD_KMOD can be set by package postinst script. |
83 | if [ "$1" = "--save-flows=yes" ] || \ | |
84 | [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then | |
aad12c5f | 85 | start restart |
19cbf2b8 GS |
86 | elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then |
87 | depmod -a | |
88 | ||
89 | if [ -e /sys/module/openvswitch ]; then | |
51386ba3 GS |
90 | LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion \ |
91 | 2>/dev/null` | |
92 | LOADED_VERSION=`cat /sys/module/openvswitch/version \ | |
93 | 2>/dev/null` | |
19cbf2b8 GS |
94 | fi |
95 | SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null` | |
96 | VERSION=`modinfo -F version openvswitch 2>/dev/null` | |
97 | ||
98 | ovs_ctl_log "Package upgrading:\n"\ | |
99 | "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\ | |
100 | "Version on disk: ${VERSION} ${SRCVERSION}." | |
101 | ||
102 | # If the kernel module was previously loaded and it is different than | |
103 | # the kernel module on disk, then do a 'force-reload-kmod'. | |
104 | if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \ | |
105 | [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then | |
106 | start force-reload-kmod | |
107 | else | |
108 | start restart | |
109 | fi | |
aad12c5f | 110 | else |
81e3044c GS |
111 | READ_INTERFACES="no" stop |
112 | READ_INTERFACES="no" start | |
aad12c5f GS |
113 | fi |
114 | } | |
115 | ||
5ae616d6 BP |
116 | case $1 in |
117 | start) | |
118 | start | |
119 | ;; | |
43bb5f82 | 120 | stop | force-stop) |
5ae616d6 | 121 | stop |
064af421 | 122 | ;; |
43bb5f82 BP |
123 | reload | force-reload) |
124 | # The OVS daemons keep up-to-date. | |
f20bbd7a | 125 | ;; |
064af421 | 126 | restart) |
aad12c5f GS |
127 | shift |
128 | restart "$@" | |
f20bbd7a | 129 | ;; |
064af421 | 130 | status) |
9fc47ed7 | 131 | ovs_ctl status |
5e0c05bc | 132 | exit $? |
064af421 | 133 | ;; |
5ae616d6 BP |
134 | force-reload-kmod) |
135 | start force-reload-kmod | |
136 | ;; | |
64624b3c SH |
137 | load-kmod) |
138 | load_kmod | |
139 | ;; | |
064af421 | 140 | *) |
64624b3c | 141 | echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2 |
f20bbd7a JP |
142 | exit 1 |
143 | ;; | |
064af421 BP |
144 | esac |
145 | ||
146 | exit 0 |