]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
libdns refactoring: integrate zone->options and zone->options2 into one enum, removin...
authorWitold Kręcicki <wpk@isc.org>
Tue, 3 Apr 2018 21:56:04 +0000 (23:56 +0200)
committerWitold Kręcicki <wpk@isc.org>
Fri, 6 Apr 2018 06:04:41 +0000 (08:04 +0200)
bin/check/check-tool.c
bin/check/check-tool.h
bin/check/named-checkconf.c
bin/check/named-checkzone.c
bin/named/server.c
bin/named/statschannel.c
lib/dns/include/dns/zone.h
lib/dns/win32/libdns.def.in
lib/dns/zone.c
lib/ns/update.c

index cf08a4db334b3f8b78bc7b1214672cc4d14b255b..e8734e1b1e47b03bd77da90b0f44ce550951b50e 100644 (file)
@@ -99,18 +99,17 @@ isc_boolean_t docheckmx = ISC_FALSE;
 isc_boolean_t dochecksrv = ISC_FALSE;
 isc_boolean_t docheckns = ISC_FALSE;
 #endif
-unsigned int zone_options = DNS_ZONEOPT_CHECKNS |
-                           DNS_ZONEOPT_CHECKMX |
-                           DNS_ZONEOPT_MANYERRORS |
-                           DNS_ZONEOPT_CHECKNAMES |
-                           DNS_ZONEOPT_CHECKINTEGRITY |
+dns_zoneopt_t zone_options = DNS_ZONEOPT_CHECKNS |
+                            DNS_ZONEOPT_CHECKMX |
+                            DNS_ZONEOPT_MANYERRORS |
+                            DNS_ZONEOPT_CHECKNAMES |
+                            DNS_ZONEOPT_CHECKINTEGRITY |
 #if CHECK_SIBLING
-                           DNS_ZONEOPT_CHECKSIBLING |
+                            DNS_ZONEOPT_CHECKSIBLING |
 #endif
-                           DNS_ZONEOPT_CHECKWILDCARD |
-                           DNS_ZONEOPT_WARNMXCNAME |
-                           DNS_ZONEOPT_WARNSRVCNAME;
-unsigned int zone_options2 = 0;
+                            DNS_ZONEOPT_CHECKWILDCARD |
+                            DNS_ZONEOPT_WARNMXCNAME |
+                            DNS_ZONEOPT_WARNSRVCNAME;
 
 /*
  * This needs to match the list in bin/named/log.c.
@@ -702,7 +701,6 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
 
        dns_zone_setclass(zone, rdclass);
        dns_zone_setoption(zone, zone_options, ISC_TRUE);
-       dns_zone_setoption2(zone, zone_options2, ISC_TRUE);
        dns_zone_setoption(zone, DNS_ZONEOPT_NOMERGE, nomerge);
 
        dns_zone_setmaxttl(zone, maxttl);
index 55c2016894351ced339efb0673375c0cb39ec042..8420857f087790eaa8b0c5098f750c02cf4081c4 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <dns/masterdump.h>
 #include <dns/types.h>
+#include <dns/zone.h>
 
 ISC_LANG_BEGINDECLS
 
@@ -49,8 +50,7 @@ extern isc_boolean_t nomerge;
 extern isc_boolean_t docheckmx;
 extern isc_boolean_t docheckns;
 extern isc_boolean_t dochecksrv;
-extern unsigned int zone_options;
-extern unsigned int zone_options2;
+extern dns_zoneopt_t zone_options;
 
 ISC_LANG_ENDDECLS
 
index 9c57c482977cd8786651f2b315bef35fc6520a76..944597857ec5e3e1e3323286cb5eead6ea9b46e0 100644 (file)
@@ -408,7 +408,7 @@ configure_zone(const char *vclass, const char *view,
        obj = NULL;
        if (get_maps(maps, "max-zone-ttl", &obj)) {
                maxttl = cfg_obj_asuint32(obj);
-               zone_options2 |= DNS_ZONEOPT2_CHECKTTL;
+               zone_options |= DNS_ZONEOPT_CHECKTTL;
        }
 
        result = load_zone(mctx, zname, zfile, masterformat,
index 590948ebca2e011236ce250a59829919719850d6..aed4ac89dd5a4d4602d20cc1de69be99c991c283 100644 (file)
@@ -260,7 +260,7 @@ main(int argc, char **argv) {
                        break;
 
                case 'l':
-                       zone_options2 |= DNS_ZONEOPT2_CHECKTTL;
+                       zone_options |= DNS_ZONEOPT_CHECKTTL;
                        endp = NULL;
                        maxttl = strtol(isc_commandline_argument, &endp, 0);
                        if (*endp != '\0') {
index 09f1c5dd144751de21a588f0bb37323cc42e1c47..d42c001785871b70b2f39f645996c24b62643f44 100644 (file)
@@ -3350,7 +3350,7 @@ create_empty_zone(dns_zone_t *zone, dns_name_t *name, dns_view_t *view,
                dns_db_closeversion(db, &version, ISC_TRUE);
                CHECK(dns_zone_replacedb(zone, db, ISC_FALSE));
        }
-       dns_zone_setoption2(zone, DNS_ZONEOPT2_AUTOEMPTY, ISC_TRUE);
+       dns_zone_setoption(zone, DNS_ZONEOPT_AUTOEMPTY, ISC_TRUE);
        dns_zone_setview(zone, view);
        CHECK(dns_view_addzone(view, zone));
 
index 22e0fdac9e7311c1962bfb4dad13f562e7745c0e..0080ead9c0f80fcd4fb88c2f47b2a2a2713b0ac2 100644 (file)
@@ -100,7 +100,7 @@ user_zonetype( dns_zone_t *zone ) {
        };
        const struct zt *tp;
 
-       if ((dns_zone_getoptions2(zone) & DNS_ZONEOPT2_AUTOEMPTY) != 0)
+       if ((dns_zone_getoptions(zone) & DNS_ZONEOPT_AUTOEMPTY) != 0)
                return ("builtin");
 
        view = dns_zone_getview(zone);
index 3c21ca8f083e384f96fd4e26fbcfea7b31458fea..d3fed857c326164726884c503c934e7c9eb63950 100644 (file)
@@ -49,53 +49,38 @@ typedef enum {
        dns_zonestat_full
 } dns_zonestat_level_t;
 
-#define DNS_ZONEOPT_SERVERS      0x00000001U   /*%< perform server checks */
-#define DNS_ZONEOPT_PARENTS      0x00000002U   /*%< perform parent checks */
-#define DNS_ZONEOPT_CHILDREN     0x00000004U   /*%< perform child checks */
-#define DNS_ZONEOPT_NOTIFY       0x00000008U   /*%< perform NOTIFY */
-#define DNS_ZONEOPT_MANYERRORS   0x00000010U   /*%< return many errors on load */
-#define DNS_ZONEOPT_IXFRFROMDIFFS 0x00000020U  /*%< calculate differences */
-#define DNS_ZONEOPT_NOMERGE      0x00000040U   /*%< don't merge journal */
-#define DNS_ZONEOPT_CHECKNS      0x00000080U   /*%< check if NS's are addresses */
-#define DNS_ZONEOPT_FATALNS      0x00000100U   /*%< DNS_ZONEOPT_CHECKNS is fatal */
-#define DNS_ZONEOPT_MULTIMASTER          0x00000200U   /*%< this zone has multiple masters */
-#define DNS_ZONEOPT_USEALTXFRSRC  0x00000400U  /*%< use alternate transfer sources */
-#define DNS_ZONEOPT_CHECKNAMES   0x00000800U   /*%< check-names */
-#define DNS_ZONEOPT_CHECKNAMESFAIL 0x00001000U /*%< fatal check-name failures */
-#define DNS_ZONEOPT_CHECKWILDCARD 0x00002000U  /*%< check for internal wildcards */
-#define DNS_ZONEOPT_CHECKMX      0x00004000U   /*%< check-mx */
-#define DNS_ZONEOPT_CHECKMXFAIL   0x00008000U  /*%< fatal check-mx failures */
-#define DNS_ZONEOPT_CHECKINTEGRITY 0x00010000U /*%< perform integrity checks */
-#define DNS_ZONEOPT_CHECKSIBLING  0x00020000U  /*%< perform sibling glue checks */
-#define DNS_ZONEOPT_NOCHECKNS    0x00040000U   /*%< disable IN NS address checks */
-#define DNS_ZONEOPT_WARNMXCNAME          0x00080000U   /*%< warn on MX CNAME check */
-#define DNS_ZONEOPT_IGNOREMXCNAME 0x00100000U  /*%< ignore MX CNAME check */
-#define DNS_ZONEOPT_WARNSRVCNAME  0x00200000U  /*%< warn on SRV CNAME check */
-#define DNS_ZONEOPT_IGNORESRVCNAME 0x00400000U /*%< ignore SRV CNAME check */
-#define DNS_ZONEOPT_UPDATECHECKKSK 0x00800000U /*%< check dnskey KSK flag */
-#define DNS_ZONEOPT_TRYTCPREFRESH 0x01000000U  /*%< try tcp refresh on udp failure */
-#define DNS_ZONEOPT_NOTIFYTOSOA          0x02000000U   /*%< Notify the SOA MNAME */
-#define DNS_ZONEOPT_NSEC3TESTZONE 0x04000000U  /*%< nsec3-test-zone */
-#define DNS_ZONEOPT_SECURETOINSECURE 0x08000000U /*%< dnssec-secure-to-insecure */
-#define DNS_ZONEOPT_DNSKEYKSKONLY 0x10000000U  /*%< dnssec-dnskey-kskonly */
-#define DNS_ZONEOPT_CHECKDUPRR   0x20000000U   /*%< check-dup-records */
-#define DNS_ZONEOPT_CHECKDUPRRFAIL 0x40000000U /*%< fatal check-dup-records failures */
-#define DNS_ZONEOPT_CHECKSPF     0x80000000U   /*%< check SPF records */
-
-/*
- * The following zone options are shifted left into the
- * higher-order 32 bits of the options.
- */
-#define DNS_ZONEOPT2_CHECKTTL    0x00000001U   /*%< check max-zone-ttl */
-#define DNS_ZONEOPT2_AUTOEMPTY   0x00000002U   /*%< automatic empty zone */
-
-#ifndef NOMINUM_PUBLIC
-/*
- * Nominum specific options build down.
- */
-#define DNS_ZONEOPT_NOTIFYFORWARD 0x80000000U  /* forward notify to master */
-#endif /* NOMINUM_PUBLIC */
-
+typedef enum {
+       DNS_ZONEOPT_MANYERRORS       = 1<<0,  /*%< return many errors on load */
+       DNS_ZONEOPT_IXFRFROMDIFFS    = 1<<1,  /*%< calculate differences */
+       DNS_ZONEOPT_NOMERGE          = 1<<2,  /*%< don't merge journal */
+       DNS_ZONEOPT_CHECKNS          = 1<<3,  /*%< check if NS's are addresses */
+       DNS_ZONEOPT_FATALNS          = 1<<4,  /*%< DNS_ZONEOPT_CHECKNS is fatal */
+       DNS_ZONEOPT_MULTIMASTER      = 1<<5,  /*%< this zone has multiple masters */
+       DNS_ZONEOPT_USEALTXFRSRC     = 1<<6,  /*%< use alternate transfer sources */
+       DNS_ZONEOPT_CHECKNAMES       = 1<<7,  /*%< check-names */
+       DNS_ZONEOPT_CHECKNAMESFAIL   = 1<<8,  /*%< fatal check-name failures */
+       DNS_ZONEOPT_CHECKWILDCARD    = 1<<9,  /*%< check for internal wildcards */
+       DNS_ZONEOPT_CHECKMX          = 1<<10, /*%< check-mx */
+       DNS_ZONEOPT_CHECKMXFAIL      = 1<<11, /*%< fatal check-mx failures */
+       DNS_ZONEOPT_CHECKINTEGRITY   = 1<<12, /*%< perform integrity checks */
+       DNS_ZONEOPT_CHECKSIBLING     = 1<<13, /*%< perform sibling glue checks */
+       DNS_ZONEOPT_NOCHECKNS        = 1<<14, /*%< disable IN NS address checks */
+       DNS_ZONEOPT_WARNMXCNAME      = 1<<15, /*%< warn on MX CNAME check */
+       DNS_ZONEOPT_IGNOREMXCNAME    = 1<<16, /*%< ignore MX CNAME check */
+       DNS_ZONEOPT_WARNSRVCNAME     = 1<<17, /*%< warn on SRV CNAME check */
+       DNS_ZONEOPT_IGNORESRVCNAME   = 1<<18, /*%< ignore SRV CNAME check */
+       DNS_ZONEOPT_UPDATECHECKKSK   = 1<<19, /*%< check dnskey KSK flag */
+       DNS_ZONEOPT_TRYTCPREFRESH    = 1<<20, /*%< try tcp refresh on udp failure */
+       DNS_ZONEOPT_NOTIFYTOSOA      = 1<<21, /*%< Notify the SOA MNAME */
+       DNS_ZONEOPT_NSEC3TESTZONE    = 1<<22, /*%< nsec3-test-zone */
+       DNS_ZONEOPT_SECURETOINSECURE = 1<<23, /*%< dnssec-secure-to-insecure */
+       DNS_ZONEOPT_DNSKEYKSKONLY    = 1<<24, /*%< dnssec-dnskey-kskonly */
+       DNS_ZONEOPT_CHECKDUPRR       = 1<<25, /*%< check-dup-records */
+       DNS_ZONEOPT_CHECKDUPRRFAIL   = 1<<26, /*%< fatal check-dup-records failures */
+       DNS_ZONEOPT_CHECKSPF         = 1<<27, /*%< check SPF records */
+       DNS_ZONEOPT_CHECKTTL         = 1<<28, /*%< check max-zone-ttl */
+       DNS_ZONEOPT_AUTOEMPTY        = 1<<29  /*%< automatic empty zone */
+} dns_zoneopt_t;
 /*
  * Zone key maintenance options
  */
@@ -681,37 +666,21 @@ dns_zone_unload(dns_zone_t *zone);
  */
 
 void
-dns_zone_setoption(dns_zone_t *zone, unsigned int option,
+dns_zone_setoption(dns_zone_t *zone, dns_zoneopt_t option,
                   isc_boolean_t value);
-void
-dns_zone_setoption2(dns_zone_t *zone, unsigned int option,
-                   isc_boolean_t value);
 /*%<
  *     Set the given options on ('value' == ISC_TRUE) or off
  *     ('value' == #ISC_FALSE).
  *
- *     dns_zone_setoption2() has been introduced because the number
- *     of options needed now exceeds the 32 bits in the zone->options
- *     field; it should be used set options with names beginning
- *     with DNS_ZONEOPT2_.
- *
  * Require:
  *\li  'zone' to be a valid zone.
  */
 
-unsigned int
+dns_zoneopt_t
 dns_zone_getoptions(dns_zone_t *zone);
-unsigned int
-dns_zone_getoptions2(dns_zone_t *zone);
 /*%<
  *     Returns the current zone options.
  *
- *     Callers should be aware there is now more than one set of zone
- *     options.  dns_zone_getoptions2() has been introduced because the
- *     number of options needed now exceeds the 32 bits in the
- *     zone->options field. It returns the options whose names begin
- *     with DNS_ZONEOPT2_.
- *
  * Require:
  *\li  'zone' to be a valid zone.
  */
index 4b8c72b5a19ede96c25a3201b3f2ddb9cf7ad4ec..4314c0154d8f19be2b5a173fd2871c70278e64e1 100644 (file)
@@ -1174,7 +1174,6 @@ dns_zone_getnotifysrc4dscp
 dns_zone_getnotifysrc6
 dns_zone_getnotifysrc6dscp
 dns_zone_getoptions
-dns_zone_getoptions2
 dns_zone_getorigin
 dns_zone_getprivatetype
 dns_zone_getqueryacl
@@ -1278,7 +1277,6 @@ dns_zone_setnotifysrc6dscp
 dns_zone_setnotifytype
 dns_zone_setnsec3param
 dns_zone_setoption
-dns_zone_setoption2
 dns_zone_setorigin
 dns_zone_setprivatetype
 dns_zone_setqueryacl
index d68355451f36a409027597be88bc5170a811c4b2..8edc8ae0223c833b6994c78a100468c98a81b1f8 100644 (file)
@@ -218,8 +218,7 @@ struct dns_zone {
        dns_rdataclass_t        rdclass;
        dns_zonetype_t          type;
        unsigned int            flags;
-       unsigned int            options;
-       unsigned int            options2;
+       dns_zoneopt_t           options;
        unsigned int            db_argc;
        char                    **db_argv;
        isc_time_t              expiretime;
@@ -498,7 +497,6 @@ typedef struct {
                                                   *   first time.  */
 
 #define DNS_ZONE_OPTION(z,o) (((z)->options & (o)) != 0)
-#define DNS_ZONE_OPTION2(z,o) (((z)->options2 & (o)) != 0)
 #define DNS_ZONEKEY_OPTION(z,o) (((z)->keyopts & (o)) != 0)
 
 /* Flags for zone_load() */
@@ -941,7 +939,6 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
        zone->type = dns_zone_none;
        zone->flags = 0;
        zone->options = 0;
-       zone->options2 = 0;
        zone->keyopts = 0;
        zone->db_argc = 0;
        zone->db_argv = NULL;
@@ -1648,9 +1645,9 @@ dns_zone_setmaxttl(dns_zone_t *zone, dns_ttl_t maxttl) {
 
        LOCK_ZONE(zone);
        if (maxttl != 0)
-               zone->options2 |= DNS_ZONEOPT2_CHECKTTL;
+               zone->options |= DNS_ZONEOPT_CHECKTTL;
        else
-               zone->options2 &= ~DNS_ZONEOPT2_CHECKTTL;
+               zone->options &= ~DNS_ZONEOPT_CHECKTTL;
        zone->maxttl = maxttl;
        UNLOCK_ZONE(zone);
 
@@ -2269,7 +2266,7 @@ get_master_options(dns_zone_t *zone) {
                options |= DNS_MASTER_CHECKMXFAIL;
        if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKWILDCARD))
                options |= DNS_MASTER_CHECKWILDCARD;
-       if (DNS_ZONE_OPTION2(zone, DNS_ZONEOPT2_CHECKTTL))
+       if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKTTL))
                options |= DNS_MASTER_CHECKTTL;
        return (options);
 }
@@ -5357,7 +5354,7 @@ dns_zone_setflag(dns_zone_t *zone, unsigned int flags, isc_boolean_t value) {
 }
 
 void
-dns_zone_setoption(dns_zone_t *zone, unsigned int option,
+dns_zone_setoption(dns_zone_t *zone, dns_zoneopt_t option,
                   isc_boolean_t value)
 {
        REQUIRE(DNS_ZONE_VALID(zone));
@@ -5370,34 +5367,13 @@ dns_zone_setoption(dns_zone_t *zone, unsigned int option,
        UNLOCK_ZONE(zone);
 }
 
-void
-dns_zone_setoption2(dns_zone_t *zone, unsigned int option,
-                   isc_boolean_t value)
-{
-       REQUIRE(DNS_ZONE_VALID(zone));
-
-       LOCK_ZONE(zone);
-       if (value)
-               zone->options2 |= option;
-       else
-               zone->options2 &= ~option;
-       UNLOCK_ZONE(zone);
-}
-
-unsigned int
+dns_zoneopt_t
 dns_zone_getoptions(dns_zone_t *zone) {
        REQUIRE(DNS_ZONE_VALID(zone));
 
        return (zone->options);
 }
 
-unsigned int
-dns_zone_getoptions2(dns_zone_t *zone) {
-       REQUIRE(DNS_ZONE_VALID(zone));
-
-       return (zone->options2);
-}
-
 void
 dns_zone_setkeyopt(dns_zone_t *zone, unsigned int keyopt, isc_boolean_t value)
 {
index 05e60d592d9faed9564c0ad74ad8bf3b28241ed5..6e99e4a38c68857e106f7001eb029fec139eeb9b 100644 (file)
@@ -1714,7 +1714,7 @@ check_mx(ns_client_t *client, dns_zone_t *zone,
        isc_result_t result;
        struct in6_addr addr6;
        struct in_addr addr;
-       unsigned int options;
+       dns_zoneopt_t options;
 
        dns_fixedname_init(&fixed);
        foundname = dns_fixedname_name(&fixed);
@@ -2503,7 +2503,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
        dns_ssutable_t *ssutable = NULL;
        dns_fixedname_t tmpnamefixed;
        dns_name_t *tmpname = NULL;
-       unsigned int options, options2;
+       dns_zoneopt_t options;
        dns_difftuple_t *tuple;
        dns_rdata_dnskey_t dnskey;
        isc_boolean_t had_dnskey;
@@ -2782,7 +2782,6 @@ update_action(isc_task_t *task, isc_event_t *event) {
         */
 
        options = dns_zone_getoptions(zone);
-       options2 = dns_zone_getoptions2(zone);
        for (result = dns_message_firstname(request, DNS_SECTION_UPDATE);
             result == ISC_R_SUCCESS;
             result = dns_message_nextname(request, DNS_SECTION_UPDATE))
@@ -2911,7 +2910,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
                                           "a non-terminal wildcard", namestr);
                        }
 
-                       if ((options2 & DNS_ZONEOPT2_CHECKTTL) != 0) {
+                       if ((options & DNS_ZONEOPT_CHECKTTL) != 0) {
                                maxttl = dns_zone_getmaxttl(zone);
                                if (ttl > maxttl) {
                                        ttl = maxttl;