/
usr
/
include
/
bind9
/
dns
/
/usr/include/bind9/dns
mkdir
upload
Name
Size
Mode
Actions
acache.h
14232
0644
edit
dl
rm
acl.h
7242
0644
edit
dl
rm
adb.h
22595
0644
edit
dl
rm
badcache.h
3369
0644
edit
dl
rm
bit.h
807
0644
edit
dl
rm
byaddr.h
4002
0644
edit
dl
rm
cache.h
8643
0644
edit
dl
rm
callbacks.h
2271
0644
edit
dl
rm
catz.h
11833
0644
edit
dl
rm
cert.h
1466
0644
edit
dl
rm
client.h
22042
0644
edit
dl
rm
clientinfo.h
2006
0644
edit
dl
rm
compress.h
6646
0644
edit
dl
rm
db.h
47061
0644
edit
dl
rm
dbiterator.h
7422
0644
edit
dl
rm
dbtable.h
3165
0644
edit
dl
rm
diff.h
6980
0644
edit
dl
rm
dispatch.h
16427
0644
edit
dl
rm
dlz.h
10618
0644
edit
dl
rm
dlz_dlopen.h
4677
0644
edit
dl
rm
dns64.h
5635
0644
edit
dl
rm
dnssec.h
12371
0644
edit
dl
rm
dnstap.h
9364
0644
edit
dl
rm
ds.h
1225
0644
edit
dl
rm
dsdigest.h
1722
0644
edit
dl
rm
dyndb.h
4835
0644
edit
dl
rm
ecdb.h
809
0644
edit
dl
rm
edns.h
722
0644
edit
dl
rm
enumclass.h
1220
0644
edit
dl
rm
enumtype.h
8300
0644
edit
dl
rm
events.h
4059
0644
edit
dl
rm
fixedname.h
1663
0644
edit
dl
rm
forward.h
3452
0644
edit
dl
rm
geoip.h
2792
0644
edit
dl
rm
ipkeylist.h
2186
0644
edit
dl
rm
iptable.h
1621
0644
edit
dl
rm
journal.h
8227
0644
edit
dl
rm
keydata.h
1059
0644
edit
dl
rm
keyflags.h
1278
0644
edit
dl
rm
keytable.h
9462
0644
edit
dl
rm
keyvalues.h
4159
0644
edit
dl
rm
lib.h
1192
0644
edit
dl
rm
log.h
3964
0644
edit
dl
rm
lookup.h
2924
0644
edit
dl
rm
master.h
11289
0644
edit
dl
rm
masterdump.h
12647
0644
edit
dl
rm
message.h
39023
0644
edit
dl
rm
name.h
37115
0644
edit
dl
rm
ncache.h
4929
0644
edit
dl
rm
nsec.h
3397
0644
edit
dl
rm
nsec3.h
8032
0644
edit
dl
rm
nta.h
4548
0644
edit
dl
rm
opcode.h
1007
0644
edit
dl
rm
order.h
1999
0644
edit
dl
rm
peer.h
5966
0644
edit
dl
rm
portlist.h
2101
0644
edit
dl
rm
private.h
1935
0644
edit
dl
rm
rbt.h
40618
0644
edit
dl
rm
rcode.h
2481
0644
edit
dl
rm
rdata.h
21613
0644
edit
dl
rm
rdataclass.h
2257
0644
edit
dl
rm
rdatalist.h
2569
0644
edit
dl
rm
rdataset.h
21536
0644
edit
dl
rm
rdatasetiter.h
3926
0644
edit
dl
rm
rdataslab.h
4528
0644
edit
dl
rm
rdatastruct.h
61584
0644
edit
dl
rm
rdatatype.h
2298
0644
edit
dl
rm
request.h
11156
0644
edit
dl
rm
resolver.h
20227
0644
edit
dl
rm
result.h
9284
0644
edit
dl
rm
rootns.h
892
0644
edit
dl
rm
rpz.h
10335
0644
edit
dl
rm
rriterator.h
4230
0644
edit
dl
rm
rrl.h
6640
0644
edit
dl
rm
sdb.h
7224
0644
edit
dl
rm
sdlz.h
14214
0644
edit
dl
rm
secalg.h
1706
0644
edit
dl
rm
secproto.h
1557
0644
edit
dl
rm
soa.h
2186
0644
edit
dl
rm
ssu.h
8308
0644
edit
dl
rm
stats.h
13451
0644
edit
dl
rm
tcpmsg.h
3145
0644
edit
dl
rm
time.h
1695
0644
edit
dl
rm
timer.h
1051
0644
edit
dl
rm
tkey.h
7631
0644
edit
dl
rm
tsec.h
2949
0644
edit
dl
rm
tsig.h
8384
0644
edit
dl
rm
ttl.h
1945
0644
edit
dl
rm
types.h
14212
0644
edit
dl
rm
update.h
1653
0644
edit
dl
rm
validator.h
7161
0644
edit
dl
rm
version.h
868
0644
edit
dl
rm
view.h
35274
0644
edit
dl
rm
xfrin.h
2924
0644
edit
dl
rm
zone.h
60864
0644
edit
dl
rm
zonekey.h
777
0644
edit
dl
rm
zt.h
5562
0644
edit
dl
rm
Edit:
/usr/include/bind9/dns/acl.h
(7242B)
/* * Copyright (C) Internet Systems Consortium, Inc. ("ISC") * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, you can obtain one at https://mozilla.org/MPL/2.0/. * * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ #ifndef DNS_ACL_H #define DNS_ACL_H 1 /***** ***** Module Info *****/ /*! \file dns/acl.h * \brief * Address match list handling. */ /*** *** Imports ***/ #include <stdbool.h> #include <isc/lang.h> #include <isc/magic.h> #include <isc/netaddr.h> #include <isc/refcount.h> #if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2) #include <dns/geoip.h> #endif #include <dns/name.h> #include <dns/types.h> #include <dns/iptable.h> /*** *** Types ***/ typedef enum { dns_aclelementtype_ipprefix, dns_aclelementtype_keyname, dns_aclelementtype_nestedacl, dns_aclelementtype_localhost, dns_aclelementtype_localnets, #if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2) dns_aclelementtype_geoip, #endif /* HAVE_GEOIP || HAVE_GEOIP2 */ dns_aclelementtype_any } dns_aclelementtype_t; typedef struct dns_aclipprefix dns_aclipprefix_t; struct dns_aclipprefix { isc_netaddr_t address; /* IP4/IP6 */ unsigned int prefixlen; }; struct dns_aclelement { dns_aclelementtype_t type; bool negative; dns_name_t keyname; #if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2) dns_geoip_elem_t geoip_elem; #endif /* HAVE_GEOIP || HAVE_GEOIP2 */ dns_acl_t *nestedacl; int node_num; }; #define dns_acl_node_count(acl) acl->iptable->radix->num_added_node struct dns_acl { unsigned int magic; isc_mem_t *mctx; isc_refcount_t refcount; dns_iptable_t *iptable; dns_aclelement_t *elements; bool has_negatives; unsigned int alloc; /*%< Elements allocated */ unsigned int length; /*%< Elements initialized */ char *name; /*%< Temporary use only */ ISC_LINK(dns_acl_t) nextincache; /*%< Ditto */ }; struct dns_aclenv { dns_acl_t *localhost; dns_acl_t *localnets; bool match_mapped; #if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2) dns_geoip_databases_t *geoip; bool geoip_use_ecs; #endif }; #define DNS_ACL_MAGIC ISC_MAGIC('D','a','c','l') #define DNS_ACL_VALID(a) ISC_MAGIC_VALID(a, DNS_ACL_MAGIC) /*** *** Functions ***/ ISC_LANG_BEGINDECLS isc_result_t dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target); /*%< * Create a new ACL, including an IP table and an array with room * for 'n' ACL elements. The elements are uninitialized and the * length is 0. */ isc_result_t dns_acl_any(isc_mem_t *mctx, dns_acl_t **target); /*%< * Create a new ACL that matches everything. */ isc_result_t dns_acl_none(isc_mem_t *mctx, dns_acl_t **target); /*%< * Create a new ACL that matches nothing. */ bool dns_acl_isany(dns_acl_t *acl); /*%< * Test whether ACL is set to "{ any; }" */ bool dns_acl_isnone(dns_acl_t *acl); /*%< * Test whether ACL is set to "{ none; }" */ isc_result_t dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos); /*%< * Merge the contents of one ACL into another. Call dns_iptable_merge() * for the IP tables, then concatenate the element arrays. * * If pos is set to false, then the nested ACL is to be negated. This * means reverse the sense of each *positive* element or IP table node, * but leave negatives alone, so as to prevent a double-negative causing * an unexpected positive match in the parent ACL. */ void dns_acl_attach(dns_acl_t *source, dns_acl_t **target); /*%< * Attach to acl 'source'. * * Requires: *\li 'source' to be a valid acl. *\li 'target' to be non NULL and '*target' to be NULL. */ void dns_acl_detach(dns_acl_t **aclp); /*%< * Detach the acl. On final detach the acl must not be linked on any * list. * * Requires: *\li '*aclp' to be a valid acl. * * Insists: *\li '*aclp' is not linked on final detach. */ bool dns_acl_isinsecure(const dns_acl_t *a); /*%< * Return #true iff the acl 'a' is considered insecure, that is, * if it contains IP addresses other than those of the local host. * This is intended for applications such as printing warning * messages for suspect ACLs; it is not intended for making access * control decisions. We make no guarantee that an ACL for which * this function returns #false is safe. */ isc_result_t dns_aclenv_init(isc_mem_t *mctx, dns_aclenv_t *env); /*%< * Initialize ACL environment, setting up localhost and localnets ACLs */ void dns_aclenv_copy(dns_aclenv_t *t, dns_aclenv_t *s); void dns_aclenv_destroy(dns_aclenv_t *env); isc_result_t dns_acl_match(const isc_netaddr_t *reqaddr, const dns_name_t *reqsigner, const dns_acl_t *acl, const dns_aclenv_t *env, int *match, const dns_aclelement_t **matchelt); isc_result_t dns_acl_match2(const isc_netaddr_t *reqaddr, const dns_name_t *reqsigner, const isc_netaddr_t *ecs, uint8_t ecslen, uint8_t *scope, const dns_acl_t *acl, const dns_aclenv_t *env, int *match, const dns_aclelement_t **matchelt); /*%< * General, low-level ACL matching. This is expected to * be useful even for weird stuff like the topology and sortlist statements. * * Match the address 'reqaddr', and optionally the key name 'reqsigner', * and optionally the client prefix 'ecs' of length 'ecslen' * (reported via EDNS client subnet option) against 'acl'. * * 'reqsigner' and 'ecs' may be NULL. If an ACL matches against 'ecs' * and 'ecslen', then 'scope' will be set to indicate the netmask that * matched. * * If there is a match, '*match' will be set to an integer whose absolute * value corresponds to the order in which the matching value was inserted * into the ACL. For a positive match, this value will be positive; for a * negative match, it will be negative. * * If there is no match, *match will be set to zero. * * If there is a match in the element list (either positive or negative) * and 'matchelt' is non-NULL, *matchelt will be pointed to the matching * element. * * 'env' points to the current ACL environment, including the * current values of localhost and localnets and (if applicable) * the GeoIP context. * * Returns: *\li #ISC_R_SUCCESS Always succeeds. */ bool dns_aclelement_match(const isc_netaddr_t *reqaddr, const dns_name_t *reqsigner, const dns_aclelement_t *e, const dns_aclenv_t *env, const dns_aclelement_t **matchelt); bool dns_aclelement_match2(const isc_netaddr_t *reqaddr, const dns_name_t *reqsigner, const isc_netaddr_t *ecs, uint8_t ecslen, uint8_t *scope, const dns_aclelement_t *e, const dns_aclenv_t *env, const dns_aclelement_t **matchelt); /*%< * Like dns_acl_match, but matches against the single ACL element 'e' * rather than a complete ACL, and returns true iff it matched. * * To determine whether the match was positive or negative, the * caller should examine e->negative. Since the element 'e' may be * a reference to a named ACL or a nested ACL, a matching element * returned through 'matchelt' is not necessarily 'e' itself. */ ISC_LANG_ENDDECLS #endif /* DNS_ACL_H */
Save
cmd:
run