summaryrefslogtreecommitdiffstats
path: root/src/net/ndp.c
diff options
context:
space:
mode:
authorMichael Brown2014-01-31 19:16:42 +0100
committerMichael Brown2014-02-05 15:56:49 +0100
commitd4c0226a6ce888218f258df409bb6a955e727d81 (patch)
tree365925bb9a14bdfb25763088ee0f53944181500b /src/net/ndp.c
parent[intel] Add some missing PCI IDs (diff)
downloadipxe-d4c0226a6ce888218f258df409bb6a955e727d81.tar.gz
ipxe-d4c0226a6ce888218f258df409bb6a955e727d81.tar.xz
ipxe-d4c0226a6ce888218f258df409bb6a955e727d81.zip
[dns] Support DNS search lists
Update the DNS resolver to support DNS search lists (as provided by DHCP option 119, DHCPv6 option 24, or NDP option 31). Add validation code to ensure that parsing of DNS packets does not overrun the input, get stuck in infinite loops, or (worse) write beyond the end of allocated buffers. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/ndp.c')
-rw-r--r--src/net/ndp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/net/ndp.c b/src/net/ndp.c
index 8141c8de..6450aa9f 100644
--- a/src/net/ndp.c
+++ b/src/net/ndp.c
@@ -786,6 +786,16 @@ const struct setting ndp_dns6_setting __setting ( SETTING_IP_EXTRA, dns6 ) = {
.scope = &ndp_settings_scope,
};
+/** DNS search list setting */
+const struct setting ndp_dnssl_setting __setting ( SETTING_IP_EXTRA, dnssl ) = {
+ .name = "dnssl",
+ .description = "DNS search list",
+ .tag = NDP_TAG ( NDP_OPT_DNSSL,
+ offsetof ( struct ndp_dnssl_option, names ) ),
+ .type = &setting_type_dnssl,
+ .scope = &ndp_settings_scope,
+};
+
/****************************************************************************
*
* IPv6 autoconfiguration