-
Notifications
You must be signed in to change notification settings - Fork 4
/
vmrouter.ifup.in
70 lines (59 loc) · 1.7 KB
/
vmrouter.ifup.in
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
#
# if-up.d hook to do some weird networking stuff on IP-less interfaces
#
# Example:
#
# auto bond0.100
# iface bond0.100 inet manual
# ip-routing-table 100
# ip-routes 192.0.2.0/24
# ip-gateway 192.0.2.1
# ip-forwarding 1
# ip-proxy-arp 1
# arp-ip 192.0.2.0.254
#
# iface bond0.100 inet6 manual
# ip-routing-table 100
# ip-routes 2001:db8:100::/64
# ip-gateway 2001:db8:100::1
# ip-forwarding 1
# ip-proxy-ndp 1
source @datadir@/gnt-networking/common.sh
if [ "$ADDRFAM" = "meta" ]; then
exit 0
fi
$IP_CMD link set dev $IFACE up
if [ "$ADDRFAM" = "inet" ]; then
IP="$IP_CMD"
elif [ "$ADDRFAM" = "inet6" ]; then
IP="$IP_CMD -6"
else
exit 0
fi
if [ -n "$IF_IP_ROUTING_TABLE" ]; then
TABLE="table $IF_IP_ROUTING_TABLE"
else
# bail out early if there's no ip-routing-table defined
exit 0
fi
while $IP rule del iif $IFACE;do :; done 2>/dev/null
$IP rule add iif $IFACE $TABLE
for route in $IF_IP_ROUTES; do
$IP route add $route dev $IFACE table main
$IP route add $route dev $IFACE $TABLE
done
if [ -n "$IF_IP_GATEWAY" ]; then
$IP route add default via $IF_IP_GATEWAY dev $IFACE $TABLE
fi
if [ -n "$IF_IP_FORWARDING" ]; then
[ "$ADDRFAM" = "inet" ] && echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
[ "$ADDRFAM" = "inet6" ] && echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
fi
[ "$IF_IP_PROXY_NDP" = "1" ] && [ "$ADDRFAM" = "inet6" ] && echo 1 > /proc/sys/net/ipv6/conf/$IFACE/proxy_ndp
if [ "$ADDRFAM" = "inet" ]; then
if [ -n "$IF_ARP_IP" ]; then
$ARPTABLES -D OUTPUT -o $IFACE --opcode request -j mangle 2>/dev/null || true
$ARPTABLES -A OUTPUT -o $IFACE --opcode request -j mangle --mangle-ip-s $IF_ARP_IP
fi
fi