Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. class NotValidAddressException(Exception):
  4. pass
  5.  
  6. def ipaddr_aton(ipaddr):
  7. _tmp = ''
  8. lead_bit = True
  9. base = 10
  10. ipaddr_len = len(ipaddr)
  11. blk_count = 3
  12. bit_count = 0
  13. sum = 0
  14. for i, item in enumerate(ipaddr):
  15. if lead_bit:
  16. if item == '0':
  17. base = 8
  18. elif item == 'x' or item == 'X':
  19. base = 16
  20. lead_bit = False
  21. continue
  22. elif item == ' ':
  23. continue
  24. else:
  25. if bit_count == 0:
  26. base = 10
  27. lead_bit = False
  28.  
  29. if item != '.':
  30. _tmp += item
  31. bit_count += 1
  32.  
  33. if item == '.' or i+1 == ipaddr_len:
  34. if blk_count < 0:
  35. raise NotValidAddressException
  36.  
  37. if i+1 == ipaddr_len and blk_count != 0:
  38. blk_count = 0
  39. try:
  40. blk_value = int(_tmp, base)
  41. except:
  42. raise NotValidAddressException
  43.  
  44. if blk_value > 255:
  45. raise NotValidAddressException
  46.  
  47. sum += blk_value << (8*blk_count)
  48.  
  49. lead_bit = True
  50. _tmp = ''
  51. blk_count -= 1
  52. bit_count = 0
  53. return sum
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement