Commit | Line | Data |
---|---|---|
bbbf71a3 JL |
1 | /* |
2 | * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") | |
3 | * Copyright (C) 1999-2001 Internet Software Consortium. | |
4 | * | |
5 | * Permission to use, copy, modify, and/or distribute this software for any | |
6 | * purpose with or without fee is hereby granted, provided that the above | |
7 | * copyright notice and this permission notice appear in all copies. | |
8 | * | |
9 | * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH | |
10 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
11 | * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, | |
12 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |
13 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | |
14 | * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | |
15 | * PERFORMANCE OF THIS SOFTWARE. | |
16 | */ | |
17 | ||
18 | /* $Id: rdatalist.h,v 1.20.128.2 2008/04/03 06:08:27 tbox Exp $ */ | |
19 | ||
20 | #ifndef DNS_RDATALIST_H | |
21 | #define DNS_RDATALIST_H 1 | |
22 | ||
23 | /***** | |
24 | ***** Module Info | |
25 | *****/ | |
26 | ||
27 | /*! \file dns/rdatalist.h | |
28 | * \brief | |
29 | * A DNS rdatalist is a list of rdata of a common type and class. | |
30 | * | |
31 | * MP: | |
32 | *\li Clients of this module must impose any required synchronization. | |
33 | * | |
34 | * Reliability: | |
35 | *\li No anticipated impact. | |
36 | * | |
37 | * Resources: | |
38 | *\li TBS | |
39 | * | |
40 | * Security: | |
41 | *\li No anticipated impact. | |
42 | * | |
43 | * Standards: | |
44 | *\li None. | |
45 | */ | |
46 | ||
47 | #include <isc/lang.h> | |
48 | ||
49 | #include <dns/types.h> | |
50 | ||
51 | /*% | |
52 | * Clients may use this type directly. | |
53 | */ | |
54 | struct dns_rdatalist { | |
55 | dns_rdataclass_t rdclass; | |
56 | dns_rdatatype_t type; | |
57 | dns_rdatatype_t covers; | |
58 | dns_ttl_t ttl; | |
59 | ISC_LIST(dns_rdata_t) rdata; | |
60 | ISC_LINK(dns_rdatalist_t) link; | |
61 | }; | |
62 | ||
63 | ISC_LANG_BEGINDECLS | |
64 | ||
65 | void | |
66 | dns_rdatalist_init(dns_rdatalist_t *rdatalist); | |
67 | /*%< | |
68 | * Initialize rdatalist. | |
69 | * | |
70 | * Ensures: | |
71 | *\li All fields of rdatalist have been initialized to their default | |
72 | * values. | |
73 | */ | |
74 | ||
75 | isc_result_t | |
76 | dns_rdatalist_tordataset(dns_rdatalist_t *rdatalist, | |
77 | dns_rdataset_t *rdataset); | |
78 | /*%< | |
79 | * Make 'rdataset' refer to the rdata in 'rdatalist'. | |
80 | * | |
81 | * Note: | |
82 | *\li The caller must ensure that 'rdatalist' remains valid and unchanged | |
83 | * while 'rdataset' is associated with it. | |
84 | * | |
85 | * Requires: | |
86 | * | |
87 | *\li 'rdatalist' is a valid rdatalist. | |
88 | * | |
89 | *\li 'rdataset' is a valid rdataset that is not currently associated with | |
90 | * any rdata. | |
91 | * | |
92 | * Ensures, | |
93 | * on success, | |
94 | * | |
95 | *\li 'rdataset' is associated with the rdata in rdatalist. | |
96 | * | |
97 | * Returns: | |
98 | *\li #ISC_R_SUCCESS | |
99 | */ | |
100 | ||
101 | isc_result_t | |
102 | dns_rdatalist_fromrdataset(dns_rdataset_t *rdataset, | |
103 | dns_rdatalist_t **rdatalist); | |
104 | /*%< | |
105 | * Point 'rdatalist' to the rdatalist in 'rdataset'. | |
106 | * | |
107 | * Requires: | |
108 | * | |
109 | *\li 'rdatalist' is a pointer to a NULL dns_rdatalist_t pointer. | |
110 | * | |
111 | *\li 'rdataset' is a valid rdataset associated with an rdatalist. | |
112 | * | |
113 | * Ensures, | |
114 | * on success, | |
115 | * | |
116 | *\li 'rdatalist' is pointed to the rdatalist in rdataset. | |
117 | * | |
118 | * Returns: | |
119 | *\li #ISC_R_SUCCESS | |
120 | */ | |
121 | ||
122 | ISC_LANG_ENDDECLS | |
123 | ||
124 | #endif /* DNS_RDATALIST_H */ |