aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/options.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-11-28 19:23:12 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-11-28 19:23:12 +0000
commit35ff74676b54b1cae5a6324d2517568393fedbc8 (patch)
treeb913eda3005954aec3543cc07d3f86baeeb6429a /networking/udhcp/options.c
parent41f5add965163607b5921aa224b9ba6fa3debc05 (diff)
downloadbusybox-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.c68
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 */
13const struct dhcp_option dhcp_options[] = { 13const 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 */
55const unsigned char option_lengths[] ALIGN1 = { 61const unsigned char option_lengths[] ALIGN1 = {
56 [OPTION_IP] = 4, 62 [OPTION_IP] = 4,