Ticket #44: dhcpserver.py.diff
File dhcpserver.py.diff, 2.6 KB (added by broder, 16 years ago) |
---|
-
code/dhcpserver.py
22 22 23 23 dhcp_options = {'subnet_mask': '255.255.0.0', 24 24 'router': '18.181.0.1', 25 'domain_search': list('mit.edu'), 25 26 'domain_name_server': '18.70.0.160,18.71.0.151,18.72.0.3', 26 'domain_name': 'mit.edu',27 27 'ip_address_lease_time': 60*60*24} 28 28 29 29 class DhcpBackend: … … 61 61 def getParameters(self, **extra): 62 62 all_options=dict(dhcp_options) 63 63 all_options.update(extra) 64 if all_options.has_key('domainname') and all_options.has_key('domain_search') and all_options['domainname'] not in all_options['domain_search']: 65 all_options['domain_search'].append(all_options['domain_name']) 64 66 options = {} 65 67 for parameter, value in all_options.iteritems(): 66 68 if value is None: … … 96 98 97 99 elif option_type == "string" : 98 100 options[parameter] = strlist(value).list() 101 102 elif option_type == "RFC3397" : 103 parsed_value = "" 104 for item in value: 105 components = item.split('.') 106 item_fmt = "".join(chr(len(elt)) + elt for elt in components) + "\x00" 107 parsed_value += item_fmt 99 108 109 options[parameter] = strlist(parsed_value).list() 110 100 111 else : 101 112 options[parameter] = strlist(value).list() 102 113 return options … … 111 122 if ip is None: #Deactivated? 112 123 return False 113 124 if nic.hostname and '.' in nic.hostname: 114 hostname = nic.hostname125 hostname, domainname = nic.hostname.split('.', 1) 115 126 elif nic.machine.name: 116 hostname = nic.machine.name + '.servers.csail.mit.edu' 127 hostname = nic.machine.name 128 domainname = 'servers.csail.mit.edu' 117 129 else: 118 130 hostname = None 119 131 if ip is not None: 120 132 ip = ipv4(ip) 121 133 Log.Output(Log.debug,"dhcp_backend : Discover result = "+str(ip)) 122 packet_parameters = self.getParameters(host_name=hostname) 123 134 packet_parameters = self.getParameters(host_name=hostname, 135 domain_name=domainname) 136 124 137 # FIXME: Other offer parameters go here 125 138 packet_parameters["yiaddr"] = ip.list() 126 139