[Level 2] Implement prefix and netmask transfer with Python.
Sometimes, you want to transfer between netmask and prefix setting.
You can use the following sample script which is written by Python.
You can use the following sample script which is written by Python.
#!/bin/env python
def transferPrefix2Netmask(self, prefix):
netmask = ''
nLeadingFF = prefix / 8
netmask += '.'.join(['255']*nLeadingFF)
if nLeadingFF != 4:
netmask += '.' + str(256-2**(8-prefix%8))
nSuffix00 = 3 - nLeadingFF
if nLeadingFF < 3:
netmask += '.' + '.'.join(['00']*nSuffix00)
return netmask
def transferNetmask2Prefix(self, netmask):
prefix = 0
left = 0
for i in netmask.split('.'):
if i == '255':
prefix += 8
else:
left = int(i)
break
if left != 0:
for n in range(7, 0, -1):
prefix += 1
if left - 2 ** n == 0:
break
else:
left -= 2 ** n
return prefix
print transferPrefix2Netmask(16)
print transferPrefix2Netmask(17)
print transferPrefix2Netmask(18)
print transferPrefix2Netmask(22)
print transferPrefix2Netmask(23)
print transferPrefix2Netmask(24)
print transferNetmask2Prefix('255.255.128.0')
print transferNetmask2Prefix('255.255.192.0')
print transferNetmask2Prefix('255.255.252.0')
print transferNetmask2Prefix('255.255.254.0')
print transferNetmask2Prefix('255.255.255.0')
print transferNetmask2Prefix('255.255.255.128')
print transferNetmask2Prefix('255.255.255.192')
print transferNetmask2Prefix('255.255.255.252')
print transferNetmask2Prefix('255.255.255.254')
print transferNetmask2Prefix('255.255.255.255')
Wish this helps. regards, Stanley Huang
Comments
Post a Comment