X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-dhcp.git/blobdiff_plain/01aed19cb0d062c77cef8877b2510fe5b1b09ff2..845282baf01a0d3ea601444117fd29e659e4f4bb:/invirt-dhcpserver?ds=sidebyside diff --git a/invirt-dhcpserver b/invirt-dhcpserver index d4e40e0..e7f37e8 100755 --- a/invirt-dhcpserver +++ b/invirt-dhcpserver @@ -25,13 +25,13 @@ class DhcpBackend: 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: @@ -97,7 +97,7 @@ class DhcpBackend: 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 @@ -224,12 +224,14 @@ class DhcpServer(pydhcplib.dhcp_network.DhcpServer): 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): @@ -260,7 +262,7 @@ if '__main__' == __name__: 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)