rdatastruct.h revision 1.14 1 /*
2 * Copyright (C) 1998-2026 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 (at) 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 /* */
1848 #pragma once
1849
1850 typedef struct dns_rdata_dsync {
1851 dns_rdatacommon_t common;
1852 isc_mem_t *mctx;
1853 uint16_t type;
1854 uint8_t scheme;
1855 uint16_t port;
1856 dns_name_t target;
1857 } dns_rdata_dsync_t;
1858 /*
1859 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1860 *
1861 * SPDX-License-Identifier: MPL-2.0
1862 *
1863 * This Source Code Form is subject to the terms of the Mozilla Public
1864 * License, v. 2.0. If a copy of the MPL was not distributed with this
1865 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1866 *
1867 * See the COPYRIGHT file distributed with this work for additional
1868 * information regarding copyright ownership.
1869 */
1870
1871 #pragma once
1872
1873 typedef struct dns_rdata_hhit_t {
1874 dns_rdatacommon_t common;
1875 isc_mem_t *mctx;
1876 uint16_t datalen;
1877 unsigned char *data;
1878 } dns_rdata_hhit_t;
1879 /*
1880 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1881 *
1882 * SPDX-License-Identifier: MPL-2.0
1883 *
1884 * This Source Code Form is subject to the terms of the Mozilla Public
1885 * License, v. 2.0. If a copy of the MPL was not distributed with this
1886 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1887 *
1888 * See the COPYRIGHT file distributed with this work for additional
1889 * information regarding copyright ownership.
1890 */
1891
1892 #pragma once
1893
1894 typedef struct dns_rdata_brid_t {
1895 dns_rdatacommon_t common;
1896 isc_mem_t *mctx;
1897 uint16_t datalen;
1898 unsigned char *data;
1899 } dns_rdata_brid_t;
1900 /*
1901 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1902 *
1903 * SPDX-License-Identifier: MPL-2.0
1904 *
1905 * This Source Code Form is subject to the terms of the Mozilla Public
1906 * License, v. 2.0. If a copy of the MPL was not distributed with this
1907 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1908 *
1909 * See the COPYRIGHT file distributed with this work for additional
1910 * information regarding copyright ownership.
1911 */
1912
1913 #pragma once
1914
1915 typedef struct dns_rdata_spf_string {
1916 uint8_t length;
1917 unsigned char *data;
1918 } dns_rdata_spf_string_t;
1919
1920 typedef struct dns_rdata_spf {
1921 dns_rdatacommon_t common;
1922 isc_mem_t *mctx;
1923 unsigned char *txt;
1924 uint16_t txt_len;
1925 /* private */
1926 uint16_t offset;
1927 } dns_rdata_spf_t;
1928
1929 /*
1930 * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
1931 * via rdatastructpre.h and rdatastructsuf.h.
1932 */
1933 /*
1934 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1935 *
1936 * SPDX-License-Identifier: MPL-2.0
1937 *
1938 * This Source Code Form is subject to the terms of the Mozilla Public
1939 * License, v. 2.0. If a copy of the MPL was not distributed with this
1940 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1941 *
1942 * See the COPYRIGHT file distributed with this work for additional
1943 * information regarding copyright ownership.
1944 */
1945
1946 /* */
1947 #pragma once
1948
1949 typedef struct dns_rdata_nid {
1950 dns_rdatacommon_t common;
1951 uint16_t pref;
1952 unsigned char nid[8];
1953 } dns_rdata_nid_t;
1954 /*
1955 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1956 *
1957 * SPDX-License-Identifier: MPL-2.0
1958 *
1959 * This Source Code Form is subject to the terms of the Mozilla Public
1960 * License, v. 2.0. If a copy of the MPL was not distributed with this
1961 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1962 *
1963 * See the COPYRIGHT file distributed with this work for additional
1964 * information regarding copyright ownership.
1965 */
1966
1967 /* */
1968 #pragma once
1969
1970 typedef struct dns_rdata_l32 {
1971 dns_rdatacommon_t common;
1972 uint16_t pref;
1973 struct in_addr l32;
1974 } dns_rdata_l32_t;
1975 /*
1976 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1977 *
1978 * SPDX-License-Identifier: MPL-2.0
1979 *
1980 * This Source Code Form is subject to the terms of the Mozilla Public
1981 * License, v. 2.0. If a copy of the MPL was not distributed with this
1982 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1983 *
1984 * See the COPYRIGHT file distributed with this work for additional
1985 * information regarding copyright ownership.
1986 */
1987
1988 /* */
1989 #pragma once
1990
1991 typedef struct dns_rdata_l64 {
1992 dns_rdatacommon_t common;
1993 uint16_t pref;
1994 unsigned char l64[8];
1995 } dns_rdata_l64_t;
1996 /*
1997 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
1998 *
1999 * SPDX-License-Identifier: MPL-2.0
2000 *
2001 * This Source Code Form is subject to the terms of the Mozilla Public
2002 * License, v. 2.0. If a copy of the MPL was not distributed with this
2003 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2004 *
2005 * See the COPYRIGHT file distributed with this work for additional
2006 * information regarding copyright ownership.
2007 */
2008
2009 /* */
2010 #pragma once
2011
2012 typedef struct dns_rdata_lp {
2013 dns_rdatacommon_t common;
2014 isc_mem_t *mctx;
2015 uint16_t pref;
2016 dns_name_t lp;
2017 } dns_rdata_lp_t;
2018 /*
2019 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2020 *
2021 * SPDX-License-Identifier: MPL-2.0
2022 *
2023 * This Source Code Form is subject to the terms of the Mozilla Public
2024 * License, v. 2.0. If a copy of the MPL was not distributed with this
2025 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2026 *
2027 * See the COPYRIGHT file distributed with this work for additional
2028 * information regarding copyright ownership.
2029 */
2030
2031 /* */
2032 #pragma once
2033
2034 typedef struct dns_rdata_eui48 {
2035 dns_rdatacommon_t common;
2036 unsigned char eui48[6];
2037 } dns_rdata_eui48_t;
2038 /*
2039 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2040 *
2041 * SPDX-License-Identifier: MPL-2.0
2042 *
2043 * This Source Code Form is subject to the terms of the Mozilla Public
2044 * License, v. 2.0. If a copy of the MPL was not distributed with this
2045 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2046 *
2047 * See the COPYRIGHT file distributed with this work for additional
2048 * information regarding copyright ownership.
2049 */
2050
2051 /* */
2052 #pragma once
2053
2054 typedef struct dns_rdata_eui64 {
2055 dns_rdatacommon_t common;
2056 unsigned char eui64[8];
2057 } dns_rdata_eui64_t;
2058 /*
2059 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2060 *
2061 * SPDX-License-Identifier: MPL-2.0
2062 *
2063 * This Source Code Form is subject to the terms of the Mozilla Public
2064 * License, v. 2.0. If a copy of the MPL was not distributed with this
2065 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2066 *
2067 * See the COPYRIGHT file distributed with this work for additional
2068 * information regarding copyright ownership.
2069 */
2070
2071 #pragma once
2072
2073 /*!
2074 * \brief Per draft-ietf-dnsind-tkey-00.txt */
2075
2076 typedef struct dns_rdata_tkey {
2077 dns_rdatacommon_t common;
2078 isc_mem_t *mctx;
2079 dns_name_t algorithm;
2080 uint32_t inception;
2081 uint32_t expire;
2082 uint16_t mode;
2083 uint16_t error;
2084 uint16_t keylen;
2085 unsigned char *key;
2086 uint16_t otherlen;
2087 unsigned char *other;
2088 } dns_rdata_tkey_t;
2089 /*
2090 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2091 *
2092 * SPDX-License-Identifier: MPL-2.0
2093 *
2094 * This Source Code Form is subject to the terms of the Mozilla Public
2095 * License, v. 2.0. If a copy of the MPL was not distributed with this
2096 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2097 *
2098 * See the COPYRIGHT file distributed with this work for additional
2099 * information regarding copyright ownership.
2100 */
2101
2102 #pragma once
2103
2104 /*% RFC2845 */
2105 typedef struct dns_rdata_any_tsig {
2106 dns_rdatacommon_t common;
2107 isc_mem_t *mctx;
2108 dns_name_t algorithm;
2109 uint64_t timesigned;
2110 uint16_t fudge;
2111 uint16_t siglen;
2112 unsigned char *signature;
2113 uint16_t originalid;
2114 uint16_t error;
2115 uint16_t otherlen;
2116 unsigned char *other;
2117 } dns_rdata_any_tsig_t;
2118 /*
2119 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2120 *
2121 * SPDX-License-Identifier: MPL-2.0
2122 *
2123 * This Source Code Form is subject to the terms of the Mozilla Public
2124 * License, v. 2.0. If a copy of the MPL was not distributed with this
2125 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2126 *
2127 * See the COPYRIGHT file distributed with this work for additional
2128 * information regarding copyright ownership.
2129 */
2130
2131 #pragma once
2132
2133 typedef struct dns_rdata_uri {
2134 dns_rdatacommon_t common;
2135 isc_mem_t *mctx;
2136 uint16_t priority;
2137 uint16_t weight;
2138 unsigned char *target;
2139 uint16_t tgt_len;
2140 } dns_rdata_uri_t;
2141 /*
2142 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2143 *
2144 * SPDX-License-Identifier: MPL-2.0
2145 *
2146 * This Source Code Form is subject to the terms of the Mozilla Public
2147 * License, v. 2.0. If a copy of the MPL was not distributed with this
2148 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2149 *
2150 * See the COPYRIGHT file distributed with this work for additional
2151 * information regarding copyright ownership.
2152 */
2153
2154 #pragma once
2155
2156 typedef struct dns_rdata_caa {
2157 dns_rdatacommon_t common;
2158 isc_mem_t *mctx;
2159 uint8_t flags;
2160 unsigned char *tag;
2161 uint8_t tag_len;
2162 unsigned char *value;
2163 uint16_t value_len;
2164 } dns_rdata_caa_t;
2165 /*
2166 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2167 *
2168 * SPDX-License-Identifier: MPL-2.0
2169 *
2170 * This Source Code Form is subject to the terms of the Mozilla Public
2171 * License, v. 2.0. If a copy of the MPL was not distributed with this
2172 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2173 *
2174 * See the COPYRIGHT file distributed with this work for additional
2175 * information regarding copyright ownership.
2176 */
2177
2178 #pragma once
2179
2180 typedef dns_rdata_txt_string_t dns_rdata_avc_string_t;
2181
2182 typedef struct dns_rdata_avc {
2183 dns_rdatacommon_t common;
2184 isc_mem_t *mctx;
2185 unsigned char *data;
2186 uint16_t length;
2187 /* private */
2188 uint16_t offset;
2189 } dns_rdata_avc_t;
2190
2191 /*
2192 * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2193 * via rdatastructpre.h and rdatastructsuf.h.
2194 */
2195 /*
2196 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2197 *
2198 * SPDX-License-Identifier: MPL-2.0
2199 *
2200 * This Source Code Form is subject to the terms of the Mozilla Public
2201 * License, v. 2.0. If a copy of the MPL was not distributed with this
2202 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2203 *
2204 * See the COPYRIGHT file distributed with this work for additional
2205 * information regarding copyright ownership.
2206 */
2207
2208 #pragma once
2209
2210 typedef struct dns_rdata_doa {
2211 dns_rdatacommon_t common;
2212 isc_mem_t *mctx;
2213 unsigned char *mediatype;
2214 unsigned char *data;
2215 uint32_t enterprise;
2216 uint32_t type;
2217 uint16_t data_len;
2218 uint8_t location;
2219 uint8_t mediatype_len;
2220 } dns_rdata_doa_t;
2221 /*
2222 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2223 *
2224 * SPDX-License-Identifier: MPL-2.0
2225 *
2226 * This Source Code Form is subject to the terms of the Mozilla Public
2227 * License, v. 2.0. If a copy of the MPL was not distributed with this
2228 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2229 *
2230 * See the COPYRIGHT file distributed with this work for additional
2231 * information regarding copyright ownership.
2232 */
2233
2234 #pragma once
2235
2236 typedef struct dns_rdata_amtrelay {
2237 dns_rdatacommon_t common;
2238 isc_mem_t *mctx;
2239 uint8_t precedence;
2240 bool discovery;
2241 uint8_t gateway_type;
2242 struct in_addr in_addr; /* gateway type 1 */
2243 struct in6_addr in6_addr; /* gateway type 2 */
2244 dns_name_t gateway; /* gateway type 3 */
2245 unsigned char *data; /* gateway type > 3 */
2246 uint16_t length;
2247 } dns_rdata_amtrelay_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 typedef struct dns_rdata_resinfo_string {
2264 uint8_t length;
2265 unsigned char *data;
2266 } dns_rdata_resinfo_string_t;
2267
2268 typedef struct dns_rdata_resinfo {
2269 dns_rdatacommon_t common;
2270 isc_mem_t *mctx;
2271 unsigned char *txt;
2272 uint16_t txt_len;
2273 /* private */
2274 uint16_t offset;
2275 } dns_rdata_resinfo_t;
2276
2277 /*
2278 * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2279 * via rdatastructpre.h and rdatastructsuf.h.
2280 */
2281 /*
2282 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2283 *
2284 * SPDX-License-Identifier: MPL-2.0
2285 *
2286 * This Source Code Form is subject to the terms of the Mozilla Public
2287 * License, v. 2.0. If a copy of the MPL was not distributed with this
2288 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2289 *
2290 * See the COPYRIGHT file distributed with this work for additional
2291 * information regarding copyright ownership.
2292 */
2293
2294 /* */
2295 #pragma once
2296
2297 typedef struct dns_rdata_txt_string dns_rdata_wallet_string_t;
2298
2299 typedef struct dns_rdata_txt dns_rdata_wallet_t;
2300
2301 /*
2302 * ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS are already done
2303 * via rdatastructpre.h and rdatastructsuf.h.
2304 */
2305
2306 isc_result_t
2307 dns_rdata_wallet_first(dns_rdata_wallet_t *);
2308
2309 isc_result_t
2310 dns_rdata_wallet_next(dns_rdata_wallet_t *);
2311
2312 isc_result_t
2313 dns_rdata_wallet_current(dns_rdata_wallet_t *, dns_rdata_wallet_string_t *);
2314 /*
2315 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2316 *
2317 * SPDX-License-Identifier: MPL-2.0
2318 *
2319 * This Source Code Form is subject to the terms of the Mozilla Public
2320 * License, v. 2.0. If a copy of the MPL was not distributed with this
2321 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2322 *
2323 * See the COPYRIGHT file distributed with this work for additional
2324 * information regarding copyright ownership.
2325 */
2326
2327 #pragma once
2328
2329 /*
2330 * TA records are identical to DS records.
2331 */
2332 typedef struct dns_rdata_ds dns_rdata_ta_t;
2333 /*
2334 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2335 *
2336 * SPDX-License-Identifier: MPL-2.0
2337 *
2338 * This Source Code Form is subject to the terms of the Mozilla Public
2339 * License, v. 2.0. If a copy of the MPL was not distributed with this
2340 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2341 *
2342 * See the COPYRIGHT file distributed with this work for additional
2343 * information regarding copyright ownership.
2344 */
2345
2346 /* draft-ietf-dnsext-delegation-signer-05.txt */
2347 #pragma once
2348
2349 typedef struct dns_rdata_ds dns_rdata_dlv_t;
2350 /*
2351 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2352 *
2353 * SPDX-License-Identifier: MPL-2.0
2354 *
2355 * This Source Code Form is subject to the terms of the Mozilla Public
2356 * License, v. 2.0. If a copy of the MPL was not distributed with this
2357 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2358 *
2359 * See the COPYRIGHT file distributed with this work for additional
2360 * information regarding copyright ownership.
2361 */
2362
2363 #pragma once
2364
2365 typedef struct dns_rdata_keydata {
2366 dns_rdatacommon_t common;
2367 isc_mem_t *mctx;
2368 uint32_t refresh; /* Timer for refreshing data */
2369 uint32_t addhd; /* Hold-down timer for adding */
2370 uint32_t removehd; /* Hold-down timer for removing */
2371 uint16_t flags; /* Copy of DNSKEY_48 */
2372 dns_secproto_t protocol;
2373 dns_secalg_t algorithm;
2374 uint16_t datalen;
2375 unsigned char *data;
2376 } dns_rdata_keydata_t;
2377 /*
2378 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2379 *
2380 * SPDX-License-Identifier: MPL-2.0
2381 *
2382 * This Source Code Form is subject to the terms of the Mozilla Public
2383 * License, v. 2.0. If a copy of the MPL was not distributed with this
2384 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
2385 *
2386 * See the COPYRIGHT file distributed with this work for additional
2387 * information regarding copyright ownership.
2388 */
2389
2390 ISC_LANG_ENDDECLS
2391