Hackfut Security File Manager
Current Path:
/usr/include/dns
usr
/
include
/
dns
/
📁
..
📄
acl.h
(6.28 KB)
📄
adb.h
(17.82 KB)
📄
byaddr.h
(4.41 KB)
📄
cache.h
(7.41 KB)
📄
callbacks.h
(2.19 KB)
📄
cert.h
(1.94 KB)
📄
compress.h
(6.08 KB)
📄
db.h
(40.33 KB)
📄
dbiterator.h
(7.69 KB)
📄
dbtable.h
(3.6 KB)
📄
diff.h
(7.45 KB)
📄
dispatch.h
(13.25 KB)
📄
dlz.h
(10.89 KB)
📄
dnssec.h
(10.84 KB)
📄
ds.h
(1.87 KB)
📄
dynamic_db.h
(1.85 KB)
📄
enumclass.h
(1.75 KB)
📄
enumtype.h
(6.57 KB)
📄
events.h
(3.87 KB)
📄
fixedname.h
(2.18 KB)
📄
forward.h
(3.52 KB)
📄
iptable.h
(1.88 KB)
📄
journal.h
(8.27 KB)
📄
keyflags.h
(1.76 KB)
📄
keytable.h
(9.97 KB)
📄
keyvalues.h
(4.22 KB)
📄
lib.h
(1.68 KB)
📄
log.h
(4.05 KB)
📄
master.h
(9.18 KB)
📄
masterdump.h
(9.43 KB)
📄
message.h
(37.08 KB)
📄
name.h
(35.02 KB)
📄
ncache.h
(5.06 KB)
📄
nsec.h
(2.27 KB)
📄
peer.h
(5.31 KB)
📄
portlist.h
(2.48 KB)
📄
private.h
(1.87 KB)
📄
rbt.h
(33.72 KB)
📄
rcode.h
(2.93 KB)
📄
rdata.h
(20.83 KB)
📄
rdataclass.h
(2.26 KB)
📄
rdatalist.h
(2.83 KB)
📄
rdataset.h
(19.07 KB)
📄
rdatasetiter.h
(4.35 KB)
📄
rdataslab.h
(4.57 KB)
📄
rdatastruct.h
(76.03 KB)
📄
rdatatype.h
(2.32 KB)
📄
request.h
(10.2 KB)
📄
resolver.h
(15.87 KB)
📄
result.h
(8.29 KB)
📄
rootns.h
(1.4 KB)
📄
rpz.h
(5.31 KB)
📄
rrl.h
(6.83 KB)
📄
sdb.h
(7.17 KB)
📄
sdlz.h
(14.1 KB)
📄
secalg.h
(2.18 KB)
📄
secproto.h
(2.03 KB)
📄
soa.h
(2.69 KB)
📄
ssu.h
(6.61 KB)
📄
tcpmsg.h
(3.56 KB)
📄
time.h
(2.04 KB)
📄
tkey.h
(7.95 KB)
📄
tsig.h
(8.52 KB)
📄
ttl.h
(2.08 KB)
📄
types.h
(12.01 KB)
📄
validator.h
(7.32 KB)
📄
version.h
(1.18 KB)
📄
view.h
(28.36 KB)
📄
xfrin.h
(3.06 KB)
📄
zone.h
(45.12 KB)
📄
zonekey.h
(1.25 KB)
📄
zt.h
(4.54 KB)
Editing: acl.h
/* * Copyright (C) 2004-2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ /* $Id: acl.h,v 1.33.426.2 2011-06-17 23:47:11 tbox Exp $ */ #ifndef DNS_ACL_H #define DNS_ACL_H 1 /***** ***** Module Info *****/ /*! \file dns/acl.h * \brief * Address match list handling. */ /*** *** Imports ***/ #include <isc/lang.h> #include <isc/magic.h> #include <isc/netaddr.h> #include <isc/refcount.h> #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, dns_aclelementtype_any } dns_aclelemettype_t; typedef struct dns_aclipprefix dns_aclipprefix_t; struct dns_aclipprefix { isc_netaddr_t address; /* IP4/IP6 */ unsigned int prefixlen; }; struct dns_aclelement { dns_aclelemettype_t type; isc_boolean_t negative; dns_name_t keyname; dns_acl_t *nestedacl; int node_num; }; struct dns_acl { unsigned int magic; isc_mem_t *mctx; isc_refcount_t refcount; dns_iptable_t *iptable; #define node_count iptable->radix->num_added_node dns_aclelement_t *elements; isc_boolean_t 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; isc_boolean_t match_mapped; }; #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. */ isc_boolean_t dns_acl_isany(dns_acl_t *acl); /*%< * Test whether ACL is set to "{ any; }" */ isc_boolean_t 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, isc_boolean_t 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. */ isc_boolean_t dns_acl_isinsecure(const dns_acl_t *a); /*%< * Return #ISC_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 #ISC_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); /*%< * 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', * against 'acl'. 'reqsigner' may be NULL. * * 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. * * Returns: *\li #ISC_R_SUCCESS Always succeeds. */ isc_boolean_t 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); /*%< * Like dns_acl_match, but matches against the single ACL element 'e' * rather than a complete ACL, and returns ISC_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 */
Upload File
Create Folder