summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2010-12-01 01:47:09 +0100
committerMichael Brown2010-12-01 01:47:09 +0100
commit34dab1007c089ecf4c9778367372d9159b79b7af (patch)
tree263ee66d766042e5274892eb79596dea1d3cd8cc
parent[hermon] Fix inconsistent information in HERMON_SET_PORT_GENERAL_PARAM (diff)
downloadipxe-34dab1007c089ecf4c9778367372d9159b79b7af.tar.gz
ipxe-34dab1007c089ecf4c9778367372d9159b79b7af.tar.xz
ipxe-34dab1007c089ecf4c9778367372d9159b79b7af.zip
[dns] Disambiguate "no nameserver" and "no DNS record" errors
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/net/udp/dns.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/net/udp/dns.c b/src/net/udp/dns.c
index ddbccc32..be7a98e7 100644
--- a/src/net/udp/dns.c
+++ b/src/net/udp/dns.c
@@ -46,6 +46,14 @@ FILE_LICENCE ( GPL2_OR_LATER );
FEATURE ( FEATURE_PROTOCOL, "DNS", DHCP_EB_FEATURE_DNS, 1 );
+/* Disambiguate the various error causes */
+#define ENXIO_NO_RECORD __einfo_error ( EINFO_ENXIO_NO_RECORD )
+#define EINFO_ENXIO_NO_RECORD \
+ __einfo_uniqify ( EINFO_ENXIO, 0x01, "DNS name does not exist" )
+#define ENXIO_NO_NAMESERVER __einfo_error ( EINFO_ENXIO_NO_NAMESERVER )
+#define EINFO_ENXIO_NO_NAMESERVER \
+ __einfo_uniqify ( EINFO_ENXIO, 0x02, "No DNS servers available" )
+
/** The DNS server */
static struct sockaddr_tcpip nameserver = {
.st_port = htons ( DNS_PORT ),
@@ -438,7 +446,7 @@ static int dns_xfer_deliver ( struct dns_request *dns,
goto done;
} else {
DBGC ( dns, "DNS %p found no CNAME record\n", dns );
- dns_done ( dns, -ENXIO );
+ dns_done ( dns, -ENXIO_NO_RECORD );
rc = 0;
goto done;
}
@@ -507,7 +515,7 @@ static int dns_resolv ( struct interface *resolv,
if ( ! nameserver.st_family ) {
DBG ( "DNS not attempting to resolve \"%s\": "
"no DNS servers\n", name );
- rc = -ENXIO;
+ rc = -ENXIO_NO_NAMESERVER;
goto err_no_nameserver;
}