diff --git a/generate b/generate index 575bb73..be97ca1 100755 --- a/generate +++ b/generate @@ -250,7 +250,8 @@ def main(): for node_id in range(ncount): log.info("Generating for %s node %d" % (node_type, node_id)) data["node"] = create_node(data["lab"], node_id, node_type) - log.debug("node: %s" % data["node"]) + data["overlay"] = args.overlay + log.debug(f"data: {data}") # Assemble a dictionary of tpl=>fn overlay = data["overlays"][args.overlay] diff --git a/overlays/bird/ovs-config.sh b/overlays/bird/ovs-config.sh.j2 similarity index 98% rename from overlays/bird/ovs-config.sh rename to overlays/bird/ovs-config.sh.j2 index b990afe..c68721a 100755 --- a/overlays/bird/ovs-config.sh +++ b/overlays/bird/ovs-config.sh.j2 @@ -1,6 +1,6 @@ #!/bin/bash # -# OVS configuration for the `bird` overlay +# OVS configuration for the `{{ overlay }}` overlay LAB=${LAB:=0} BR=vpplan diff --git a/overlays/frr/ovs-config.sh b/overlays/frr/ovs-config.sh deleted file mode 100755 index 5f6962a..0000000 --- a/overlays/frr/ovs-config.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -# -# OVS configuration for the `frr` overlay - -LAB=${LAB:=0} -BR=vpplan -for p in $(ovs-vsctl list-ifaces $BR); do - ovs-vsctl set port $p vlan_mode=access -done - -# Uplink is VLAN 10 -ovs-vsctl add port vpp${LAB}-0-0 tag 10 -ovs-vsctl add port uplink tag 10 - -# Link vpp${LAB}-0 <-> vpp${LAB}-1 in VLAN 20 -ovs-vsctl add port vpp${LAB}-0-1 tag 20 -ovs-vsctl add port vpp${LAB}-1-0 tag 20 - -# Link vpp${LAB}-1 <-> vpp${LAB}-2 in VLAN 21 -ovs-vsctl add port vpp${LAB}-1-1 tag 21 -ovs-vsctl add port vpp${LAB}-2-0 tag 21 - -# Link vpp${LAB}-2 <-> vpp${LAB}-3 in VLAN 22 -ovs-vsctl add port vpp${LAB}-2-1 tag 22 -ovs-vsctl add port vpp${LAB}-3-0 tag 22 - -## Wire host${LAB}-0-[0123] to e2 of all VPP machines -ovs-vsctl set port vpp${LAB}-0-2 tag=30 -ovs-vsctl set port host${LAB}-0-0 tag=30 -ovs-vsctl set port vpp${LAB}-1-2 tag=31 -ovs-vsctl set port host${LAB}-0-1 tag=31 -ovs-vsctl set port vpp${LAB}-2-2 tag=32 -ovs-vsctl set port host${LAB}-0-2 tag=32 -ovs-vsctl set port vpp${LAB}-3-2 tag=33 -ovs-vsctl set port host${LAB}-0-3 tag=33 - -## Wire host${LAB}-1-[0123] to e3 of all VPP machines -ovs-vsctl set port vpp${LAB}-0-3 tag=40 -ovs-vsctl set port host${LAB}-1-0 tag=40 -ovs-vsctl set port vpp${LAB}-1-3 tag=41 -ovs-vsctl set port host${LAB}-1-1 tag=41 -ovs-vsctl set port vpp${LAB}-2-3 tag=42 -ovs-vsctl set port host${LAB}-1-2 tag=42 -ovs-vsctl set port vpp${LAB}-3-3 tag=43 -ovs-vsctl set port host${LAB}-1-3 tag=43 - -## Wire tap${LAB}-0-0 as 'rx' tap -MIRROR=mirror-rx -ovs-vsctl set port tap${LAB}-0-0 vlan_mode=native-tagged -[ ovs-vsctl list mirror $MIRROR >/dev/null 2>&1 ] || \ - ovs-vsctl -- --id=@m get mirror $MIRROR -- remove bridge $BR mirrors @m -ovs-vsctl --id=@m create mirror name=$MIRROR \ - -- --id=@p get port tap${LAB}-0-0 \ - -- add bridge $BR mirrors @m \ - -- set mirror $MIRROR output-port=@p \ - -- set mirror $MIRROR select_dst_port=[] \ - -- set mirror $MIRROR select_src_port=[] -for iface in $(ovs-vsctl list-ports $BR); do - [[ $iface == tap* ]] && continue - [[ $iface == uplink ]] && continue - ovs-vsctl add mirror $MIRROR select_dst_port $(ovs-vsctl get port $iface _uuid) -done - -## Wire tap${LAB}-0-1 as 'tx' tap -MIRROR=mirror-tx -ovs-vsctl set port tap${LAB}-0-1 vlan_mode=native-tagged -[ ovs-vsctl list mirror $MIRROR >/dev/null 2>&1 ] || \ - ovs-vsctl -- --id=@m get mirror $MIRROR -- remove bridge $BR mirrors @m -ovs-vsctl --id=@m create mirror name=$MIRROR \ - -- --id=@p get port tap${LAB}-0-1 \ - -- add bridge $BR mirrors @m \ - -- set mirror $MIRROR output-port=@p \ - -- set mirror $MIRROR select_dst_port=[] \ - -- set mirror $MIRROR select_src_port=[] -for iface in $(ovs-vsctl list-ports $BR); do - [[ $iface == tap* ]] && continue - [[ $iface == uplink ]] && continue - ovs-vsctl add mirror $MIRROR select_src_port $(ovs-vsctl get port $iface _uuid) -done diff --git a/overlays/frr/ovs-config.sh.j2 b/overlays/frr/ovs-config.sh.j2 new file mode 120000 index 0000000..fad196a --- /dev/null +++ b/overlays/frr/ovs-config.sh.j2 @@ -0,0 +1 @@ +../bird/ovs-config.sh.j2 \ No newline at end of file