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