Revision 5b3472ad common.sh
b/common.sh | ||
---|---|---|
24 | 24 |
|
25 | 25 |
function delete_neighbor_proxy { |
26 | 26 |
|
27 |
get_uplink $LINK "-6" |
|
28 |
get_eui64 $MAC $NETWORK_SUBNET6 |
|
29 |
|
|
30 |
if [ -z "$EUI64" -z -o "$UPLINK" ]; then |
|
27 |
if [ -z "$EUI64" -z -o "$UPLINK6" ]; then |
|
31 | 28 |
return |
32 | 29 |
fi |
33 | 30 |
|
34 |
$SNF_NETWORK_LOG $0 "ip -6 neigh del proxy $EUI64 dev $UPLINK" |
|
35 |
ip -6 neigh del proxy $EUI64 dev $UPLINK |
|
31 |
$SNF_NETWORK_LOG $0 "ip -6 neigh del proxy $EUI64 dev $UPLINK6"
|
|
32 |
ip -6 neigh del proxy $EUI64 dev $UPLINK6
|
|
36 | 33 |
|
37 | 34 |
} |
38 | 35 |
|
... | ... | |
87 | 84 |
|
88 | 85 |
function send_garp { |
89 | 86 |
|
90 |
get_uplink $TABLE |
|
91 | 87 |
if [ -z "$IP" -o -z "$UPLINK" ]; then |
92 | 88 |
return |
93 | 89 |
fi |
... | ... | |
101 | 97 |
} |
102 | 98 |
|
103 | 99 |
function routed_setup_ipv6 { |
104 |
# Add a routing entry for the eui-64 |
|
105 |
get_uplink $TABLE "-6" |
|
106 |
get_eui64 $MAC $NETWORK_SUBNET6 |
|
107 | 100 |
|
108 |
if [ -z "$EUI64" -o -z "$TABLE" -o -z "$INTERFACE" -o -z "$UPLINK" ] |
|
101 |
if [ -z "$EUI64" -o -z "$TABLE" -o -z "$INTERFACE" -o -z "$UPLINK6" ]
|
|
109 | 102 |
then |
110 | 103 |
return |
111 | 104 |
fi |
112 |
|
|
105 |
# Add a routing entry for the eui-64 |
|
113 | 106 |
ip -6 rule add dev $INTERFACE table $TABLE |
114 | 107 |
ip -6 ro replace $EUI64/128 dev $INTERFACE table $TABLE |
115 |
ip -6 neigh add proxy $EUI64 dev $UPLINK |
|
108 |
ip -6 neigh add proxy $EUI64 dev $UPLINK6
|
|
116 | 109 |
|
117 | 110 |
# disable proxy NDP since we're handling this on userspace |
118 | 111 |
# this should be the default, but better safe than sorry |
119 | 112 |
echo 0 > /proc/sys/net/ipv6/conf/$INTERFACE/proxy_ndp |
120 | 113 |
|
121 | 114 |
# Send Unsolicited Neighbor Advertisement |
122 |
$SNF_NETWORK_LOG $0 "ndsend $EUI64 $UPLINK" |
|
123 |
ndsend $EUI64 $UPLINK |
|
115 |
$SNF_NETWORK_LOG $0 "ndsend $EUI64 $UPLINK6"
|
|
116 |
ndsend $EUI64 $UPLINK6
|
|
124 | 117 |
|
125 | 118 |
} |
126 | 119 |
|
... | ... | |
209 | 202 |
SUBNET=$NETWORK_SUBNET |
210 | 203 |
GATEWAY6=$NETWORK_GATEWAY6 |
211 | 204 |
SUBNET6=$NETWORK_SUBNET6 |
212 |
EUI64=$($MAC2EUI64 $MAC $NETWORK_SUBNET6 2>/dev/null)
|
|
205 |
EUI64=$EUI64
|
|
213 | 206 |
EOF |
214 | 207 |
|
215 | 208 |
} |
... | ... | |
217 | 210 |
function get_uplink { |
218 | 211 |
|
219 | 212 |
local table=$1 |
220 |
local version=$2
|
|
221 |
UPLINK=$(ip $version route list table $table | grep "default via" | awk '{print $5}')
|
|
222 |
$SNF_NETWORK_LOG $0 "* uplink for table $table is $UPLINK"
|
|
213 |
UPLINK=$(ip route list table $table | grep "default via" | awk '{print $5}')
|
|
214 |
UPLINK6=$(ip -6 route list table $table | grep "default via" | awk '{print $5}')
|
|
215 |
$SNF_NETWORK_LOG $0 "* Table $table: uplink -> $UPLINK, uplink6 -> $UPLINK6"
|
|
223 | 216 |
|
224 | 217 |
} |
225 | 218 |
|
... | ... | |
236 | 229 |
EUI64= |
237 | 230 |
else |
238 | 231 |
EUI64=$($MAC2EUI64 $mac $prefix) |
239 |
$SNF_NETWORK_LOG $0 "* eui64 for $mac inside $prefix is $EUI64"
|
|
232 |
$SNF_NETWORK_LOG $0 "* $mac + $prefix -> $EUI64"
|
|
240 | 233 |
fi |
241 | 234 |
|
242 | 235 |
} |
... | ... | |
308 | 301 |
update_all () { |
309 | 302 |
|
310 | 303 |
local action=$1 |
304 |
$SNF_NETWORK_LOG $0 "Update ($action) dns for $GANETI_INSTANCE_NAME $IP $EUI64" |
|
311 | 305 |
update_arecord $action |
312 | 306 |
update_aaaarecord $action |
313 | 307 |
update_ptrrecord $action |
... | ... | |
360 | 354 |
} |
361 | 355 |
|
362 | 356 |
|
357 |
# Use environment variables to calculate desired info |
|
358 |
# IP, MAC, LINK, TABLE, BRIDGE, |
|
359 |
# NETWORK_SUBNET, NETWORK_GATEWAY, NETWORK_SUBNET6, NETWORK_GATEWAY6 |
|
360 |
function get_info { |
|
361 |
|
|
362 |
$SNF_NETWORK_LOG $0 "Getting info for $INTERFACE of $GANETI_INSTANCE_NAME" |
|
363 |
get_rev4_info $IP |
|
364 |
get_eui64 $MAC $NETWORK_SUBNET6 |
|
365 |
get_rev6_info $EUI64 |
|
366 |
get_uplink $TABLE |
|
367 |
|
|
368 |
} |
|
369 |
|
|
370 |
|
|
363 | 371 |
# Query nameserver for entries related to the specific instance |
364 | 372 |
# An example output is the following: |
365 | 373 |
# www.google.com has address 173.194.113.114 |
Also available in: Unified diff