summaryrefslogtreecommitdiff
path: root/ncserver/module/nms_ifupdownng.py
diff options
context:
space:
mode:
Diffstat (limited to 'ncserver/module/nms_ifupdownng.py')
-rw-r--r--ncserver/module/nms_ifupdownng.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/ncserver/module/nms_ifupdownng.py b/ncserver/module/nms_ifupdownng.py
index a607215..76f7c32 100644
--- a/ncserver/module/nms_ifupdownng.py
+++ b/ncserver/module/nms_ifupdownng.py
@@ -756,21 +756,22 @@ def add_address(iface: str, _type, addr: str, prefix):
LOGGER.error(_("unknown address type %r"), _type)
return
- addr = None
- iface = ipaddress.IPv6Interface
+ ip_addr = None
+ ctor = ipaddress.IPv6Interface
if _type == socket.AF_INET:
- iface = ipaddress.IPv4Interface
+ ctor = ipaddress.IPv4Interface
try:
- addr = iface("{a}/{p}".format(a=addr, p=prefix))
+ ip_addr = ctor("{a}/{p}".format(a=addr, p=prefix))
except Exception as err:
raise ValueError("IP address is not valid") from err
- s_addr = str(addr)
-
- if s_addr in list_addresses(iface):
- raise RuntimeError("Duplicate address attempt")
+ for candidate in list_addresses(iface):
+ cand_addr = candidate.split('/')[0]
+ if addr == cand_addr:
+ raise RuntimeError("Duplicate address attempt")
+ s_addr = str(ip_addr)
_add_one_to_list(iface, 'address', s_addr)