Created
December 1, 2020 20:10
-
-
Save haarcuba/dc0cee1c065545315e54bacc060bf2ae to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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