36 lines
757 B
Django/Jinja
36 lines
757 B
Django/Jinja
#!/bin/bash
|
|
set -e
|
|
|
|
LAB_NAME="{{ gateway_config.lab_name }}"
|
|
VNI="{{ gateway_config.vni }}"
|
|
WG_IF="wg-${LAB_NAME}"
|
|
VXLAN_IF="vxlan${VNI}"
|
|
|
|
# Wait for WireGuard interface
|
|
timeout=30
|
|
while [ $timeout -gt 0 ]; do
|
|
if ip link show ${WG_IF} &>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
((timeout--))
|
|
done
|
|
|
|
# Create VXLAN interface
|
|
if ! ip link show ${VXLAN_IF} &>/dev/null; then
|
|
ip link add ${VXLAN_IF} type vxlan \
|
|
id ${VNI} \
|
|
dev ${WG_IF} \
|
|
dstport {{ vxlan_port }} \
|
|
nolearning \
|
|
proxy
|
|
fi
|
|
|
|
# Configure VXLAN peers (FDB entries)
|
|
{% for peer in gateway_config.peers %}
|
|
bridge fdb append 00:00:00:00:00:00 dev ${VXLAN_IF} dst {{ peer.wg_ip }}
|
|
{% endfor %}
|
|
|
|
# Bring up interface
|
|
ip link set ${VXLAN_IF} up
|