self-contained tap creation in the switchd
[sliver-openvswitch.git] / planetlab / exp-tool / Makefile
index 5986216..40e8803 100644 (file)
@@ -11,6 +11,9 @@ include $(CONF)
 # if undefined in the conf file, use single dash
 SEP?=-
 
+# bridge name (XXX the same on all nodes)
+BRIDGE?=$(SLICE)
+
 ### helper functions
 # flip(1) = 2
 # flip(2) = 1
@@ -131,8 +134,8 @@ cache/switch.%: cache/db.%
 
 cache/bridge.%: cache/switch.%
        @echo "Creating bridge on $(call display,$*) - logs in $@.log"
-       @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(IP_$*) > $@ 2> $@.log || { rm $@; exit 1; }
-       @echo Created bridge $$(cat $@) on $(HOST_$*)
+       @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(BRIDGE) $(IP_$*) > $@ 2> $@.log || { rm $@; exit 1; }
+       @echo Created bridge with tap $$(cat $@) on $(call display,$*)
 
 # xxx this probably needs a more thorough cleanup in cache/
 cache/stop.%: del-bridge.%
@@ -152,7 +155,7 @@ U/%: del-iface.%@1 del-iface.%@2
 del-bridge.%: cache/db.%
        @echo "Deleting bridge on $(call display,$*)"
        @if [ -f cache/bridge.$* ]; then \
-               $(SSH) $(HOST_$*) $(SUDO) sliver-ovs del-bridge $$(cat cache/bridge.$*);\
+               $(SSH) $(HOST_$*) $(SUDO) sliver-ovs del-bridge $(BRIDGE);\
         fi
        @rm -f cache/bridge.$* \
              cache/iface.$*$(SEP)*@1 cache/iface.*$(SEP)$*@2 \
@@ -161,25 +164,21 @@ del-bridge.%: cache/db.%
 
 del-switch.%: del-bridge.%
        @echo "Shutting down switch on $(call display,$*)"
-       @if [ -f cache/switch.$* ]; then \
-               $(SSH) $(HOST_$*) $(SUDO) ovs-appctl exit;\
-        fi
+       @[ -f cache/switch.$* ] && $(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-switch
        @rm -f cache/switch.$*
 
 del-db.%:
        @echo "Shutting down db on $(call display,$*)"
-       @if [ -f cache/db.$* ]; then \
-               $(SSH) $(HOST_$*) $(SUDO) ovs-appctl --target=$(VARRUN)/ovsdb-server.$$(cat cache/db.$*).ctl exit;\
-        fi
+       @[ -f cache/db.$* ] && $(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-db
        @rm -f cache/db.$*
 
-del-links: $(addprefix U/,$(notdir $(wildcard L/*)))
+del-links: $(addprefix U/,$(notdir $(filter-out %.log,$(wildcard L/*))))
 
-del-switchs: $(addprefix del-,$(notdir $(wildcard cache/switch.*)))
+del-switchs: $(addprefix del-,$(notdir $(filter-out %.log,$(wildcard cache/switch.*))))
 
-del-dbs: $(addprefix del-,$(notdir $(wildcard cache/db.*)))
+del-dbs: $(addprefix del-,$(notdir $(filter-out %.log,$(wildcard cache/db.*))))
 
-shutdown: del-switches del-dbs
+shutdown: del-switchs del-dbs
 
 .PHONY: del-links del-switchs del-dbs shutdown
 
@@ -199,24 +198,23 @@ del-iface.%: cache/db.$$(call get,%)
 #bridgefile=cache/bridge.$(nodeid)
 cache/iface.%: cache/bridge.$$(call get,%)
        @echo "Creating interface for link $(call linkpart,$(*F)) on $(call display,$(call get,$(*F))) - logs in $@.log"
-       @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) sliver-ovs create-port $$(cat cache/bridge.$(call get,$(*F))) L$(call linkpart,$(*F)) > $@ 2> $@.log || { rm $@; exit 1; }
-       echo cache/bridge.$(call get,$(*F))
-       echo cache/host.$(call get,$(*F)) cache/iface.$(*F) cache/iface.$(call opp,$(*F))
+       @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) sliver-ovs create-port $(BRIDGE) \
+               L$(call linkpart,$(*F)) > $@ 2> $@.log || { rm $@; exit 1; }
 
 
 # linkid=$(call linkpart,%)
 # nodeid=$(call get,%)
 # iface1=cache/iface.%
 # iface2=cache/iface.$(call opp,%)
-cache/link.%: cache/host.$$(call get,%) cache/iface.% cache/iface.$$(call opp,%)
+cache/link.%: cache/host.$$(call rget,%) cache/iface.% cache/iface.$$(call opp,%)
        @echo "Setting port number of link $(call linkpart,$(*F)) on $(call display,$(call get,$(*F))) - logs in $@.log"
-       @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) ovs-vsctl set interface L$(call linkpart,$(*F)) \
-                       options:remote_ip=$$(cat cache/host.$(call get,$(*F))) \
-                       options:remote_port=$$(cat cache/iface.$(call opp,$(*F))) 2> $@.log \
+       @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) sliver-ovs set-remote-endpoint L$(call linkpart,$(*F)) \
+                       $$(cat cache/host.$(call rget,$(*F))) \
+                       $$(cat cache/iface.$(call opp,$(*F))) 2> $@.log \
         && touch $@
 
 ####################
-CLEANTARGETS=$(addprefix del-,$(notdir $(wildcard cache/bridge.*)))
+CLEANTARGETS=$(addprefix del-,$(notdir $(filter-out %.log,$(wildcard cache/bridge.*))))
 clean: $(CLEANTARGETS)
 distclean:
        rm -rf L U cache