1 |
root |
1.1 |
#define MAX_DATA 1024 |
2 |
|
|
|
3 |
|
|
enum dhcpfieldtype {string, ip, multi, offset, time, number, opt_switch, node_type, bin}; |
4 |
|
|
|
5 |
|
|
/* |
6 |
|
|
* string = \0 terminated char[] |
7 |
|
|
* ip = 4 byte IP Address |
8 |
|
|
* multi = vendor defined data with multiple entry pairs (length, data)+ |
9 |
|
|
* time = 4 byte unsinged int in seconds |
10 |
|
|
* offset = 32-bit int, positive means east of the meridian, negative west |
11 |
|
|
* number = unsigned int |
12 |
|
|
* opt_switch = 0/1 switch |
13 |
|
|
* node_type = 0x1 B-node |
14 |
|
|
* 0x2 P-node |
15 |
|
|
* 0x4 M-node |
16 |
|
|
* 0x8 H-node |
17 |
|
|
* bin = don't interpret at all - char |
18 |
|
|
*/ |
19 |
|
|
|
20 |
|
|
struct dhcpoption { |
21 |
|
|
char name[50]; |
22 |
|
|
enum dhcpfieldtype type; |
23 |
|
|
unsigned char min_len; |
24 |
|
|
unsigned char max_len; |
25 |
|
|
} DHCPOPT [256]; |
26 |
|
|
|
27 |
|
|
DHCPOPT[0] = {"Subnet Mask", ip, 4, 4}; |
28 |
|
|
DHCPOPT[1] = {"Time Offset", offset, 4, 4}; |
29 |
|
|
DHCPOPT[2] = {"Router Option", ip, 4, 0}; |
30 |
|
|
DHCPOPT[3] = {"Time Server Option", ip, 4, 0}; |
31 |
|
|
DHCPOPT[4] = {"Name Server Option", ip, 4, 0}; |
32 |
|
|
DHCPOPT[5] = {"Domain Name Server Option", ip, 4, 0}; |
33 |
|
|
DHCPOPT[6] = {"Log Server Option", ip, 4, 0}; |
34 |
|
|
DHCPOPT[7] = {"Cookie Server Option", ip, 4, 0}; |
35 |
|
|
DHCPOPT[8] = {"LPR Server Option", ip, 4, 0}; |
36 |
|
|
DHCPOPT[9] = {"Impress Server Option", ip, 4, 0}; |
37 |
|
|
DHCPOPT[10] = {"Resource Location Server Option", ip, 4, 0}; |
38 |
|
|
DHCPOPT[11] = {"Host Name Option", string, 1, 0}; |
39 |
|
|
DHCPOPT[12] = {"Boot File Size Option", number, 2, 2}; // unsigned 16-bit integer |
40 |
|
|
DHCPOPT[13] = {"Merit Dump File", string, 1, 0}; |
41 |
|
|
DHCPOPT[14] = {"Domain Name", string, 1, 0}; |
42 |
|
|
DHCPOPT[15] = {"Swap Server", ip, 4, 4}; |
43 |
|
|
DHCPOPT[16] = {"Root Path", string, 1, 0}; |
44 |
|
|
DHCPOPT[17] = {"Extensions Path", string, 1, 0}; |
45 |
|
|
DHCPOPT[18] = {"IP Forwarding Enable/Disable Option", opt_switch, 1, 1}; |
46 |
|
|
DHCPOPT[19] = {"Non-Local Source Routing Enable/Disable Option", opt_switch, 1, 1}; |
47 |
|
|
DHCPOPT[20] = {"Policy Filter Option", ip, 8, 0}; |
48 |
|
|
DHCPOPT[21] = {"Maximum Datagram Reassembly Size", number, 2, 2}; |
49 |
|
|
DHCPOPT[22] = {"Default IP Time-to-live", number, 1, 1}; |
50 |
|
|
DHCPOPT[23] = {"Path MTU Aging Timeout Option", time, 4, 4}; |
51 |
|
|
DHCPOPT[24] = {"Path MTU Plateau Table Option", number, 2, 0}; // minimum mtu 68 |
52 |
|
|
DHCPOPT[25] = {"Interface MTU Option", number, 2, 2}; |
53 |
|
|
DHCPOPT[26] = {"All Subnets are Local Option", opt_switch, 1, 1}; |
54 |
|
|
DHCPOPT[27] = {"Broadcast Address Option", ip, 4, 4}; |
55 |
|
|
DHCPOPT[28] = {"Perform Mask Discovery Option", opt_switch, 1, 1}; |
56 |
|
|
DHCPOPT[29] = {"Mask Supplier Option", opt_switch, 1, 1}; |
57 |
|
|
DHCPOPT[30] = {"Perform Router Discovery Option", opt_switch, 1, 1}; |
58 |
|
|
DHCPOPT[31] = {"Router Solicitation Address Option", ip, 4, 4}; |
59 |
|
|
DHCPOPT[32] = {"Static Route Option", ip, 8, 0}; // Default Route 0.0.0.0 is illegal here |
60 |
|
|
DHCPOPT[33] = {"Trailer Encapsulation Option", opt_switch, 1, 1}; |
61 |
|
|
DHCPOPT[34] = {"ARP Cache Timeout Option", time, 4, 4}; |
62 |
|
|
DHCPOPT[35] = {"Ethernet Encapsulation Option", opt_switch, 1, 1}; |
63 |
|
|
DHCPOPT[36] = {"TCP Default TTL Option", number, 1, 1}; |
64 |
|
|
DHCPOPT[37] = {"TCP Keepalive Interval Option", time, 4, 4}; |
65 |
|
|
DHCPOPT[38] = {"TCP Keepalive Garbage Option", opt_switch, 1, 1}; |
66 |
|
|
DHCPOPT[39] = {"Network Information Service Domain Option", string, 1, 0}; |
67 |
|
|
DHCPOPT[40] = {"Network Information Servers Option", ip, 4, 0}; |
68 |
|
|
DHCPOPT[41] = {"Network Time Protocol Servers Option", ip, 4, 0}; |
69 |
|
|
DHCPOPT[42] = {"Vendor Specific Information", multi, 0, 0}; |
70 |
|
|
DHCPOPT[43] = {"NetBIOS over TCP/IP Name Server Option", ip, 4, 0}; |
71 |
|
|
DHCPOPT[44] = {"NetBIOS over TCP/IP Datagram Distribution Server Option", ip, 4, 0}; |
72 |
|
|
DHCPOPT[45] = {"NetBIOS over TCP/IP Node Type Option", node_type, 1, 1}; |
73 |
|
|
DHCPOPT[46] = {"NetBIOS over TCP/IP Scope Option", string, 1, 0}; |
74 |
|
|
DHCPOPT[47] = {"X Window System Font Server Option", ip, 4, 0}; |
75 |
|
|
DHCPOPT[48] = {"X Window System Display Manager Option", ip, 4, 0}; |
76 |
|
|
DHCPOPT[49] = {"Requested IP Address", ip, 4, 4}; |
77 |
|
|
DHCPOPT[50] = {"IP Address Lease Time", time, 4, 4}; |
78 |
|
|
DHCPOPT[51] = {"Option Overload", opt_switch, 1, 1}; // values: 1,2,3 |
79 |
|
|
DHCPOPT[52] = {"DHCP Message Type", opt_switch, 1, 1}; // values: 1-8 |
80 |
|
|
DHCPOPT[53] = {"Server Identifier", ip, 4, 4}; |
81 |
|
|
DHCPOPT[54] = {"Parameter Request List", number, 1, 0}; |
82 |
|
|
DHCPOPT[55] = {"Message", string, 1, 0}; |
83 |
|
|
DHCPOPT[56] = {"Maximum DHCP Message Size", number, 2, 2}; |
84 |
|
|
DHCPOPT[57] = {"Renewal (T1) Time Value", time, 4, 4}; |
85 |
|
|
DHCPOPT[58] = {"Rebinding (T2) Time Value", time, 4, 4}; |
86 |
|
|
DHCPOPT[59] = {"Vendor class identifier", bin, 1, 0}; |
87 |
|
|
DHCPOPT[60] = {"Client-identifier", bin, 2, 0}; // first field: type then data |
88 |
|
|
DHCPOPT[63] = {"Network Information Service+ Domain Option", string, 1, 0}; |
89 |
|
|
DHCPOPT[65] = {"TFTP server name", string, 1, 0}; |
90 |
|
|
DHCPOPT[66] = {"Bootfile name", string, 1, 0}; |
91 |
|
|
DHCPOPT[67] = {"Mobile IP Home Agent option", ip, 4, 0}; |
92 |
|
|
DHCPOPT[68] = {"Simple Mail Transport Protocol (SMTP) Server Option", ip, 4, 0}; |
93 |
|
|
DHCPOPT[69] = {"Post Office Protocol (POP3) Server Option", ip, 4, 0}; |
94 |
|
|
DHCPOPT[70] = {"Network News Transport Protocol (NNTP) Server Option", ip, 4, 0}; |
95 |
|
|
DHCPOPT[71] = {"Default World Wide Web (WWW) Server Option", ip, 4, 0}; |
96 |
|
|
DHCPOPT[72] = {"Default Finger Server Option", ip, 4, 0}; |
97 |
|
|
DHCPOPT[73] = {"Default Internet Relay Chat (IRC) Server Option", ip, 4, 0}; |
98 |
|
|
DHCPOPT[74] = {"StreetTalk Server Option", ip, 4, 0}; |
99 |
|
|
DHCPOPT[75] = {"StreetTalk Directory Assistance (STDA) Server Option", ip, 4, 0}; |
100 |
|
|
|