database.connect()
def findNIC(self, mac):
database.clear_cache()
- return database.NIC.query().filter_by(mac_addr=mac).first()
+ return database.NIC.query.filter_by(mac_addr=mac).first()
def find_interface(self, packet):
chaddr = hwmac(packet.GetHardwareAddress())
nic = self.findNIC(str(chaddr))
if nic is None or nic.ip is None:
return None
- ipstr = ''.join(reversed(['%02X' % i for i in ipv4(nic.ip).list()]))
+ ipstr = ''.join(reversed(['%02X' % i for i in ipv4(nic.ip.encode("utf-8")).list()]))
for line in open('/proc/net/route'):
parts = line.split()
if parts[1] == ipstr:
nic = self.findNIC(str(chaddr))
if nic is None or nic.machine is None:
return False
- ip = nic.ip
+ ip = nic.ip.encode("utf-8")
if ip is None: #Deactivated?
return False
else : s.syslog(s.LOG_INFO,"Get DHCPREQUEST_UNKNOWN_STATE packet : not implemented")
- if self.backend.Request(packet) : packet.TransformToDhcpAckPacket()
- else : packet.TransformToDhcpNackPacket()
-
- self.SendPacket(packet)
-
-
+ if self.backend.Request(packet):
+ packet.TransformToDhcpAckPacket()
+ self.SendPacket(packet)
+ elif self.backend.Discover(packet):
+ packet.TransformToDhcpNackPacket()
+ self.SendPacket(packet)
+ else:
+ pass # We aren't authoritative, so don't reply if we don't know them.
# FIXME: These are not yet implemented.
def HandleDhcpDecline(self, packet):
print "invirt-dhcpserver: cannot determine local IP address by looking up %s" % socket.gethostname()
sys.exit(1)
- dhcp_options['server_identifier'] = myip
+ dhcp_options['server_identifier'] = ipv4(myip).int()
backend = DhcpBackend()
server = DhcpServer(backend, options)