#ifndef lint
static char copyright[] =
-"$Id: dns.c,v 1.25 2000/06/09 23:07:56 mellon Exp $ Copyright (c) 2000 The Internet Software Consortium. All rights reserved.\n";
+"$Id: dns.c,v 1.26 2000/07/05 07:14:26 mellon Exp $ Copyright (c) 2000 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
}
#if defined (NSUPDATE)
-int find_cached_zone (const char *dname, ns_class class,
- char *zname, size_t zsize,
- struct in_addr *addrs, int naddrs,
- struct dns_zone **zcookie)
+ns_rcode find_cached_zone (const char *dname, ns_class class,
+ char *zname, size_t zsize,
+ struct in_addr *addrs, int naddrs, int *naddrout,
+ struct dns_zone **zcookie)
{
isc_result_t status = ISC_R_NOTFOUND;
const char *np;
succeeded previously, but the update itself failed, meaning
that we shouldn't use the cached zone. */
if (!zcookie)
- return 0;
+ return ns_r_servfail;
/* For each subzone, try to find a cached zone. */
for (np = dname - 1; np; np = strchr (np, '.')) {
}
if (status != ISC_R_SUCCESS)
- return 0;
+ return ns_r_servfail;
/* Make sure the zone is valid. */
if (zone -> timeout && zone -> timeout < cur_time) {
dns_zone_dereference (&zone, MDL);
- return 0;
+ return ns_r_servfail;
}
/* Make sure the zone name will fit. */
if (strlen (zone -> name) > zsize) {
dns_zone_dereference (&zone, MDL);
- return 0;
+ return ns_r_servfail;
}
strcpy (zname, zone -> name);
if (!*zcookie)
dns_zone_reference (zcookie, zone, MDL);
dns_zone_dereference (&zone, MDL);
- return ix;
+ if (naddrout)
+ *naddrout = ix;
+ return ns_r_noerror;
}
void forget_zone (struct dns_zone **zone)