X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=debian%2Fopenvswitch-switch.init;h=481b29c997a740c5ae5442295459417421a99b6d;hb=28c5588e8e1a8d091c5d2275232c35f2968a97fa;hp=ddd303256454e326f73a9456bc18e4fcf8505135;hpb=1d63efc45b9ae5b723f9a8f0d81c7f002b48c39d;p=sliver-openvswitch.git diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init index ddd303256..481b29c99 100755 --- a/debian/openvswitch-switch.init +++ b/debian/openvswitch-switch.init @@ -30,26 +30,14 @@ . /usr/share/openvswitch/scripts/ovs-lib test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch -if test X"$BRCOMPAT" = Xyes && test ! -x /usr/sbin/ovs-brcompatd; then - BRCOMPAT=no - log_warning_msg "ovs-brcompatd missing, disabling bridge compatibility" -fi - network_interfaces () { + [ -z "${RUNLEVEL}" ] && return INTERFACES="/etc/network/interfaces" [ -e "${INTERFACES}" ] || return bridges=`awk '{ if ($1 == "allow-ovs") { print $2; } }' "${INTERFACES}"` [ -n "${bridges}" ] && $1 --allow=ovs ${bridges} } -ovs_ctl () { - set /usr/share/openvswitch/scripts/ovs-ctl "$@" - if test X"$BRCOMPAT" = Xyes; then - set "$@" --brcompat - fi - "$@" -} - load_kmod () { ovs_ctl load-kmod || exit $? } @@ -88,10 +76,35 @@ stop () { } restart () { - # OVS_RESTART_SAVE_FLOWS can be set by package postinst script. - if [ "$OVS_RESTART_SAVE_FLOWS" = "yes" ] || \ - [ "$1" = "--save-flows=yes" ]; then + # OVS_FORCE_RELOAD_KMOD can be set by package postinst script. + if [ "$1" = "--save-flows=yes" ] || \ + [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then start restart + elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then + depmod -a + + if [ -e /sys/module/openvswitch ]; then + LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion` + LOADED_VERSION=`cat /sys/module/openvswitch/version` + elif [ -e /sys/module/openvswitch_mod ]; then + LOADED_SRCVERSION=`cat /sys/module/openvswitch_mod/srcversion` + LOADED_VERSION=`cat /sys/module/openvswitch_mod/version` + fi + SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null` + VERSION=`modinfo -F version openvswitch 2>/dev/null` + + ovs_ctl_log "Package upgrading:\n"\ + "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\ + "Version on disk: ${VERSION} ${SRCVERSION}." + + # If the kernel module was previously loaded and it is different than + # the kernel module on disk, then do a 'force-reload-kmod'. + if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \ + [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then + start force-reload-kmod + else + start restart + fi else stop start