# rget(x-y@2) = x
rget=$(call get,$(call opp,$(1)))
###
+default=$(if $($(1)_$(2)),$($(1)_$(2)),$($(1)))
solve=$(HOST_$(1))
solve_ip=$(IP_$(1))
# can be redefined in conf.mk if that's not the expected behaviour
bridges: $(BRIDGES)
.PHONY: bridges
+CONTROLLERS=$(foreach id,$(ALL_NODE_IDS),cache/controller.$(id))
+controllers: $(CONTROLLERS)
+.PHONY: controllers
+
### node-oriented targets
# check ssh connectivity
cache/sshcheck.%: FORCE
@$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(BRIDGE) $(IP_$*) > $@ 2> $(call log,$@) || { rm $@; exit 1; }
@echo Created bridge with tap $$(cat $@) on $(call display,$*)
+cache/controller.%: cache/bridge.%
+ @echo "Setting controller $(call default,CONTROLLER,$*) on $(call display,$*) - logs in $(call log,$@)"
+ @$(SSH) $(HOST_$*) $(SUDO) ovs-vsctl set-controller $(BRIDGE) $(call default,CONTROLLER,$*) &> $(call log,$@) || { rm $@; exit 1; }
+
# xxx this probably needs a more thorough cleanup in cache/
cache/stop.%: del-bridge.%
@echo "Stopping switch & db on $(call display,$*)"
options:remote_port=$remote_UDP_port
}
+function set_controller () {
+
+ get_params "bridge_name controller" "$@"
+
+ # ensure ovs-vswitchd is running
+ is_switch_running || { echo "ovs-vswitchd not running" >&2 ; exit 1 ; }
+
+ set -e
+ ovs-vsctl --db=unix:$DB_SOCKET set-controller "$bridge_name" "$controller"
+}
+
#################### del functions
function del_bridge () {