#!/bin/sh # net.sh # Sets up a bridged network specifically for use on a laptop or workstation. # Called by `/etc/rc.local` on my Void Linux machine bridges="vbr0 br0" br0_ifs="enp2s0" # vbr0_ifs="" vbr0_inet="10.33.33.1/24" vbr0_inet6="fc00:333::1/64" assign_inet_for_if() { _if="$1" ; shift eval _inet="\$${_if}_inet" for addr in $_inet ; do ip -4 addr add $addr dev $br done } assign_inet6_for_if() { _if="$1" ; shift eval _inet="\$${_if}_inet6" for addr in $_inet ; do ip -6 addr add $addr dev $br done } for br in $bridges ; do brctl addbr $br ip link set up "$br" eval _ifs="\$${br}_ifs" for _if in $_ifs ; do brctl addif "$br" "$_if" ip link set up "$_if" done assign_inet_for_if "${br}" assign_inet6_for_if "${br}" done for _if in $_ifs ; do assign_inet_for_if "$_if" assign_inet6_for_if "$_if" ip link set up "$_if" done