首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python库网络掩码IPv6

python库网络掩码IPv6
EN

Stack Overflow用户
提问于 2015-11-04 20:39:29
回答 2查看 1.1K关注 0票数 0

我在使用库。

我无法为IPv6 addresses.It指定网络掩码,只需要CIDR表示法。

代码语言:javascript
复制
>>> ipaddr.IPv6Network('2001:db00::0/24')
IPv6Network('2001:db00::/24')
>>> ipaddr.IPv6Network('2001:db00::0/ffff:ff00::')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib/python2.6/site-packages/ipaddr.py", line 1925, in __init__
   raise NetmaskValueError(addr[1])
ipaddr.NetmaskValueError: ffff:ff00::

是否有一种方法可以将netmask用于IPv6地址而不是CIDR

如果没有,是否有支持此功能的python库?

netmask转换为CIDR for IPv6的最重要的仿生方法是什么?

提亚

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-04 22:08:19

CIDR是在IPv6中指定子网的唯一官方方法。

因此,可能没有支持这一点的库。

但您可以数位,并将其转换为CIDR,并以位计数作为后缀。

代码语言:javascript
复制
mask = "ffff:fff0::"
bitCount = [0, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00, 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff]

count = 0
try:
  for w in mask.split(':'):
    if not w or int(w, 16) == 0: break
    count += bitCount.index(int(w, 16))
except:
  raise SyntaxError('Bad NetMask')
票数 3
EN

Stack Overflow用户

发布于 2015-11-04 21:56:27

IPv6不再使用网络掩码,总是使用CIDR符号。CIDR表示法在IPv4中也很常见,因为它比那些笨拙的网络掩码更容易处理:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33531561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档