fix remote-snapshot with external nodes
[sliver-openvswitch.git] / planetlab / exp-tool / Makefile
index e13374f..942160b 100644 (file)
@@ -160,7 +160,7 @@ showdpid-%: FORCE
        @echo $*_DPID=0x$$( $(SSH) $(HOST_$*) $(SUDO) ovs-vsctl get bridge $(BRIDGE) datapath_id | sed -e 's,",,g')
 
 showmac-%: FORCE
-       @echo $*_MAC=\"$$( $(SSH) $(HOST_$*) $(SUDO) sliver-ovs show-mac)\"
+       @echo $*_MAC=\"$$( $(SSH) $(HOST_$*) $(SUDO) sliver-ovs get-mac $(BRIDGE))\"
 
 showports-%: FORCE
        @$(SSH) $(HOST_$*) $(SUDO) ovs-ofctl show $(BRIDGE) \
@@ -510,3 +510,42 @@ help:
 +%: varname=$(subst +,,$@)
 +%:
        @echo "$($(varname))"
+
+# external nodes and links
+#
+ALL_LINKS := $(LINKS) $(patsubst L/%,%,$(filter L/%,$(MAKECMDGOALS)))
+EXTERNAL_LINKS := $(filter $(foreach host,$(EXTERNAL_HOSTS),%-$(host)),$(ALL_LINKS))
+
+$(foreach host,$(EXTERNAL_HOSTS),sshcheck-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),ovsversion-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),showdpid-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),showmac-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),showports-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),update-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),del-controller-$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),cache/status.$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),cache/db.$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),cache/bridge.$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),cache/switch.$(host)): ;
+$(foreach host,$(EXTERNAL_HOSTS),cache/controller.$(host)): ;
+$(foreach link,$(EXTERNAL_LINKS),cache/iface.$(link)@2): ;
+$(foreach link,$(EXTERNAL_LINKS),cache/port.$(link)@2): ;
+$(foreach link,$(EXTERNAL_LINKS),del-iface.$(link)@2): ;
+
+$(foreach host,$(EXTERNAL_HOSTS),cache/rsnap.ip.$(host)): ;
+       @touch $@
+
+$(foreach host,$(EXTERNAL_HOSTS),cache/rsnap.links.$(host)): ;
+       @touch $@
+
+# we assume that a program called tunproxy is available on the
+# external nodes.  
+
+.SECONDEXPANSION:
+$(foreach link,$(EXTERNAL_LINKS),cache/endpoint.$(link)@2): cache/endpoint.%@2: cache/port.%@1 cache/host.$$(call leftnode,%)
+       @#echo $* [$<] [$^] $(call rightnode,$*)
+       @echo $(call default,EXTERNAL_PORT,$(call rightnode,$*)) > $@
+       @echo "===>" $(call rightnode,$*): \
+          ./tunproxy -t $$(cat cache/host.$(call leftnode,$*)):$$(cat cache/port.$*@1) \
+           -p $(call default,EXTERNAL_PORT,$(call rightnode,$*)) -e -d
+