Skip to content

Instantly share code, notes, and snippets.

@haarcuba
Created December 1, 2020 20:10
Show Gist options
  • Save haarcuba/dc0cee1c065545315e54bacc060bf2ae to your computer and use it in GitHub Desktop.
Save haarcuba/dc0cee1c065545315e54bacc060bf2ae to your computer and use it in GitHub Desktop.
class Route:
def __init__(self, cidr):
self._address, mask_bits = cidr.split('/')
mask_bits = int(mask_bits)
self._mask = 0xffffffff & (0xffffffff << (32 - mask_bits))
self._mask_bits = mask_bits
self._address_number = self.number(self._address)
self._hex_address = self._hex4(self._address_number)
def __repr__(self):
return f'{self._address}/{self._mask_bits}'
def number(self, ip):
hex_address = ''.join([f'{int(n):02x}' for n in ip.split('.')])
return int(hex_address, 16)
def compatible(self, ip):
ip_number = self.number(ip)
masked = self._hex4(ip_number & self._mask)
return masked == self._hex_address
@property
def mask(self):
return self._hex4(self._mask)
def _hex4(self, number):
return f'{number:08x}'
import IPython
IPython.embed()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment