]>
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 | 30 | _SYSTEMCTL_SKIP_REDIRECT=yes |
15af3d44 | 31 | SYSTEMCTL_SKIP_REDIRECT=yes |
873d8565 | 32 | |
d422c118 | 33 | . /usr/share/openvswitch/scripts/ovs-lib |
43bb5f82 | 34 | test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch |
78a04c9f | 35 | |
1d63efc4 GS |
36 | network_interfaces () { |
37 | INTERFACES="/etc/network/interfaces" | |
38 | [ -e "${INTERFACES}" ] || return | |
2e601425 | 39 | bridges=`ifquery --allow ovs --list` |
1d63efc4 GS |
40 | [ -n "${bridges}" ] && $1 --allow=ovs ${bridges} |
41 | } | |
42 | ||
64624b3c SH |
43 | load_kmod () { |
44 | ovs_ctl load-kmod || exit $? | |
45 | } | |
46 | ||
5ae616d6 | 47 | start () { |
64624b3c | 48 | if ovs_ctl load-kmod; then |
5a0e4aec | 49 | : |
64624b3c | 50 | else |
5a0e4aec BP |
51 | echo "Module has probably not been built for this kernel." |
52 | if ! test -d /usr/share/doc/openvswitch-datapath-source; then | |
53 | echo "Install the openvswitch-datapath-source package, then read" | |
54 | else | |
64624b3c | 55 | echo "For instructions, read" |
5a0e4aec BP |
56 | fi |
57 | echo "/usr/share/doc/openvswitch-datapath-source/README.Debian" | |
8a5b3cfd | 58 | |
5a0e4aec BP |
59 | if test X"$OVS_MISSING_KMOD_OK" = Xyes; then |
60 | # We're being invoked by the package postinst. Do not | |
61 | # fail package installation just because the kernel module | |
62 | # is not available. | |
63 | exit 0 | |
64 | fi | |
64624b3c | 65 | fi |
9fc47ed7 | 66 | set ovs_ctl ${1-start} --system-id=random |
5ae616d6 | 67 | if test X"$FORCE_COREFILES" != X; then |
5a0e4aec | 68 | set "$@" --force-corefiles="$FORCE_COREFILES" |
5ae616d6 | 69 | fi |
f4d458c5 | 70 | set "$@" $OVS_CTL_OPTS |
b3a375f2 | 71 | "$@" || exit $? |
81e3044c GS |
72 | if [ "$2" = "start" ] && [ "$READ_INTERFACES" != "no" ]; then |
73 | network_interfaces ifup | |
74 | fi | |
5ae616d6 BP |
75 | } |
76 | ||
77 | stop () { | |
81e3044c | 78 | [ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown |
9fc47ed7 | 79 | ovs_ctl stop |
5ae616d6 BP |
80 | } |
81 | ||
aad12c5f | 82 | restart () { |
19cbf2b8 GS |
83 | # OVS_FORCE_RELOAD_KMOD can be set by package postinst script. |
84 | if [ "$1" = "--save-flows=yes" ] || \ | |
85 | [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then | |
aad12c5f | 86 | start restart |
19cbf2b8 GS |
87 | elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then |
88 | depmod -a | |
89 | ||
90 | if [ -e /sys/module/openvswitch ]; then | |
51386ba3 GS |
91 | LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion \ |
92 | 2>/dev/null` | |
93 | LOADED_VERSION=`cat /sys/module/openvswitch/version \ | |
94 | 2>/dev/null` | |
19cbf2b8 GS |
95 | fi |
96 | SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null` | |
97 | VERSION=`modinfo -F version openvswitch 2>/dev/null` | |
98 | ||
99 | ovs_ctl_log "Package upgrading:\n"\ | |
100 | "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\ | |
101 | "Version on disk: ${VERSION} ${SRCVERSION}." | |
102 | ||
103 | # If the kernel module was previously loaded and it is different than | |
104 | # the kernel module on disk, then do a 'force-reload-kmod'. | |
105 | if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \ | |
106 | [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then | |
107 | start force-reload-kmod | |
108 | else | |
109 | start restart | |
110 | fi | |
aad12c5f | 111 | else |
81e3044c GS |
112 | READ_INTERFACES="no" stop |
113 | READ_INTERFACES="no" start | |
aad12c5f GS |
114 | fi |
115 | } | |
116 | ||
5ae616d6 BP |
117 | case $1 in |
118 | start) | |
119 | start | |
5a0e4aec | 120 | ;; |
43bb5f82 | 121 | stop | force-stop) |
5ae616d6 | 122 | stop |
064af421 | 123 | ;; |
43bb5f82 BP |
124 | reload | force-reload) |
125 | # The OVS daemons keep up-to-date. | |
f20bbd7a | 126 | ;; |
064af421 | 127 | restart) |
aad12c5f GS |
128 | shift |
129 | restart "$@" | |
f20bbd7a | 130 | ;; |
064af421 | 131 | status) |
9fc47ed7 | 132 | ovs_ctl status |
5e0c05bc | 133 | exit $? |
064af421 | 134 | ;; |
5ae616d6 BP |
135 | force-reload-kmod) |
136 | start force-reload-kmod | |
137 | ;; | |
64624b3c SH |
138 | load-kmod) |
139 | load_kmod | |
140 | ;; | |
064af421 | 141 | *) |
64624b3c | 142 | echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2 |
f20bbd7a JP |
143 | exit 1 |
144 | ;; | |
064af421 BP |
145 | esac |
146 | ||
147 | exit 0 |