Revision 5b3472ad
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 |
b/kvm-vif-bridge | ||
---|---|---|
29 | 29 |
# DROPDHCPREQCMD="runlocked $RUNLOCKED_OPTS ebtables -A $FROM -p ipv4 --ip-protocol udp --ip-destination-port 67 -j DROP" |
30 | 30 |
fi |
31 | 31 |
|
32 |
GANETI_INSTANCE_NAME=$INSTANCE |
|
33 |
get_info |
|
32 | 34 |
|
33 | 35 |
for tag in $NETWORK_TAGS; do |
34 | 36 |
case $tag in |
b/snf-network-dnshook | ||
---|---|---|
113 | 113 |
eval LINK=\$$link |
114 | 114 |
eval NETWORK_SUBNET=\$$subnet |
115 | 115 |
eval NETWORK_SUBNET6=\$$subnet6 |
116 |
eval TAGS=\$$tags |
|
116 |
eval NETWORK_TAGS=\$$tags
|
|
117 | 117 |
|
118 |
for tag in $TAGS; do |
|
118 |
for tag in $NETWORK_TAGS; do
|
|
119 | 119 |
case $tag in |
120 | 120 |
$DNS_TAG) |
121 | 121 |
|
122 |
get_rev4_info "$IP" |
|
123 |
get_eui64 "$MAC" "$NETWORK_SUBNET6" |
|
124 |
get_rev6_info "$EUI64" |
|
122 |
get_info |
|
125 | 123 |
$SNF_NETWORK_LOG dnshook "update dns for $GANETI_INSTANCE_NAME $IP $EUI64" |
126 | 124 |
update_dns |
127 | 125 |
|
b/snf-network-hook | ||
---|---|---|
20 | 20 |
eval MAC=\$$mac |
21 | 21 |
eval MODE=\$$mode |
22 | 22 |
eval LINK=\$$link |
23 |
eval NETWORK=\$$network |
|
24 |
eval SUBNET6=\$$subnet6 |
|
25 |
eval TAGS=\$$tags |
|
23 |
eval NETWORK_SUBNET=\$$network
|
|
24 |
eval NETWORK_SUBNET6=\$$subnet6
|
|
25 |
eval NETWORK_TAGS=\$$tags
|
|
26 | 26 |
|
27 |
for tag in $TAGS; do |
|
27 |
for tag in $NETWORK_TAGS; do
|
|
28 | 28 |
case $tag in |
29 | 29 |
$IP_LESS_ROUTED_TAG) |
30 | 30 |
if [ "$GANETI_OLD_PRIMARY" == "$host.$domain" ]; then |
31 | 31 |
# This runs on the source node |
32 |
# We invoke get_info here in order not to log and calculate things |
|
33 |
# that are not needed eventually |
|
34 |
get_info |
|
32 | 35 |
delete_neighbor_proxy |
33 | 36 |
elif [ "$GANETI_NEW_PRIMARY" == "$host.$domain" ]; then |
34 | 37 |
$SNF_NETWORK_LOG $0 "Do nothing in new primary. All done by if-up script" |
b/vif-custom | ||
---|---|---|
46 | 46 |
DROPDHCPREQCMD="runlocked $RUNLOCKED_OPTS ebtables -A $FROM -p ipv4 --ip-protocol udp --ip-destination-port 67 -j DROP" |
47 | 47 |
fi |
48 | 48 |
|
49 |
get_info |
|
49 | 50 |
|
50 | 51 |
for tag in $NETWORK_TAGS; do |
51 | 52 |
case $tag in |
Also available in: Unified diff