def ip (self): ip = IPAddr("192.168.1.1") print str(ip) print ip.toUnsignedN() # converts to network-order unsigned integer 16885952 print ip.toRaw() # returns a length-four bytes object print "*****" ip = IPAddr(16885952, networkOrder=True) print str(ip)
class MTDIPPrefix(object): def __init__(self, pattern): parts = pattern.split("/") if len(parts) != 2: raise TypeError self.masklen = int(parts[1]) self.pattern = IPAddr(parts[0]) bits = bitarray() bits.frombytes(self.pattern.toRaw()) self.prefix = bits[:self.masklen] def rand_ip_addr(self): rbitslen = 32 - self.masklen rbits = bin(random.getrandbits(rbitslen))[2:] return IPAddr((self.prefix + rbits.zfill(rbitslen)).tobytes()) def __repr__(self): return "%s/%d" % (repr(self.pattern), self.masklen) def __contains__(self, ipaddr): if not isinstance(ipaddr, IPAddr): raise TypeError ipaddr_bits = bitarray() ipaddr_bits.frombytes(ipaddr.toRaw()) return self.prefix == ipaddr_bits[:self.masklen]