Revision 8a567d09

b/kvm-ifdown
6 6
source /etc/default/snf-network
7 7
source /usr/lib/snf-network/common.sh
8 8

  
9
if [ "x$INTERFACE" = "x" ]; then
10
  $SNF_NETWORK_LOG $0 "INTERFACE not set. Aborting"
11
else
12
  $SNF_NETWORK_LOG $0 "Unconfiguring interface $INTEFACE of $GANETI_INSTANCE_NAME"
13
fi
14

  
9 15
FROM=FROM${INTERFACE^^}
10 16
TO=TO${INTERFACE^^}
11 17

  
18
ONLY_LOCAL=$2
19

  
12 20
if [ "$MODE" = "routed" ]; then
13 21
  TABLE=$LINK
14
  INDEV=$INTERFACE
15 22
  DROPDHCPREQCMD="iptables -A FORWARD -D $INTERFACE -p udp --dport 67 -j DROP"
16 23
elif [ "$MODE" = "bridged" ]; then
17
  brctl delif $BRIDGE $INTERFACE
18
  INDEV=$BRIDGE
19 24
  DROPDHCPREQCMD="runlocked $RUNLOCKED_OPTS ebtables -D $FROM -p ipv4 --ip-protocol udp --ip-destination-port 67 -j DROP"
20 25
fi
21 26

  
......
35 40
  $MAC_FILTERED_TAG)
36 41
    try clear_ebtables
37 42
  ;;
43
  $DNS_TAG)
44
    if ! $ONLY_LOCAL; then
45
      get_rev4_info "$IP"
46
      get_eui64 "$MAC" "$SUBNET6"
47
      get_rev6_info "$EUI64"
48
      $SNF_NETWORK_LOG $0 "delete dns entry for $GANETI_INSTANCE_NAME $IP $EUI64"
49
      update_all delete
50
    fi
51
  ;;
38 52
  esac
39 53
done
40 54

  
b/snf-network-dnshook
10 10
FZONE=""
11 11
# the file with dns authorization keys
12 12
KEYFILE=""
13
MAC2EUI64="/usr/bin/mac2eui64"
14 13

  
15 14
source /etc/default/snf-network
16 15
source /usr/lib/snf-network/common.sh
......
19 18
  exit 0
20 19
fi
21 20

  
22
update_dns () {
23

  
24
  if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_CREATE" ]; then
25
    update_all add
26
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then
27
    update_all delete
28
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then
29
    update_all delete
30
    # Let's override a variable and add ourselves
31
    GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
32
    update_all add
33
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_STARTUP" ]; then
34
    update_all add
35
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then
36
    update_all delete
37
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REBOOT" ]; then
38
    update_all add
39
  elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then
40
    update_all add
41
  fi
42

  
43
}
44

  
45

  
46 21
# Query nameserver for entries related to the specific instance
47 22
# An example output is the following:
48 23
# www.google.com has address 173.194.113.114
......
65 40
# because we do not know which nics have been modify
66 41
reset_dns () {
67 42

  
68
  if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then
69
    query_dns
70
    # This should remove the A, AAAA, CNAME entries
71
    send_command "update delete $GANETI_INSTANCE_NAME.$FZONE"
72
    for ip in $HOST_IP_ALL; do
73
      get_rev4_info $ip
74
      # This should remove the IPv4 reverse entry
75
      send_command "update delete $RLPART.$RZONE"
76
    done
77
    for ip6 in $HOST_IP6_ALL; do
78
      get_rev6_info $ip6
79
      # This should remove the IPv6 reverse entry
80
      send_command "update delete $R6LPART$R6ZONE."
81
    done
82
  fi
43
  # This should remove the A, AAAA, CNAME entries
44
  send_command "update delete $GANETI_INSTANCE_NAME.$FZONE"
45
  for ip in $HOST_IP_ALL; do
46
    get_rev4_info $ip
47
    # This should remove the IPv4 reverse entry
48
    send_command "update delete $RLPART.$RZONE"
49
  done
50
  for ip6 in $HOST_IP6_ALL; do
51
    get_rev6_info $ip6
52
    # This should remove the IPv6 reverse entry
53
    send_command "update delete $R6LPART$R6ZONE."
54
  done
55

  
56
}
57

  
58
rename_instance (){
59

  
60
  for ip in $HOST_IP_ALL; do
61
    get_rev4_info $ip
62
    (
63
      GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
64
      IP=$ip
65
      update_arecord add
66
      update_ptrrecord add
67
    )
68
  done
69
  for ip6 in $HOST_IP6_ALL; do
70
    get_rev6_info $ip6
71
    (
72
      GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
73
      EUI64=$ip6
74
      update_aaaarecord add
75
      update_ptr6record add
76
    )
77
  done
83 78

  
84 79
}
85 80

  
......
93 88
  exit 0
94 89
fi
95 90

  
96
# This runs only for instance modification
97
reset_dns
98

  
99
# If GANETI_INSTANCE_NIC_COUNT is not set then nothing happens
100
FIRST=0
101
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1))
102
for idx in $(seq $FIRST $LAST); do
103
  ip=GANETI_INSTANCE_NIC${idx}_IP
104
  mac=GANETI_INSTANCE_NIC${idx}_MAC
105
  mode=GANETI_INSTANCE_NIC${idx}_MODE
106
  link=GANETI_INSTANCE_NIC${idx}_LINK
107
  subnet=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET
108
  subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6
109
  tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS
110
  eval IP=\$$ip
111
  eval MAC=\$$mac
112
  eval MODE=\$$mode
113
  eval LINK=\$$link
114
  eval SUBNET=\$$subnet
115
  eval SUBNET6=\$$subnet6
116
  eval TAGS=\$$tags
117

  
118
  for tag in $TAGS; do
119
    case $tag in
120
    $DNS_TAG)
121

  
122
      get_rev4_info "$IP"
123
      get_eui64 "$MAC" "$SUBNET6"
124
      get_rev6_info "$EUI64"
125
      $SNF_NETWORK_LOG dnshook "update dns for $GANETI_INSTANCE_NAME $IP $EUI64"
126
      update_dns
127

  
128
      ;;
129
    esac
130

  
131
  done
132

  
133
done
91
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then
92
  query_dns
93
  reset_dns
94
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then
95
  query_dns
96
  reset_dns
97
  rename_instance
98
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then
99
  query_dns
100
  reset_dns
101
fi

Also available in: Unified diff