Import bind 9.5.2 vendor sources.
[dragonfly.git] / contrib / bind-9.5.2 / lib / dns / include / dns / rdatalist.h
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 */