]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Have find_dns_zone return a result code.
authorTed Lemon <source@isc.org>
Wed, 5 Jul 2000 07:14:26 +0000 (07:14 +0000)
committerTed Lemon <source@isc.org>
Wed, 5 Jul 2000 07:14:26 +0000 (07:14 +0000)
common/dns.c

index a27e8f1676d6c1fcfa8a6c17ee1c8c4052b839b8..0d029da9d0d7c70a164c5e1afa91eaba593be1fa 100644 (file)
@@ -42,7 +42,7 @@
 
 #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"
@@ -336,10 +336,10 @@ int dns_zone_dereference (ptr, file, line)
 }
 
 #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;
@@ -351,7 +351,7 @@ int find_cached_zone (const char *dname, ns_class class,
           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, '.')) {
@@ -362,18 +362,18 @@ int find_cached_zone (const char *dname, ns_class class,
        }
 
        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);
 
@@ -423,7 +423,9 @@ int find_cached_zone (const char *dname, ns_class class,
        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)