Exemplo n.º 1
0
    def test_ip_mask_v4(self):
        ipv4_masks = [
            (0, 0x00000000),
            (1, 0x80000000),
            (2, 0xc0000000),
            (3, 0xe0000000),
            (4, 0xf0000000),
            (5, 0xf8000000),
            (6, 0xfc000000),
            (7, 0xfe000000),
            (8, 0xff000000),
            (9, 0xff800000),
            (10, 0xffc00000),
            (11, 0xffe00000),
            (12, 0xfff00000),
            (13, 0xfff80000),
            (14, 0xfffc0000),
            (15, 0xfffe0000),
            (16, 0xffff0000),
            (17, 0xffff8000),
            (18, 0xffffc000),
            (19, 0xffffe000),
            (20, 0xfffff000),
            (21, 0xfffff800),
            (22, 0xfffffc00),
            (23, 0xfffffe00),
            (24, 0xffffff00),
            (25, 0xffffff80),
            (26, 0xffffffc0),
            (27, 0xffffffe0),
            (28, 0xfffffff0),
            (29, 0xfffffff8),
            (30, 0xfffffffc),
            (31, 0xfffffffe),
            (32, 0xffffffff),
        ]
        for length, mask_int in ipv4_masks:
            self.assertEqual(ip_mask(length, bits=32), mask_int)

        with self.assertRaises(ValueError):
            ip_mask(-1, bits=32)
            ip_mask(33, bits=32)
Exemplo n.º 2
0
    def test_ip_mask_v6(self):
        # See: https://en.wikipedia.org/wiki/IPv6_subnetting_reference
        ipv6_masks = [
            (12, 0xfff00000000000000000000000000000),
            (20, 0xfffff000000000000000000000000000),
            (24, 0xffffff00000000000000000000000000),
            (28, 0xfffffff0000000000000000000000000),
            (32, 0xffffffff000000000000000000000000),
            (36, 0xfffffffff00000000000000000000000),
            (48, 0xffffffffffff00000000000000000000),
            (52, 0xfffffffffffff0000000000000000000),
            (56, 0xffffffffffffff000000000000000000),
            (60, 0xfffffffffffffff00000000000000000),
            (64, 0xffffffffffffffff0000000000000000),
            (127, 0xfffffffffffffffffffffffffffffffe),
            (128, 0xffffffffffffffffffffffffffffffff),
        ]
        for length, mask_int in ipv6_masks:
            self.assertEqual(ip_mask(length, bits=128), mask_int)

        with self.assertRaises(ValueError):
            ip_mask(-1, bits=128)
            ip_mask(129, bits=128)