xref: /netbsd-src/external/mpl/bind/include/dns/rdatastruct.h (revision bcda20f65a8566e103791ec395f7f499ef322704)
1 /*
2  * Copyright (C) 1998-2025  Internet Systems Consortium, Inc. ("ISC")
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
7  */
8 
9 /***************
10  ***************
11  ***************   THIS FILE IS AUTOMATICALLY GENERATED BY gen.c.
12  ***************   DO NOT EDIT!
13  ***************
14  ***************/
15 
16 /*! \file */
17 
18 /*
19  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
20  *
21  * SPDX-License-Identifier: MPL-2.0
22  *
23  * This Source Code Form is subject to the terms of the Mozilla Public
24  * License, v. 2.0. If a copy of the MPL was not distributed with this
25  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
26  *
27  * See the COPYRIGHT file distributed with this work for additional
28  * information regarding copyright ownership.
29  */
30 
31 #pragma once
32 
33 #include <isc/lang.h>
34 #include <isc/sockaddr.h>
35 
36 #include <dns/name.h>
37 #include <dns/types.h>
38 
39 ISC_LANG_BEGINDECLS
40 
41 typedef struct dns_rdatacommon {
42 	dns_rdataclass_t rdclass;
43 	dns_rdatatype_t rdtype;
44 	ISC_LINK(struct dns_rdatacommon) link;
45 } dns_rdatacommon_t;
46 
47 #define DNS_RDATACOMMON_INIT(_data, _rdtype, _rdclass) \
48 	do {                                           \
49 		(_data)->common.rdtype = (_rdtype);    \
50 		(_data)->common.rdclass = (_rdclass);  \
51 		ISC_LINK_INIT(&(_data)->common, link); \
52 	} while (0)
53 /*
54  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
55  *
56  * SPDX-License-Identifier: MPL-2.0
57  *
58  * This Source Code Form is subject to the terms of the Mozilla Public
59  * License, v. 2.0. If a copy of the MPL was not distributed with this
60  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
61  *
62  * See the COPYRIGHT file distributed with this work for additional
63  * information regarding copyright ownership.
64  */
65 
66 /* */
67 #pragma once
68 
69 typedef struct dns_rdata_in_a {
70 	dns_rdatacommon_t common;
71 	struct in_addr in_addr;
72 } dns_rdata_in_a_t;
73 /*
74  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
75  *
76  * SPDX-License-Identifier: MPL-2.0
77  *
78  * This Source Code Form is subject to the terms of the Mozilla Public
79  * License, v. 2.0. If a copy of the MPL was not distributed with this
80  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
81  *
82  * See the COPYRIGHT file distributed with this work for additional
83  * information regarding copyright ownership.
84  */
85 
86 /* by Bjorn.Victor@it.uu.se, 2005-05-07 */
87 /* Based on generic/mx_15.h */
88 
89 #pragma once
90 
91 typedef uint16_t ch_addr_t;
92 
93 typedef struct dns_rdata_ch_a {
94 	dns_rdatacommon_t common;
95 	isc_mem_t *mctx;
96 	dns_name_t ch_addr_dom; /* ch-addr domain for back mapping
97 				 * */
98 	ch_addr_t ch_addr;	/* chaos address (16 bit) network
99 				 * order */
100 } dns_rdata_ch_a_t;
101 /*
102  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
103  *
104  * SPDX-License-Identifier: MPL-2.0
105  *
106  * This Source Code Form is subject to the terms of the Mozilla Public
107  * License, v. 2.0. If a copy of the MPL was not distributed with this
108  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
109  *
110  * See the COPYRIGHT file distributed with this work for additional
111  * information regarding copyright ownership.
112  */
113 
114 /* */
115 #pragma once
116 
117 typedef struct dns_rdata_hs_a {
118 	dns_rdatacommon_t common;
119 	struct in_addr in_addr;
120 } dns_rdata_hs_a_t;
121 /*
122  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
123  *
124  * SPDX-License-Identifier: MPL-2.0
125  *
126  * This Source Code Form is subject to the terms of the Mozilla Public
127  * License, v. 2.0. If a copy of the MPL was not distributed with this
128  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
129  *
130  * See the COPYRIGHT file distributed with this work for additional
131  * information regarding copyright ownership.
132  */
133 
134 /* */
135 #pragma once
136 
137 typedef struct dns_rdata_ns {
138 	dns_rdatacommon_t common;
139 	isc_mem_t *mctx;
140 	dns_name_t name;
141 } dns_rdata_ns_t;
142 /*
143  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
144  *
145  * SPDX-License-Identifier: MPL-2.0
146  *
147  * This Source Code Form is subject to the terms of the Mozilla Public
148  * License, v. 2.0. If a copy of the MPL was not distributed with this
149  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
150  *
151  * See the COPYRIGHT file distributed with this work for additional
152  * information regarding copyright ownership.
153  */
154 
155 /* */
156 #pragma once
157 
158 typedef struct dns_rdata_md {
159 	dns_rdatacommon_t common;
160 	isc_mem_t *mctx;
161 	dns_name_t md;
162 } dns_rdata_md_t;
163 /*
164  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
165  *
166  * SPDX-License-Identifier: MPL-2.0
167  *
168  * This Source Code Form is subject to the terms of the Mozilla Public
169  * License, v. 2.0. If a copy of the MPL was not distributed with this
170  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
171  *
172  * See the COPYRIGHT file distributed with this work for additional
173  * information regarding copyright ownership.
174  */
175 
176 /* */
177 #pragma once
178 
179 typedef struct dns_rdata_mf {
180 	dns_rdatacommon_t common;
181 	isc_mem_t *mctx;
182 	dns_name_t mf;
183 } dns_rdata_mf_t;
184 /*
185  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
186  *
187  * SPDX-License-Identifier: MPL-2.0
188  *
189  * This Source Code Form is subject to the terms of the Mozilla Public
190  * License, v. 2.0. If a copy of the MPL was not distributed with this
191  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
192  *
193  * See the COPYRIGHT file distributed with this work for additional
194  * information regarding copyright ownership.
195  */
196 
197 #pragma once
198 
199 typedef struct dns_rdata_cname {
200 	dns_rdatacommon_t common;
201 	isc_mem_t *mctx;
202 	dns_name_t cname;
203 } dns_rdata_cname_t;
204 /*
205  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
206  *
207  * SPDX-License-Identifier: MPL-2.0
208  *
209  * This Source Code Form is subject to the terms of the Mozilla Public
210  * License, v. 2.0. If a copy of the MPL was not distributed with this
211  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
212  *
213  * See the COPYRIGHT file distributed with this work for additional
214  * information regarding copyright ownership.
215  */
216 
217 /* */
218 #pragma once
219 
220 typedef struct dns_rdata_soa {
221 	dns_rdatacommon_t common;
222 	isc_mem_t *mctx;
223 	dns_name_t origin;
224 	dns_name_t contact;
225 	uint32_t serial;  /*%< host order */
226 	uint32_t refresh; /*%< host order */
227 	uint32_t retry;	  /*%< host order */
228 	uint32_t expire;  /*%< host order */
229 	uint32_t minimum; /*%< host order */
230 } dns_rdata_soa_t;
231 /*
232  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
233  *
234  * SPDX-License-Identifier: MPL-2.0
235  *
236  * This Source Code Form is subject to the terms of the Mozilla Public
237  * License, v. 2.0. If a copy of the MPL was not distributed with this
238  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
239  *
240  * See the COPYRIGHT file distributed with this work for additional
241  * information regarding copyright ownership.
242  */
243 
244 /* */
245 #pragma once
246 
247 typedef struct dns_rdata_mb {
248 	dns_rdatacommon_t common;
249 	isc_mem_t *mctx;
250 	dns_name_t mb;
251 } dns_rdata_mb_t;
252 /*
253  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
254  *
255  * SPDX-License-Identifier: MPL-2.0
256  *
257  * This Source Code Form is subject to the terms of the Mozilla Public
258  * License, v. 2.0. If a copy of the MPL was not distributed with this
259  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
260  *
261  * See the COPYRIGHT file distributed with this work for additional
262  * information regarding copyright ownership.
263  */
264 
265 /* */
266 #pragma once
267 
268 typedef struct dns_rdata_mg {
269 	dns_rdatacommon_t common;
270 	isc_mem_t *mctx;
271 	dns_name_t mg;
272 } dns_rdata_mg_t;
273 /*
274  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
275  *
276  * SPDX-License-Identifier: MPL-2.0
277  *
278  * This Source Code Form is subject to the terms of the Mozilla Public
279  * License, v. 2.0. If a copy of the MPL was not distributed with this
280  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
281  *
282  * See the COPYRIGHT file distributed with this work for additional
283  * information regarding copyright ownership.
284  */
285 
286 /* */
287 #pragma once
288 
289 typedef struct dns_rdata_mr {
290 	dns_rdatacommon_t common;
291 	isc_mem_t *mctx;
292 	dns_name_t mr;
293 } dns_rdata_mr_t;
294 /*
295  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
296  *
297  * SPDX-License-Identifier: MPL-2.0
298  *
299  * This Source Code Form is subject to the terms of the Mozilla Public
300  * License, v. 2.0. If a copy of the MPL was not distributed with this
301  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
302  *
303  * See the COPYRIGHT file distributed with this work for additional
304  * information regarding copyright ownership.
305  */
306 
307 /* */
308 #pragma once
309 
310 typedef struct dns_rdata_null {
311 	dns_rdatacommon_t common;
312 	isc_mem_t *mctx;
313 	uint16_t length;
314 	unsigned char *data;
315 } dns_rdata_null_t;
316 /*
317  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
318  *
319  * SPDX-License-Identifier: MPL-2.0
320  *
321  * This Source Code Form is subject to the terms of the Mozilla Public
322  * License, v. 2.0. If a copy of the MPL was not distributed with this
323  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
324  *
325  * See the COPYRIGHT file distributed with this work for additional
326  * information regarding copyright ownership.
327  */
328 
329 #pragma once
330 
331 typedef struct dns_rdata_in_wks {
332 	dns_rdatacommon_t common;
333 	isc_mem_t *mctx;
334 	struct in_addr in_addr;
335 	uint16_t protocol;
336 	unsigned char *map;
337 	uint16_t map_len;
338 } dns_rdata_in_wks_t;
339 /*
340  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
341  *
342  * SPDX-License-Identifier: MPL-2.0
343  *
344  * This Source Code Form is subject to the terms of the Mozilla Public
345  * License, v. 2.0. If a copy of the MPL was not distributed with this
346  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
347  *
348  * See the COPYRIGHT file distributed with this work for additional
349  * information regarding copyright ownership.
350  */
351 
352 /* */
353 #pragma once
354 
355 typedef struct dns_rdata_ptr {
356 	dns_rdatacommon_t common;
357 	isc_mem_t *mctx;
358 	dns_name_t ptr;
359 } dns_rdata_ptr_t;
360 /*
361  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
362  *
363  * SPDX-License-Identifier: MPL-2.0
364  *
365  * This Source Code Form is subject to the terms of the Mozilla Public
366  * License, v. 2.0. If a copy of the MPL was not distributed with this
367  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
368  *
369  * See the COPYRIGHT file distributed with this work for additional
370  * information regarding copyright ownership.
371  */
372 
373 #pragma once
374 
375 typedef struct dns_rdata_hinfo {
376 	dns_rdatacommon_t common;
377 	isc_mem_t *mctx;
378 	char *cpu;
379 	char *os;
380 	uint8_t cpu_len;
381 	uint8_t os_len;
382 } dns_rdata_hinfo_t;
383 /*
384  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
385  *
386  * SPDX-License-Identifier: MPL-2.0
387  *
388  * This Source Code Form is subject to the terms of the Mozilla Public
389  * License, v. 2.0. If a copy of the MPL was not distributed with this
390  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
391  *
392  * See the COPYRIGHT file distributed with this work for additional
393  * information regarding copyright ownership.
394  */
395 
396 /* */
397 #pragma once
398 
399 typedef struct dns_rdata_minfo {
400 	dns_rdatacommon_t common;
401 	isc_mem_t *mctx;
402 	dns_name_t rmailbox;
403 	dns_name_t emailbox;
404 } dns_rdata_minfo_t;
405 /*
406  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
407  *
408  * SPDX-License-Identifier: MPL-2.0
409  *
410  * This Source Code Form is subject to the terms of the Mozilla Public
411  * License, v. 2.0. If a copy of the MPL was not distributed with this
412  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
413  *
414  * See the COPYRIGHT file distributed with this work for additional
415  * information regarding copyright ownership.
416  */
417 
418 /* */
419 #pragma once
420 
421 typedef struct dns_rdata_mx {
422 	dns_rdatacommon_t common;
423 	isc_mem_t *mctx;
424 	uint16_t pref;
425 	dns_name_t mx;
426 } dns_rdata_mx_t;
427 /*
428  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
429  *
430  * SPDX-License-Identifier: MPL-2.0
431  *
432  * This Source Code Form is subject to the terms of the Mozilla Public
433  * License, v. 2.0. If a copy of the MPL was not distributed with this
434  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
435  *
436  * See the COPYRIGHT file distributed with this work for additional
437  * information regarding copyright ownership.
438  */
439 
440 /* */
441 #pragma once
442 
443 typedef struct dns_rdata_txt_string {
444 	uint8_t length;
445 	unsigned char *data;
446 } dns_rdata_txt_string_t;
447 
448 typedef struct dns_rdata_txt {
449 	dns_rdatacommon_t common;
450 	isc_mem_t *mctx;
451 	unsigned char *txt;
452 	uint16_t txt_len;
453 	/* private */
454 	uint16_t offset;
455 } dns_rdata_txt_t;
456 
457 /*
458  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
459  * via rdatastructpre.h and rdatastructsuf.h.
460  */
461 
462 isc_result_t
463 dns_rdata_txt_first(dns_rdata_txt_t *);
464 
465 isc_result_t
466 dns_rdata_txt_next(dns_rdata_txt_t *);
467 
468 isc_result_t
469 dns_rdata_txt_current(dns_rdata_txt_t *, dns_rdata_txt_string_t *);
470 /*
471  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
472  *
473  * SPDX-License-Identifier: MPL-2.0
474  *
475  * This Source Code Form is subject to the terms of the Mozilla Public
476  * License, v. 2.0. If a copy of the MPL was not distributed with this
477  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
478  *
479  * See the COPYRIGHT file distributed with this work for additional
480  * information regarding copyright ownership.
481  */
482 
483 #pragma once
484 
485 /*!
486  *  \brief Per RFC1183 */
487 
488 typedef struct dns_rdata_rp {
489 	dns_rdatacommon_t common;
490 	isc_mem_t *mctx;
491 	dns_name_t mail;
492 	dns_name_t text;
493 } dns_rdata_rp_t;
494 /*
495  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
496  *
497  * SPDX-License-Identifier: MPL-2.0
498  *
499  * This Source Code Form is subject to the terms of the Mozilla Public
500  * License, v. 2.0. If a copy of the MPL was not distributed with this
501  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
502  *
503  * See the COPYRIGHT file distributed with this work for additional
504  * information regarding copyright ownership.
505  */
506 
507 #pragma once
508 
509 /*!
510  *  \brief Per RFC1183 */
511 
512 typedef struct dns_rdata_afsdb {
513 	dns_rdatacommon_t common;
514 	isc_mem_t *mctx;
515 	uint16_t subtype;
516 	dns_name_t server;
517 } dns_rdata_afsdb_t;
518 /*
519  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
520  *
521  * SPDX-License-Identifier: MPL-2.0
522  *
523  * This Source Code Form is subject to the terms of the Mozilla Public
524  * License, v. 2.0. If a copy of the MPL was not distributed with this
525  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
526  *
527  * See the COPYRIGHT file distributed with this work for additional
528  * information regarding copyright ownership.
529  */
530 
531 #pragma once
532 
533 /*!
534  *  \brief Per RFC1183 */
535 
536 typedef struct dns_rdata_x25 {
537 	dns_rdatacommon_t common;
538 	isc_mem_t *mctx;
539 	unsigned char *x25;
540 	uint8_t x25_len;
541 } dns_rdata_x25_t;
542 /*
543  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
544  *
545  * SPDX-License-Identifier: MPL-2.0
546  *
547  * This Source Code Form is subject to the terms of the Mozilla Public
548  * License, v. 2.0. If a copy of the MPL was not distributed with this
549  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
550  *
551  * See the COPYRIGHT file distributed with this work for additional
552  * information regarding copyright ownership.
553  */
554 
555 #pragma once
556 
557 /*!
558  * \brief Per RFC1183 */
559 
560 typedef struct dns_rdata_isdn {
561 	dns_rdatacommon_t common;
562 	isc_mem_t *mctx;
563 	char *isdn;
564 	char *subaddress;
565 	uint8_t isdn_len;
566 	uint8_t subaddress_len;
567 } dns_rdata_isdn_t;
568 /*
569  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
570  *
571  * SPDX-License-Identifier: MPL-2.0
572  *
573  * This Source Code Form is subject to the terms of the Mozilla Public
574  * License, v. 2.0. If a copy of the MPL was not distributed with this
575  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
576  *
577  * See the COPYRIGHT file distributed with this work for additional
578  * information regarding copyright ownership.
579  */
580 
581 #pragma once
582 
583 /*!
584  *  \brief Per RFC1183 */
585 
586 typedef struct dns_rdata_rt {
587 	dns_rdatacommon_t common;
588 	isc_mem_t *mctx;
589 	uint16_t preference;
590 	dns_name_t host;
591 } dns_rdata_rt_t;
592 /*
593  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
594  *
595  * SPDX-License-Identifier: MPL-2.0
596  *
597  * This Source Code Form is subject to the terms of the Mozilla Public
598  * License, v. 2.0. If a copy of the MPL was not distributed with this
599  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
600  *
601  * See the COPYRIGHT file distributed with this work for additional
602  * information regarding copyright ownership.
603  */
604 
605 #pragma once
606 
607 /*!
608  *  \brief Per RFC1706 */
609 
610 typedef struct dns_rdata_in_nsap {
611 	dns_rdatacommon_t common;
612 	isc_mem_t *mctx;
613 	unsigned char *nsap;
614 	uint16_t nsap_len;
615 } dns_rdata_in_nsap_t;
616 /*
617  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
618  *
619  * SPDX-License-Identifier: MPL-2.0
620  *
621  * This Source Code Form is subject to the terms of the Mozilla Public
622  * License, v. 2.0. If a copy of the MPL was not distributed with this
623  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
624  *
625  * See the COPYRIGHT file distributed with this work for additional
626  * information regarding copyright ownership.
627  */
628 
629 #pragma once
630 
631 /*!
632  *  \brief Per RFC1348.  Obsoleted in RFC 1706 - use PTR instead. */
633 
634 typedef struct dns_rdata_in_nsap_ptr {
635 	dns_rdatacommon_t common;
636 	isc_mem_t *mctx;
637 	dns_name_t owner;
638 } dns_rdata_in_nsap_ptr_t;
639 /*
640  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
641  *
642  * SPDX-License-Identifier: MPL-2.0
643  *
644  * This Source Code Form is subject to the terms of the Mozilla Public
645  * License, v. 2.0. If a copy of the MPL was not distributed with this
646  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
647  *
648  * See the COPYRIGHT file distributed with this work for additional
649  * information regarding copyright ownership.
650  */
651 
652 #pragma once
653 
654 /*!
655  *  \brief Per RFC2535 */
656 
657 typedef struct dns_rdata_sig_t {
658 	dns_rdatacommon_t common;
659 	isc_mem_t *mctx;
660 	dns_rdatatype_t covered;
661 	dns_secalg_t algorithm;
662 	uint8_t labels;
663 	uint32_t originalttl;
664 	uint32_t timeexpire;
665 	uint32_t timesigned;
666 	uint16_t keyid;
667 	dns_name_t signer;
668 	uint16_t siglen;
669 	unsigned char *signature;
670 } dns_rdata_sig_t;
671 /*
672  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
673  *
674  * SPDX-License-Identifier: MPL-2.0
675  *
676  * This Source Code Form is subject to the terms of the Mozilla Public
677  * License, v. 2.0. If a copy of the MPL was not distributed with this
678  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
679  *
680  * See the COPYRIGHT file distributed with this work for additional
681  * information regarding copyright ownership.
682  */
683 
684 #pragma once
685 
686 /*!
687  * \brief Per RFC2535 */
688 
689 typedef struct dns_rdata_key {
690 	dns_rdatacommon_t common;
691 	isc_mem_t *mctx;
692 	uint16_t flags;
693 	dns_secproto_t protocol;
694 	dns_secalg_t algorithm;
695 	uint16_t datalen;
696 	unsigned char *data;
697 } dns_rdata_key_t;
698 /*
699  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
700  *
701  * SPDX-License-Identifier: MPL-2.0
702  *
703  * This Source Code Form is subject to the terms of the Mozilla Public
704  * License, v. 2.0. If a copy of the MPL was not distributed with this
705  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
706  *
707  * See the COPYRIGHT file distributed with this work for additional
708  * information regarding copyright ownership.
709  */
710 
711 #pragma once
712 
713 /*!
714  *  \brief Per RFC2163 */
715 
716 typedef struct dns_rdata_in_px {
717 	dns_rdatacommon_t common;
718 	isc_mem_t *mctx;
719 	uint16_t preference;
720 	dns_name_t map822;
721 	dns_name_t mapx400;
722 } dns_rdata_in_px_t;
723 /*
724  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
725  *
726  * SPDX-License-Identifier: MPL-2.0
727  *
728  * This Source Code Form is subject to the terms of the Mozilla Public
729  * License, v. 2.0. If a copy of the MPL was not distributed with this
730  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
731  *
732  * See the COPYRIGHT file distributed with this work for additional
733  * information regarding copyright ownership.
734  */
735 
736 #pragma once
737 
738 /*!
739  *  \brief per RFC1712 */
740 
741 typedef struct dns_rdata_gpos {
742 	dns_rdatacommon_t common;
743 	isc_mem_t *mctx;
744 	char *longitude;
745 	char *latitude;
746 	char *altitude;
747 	uint8_t long_len;
748 	uint8_t lat_len;
749 	uint8_t alt_len;
750 } dns_rdata_gpos_t;
751 /*
752  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
753  *
754  * SPDX-License-Identifier: MPL-2.0
755  *
756  * This Source Code Form is subject to the terms of the Mozilla Public
757  * License, v. 2.0. If a copy of the MPL was not distributed with this
758  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
759  *
760  * See the COPYRIGHT file distributed with this work for additional
761  * information regarding copyright ownership.
762  */
763 
764 #pragma once
765 
766 /*!
767  *  \brief Per RFC1886 */
768 
769 typedef struct dns_rdata_in_aaaa {
770 	dns_rdatacommon_t common;
771 	struct in6_addr in6_addr;
772 } dns_rdata_in_aaaa_t;
773 /*
774  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
775  *
776  * SPDX-License-Identifier: MPL-2.0
777  *
778  * This Source Code Form is subject to the terms of the Mozilla Public
779  * License, v. 2.0. If a copy of the MPL was not distributed with this
780  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
781  *
782  * See the COPYRIGHT file distributed with this work for additional
783  * information regarding copyright ownership.
784  */
785 
786 #pragma once
787 
788 /*!
789  * \brief Per RFC1876 */
790 
791 typedef struct dns_rdata_loc_0 {
792 	uint8_t version; /* must be first and zero */
793 	uint8_t size;
794 	uint8_t horizontal;
795 	uint8_t vertical;
796 	uint32_t latitude;
797 	uint32_t longitude;
798 	uint32_t altitude;
799 } dns_rdata_loc_0_t;
800 
801 typedef struct dns_rdata_loc {
802 	dns_rdatacommon_t common;
803 	union {
804 		dns_rdata_loc_0_t v0;
805 	} v;
806 } dns_rdata_loc_t;
807 /*
808  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
809  *
810  * SPDX-License-Identifier: MPL-2.0
811  *
812  * This Source Code Form is subject to the terms of the Mozilla Public
813  * License, v. 2.0. If a copy of the MPL was not distributed with this
814  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
815  *
816  * See the COPYRIGHT file distributed with this work for additional
817  * information regarding copyright ownership.
818  */
819 
820 #pragma once
821 
822 /*!
823  *  \brief RFC2535 */
824 
825 typedef struct dns_rdata_nxt {
826 	dns_rdatacommon_t common;
827 	isc_mem_t *mctx;
828 	dns_name_t next;
829 	unsigned char *typebits;
830 	uint16_t len;
831 } dns_rdata_nxt_t;
832 /*
833  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
834  *
835  * SPDX-License-Identifier: MPL-2.0
836  *
837  * This Source Code Form is subject to the terms of the Mozilla Public
838  * License, v. 2.0. If a copy of the MPL was not distributed with this
839  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
840  *
841  * See the COPYRIGHT file distributed with this work for additional
842  * information regarding copyright ownership.
843  */
844 
845 #pragma once
846 
847 /*!
848  *  \brief http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt
849  */
850 
851 typedef struct dns_rdata_in_eid {
852 	dns_rdatacommon_t common;
853 	isc_mem_t *mctx;
854 	unsigned char *eid;
855 	uint16_t eid_len;
856 } dns_rdata_in_eid_t;
857 /*
858  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
859  *
860  * SPDX-License-Identifier: MPL-2.0
861  *
862  * This Source Code Form is subject to the terms of the Mozilla Public
863  * License, v. 2.0. If a copy of the MPL was not distributed with this
864  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
865  *
866  * See the COPYRIGHT file distributed with this work for additional
867  * information regarding copyright ownership.
868  */
869 
870 #pragma once
871 
872 /*!
873  *  \brief http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt
874  */
875 
876 typedef struct dns_rdata_in_nimloc {
877 	dns_rdatacommon_t common;
878 	isc_mem_t *mctx;
879 	unsigned char *nimloc;
880 	uint16_t nimloc_len;
881 } dns_rdata_in_nimloc_t;
882 /*
883  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
884  *
885  * SPDX-License-Identifier: MPL-2.0
886  *
887  * This Source Code Form is subject to the terms of the Mozilla Public
888  * License, v. 2.0. If a copy of the MPL was not distributed with this
889  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
890  *
891  * See the COPYRIGHT file distributed with this work for additional
892  * information regarding copyright ownership.
893  */
894 
895 #pragma once
896 
897 /*!
898  *  \brief Per RFC2782 */
899 
900 typedef struct dns_rdata_in_srv {
901 	dns_rdatacommon_t common;
902 	isc_mem_t *mctx;
903 	uint16_t priority;
904 	uint16_t weight;
905 	uint16_t port;
906 	dns_name_t target;
907 } dns_rdata_in_srv_t;
908 /*
909  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
910  *
911  * SPDX-License-Identifier: MPL-2.0
912  *
913  * This Source Code Form is subject to the terms of the Mozilla Public
914  * License, v. 2.0. If a copy of the MPL was not distributed with this
915  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
916  *
917  * See the COPYRIGHT file distributed with this work for additional
918  * information regarding copyright ownership.
919  */
920 
921 #pragma once
922 
923 /*!
924  *  \brief Per RFC1706 */
925 
926 typedef struct dns_rdata_in_atma {
927 	dns_rdatacommon_t common;
928 	isc_mem_t *mctx;
929 	unsigned char format;
930 	unsigned char *atma;
931 	uint16_t atma_len;
932 } dns_rdata_in_atma_t;
933 /*
934  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
935  *
936  * SPDX-License-Identifier: MPL-2.0
937  *
938  * This Source Code Form is subject to the terms of the Mozilla Public
939  * License, v. 2.0. If a copy of the MPL was not distributed with this
940  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
941  *
942  * See the COPYRIGHT file distributed with this work for additional
943  * information regarding copyright ownership.
944  */
945 
946 #pragma once
947 
948 /*!
949  *  \brief Per RFC2915 */
950 
951 typedef struct dns_rdata_naptr {
952 	dns_rdatacommon_t common;
953 	isc_mem_t *mctx;
954 	uint16_t order;
955 	uint16_t preference;
956 	char *flags;
957 	uint8_t flags_len;
958 	char *service;
959 	uint8_t service_len;
960 	char *regexp;
961 	uint8_t regexp_len;
962 	dns_name_t replacement;
963 } dns_rdata_naptr_t;
964 /*
965  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
966  *
967  * SPDX-License-Identifier: MPL-2.0
968  *
969  * This Source Code Form is subject to the terms of the Mozilla Public
970  * License, v. 2.0. If a copy of the MPL was not distributed with this
971  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
972  *
973  * See the COPYRIGHT file distributed with this work for additional
974  * information regarding copyright ownership.
975  */
976 
977 #pragma once
978 
979 /*!
980  *  \brief Per RFC2230 */
981 
982 typedef struct dns_rdata_in_kx {
983 	dns_rdatacommon_t common;
984 	isc_mem_t *mctx;
985 	uint16_t preference;
986 	dns_name_t exchange;
987 } dns_rdata_in_kx_t;
988 /*
989  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
990  *
991  * SPDX-License-Identifier: MPL-2.0
992  *
993  * This Source Code Form is subject to the terms of the Mozilla Public
994  * License, v. 2.0. If a copy of the MPL was not distributed with this
995  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
996  *
997  * See the COPYRIGHT file distributed with this work for additional
998  * information regarding copyright ownership.
999  */
1000 
1001 #pragma once
1002 
1003 /*% RFC2538 */
1004 typedef struct dns_rdata_cert {
1005 	dns_rdatacommon_t common;
1006 	isc_mem_t *mctx;
1007 	uint16_t type;
1008 	uint16_t key_tag;
1009 	uint8_t algorithm;
1010 	uint16_t length;
1011 	unsigned char *certificate;
1012 } dns_rdata_cert_t;
1013 /*
1014  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1015  *
1016  * SPDX-License-Identifier: MPL-2.0
1017  *
1018  * This Source Code Form is subject to the terms of the Mozilla Public
1019  * License, v. 2.0. If a copy of the MPL was not distributed with this
1020  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1021  *
1022  * See the COPYRIGHT file distributed with this work for additional
1023  * information regarding copyright ownership.
1024  */
1025 
1026 #pragma once
1027 
1028 /*!
1029  *  \brief Per RFC2874 */
1030 
1031 typedef struct dns_rdata_in_a6 {
1032 	dns_rdatacommon_t common;
1033 	isc_mem_t *mctx;
1034 	dns_name_t prefix;
1035 	uint8_t prefixlen;
1036 	struct in6_addr in6_addr;
1037 } dns_rdata_in_a6_t;
1038 /*
1039  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1040  *
1041  * SPDX-License-Identifier: MPL-2.0
1042  *
1043  * This Source Code Form is subject to the terms of the Mozilla Public
1044  * License, v. 2.0. If a copy of the MPL was not distributed with this
1045  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1046  *
1047  * See the COPYRIGHT file distributed with this work for additional
1048  * information regarding copyright ownership.
1049  */
1050 
1051 #pragma once
1052 
1053 /*!
1054  *  \brief per RFC2672 */
1055 
1056 typedef struct dns_rdata_dname {
1057 	dns_rdatacommon_t common;
1058 	isc_mem_t *mctx;
1059 	dns_name_t dname;
1060 } dns_rdata_dname_t;
1061 /*
1062  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1063  *
1064  * SPDX-License-Identifier: MPL-2.0
1065  *
1066  * This Source Code Form is subject to the terms of the Mozilla Public
1067  * License, v. 2.0. If a copy of the MPL was not distributed with this
1068  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1069  *
1070  * See the COPYRIGHT file distributed with this work for additional
1071  * information regarding copyright ownership.
1072  */
1073 
1074 #pragma once
1075 
1076 typedef struct dns_rdata_sink_t {
1077 	dns_rdatacommon_t common;
1078 	isc_mem_t *mctx;
1079 	uint8_t meaning;
1080 	uint8_t coding;
1081 	uint8_t subcoding;
1082 	uint16_t datalen;
1083 	unsigned char *data;
1084 } dns_rdata_sink_t;
1085 /*
1086  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1087  *
1088  * SPDX-License-Identifier: MPL-2.0
1089  *
1090  * This Source Code Form is subject to the terms of the Mozilla Public
1091  * License, v. 2.0. If a copy of the MPL was not distributed with this
1092  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1093  *
1094  * See the COPYRIGHT file distributed with this work for additional
1095  * information regarding copyright ownership.
1096  */
1097 
1098 #pragma once
1099 
1100 /*!
1101  *  \brief Per RFC2671 */
1102 
1103 typedef struct dns_rdata_opt_opcode {
1104 	uint16_t opcode;
1105 	uint16_t length;
1106 	unsigned char *data;
1107 } dns_rdata_opt_opcode_t;
1108 
1109 typedef struct dns_rdata_opt {
1110 	dns_rdatacommon_t common;
1111 	isc_mem_t *mctx;
1112 	unsigned char *options;
1113 	uint16_t length;
1114 	/* private */
1115 	uint16_t offset;
1116 } dns_rdata_opt_t;
1117 
1118 /*
1119  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
1120  * via rdatastructpre.h and rdatastructsuf.h.
1121  */
1122 
1123 isc_result_t
1124 dns_rdata_opt_first(dns_rdata_opt_t *);
1125 
1126 isc_result_t
1127 dns_rdata_opt_next(dns_rdata_opt_t *);
1128 
1129 isc_result_t
1130 dns_rdata_opt_current(dns_rdata_opt_t *, dns_rdata_opt_opcode_t *);
1131 /*
1132  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1133  *
1134  * SPDX-License-Identifier: MPL-2.0
1135  *
1136  * This Source Code Form is subject to the terms of the Mozilla Public
1137  * License, v. 2.0. If a copy of the MPL was not distributed with this
1138  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1139  *
1140  * See the COPYRIGHT file distributed with this work for additional
1141  * information regarding copyright ownership.
1142  */
1143 
1144 /* */
1145 #pragma once
1146 
1147 typedef struct dns_rdata_apl_ent {
1148 	bool negative;
1149 	uint16_t family;
1150 	uint8_t prefix;
1151 	uint8_t length;
1152 	unsigned char *data;
1153 } dns_rdata_apl_ent_t;
1154 
1155 typedef struct dns_rdata_in_apl {
1156 	dns_rdatacommon_t common;
1157 	isc_mem_t *mctx;
1158 	/* type & class specific elements */
1159 	unsigned char *apl;
1160 	uint16_t apl_len;
1161 	/* private */
1162 	uint16_t offset;
1163 } dns_rdata_in_apl_t;
1164 
1165 /*
1166  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
1167  * via rdatastructpre.h and rdatastructsuf.h.
1168  */
1169 
1170 isc_result_t
1171 dns_rdata_apl_first(dns_rdata_in_apl_t *);
1172 
1173 isc_result_t
1174 dns_rdata_apl_next(dns_rdata_in_apl_t *);
1175 
1176 isc_result_t
1177 dns_rdata_apl_current(dns_rdata_in_apl_t *, dns_rdata_apl_ent_t *);
1178 
1179 unsigned int
1180 dns_rdata_apl_count(const dns_rdata_in_apl_t *apl);
1181 /*
1182  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1183  *
1184  * SPDX-License-Identifier: MPL-2.0
1185  *
1186  * This Source Code Form is subject to the terms of the Mozilla Public
1187  * License, v. 2.0. If a copy of the MPL was not distributed with this
1188  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1189  *
1190  * See the COPYRIGHT file distributed with this work for additional
1191  * information regarding copyright ownership.
1192  */
1193 
1194 #pragma once
1195 
1196 /*!
1197  *  \brief per draft-ietf-dnsext-delegation-signer-05.txt */
1198 typedef struct dns_rdata_ds {
1199 	dns_rdatacommon_t common;
1200 	isc_mem_t *mctx;
1201 	uint16_t key_tag;
1202 	dns_secalg_t algorithm;
1203 	dns_dsdigest_t digest_type;
1204 	uint16_t length;
1205 	unsigned char *digest;
1206 } dns_rdata_ds_t;
1207 /*
1208  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1209  *
1210  * SPDX-License-Identifier: MPL-2.0
1211  *
1212  * This Source Code Form is subject to the terms of the Mozilla Public
1213  * License, v. 2.0. If a copy of the MPL was not distributed with this
1214  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1215  *
1216  * See the COPYRIGHT file distributed with this work for additional
1217  * information regarding copyright ownership.
1218  */
1219 
1220 /*!
1221  *  \brief Per RFC 4255 */
1222 
1223 #pragma once
1224 
1225 typedef struct dns_rdata_sshfp {
1226 	dns_rdatacommon_t common;
1227 	isc_mem_t *mctx;
1228 	uint8_t algorithm;
1229 	uint8_t digest_type;
1230 	uint16_t length;
1231 	unsigned char *digest;
1232 } dns_rdata_sshfp_t;
1233 /*
1234  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1235  *
1236  * SPDX-License-Identifier: MPL-2.0
1237  *
1238  * This Source Code Form is subject to the terms of the Mozilla Public
1239  * License, v. 2.0. If a copy of the MPL was not distributed with this
1240  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1241  *
1242  * See the COPYRIGHT file distributed with this work for additional
1243  * information regarding copyright ownership.
1244  */
1245 
1246 #pragma once
1247 
1248 typedef struct dns_rdata_ipseckey {
1249 	dns_rdatacommon_t common;
1250 	isc_mem_t *mctx;
1251 	uint8_t precedence;
1252 	uint8_t gateway_type;
1253 	uint8_t algorithm;
1254 	struct in_addr in_addr;	  /* gateway type 1 */
1255 	struct in6_addr in6_addr; /* gateway type 2 */
1256 	dns_name_t gateway;	  /* gateway type 3 */
1257 	unsigned char *key;
1258 	uint16_t keylength;
1259 } dns_rdata_ipseckey_t;
1260 /*
1261  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1262  *
1263  * SPDX-License-Identifier: MPL-2.0
1264  *
1265  * This Source Code Form is subject to the terms of the Mozilla Public
1266  * License, v. 2.0. If a copy of the MPL was not distributed with this
1267  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1268  *
1269  * See the COPYRIGHT file distributed with this work for additional
1270  * information regarding copyright ownership.
1271  */
1272 
1273 #pragma once
1274 
1275 /*!
1276  *  \brief Per RFC2535 */
1277 typedef struct dns_rdata_rrsig {
1278 	dns_rdatacommon_t common;
1279 	isc_mem_t *mctx;
1280 	dns_rdatatype_t covered;
1281 	dns_secalg_t algorithm;
1282 	uint8_t labels;
1283 	uint32_t originalttl;
1284 	uint32_t timeexpire;
1285 	uint32_t timesigned;
1286 	uint16_t keyid;
1287 	dns_name_t signer;
1288 	uint16_t siglen;
1289 	unsigned char *signature;
1290 } dns_rdata_rrsig_t;
1291 /*
1292  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1293  *
1294  * SPDX-License-Identifier: MPL-2.0
1295  *
1296  * This Source Code Form is subject to the terms of the Mozilla Public
1297  * License, v. 2.0. If a copy of the MPL was not distributed with this
1298  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1299  *
1300  * See the COPYRIGHT file distributed with this work for additional
1301  * information regarding copyright ownership.
1302  */
1303 
1304 #pragma once
1305 
1306 /*!
1307  * \brief Per RFC 3845 */
1308 
1309 typedef struct dns_rdata_nsec {
1310 	dns_rdatacommon_t common;
1311 	isc_mem_t *mctx;
1312 	dns_name_t next;
1313 	unsigned char *typebits;
1314 	uint16_t len;
1315 } dns_rdata_nsec_t;
1316 /*
1317  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1318  *
1319  * SPDX-License-Identifier: MPL-2.0
1320  *
1321  * This Source Code Form is subject to the terms of the Mozilla Public
1322  * License, v. 2.0. If a copy of the MPL was not distributed with this
1323  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1324  *
1325  * See the COPYRIGHT file distributed with this work for additional
1326  * information regarding copyright ownership.
1327  */
1328 
1329 #pragma once
1330 
1331 /*!
1332  *  \brief per RFC2535
1333  */
1334 
1335 typedef struct dns_rdata_key dns_rdata_dnskey_t;
1336 /*
1337  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1338  *
1339  * SPDX-License-Identifier: MPL-2.0
1340  *
1341  * This Source Code Form is subject to the terms of the Mozilla Public
1342  * License, v. 2.0. If a copy of the MPL was not distributed with this
1343  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1344  *
1345  * See the COPYRIGHT file distributed with this work for additional
1346  * information regarding copyright ownership.
1347  */
1348 
1349 /* */
1350 #pragma once
1351 
1352 typedef struct dns_rdata_in_dhcid {
1353 	dns_rdatacommon_t common;
1354 	isc_mem_t *mctx;
1355 	unsigned char *dhcid;
1356 	unsigned int length;
1357 } dns_rdata_in_dhcid_t;
1358 /*
1359  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1360  *
1361  * SPDX-License-Identifier: MPL-2.0
1362  *
1363  * This Source Code Form is subject to the terms of the Mozilla Public
1364  * License, v. 2.0. If a copy of the MPL was not distributed with this
1365  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1366  *
1367  * See the COPYRIGHT file distributed with this work for additional
1368  * information regarding copyright ownership.
1369  */
1370 
1371 #pragma once
1372 
1373 /*!
1374  * \brief Per RFC 5155 */
1375 
1376 #include <isc/iterated_hash.h>
1377 
1378 typedef struct dns_rdata_nsec3 {
1379 	dns_rdatacommon_t common;
1380 	isc_mem_t *mctx;
1381 	dns_hash_t hash;
1382 	unsigned char flags;
1383 	dns_iterations_t iterations;
1384 	unsigned char salt_length;
1385 	unsigned char next_length;
1386 	uint16_t len;
1387 	unsigned char *salt;
1388 	unsigned char *next;
1389 	unsigned char *typebits;
1390 } dns_rdata_nsec3_t;
1391 
1392 /*
1393  * The corresponding NSEC3 interval is OPTOUT indicating possible
1394  * insecure delegations.
1395  */
1396 #define DNS_NSEC3FLAG_OPTOUT 0x01U
1397 
1398 /*%
1399  * The following flags are used in the private-type record (implemented in
1400  * lib/dns/private.c) which is used to store NSEC3PARAM data during the
1401  * time when it is not legal to have an actual NSEC3PARAM record in the
1402  * zone.  They are defined here because the private-type record uses the
1403  * same flags field for the OPTOUT flag above and for the private flags
1404  * below.  XXX: This should be considered for refactoring.
1405  */
1406 
1407 /*%
1408  * Non-standard, private type only.
1409  *
1410  * Create a corresponding NSEC3 chain.
1411  * Once the NSEC3 chain is complete this flag will be removed to signal
1412  * that there is a complete chain.
1413  *
1414  * This flag is automatically set when a NSEC3PARAM record is added to
1415  * the zone via UPDATE.
1416  *
1417  * NSEC3PARAM records containing this flag should never be published,
1418  * but if they are, they should be ignored by RFC 5155 compliant
1419  * nameservers.
1420  */
1421 #define DNS_NSEC3FLAG_CREATE 0x80U
1422 
1423 /*%
1424  * Non-standard, private type only.
1425  *
1426  * The corresponding NSEC3 set is to be removed once the NSEC chain
1427  * has been generated.
1428  *
1429  * This flag is automatically set when the last active NSEC3PARAM record
1430  * is removed from the zone via UPDATE.
1431  *
1432  * NSEC3PARAM records containing this flag should never be published,
1433  * but if they are, they should be ignored by RFC 5155 compliant
1434  * nameservers.
1435  */
1436 #define DNS_NSEC3FLAG_REMOVE 0x40U
1437 
1438 /*%
1439  * Non-standard, private type only.
1440  *
1441  * When set with the CREATE flag, a corresponding NSEC3 chain will be
1442  * created when the zone becomes capable of supporting one (i.e., when it
1443  * has a DNSKEY RRset containing at least one NSEC3-capable algorithm).
1444  * Without this flag, NSEC3 chain creation would be attempted immediately,
1445  * fail, and the private type record would be removed.  With it, the NSEC3
1446  * parameters are stored until they can be used.  When the zone has the
1447  * necessary prerequisites for NSEC3, then the INITIAL flag can be cleared,
1448  * and the record will be cleaned up normally.
1449  *
1450  * NSEC3PARAM records containing this flag should never be published, but
1451  * if they are, they should be ignored by RFC 5155 compliant nameservers.
1452  */
1453 #define DNS_NSEC3FLAG_INITIAL 0x20U
1454 
1455 /*%
1456  * Non-standard, private type only.
1457  *
1458  * Prevent the creation of a NSEC chain before the last NSEC3 chain
1459  * is removed.  This will normally only be set when the zone is
1460  * transitioning from secure with NSEC3 chains to insecure.
1461  *
1462  * NSEC3PARAM records containing this flag should never be published,
1463  * but if they are, they should be ignored by RFC 5155 compliant
1464  * nameservers.
1465  */
1466 #define DNS_NSEC3FLAG_NONSEC 0x10U
1467 /*
1468  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1469  *
1470  * SPDX-License-Identifier: MPL-2.0
1471  *
1472  * This Source Code Form is subject to the terms of the Mozilla Public
1473  * License, v. 2.0. If a copy of the MPL was not distributed with this
1474  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1475  *
1476  * See the COPYRIGHT file distributed with this work for additional
1477  * information regarding copyright ownership.
1478  */
1479 
1480 #pragma once
1481 
1482 /*!
1483  * \brief Per RFC 5155 */
1484 
1485 #include <isc/iterated_hash.h>
1486 
1487 typedef struct dns_rdata_nsec3param {
1488 	dns_rdatacommon_t common;
1489 	isc_mem_t *mctx;
1490 	dns_hash_t hash;
1491 	unsigned char flags; /* DNS_NSEC3FLAG_* */
1492 	dns_iterations_t iterations;
1493 	unsigned char salt_length;
1494 	unsigned char *salt;
1495 } dns_rdata_nsec3param_t;
1496 /*
1497  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1498  *
1499  * SPDX-License-Identifier: MPL-2.0
1500  *
1501  * This Source Code Form is subject to the terms of the Mozilla Public
1502  * License, v. 2.0. If a copy of the MPL was not distributed with this
1503  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1504  *
1505  * See the COPYRIGHT file distributed with this work for additional
1506  * information regarding copyright ownership.
1507  */
1508 
1509 #pragma once
1510 
1511 /*!
1512  *  \brief per rfc6698.txt
1513  */
1514 typedef struct dns_rdata_tlsa {
1515 	dns_rdatacommon_t common;
1516 	isc_mem_t *mctx;
1517 	uint8_t usage;
1518 	uint8_t selector;
1519 	uint8_t match;
1520 	uint16_t length;
1521 	unsigned char *data;
1522 } dns_rdata_tlsa_t;
1523 /*
1524  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1525  *
1526  * SPDX-License-Identifier: MPL-2.0
1527  *
1528  * This Source Code Form is subject to the terms of the Mozilla Public
1529  * License, v. 2.0. If a copy of the MPL was not distributed with this
1530  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1531  *
1532  * See the COPYRIGHT file distributed with this work for additional
1533  * information regarding copyright ownership.
1534  */
1535 
1536 #pragma once
1537 
1538 typedef struct dns_rdata_tlsa dns_rdata_smimea_t;
1539 /*
1540  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1541  *
1542  * SPDX-License-Identifier: MPL-2.0
1543  *
1544  * This Source Code Form is subject to the terms of the Mozilla Public
1545  * License, v. 2.0. If a copy of the MPL was not distributed with this
1546  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1547  *
1548  * See the COPYRIGHT file distributed with this work for additional
1549  * information regarding copyright ownership.
1550  */
1551 
1552 #pragma once
1553 
1554 /* RFC 5205 */
1555 
1556 typedef struct dns_rdata_hip {
1557 	dns_rdatacommon_t common;
1558 	isc_mem_t *mctx;
1559 	unsigned char *hit;
1560 	unsigned char *key;
1561 	unsigned char *servers;
1562 	uint8_t algorithm;
1563 	uint8_t hit_len;
1564 	uint16_t key_len;
1565 	uint16_t servers_len;
1566 	/* Private */
1567 	uint16_t offset;
1568 } dns_rdata_hip_t;
1569 
1570 isc_result_t
1571 dns_rdata_hip_first(dns_rdata_hip_t *);
1572 
1573 isc_result_t
1574 dns_rdata_hip_next(dns_rdata_hip_t *);
1575 
1576 void
1577 dns_rdata_hip_current(dns_rdata_hip_t *, dns_name_t *);
1578 /*
1579  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1580  *
1581  * SPDX-License-Identifier: MPL-2.0
1582  *
1583  * This Source Code Form is subject to the terms of the Mozilla Public
1584  * License, v. 2.0. If a copy of the MPL was not distributed with this
1585  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1586  *
1587  * See the COPYRIGHT file distributed with this work for additional
1588  * information regarding copyright ownership.
1589  */
1590 
1591 /* */
1592 #pragma once
1593 
1594 typedef struct dns_rdata_txt_string dns_rdata_ninfo_string_t;
1595 
1596 typedef struct dns_rdata_txt dns_rdata_ninfo_t;
1597 
1598 /*
1599  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
1600  * via rdatastructpre.h and rdatastructsuf.h.
1601  */
1602 
1603 isc_result_t
1604 dns_rdata_ninfo_first(dns_rdata_ninfo_t *);
1605 
1606 isc_result_t
1607 dns_rdata_ninfo_next(dns_rdata_ninfo_t *);
1608 
1609 isc_result_t
1610 dns_rdata_ninfo_current(dns_rdata_ninfo_t *, dns_rdata_ninfo_string_t *);
1611 /*
1612  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1613  *
1614  * SPDX-License-Identifier: MPL-2.0
1615  *
1616  * This Source Code Form is subject to the terms of the Mozilla Public
1617  * License, v. 2.0. If a copy of the MPL was not distributed with this
1618  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1619  *
1620  * See the COPYRIGHT file distributed with this work for additional
1621  * information regarding copyright ownership.
1622  */
1623 
1624 #pragma once
1625 
1626 typedef struct dns_rdata_key dns_rdata_rkey_t;
1627 /*
1628  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1629  *
1630  * SPDX-License-Identifier: MPL-2.0
1631  *
1632  * This Source Code Form is subject to the terms of the Mozilla Public
1633  * License, v. 2.0. If a copy of the MPL was not distributed with this
1634  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1635  *
1636  * See the COPYRIGHT file distributed with this work for additional
1637  * information regarding copyright ownership.
1638  */
1639 
1640 /*
1641  * http://www.iana.org/assignments/dns-parameters/TALINK/talink-completed-template
1642  */
1643 
1644 #pragma once
1645 
1646 typedef struct dns_rdata_talink {
1647 	dns_rdatacommon_t common;
1648 	isc_mem_t *mctx;
1649 	dns_name_t prev;
1650 	dns_name_t next;
1651 } dns_rdata_talink_t;
1652 /*
1653  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1654  *
1655  * SPDX-License-Identifier: MPL-2.0
1656  *
1657  * This Source Code Form is subject to the terms of the Mozilla Public
1658  * License, v. 2.0. If a copy of the MPL was not distributed with this
1659  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1660  *
1661  * See the COPYRIGHT file distributed with this work for additional
1662  * information regarding copyright ownership.
1663  */
1664 
1665 #pragma once
1666 
1667 /* CDS records have the same RDATA fields as DS records. */
1668 typedef struct dns_rdata_ds dns_rdata_cds_t;
1669 /*
1670  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1671  *
1672  * SPDX-License-Identifier: MPL-2.0
1673  *
1674  * This Source Code Form is subject to the terms of the Mozilla Public
1675  * License, v. 2.0. If a copy of the MPL was not distributed with this
1676  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1677  *
1678  * See the COPYRIGHT file distributed with this work for additional
1679  * information regarding copyright ownership.
1680  */
1681 
1682 #pragma once
1683 
1684 /* CDNSKEY records have the same RDATA fields as DNSKEY records. */
1685 typedef struct dns_rdata_key dns_rdata_cdnskey_t;
1686 /*
1687  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1688  *
1689  * SPDX-License-Identifier: MPL-2.0
1690  *
1691  * This Source Code Form is subject to the terms of the Mozilla Public
1692  * License, v. 2.0. If a copy of the MPL was not distributed with this
1693  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1694  *
1695  * See the COPYRIGHT file distributed with this work for additional
1696  * information regarding copyright ownership.
1697  */
1698 
1699 #pragma once
1700 
1701 typedef struct dns_rdata_openpgpkey {
1702 	dns_rdatacommon_t common;
1703 	isc_mem_t *mctx;
1704 	uint16_t length;
1705 	unsigned char *keyring;
1706 } dns_rdata_openpgpkey_t;
1707 /*
1708  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1709  *
1710  * SPDX-License-Identifier: MPL-2.0
1711  *
1712  * This Source Code Form is subject to the terms of the Mozilla Public
1713  * License, v. 2.0. If a copy of the MPL was not distributed with this
1714  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1715  *
1716  * See the COPYRIGHT file distributed with this work for additional
1717  * information regarding copyright ownership.
1718  */
1719 
1720 #pragma once
1721 
1722 /*!
1723  * \brief Per RFC 7477
1724  */
1725 
1726 typedef struct dns_rdata_csync {
1727 	dns_rdatacommon_t common;
1728 	isc_mem_t *mctx;
1729 	uint32_t serial;
1730 	uint16_t flags;
1731 	unsigned char *typebits;
1732 	uint16_t len;
1733 } dns_rdata_csync_t;
1734 /*
1735  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1736  *
1737  * SPDX-License-Identifier: MPL-2.0
1738  *
1739  * This Source Code Form is subject to the terms of the Mozilla Public
1740  * License, v. 2.0. If a copy of the MPL was not distributed with this
1741  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1742  *
1743  * See the COPYRIGHT file distributed with this work for additional
1744  * information regarding copyright ownership.
1745  */
1746 
1747 #pragma once
1748 
1749 /* Known digest type(s). */
1750 #define DNS_ZONEMD_DIGEST_SHA384 (1)
1751 #define DNS_ZONEMD_DIGEST_SHA512 (2)
1752 
1753 /*
1754  *  \brief per RFC 8976
1755  */
1756 typedef struct dns_rdata_zonemd {
1757 	dns_rdatacommon_t common;
1758 	isc_mem_t *mctx;
1759 	uint32_t serial;
1760 	uint8_t scheme;
1761 	uint8_t digest_type;
1762 	unsigned char *digest;
1763 	uint16_t length;
1764 } dns_rdata_zonemd_t;
1765 /*
1766  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1767  *
1768  * SPDX-License-Identifier: MPL-2.0
1769  *
1770  * This Source Code Form is subject to the terms of the Mozilla Public
1771  * License, v. 2.0. If a copy of the MPL was not distributed with this
1772  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1773  *
1774  * See the COPYRIGHT file distributed with this work for additional
1775  * information regarding copyright ownership.
1776  */
1777 
1778 #pragma once
1779 
1780 /*!
1781  *  \brief Per draft-ietf-dnsop-svcb-https-02
1782  */
1783 
1784 typedef struct dns_rdata_in_svcb {
1785 	dns_rdatacommon_t common;
1786 	isc_mem_t *mctx;
1787 	uint16_t priority;
1788 	dns_name_t svcdomain;
1789 	unsigned char *svc;
1790 	uint16_t svclen;
1791 	uint16_t offset;
1792 } dns_rdata_in_svcb_t;
1793 
1794 isc_result_t
1795 dns_rdata_in_svcb_first(dns_rdata_in_svcb_t *);
1796 
1797 isc_result_t
1798 dns_rdata_in_svcb_next(dns_rdata_in_svcb_t *);
1799 
1800 void
1801 dns_rdata_in_svcb_current(dns_rdata_in_svcb_t *, isc_region_t *);
1802 /*
1803  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1804  *
1805  * SPDX-License-Identifier: MPL-2.0
1806  *
1807  * This Source Code Form is subject to the terms of the Mozilla Public
1808  * License, v. 2.0. If a copy of the MPL was not distributed with this
1809  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1810  *
1811  * See the COPYRIGHT file distributed with this work for additional
1812  * information regarding copyright ownership.
1813  */
1814 
1815 #pragma once
1816 
1817 /*!
1818  *  \brief Per draft-ietf-dnsop-svcb-https-02
1819  */
1820 
1821 /*
1822  * Wire and presentation formats for HTTPS are identical to SVCB.
1823  */
1824 typedef struct dns_rdata_in_svcb dns_rdata_in_https_t;
1825 
1826 isc_result_t
1827 dns_rdata_in_https_first(dns_rdata_in_https_t *);
1828 
1829 isc_result_t
1830 dns_rdata_in_https_next(dns_rdata_in_https_t *);
1831 
1832 void
1833 dns_rdata_in_https_current(dns_rdata_in_https_t *, isc_region_t *);
1834 /*
1835  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1836  *
1837  * SPDX-License-Identifier: MPL-2.0
1838  *
1839  * This Source Code Form is subject to the terms of the Mozilla Public
1840  * License, v. 2.0. If a copy of the MPL was not distributed with this
1841  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1842  *
1843  * See the COPYRIGHT file distributed with this work for additional
1844  * information regarding copyright ownership.
1845  */
1846 
1847 #pragma once
1848 
1849 typedef struct dns_rdata_spf_string {
1850 	uint8_t length;
1851 	unsigned char *data;
1852 } dns_rdata_spf_string_t;
1853 
1854 typedef struct dns_rdata_spf {
1855 	dns_rdatacommon_t common;
1856 	isc_mem_t *mctx;
1857 	unsigned char *txt;
1858 	uint16_t txt_len;
1859 	/* private */
1860 	uint16_t offset;
1861 } dns_rdata_spf_t;
1862 
1863 /*
1864  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
1865  * via rdatastructpre.h and rdatastructsuf.h.
1866  */
1867 /*
1868  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1869  *
1870  * SPDX-License-Identifier: MPL-2.0
1871  *
1872  * This Source Code Form is subject to the terms of the Mozilla Public
1873  * License, v. 2.0. If a copy of the MPL was not distributed with this
1874  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1875  *
1876  * See the COPYRIGHT file distributed with this work for additional
1877  * information regarding copyright ownership.
1878  */
1879 
1880 /* */
1881 #pragma once
1882 
1883 typedef struct dns_rdata_nid {
1884 	dns_rdatacommon_t common;
1885 	uint16_t pref;
1886 	unsigned char nid[8];
1887 } dns_rdata_nid_t;
1888 /*
1889  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1890  *
1891  * SPDX-License-Identifier: MPL-2.0
1892  *
1893  * This Source Code Form is subject to the terms of the Mozilla Public
1894  * License, v. 2.0. If a copy of the MPL was not distributed with this
1895  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1896  *
1897  * See the COPYRIGHT file distributed with this work for additional
1898  * information regarding copyright ownership.
1899  */
1900 
1901 /* */
1902 #pragma once
1903 
1904 typedef struct dns_rdata_l32 {
1905 	dns_rdatacommon_t common;
1906 	uint16_t pref;
1907 	struct in_addr l32;
1908 } dns_rdata_l32_t;
1909 /*
1910  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1911  *
1912  * SPDX-License-Identifier: MPL-2.0
1913  *
1914  * This Source Code Form is subject to the terms of the Mozilla Public
1915  * License, v. 2.0. If a copy of the MPL was not distributed with this
1916  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1917  *
1918  * See the COPYRIGHT file distributed with this work for additional
1919  * information regarding copyright ownership.
1920  */
1921 
1922 /* */
1923 #pragma once
1924 
1925 typedef struct dns_rdata_l64 {
1926 	dns_rdatacommon_t common;
1927 	uint16_t pref;
1928 	unsigned char l64[8];
1929 } dns_rdata_l64_t;
1930 /*
1931  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1932  *
1933  * SPDX-License-Identifier: MPL-2.0
1934  *
1935  * This Source Code Form is subject to the terms of the Mozilla Public
1936  * License, v. 2.0. If a copy of the MPL was not distributed with this
1937  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1938  *
1939  * See the COPYRIGHT file distributed with this work for additional
1940  * information regarding copyright ownership.
1941  */
1942 
1943 /* */
1944 #pragma once
1945 
1946 typedef struct dns_rdata_lp {
1947 	dns_rdatacommon_t common;
1948 	isc_mem_t *mctx;
1949 	uint16_t pref;
1950 	dns_name_t lp;
1951 } dns_rdata_lp_t;
1952 /*
1953  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1954  *
1955  * SPDX-License-Identifier: MPL-2.0
1956  *
1957  * This Source Code Form is subject to the terms of the Mozilla Public
1958  * License, v. 2.0. If a copy of the MPL was not distributed with this
1959  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1960  *
1961  * See the COPYRIGHT file distributed with this work for additional
1962  * information regarding copyright ownership.
1963  */
1964 
1965 /* */
1966 #pragma once
1967 
1968 typedef struct dns_rdata_eui48 {
1969 	dns_rdatacommon_t common;
1970 	unsigned char eui48[6];
1971 } dns_rdata_eui48_t;
1972 /*
1973  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1974  *
1975  * SPDX-License-Identifier: MPL-2.0
1976  *
1977  * This Source Code Form is subject to the terms of the Mozilla Public
1978  * License, v. 2.0. If a copy of the MPL was not distributed with this
1979  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1980  *
1981  * See the COPYRIGHT file distributed with this work for additional
1982  * information regarding copyright ownership.
1983  */
1984 
1985 /* */
1986 #pragma once
1987 
1988 typedef struct dns_rdata_eui64 {
1989 	dns_rdatacommon_t common;
1990 	unsigned char eui64[8];
1991 } dns_rdata_eui64_t;
1992 /*
1993  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1994  *
1995  * SPDX-License-Identifier: MPL-2.0
1996  *
1997  * This Source Code Form is subject to the terms of the Mozilla Public
1998  * License, v. 2.0. If a copy of the MPL was not distributed with this
1999  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2000  *
2001  * See the COPYRIGHT file distributed with this work for additional
2002  * information regarding copyright ownership.
2003  */
2004 
2005 #pragma once
2006 
2007 /*!
2008  *  \brief Per draft-ietf-dnsind-tkey-00.txt */
2009 
2010 typedef struct dns_rdata_tkey {
2011 	dns_rdatacommon_t common;
2012 	isc_mem_t *mctx;
2013 	dns_name_t algorithm;
2014 	uint32_t inception;
2015 	uint32_t expire;
2016 	uint16_t mode;
2017 	uint16_t error;
2018 	uint16_t keylen;
2019 	unsigned char *key;
2020 	uint16_t otherlen;
2021 	unsigned char *other;
2022 } dns_rdata_tkey_t;
2023 /*
2024  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2025  *
2026  * SPDX-License-Identifier: MPL-2.0
2027  *
2028  * This Source Code Form is subject to the terms of the Mozilla Public
2029  * License, v. 2.0. If a copy of the MPL was not distributed with this
2030  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2031  *
2032  * See the COPYRIGHT file distributed with this work for additional
2033  * information regarding copyright ownership.
2034  */
2035 
2036 #pragma once
2037 
2038 /*% RFC2845 */
2039 typedef struct dns_rdata_any_tsig {
2040 	dns_rdatacommon_t common;
2041 	isc_mem_t *mctx;
2042 	dns_name_t algorithm;
2043 	uint64_t timesigned;
2044 	uint16_t fudge;
2045 	uint16_t siglen;
2046 	unsigned char *signature;
2047 	uint16_t originalid;
2048 	uint16_t error;
2049 	uint16_t otherlen;
2050 	unsigned char *other;
2051 } dns_rdata_any_tsig_t;
2052 /*
2053  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2054  *
2055  * SPDX-License-Identifier: MPL-2.0
2056  *
2057  * This Source Code Form is subject to the terms of the Mozilla Public
2058  * License, v. 2.0. If a copy of the MPL was not distributed with this
2059  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2060  *
2061  * See the COPYRIGHT file distributed with this work for additional
2062  * information regarding copyright ownership.
2063  */
2064 
2065 #pragma once
2066 
2067 typedef struct dns_rdata_uri {
2068 	dns_rdatacommon_t common;
2069 	isc_mem_t *mctx;
2070 	uint16_t priority;
2071 	uint16_t weight;
2072 	unsigned char *target;
2073 	uint16_t tgt_len;
2074 } dns_rdata_uri_t;
2075 /*
2076  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2077  *
2078  * SPDX-License-Identifier: MPL-2.0
2079  *
2080  * This Source Code Form is subject to the terms of the Mozilla Public
2081  * License, v. 2.0. If a copy of the MPL was not distributed with this
2082  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2083  *
2084  * See the COPYRIGHT file distributed with this work for additional
2085  * information regarding copyright ownership.
2086  */
2087 
2088 #pragma once
2089 
2090 typedef struct dns_rdata_caa {
2091 	dns_rdatacommon_t common;
2092 	isc_mem_t *mctx;
2093 	uint8_t flags;
2094 	unsigned char *tag;
2095 	uint8_t tag_len;
2096 	unsigned char *value;
2097 	uint16_t value_len;
2098 } dns_rdata_caa_t;
2099 /*
2100  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2101  *
2102  * SPDX-License-Identifier: MPL-2.0
2103  *
2104  * This Source Code Form is subject to the terms of the Mozilla Public
2105  * License, v. 2.0. If a copy of the MPL was not distributed with this
2106  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2107  *
2108  * See the COPYRIGHT file distributed with this work for additional
2109  * information regarding copyright ownership.
2110  */
2111 
2112 #pragma once
2113 
2114 typedef dns_rdata_txt_string_t dns_rdata_avc_string_t;
2115 
2116 typedef struct dns_rdata_avc {
2117 	dns_rdatacommon_t common;
2118 	isc_mem_t *mctx;
2119 	unsigned char *data;
2120 	uint16_t length;
2121 	/* private */
2122 	uint16_t offset;
2123 } dns_rdata_avc_t;
2124 
2125 /*
2126  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2127  * via rdatastructpre.h and rdatastructsuf.h.
2128  */
2129 /*
2130  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2131  *
2132  * SPDX-License-Identifier: MPL-2.0
2133  *
2134  * This Source Code Form is subject to the terms of the Mozilla Public
2135  * License, v. 2.0. If a copy of the MPL was not distributed with this
2136  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2137  *
2138  * See the COPYRIGHT file distributed with this work for additional
2139  * information regarding copyright ownership.
2140  */
2141 
2142 #pragma once
2143 
2144 typedef struct dns_rdata_doa {
2145 	dns_rdatacommon_t common;
2146 	isc_mem_t *mctx;
2147 	unsigned char *mediatype;
2148 	unsigned char *data;
2149 	uint32_t enterprise;
2150 	uint32_t type;
2151 	uint16_t data_len;
2152 	uint8_t location;
2153 	uint8_t mediatype_len;
2154 } dns_rdata_doa_t;
2155 /*
2156  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2157  *
2158  * SPDX-License-Identifier: MPL-2.0
2159  *
2160  * This Source Code Form is subject to the terms of the Mozilla Public
2161  * License, v. 2.0. If a copy of the MPL was not distributed with this
2162  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2163  *
2164  * See the COPYRIGHT file distributed with this work for additional
2165  * information regarding copyright ownership.
2166  */
2167 
2168 #pragma once
2169 
2170 typedef struct dns_rdata_amtrelay {
2171 	dns_rdatacommon_t common;
2172 	isc_mem_t *mctx;
2173 	uint8_t precedence;
2174 	bool discovery;
2175 	uint8_t gateway_type;
2176 	struct in_addr in_addr;	  /* gateway type 1 */
2177 	struct in6_addr in6_addr; /* gateway type 2 */
2178 	dns_name_t gateway;	  /* gateway type 3 */
2179 	unsigned char *data;	  /* gateway type > 3 */
2180 	uint16_t length;
2181 } dns_rdata_amtrelay_t;
2182 /*
2183  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2184  *
2185  * SPDX-License-Identifier: MPL-2.0
2186  *
2187  * This Source Code Form is subject to the terms of the Mozilla Public
2188  * License, v. 2.0. If a copy of the MPL was not distributed with this
2189  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2190  *
2191  * See the COPYRIGHT file distributed with this work for additional
2192  * information regarding copyright ownership.
2193  */
2194 
2195 #pragma once
2196 
2197 typedef struct dns_rdata_resinfo_string {
2198 	uint8_t length;
2199 	unsigned char *data;
2200 } dns_rdata_resinfo_string_t;
2201 
2202 typedef struct dns_rdata_resinfo {
2203 	dns_rdatacommon_t common;
2204 	isc_mem_t *mctx;
2205 	unsigned char *txt;
2206 	uint16_t txt_len;
2207 	/* private */
2208 	uint16_t offset;
2209 } dns_rdata_resinfo_t;
2210 
2211 /*
2212  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2213  * via rdatastructpre.h and rdatastructsuf.h.
2214  */
2215 /*
2216  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2217  *
2218  * SPDX-License-Identifier: MPL-2.0
2219  *
2220  * This Source Code Form is subject to the terms of the Mozilla Public
2221  * License, v. 2.0. If a copy of the MPL was not distributed with this
2222  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2223  *
2224  * See the COPYRIGHT file distributed with this work for additional
2225  * information regarding copyright ownership.
2226  */
2227 
2228 /* */
2229 #pragma once
2230 
2231 typedef struct dns_rdata_txt_string dns_rdata_wallet_string_t;
2232 
2233 typedef struct dns_rdata_txt dns_rdata_wallet_t;
2234 
2235 /*
2236  * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2237  * via rdatastructpre.h and rdatastructsuf.h.
2238  */
2239 
2240 isc_result_t
2241 dns_rdata_wallet_first(dns_rdata_wallet_t *);
2242 
2243 isc_result_t
2244 dns_rdata_wallet_next(dns_rdata_wallet_t *);
2245 
2246 isc_result_t
2247 dns_rdata_wallet_current(dns_rdata_wallet_t *, dns_rdata_wallet_string_t *);
2248 /*
2249  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2250  *
2251  * SPDX-License-Identifier: MPL-2.0
2252  *
2253  * This Source Code Form is subject to the terms of the Mozilla Public
2254  * License, v. 2.0. If a copy of the MPL was not distributed with this
2255  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2256  *
2257  * See the COPYRIGHT file distributed with this work for additional
2258  * information regarding copyright ownership.
2259  */
2260 
2261 #pragma once
2262 
2263 /*
2264  * TA records are identical to DS records.
2265  */
2266 typedef struct dns_rdata_ds dns_rdata_ta_t;
2267 /*
2268  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2269  *
2270  * SPDX-License-Identifier: MPL-2.0
2271  *
2272  * This Source Code Form is subject to the terms of the Mozilla Public
2273  * License, v. 2.0. If a copy of the MPL was not distributed with this
2274  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2275  *
2276  * See the COPYRIGHT file distributed with this work for additional
2277  * information regarding copyright ownership.
2278  */
2279 
2280 /* draft-ietf-dnsext-delegation-signer-05.txt */
2281 #pragma once
2282 
2283 typedef struct dns_rdata_ds dns_rdata_dlv_t;
2284 /*
2285  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2286  *
2287  * SPDX-License-Identifier: MPL-2.0
2288  *
2289  * This Source Code Form is subject to the terms of the Mozilla Public
2290  * License, v. 2.0. If a copy of the MPL was not distributed with this
2291  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2292  *
2293  * See the COPYRIGHT file distributed with this work for additional
2294  * information regarding copyright ownership.
2295  */
2296 
2297 #pragma once
2298 
2299 typedef struct dns_rdata_keydata {
2300 	dns_rdatacommon_t common;
2301 	isc_mem_t *mctx;
2302 	uint32_t refresh;  /* Timer for refreshing data */
2303 	uint32_t addhd;	   /* Hold-down timer for adding */
2304 	uint32_t removehd; /* Hold-down timer for removing */
2305 	uint16_t flags;	   /* Copy of DNSKEY_48 */
2306 	dns_secproto_t protocol;
2307 	dns_secalg_t algorithm;
2308 	uint16_t datalen;
2309 	unsigned char *data;
2310 } dns_rdata_keydata_t;
2311 /*
2312  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2313  *
2314  * SPDX-License-Identifier: MPL-2.0
2315  *
2316  * This Source Code Form is subject to the terms of the Mozilla Public
2317  * License, v. 2.0. If a copy of the MPL was not distributed with this
2318  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2319  *
2320  * See the COPYRIGHT file distributed with this work for additional
2321  * information regarding copyright ownership.
2322  */
2323 
2324 ISC_LANG_ENDDECLS
2325