}
ovs_vsctl () {
- ovs-vsctl --no-wait --timeout=5 "$@"
+ ovs-vsctl --no-wait "$@"
}
ovsdb_tool () {
check_force_cores () {
if test X"$FORCE_COREFILES" = Xyes; then
- ulimit -Sc 67108864
+ ulimit -c 67108864
fi
}
chmod +x "$2"
return 0
fi
- eval $3=""
[ -z "${bridges}" ] && return 0
}
case `ovs-appctl version | sed 1q` in
"ovs-vswitchd (Open vSwitch) 1."[0-9].*)
action "Saving ofport values" ovs_save save-ofports \
- "${script_ofports}" script_ofports
- ;;
- *)
+ "${script_ofports}"
;;
esac
}
}
restore_ofports () {
- [ -n "${script_ofports}" ] && \
+ [ -x "${script_ofports}" ] && \
action "Restoring ofport values" "${script_ofports}"
}
restore_flows () {
- [ -n "${script_flows}" ] && \
+ [ -x "${script_flows}" ] && \
action "Restoring saved flows" "${script_flows}"
}
-force_reload_kmod () {
- ifaces=`internal_interfaces`
- action "Detected internal interfaces: $ifaces" true
+restore_interfaces () {
+ [ ! -x "${script_interfaces}" ] && return 0
+ action "Restoring interface configuration" "${script_interfaces}"
+ rc=$?
+ if test $rc = 0; then
+ level=debug
+ else
+ level=err
+ fi
+ log="logger -p daemon.$level -t ovs-save"
+ $log "interface restore script exited with status $rc:"
+ $log -f "$script_interfaces"
+}
+init_restore_scripts () {
script_interfaces=`mktemp`
script_flows=`mktemp`
script_ofports=`mktemp`
trap 'rm -f "${script_interfaces}" "${script_flows}" "${script_ofports}"' 0
+}
+
+force_reload_kmod () {
+ ifaces=`internal_interfaces`
+ action "Detected internal interfaces: $ifaces" true
+
+ init_restore_scripts
- action "Saving flows" ovs_save save-flows "${script_flows}" script_flows
+ action "Saving flows" ovs_save save-flows "${script_flows}"
save_ofports_if_required
restore_flows
- action "Restoring interface configuration" "$script_interfaces"
- rc=$?
- if test $rc = 0; then
- level=debug
- else
- level=err
- fi
- log="logger -p daemon.$level -t ovs-save"
- $log "force-reload-kmod interface restore script exited with status $rc:"
- $log -f "$script_interfaces"
+ restore_interfaces
"$datadir/scripts/ovs-check-dead-ifs"
}
## restart ##
## ------- ##
+save_interfaces_if_required () {
+ # Save interfaces if we are upgrading from a pre-1.10 branch.
+ case `ovs-appctl version | sed 1q` in
+ "ovs-vswitchd (Open vSwitch) 1."[0-9].*)
+ ifaces=`internal_interfaces`
+ action "Detected internal interfaces: $ifaces" true
+ if action "Saving interface configuration" save_interfaces; then
+ chmod +x "$script_interfaces"
+ fi
+ ;;
+ esac
+}
+
restart () {
if daemon_is_running ovsdb-server && daemon_is_running ovs-vswitchd; then
- script_flows=`mktemp`
- trap 'rm -f "${script_flows}"' 0
-
- action "Saving flows" ovs_save save-flows "${script_flows}" \
- script_flows
+ init_restore_scripts
+ save_interfaces_if_required
+ action "Saving flows" ovs_save save-flows "${script_flows}"
+ save_ofports_if_required
fi
# Restart the database first, since a large database may take a
stop_ovsdb
start_ovsdb
+ # Restore of ofports, if required, should happen before vswitchd is
+ # restarted.
+ restore_ofports
+
stop_forwarding
start_forwarding
- # Restore the saved flows. Do not return error if restore fails.
- restore_flows || true
+ # Restore the saved flows.
+ restore_flows
+
+ # Restore the interfaces if required. Return true even if restore fails.
+ restore_interfaces || true
}
## --------------- ##