.PHONY: sshs
showdpids: $(foreach id,$(ALL_NODE_IDS),showdpid-$(id))
.PHONY: showdpids
-
+showmacs: $(foreach id,$(ALL_NODE_IDS),showmac-$(id))
+.PHONY: showmacs
showports: $(foreach id,$(ALL_NODE_IDS),showports-$(id))
.PHONY: showports
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)
+
showports-%: FORCE
@$(SSH) $(HOST_$*) $(SUDO) ovs-ofctl show $(BRIDGE) \
| perl -nle '/(\d+)\(L(.*?)\Q$(SEP)\E(.*?)\):/ && \
print "PORT_".("$$2" eq "$*" ? "$$2_$$3" : "$$3_$$2")."=$$1"'
-
# should probably replace sshcheck
cache/status.%: FORCE
@echo "=== DB and SWITCH processes on $(call display,$*)"
echo $! > $pid_file
}
+####################
+# xxx tmp for a demo
+# there *must* be a better way to do that
+# the thing is the slice sees several tap devices at this point, which is odd...
+# for now I'm searching the tapname based on some hint - the vnet ip range
+VNET=10.0.16
+function show_mac () {
+ ifnames=$(grep : /proc/net/dev | cut -d: -f1 | awk '{print $1;}')
+ tapname=""
+ for ifname in $ifnames; do
+ ifconfig $ifname | grep -q "$VNET" && tapname=$ifname
+ done
+ if [ -z "$tapname" ] ; then
+ echo "no-tap-found-for$VNET"
+ exit 1
+ fi
+ ifconfig $tapname | grep -i hwaddr | awk '{print $5;}'
+}
+
####################
SUPPORTED_SUBCOMMANDS="start stop status
start_db stop_db start_switch stop_switch
create_bridge create_port del_bridge del_port
show get_local_endpoint set_remote_endpoint
set_controller del_controller gmap_probe
-get_local_ip get_local_links"
+get_local_ip get_local_links show_mac"
function main () {
message="Usage: $COMMAND <subcommand> ...