2 * Copyright (C) 2004, 2005, 2007, 2010, 2011 Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 1999-2002 Internet Software Consortium.
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.
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.
18 /* $Id: query.h,v 1.45 2011/01/13 04:59:24 tbox Exp $ */
21 #define NAMED_QUERY_H 1
25 #include <isc/types.h>
26 #include <isc/buffer.h>
27 #include <isc/netaddr.h>
29 #include <dns/rdataset.h>
31 #include <dns/types.h>
33 #include <named/types.h>
35 /*% nameserver database version structure */
36 typedef struct ns_dbversion {
38 dns_dbversion_t *version;
39 isc_boolean_t acl_checked;
40 isc_boolean_t queryok;
41 ISC_LINK(struct ns_dbversion) link;
44 /*% nameserver query structure */
46 unsigned int attributes;
47 unsigned int restarts;
48 isc_boolean_t timerset;
50 dns_name_t * origqname;
51 unsigned int dboptions;
52 unsigned int fetchoptions;
55 dns_zone_t * authzone;
56 isc_boolean_t authdbset;
57 isc_boolean_t isreferral;
58 isc_mutex_t fetchlock;
60 dns_rpz_st_t * rpz_st;
61 isc_bufferlist_t namebufs;
62 ISC_LIST(ns_dbversion_t) activeversions;
63 ISC_LIST(ns_dbversion_t) freeversions;
64 dns_rdataset_t * dns64_aaaa;
65 dns_rdataset_t * dns64_sigaaaa;
66 isc_boolean_t * dns64_aaaaok;
67 unsigned int dns64_aaaaoklen;
68 unsigned int dns64_options;
69 unsigned int dns64_ttl;
72 #define NS_QUERYATTR_RECURSIONOK 0x0001
73 #define NS_QUERYATTR_CACHEOK 0x0002
74 #define NS_QUERYATTR_PARTIALANSWER 0x0004
75 #define NS_QUERYATTR_NAMEBUFUSED 0x0008
76 #define NS_QUERYATTR_RECURSING 0x0010
77 #define NS_QUERYATTR_CACHEGLUEOK 0x0020
78 #define NS_QUERYATTR_QUERYOKVALID 0x0040
79 #define NS_QUERYATTR_QUERYOK 0x0080
80 #define NS_QUERYATTR_WANTRECURSION 0x0100
81 #define NS_QUERYATTR_SECURE 0x0200
82 #define NS_QUERYATTR_NOAUTHORITY 0x0400
83 #define NS_QUERYATTR_NOADDITIONAL 0x0800
84 #define NS_QUERYATTR_CACHEACLOKVALID 0x1000
85 #define NS_QUERYATTR_CACHEACLOK 0x2000
86 #define NS_QUERYATTR_DNS64 0x4000
87 #define NS_QUERYATTR_DNS64EXCLUDE 0x8000
91 ns_query_init(ns_client_t *client);
94 ns_query_free(ns_client_t *client);
97 ns_query_start(ns_client_t *client);
100 ns_query_cancel(ns_client_t *client);
102 #endif /* NAMED_QUERY_H */