#!/bin/bash -ex # Manage a venv-based virtual network for testing, consisting of: # # - venv0: Interface for the DHCP server (static address: 10.0.0.254/24) # - venv1: Interface for DHCP client # - br-dhcp: A bridge for communication between these interfaces # # Default behavior is to create the network, the `-d` option removes it. BR=br-dhcp SERVERADDR="10.0.0.254/24" # Parse arguments DELETE=0 while getopts "d" opt; do case $opt in d) DELETE=1 ;; *) ;; esac done if [ "$DELETE" != "0" ]; then for i in {0..1}; do IFNAME="veth${i}" ip link del "$IFNAME" || true done ip link set "$BR" down brctl delbr $BR exit 0 fi brctl addbr $BR for i in {0..1}; do IFNAME="veth${i}" PEERNAME="${IFNAME}s" ip link add "$IFNAME" type veth peer name "$PEERNAME" ip link set "$IFNAME" up ip link set "$PEERNAME" up brctl addif $BR "$PEERNAME" done ip addr add dev veth0 "$SERVERADDR" ip link set "$BR" up