Revision e7323b5e lib/backend.py

b/lib/backend.py
287 287
        logging.error(msg)
288 288
        err_msgs.append(msg)
289 289
    else:
290
      result = utils.RunCmd(["ip", "address", "add", "%s/32" % master_ip,
290
      netmask = 32
291
      if netutils.IP6Address.IsValid(master_ip):
292
        netmask = 128
293

  
294
      result = utils.RunCmd(["ip", "address", "add",
295
                             "%s/%d" % (master_ip, netmask),
291 296
                             "dev", master_netdev, "label",
292 297
                             "%s:0" % master_netdev])
293 298
      if result.failed:
......
295 300
        logging.error(msg)
296 301
        err_msgs.append(msg)
297 302

  
298
      result = utils.RunCmd(["arping", "-q", "-U", "-c 3", "-I", master_netdev,
299
                             "-s", master_ip, master_ip])
300
      # we'll ignore the exit code of arping
303
      # we ignore the exit code of the following cmds
304
      if netutils.IP4Address.IsValid(master_ip):
305
        utils.RunCmd(["arping", "-q", "-U", "-c 3", "-I", master_netdev, "-s",
306
                      master_ip, master_ip])
307
      elif netutils.IP6Address.IsValid(master_ip):
308
        utils.RunCmd(["ndisc6", "-q", "-r 3", master_ip, master_netdev])
301 309

  
302 310
  if err_msgs:
303 311
    _Fail("; ".join(err_msgs))
......
322 330
  # GetMasterInfo will raise an exception if not able to return data
323 331
  master_netdev, master_ip, _ = GetMasterInfo()
324 332

  
325
  result = utils.RunCmd(["ip", "address", "del", "%s/32" % master_ip,
333
  netmask = 32
334
  if netutils.IP6Address.IsValid(master_ip):
335
    netmask = 128
336

  
337
  result = utils.RunCmd(["ip", "address", "del",
338
                         "%s/%d" % (master_ip, netmask),
326 339
                         "dev", master_netdev])
327 340
  if result.failed:
328 341
    logging.error("Can't remove the master IP, error: %s", result.output)

Also available in: Unified diff