diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-28 19:23:12 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-28 19:23:12 +0000 |
commit | 35ff74676b54b1cae5a6324d2517568393fedbc8 (patch) | |
tree | b913eda3005954aec3543cc07d3f86baeeb6429a /networking/udhcp/options.c | |
parent | 41f5add965163607b5921aa224b9ba6fa3debc05 (diff) | |
download | busybox-w32-35ff74676b54b1cae5a6324d2517568393fedbc8.tar.gz busybox-w32-35ff74676b54b1cae5a6324d2517568393fedbc8.tar.bz2 busybox-w32-35ff74676b54b1cae5a6324d2517568393fedbc8.zip |
dhcpc: let server know we don't like oversized packets.
add TODO comment
Diffstat (limited to 'networking/udhcp/options.c')
-rw-r--r-- | networking/udhcp/options.c | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/networking/udhcp/options.c b/networking/udhcp/options.c index 6744e2ad0..ffc0ed127 100644 --- a/networking/udhcp/options.c +++ b/networking/udhcp/options.c | |||
@@ -9,37 +9,42 @@ | |||
9 | #include "options.h" | 9 | #include "options.h" |
10 | 10 | ||
11 | 11 | ||
12 | /* supported options are easily added here */ | 12 | /* Supported options are easily added here */ |
13 | const struct dhcp_option dhcp_options[] = { | 13 | const struct dhcp_option dhcp_options[] = { |
14 | /* name[12] flags code */ | 14 | /* opt_name[12] flags code */ |
15 | {"subnet", OPTION_IP | OPTION_REQ, 0x01}, | 15 | {"subnet", OPTION_IP | OPTION_REQ, 0x01}, /* DHCP_SUBNET */ |
16 | {"timezone", OPTION_S32, 0x02}, | 16 | {"timezone", OPTION_S32, 0x02}, /* DHCP_TIME_OFFSET */ |
17 | {"router", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x03}, | 17 | {"router", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x03}, /* DHCP_ROUTER */ |
18 | {"timesvr", OPTION_IP | OPTION_LIST, 0x04}, | 18 | {"timesvr", OPTION_IP | OPTION_LIST, 0x04}, /* DHCP_TIME_SERVER */ |
19 | {"namesvr", OPTION_IP | OPTION_LIST, 0x05}, | 19 | {"namesvr", OPTION_IP | OPTION_LIST, 0x05}, /* DHCP_NAME_SERVER */ |
20 | {"dns", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x06}, | 20 | {"dns", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x06}, /* DHCP_DNS_SERVER */ |
21 | {"logsvr", OPTION_IP | OPTION_LIST, 0x07}, | 21 | {"logsvr", OPTION_IP | OPTION_LIST, 0x07}, /* DHCP_LOG_SERVER */ |
22 | {"cookiesvr", OPTION_IP | OPTION_LIST, 0x08}, | 22 | {"cookiesvr", OPTION_IP | OPTION_LIST, 0x08}, /* DHCP_COOKIE_SERVER */ |
23 | {"lprsvr", OPTION_IP | OPTION_LIST, 0x09}, | 23 | {"lprsvr", OPTION_IP | OPTION_LIST, 0x09}, /* DHCP_LPR_SERVER */ |
24 | {"hostname", OPTION_STRING | OPTION_REQ, 0x0c}, | 24 | {"hostname", OPTION_STRING | OPTION_REQ, 0x0c}, /* DHCP_HOST_NAME */ |
25 | {"bootsize", OPTION_U16, 0x0d}, | 25 | {"bootsize", OPTION_U16, 0x0d}, /* DHCP_BOOT_SIZE */ |
26 | {"domain", OPTION_STRING | OPTION_LIST | OPTION_REQ, 0x0f}, | 26 | {"domain", OPTION_STRING | OPTION_LIST | OPTION_REQ, 0x0f}, /* DHCP_DOMAIN_NAME */ |
27 | {"swapsvr", OPTION_IP, 0x10}, | 27 | {"swapsvr", OPTION_IP, 0x10}, /* DHCP_SWAP_SERVER */ |
28 | {"rootpath", OPTION_STRING, 0x11}, | 28 | {"rootpath", OPTION_STRING, 0x11}, /* DHCP_ROOT_PATH */ |
29 | {"ipttl", OPTION_U8, 0x17}, | 29 | {"ipttl", OPTION_U8, 0x17}, /* DHCP_IP_TTL */ |
30 | {"mtu", OPTION_U16, 0x1a}, | 30 | {"mtu", OPTION_U16, 0x1a}, /* DHCP_MTU */ |
31 | {"broadcast", OPTION_IP | OPTION_REQ, 0x1c}, | 31 | {"broadcast", OPTION_IP | OPTION_REQ, 0x1c}, /* DHCP_BROADCAST */ |
32 | {"nisdomain", OPTION_STRING | OPTION_REQ, 0x28}, | 32 | {"nisdomain", OPTION_STRING | OPTION_REQ, 0x28}, /* DHCP_NTP_SERVER */ |
33 | {"nissrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x29}, | 33 | {"nissrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x29}, /* DHCP_WINS_SERVER */ |
34 | {"ntpsrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a}, | 34 | {"ntpsrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a}, /* DHCP_REQUESTED_IP */ |
35 | {"wins", OPTION_IP | OPTION_LIST, 0x2c}, | 35 | {"wins", OPTION_IP | OPTION_LIST, 0x2c}, /* DHCP_LEASE_TIME */ |
36 | {"requestip", OPTION_IP, 0x32}, | 36 | {"requestip", OPTION_IP, 0x32}, /* DHCP_OPTION_OVER */ |
37 | {"lease", OPTION_U32, 0x33}, | 37 | {"lease", OPTION_U32, 0x33}, /* DHCP_MESSAGE_TYPE */ |
38 | {"dhcptype", OPTION_U8, 0x35}, | 38 | {"dhcptype", OPTION_U8, 0x35}, /* DHCP_SERVER_ID */ |
39 | {"serverid", OPTION_IP, 0x36}, | 39 | {"serverid", OPTION_IP, 0x36}, /* DHCP_PARAM_REQ */ |
40 | {"message", OPTION_STRING, 0x38}, | 40 | {"message", OPTION_STRING, 0x38}, /* DHCP_MESSAGE */ |
41 | {"vendorclass", OPTION_STRING, 0x3C}, | 41 | // TODO: 1) some options should not be parsed & passed to script - |
42 | {"clientid", OPTION_STRING, 0x3D}, | 42 | // maxsize sure should not, since it cannot appear in server responses! |
43 | // grep for opt_name is fix the mess. | ||
44 | // 2) Using fixed-sized char[] vector wastes space. | ||
45 | {"maxsize", OPTION_U16, 0x39}, /* DHCP_MAX_SIZE */ | ||
46 | {"vendorclass", OPTION_STRING, 0x3C}, /* DHCP_VENDOR */ | ||
47 | {"clientid", OPTION_STRING, 0x3D}, /* DHCP_CLIENT_ID */ | ||
43 | {"tftp", OPTION_STRING, 0x42}, | 48 | {"tftp", OPTION_STRING, 0x42}, |
44 | {"bootfile", OPTION_STRING, 0x43}, | 49 | {"bootfile", OPTION_STRING, 0x43}, |
45 | {"userclass", OPTION_STRING, 0x4D}, | 50 | {"userclass", OPTION_STRING, 0x4D}, |
@@ -48,9 +53,10 @@ const struct dhcp_option dhcp_options[] = { | |||
48 | #endif | 53 | #endif |
49 | /* MSIE's "Web Proxy Autodiscovery Protocol" support */ | 54 | /* MSIE's "Web Proxy Autodiscovery Protocol" support */ |
50 | {"wpad", OPTION_STRING, 0xfc}, | 55 | {"wpad", OPTION_STRING, 0xfc}, |
51 | {"", 0x00, 0x00} | 56 | {} /* zero-padded terminating entry */ |
52 | }; | 57 | }; |
53 | 58 | ||
59 | |||
54 | /* Lengths of the different option types */ | 60 | /* Lengths of the different option types */ |
55 | const unsigned char option_lengths[] ALIGN1 = { | 61 | const unsigned char option_lengths[] ALIGN1 = { |
56 | [OPTION_IP] = 4, | 62 | [OPTION_IP] = 4, |