https://fedorahosted.org/freeipa/ticket/2138

Honza

--
Jan Cholasta
>From bfb4d16171de95adb6d6dc1b144f8d6ae3259aee Mon Sep 17 00:00:00 2001
From: Jan Cholasta <jchol...@redhat.com>
Date: Mon, 19 Mar 2012 08:52:11 -0400
Subject: [PATCH] Parse zone indices in IPv6 addresses in CheckedIPAddress.

ticket 2138
---
 ipapython/ipautil.py                 |    8 +++++++-
 tests/test_ipapython/test_ipautil.py |    4 ++++
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index 416ebf5..3855286 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -98,7 +98,13 @@ class CheckedIPAddress(netaddr.IPAddress):
             pass
         else:
             try:
-                addr = netaddr.IPAddress(addr, flags=self.netaddr_ip_flags)
+                try:
+                    addr = netaddr.IPAddress(addr, flags=self.netaddr_ip_flags)
+                except netaddr.AddrFormatError:
+                    addr = str(addr).partition('%')[0]
+                    addr = netaddr.IPAddress(addr, flags=self.netaddr_ip_flags)
+                    if addr.version != 6:
+                        raise
             except ValueError:
                 net = netaddr.IPNetwork(addr, flags=self.netaddr_ip_flags)
                 if not parse_netmask:
diff --git a/tests/test_ipapython/test_ipautil.py b/tests/test_ipapython/test_ipautil.py
index 68391c2..650e1ce 100644
--- a/tests/test_ipapython/test_ipautil.py
+++ b/tests/test_ipapython/test_ipautil.py
@@ -39,6 +39,8 @@ def test_ip_address():
     addrs = [
         ('10.11.12.13',     (10, 11, 12, 13),   8),
         ('10.11.12.13/14',  (10, 11, 12, 13),   14),
+        ('10.11.12.13%zoneid',),
+        ('10.11.12.13%zoneid/14',),
         ('10.11.12.1337',),
         ('10.11.12.13/33',),
         ('127.0.0.1',),
@@ -50,6 +52,8 @@ def test_ip_address():
 
         ('2001::1',         (0x2001, 0, 0, 0, 0, 0, 0, 1), 64),
         ('2001::1/72',      (0x2001, 0, 0, 0, 0, 0, 0, 1), 72),
+        ('2001::1%zoneid',  (0x2001, 0, 0, 0, 0, 0, 0, 1), 64),
+        ('2001::1%zoneid/72',),
         ('2001::1beef',),
         ('2001::1/129',),
         ('::1',),
-- 
1.7.7.6

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to