from invirt import database
from invirt.config import structs as config
-dhcp_options = {'subnet_mask': config.dhcp.netmask,
- 'router': config.dhcp.gateway,
- 'domain_name_server': ','.join(config.dhcp.dns),
- 'ip_address_lease_time': 60*60*24}
+dhcp_options = {'domain_name_server': ','.join(config.dhcp.dns),
+ 'ip_address_lease_time': config.dhcp.leasetime if config.dhcp.has_key('leasetime') else 60*60*24}
class DhcpBackend:
def __init__(self):
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
options = {}
+ options['subnet_mask'] = nic.netmask.encode("utf-8")
+ options['router'] = nic.gateway.encode("utf-8")
if nic.hostname and '.' in nic.hostname:
- options['host_name'], options['domain_name'] = nic.hostname.split('.', 1)
+ options['host_name'], options['domain_name'] = nic.hostname.encode('utf-8').split('.', 1)
elif nic.machine.name:
- options['host_name'] = nic.machine.name
+ options['host_name'] = nic.machine.name.encode('utf-8')
options['domain_name'] = config.dns.domains[0]
else:
hostname = None
options['host_name'] += '.' + options['domain_name']
del options['domain_name']
options['domain_search'] = [config.dhcp.search_domain]
- if ip is not None:
- ip = ipv4(ip.encode("utf-8"))
- s.syslog(s.LOG_DEBUG,"dhcp_backend : Discover result = "+str(ip))
- packet_parameters = self.getParameters(**options)
+ ip = ipv4(ip)
+ s.syslog(s.LOG_DEBUG,"dhcp_backend : Discover result = "+str(ip))
+ packet_parameters = self.getParameters(**options)
- # FIXME: Other offer parameters go here
- packet_parameters["yiaddr"] = ip.list()
-
- packet.SetMultipleOptions(packet_parameters)
- return True
- return False
+ # FIXME: Other offer parameters go here
+ packet_parameters["yiaddr"] = ip.list()
+
+ packet.SetMultipleOptions(packet_parameters)
+ return True
def Request(self, packet):
s.syslog(s.LOG_DEBUG, "dhcp_backend : Request")
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)