]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use designated initializer in dns_zone_create
authorMatthijs Mekking <matthijs@isc.org>
Tue, 23 Mar 2021 08:20:50 +0000 (09:20 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 13 Apr 2021 09:26:26 +0000 (11:26 +0200)
Shorten the code and make it less prone to initialisation errors
(it is still easy to forget adding an initializer, but it now defaults
to 0).

lib/dns/zone.c

index aab60751e8b407ea165e6b52a51e759278ab96e5..8c145e50c42b6bdd7326871be75f73ddb8f724cc 100644 (file)
@@ -989,14 +989,51 @@ inc_stats(dns_zone_t *zone, isc_statscounter_t counter) {
 isc_result_t
 dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
        isc_result_t result;
-       dns_zone_t *zone;
        isc_time_t now;
+       dns_zone_t *zone = NULL;
+       dns_zone_t z = { .masterformat = dns_masterformat_none,
+                        .journalsize = -1,
+                        .rdclass = dns_rdataclass_none,
+                        .type = dns_zone_none,
+                        .refresh = DNS_ZONE_DEFAULTREFRESH,
+                        .retry = DNS_ZONE_DEFAULTRETRY,
+                        .maxrefresh = DNS_ZONE_MAXREFRESH,
+                        .minrefresh = DNS_ZONE_MINREFRESH,
+                        .maxretry = DNS_ZONE_MAXRETRY,
+                        .minretry = DNS_ZONE_MINRETRY,
+                        .notifytype = dns_notifytype_yes,
+                        .zero_no_soa_ttl = true,
+                        .check_names = dns_severity_ignore,
+                        .idlein = DNS_DEFAULT_IDLEIN,
+                        .idleout = DNS_DEFAULT_IDLEOUT,
+                        .notifysrc4dscp = -1,
+                        .notifysrc6dscp = -1,
+                        .xfrsource4dscp = -1,
+                        .xfrsource6dscp = -1,
+                        .altxfrsource4dscp = -1,
+                        .altxfrsource6dscp = -1,
+                        .maxxfrin = MAX_XFER_TIME,
+                        .maxxfrout = MAX_XFER_TIME,
+                        .sigvalidityinterval = 30 * 24 * 3600,
+                        .sigresigninginterval = 7 * 24 * 3600,
+                        .statlevel = dns_zonestat_none,
+                        .notifydelay = 5,
+                        .signatures = 10,
+                        .nodes = 100,
+                        .privatetype = (dns_rdatatype_t)0xffffU,
+                        .rpz_num = DNS_RPZ_INVALID_NUM,
+                        .requestixfr = true,
+                        .ixfr_ratio = 100,
+                        .requestexpire = true,
+                        .updatemethod = dns_updatemethod_increment,
+                        .magic = ZONE_MAGIC };
 
        REQUIRE(zonep != NULL && *zonep == NULL);
        REQUIRE(mctx != NULL);
 
        TIME_NOW(&now);
        zone = isc_mem_get(mctx, sizeof(*zone));
+       *zone = z;
 
        zone->mctx = NULL;
        isc_mem_attach(mctx, &zone->mctx);
@@ -1006,88 +1043,27 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
 #ifdef DNS_ZONE_CHECKLOCK
        zone->locked = false;
 #endif /* ifdef DNS_ZONE_CHECKLOCK */
-       zone->db = NULL;
-       zone->zmgr = NULL;
+
+       zone->notifytime = now;
+
        ISC_LINK_INIT(zone, link);
        isc_refcount_init(&zone->erefs, 1);
        isc_refcount_init(&zone->irefs, 0);
        dns_name_init(&zone->origin, NULL);
-       zone->strnamerd = NULL;
-       zone->strname = NULL;
-       zone->strrdclass = NULL;
-       zone->strviewname = NULL;
-       zone->masterfile = NULL;
-       zone->stream = NULL;
        ISC_LIST_INIT(zone->includes);
        ISC_LIST_INIT(zone->newincludes);
-       zone->nincludes = 0;
-       zone->masterformat = dns_masterformat_none;
-       zone->masterstyle = NULL;
-       zone->keydirectory = NULL;
-       zone->journalsize = -1;
-       zone->journal = NULL;
-       zone->rdclass = dns_rdataclass_none;
-       zone->type = dns_zone_none;
        atomic_init(&zone->flags, 0);
        atomic_init(&zone->options, 0);
        atomic_init(&zone->keyopts, 0);
-       zone->db_argc = 0;
-       zone->db_argv = NULL;
        isc_time_settoepoch(&zone->expiretime);
        isc_time_settoepoch(&zone->refreshtime);
        isc_time_settoepoch(&zone->dumptime);
        isc_time_settoepoch(&zone->loadtime);
-       zone->notifytime = now;
        isc_time_settoepoch(&zone->resigntime);
        isc_time_settoepoch(&zone->keywarntime);
        isc_time_settoepoch(&zone->signingtime);
        isc_time_settoepoch(&zone->nsec3chaintime);
        isc_time_settoepoch(&zone->refreshkeytime);
-       zone->refreshkeyinterval = 0;
-       zone->refreshkeycount = 0;
-       zone->refresh = DNS_ZONE_DEFAULTREFRESH;
-       zone->retry = DNS_ZONE_DEFAULTRETRY;
-       zone->expire = 0;
-       zone->minimum = 0;
-       zone->maxrefresh = DNS_ZONE_MAXREFRESH;
-       zone->minrefresh = DNS_ZONE_MINREFRESH;
-       zone->maxretry = DNS_ZONE_MAXRETRY;
-       zone->minretry = DNS_ZONE_MINRETRY;
-       zone->masters = NULL;
-       zone->masterdscps = NULL;
-       zone->masterkeynames = NULL;
-       zone->mastertlsnames = NULL;
-       zone->mastersok = NULL;
-       zone->masterscnt = 0;
-       zone->curmaster = 0;
-       zone->soattl = 0;
-       zone->maxttl = 0;
-       zone->notify = NULL;
-       zone->notifykeynames = NULL;
-       zone->notifytlsnames = NULL;
-       zone->notifydscp = NULL;
-       zone->notifytype = dns_notifytype_yes;
-       zone->notifycnt = 0;
-       zone->task = NULL;
-       zone->loadtask = NULL;
-       zone->update_acl = NULL;
-       zone->forward_acl = NULL;
-       zone->notify_acl = NULL;
-       zone->query_acl = NULL;
-       zone->queryon_acl = NULL;
-       zone->xfr_acl = NULL;
-       zone->update_disabled = false;
-       zone->zero_no_soa_ttl = true;
-       zone->check_names = dns_severity_ignore;
-       zone->request = NULL;
-       zone->lctx = NULL;
-       zone->readio = NULL;
-       zone->dctx = NULL;
-       zone->writeio = NULL;
-       zone->timer = NULL;
-       zone->idlein = DNS_DEFAULT_IDLEIN;
-       zone->idleout = DNS_DEFAULT_IDLEOUT;
-       zone->log_key_expired_timer = 0;
        ISC_LIST_INIT(zone->notifies);
        isc_sockaddr_any(&zone->notifysrc4);
        isc_sockaddr_any6(&zone->notifysrc6);
@@ -1095,74 +1071,14 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
        isc_sockaddr_any6(&zone->xfrsource6);
        isc_sockaddr_any(&zone->altxfrsource4);
        isc_sockaddr_any6(&zone->altxfrsource6);
-       zone->notifysrc4dscp = -1;
-       zone->notifysrc6dscp = -1;
-       zone->xfrsource4dscp = -1;
-       zone->xfrsource6dscp = -1;
-       zone->altxfrsource4dscp = -1;
-       zone->altxfrsource6dscp = -1;
-       zone->xfr = NULL;
-       zone->tsigkey = NULL;
-       zone->transport = NULL;
-       zone->maxxfrin = MAX_XFER_TIME;
-       zone->maxxfrout = MAX_XFER_TIME;
-       zone->ssutable = NULL;
-       zone->sigvalidityinterval = 30 * 24 * 3600;
-       zone->keyvalidityinterval = 0;
-       zone->sigresigninginterval = 7 * 24 * 3600;
-       zone->kasp = NULL;
-       zone->view = NULL;
-       zone->prev_view = NULL;
-       zone->checkmx = NULL;
-       zone->checksrv = NULL;
-       zone->checkns = NULL;
        ISC_LINK_INIT(zone, statelink);
-       zone->statelist = NULL;
-       zone->stats = NULL;
-       zone->requeststats_on = false;
-       zone->statlevel = dns_zonestat_none;
-       zone->requeststats = NULL;
-       zone->rcvquerystats = NULL;
-       zone->dnssecsignstats = NULL;
-       zone->notifydelay = 5;
-       zone->isself = NULL;
-       zone->isselfarg = NULL;
        ISC_LIST_INIT(zone->signing);
        ISC_LIST_INIT(zone->nsec3chain);
        ISC_LIST_INIT(zone->setnsec3param_queue);
-       zone->signatures = 10;
-       zone->nodes = 100;
-       zone->privatetype = (dns_rdatatype_t)0xffffU;
-       zone->added = false;
-       zone->automatic = false;
-       zone->rpzs = NULL;
-       zone->rpz_num = DNS_RPZ_INVALID_NUM;
-
-       zone->catzs = NULL;
-       zone->parentcatz = NULL;
-
        ISC_LIST_INIT(zone->forwards);
-       zone->raw = NULL;
-       zone->secure = NULL;
-       zone->sourceserial = 0;
-       zone->sourceserialset = false;
-       zone->requestixfr = true;
-       zone->ixfr_ratio = 100;
-       zone->requestexpire = true;
        ISC_LIST_INIT(zone->rss_events);
        ISC_LIST_INIT(zone->rss_post);
-       zone->rss_db = NULL;
-       zone->rss_raw = NULL;
-       zone->rss_newver = NULL;
-       zone->rss_oldver = NULL;
-       zone->rss_event = NULL;
-       zone->rss_state = NULL;
-       zone->updatemethod = dns_updatemethod_increment;
-       zone->maxrecords = 0U;
-
-       zone->magic = ZONE_MAGIC;
-
-       zone->gluecachestats = NULL;
+
        result = isc_stats_create(mctx, &zone->gluecachestats,
                                  dns_gluecachestatscounter_max);
        if (result != ISC_R_SUCCESS) {