MCPcopy Index your code
hub / github.com/python/cpython / supernet

Method supernet

Lib/ipaddress.py:974–1013  ·  view source on GitHub ↗

The supernet containing the current network. Args: prefixlen_diff: An integer, the amount the prefix length of the network should be decreased by. For example, given a /24 network and a prefixlen_diff of 3, a supernet with a /21 netmask

(self, prefixlen_diff=1, new_prefix=None)

Source from the content-addressed store, hash-verified

972 yield current
973
974 def supernet(self, prefixlen_diff=1, new_prefix=None):
975 """The supernet containing the current network.
976
977 Args:
978 prefixlen_diff: An integer, the amount the prefix length of
979 the network should be decreased by. For example, given a
980 /24 network and a prefixlen_diff of 3, a supernet with a
981 /21 netmask is returned.
982
983 Returns:
984 An IPv4 network object.
985
986 Raises:
987 ValueError: If self.prefixlen - prefixlen_diff < 0. I.e., you have
988 a negative prefix length.
989 OR
990 If prefixlen_diff and new_prefix are both set or new_prefix is a
991 larger number than the current prefix (larger number means a
992 smaller network)
993
994 """
995 if self._prefixlen == 0:
996 return self
997
998 if new_prefix is not None:
999 if new_prefix > self._prefixlen:
1000 raise ValueError('new prefix must be shorter')
1001 if prefixlen_diff != 1:
1002 raise ValueError('cannot set prefixlen_diff and new_prefix')
1003 prefixlen_diff = self._prefixlen - new_prefix
1004
1005 new_prefixlen = self.prefixlen - prefixlen_diff
1006 if new_prefixlen < 0:
1007 raise ValueError(
1008 'current prefixlen is %d, cannot have a prefixlen_diff of %d' %
1009 (self.prefixlen, prefixlen_diff))
1010 return self.__class__((
1011 int(self.network_address) & (int(self.netmask) << prefixlen_diff),
1012 new_prefixlen
1013 ))
1014
1015 @property
1016 def is_multicast(self):

Callers 5

testGetSupernetMethod · 0.80
testGetSupernet3Method · 0.80
testGetSupernet4Method · 0.80
testGetNum_AddressesMethod · 0.80

Calls 1

__class__Method · 0.45

Tested by 4

testGetSupernetMethod · 0.64
testGetSupernet3Method · 0.64
testGetSupernet4Method · 0.64
testGetNum_AddressesMethod · 0.64