-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtecff-bridge-routing-setup
executable file
·49 lines (47 loc) · 1.77 KB
/
tecff-bridge-routing-setup
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
49
#!/bin/bash
if [ -z "$1" ] || [ -z "$2" ]; then
echo "missing parameters! (SUBNET4, SUBNET6)"
exit 1
fi
# IFACE and MODE are set as an environment variable by ifupdown
SUBNET4="$1"
SUBNET6="$2"
# for IPv4, subnet in format 10.120.x.0/yz is expected
# for IPv6, subnet only the last part is expected, e.g. "96"
if [ "$MODE" == "start" ]; then
if [[ "$SUBNET4" =~ ^10\.120\.[0-9]+\.0/[0-9]+$ ]]; then
ip -4 rule add iif $IFACE table 42
if ! [[ "$(ip -4 route show default table 42 | grep unreachable)" =~ "unreachable default" ]]; then
ip -4 route add unreachable default metric 2000 table 42
fi
ip -4 route add $SUBNET4 dev $IFACE table 42
fi
if [[ "$SUBNET6" =~ ^[0-9]+$ ]]; then
ip -6 route add 2001:470:733f:${SUBNET6}::/64 dev $IFACE
ip -6 rule add iif $IFACE table 42
if ! [[ "$(ip -6 route show default table 42 | grep unreachable)" =~ "unreachable default" ]]; then
ip -6 route add unreachable default metric 2000 table 42
fi
ip -6 route add 2001:470:733f:${SUBNET6}::/64 dev $IFACE table 42
ip -6 route add fdef:ffc0:4ffa:${SUBNET6}::/64 dev $IFACE table 42
fi
elif [ "$MODE" == "stop" ]; then
if ! ip link show dev $IFACE >/dev/null 2>&1; then
# exit if the interface does not exist (anymore)
exit 0
fi
if [[ "$SUBNET4" =~ ^10\.120\.[0-9]+\.0/[0-9]+$ ]]; then
ip -4 route del $SUBNET4 dev $IFACE table 42
ip -4 route del unreachable default metric 2000 table 42
ip -4 rule del iif $IFACE table 42
fi
if [[ "$SUBNET6" =~ ^[0-9]+$ ]]; then
ip -6 route del 2001:470:733f:${SUBNET6}::/64 dev $IFACE table 42
ip -6 route del fdef:ffc0:4ffa:${SUBNET6}::/64 dev $IFACE table 42
ip -6 route del unreachable default metric 2000 table 42
ip -6 rule del iif $IFACE table 42
ip -6 route del 2001:470:733f:${SUBNET6}::/64 dev $IFACE
fi
else
exit 1
fi