aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/vlan.sh (renamed from net.sh)0
-rw-r--r--net/workstation.sh48
2 files changed, 48 insertions, 0 deletions
diff --git a/net.sh b/net/vlan.sh
index 2ca1f0c..2ca1f0c 100644
--- a/net.sh
+++ b/net/vlan.sh
diff --git a/net/workstation.sh b/net/workstation.sh
new file mode 100644
index 0000000..7639a6e
--- /dev/null
+++ b/net/workstation.sh
@@ -0,0 +1,48 @@
+#!/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