commit 26c854e7c032d2f7df822316f56b0d62075d29d2 Author: Damian Johnson atagar@torproject.org Date: Sat Mar 9 22:18:22 2013 -0800
Renaming stem.util.connection.get_mask()
Renaming the function to get_mask_ipv4() to match the module conventions now that we have ipv6 support. --- stem/exit_policy.py | 2 +- stem/util/connection.py | 56 +++++++++++++++++++++--------------------- test/unit/util/connection.py | 40 +++++++++++++++--------------- 3 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/stem/exit_policy.py b/stem/exit_policy.py index bae7af1..6b31f73 100644 --- a/stem/exit_policy.py +++ b/stem/exit_policy.py @@ -610,7 +610,7 @@ class ExitPolicyRule(object): if address_type == AddressType.WILDCARD: mask = None elif address_type == AddressType.IPv4: - mask = stem.util.connection.get_mask(self._masked_bits) + mask = stem.util.connection.get_mask_ipv4(self._masked_bits) elif address_type == AddressType.IPv6: mask = stem.util.connection.get_mask_ipv6(self._masked_bits)
diff --git a/stem/util/connection.py b/stem/util/connection.py index 52a3954..92776f5 100644 --- a/stem/util/connection.py +++ b/stem/util/connection.py @@ -13,9 +13,9 @@ but for now just moving the parts we need. is_valid_ipv6_address - checks if a string is a valid IPv6 address is_valid_port - checks if something is a valid representation for a port expand_ipv6_address - provides an IPv6 address with its collapsed portions expanded - get_mask - provides the mask representation for a given number of bits - get_masked_bits - provides the number of bits represented by a mask + get_mask_ipv4 - provides the mask representation for a given number of bits get_mask_ipv6 - provides the IPv6 mask representation for a given number of bits + get_masked_bits - provides the number of bits represented by a mask get_binary - provides the binary representation for an integer with padding get_address_binary - provides the binary representation for an address
@@ -164,7 +164,7 @@ def expand_ipv6_address(address): return address
-def get_mask(bits): +def get_mask_ipv4(bits): """ Provides the IPv4 mask for a given number of bits, in the dotted-quad format.
@@ -190,31 +190,6 @@ def get_mask(bits): return ".".join([str(int(octet, 2)) for octet in octets])
-def get_masked_bits(mask): - """ - Provides the number of bits that an IPv4 subnet mask represents. Note that - not all masks can be represented by a bit count. - - :param str mask: mask to be converted - - :returns: **int** with the number of bits represented by the mask - - :raises: **ValueError** if the mask is invalid or can't be converted - """ - - if not is_valid_ipv4_address(mask): - raise ValueError("'%s' is an invalid subnet mask" % mask) - - # converts octets to binary representation - mask_bin = get_address_binary(mask) - mask_match = re.match("^(1*)(0*)$", mask_bin) - - if mask_match: - return 32 - len(mask_match.groups()[1]) - else: - raise ValueError("Unable to convert mask to a bit count: %s" % mask) - - def get_mask_ipv6(bits): """ Provides the IPv6 mask for a given number of bits, in the hex colon-delimited @@ -242,6 +217,31 @@ def get_mask_ipv6(bits): return ":".join(["%04x" % int(group, 2) for group in groupings]).upper()
+def get_masked_bits(mask): + """ + Provides the number of bits that an IPv4 subnet mask represents. Note that + not all masks can be represented by a bit count. + + :param str mask: mask to be converted + + :returns: **int** with the number of bits represented by the mask + + :raises: **ValueError** if the mask is invalid or can't be converted + """ + + if not is_valid_ipv4_address(mask): + raise ValueError("'%s' is an invalid subnet mask" % mask) + + # converts octets to binary representation + mask_bin = get_address_binary(mask) + mask_match = re.match("^(1*)(0*)$", mask_bin) + + if mask_match: + return 32 - len(mask_match.groups()[1]) + else: + raise ValueError("Unable to convert mask to a bit count: %s" % mask) + + def get_binary(value, bits): """ Provides the given value as a binary string, padded with zeros to the given diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py index c7db6d3..ecbe04a 100644 --- a/test/unit/util/connection.py +++ b/test/unit/util/connection.py @@ -96,18 +96,30 @@ class TestConnection(unittest.TestCase):
self.assertRaises(ValueError, stem.util.connection.expand_ipv6_address, "127.0.0.1")
- def test_get_mask(self): + def test_get_mask_ipv4(self): """ - Checks the get_mask function. + Checks the get_mask_ipv4 function. """
- self.assertEquals("255.255.255.255", stem.util.connection.get_mask(32)) - self.assertEquals("255.255.255.248", stem.util.connection.get_mask(29)) - self.assertEquals("255.255.254.0", stem.util.connection.get_mask(23)) - self.assertEquals("0.0.0.0", stem.util.connection.get_mask(0)) + self.assertEquals("255.255.255.255", stem.util.connection.get_mask_ipv4(32)) + self.assertEquals("255.255.255.248", stem.util.connection.get_mask_ipv4(29)) + self.assertEquals("255.255.254.0", stem.util.connection.get_mask_ipv4(23)) + self.assertEquals("0.0.0.0", stem.util.connection.get_mask_ipv4(0))
- self.assertRaises(ValueError, stem.util.connection.get_mask, -1) - self.assertRaises(ValueError, stem.util.connection.get_mask, 33) + self.assertRaises(ValueError, stem.util.connection.get_mask_ipv4, -1) + self.assertRaises(ValueError, stem.util.connection.get_mask_ipv4, 33) + + def test_get_mask_ipv6(self): + """ + Checks the get_mask_ipv6 function. + """ + + self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", stem.util.connection.get_mask_ipv6(128)) + self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFE:0000", stem.util.connection.get_mask_ipv6(111)) + self.assertEquals("0000:0000:0000:0000:0000:0000:0000:0000", stem.util.connection.get_mask_ipv6(0)) + + self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, -1) + self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, 129)
def test_get_masked_bits(self): """ @@ -122,18 +134,6 @@ class TestConnection(unittest.TestCase): self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "blarg") self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "255.255.0.255")
- def test_get_mask_ipv6(self): - """ - Checks the get_mask_ipv6 function. - """ - - self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", stem.util.connection.get_mask_ipv6(128)) - self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFE:0000", stem.util.connection.get_mask_ipv6(111)) - self.assertEquals("0000:0000:0000:0000:0000:0000:0000:0000", stem.util.connection.get_mask_ipv6(0)) - - self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, -1) - self.assertRaises(ValueError, stem.util.connection.get_mask, 129) - def test_get_address_binary(self): """ Checks the get_address_binary function.
tor-commits@lists.torproject.org