Hack vswitchd init script to remove bridge ports at startup
authorKeith Amidon <keith@nicira.com>
Sat, 14 Mar 2009 17:02:23 +0000 (10:02 -0700)
committerKeith Amidon <keith@nicira.com>
Mon, 16 Mar 2009 20:39:51 +0000 (13:39 -0700)
XAPI will recreate all the bridges and reconnect the interfaces at
startup, so this is safe in the Xen environment.  If we don't do this
stale vifs hang around in the configuration file.

This is a hack and not a true solution because it doesn't handle
port-related configuration, etc.  A better solution needs to be
implemented in the future.

vswitchd/etc/init.d/vswitch

index a2f6f68dc2b5e903750d4ab03d4dcab89256593d..0c185a63199f4400da406d771bf69db067f151e0 100755 (executable)
@@ -22,6 +22,11 @@ function dp_intf {
        $VSWITCH_BASE/utilities/dpctl show nl:$1 | grep '^ LOCAL(' | cut -d'(' -f2 | cut -d')' -f1
 }
 
+function clear_old_bridge_ports {
+    mv $VSWITCHD_CONF $VSWITCHD_CONF.prev
+    grep  -v '^bridge\.[^.]\+\.port[ \t]*=' $VSWITCHD_CONF.prev > $VSWITCHD_CONF
+}
+
 function start {
        if ! lsmod | grep -q "openflow_mod"; then
                action "Inserting openflow module" insmod $VSWITCH_BASE/datapath/linux-2.6/openflow_mod.ko
@@ -41,9 +46,10 @@ function start {
     if [ -n "$MEMLEAK_LOG" ]; then
         leak_opt="--check-leaks=$MEMLEAK_LOG"
         if [ -e "$MEMLEAK_LOG" ]; then
-            mv "$MEMLEAK_LOG" "$MEMLEAK_LOG.last"
+            mv "$MEMLEAK_LOG" "$MEMLEAK_LOG.prev"
         fi
     fi
+    [ "$1" = "restart" ] || clear_old_bridge_ports
        PATH=$VSWITCH_BASE/secchan:$PATH action "Starting vswitchd" nice -n "$PRIORITY" $VSWITCH_BASE/vswitchd/vswitchd -P/var/run/vswitchd.pid -D -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt --brcompat $leak_opt "$VSWITCHD_CONF"
        if [ "$1" = "restart" ]; then
                sleep 2    # Give time for vswitch to get up and running.