2017-05-02 2 views
1

Je remarque un problème avec la méthode cidrs() pour IPRange dans netaddr lors de l'utilisation d'IPv6.IPRange IPv6 et cidrs()

Si je définis une plus petite IPv6 gamme fonctionne correctement:

r1=IPRange('1fe::2','1fe::100') 
r1.cidrs() 
[IPNetwork('1fe::2/127'), IPNetwork('1fe::4/126'), IPNetwork('1fe::8/125'), IPNetwork('1fe::10/124'), IPNetwork('1fe::20/123'), IPNetwork('1fe::40/122'), IPNetwork('1fe::80/121'), IPNetwork('1fe::100/128')] 

Si je définis un grand ensemble de la gamme, je reçois un retraçage:

r1=IPRange('1fe::2','2fe::1') 
r1.cidrs() 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python2.7/dist-packages/netaddr/ip/__init__.py", line 1337, 
in cidrs 
return iprange_to_cidrs(self._start, self._end) 
File "/usr/lib/python2.7/dist-packages/netaddr/ip/__init__.py", line 1798, 
in iprange_to_cidrs 
cidr_remainder = cidr_exclude(cidr_list.pop(), ip) 
IndexError: pop from empty list 

Est-ce que quelqu'un sait si cela est une limitation ou un bug dans cidrs()?

Répondre

1

C'est un bug en version 0.7.10 de netaddr qui a été corrigé dans la version 0.7.11. Toutes les versions suivantes semblent fonctionner comme prévu pour la plage IP dans votre exemple.