@@ -8,59 +8,77 @@ display_usage() {
88 echo " Note: you may need root privileges for this."
99}
1010
11- autoconfigure_bridge_up_outside () {
12- autoconfigure_tunnel_up_outside
13-
14- ip link set ${DEVNAME_OUTSIDE} master ${BRIDGE}
15- }
16-
17- autoconfigure_bridge_down_outside () {
18- autoconfigure_tunnel_down_outside
19- }
11+ # ############# configure triggers ###############
2012
2113autoconfigure_tunnel_up_outside () {
14+ # precaution
2215 ! ip link delete ${DEVNAME_OUTSIDE}
2316 ! ip link delete ${DEVNAME_INSIDE}
17+
18+ # setup pseudo wire
2419 ip link add ${DEVNAME_OUTSIDE} type veth peer name ${DEVNAME_INSIDE}
2520 ! tc qdisc del dev ${DEVNAME_INSIDE} root
26- ip link set ${DEVNAME_OUTSIDE} up
21+ if [ ! -z " $MACADDR " ]; then
22+ ip link set ${DEVNAME_INSIDE} address ${MACADDR}
23+ fi
2724 ip link set ${DEVNAME_INSIDE} netns ${NSNAME}
25+ ip link set ${DEVNAME_OUTSIDE} up
26+ ip -n ${NSNAME} link set ${DEVNAME_INSIDE} up
27+
28+ # add ipv4 address at global end
2829 # let this fail silently if IPADDR_OUTSIDE is undefined
2930 ! ip address add ${IPADDR_OUTSIDE} dev ${DEVNAME_OUTSIDE}
30- ip -n ${NSNAME} link set ${DEVNAME_INSIDE} up
31+
32+ return 0 # additional precation against "set -e" in case of future mods of this function
33+ }
3134
32- if [ ! -z " $MACADDR " ]; then
33- ip link set ${DEVNAME_INSIDE} address ${MACADDR}
35+ autoconfigure_tunnel_up_inside () {
36+ # add ipv4 address at netns end
37+ if [ ! -z " ${IPADDR} " ]; then
38+ ip address add ${IPADDR} dev ${DEVNAME_INSIDE}
39+ fi
40+
41+ # setup default route
42+ if [ ! -z " ${GATEWAY} " ]; then
43+ ip route add default via ${GATEWAY%%/* } onlink
3444 fi
45+
46+ # if DHCP is configured
3547 if [ " ${DHCPV4} " == " 1" ]; then
3648 ! mkdir -p /var/run/netns
3749 dhclient -v -i ${DEVNAME_INSIDE} -nw -pf /var/run/netns/dhclient-${NSNAME} .pid
38- else
39- if [ ! -z " ${IPADDR} " ]; then
40- /bin/ip address add ${IPADDR} dev ${DEVNAME_INSIDE}
41- fi
42- if [ ! -z " ${GATEWAY} " ]; then
43- /bin/ip route add default via ${GATEWAY%%/* }
44- fi
4550 fi
46-
47- return 0 # additional precation against "set -e" in case of future mods of this function
51+
52+ return 0
4853}
4954
50- autoconfigure_tunnel_down_outside () {
55+ autoconfigure_tunnel_down_inside () {
56+ # kill DHCP client
5157 # do not run in ExecStartPost to prevent forked dhclient from being killed
5258 ! kill -15 ` cat /var/run/netns/dhclient-${NSNAME} .pid`
5359 ! rm /var/run/netns/dhclient-${NSNAME} .pid
60+ }
61+
62+ autoconfigure_tunnel_down_outside () {
5463 ip link delete ${DEVNAME_OUTSIDE}
5564}
5665
57- autoconfigure_nat_up_inside () {
58- # add default route if gateway undefined
59- if [ -z " ${GATEWAY} " -a -n " ${IPADDR_OUTSIDE} " ]; then
60- ip route add default via ${IPADDR_OUTSIDE%%/* }
61- fi
66+ autoconfigure_bridge_up_outside () {
67+ autoconfigure_tunnel_up_outside
6268
63- return 0 # additional precation against "set -e" in case of future mods of this function
69+ ip link set ${DEVNAME_OUTSIDE} master ${BRIDGE}
70+ }
71+
72+ autoconfigure_bridge_up_inside () {
73+ autoconfigure_tunnel_up_inside
74+ }
75+
76+ autoconfigure_bridge_down_inside () {
77+ autoconfigure_tunnel_down_inside
78+ }
79+
80+ autoconfigure_bridge_down_outside () {
81+ autoconfigure_tunnel_down_outside
6482}
6583
6684autoconfigure_nat_up_outside () {
@@ -84,6 +102,23 @@ autoconfigure_nat_up_outside() {
84102 return 0 # additional precation against "set -e" in case of future mods of this function
85103}
86104
105+ autoconfigure_nat_up_inside () {
106+ autoconfigure_tunnel_up_inside
107+
108+ # add default route if gateway undefined
109+ if [ -z " ${GATEWAY} " -a -n " ${IPADDR_OUTSIDE} " ]; then
110+ ip route add default via ${IPADDR_OUTSIDE%%/* }
111+ fi
112+
113+ return 0 # additional precation against "set -e" in case of future mods of this function
114+ }
115+
116+ autoconfigure_nat_down_inside () {
117+ autoconfigure_tunnel_down_inside
118+
119+ return 0
120+ }
121+
87122autoconfigure_nat_down_outside () {
88123 # remove NAT
89124 iptables -t nat -D POSTROUTING -s ${IPADDR_OUTSIDE} -j MASQUERADE
@@ -93,6 +128,8 @@ autoconfigure_nat_down_outside() {
93128 iptables -D INPUT -i ${DEVNAME_OUTSIDE} -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
94129
95130 autoconfigure_tunnel_down_outside
131+
132+ return 0
96133}
97134
98135autoconfigure_mvbr_up_outside () {
0 commit comments