jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/355213 )

Change subject: Fix IPPrefix IPv6 string padding bug
......................................................................


Fix IPPrefix IPv6 string padding bug

When an IPv6 prefix starting or ending with '::' would be passed
to the IPPrefix constructor, self.prefix was padded incorrectly.

Change-Id: I3173d52cf67f2220b2d63fc78f1fa8761a184a4c
---
M pybal/bgp/ip.py
1 file changed, 8 insertions(+), 3 deletions(-)

Approvals:
  Ema: Looks good to me, but someone else must approve
  Mark Bergsma: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pybal/bgp/ip.py b/pybal/bgp/ip.py
index cf01579..444da9c 100644
--- a/pybal/bgp/ip.py
+++ b/pybal/bgp/ip.py
@@ -58,6 +58,12 @@
                 self.prefix = b"".join([chr(int(o)) for o in 
prefix.split('.')])
             elif self.addressfamily == AFI_INET6:
                 self.prefix = bytearray()
+                # If prefix starts or ends with :: then .split() returns two
+                # empty strings
+                if prefix.startswith('::'):
+                    prefix = '0' + prefix
+                elif prefix.endswith('::'):
+                    prefix = prefix + '0'
                 hexlist = prefix.split(":")
                 if len(hexlist) > 8:
                     raise ValueError()
@@ -66,8 +72,7 @@
                     if hexstr is not "":
                         self.prefix += struct.pack('!H', int(hexstr, 16))
                     else:
-                        zeroCount = 8 - len(hexlist) + 1
-                        self.prefix += struct.pack('!%dH' % zeroCount, *((0,) 
* zeroCount))
+                        self.prefix.extend('\0\0' * (8 - len(hexlist) + 1))
                 self.prefix = bytes(self.prefix)
 
             self.prefixlen = int(prefixlen)
@@ -130,7 +135,7 @@
 
     def packed(self, pad=False):
         if pad:
-            return self.prefix + '\0' * (self._packedMaxLen() - 
len(self.prefix))
+            return self.prefix.ljust(self._packedMaxLen(), '\0')
         else:
             return self.prefix
 

-- 
To view, visit https://gerrit.wikimedia.org/r/355213
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I3173d52cf67f2220b2d63fc78f1fa8761a184a4c
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Mark Bergsma <[email protected]>
Gerrit-Reviewer: Ema <[email protected]>
Gerrit-Reviewer: Mark Bergsma <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to