/
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/dlz.h
(10618B)
/* * Portions 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. */ /* * Copyright (C) 2002 Stichting NLnet, Netherlands, stichting@nlnet.nl. * * Permission to use, copy, modify, and 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 STICHTING NLNET * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL * STICHTING NLNET 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. * * The development of Dynamically Loadable Zones (DLZ) for Bind 9 was * conceived and contributed by Rob Butler. * * Permission to use, copy, modify, and 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 ROB BUTLER * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL * ROB BUTLER 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. */ /*! \file dns/dlz.h */ #ifndef DLZ_H #define DLZ_H 1 /***** ***** Module Info *****/ /* * DLZ Interface * * The DLZ interface allows zones to be looked up using a driver instead of * Bind's default in memory zone table. * * * Reliability: * No anticipated impact. * * Resources: * * Security: * No anticipated impact. * * Standards: * None. */ /***** ***** Imports *****/ #include <stdbool.h> #include <dns/clientinfo.h> #include <dns/name.h> #include <dns/types.h> #include <dns/view.h> #include <dst/dst.h> #include <isc/lang.h> ISC_LANG_BEGINDECLS /*** *** Types ***/ #define DNS_DLZ_MAGIC ISC_MAGIC('D','L','Z','D') #define DNS_DLZ_VALID(dlz) ISC_MAGIC_VALID(dlz, DNS_DLZ_MAGIC) typedef isc_result_t (*dns_dlzallowzonexfr_t)(void *driverarg, void *dbdata, isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_name_t *name, isc_sockaddr_t *clientaddr, dns_db_t **dbp); /*%< * Method prototype. Drivers implementing the DLZ interface MUST * supply an allow zone transfer method. This method is called when * the DNS server is performing a zone transfer query. The driver's * method should return ISC_R_SUCCESS and a database pointer to the * name server if the zone is supported by the database, and zone * transfer is allowed. Otherwise it will return ISC_R_NOTFOUND if * the zone is not supported by the database, or ISC_R_NOPERM if zone * transfers are not allowed. If an error occurs it should return a * result code indicating the type of error. */ typedef isc_result_t (*dns_dlzcreate_t)(isc_mem_t *mctx, const char *dlzname, unsigned int argc, char *argv[], void *driverarg, void **dbdata); /*%< * Method prototype. Drivers implementing the DLZ interface MUST * supply a create method. This method is called when the DNS server * is starting up and creating drivers for use later. */ typedef void (*dns_dlzdestroy_t)(void *driverarg, void **dbdata); /*%< * Method prototype. Drivers implementing the DLZ interface MUST * supply a destroy method. This method is called when the DNS server * is shutting down and no longer needs the driver. */ typedef isc_result_t (*dns_dlzfindzone_t)(void *driverarg, void *dbdata, isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_name_t *name, dns_clientinfomethods_t *methods, dns_clientinfo_t *clientinfo, dns_db_t **dbp); /*%< * Method prototype. Drivers implementing the DLZ interface MUST * supply a find zone method. This method is called when the DNS * server is performing a query. The find zone method will be called * with the longest possible name first, and continue to be called * with successively shorter domain names, until any of the following * occur: * * \li 1) a match is found, and the function returns (ISC_R_SUCCESS) * * \li 2) a problem occurs, and the functions returns anything other * than (ISC_R_NOTFOUND) * \li 3) we run out of domain name labels. I.E. we have tried the * shortest domain name * \li 4) the number of labels in the domain name is less than * min_labels for dns_dlzfindzone * * The driver's find zone method should return ISC_R_SUCCESS and a * database pointer to the name server if the zone is supported by the * database. Otherwise it will return ISC_R_NOTFOUND, and a null * pointer if the zone is not supported. If an error occurs it should * return a result code indicating the type of error. */ typedef isc_result_t (*dns_dlzconfigure_t)(void *driverarg, void *dbdata, dns_view_t *view, dns_dlzdb_t *dlzdb); /*%< * Method prototype. Drivers implementing the DLZ interface may * optionally supply a configure method. If supplied, this will be * called immediately after the create method is called. The driver * may call configuration functions during the configure call */ typedef bool (*dns_dlzssumatch_t)(dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, dns_rdatatype_t type, const dst_key_t *key, void *driverarg, void *dbdata); /*%< * Method prototype. Drivers implementing the DLZ interface may * optionally supply a ssumatch method. If supplied, this will be * called to authorize update requests */ /*% the methods supplied by a DLZ driver */ typedef struct dns_dlzmethods { dns_dlzcreate_t create; dns_dlzdestroy_t destroy; dns_dlzfindzone_t findzone; dns_dlzallowzonexfr_t allowzonexfr; dns_dlzconfigure_t configure; dns_dlzssumatch_t ssumatch; } dns_dlzmethods_t; /*% information about a DLZ driver */ struct dns_dlzimplementation { const char *name; const dns_dlzmethods_t *methods; isc_mem_t *mctx; void *driverarg; ISC_LINK(dns_dlzimplementation_t) link; }; typedef isc_result_t (*dlzconfigure_callback_t)(dns_view_t *, dns_dlzdb_t *, dns_zone_t *); /*% An instance of a DLZ driver */ struct dns_dlzdb { unsigned int magic; isc_mem_t *mctx; dns_dlzimplementation_t *implementation; void *dbdata; dlzconfigure_callback_t configure_callback; bool search; char *dlzname; ISC_LINK(dns_dlzdb_t) link; dns_ssutable_t *ssutable; }; /*** *** Method declarations ***/ isc_result_t dns_dlzallowzonexfr(dns_view_t *view, dns_name_t *name, isc_sockaddr_t *clientaddr, dns_db_t **dbp); /*%< * This method is called when the DNS server is performing a zone * transfer query. It will call the DLZ driver's allow zone transfer * method. */ isc_result_t dns_dlzcreate(isc_mem_t *mctx, const char *dlzname, const char *drivername, unsigned int argc, char *argv[], dns_dlzdb_t **dbp); /*%< * This method is called when the DNS server is starting up and * creating drivers for use later. It will search the DLZ driver list * for 'drivername' and return a DLZ driver via dbp if a match is * found. If the DLZ driver supplies a create method, this function * will call it. */ void dns_dlzdestroy(dns_dlzdb_t **dbp); /*%< * This method is called when the DNS server is shutting down and no * longer needs the driver. If the DLZ driver supplies a destroy * methods, this function will call it. */ isc_result_t dns_dlzregister(const char *drivername, const dns_dlzmethods_t *methods, void *driverarg, isc_mem_t *mctx, dns_dlzimplementation_t **dlzimp); /*%< * Register a dynamically loadable zones (DLZ) driver for the database * type 'drivername', implemented by the functions in '*methods'. * * dlzimp must point to a NULL dlz_implementation_t pointer. That is, * dlzimp != NULL && *dlzimp == NULL. It will be assigned a value that * will later be used to identify the driver when deregistering it. */ isc_result_t dns_dlzstrtoargv(isc_mem_t *mctx, char *s, unsigned int *argcp, char ***argvp); /*%< * This method is called when the name server is starting up to parse * the DLZ driver command line from named.conf. Basically it splits * up a string into and argc / argv. The primary difference of this * method is items between braces { } are considered only 1 word. for * example the command line "this is { one grouped phrase } and this * isn't" would be parsed into: * * \li argv[0]: "this" * \li argv[1]: "is" * \li argv{2]: " one grouped phrase " * \li argv[3]: "and" * \li argv[4]: "this" * \li argv{5}: "isn't" * * braces should NOT be nested, more than one grouping in the command * line is allowed. Notice, argv[2] has an extra space at the * beginning and end. Extra spaces are not stripped between a * grouping. You can do so in your driver if needed, or be sure not * to put extra spaces before / after the braces. */ void dns_dlzunregister(dns_dlzimplementation_t **dlzimp); /*%< * Removes the dlz driver from the list of registered dlz drivers. * There must be no active dlz drivers of this type when this function * is called. */ typedef isc_result_t dns_dlz_writeablezone_t(dns_view_t *view, dns_dlzdb_t *dlzdb, const char *zone_name); dns_dlz_writeablezone_t dns_dlz_writeablezone; /*%< * creates a writeable DLZ zone. Must be called from within the * configure() method of a DLZ driver. */ isc_result_t dns_dlzconfigure(dns_view_t *view, dns_dlzdb_t *dlzdb, dlzconfigure_callback_t callback); /*%< * call a DLZ drivers configure method, if supplied */ bool dns_dlz_ssumatch(dns_dlzdb_t *dlzdatabase, dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, dns_rdatatype_t type, const dst_key_t *key); /*%< * call a DLZ drivers ssumatch method, if supplied. Otherwise return false */ ISC_LANG_ENDDECLS #endif /* DLZ_H */
Save
cmd:
run