52 lines
1023 B
Bash
Executable File
52 lines
1023 B
Bash
Executable File
#!/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
|