bind - Upgraded vendor branch to 9.5.2-P1
[dragonfly.git] / contrib / bind-9.5.2 / lib / dns / include / dns / order.h
1 /*
2  * Copyright (C) 2004-2007  Internet Systems Consortium, Inc. ("ISC")
3  * Copyright (C) 2002  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: order.h,v 1.9 2007/06/19 23:47:17 tbox Exp $ */
19
20 #ifndef DNS_ORDER_H
21 #define DNS_ORDER_H 1
22
23 /*! \file dns/order.h */
24
25 #include <isc/lang.h>
26 #include <isc/types.h>
27
28 #include <dns/types.h>
29
30 ISC_LANG_BEGINDECLS
31
32 isc_result_t
33 dns_order_create(isc_mem_t *mctx, dns_order_t **orderp);
34 /*%<
35  * Create a order object.
36  *
37  * Requires:
38  * \li  'orderp' to be non NULL and '*orderp == NULL'.
39  *\li   'mctx' to be valid.
40  *
41  * Returns:
42  *\li   ISC_R_SUCCESS
43  *\li   ISC_R_NOMEMORY
44  */
45
46 isc_result_t
47 dns_order_add(dns_order_t *order, dns_name_t *name,
48               dns_rdatatype_t rdtype, dns_rdataclass_t rdclass,
49               unsigned int mode);
50 /*%<
51  * Add a entry to the end of the order list.
52  *
53  * Requires:
54  * \li  'order' to be valid.
55  *\li   'name' to be valid.
56  *\li   'mode' to be one of #DNS_RDATASERATTR_RANDOMIZE,
57  *              #DNS_RDATASERATTR_RANDOMIZE or zero (#DNS_RDATASERATTR_CYCLIC).
58  *
59  * Returns:
60  *\li   #ISC_R_SUCCESS
61  *\li   #ISC_R_NOMEMORY
62  */
63
64 unsigned int
65 dns_order_find(dns_order_t *order, dns_name_t *name,
66                dns_rdatatype_t rdtype, dns_rdataclass_t rdclass);
67 /*%<
68  * Find the first matching entry on the list.
69  *
70  * Requires:
71  *\li   'order' to be valid.
72  *\li   'name' to be valid.
73  *
74  * Returns the mode set by dns_order_add() or zero.
75  */
76
77 void
78 dns_order_attach(dns_order_t *source, dns_order_t **target);
79 /*%<
80  * Attach to the 'source' object.
81  *
82  * Requires:
83  * \li  'source' to be valid.
84  *\li   'target' to be non NULL and '*target == NULL'.
85  */
86
87 void
88 dns_order_detach(dns_order_t **orderp);
89 /*%<
90  * Detach from the object.  Clean up if last this was the last
91  * reference.
92  *
93  * Requires:
94  *\li   '*orderp' to be valid.
95  */
96
97 ISC_LANG_ENDDECLS
98
99 #endif /* DNS_ORDER_H */