Exemple #1
0
 def get_prefixes_maxlen(self):
     """
     Extract remaining prefixes as a list of (prefix, maxlen)
     """
     if self.is_final:
         return [(IPv4.from_bits(self.prefix), self.n + len(self.prefix))]
     r = []
     for c in self.children:
         if c is not None:
             r += c.get_prefixes_maxlen()
     return r
Exemple #2
0
 def get_prefixes(self):
     """
     Fetch all remaining prefixes as a list
     """
     if self.is_final:
         return [IPv4.from_bits(self.prefix).prefix]
     r = []
     for c in self.children:
         if c is not None:
             r += c.get_prefixes()
     return r
Exemple #3
0
def test_ipv4_from_to_bits(ipv4_bits):
    p = IPv4(ipv4_bits)
    assert IPv4.from_bits(p.iter_bits()) == p
Exemple #4
0
def test_ipv4_from_bits():
    assert repr(IPv4.from_bits([1, 1, 1, 1, 1, 1, 1, 1])) == "<IPv4 255.0.0.0/8>"
    assert repr(IPv4.from_bits([0, 0, 0, 0, 1, 0, 1, 0])) == "<IPv4 10.0.0.0/8>"
Exemple #5
0
def test_ipv4_from_to_bits(prefix):
    p = IPv4(prefix)
    assert IPv4.from_bits(p.iter_bits()) == p
Exemple #6
0
    "p1,p2",
    [
        (IPv4("0.0.0.0/8").iter_bits(), [0, 0, 0, 0, 0, 0, 0, 0]),
        (IPv4("10.0.0.0/8").iter_bits(), [0, 0, 0, 0, 1, 0, 1, 0]),
        (IPv4("224.0.0.0/4").iter_bits(), [1, 1, 1, 0]),
        (IPv4("255.255.255.255").iter_bits(), [1] * 32),
    ],
)
def test_ipv4_iter_bits(p1, p2):
    assert list(p1) == p2


@pytest.mark.parametrize(
    "p1,p2",
    [
        (IPv4.from_bits([1, 1, 1, 1, 1, 1, 1, 1]), "<IPv4 255.0.0.0/8>"),
        (IPv4.from_bits([0, 0, 0, 0, 1, 0, 1, 0]), "<IPv4 10.0.0.0/8>"),
    ],
)
def test_ipv4_from_bits(p1, p2):
    assert repr(p1) == p2


@pytest.mark.parametrize(
    "prefix",
    ["192.168.0.1", "224.0.0.0/4", "192.168.0.0/16", "255.255.255.255"])
def test_ipv4_from_to_bits(prefix):
    p = IPv4(prefix)
    assert IPv4.from_bits(p.iter_bits()) == p