s4-dns: renamed DNS_TYPE_ZERO to DNS_TYPE_TOMBSTONE
authorAndrew Tridgell <tridge@samba.org>
Thu, 13 Jan 2011 00:10:27 +0000 (11:10 +1100)
committerAndrew Tridgell <tridge@samba.org>
Fri, 14 Jan 2011 05:39:32 +0000 (16:39 +1100)
we now know that these are tombstone records, with a timestamp

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

librpc/idl/dnsp.idl
source4/dns_server/dlz_bind9.c

index 495a3e2af201dfa357a938258a0480c4740a544e..f8cf1d43be7aa306c82a216f19a73f6b9498172e 100644 (file)
@@ -24,7 +24,7 @@ import "misc.idl";
 interface dnsp
 {
        typedef [enum16bit] enum {
-               DNS_TYPE_ZERO  = 0x0,
+               DNS_TYPE_TOMBSTONE  = 0x0,
                DNS_TYPE_A     = 0x1,
                DNS_TYPE_NS    = 0x2,
                DNS_TYPE_MD    = 0x3,
@@ -109,6 +109,7 @@ interface dnsp
        } dnsp_srv;
 
        typedef [nodiscriminant,gensize] union {
+               [case(DNS_TYPE_TOMBSTONE)]                  NTTIME timestamp;
                [case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)]   ipv4address ipv4;
                [case(DNS_TYPE_NS)]                         dnsp_name ns;
                [case(DNS_TYPE_CNAME)]                      dnsp_name cname;
index d2fa81aee232cdf4fb310e77b7d8b0449d17386b..7dd06c1b2c886141d2215425538c8beb3c3adb18 100644 (file)
@@ -220,15 +220,16 @@ static bool b9_single_valued(enum dns_record_type dns_type)
 /*
   see if a DNS type is single valued
  */
-static enum dns_record_type b9_dns_type(const char *type)
+static bool b9_dns_type(const char *type, enum dns_record_type *dtype)
 {
        int i;
        for (i=0; i<ARRAY_SIZE(dns_typemap); i++) {
                if (strcasecmp(dns_typemap[i].typestr, type) == 0) {
-                       return dns_typemap[i].dns_type;
+                       *dtype = dns_typemap[i].dns_type;
+                       return true;
                }
        }
-       return DNS_TYPE_ZERO;
+       return false;
 }
 
 
@@ -1410,8 +1411,7 @@ _PUBLIC_ isc_result_t dlz_delrdataset(const char *name, const char *type, void *
                return ISC_R_FAILURE;
        }
 
-       dns_type = b9_dns_type(type);
-       if (dns_type == DNS_TYPE_ZERO) {
+       if (!b9_dns_type(type, &dns_type)) {
                state->log(ISC_LOG_INFO, "samba_dlz: bad dns type %s in delete", type);
                return ISC_R_FAILURE;
        }