]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4817. [cleanup] Use DNS_NAME_INITABSOLUTE and DNS_NAME_INITNONABSOLUTE.
authorMark Andrews <marka@isc.org>
Mon, 13 Nov 2017 05:58:12 +0000 (16:58 +1100)
committerMark Andrews <marka@isc.org>
Mon, 13 Nov 2017 06:16:31 +0000 (17:16 +1100)
                        [RT #45433]

(cherry picked from commit 3d905e053369cff1412b9d20aa5bb23376e0fed4)

CHANGES
bin/named/query.c
lib/bind9/check.c
lib/dns/include/dns/name.h
lib/dns/master.c
lib/dns/name.c
lib/dns/rdata.c
lib/dns/tsig.c

diff --git a/CHANGES b/CHANGES
index 26e01af5482838193018487504ec853918f35ebc..e8c243980960fe90fcce008b881daf0025416745 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4817.  [cleanup]       Use DNS_NAME_INITABSOLUTE and DNS_NAME_INITNONABSOLUTE.
+                       [RT #45433]
+
 4816.  [bug]           Don't use a common array for storing EDNS options
                        in DiG as it could fill up. [RT #45611]
 
index 2b9f08413798cf551106ec2f4292ff6862e869de..a432811fc7a173e945952b2cb8435592e6227a07 100644 (file)
@@ -5951,15 +5951,6 @@ answer_in_glue(ns_client_t *client, dns_rdatatype_t qtype) {
        }
 }
 
-#define NS_NAME_INIT(A,B) \
-        { \
-               DNS_NAME_MAGIC, \
-               A, sizeof(A), sizeof(B), \
-               DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE, \
-               B, NULL, { (void *)-1, (void *)-1}, \
-               {NULL, NULL} \
-       }
-
 static unsigned char inaddr10_offsets[] = { 0, 3, 11, 16 };
 static unsigned char inaddr172_offsets[] = { 0, 3, 7, 15, 20 };
 static unsigned char inaddr192_offsets[] = { 0, 4, 8, 16, 21 };
@@ -5986,24 +5977,24 @@ static unsigned char inaddr31172[] = "\00231\003172\007IN-ADDR\004ARPA";
 static unsigned char inaddr168192[] = "\003168\003192\007IN-ADDR\004ARPA";
 
 static dns_name_t rfc1918names[] = {
-       NS_NAME_INIT(inaddr10, inaddr10_offsets),
-       NS_NAME_INIT(inaddr16172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr17172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr18172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr19172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr20172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr21172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr22172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr23172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr24172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr25172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr26172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr27172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr28172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr29172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr30172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr31172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr168192, inaddr192_offsets)
+       DNS_NAME_INITABSOLUTE(inaddr10, inaddr10_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr16172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr17172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr18172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr19172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr20172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr21172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr22172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr23172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr24172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr25172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr26172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr27172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr28172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr29172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr30172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr31172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr168192, inaddr192_offsets)
 };
 
 
@@ -6013,8 +6004,10 @@ static unsigned char hostmaster_data[] = "\012hostmaster\014root-servers\003org"
 static unsigned char prisoner_offsets[] = { 0, 9, 14, 18 };
 static unsigned char hostmaster_offsets[] = { 0, 11, 24, 28 };
 
-static dns_name_t prisoner = NS_NAME_INIT(prisoner_data, prisoner_offsets);
-static dns_name_t hostmaster = NS_NAME_INIT(hostmaster_data, hostmaster_offsets);
+static dns_name_t prisoner =
+       DNS_NAME_INITABSOLUTE(prisoner_data, prisoner_offsets);
+static dns_name_t hostmaster =
+       DNS_NAME_INITABSOLUTE(hostmaster_data, hostmaster_offsets);
 
 static void
 warn_rfc1918(ns_client_t *client, dns_name_t *fname, dns_rdataset_t *rdataset) {
index 5ec7f2d35c4004fc6e2959b4f0740aea08297754..7ff543fe5be50e1fa2be08b9cb22e597adbde12f 100644 (file)
@@ -51,7 +51,7 @@
 
 static unsigned char dlviscorg_ndata[] = "\003dlv\003isc\003org";
 static unsigned char dlviscorg_offsets[] = { 0, 4, 8, 12 };
-static const dns_name_t dlviscorg =
+static dns_name_t const dlviscorg =
        DNS_NAME_INITABSOLUTE(dlviscorg_ndata, dlviscorg_offsets);
 
 static isc_result_t
index 8c71edadc43eef199b86572e9b6884e9d7810bcc..5ac0ca0916ac2f8b094bfad24fdee5ad83d5bbe4 100644 (file)
@@ -143,6 +143,26 @@ struct dns_name {
 LIBDNS_EXTERNAL_DATA extern dns_name_t *dns_rootname;
 LIBDNS_EXTERNAL_DATA extern dns_name_t *dns_wildcardname;
 
+/*%<
+ * DNS_NAME_INITNONABSOLUTE and DNS_NAME_INITABSOLUTE are macros for
+ * initializing dns_name_t structures.
+ *
+ * Note[1]: 'length' is set to (sizeof(A) - 1) in DNS_NAME_INITNONABSOLUTE
+ * and sizeof(A) in DNS_NAME_INITABSOLUTE to allow C strings to be used
+ * to initialize 'ndata'.
+ *
+ * Note[2]: The final value of offsets for DNS_NAME_INITABSOLUTE should
+ * match (sizeof(A) - 1) which is the offset of the root label.
+ *
+ * Typical usage:
+ *     unsigned char data[] = "\005value";
+ *     unsigned char offsets[] = { 0 };
+ *     dns_name_t value = DNS_NAME_INITNONABSOLUTE(data, offsets);
+ *
+ *     unsigned char data[] = "\005value";
+ *     unsigned char offsets[] = { 0, 6 };
+ *     dns_name_t value = DNS_NAME_INITABSOLUTE(data, offsets);
+ */
 #define DNS_NAME_INITNONABSOLUTE(A,B) { \
        DNS_NAME_MAGIC, \
        A, (sizeof(A) - 1), sizeof(B), \
index 3f708290f7a80cf0b1a7a2f9f6f1249e227b0e29..f1baf8548b0aa130ef77908dfc47cf19ec14ddab 100644 (file)
@@ -322,39 +322,18 @@ loadctx_destroy(dns_loadctx_t *lctx);
 
 static unsigned char in_addr_arpa_data[]  = "\007IN-ADDR\004ARPA";
 static unsigned char in_addr_arpa_offsets[] = { 0, 8, 13 };
-static const dns_name_t in_addr_arpa =
-{
-       DNS_NAME_MAGIC,
-       in_addr_arpa_data, 14, 3,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       in_addr_arpa_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t const in_addr_arpa =
+       DNS_NAME_INITABSOLUTE(in_addr_arpa_data, in_addr_arpa_offsets);
 
 static unsigned char ip6_int_data[]  = "\003IP6\003INT";
 static unsigned char ip6_int_offsets[] = { 0, 4, 8 };
-static const dns_name_t ip6_int =
-{
-       DNS_NAME_MAGIC,
-       ip6_int_data, 9, 3,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       ip6_int_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t const ip6_int =
+       DNS_NAME_INITABSOLUTE(ip6_int_data, ip6_int_offsets);
 
 static unsigned char ip6_arpa_data[]  = "\003IP6\004ARPA";
 static unsigned char ip6_arpa_offsets[] = { 0, 4, 9 };
-static const dns_name_t ip6_arpa =
-{
-       DNS_NAME_MAGIC,
-       ip6_arpa_data, 10, 3,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       ip6_arpa_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t const ip6_arpa =
+       DNS_NAME_INITABSOLUTE(ip6_arpa_data, ip6_arpa_offsets);
 
 static inline isc_result_t
 gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *token,
index b5a32e53041e6285da4680b6ef4e85838fcd4741..dd8aa64641a01cf923d9ed54d97bc3d0b7f3376e 100644 (file)
@@ -144,34 +144,17 @@ do { \
  * literal, to avoid compiler warnings about discarding
  * the const attribute of a string.
  */
-static unsigned char root_ndata[] = { '\0' };
+static unsigned char root_ndata[] = { "" };
 static unsigned char root_offsets[] = { 0 };
 
-static dns_name_t root =
-{
-       DNS_NAME_MAGIC,
-       root_ndata, 1, 1,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       root_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
-/* XXXDCL make const? */
+static dns_name_t root = DNS_NAME_INITABSOLUTE(root_ndata, root_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_rootname = &root;
 
-static unsigned char wild_ndata[] = { '\001', '*' };
+static unsigned char wild_ndata[] = { "\001*" };
 static unsigned char wild_offsets[] = { 0 };
 
 static dns_name_t wild =
-{
-       DNS_NAME_MAGIC,
-       wild_ndata, 2, 1,
-       DNS_NAMEATTR_READONLY,
-       wild_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+       DNS_NAME_INITNONABSOLUTE(wild_ndata, wild_offsets);
 
 /* XXXDCL make const? */
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_wildcardname = &wild;
@@ -2574,47 +2557,12 @@ static unsigned char dr_dns_sd_udp_offsets[] = { 0, 3, 11 };
 static unsigned char lb_dns_sd_udp_data[]  = "\002lb\007_dns-sd\004_udp";
 static unsigned char lb_dns_sd_udp_offsets[] = { 0, 3, 11 };
 
-static const dns_name_t dns_sd[] = {
-       {
-               DNS_NAME_MAGIC,
-               b_dns_sd_udp_data, 15, 3,
-               DNS_NAMEATTR_READONLY,
-               b_dns_sd_udp_offsets, NULL,
-               {(void *)-1, (void *)-1},
-               {NULL, NULL}
-       },
-       {
-               DNS_NAME_MAGIC,
-               db_dns_sd_udp_data, 16, 3,
-               DNS_NAMEATTR_READONLY,
-               db_dns_sd_udp_offsets, NULL,
-               {(void *)-1, (void *)-1},
-               {NULL, NULL}
-       },
-       {
-               DNS_NAME_MAGIC,
-               r_dns_sd_udp_data, 15, 3,
-               DNS_NAMEATTR_READONLY,
-               r_dns_sd_udp_offsets, NULL,
-               {(void *)-1, (void *)-1},
-               {NULL, NULL}
-       },
-       {
-               DNS_NAME_MAGIC,
-               dr_dns_sd_udp_data, 16, 3,
-               DNS_NAMEATTR_READONLY,
-               dr_dns_sd_udp_offsets, NULL,
-               {(void *)-1, (void *)-1},
-               {NULL, NULL}
-       },
-       {
-               DNS_NAME_MAGIC,
-               lb_dns_sd_udp_data, 16, 3,
-               DNS_NAMEATTR_READONLY,
-               lb_dns_sd_udp_offsets, NULL,
-               {(void *)-1, (void *)-1},
-               {NULL, NULL}
-       }
+static dns_name_t const dns_sd[] = {
+       DNS_NAME_INITNONABSOLUTE(b_dns_sd_udp_data,  b_dns_sd_udp_offsets),
+       DNS_NAME_INITNONABSOLUTE(db_dns_sd_udp_data, db_dns_sd_udp_offsets),
+       DNS_NAME_INITNONABSOLUTE(r_dns_sd_udp_data, r_dns_sd_udp_offsets),
+       DNS_NAME_INITNONABSOLUTE(dr_dns_sd_udp_data, dr_dns_sd_udp_offsets),
+       DNS_NAME_INITNONABSOLUTE(lb_dns_sd_udp_data, lb_dns_sd_udp_offsets)
 };
 
 isc_boolean_t
@@ -2633,15 +2581,6 @@ dns_name_isdnssd(const dns_name_t *name) {
        return (ISC_FALSE);
 }
 
-#define NS_NAME_INIT(A,B) \
-        { \
-               DNS_NAME_MAGIC, \
-               A, sizeof(A), sizeof(B), \
-               DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE, \
-               B, NULL, { (void *)-1, (void *)-1}, \
-               {NULL, NULL} \
-       }
-
 static unsigned char inaddr10_offsets[] = { 0, 3, 11, 16 };
 static unsigned char inaddr172_offsets[] = { 0, 3, 7, 15, 20 };
 static unsigned char inaddr192_offsets[] = { 0, 4, 8, 16, 21 };
@@ -2668,24 +2607,24 @@ static unsigned char inaddr31172[] = "\00231\003172\007IN-ADDR\004ARPA";
 static unsigned char inaddr168192[] = "\003168\003192\007IN-ADDR\004ARPA";
 
 static dns_name_t const rfc1918names[] = {
-       NS_NAME_INIT(inaddr10, inaddr10_offsets),
-       NS_NAME_INIT(inaddr16172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr17172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr18172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr19172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr20172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr21172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr22172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr23172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr24172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr25172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr26172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr27172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr28172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr29172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr30172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr31172, inaddr172_offsets),
-       NS_NAME_INIT(inaddr168192, inaddr192_offsets)
+       DNS_NAME_INITABSOLUTE(inaddr10, inaddr10_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr16172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr17172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr18172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr19172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr20172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr21172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr22172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr23172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr24172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr25172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr26172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr27172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr28172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr29172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr30172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr31172, inaddr172_offsets),
+       DNS_NAME_INITABSOLUTE(inaddr168192, inaddr192_offsets)
 };
 
 isc_boolean_t
@@ -2703,8 +2642,8 @@ static unsigned char ip6fc[] = "\001c\001f\003ip6\004ARPA";
 static unsigned char ip6fd[] = "\001d\001f\003ip6\004ARPA";
 
 static dns_name_t const ulanames[] = {
-       NS_NAME_INIT(ip6fc, ulaoffsets),
-       NS_NAME_INIT(ip6fd, ulaoffsets),
+       DNS_NAME_INITABSOLUTE(ip6fc, ulaoffsets),
+       DNS_NAME_INITABSOLUTE(ip6fd, ulaoffsets)
 };
 
 isc_boolean_t
index c484abc39d189040585b81086001cdd8c06a697b..1aa20309bdc8fbf4034e2db2c949b8845d8a4994 100644 (file)
@@ -312,14 +312,8 @@ generic_freestruct_tlsa(ARGS_FREESTRUCT);
 static unsigned char gc_msdcs_data[]  = "\002gc\006_msdcs";
 static unsigned char gc_msdcs_offset [] = { 0, 3 };
 
-static const dns_name_t gc_msdcs = {
-       DNS_NAME_MAGIC,
-       gc_msdcs_data, 10, 2,
-       DNS_NAMEATTR_READONLY,
-       gc_msdcs_offset, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t const gc_msdcs =
+       DNS_NAME_INITNONABSOLUTE(gc_msdcs_data, gc_msdcs_offset);
 
 /*%
  *     convert presentation level address to network order binary form.
index e8d4145c80aee21975fb29f491122f04450e78d2..751790487dec2910f1eab0499038bb165fe9fae5 100644 (file)
 static unsigned char hmacmd5_ndata[] = "\010hmac-md5\007sig-alg\003reg\003int";
 static unsigned char hmacmd5_offsets[] = { 0, 9, 17, 21, 25 };
 
-static dns_name_t hmacmd5 = {
-       DNS_NAME_MAGIC,
-       hmacmd5_ndata, 26, 5,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacmd5_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
-dns_name_t *dns_tsig_hmacmd5_name = &hmacmd5;
+static dns_name_t hmacmd5 =
+       DNS_NAME_INITABSOLUTE(hmacmd5_ndata, hmacmd5_offsets);
+LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacmd5_name = &hmacmd5;
 #endif
 
 static unsigned char gsstsig_ndata[] = "\010gss-tsig";
 static unsigned char gsstsig_offsets[] = { 0, 9 };
-static dns_name_t gsstsig = {
-       DNS_NAME_MAGIC,
-       gsstsig_ndata, 10, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       gsstsig_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t gsstsig =
+       DNS_NAME_INITABSOLUTE(gsstsig_ndata, gsstsig_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_gssapi_name = &gsstsig;
 
 /*
@@ -103,84 +90,38 @@ LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_gssapi_name = &gsstsig;
  */
 static unsigned char gsstsigms_ndata[] = "\003gss\011microsoft\003com";
 static unsigned char gsstsigms_offsets[] = { 0, 4, 14, 18 };
-static dns_name_t gsstsigms = {
-       DNS_NAME_MAGIC,
-       gsstsigms_ndata, 19, 4,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       gsstsigms_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
+static dns_name_t gsstsigms =
+       DNS_NAME_INITABSOLUTE(gsstsigms_ndata, gsstsigms_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_gssapims_name = &gsstsigms;
 
 static unsigned char hmacsha1_ndata[] = "\011hmac-sha1";
 static unsigned char hmacsha1_offsets[] = { 0, 10 };
-
-static dns_name_t  hmacsha1 = {
-       DNS_NAME_MAGIC,
-       hmacsha1_ndata, 11, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacsha1_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
+static dns_name_t hmacsha1 =
+       DNS_NAME_INITABSOLUTE(hmacsha1_ndata, hmacsha1_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacsha1_name = &hmacsha1;
 
 static unsigned char hmacsha224_ndata[] = "\013hmac-sha224";
 static unsigned char hmacsha224_offsets[] = { 0, 12 };
-
-static dns_name_t hmacsha224 = {
-       DNS_NAME_MAGIC,
-       hmacsha224_ndata, 13, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacsha224_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
+static dns_name_t hmacsha224 =
+       DNS_NAME_INITABSOLUTE(hmacsha224_ndata, hmacsha224_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacsha224_name = &hmacsha224;
 
 static unsigned char hmacsha256_ndata[] = "\013hmac-sha256";
 static unsigned char hmacsha256_offsets[] = { 0, 12 };
-
-static dns_name_t hmacsha256 = {
-       DNS_NAME_MAGIC,
-       hmacsha256_ndata, 13, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacsha256_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
+static dns_name_t hmacsha256 =
+       DNS_NAME_INITABSOLUTE(hmacsha256_ndata, hmacsha256_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacsha256_name = &hmacsha256;
 
 static unsigned char hmacsha384_ndata[] = "\013hmac-sha384";
 static unsigned char hmacsha384_offsets[] = { 0, 12 };
-
-static dns_name_t hmacsha384 = {
-       DNS_NAME_MAGIC,
-       hmacsha384_ndata, 13, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacsha384_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
+static dns_name_t hmacsha384 =
+       DNS_NAME_INITABSOLUTE(hmacsha384_ndata, hmacsha384_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacsha384_name = &hmacsha384;
 
 static unsigned char hmacsha512_ndata[] = "\013hmac-sha512";
 static unsigned char hmacsha512_offsets[] = { 0, 12 };
-
-static dns_name_t hmacsha512 = {
-       DNS_NAME_MAGIC,
-       hmacsha512_ndata, 13, 2,
-       DNS_NAMEATTR_READONLY | DNS_NAMEATTR_ABSOLUTE,
-       hmacsha512_offsets, NULL,
-       {(void *)-1, (void *)-1},
-       {NULL, NULL}
-};
-
+static dns_name_t hmacsha512 =
+       DNS_NAME_INITABSOLUTE(hmacsha512_ndata, hmacsha512_offsets);
 LIBDNS_EXTERNAL_DATA dns_name_t *dns_tsig_hmacsha512_name = &hmacsha512;
 
 static isc_result_t