X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xenserver%2Fetc_init.d_openvswitch;h=6adb004646358051366fdca542b293aee713d080;hb=8eb307e09f9b793ec28f0de49442a128f0a633ba;hp=e404c60e2a905188f44cc66e2df8194841dd7d55;hpb=6f83469de7edcbeb66449b8488d24a6cfbfb0898;p=openvswitch diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch index e404c60e..6adb0046 100755 --- a/xenserver/etc_init.d_openvswitch +++ b/xenserver/etc_init.d_openvswitch @@ -20,8 +20,8 @@ # limitations under the License. ### BEGIN INIT INFO # Provides: openvswitch-switch -# Required-Start: $network $named $remote_fs $syslog -# Required-Stop: $remote_fs +# Required-Start: +# Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Open vSwitch switch @@ -57,11 +57,13 @@ else } fi -. /etc/xensource-inventory +test -e /etc/xensource-inventory && . /etc/xensource-inventory test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch +if test -e /etc/xensource/network.conf; then + NETWORK_MODE=$(cat /etc/xensource/network.conf) +fi -NETWORK_MODE=$(cat /etc/xensource/network.conf) -case $NETWORK_MODE in +case ${NETWORK_MODE:=openvswitch} in vswitch|openvswitch) ;; bridge) @@ -74,14 +76,19 @@ case $NETWORK_MODE in esac # General config variables in /etc/sysconfig/openvswitch -if test "$PRODUCT_VERSION" = "5.5.0"; then - # XenServer 5.5.0 needs ovs-brcompatd and /proc/net simulation. +if [ -f /etc/xensource-inventory ]; then + if test "$PRODUCT_VERSION" = "5.5.0"; then + # XenServer 5.5.0 needs ovs-brcompatd and /proc/net simulation. + : ${ENABLE_BRCOMPAT:=y} + : ${ENABLE_FAKE_PROC_NET:=y} + else + # Later versions don't need them. + : ${ENABLE_BRCOMPAT:=n} + : ${ENABLE_FAKE_PROC_NET:=n} + fi +else : ${ENABLE_BRCOMPAT:=y} : ${ENABLE_FAKE_PROC_NET:=y} -else - # Later versions don't need them. - : ${ENABLE_BRCOMPAT:=n} - : ${ENABLE_FAKE_PROC_NET:=n} fi : ${ENABLE_MONITOR:=y} : ${FORCE_COREFILES:=y} @@ -174,6 +181,14 @@ function remove_all_dp { } function insert_modules_if_required { + if test -e /sys/module/bridge; then + bridges=`echo /sys/class/net/*/bridge | sed 's,/sys/class/net/,,g;s,/bridge,,g'` + if test "$bridges" != "*"; then + log_warning_msg "not removing bridge module because bridges exist ($bridges)" + else + action "removing bridge module" rmmod bridge + fi + fi if ! lsmod | grep -q "openvswitch_mod"; then action "Inserting llc module" modprobe llc action "Inserting openvswitch module" modprobe openvswitch_mod @@ -343,7 +358,17 @@ function set_system_ids { external-ids:system-id="$INSTALLATION_UUID" \ external-ids:xs-system-uuid="$INSTALLATION_UUID" else - action "Configuring Open vSwitch system IDs" false + if test -f /etc/openvswitch/install_uuid.conf; then + . /etc/openvswitch/install_uuid.conf + elif INSTALLATION_UUID=`uuidgen`; then + echo "INSTALLATION_UUID=$INSTALLATION_UUID" > /etc/openvswitch/install_uuid.conf + else + log_failure_msg "missing uuidgen, could not generate system UUID" + return + fi + $vsctl --no-wait --timeout=5 set Open_vSwitch . \ + external-ids:system-id="$INSTALLATION_UUID" + action "Configuring Open vSwitch system IDs" true fi } @@ -397,10 +422,12 @@ function start { start_brcompatd fi - # Start daemon to monitor external ids - PYTHONPATH=/usr/share/openvswitch/python \ - /usr/share/openvswitch/scripts/ovs-external-ids \ - --pidfile --detach $monitor_opt "$VSWITCHD_OVSDB_SERVER" + if [ -f /etc/xensource-inventory ]; then + # Start daemon to monitor external ids + PYTHONPATH=/usr/share/openvswitch/python \ + /usr/share/openvswitch/scripts/ovs-external-ids \ + --pidfile --detach $monitor_opt "$VSWITCHD_OVSDB_SERVER" + fi touch /var/lock/subsys/openvswitch }