source: trunk/dhcp/pydhcplib/pydhcplib/dhcp_constants.py @ 189

Last change on this file since 189 was 189, checked in by quentin, 17 years ago

Initial checkin of a DHCP server (untested)

File size: 18.9 KB
Line 
1# Anemon Dhcp
2# Copyright (C) 2005 Mathieu Ignacio -- mignacio@april.org
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
17
18
19MagicCookie = [99,130,83,99]
20
21
22# DhcpBaseOptions = '{fieldname':[location,length]}
23DhcpFields = {'op':[0,1],
24                     'htype':[1,1],
25                     'hlen':[2,1],
26                     'hops':[3,1],
27                     'xid':[4,4],
28                     'secs':[8,2],
29                     'flags':[10,2],
30                     'ciaddr':[12,4],
31                     'yiaddr':[16,4],
32                     'siaddr':[20,4],
33                     'giaddr':[24,4],
34                     'chaddr':[28,16],
35                     'sname':[44,64],
36                     'file':[108,128]
37                     }
38DhcpFieldsTypes = {'op':"int",
39                     'htype':"int",
40                     'hlen':"int",
41                     'hops':"int",
42                     'xid':"int4",
43                     'secs':"int2",
44                     'flags':"int2",
45                     'ciaddr':"ipv4",
46                     'yiaddr':"ipv4",
47                     'siaddr':"ipv4",
48                     'giaddr':"ipv4",
49                     'chaddr':"hwmac",
50                     'sname':"str",
51                     'file':"str"
52                     }
53
54# DhcpOptions = 'option_name':option_code
55DhcpOptions = {'pad':0,
56
57               # Vendor Extension
58               'subnet_mask':1,'time_offset':2,
59               'router':3,'time_server':4,'name_server':5,
60               'domain_name_server':6,'log_server':7,
61               'cookie_server':8,'lpr_server':9,
62               'impress_server':10,'resource_location_server':11,
63               'host_name':12,'boot_file':13,'merit_dump_file':14,
64               'domain_name':15,'swap_server':16,'root_path':17,'extensions_path':18,
65
66               # IP layer parameters per host
67               'ip_forwarding':19,'nonlocal_source_rooting':20,
68               'policy_filter':21,'maximum_datagram_reassembly_size':22,
69               'default_ip_time-to-live':23,'path_mtu_aging_timeout':24,
70               'path_mtu_table':25,
71
72               # IP layer parameters per interface
73               'interface_mtu':26,'all_subnets_are_local':27,
74               'broadcast_address':28,'perform_mask_discovery':29,
75               'mask_supplier':30,'perform_router_discovery':31,
76               'routeur_solicitation_address':32,'static_route':33,
77
78               # link layer parameters per interface
79               'trailer_encapsulation':34,'arp_cache_timeout':35,
80               'ethernet_encapsulation':36,
81
82               # TCP parameters
83               'tcp_default_ttl':37,'tcp_keepalive_interval':38,
84               'tcp_keepalive_garbage':39,
85
86               # Applications and service parameters
87               'nis_domain':40,
88               'nis_servers':41,
89               'ntp_servers':42,
90               'vendor_specific_information':43,
91               'nbns':44,
92               'nbdd':45,'node_type':46,
93               'netbios_scope':47,'x_window_system_font_server':48,
94               'x_window_system_display_manager':49,
95
96               # DHCP extensions
97               'request_ip_address':50,
98               'ip_address_lease_time':51,
99               'overload':52,
100               'dhcp_message_type':53,
101               'server_identifier':54,
102               'parameter_request_list':55,
103               'message':56,
104               'maximum_dhcp_message_size':57,
105               'renewal_time_value':58,
106               'rebinding_time_value':59,
107               'class_identifier':60,
108               'client_identifier':61,
109
110               # Add from RFC 2132
111               'netware_ip_domain_name':62,
112               'netware_ip_sub_options':63,
113               
114               'nis+_domain':64,
115               'nis+_servers':65,
116               'tftp_server_name':66,
117               'bootfile_name':67,
118               'mobile_ip_home_agent':68,
119               'smtp_servers':69,
120               'pop_servers':70,
121               'nntp_servers':71,
122               'default_world_wide_web_server':72,
123               'default_finger_server':73,
124               'default_internet_relay_chat_server':74,
125               'streettalk_server':75,
126               'streettalk_directory_assistance_server':76,
127
128               'user_class':77,
129               'directory_agent':78,
130               'service_scope':79,
131               'rapid_commit':80,
132
133               'client_fqdn':81,
134               'relay_agent':82,
135               'internet_storage_name_service':83,
136               '84':84,
137               'nds_server':85,
138               'nds_tree_name':86,
139               'nds_context':87,
140               '88':88,
141               '89':89,
142               'authentication':90,
143               'client_last_transaction_time':91,
144               'associated_ip':92,
145               'client_system':93,
146               'client_ndi':94,
147               'ldap':95,
148               'unassigned':96,
149               'uuid_guid':97,
150               'open_group_user_auth':98,
151               'unassigned':99,
152               'unassigned':100,
153               'unassigned':101,
154               'unassigned':102,
155               'unassigned':103,
156               'unassigned':104,
157               'unassigned':105,
158               'unassigned':106,
159               'unassigned':107,
160               'unassigned':108,
161               'unassigned':109,
162               'unassigned':110,
163               'unassigned':111,
164               'netinfo_address':112,
165               'netinfo_tag':113,
166               'url':114,
167               'unassigned':115,
168               'auto_config':116,
169               'name_service_search':117,
170               'subnet_selection':118,
171               'domain_search':119,
172               'sip_servers':120,
173               'classless_static_route':121,
174               'cablelabs_client_configuration':122,
175               'geoconf':123,
176               'vendor_class':124,
177               'vendor_specific':125,
178               '126':126,'127':127,'128':128,'129':129,
179               '130':130,'131':131,'132':132,'133':133,
180               '134':134,'135':135,'136':136,'137':137,
181               '138':138,'139':139,'140':140,'141':141,
182               '142':142,'143':143,'144':144,'145':145,
183               '146':146,'147':147,'148':148,'149':149,
184               '150':150,'151':151,'152':152,'153':153,
185               '154':154,'155':155,'156':156,'157':157,
186               '158':158,'159':159,'160':160,'161':161,
187               '162':162,'163':163,'164':164,'165':165,
188               '166':166,'167':167,'168':168,'169':169,
189               '170':170,'171':171,'172':172,'173':173,
190               '174':174,'175':175,'176':176,'177':177,
191               '178':178,'179':179,'180':180,'181':181,
192               '182':182,'183':183,'184':184,'185':185,
193               '186':186,'187':187,'188':188,'189':189,
194               '190':190,'191':191,'192':192,'193':193,
195               '194':194,'195':195,'196':196,'197':197,
196               '198':198,'199':199,'200':200,'201':201,
197               '202':202,'203':203,'204':204,'205':205,
198               '206':206,'207':207,'208':208,'209':209,
199               '210':210,'211':211,'212':212,'213':213,
200               '214':214,'215':215,'216':216,'217':217,
201               '218':218,'219':219,'220':220,'221':221,
202               '222':222,'223':223,'224':224,'225':225,
203               '226':226,'227':227,'228':228,'229':229,
204               '230':230,'231':231,'232':232,'233':233,
205               '234':234,'235':235,'236':236,'237':237,
206               '238':238,'239':239,'240':240,'241':241,
207               '242':242,'243':243,'244':244,'245':245,
208               '246':246,'247':247,'248':248,'249':249,
209               '250':250,'251':251,'252':252,'253':253,
210               '254':254,'end':255
211
212               }
213
214# DhcpOptionsList : reverse of DhcpOptions
215DhcpOptionsList = ['pad',
216
217                   # Vendor Extension
218                   'subnet_mask','time_offset',
219                   'router','time_server','name_server',
220                   'domain_name_server','log_server',
221                   'cookie_server','lpr_server',
222                   'impress_server','resource_location_server',
223                   'host_name','boot_file','merit_dump_file',
224                   'domain_name','swap_server','root_path','extensions_path',
225                   
226                   # IP layer parameters per host
227                   'ip_forwarding','nonlocal_source_rooting',
228                   'policy_filter','maximum_datagram_reassembly_size',
229                   'default_ip_time-to-live','path_mtu_aging_timeout',
230                   'path_mtu_table',
231                   
232                   # IP layer parameters per interface
233                   'interface_mtu','all_subnets_are_local',
234                   'broadcast_address','perform_mask_discovery',
235                   'mask_supplier','perform_router_discovery',
236                   'routeur_solicitation_address','static_route',
237                   
238                   # link layer parameters per interface
239                   'trailer_encapsulation','arp_cache_timeout',
240                   'ethernet_encapsulation',
241                   
242                   # TCP parameters
243                   'tcp_default_ttl','tcp_keepalive_interval',
244                   'tcp_keepalive_garbage',
245                   
246                   # Applications and service parameters
247                   'nis_domain',
248                   'nis_servers',
249                   'ntp_servers',
250                   'vendor_specific_information','nbns',
251                   'nbdd','node_type',
252                   'netbios_scope','x_window_system_font_server',
253                   'x_window_system_display_manager',
254
255                   # DHCP extensions
256                   'request_ip_address',
257                   'ip_address_lease_time',
258                   'overload',
259                   'dhcp_message_type',
260                   'server_identifier',
261                   'parameter_request_list',
262                   'message',
263                   'maximum_dhcp_message_size',
264                   'renewal_time_value',
265                   'rebinding_time_value',
266                   'class_identifier',
267                   'client_identifier',
268                   
269
270                   # adds from RFC 2132,2242
271                   'netware_ip_domain_name',
272                   'netware_ip_sub_options',
273                   'nis+_domain',
274                   'nis+_servers',
275                   'tftp_server_name',
276                   'bootfile_name',
277                   'mobile_ip_home_agent',
278                   'smtp_servers',
279                   'pop_servers',
280                   'nntp_servers',
281                   'default_world_wide_web_server',
282                   'default_finger_server',
283                   'default_internet_relay_chat_server',
284                   'streettalk_server',
285                   'streettalk_directory_assistance_server',
286                   'user_class','directory_agent','service_scope',
287
288                   # 80
289                   'rapid_commit','client_fqdn','relay_agent',
290                   'internet_storage_name_service',
291                   '84',
292                   'nds_server','nds_tree_name','nds_context',
293                   '88','89',
294
295                   #90
296                   'authentication',
297                   'client_last_transaction_time','associated_ip', #RFC 4388
298                   'client_system', 'client_ndi', #RFC 3679
299                   'ldap','unassigned','uuid_guid', #RFC 3679
300                   'open_group_user_auth', #RFC 2485
301
302                   # 99->115 RFC3679
303                   'unassigned','unassigned','unassigned',
304                   'unassigned','unassigned','unassigned',
305                   'unassigned','unassigned','unassigned',
306                   'unassigned','unassigned','unassigned',
307                   'unassigned','netinfo_address','netinfo_tag',
308                   'url','unassigned',
309
310                   #116
311                   'auto_config','name_service_search','subnet_selection',
312                   'domain_search','sip_servers','classless_static_route',
313                   'cablelabs_client_configuration','geoconf',
314
315                   #124
316                   'vendor_class', 'vendor_specific',
317
318                   '126','127','128','129',
319                   '130','131','132','133','134','135','136','137','138','139',
320                   '140','141','142','143','144','145','146','147','148','149',
321                   '150','151','152','153','154','155','156','157','158','159',
322                   '160','161','162','163','164','165','166','167','168','169',
323                   '170','171','172','173','174','175','176','177','178','179',
324                   '180','181','182','183','184','185','186','187','188','189',
325                   '190','191','192','193','194','195','196','197','198','199',
326                   '200','201','202','203','204','205','206','207','208','209',
327                   '210','211','212','213','214','215','216','217','218','219',
328                   '220','221','222','223','224','225','226','227','228','229',
329                   '230','231','232','233','234','235','236','237','238','239',
330                   '240','241','242','243','244','245','246','247','248','249',
331                   '250','251','252','253','254',
332
333                   'end'
334                   ] 
335
336
337# See http://www.iana.org/assignments/bootp-dhcp-parameters
338# FIXME : verify all ipv4+ options, somes are 32 bits...
339
340DhcpOptionsTypes = {0:"none", 1:"ipv4", 2:"ipv4", 3:"ipv4+", 
341                    4:"ipv4+", 5:"ipv4+", 6:"ipv4+", 7:"ipv4+", 
342                    8:"ipv4+", 9:"ipv4+", 10:"ipv4+", 11:"ipv4+", 
343                    12:"string", 13:"16-bits", 14:"string", 15:"string", 
344                    16:"ipv4", 17:"string", 18:"string", 19:"bool", 
345                    20:"bool", 21:"ipv4+", 22:"16-bits", 23:"char", 
346                    24:"ipv4", 25:"16-bits", 26:"16-bits", 27:"bool", 
347                    28:"ipv4", 29:"bool", 30:"bool", 31:"bool", 
348                    32:"ipv4", 33:"ipv4+", 34:"bool", 35:"32-bits", 
349                    36:"bool", 37:"char", 38:"32-bits", 39:"bool", 
350                    40:"string", 41:"ipv4+", 42:"ipv4+", 43:"string", 
351                    44:"ipv4+", 45:"ipv4+", 46:"char", 47:"string", 
352                    48:"ipv4+", 49:"ipv4+", 50:"ipv4", 51:"32-bits", 
353                    52:"char", 53:"char", 54:"ipv4", 55:"none", 
354                    56:"string", 57:"16-bits", 58:"32-bits", 59:"32-bits", 
355                    60:"string", 61:"identifier", 62:"string", 63:"RFC2242", 
356                    64:"string", 65:"ipv4+", 66:"string", 67:"string", 
357                    68:"ipv4", 69:"ipv4+", 70:"ipv4+", 71:"ipv4+",                     
358                    72:"ipv4+", 73:"ipv4+", 74:"ipv4+", 75:"ipv4+", 
359                    76:"ipv4+", 77:"RFC3004", 78:"RFC2610", 79:"RFC2610", 
360                    80:"null", 81:"string", 82:"RFC3046", 83:"RFC4174", 
361                    84:"Unassigned", 85:"ipv4+", 86:"RFC2241", 87:"RFC2241", 
362                    88:"Unassigned", 89:"Unassigned", 90:"RFC3118", 91:"RFC4388", 
363                    92:"ipv4+", 93:"Unassigned", 94:"Unassigned", 95:"Unassigned", 
364                    96:"Unassigned", 97:"Unassigned", 98:"string", 99:"Unassigned", 
365                    100:"Unassigned", 101:"Unassigned", 102:"Unassigned", 103:"Unassigned", 
366                    104:"Unassigned", 105:"Unassigned", 106:"Unassigned", 107:"Unassigned", 
367                    108:"Unassigned", 109:"Unassigned", 110:"Unassigned", 111:"Unassigned", 
368                    112:"Unassigned", 113:"Unassigned", 114:"Unassigned", 115:"Unassigned", 
369                    116:"char", 117:"RFC2937", 118:"ipv4", 119:"RFC3397", 
370                    120:"RFC3361",
371
372                    #TODO
373                    121:"Unassigned", 122:"Unassigned", 123:"Unassigned", 
374                    124:"Unassigned", 125:"Unassigned", 126:"Unassigned", 127:"Unassigned", 
375                    128:"Unassigned", 129:"Unassigned", 130:"Unassigned", 131:"Unassigned", 
376                    132:"Unassigned", 133:"Unassigned", 134:"Unassigned", 135:"Unassigned", 
377                    136:"Unassigned", 137:"Unassigned", 138:"Unassigned", 139:"Unassigned", 
378                    140:"Unassigned", 141:"Unassigned", 142:"Unassigned", 143:"Unassigned", 
379                    144:"Unassigned", 145:"Unassigned", 146:"Unassigned", 147:"Unassigned", 
380                    148:"Unassigned", 149:"Unassigned", 150:"Unassigned", 151:"Unassigned", 
381                    152:"Unassigned", 153:"Unassigned", 154:"Unassigned", 155:"Unassigned", 
382                    156:"Unassigned", 157:"Unassigned", 158:"Unassigned", 159:"Unassigned", 
383                    160:"Unassigned", 161:"Unassigned", 162:"Unassigned", 163:"Unassigned", 
384                    164:"Unassigned", 165:"Unassigned", 166:"Unassigned", 167:"Unassigned", 
385                    168:"Unassigned", 169:"Unassigned", 170:"Unassigned", 171:"Unassigned", 
386                    172:"Unassigned", 173:"Unassigned", 174:"Unassigned", 175:"Unassigned", 
387                    176:"Unassigned", 177:"Unassigned", 178:"Unassigned", 179:"Unassigned", 
388                    180:"Unassigned", 181:"Unassigned", 182:"Unassigned", 183:"Unassigned", 
389                    184:"Unassigned", 185:"Unassigned", 186:"Unassigned", 187:"Unassigned", 
390                    188:"Unassigned", 189:"Unassigned", 190:"Unassigned", 191:"Unassigned", 
391                    192:"Unassigned", 193:"Unassigned", 194:"Unassigned", 195:"Unassigned", 
392                    196:"Unassigned", 197:"Unassigned", 198:"Unassigned", 199:"Unassigned", 
393                    200:"Unassigned", 201:"Unassigned", 202:"Unassigned", 203:"Unassigned", 
394                    204:"Unassigned", 205:"Unassigned", 206:"Unassigned", 207:"Unassigned", 
395                    208:"Unassigned", 209:"Unassigned", 210:"Unassigned", 211:"Unassigned", 
396                    212:"Unassigned", 213:"Unassigned", 214:"Unassigned", 215:"Unassigned", 
397                    216:"Unassigned", 217:"Unassigned", 218:"Unassigned", 219:"Unassigned", 
398                    220:"Unassigned", 221:"Unassigned", 222:"Unassigned", 223:"Unassigned", 
399                    224:"Unassigned", 225:"Unassigned", 226:"Unassigned", 227:"Unassigned", 
400                    228:"Unassigned", 229:"Unassigned", 230:"Unassigned", 231:"Unassigned", 
401                    232:"Unassigned", 233:"Unassigned", 234:"Unassigned", 235:"Unassigned", 
402                    236:"Unassigned", 237:"Unassigned", 238:"Unassigned", 239:"Unassigned", 
403                    240:"Unassigned", 241:"Unassigned", 242:"Unassigned", 243:"Unassigned", 
404                    244:"Unassigned", 245:"Un"}
Note: See TracBrowser for help on using the repository browser.