svn commit: trunk/busybox/networking/udhcp
vda at busybox.net
vda at busybox.net
Fri Feb 2 01:16:09 UTC 2007
Author: vda
Date: 2007-02-01 17:16:08 -0800 (Thu, 01 Feb 2007)
New Revision: 17708
Log:
udhcpd: allow "domain" to be a list of DNS servers, not just one
Modified:
trunk/busybox/networking/udhcp/files.c
trunk/busybox/networking/udhcp/options.c
Changeset:
Modified: trunk/busybox/networking/udhcp/files.c
===================================================================
--- trunk/busybox/networking/udhcp/files.c 2007-02-02 01:03:29 UTC (rev 17707)
+++ trunk/busybox/networking/udhcp/files.c 2007-02-02 01:16:08 UTC (rev 17708)
@@ -101,19 +101,8 @@
{
struct option_set *existing, *new, **curr;
- /* add it to an existing option */
existing = find_option(*opt_list, option->code);
- if (existing) {
- DEBUG("Attaching option %s to existing member of list", option->name);
- if (option->flags & OPTION_LIST) {
- if (existing->data[OPT_LEN] + length <= 255) {
- existing->data = realloc(existing->data,
- existing->data[OPT_LEN] + length + 2);
- memcpy(existing->data + existing->data[OPT_LEN] + 2, buffer, length);
- existing->data[OPT_LEN] += length;
- } /* else, ignore the data, we could put this in a second option in the future */
- } /* else, ignore the new data */
- } else {
+ if (!existing) {
DEBUG("Attaching option %s to list", option->name);
/* make a new option */
@@ -129,7 +118,26 @@
new->next = *curr;
*curr = new;
+ return;
}
+
+ /* add it to an existing option */
+ DEBUG("Attaching option %s to existing member of list", option->name);
+ if (option->flags & OPTION_LIST) {
+ if (existing->data[OPT_LEN] + length <= 255) {
+ existing->data = xrealloc(existing->data,
+ existing->data[OPT_LEN] + length + 3);
+ if ((option->flags & TYPE_MASK) == OPTION_STRING) {
+ if (existing->data[OPT_LEN] + length >= 255)
+ return;
+ /* add space separator between STRING options in a list */
+ existing->data[existing->data[OPT_LEN] + 2] = ' ';
+ existing->data[OPT_LEN]++;
+ }
+ memcpy(existing->data + existing->data[OPT_LEN] + 2, buffer, length);
+ existing->data[OPT_LEN] += length;
+ } /* else, ignore the data, we could put this in a second option in the future */
+ } /* else, ignore the new data */
}
Modified: trunk/busybox/networking/udhcp/options.c
===================================================================
--- trunk/busybox/networking/udhcp/options.c 2007-02-02 01:03:29 UTC (rev 17707)
+++ trunk/busybox/networking/udhcp/options.c 2007-02-02 01:16:08 UTC (rev 17708)
@@ -23,7 +23,7 @@
{"lprsvr", OPTION_IP | OPTION_LIST, 0x09},
{"hostname", OPTION_STRING | OPTION_REQ, 0x0c},
{"bootsize", OPTION_U16, 0x0d},
- {"domain", OPTION_STRING | OPTION_REQ, 0x0f},
+ {"domain", OPTION_STRING | OPTION_LIST | OPTION_REQ, 0x0f},
{"swapsvr", OPTION_IP, 0x10},
{"rootpath", OPTION_STRING, 0x11},
{"ipttl", OPTION_U8, 0x17},
More information about the busybox-cvs
mailing list