aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/options.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-21 00:43:11 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-21 00:43:11 +0100
commite5ce91b41b657a0dbd1db442ebc47f4c935e7d1f (patch)
treeca7537fff5a9026bdfe5c5c5104b65d6c2a5ebd0 /networking/udhcp/options.c
parent87fa216e1e388c537cda2cff126eea816a4135ac (diff)
downloadbusybox-e5ce91b41b657a0dbd1db442ebc47f4c935e7d1f.tar.gz
udhcp: code shrink; disable time and log server options
function old new delta add_server_options - 100 +100 udhcp_add_simple_option 92 90 -2 nobody_responds_to_arp 88 85 -3 dhcp_options 66 62 -4 udhcp_add_option_string 104 94 -10 udhcp_run_script 665 654 -11 dhcp_option_strings 203 188 -15 static.blank_chaddr 16 - -16 send_ACK 211 180 -31 add_bootp_options 61 - -61 udhcpd_main 1925 1846 -79 ------------------------------------------------------------------------------ (add/remove: 1/2 grow/shrink: 0/8 up/down: 100/-232) Total: -132 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/udhcp/options.c')
-rw-r--r--networking/udhcp/options.c64
1 files changed, 32 insertions, 32 deletions
diff --git a/networking/udhcp/options.c b/networking/udhcp/options.c
index 09d31c69b..5bef985bc 100644
--- a/networking/udhcp/options.c
+++ b/networking/udhcp/options.c
@@ -20,10 +20,10 @@ const struct dhcp_option dhcp_options[] = {
{ OPTION_IP | OPTION_REQ, 0x01 }, /* DHCP_SUBNET */
{ OPTION_S32 , 0x02 }, /* DHCP_TIME_OFFSET */
{ OPTION_IP | OPTION_LIST | OPTION_REQ, 0x03 }, /* DHCP_ROUTER */
- { OPTION_IP | OPTION_LIST , 0x04 }, /* DHCP_TIME_SERVER */
+// { OPTION_IP | OPTION_LIST , 0x04 }, /* DHCP_TIME_SERVER */
// { OPTION_IP | OPTION_LIST , 0x05 }, /* DHCP_NAME_SERVER */
{ OPTION_IP | OPTION_LIST | OPTION_REQ, 0x06 }, /* DHCP_DNS_SERVER */
- { OPTION_IP | OPTION_LIST , 0x07 }, /* DHCP_LOG_SERVER */
+// { OPTION_IP | OPTION_LIST , 0x07 }, /* DHCP_LOG_SERVER */
// { OPTION_IP | OPTION_LIST , 0x08 }, /* DHCP_COOKIE_SERVER */
{ OPTION_IP | OPTION_LIST , 0x09 }, /* DHCP_LPR_SERVER */
{ OPTION_STRING | OPTION_REQ, 0x0c }, /* DHCP_HOST_NAME */
@@ -34,23 +34,23 @@ const struct dhcp_option dhcp_options[] = {
{ OPTION_U8 , 0x17 }, /* DHCP_IP_TTL */
{ OPTION_U16 , 0x1a }, /* DHCP_MTU */
{ OPTION_IP | OPTION_REQ, 0x1c }, /* DHCP_BROADCAST */
- { OPTION_STRING , 0x28 }, /* nisdomain */
- { OPTION_IP | OPTION_LIST , 0x29 }, /* nissrv */
+ { OPTION_STRING , 0x28 }, /* DHCP_NIS_DOMAIN */
+ { OPTION_IP | OPTION_LIST , 0x29 }, /* DHCP_NIS_SERVER */
{ OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a }, /* DHCP_NTP_SERVER */
{ OPTION_IP | OPTION_LIST , 0x2c }, /* DHCP_WINS_SERVER */
{ OPTION_U32 , 0x33 }, /* DHCP_LEASE_TIME */
{ OPTION_IP , 0x36 }, /* DHCP_SERVER_ID */
- { OPTION_STRING , 0x38 }, /* DHCP_MESSAGE */
- { OPTION_STRING , 0x42 }, /* tftp */
- { OPTION_STRING , 0x43 }, /* bootfile */
+ { OPTION_STRING , 0x38 }, /* DHCP_ERR_MESSAGE */
+//TODO: must be combined with 'sname' and 'file' handling:
+ { OPTION_STRING , 0x42 }, /* DHCP_TFTP_SERVER_NAME */
+ { OPTION_STRING , 0x43 }, /* DHCP_BOOT_FILE */
//TODO: not a string, but a set of LASCII strings:
-// { OPTION_STRING , 0x4D }, /* userclass */
+// { OPTION_STRING , 0x4D }, /* DHCP_USER_CLASS */
#if ENABLE_FEATURE_UDHCP_RFC3397
- { OPTION_STR1035 | OPTION_LIST , 0x77 }, /* search */
+ { OPTION_STR1035 | OPTION_LIST , 0x77 }, /* DHCP_DOMAIN_SEARCH */
#endif
{ OPTION_STATIC_ROUTES , 0x79 }, /* DHCP_STATIC_ROUTES */
- /* MSIE's "Web Proxy Autodiscovery Protocol" support */
- { OPTION_STRING , 0xfc }, /* wpad */
+ { OPTION_STRING , 0xfc }, /* DHCP_WPAD */
/* Options below have no match in dhcp_option_strings[],
* are not passed to dhcpc scripts, and cannot be specified
@@ -62,8 +62,9 @@ const struct dhcp_option dhcp_options[] = {
{ OPTION_IP , 0x32 }, /* DHCP_REQUESTED_IP */
{ OPTION_U8 , 0x35 }, /* DHCP_MESSAGE_TYPE */
{ OPTION_U16 , 0x39 }, /* DHCP_MAX_SIZE */
- { OPTION_STRING , 0x3C }, /* DHCP_VENDOR */
- { OPTION_STRING , 0x3D }, /* DHCP_CLIENT_ID */
+ { OPTION_STRING , 0x3c }, /* DHCP_VENDOR */
+//FIXME: handling of this option is not exactly correct:
+ { OPTION_STRING , 0x3d }, /* DHCP_CLIENT_ID */
{ 0, 0 } /* zeroed terminating entry */
};
@@ -76,10 +77,10 @@ const char dhcp_option_strings[] ALIGN1 =
"subnet" "\0" /* DHCP_SUBNET */
"timezone" "\0" /* DHCP_TIME_OFFSET */
"router" "\0" /* DHCP_ROUTER */
- "timesrv" "\0" /* DHCP_TIME_SERVER */
+// "timesrv" "\0" /* DHCP_TIME_SERVER */
// "namesrv" "\0" /* DHCP_NAME_SERVER */
"dns" "\0" /* DHCP_DNS_SERVER */
- "logsrv" "\0" /* DHCP_LOG_SERVER */
+// "logsrv" "\0" /* DHCP_LOG_SERVER */
// "cookiesrv" "\0" /* DHCP_COOKIE_SERVER */
"lprsrv" "\0" /* DHCP_LPR_SERVER */
"hostname" "\0" /* DHCP_HOST_NAME */
@@ -90,24 +91,24 @@ const char dhcp_option_strings[] ALIGN1 =
"ipttl" "\0" /* DHCP_IP_TTL */
"mtu" "\0" /* DHCP_MTU */
"broadcast" "\0" /* DHCP_BROADCAST */
- "nisdomain" "\0" /* */
- "nissrv" "\0" /* */
+ "nisdomain" "\0" /* DHCP_NIS_DOMAIN */
+ "nissrv" "\0" /* DHCP_NIS_SERVER */
"ntpsrv" "\0" /* DHCP_NTP_SERVER */
"wins" "\0" /* DHCP_WINS_SERVER */
"lease" "\0" /* DHCP_LEASE_TIME */
"serverid" "\0" /* DHCP_SERVER_ID */
- "message" "\0" /* DHCP_MESSAGE */
- "tftp" "\0"
- "bootfile" "\0"
-// "userclass" "\0"
+ "message" "\0" /* DHCP_ERR_MESSAGE */
+ "tftp" "\0" /* DHCP_TFTP_SERVER_NAME */
+ "bootfile" "\0" /* DHCP_BOOT_FILE */
+// "userclass" "\0" /* DHCP_USER_CLASS */
#if ENABLE_FEATURE_UDHCP_RFC3397
- "search" "\0"
+ "search" "\0" /* DHCP_DOMAIN_SEARCH */
#endif
// "staticroutes" is only used to set udhcpc environment, it doesn't work
-// in udhcpd.conf since OPTION_STATIC_ROUTES is not handled yet:
- "staticroutes" "\0" /* DHCP_STATIC_ROUTES */
- /* MSIE's "Web Proxy Autodiscovery Protocol" support */
- "wpad" "\0"
+// in udhcpd.conf since OPTION_STATIC_ROUTES is not handled yet
+// by "string->option" conversion code:
+ "staticroutes" "\0"/* DHCP_STATIC_ROUTES */
+ "wpad" "\0" /* DHCP_WPAD */
;
@@ -225,7 +226,7 @@ int FAST_FUNC end_option(uint8_t *optionptr)
/* add an option string to the options */
/* option bytes: [code][len][data1][data2]..[dataLEN] */
-int FAST_FUNC add_option_string(uint8_t *optionptr, uint8_t *string)
+void FAST_FUNC add_option_string(uint8_t *optionptr, uint8_t *string)
{
int end = end_option(optionptr);
@@ -233,17 +234,16 @@ int FAST_FUNC add_option_string(uint8_t *optionptr, uint8_t *string)
if (end + string[OPT_LEN] + 2 + 1 >= DHCP_OPTIONS_BUFSIZE) {
bb_error_msg("option 0x%02x did not fit into the packet",
string[OPT_CODE]);
- return 0;
+ return;
}
log_option("Adding option", string);
memcpy(optionptr + end, string, string[OPT_LEN] + 2);
optionptr[end + string[OPT_LEN] + 2] = DHCP_END;
- return string[OPT_LEN] + 2;
}
/* add a one to four byte option to a packet */
-int FAST_FUNC add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data)
+void FAST_FUNC add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data)
{
const struct dhcp_option *dh;
@@ -258,10 +258,10 @@ int FAST_FUNC add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data)
data <<= 8 * (4 - len);
/* Assignment is unaligned! */
move_to_unaligned32(&option[OPT_DATA], data);
- return add_option_string(optionptr, option);
+ add_option_string(optionptr, option);
+ return;
}
}
bb_error_msg("can't add option 0x%02x", code);
- return 0;
}