X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=debian%2Fopenvswitch-switch.init;h=481b29c997a740c5ae5442295459417421a99b6d;hb=HEAD;hp=3df711f9db0f584e5a62910169efc8675b842f74;hpb=85b20fd6ee585f462e012fbcc7f966a81edab2ed;p=sliver-openvswitch.git diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init index 3df711f9d..481b29c99 100755 --- a/debian/openvswitch-switch.init +++ b/debian/openvswitch-switch.init @@ -31,17 +31,13 @@ test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch 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 "$@" - "$@" -} - load_kmod () { ovs_ctl load-kmod || exit $? } @@ -80,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