david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[dns] Disambiguate "no nameserver" and "no DNS record" errors

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2010-12-01 00:47:09 +00:00
parent b8f721123b
commit 34dab1007c
1 changed files with 10 additions and 2 deletions

View File

@ -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;
}