Files
zosbuilder/scripts/setup_network.sh
Jan De Landtsheer 10025f9fa5 Squashed 'components/mycelium/' content from commit afb32e0
git-subtree-dir: components/mycelium
git-subtree-split: afb32e0cdb2d4cdd17f22a5693278068d061f08c
2025-08-16 21:12:34 +02:00

57 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# A simple shell script to setup a local network using network namespaces. This relies on the presence of the `ip` tool, part of `iproute2` package on linux.
#
# Note: this script requires root privilege
set -ex
# Create veth pairs
ip l add p0 type veth peer p1
ip l add p2 type veth peer p3
ip l add p4 type veth peer p5
ip l add p6 type veth peer p7
# Create bridge
ip l add mycelium-br type bridge
# Add 1 part of every veth pair in the bridge
ip l set p1 master mycelium-br
ip l set p3 master mycelium-br
ip l set p5 master mycelium-br
ip l set p7 master mycelium-br
# Add network namespaces
ip netns add net1
ip netns add net2
ip netns add net3
# Enable loopback devices in network namespaces
ip -n net1 l set lo up
ip -n net2 l set lo up
ip -n net3 l set lo up
# Add 1 veth end to every network namespace
ip l set p2 netns net1
ip l set p4 netns net2
ip l set p6 netns net3
# Set underlay IP addresses on the veth parts which are not in the bridge
ip a add 10.0.2.1/24 dev p0
ip -n net1 a add 10.0.2.2/24 dev p2
ip -n net2 a add 10.0.2.3/24 dev p4
ip -n net3 a add 10.0.2.4/24 dev p6
# Set all veth interface to up
ip l set p0 up
ip l set p1 up
ip -n net1 l set p2 up
ip l set p3 up
ip -n net2 l set p4 up
ip l set p5 up
ip -n net3 l set p6 up
ip l set p7 up
# Set bridge as up
ip l set mycelium-br up