def ifconfig(self, gwaddr, netmask): assert util.is_valid_ip(gwaddr) assert util.is_valid_netmask(netmask) self.gwaddr = gwaddr self.netmask = netmask self._netaddr = util.addr_netaddr(self.gwaddr, self.netmask) self._boardcast = util.addr_boardcast(self.gwaddr, self.netmask) self._gwaddr = util.inet_atol(self.gwaddr) # 已分配地址,整形地址 self.allocated_addr = [] util.ifconfig(self.dev, gwaddr, netmask)
def get_free_addr(self): addr = self._netaddr while True: addr = addr + 1 if addr == self._gwaddr: continue if addr in self.allocated_addr: continue if addr >= self._boardcast: raise IpFullException("IP分配已满") self.allocated_addr.append(addr) return addr, util.inet_atol(self.netmask)