我的IP网络列表不会与netaddr.cidr_merge
合并,即使某些IP网络相邻。我是否做错了什么?
>>> from netaddr import IPNetwork, cidr_merge
>>> iplist = [
IPNetwork('10.105.205.8/29'),
IPNetwork('10.105.205.16/28'),
IPNetwork('10.105.205.32/27'),
IPNetwork('10.105.205.64/26'),
IPNetwork('10.105.205.128/26'),
IPNetwork('10.105.205.192/28'),
IPNetwork('10.105.205.208/29'),
IPNetwork('10.105.206.48/28'),
IPNetwork('10.105.206.80/28')
]
>>> summary = cidr_merge(iplist)
>>> summary == iplist
True
我在Mac OSX 10.8.5上使用Python 3.3.4和netaddr 7.12。
2条答案
按热度按时间0lvr5msh1#
@黄昏-
谢谢您的回复。我同意第一部分,但第二部分...我想我知道您的意思,但它不是100%准确。例如,如果我从上面的编辑列表,并添加10.105.205.0/29。子网将总结为/25。是的,它们必须是2的幂,但整个子网的所有部分必须在netaddr总结之前存在,而不管它们是否具有相等的大小。
dhxwm5r42#
netaddr
在此处工作正常。无法总结所有相邻子网。例如,考虑子网
10.255.255.0/24
和11.0.0.0/24
。当它们相邻时(第一个子网以10.255.255.255
结束,第二个子网以11.0.0.0
开始),它们不能被总结,因为它们跨越的边界比这两个网络中的任何一个都大。此外,无论如何对齐,两个相邻的网络只有在大小相等时才能连接在一起。大小不匹配的网络不能合并到一个范围内,因为合并后的网络大小不是2的幂。