def test_ipv6_4(self): net = Network('2001:dead:beef:1:c01d:c01a::', 'ffff:ffff:ffff::') self.assertTrue( str(net) == '2001:dead:beef:0001:c01d:c01a:0000:0000/48') self.assertTrue( str(net.to_compressed()) == '2001:dead:beef:1:c01d:c01a::') self.assertTrue( str(net.to_ipv6().to_compressed()) == '2001:dead:beef:1:c01d:c01a::') self.assertTrue(net.info() == 'UNKNOWN') self.assertTrue(net.subnet() == 48) self.assertTrue(net.size() == 1 << (128 - 48)) self.assertTrue(int(net) == 0x2001deadbeef0001c01dc01a00000000) self.assertTrue( net.hex().lower() == '2001deadbeef0001c01dc01a00000000') self.assertTrue( str(net.netmask()) == 'ffff:ffff:ffff:0000:0000:0000:0000:0000') self.assertTrue(net.version() == 6) self.assertTrue( str(net.network()) == '2001:dead:beef:0000:0000:0000:0000:0000') self.assertTrue( str(net.broadcast()) == '2001:dead:beef:ffff:ffff:ffff:ffff:ffff') self.assertFalse('123:456::' in net) self.assertFalse('::aaaa:bbbb:cccc:dddd' in net) self.assertFalse('::dddd' in net) self.assertFalse('::1' in net) self.assertFalse('123::456' in net) self.assertTrue('2001:dead:beef:babe::1234' in net)
def test_ipv6_1(self): net = Network('123::', 128) self.assertTrue( str(net) == '0123:0000:0000:0000:0000:0000:0000:0000/128') self.assertTrue(str(net.to_compressed()) == '123::') self.assertTrue(str(net.to_ipv6().to_compressed()) == '123::') self.assertTrue(net.info() == 'UNKNOWN') self.assertTrue(net.subnet() == 128) self.assertTrue(net.size() == 1 << (128 - 128)) self.assertTrue(int(net) == (0x123 << 112)) self.assertTrue( net.hex().lower() == '01230000000000000000000000000000') self.assertTrue( str(net.netmask()) == 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') self.assertTrue(net.version() == 6) self.assertTrue( str(net.network()) == '0123:0000:0000:0000:0000:0000:0000:0000') self.assertTrue( str(net.broadcast()) == '0123:0000:0000:0000:0000:0000:0000:0000') self.assertFalse('123:456::' in net) self.assertTrue('123::' in net) self.assertFalse('::1' in net) self.assertFalse('123::456' in net) self.assertTrue(str((net + 6).to_compressed()).lower() == '123::6') self.assertFalse((net + 6) in net) self.assertTrue( str((net - 6).to_compressed()).lower() == '122:ffff:ffff:ffff:ffff:ffff:ffff:fffa') self.assertFalse((net - 6) in net)
def test_ipv6_2(self): net = Network('::42', 64) self.assertTrue( str(net) == '0000:0000:0000:0000:0000:0000:0000:0042/64') self.assertTrue(str(net.to_compressed()) == '::42') self.assertTrue(str(net.to_ipv6().to_compressed()) == '::42') self.assertTrue(net.info() == 'IPV4COMP') self.assertTrue(net.subnet() == 64) self.assertTrue(net.size() == 1 << (128 - 64)) self.assertTrue(int(net) == 0x42) self.assertTrue( net.hex().lower() == '00000000000000000000000000000042') self.assertTrue( str(net.netmask()) == 'ffff:ffff:ffff:ffff:0000:0000:0000:0000') self.assertTrue(net.version() == 6) self.assertTrue( str(net.network()) == '0000:0000:0000:0000:0000:0000:0000:0000') self.assertTrue( str(net.broadcast()) == '0000:0000:0000:0000:ffff:ffff:ffff:ffff') self.assertFalse('123:456::' in net) self.assertTrue('::aaaa:bbbb:cccc:dddd' in net) self.assertTrue('::dddd' in net) self.assertTrue('::1' in net) self.assertFalse('123::456' in net) self.assertTrue(str((net + 6).to_compressed()).lower() == '::48') self.assertTrue((net + 6) in net) self.assertTrue(str((net - 6).to_compressed()).lower() == '::3c') self.assertTrue((net - 6) in net)
def get_network(ip_range): """ Get network from provided IP :param ip_range: :return: """ try: ip = Network(ip_range) network = "{}/{}".format(str(ip.network()), str(ip.subnet())) except ValueError as e: current_app.logger.debug(e) return return network
def get_context_data(self, **kwargs): from django.db.models import Sum from ipam.models import BLOCK_STATUSES def search_free(vrf, network, statuses): """ Free blocks recursive search :param vrf: VRF :type vrf: Vrf :param network: Network :type network: Network """ f_ip = network.ip l_ip = network.broadcast_long() size = network.size() blocked_size = \ vrf.prefixes().filter(status__in=statuses, first_ip_dec__gte=f_ip, last_ip_dec__lte=l_ip).aggregate( sum_size=Sum('size'))['sum_size'] if not blocked_size: blocked_size = 0 if size == blocked_size: return [] elif blocked_size == 0: if vrf.prefixes().filter(first_ip_dec__lte=f_ip, last_ip_dec__gte=l_ip): parent = vrf.prefixes().filter(first_ip_dec__lte=f_ip, last_ip_dec__gte=l_ip).last() else: parent = None if size == 1: create_url = '{0}?prefix={1}'.format(reverse_lazy('ipam.host4_add', kwargs={'vrf': vrf.name}), network.dq) else: create_url = '{0}?prefix={1}'.format(reverse_lazy('ipam.prefix4_add', kwargs={'vrf': vrf.name}), network) return [{'prefix': str(network), 'parent': parent, 'create_url': create_url}] else: net_1 = Network('{0}/{1}'.format(network.to_tuple()[0], network.to_tuple()[1] + 1)) net_2 = Network('{0}/{1}'.format(IP(net_1.broadcast_long() + 1).dq, network.subnet() + 1)) return search_free(vrf, net_1, statuses) + search_free(vrf, net_2, statuses) context = super(FreeBlocks4ReportView, self).get_context_data(**kwargs) context['page_title'] = u'Free IPv4 Blocks' if 'vrf' in self.request.GET and 'prefix' in self.request.GET: if Vrf.objects.filter(name=self.request.GET['vrf']): net = Network(self.request.GET['prefix']) if net.dq != net.network(): net = Network('{0}/{1}'.format(net.network(), net.subnet())) context['report'] = search_free(Vrf.objects.get(name=self.request.GET['vrf']), net, BLOCK_STATUSES) context['total'] = len(context['report']) return context
def test_ipv4_3(self): net = Network("10.10.0.0/255.255.255.0") self.assertTrue(str(net) == "10.10.0.0/24") self.assertTrue(str(net.to_ipv6().to_compressed()) == "2002:a0a::") self.assertTrue(net.info() == "PRIVATE") self.assertTrue(net.subnet() == 24) self.assertTrue(net.size() == 1 << (32 - 24)) self.assertTrue(int(net) == 0x0A0A0000) self.assertTrue(net.hex().lower() == "0a0a0000") self.assertTrue(str(net.netmask()) == "255.255.255.0") self.assertTrue(net.version() == 4) self.assertTrue(str(net.network()) == "10.10.0.0") self.assertTrue(str(net.broadcast()) == "10.10.0.255") self.assertFalse("192.168.0.1" in net) self.assertFalse("192.168.114.128" in net) self.assertFalse("10.0.0.1" in net) self.assertTrue("10.10.0.254" in net) self.assertTrue("10.10.0.100" in net)
def test_ipv4_3(self): net = Network('10.10.0.0/255.255.255.0') self.assertTrue(str(net) == '10.10.0.0/24') self.assertTrue(str(net.to_ipv6().to_compressed()) == '2002:a0a::') self.assertTrue(net.info() == 'PRIVATE') self.assertTrue(net.subnet() == 24) self.assertTrue(net.size() == 1 << (32 - 24)) self.assertTrue(int(net) == 0x0a0a0000) self.assertTrue(net.hex().lower() == '0a0a0000') self.assertTrue(str(net.netmask()) == '255.255.255.0') self.assertTrue(net.version() == 4) self.assertTrue(str(net.network()) == '10.10.0.0') self.assertTrue(str(net.broadcast()) == '10.10.0.255') self.assertFalse('192.168.0.1' in net) self.assertFalse('192.168.114.128' in net) self.assertFalse('10.0.0.1' in net) self.assertTrue('10.10.0.254' in net) self.assertTrue('10.10.0.100' in net)
def test_ipv4_1(self): net = Network("192.168.114.42", 23) self.assertTrue(str(net) == "192.168.114.42/23") self.assertTrue(str(net.to_ipv6().to_compressed()) == "2002:c0a8:722a::") self.assertTrue(net.info() == "PRIVATE") self.assertTrue(net.subnet() == 23) self.assertTrue(net.size() == 1 << (32 - 23)) self.assertTrue(int(net) == 0xC0A8722A) self.assertTrue(net.hex().lower() == "c0a8722a") self.assertTrue(str(net.netmask()) == "255.255.254.0") self.assertTrue(net.version() == 4) self.assertTrue(str(net.network()) == "192.168.114.0") self.assertTrue(str(net.broadcast()) == "192.168.115.255") self.assertFalse("192.168.0.1" in net) self.assertTrue("192.168.114.128" in net) self.assertFalse("10.0.0.1" in net) self.assertTrue(str(net + 6) == "192.168.114.48/23") self.assertTrue((net + 6) in net) self.assertTrue(str(net - 6) == "192.168.114.36/23") self.assertTrue((net - 6) in net)
def test_ipv6_4(self): net = Network("2001:dead:beef:1:c01d:c01a::", "ffff:ffff:ffff::") self.assertTrue(str(net) == "2001:dead:beef:0001:c01d:c01a:0000:0000/48") self.assertTrue(str(net.to_compressed()) == "2001:dead:beef:1:c01d:c01a::") self.assertTrue(str(net.to_ipv6().to_compressed()) == "2001:dead:beef:1:c01d:c01a::") self.assertTrue(net.info() == "UNKNOWN") self.assertTrue(net.subnet() == 48) self.assertTrue(net.size() == 1 << (128 - 48)) self.assertTrue(int(net) == 0x2001DEADBEEF0001C01DC01A00000000) self.assertTrue(net.hex().lower() == "2001deadbeef0001c01dc01a00000000") self.assertTrue(str(net.netmask()) == "ffff:ffff:ffff:0000:0000:0000:0000:0000") self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == "2001:dead:beef:0000:0000:0000:0000:0000") self.assertTrue(str(net.broadcast()) == "2001:dead:beef:ffff:ffff:ffff:ffff:ffff") self.assertFalse("123:456::" in net) self.assertFalse("::aaaa:bbbb:cccc:dddd" in net) self.assertFalse("::dddd" in net) self.assertFalse("::1" in net) self.assertFalse("123::456" in net) self.assertTrue("2001:dead:beef:babe::1234" in net)
def test_ipv4_1(self): net = Network('192.168.114.42', 23) self.assertTrue(str(net) == '192.168.114.42/23') self.assertTrue(str(net.to_ipv6().to_compressed()) == '2002:c0a8:722a::') self.assertTrue(net.info() == 'PRIVATE') self.assertTrue(net.subnet() == 23) self.assertTrue(net.size() == 1 << (32 - 23)) self.assertTrue(int(net) == 0xc0a8722a) self.assertTrue(net.hex().lower() == 'c0a8722a') self.assertTrue(str(net.netmask()) == '255.255.254.0') self.assertTrue(net.version() == 4) self.assertTrue(str(net.network()) == '192.168.114.0') self.assertTrue(str(net.broadcast()) == '192.168.115.255') self.assertFalse('192.168.0.1' in net) self.assertTrue('192.168.114.128' in net) self.assertFalse('10.0.0.1' in net) self.assertTrue(str(net + 6) == '192.168.114.48/23') self.assertTrue((net + 6) in net) self.assertTrue(str(net - 6) == '192.168.114.36/23') self.assertTrue((net - 6) in net)
def test_ipv6_4(self): net = Network('2001:dead:beef:1:c01d:c01a::', 'ffff:ffff:ffff::') self.assertTrue(str(net) == '2001:dead:beef:0001:c01d:c01a:0000:0000/48') self.assertTrue(str(net.to_compressed()) == '2001:dead:beef:1:c01d:c01a::') self.assertTrue(str(net.to_ipv6().to_compressed()) == '2001:dead:beef:1:c01d:c01a::') self.assertTrue(net.info() == 'UNKNOWN') self.assertTrue(net.subnet() == 48) self.assertTrue(net.size() == 1 << (128 - 48)) self.assertTrue(int(net) == 0x2001deadbeef0001c01dc01a00000000) self.assertTrue(net.hex().lower() == '2001deadbeef0001c01dc01a00000000') self.assertTrue(str(net.netmask()) == 'ffff:ffff:ffff:0000:0000:0000:0000:0000') self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == '2001:dead:beef:0000:0000:0000:0000:0000') self.assertTrue(str(net.broadcast()) == '2001:dead:beef:ffff:ffff:ffff:ffff:ffff') self.assertFalse('123:456::' in net) self.assertFalse('::aaaa:bbbb:cccc:dddd' in net) self.assertFalse('::dddd' in net) self.assertFalse('::1' in net) self.assertFalse('123::456' in net) self.assertTrue('2001:dead:beef:babe::1234' in net)
def test_ipv4_1(self): net = Network('192.168.114.42', 23) self.assertTrue(str(net) == '192.168.114.42/23') self.assertTrue( str(net.to_ipv6().to_compressed()) == '2002:c0a8:722a::') self.assertTrue(net.info() == 'PRIVATE') self.assertTrue(net.subnet() == 23) self.assertTrue(net.size() == 1 << (32 - 23)) self.assertTrue(int(net) == 0xc0a8722a) self.assertTrue(net.hex().lower() == 'c0a8722a') self.assertTrue(str(net.netmask()) == '255.255.254.0') self.assertTrue(net.version() == 4) self.assertTrue(str(net.network()) == '192.168.114.0') self.assertTrue(str(net.broadcast()) == '192.168.115.255') self.assertFalse('192.168.0.1' in net) self.assertTrue('192.168.114.128' in net) self.assertFalse('10.0.0.1' in net) self.assertTrue(str(net + 6) == '192.168.114.48/23') self.assertTrue((net + 6) in net) self.assertTrue(str(net - 6) == '192.168.114.36/23') self.assertTrue((net - 6) in net)
def test_ipv6_1(self): net = Network('123::', 128) self.assertTrue(str(net) == '0123:0000:0000:0000:0000:0000:0000:0000/128') self.assertTrue(str(net.to_compressed()) == '123::') self.assertTrue(str(net.to_ipv6().to_compressed()) == '123::') self.assertTrue(net.info() == 'UNKNOWN') self.assertTrue(net.subnet() == 128) self.assertTrue(net.size() == 1 << (128 - 128)) self.assertTrue(int(net) == (0x123<<112)) self.assertTrue(net.hex().lower() == '01230000000000000000000000000000') self.assertTrue(str(net.netmask()) == 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == '0123:0000:0000:0000:0000:0000:0000:0000') self.assertTrue(str(net.broadcast()) == '0123:0000:0000:0000:0000:0000:0000:0000') self.assertFalse('123:456::' in net) self.assertTrue('123::' in net) self.assertFalse('::1' in net) self.assertFalse('123::456' in net) self.assertTrue(str((net + 6).to_compressed()).lower() == '123::6') self.assertFalse((net + 6) in net) self.assertTrue(str((net - 6).to_compressed()).lower() == '122:ffff:ffff:ffff:ffff:ffff:ffff:fffa') self.assertFalse((net - 6) in net)
def test_ipv6_1(self): net = Network("123::", 128) self.assertTrue(str(net) == "0123:0000:0000:0000:0000:0000:0000:0000/128") self.assertTrue(str(net.to_compressed()) == "123::") self.assertTrue(str(net.to_ipv6().to_compressed()) == "123::") self.assertTrue(net.info() == "UNKNOWN") self.assertTrue(net.subnet() == 128) self.assertTrue(net.size() == 1 << (128 - 128)) self.assertTrue(int(net) == (0x123 << 112)) self.assertTrue(net.hex().lower() == "01230000000000000000000000000000") self.assertTrue(str(net.netmask()) == "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff") self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == "0123:0000:0000:0000:0000:0000:0000:0000") self.assertTrue(str(net.broadcast()) == "0123:0000:0000:0000:0000:0000:0000:0000") self.assertFalse("123:456::" in net) self.assertTrue("123::" in net) self.assertFalse("::1" in net) self.assertFalse("123::456" in net) self.assertTrue(str((net + 6).to_compressed()).lower() == "123::6") self.assertFalse((net + 6) in net) self.assertTrue(str((net - 6).to_compressed()).lower() == "122:ffff:ffff:ffff:ffff:ffff:ffff:fffa") self.assertFalse((net - 6) in net)
def test_ipv6_2(self): net = Network('::42', 64) self.assertTrue(str(net) == '0000:0000:0000:0000:0000:0000:0000:0042/64') self.assertTrue(str(net.to_compressed()) == '::42') self.assertTrue(str(net.to_ipv6().to_compressed()) == '::42') self.assertTrue(net.info() == 'IPV4COMP') self.assertTrue(net.subnet() == 64) self.assertTrue(net.size() == 1 << (128 - 64)) self.assertTrue(int(net) == 0x42) self.assertTrue(net.hex().lower() == '00000000000000000000000000000042') self.assertTrue(str(net.netmask()) == 'ffff:ffff:ffff:ffff:0000:0000:0000:0000') self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == '0000:0000:0000:0000:0000:0000:0000:0000') self.assertTrue(str(net.broadcast()) == '0000:0000:0000:0000:ffff:ffff:ffff:ffff') self.assertFalse('123:456::' in net) self.assertTrue('::aaaa:bbbb:cccc:dddd' in net) self.assertTrue('::dddd' in net) self.assertTrue('::1' in net) self.assertFalse('123::456' in net) self.assertTrue(str((net + 6).to_compressed()).lower() == '::48') self.assertTrue((net + 6) in net) self.assertTrue(str((net - 6).to_compressed()).lower() == '::3c') self.assertTrue((net - 6) in net)
def test_ipv6_2(self): net = Network("::42", 64) self.assertTrue(str(net) == "0000:0000:0000:0000:0000:0000:0000:0042/64") self.assertTrue(str(net.to_compressed()) == "::42") self.assertTrue(str(net.to_ipv6().to_compressed()) == "::42") self.assertTrue(net.info() == "IPV4COMP") self.assertTrue(net.subnet() == 64) self.assertTrue(net.size() == 1 << (128 - 64)) self.assertTrue(int(net) == 0x42) self.assertTrue(net.hex().lower() == "00000000000000000000000000000042") self.assertTrue(str(net.netmask()) == "ffff:ffff:ffff:ffff:0000:0000:0000:0000") self.assertTrue(net.version() == 6) self.assertTrue(str(net.network()) == "0000:0000:0000:0000:0000:0000:0000:0000") self.assertTrue(str(net.broadcast()) == "0000:0000:0000:0000:ffff:ffff:ffff:ffff") self.assertFalse("123:456::" in net) self.assertTrue("::aaaa:bbbb:cccc:dddd" in net) self.assertTrue("::dddd" in net) self.assertTrue("::1" in net) self.assertFalse("123::456" in net) self.assertTrue(str((net + 6).to_compressed()).lower() == "::48") self.assertTrue((net + 6) in net) self.assertTrue(str((net - 6).to_compressed()).lower() == "::3c") self.assertTrue((net - 6) in net)