aboutsummaryrefslogtreecommitdiff
path: root/net/workstation.sh
blob: 7639a6e4e241a9e8cffc2a5892ef1cdd9071136c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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