udhcp: remove support for some really old and odd options
function old new delta
dhcp_options 72 68 -4
dhcp_option_strings 271 253 -18
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/networking/udhcp/clientpacket.c b/networking/udhcp/clientpacket.c
index 8ccdfcc..f091d80 100644
--- a/networking/udhcp/clientpacket.c
+++ b/networking/udhcp/clientpacket.c
@@ -62,8 +62,9 @@
int i, len = 0;
for (i = 0; (c = dhcp_options[i].code) != 0; i++) {
- if (((dhcp_options[i].flags & OPTION_REQ)
- && !client_config.no_default_options)
+ if (( (dhcp_options[i].flags & OPTION_REQ)
+ && !client_config.no_default_options
+ )
|| (client_config.opt_mask[c >> 3] & (1 << (c & 7)))
) {
packet->options[end + OPT_DATA + len] = c;
diff --git a/networking/udhcp/options.c b/networking/udhcp/options.c
index 10ec459..6ab5708 100644
--- a/networking/udhcp/options.c
+++ b/networking/udhcp/options.c
@@ -11,17 +11,17 @@
#include "options.h"
-/* Supported options are easily added here */
+/* Supported options are easily added here. See RFC2132 */
const struct dhcp_option dhcp_options[] = {
/* flags code */
{ 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 , 0x05 }, /* DHCP_NAME_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 , 0x08 }, /* DHCP_COOKIE_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 */
{ OPTION_U16 , 0x0d }, /* DHCP_BOOT_SIZE */
@@ -37,7 +37,7 @@
{ OPTION_IP | OPTION_LIST , 0x2c }, /* DHCP_WINS_SERVER */
{ OPTION_IP , 0x32 }, /* DHCP_REQUESTED_IP */
{ OPTION_U32 , 0x33 }, /* DHCP_LEASE_TIME */
- { OPTION_U8 , 0x35 }, /* dhcptype */
+ { OPTION_U8 , 0x35 }, /* DHCP_MESSAGE_TYPE */
{ OPTION_IP , 0x36 }, /* DHCP_SERVER_ID */
{ OPTION_STRING , 0x38 }, /* DHCP_MESSAGE */
{ OPTION_STRING , 0x3C }, /* DHCP_VENDOR */
@@ -68,10 +68,10 @@
"timezone" "\0" /* DHCP_TIME_OFFSET */
"router" "\0" /* DHCP_ROUTER */
"timesrv" "\0" /* DHCP_TIME_SERVER */
- "namesrv" "\0" /* DHCP_NAME_SERVER */
+// "namesrv" "\0" /* DHCP_NAME_SERVER */
"dns" "\0" /* DHCP_DNS_SERVER */
"logsrv" "\0" /* DHCP_LOG_SERVER */
- "cookiesrv" "\0" /* DHCP_COOKIE_SERVER */
+// "cookiesrv" "\0" /* DHCP_COOKIE_SERVER */
"lprsrv" "\0" /* DHCP_LPR_SERVER */
"hostname" "\0" /* DHCP_HOST_NAME */
"bootsize" "\0" /* DHCP_BOOT_SIZE */
diff --git a/networking/udhcp/options.h b/networking/udhcp/options.h
index aeed369..8f6ab0f 100644
--- a/networking/udhcp/options.h
+++ b/networking/udhcp/options.h
@@ -41,10 +41,10 @@
#define DHCP_TIME_OFFSET 0x02
#define DHCP_ROUTER 0x03
#define DHCP_TIME_SERVER 0x04
-#define DHCP_NAME_SERVER 0x05
+//#define DHCP_NAME_SERVER 0x05 /* _really_ ancient */
#define DHCP_DNS_SERVER 0x06
#define DHCP_LOG_SERVER 0x07
-#define DHCP_COOKIE_SERVER 0x08
+//#define DHCP_COOKIE_SERVER 0x08 /* "quote of the day" */
#define DHCP_LPR_SERVER 0x09
#define DHCP_HOST_NAME 0x0c
#define DHCP_BOOT_SIZE 0x0d
@@ -64,8 +64,8 @@
#define DHCP_PARAM_REQ 0x37
#define DHCP_MESSAGE 0x38
#define DHCP_MAX_SIZE 0x39
-#define DHCP_T1 0x3a
-#define DHCP_T2 0x3b
+//#define DHCP_T1 0x3a
+//#define DHCP_T2 0x3b
#define DHCP_VENDOR 0x3c
#define DHCP_CLIENT_ID 0x3d
#define DHCP_FQDN 0x51
diff --git a/networking/udhcp/script.c b/networking/udhcp/script.c
index a74697c..dc658ad 100644
--- a/networking/udhcp/script.c
+++ b/networking/udhcp/script.c
@@ -78,8 +78,11 @@
*dest++ = '/';
option += 4;
optlen = 4;
- case OPTION_IP: /* Works regardless of host byte order. */
+ case OPTION_IP:
dest += sprint_nip(dest, "", option);
+// TODO: it can be a list only if (type_p->flags & OPTION_LIST).
+// Should we bail out/warn if we see multi-ip option which is
+// not allowed to be such? For example, DHCP_BROADCAST...
break;
case OPTION_BOOLEAN:
dest += sprintf(dest, *option ? "yes" : "no");