BIND9 Internals Data Structures

Here are the data structures with brief descriptions:
acache_cleaner
acachectl
add_rr_prepare_ctx_tPrepare an RR for the addition of the new RR 'ctx->update_rr', with TTL 'ctx->update_rr_ttl', to its rdataset, by deleting the RRs if it is replaced by the new RR or has a conflicting TTL. The necessary changes are appended to ctx->del_diff and ctx->add_diff; we need to do all deletions before any additions so that we don't run into transient states with conflicting TTLs
alternate
args
axfr_rrstream
base32_decode_ctx_tState of a base32 decoding process in progress
base64_decode_ctx_tState of a base64 decoding process in progress
builtin
cache_cleanerAccesses to a cache cleaner object are synchronized through task/event serialization, or locked from the cache object
cache_dumparg
cfg_aclconfctx
cfg_clausedefA clause definition
cfg_listeltA list element
cfg_map
cfg_netprefix
cfg_objA configuration object. This is the main building block of the configuration parse tree
cfg_parserThe parser object
cfg_printerA configuration printer object. This is an abstract interface to a destination to which text can be printed by calling the function 'f'
cfg_repA configuration data representation
cfg_tuplefielddefA tuple field definition
cfg_typeA configuration object type definition
chacha_ctx
CHAR64LONG16
CK_AES_CBC_ENCRYPT_DATA_PARAMS
CK_AES_CTR_PARAMS
CK_ARIA_CBC_ENCRYPT_DATA_PARAMS
CK_ATTRIBUTE
CK_C_INITIALIZE_ARGS
CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS
CK_CAMELLIA_CTR_PARAMS
CK_CMS_SIG_PARAMS
CK_DATE
CK_DES_CBC_ENCRYPT_DATA_PARAMS
CK_ECDH1_DERIVE_PARAMS
CK_ECDH2_DERIVE_PARAMS
CK_ECMQV_DERIVE_PARAMS
CK_FUNCTION_LIST
CK_INFO
CK_KEA_DERIVE_PARAMS
CK_KEY_DERIVATION_STRING_DATA
CK_KEY_WRAP_SET_OAEP_PARAMS
CK_KIP_PARAMS
CK_MECHANISM
CK_MECHANISM_INFO
CK_OTP_PARAM
CK_OTP_PARAMS
CK_OTP_SIGNATURE_INFO
CK_PBE_PARAMS
CK_PKCS5_PBKD2_PARAMS
CK_RC2_CBC_PARAMS
CK_RC2_MAC_GENERAL_PARAMS
CK_RC5_CBC_PARAMS
CK_RC5_MAC_GENERAL_PARAMS
CK_RC5_PARAMS
CK_RSA_PKCS_OAEP_PARAMS
CK_RSA_PKCS_PSS_PARAMS
CK_SESSION_INFO
CK_SKIPJACK_PRIVATE_WRAP_PARAMS
CK_SKIPJACK_RELAYX_PARAMS
CK_SLOT_INFO
CK_SSL3_KEY_MAT_OUT
CK_SSL3_KEY_MAT_PARAMS
CK_SSL3_MASTER_KEY_DERIVE_PARAMS
CK_SSL3_RANDOM_DATA
CK_TLS_PRF_PARAMS
CK_TOKEN_INFO
CK_VERSION
CK_WTLS_KEY_MAT_OUT
CK_WTLS_KEY_MAT_PARAMS
CK_WTLS_MASTER_KEY_DERIVE_PARAMS
CK_WTLS_PRF_PARAMS
CK_WTLS_RANDOM_DATA
CK_X9_42_DH1_DERIVE_PARAMS
CK_X9_42_DH2_DERIVE_PARAMS
CK_X9_42_MQV_DERIVE_PARAMS
client_additionalctx
completion_t
compound_rrstream
conditional_delete_ctx_tContext structure for delete_if()
ContextFlags
controlconnection
controllistener
data_holder
dbentry
dig_lookupThe dig_lookup structure
dig_queryThe dig_query structure
dig_searchlist
dig_server
dispportentryA port table entry. We remember every port we first open in a table with a reference counter so that we can 'reuse' the same port (with different destination addresses) using the SO_REUSEADDR socket option
dispsocket
dns_acache
dns_acacheentry
dns_acachestats
dns_acl
dns_aclelement
dns_aclenv
dns_aclipprefix
dns_adbaddrinfoThe answers to queries come back as a list of these
dns_adbentryAn address entry. It holds quite a bit of information about addresses, including edns state (in "flags"), rtt, and of course the address of the host
dns_adbfetchThe adbfetch structure
dns_adbfindRepresents a lookup for a single name
dns_adblameinfoThis is a small widget that holds qname-specific information about an address. Currently limited to lameness, but could just as easily be extended to other types of information about zones
dns_adbnameDns_adbname structure
dns_adbnamehookThis is a small widget that dangles off a dns_adbname_t. It contains a pointer to the address information about this host, and a link to the next namehook that will contain the next address this host has
dns_asyncloadHold state for an asynchronous load
dns_badcache
dns_bcentry
dns_byaddr
dns_byaddreventA 'dns_byaddrevent_t' is returned when a byaddr completes. The sender field will be set to the byaddr that completed. If 'result' is ISC_R_SUCCESS, then 'names' will contain a list of names associated with the address. The recipient of the event must not change the list and must not refer to any of the name data after the event is freed
dns_cacheThe actual cache object
dns_clientDNS client object
dns_client_updaterec_t
dns_clientinfo
dns_clientinfomethods
dns_clientreqeventA dns_clientreqevent_t is sent when a DNS request is completed by a client. 'result' stores the result code of the entire transaction. If the transaction is successfully completed but the response packet cannot be parsed, 'result' will store the result code of dns_message_parse(). If the response packet is received, 'rmessage' will contain the response message, whether it is successfully parsed or not
dns_clientreseventA dns_clientresevent_t is sent when name resolution performed by a client completes. 'result' stores the result code of the entire resolution procedure. 'vresult' specifically stores the result code of DNSSEC validation if it is performed. When name resolution successfully completes, 'answerlist' is typically non empty, containing answer names along with RRsets. It is the receiver's responsibility to free this list by calling dns_client_freeresanswer() before freeing the event structure
dns_clientupdateeventA dns_clientupdateevent_t is sent when dynamic update performed by a client completes. 'result' stores the result code of the entire update procedure. 'state' specifies the status of the update procedure when this event is sent. This can be used as a hint by the receiver to determine whether the update attempt was ever made. In particular, if the state is dns_clientupdatestate_prepare, the receiver can be sure that the requested update was not applied
dns_compress
dns_compressnode
dns_dbThis structure is actually just the common prefix of a DNS db implementation's version of a dns_db_t
dns_dbimplementation
dns_dbiteratorThis structure is actually just the common prefix of a DNS db implementation's version of a dns_dbiterator_t
dns_dbiteratormethods
dns_dbmethods
dns_dbtable
dns_decompress
dns_diff
dns_difftuple
dns_dispatch
dns_dispatcheventThis event is sent to a task when a response comes in. No part of this structure should ever be modified by the caller, other than parts of the buffer. The holy parts of the buffer are the base and size of the buffer. All other parts of the buffer may be used. On event delivery the used region contains the packet
dns_dispatchmgr
dns_dispatchsetThis is a set of one or more dispatches which can be retrieved round-robin fashion
dns_dispentry
dns_dlzdbAn instance of a DLZ driver
dns_dlzimplementationInformation about a DLZ driver
dns_dlzmethodsMethods supplied by a DLZ driver
dns_dns64
dns_dnsseckey
dns_dumpctx
dns_ecdbThe 'ephemeral' cache DB (ecdb) implementation. An ecdb just provides temporary storage for ongoing name resolution with the common DB interfaces. It actually doesn't cache anything. The implementation expects any stored data is released within a short period, and does not care about the scalability in terms of the number of nodes
dns_ecdbnode
dns_ednsopt
dns_element
dns_fetch
dns_fetcheventA dns_fetchevent_t is sent when a 'fetch' completes. Any of 'db', 'node', 'rdataset', and 'sigrdataset' may be bound. It is the receiver's responsibility to detach before freeing the event
dns_fixedname
dns_forwardHold forward state
dns_forwarder
dns_forwarders
dns_fwdtable
dns_geoip_databases
dns_geoip_elem
dns_incctx
dns_includeReference to an include file encountered during loading
dns_ioHold IO request state
dns_iptable
dns_journal
dns_keyfetch
dns_keynode
dns_keytable
dns_loadHold load state
dns_lookup
dns_lookupeventA 'dns_lookupevent_t' is returned when a lookup completes. The sender field will be set to the lookup that completed. If 'result' is ISC_R_SUCCESS, then 'names' will contain a list of names associated with the address. The recipient of the event must not change the list and must not refer to any of the name data after the event is freed
dns_master_style
dns_masterrawheader
dns_masterrawrdataset_t
dns_message
dns_msgblock"helper" type, which consists of a block of some type, and is linkable. For it to work, sizeof(dns_msgblock_t) must be a multiple of the pointer size, or the allocated elements will not be aligned correctly
dns_nameClients are strongly discouraged from using this type directly, with the exception of the 'link' and 'list' fields which may be used directly for whatever purpose the client desires
dns_notifyHold notify state
dns_nsec3chain
dns_nta
dns_ntatable
dns_order
dns_order_ent
dns_peer
dns_peerlist
dns_portlist
dns_rbt
dns_rbtnode
dns_rbtnodechain
dns_rdataAn 'rdata' is a handle to a binary region. The handle has an RR class and type, and the data in the binary region is in the format of the given class and type
dns_rdata_textctxContext structure for the totext_ functions. Contains formatting options for rdata-to-text conversion
dns_rdatacallbacks
dns_rdatalistClients may use this type directly
dns_rdatasetDirect use of this structure by clients is strongly discouraged, except for the 'link' field which may be used however the client wishes. The 'private', 'current', and 'index' fields MUST NOT be changed by clients. rdataset implementations may change any of the fields
dns_rdatasetiterThis structure is actually just the common prefix of a DNS db implementation's version of a dns_rdatasetiter_t
dns_rdatasetitermethods
dns_rdatasetmethods
dns_request
dns_requestevent
dns_resolver
dns_rpz_addr_zbits
dns_rpz_cidr_key_t
dns_rpz_cidr_node
dns_rpz_nm_data
dns_rpz_nm_zbits
dns_rpz_st_t
dns_rpz_triggers
dns_rpz_zone
dns_rpz_zones
dns_rriteratorA dns_rriterator_t is an iterator that iterates over an entire database, returning one RR at a time, in some arbitrary order
dns_rrl
dns_rrl_block
dns_rrl_entry
dns_rrl_hash
dns_rrl_key
dns_rrl_qname_buf
dns_rrl_rate
dns_sdb
dns_sdballnodes
dns_sdbimplementation
dns_sdblookup
dns_sdbmethods
dns_sdlz_db
dns_sdlzallnodes
dns_sdlzimplementation
dns_sdlzlookup
dns_sdlzmethods
dns_signingHold state for when we are signing a zone with a new DNSKEY as result of an update
dns_ssurule
dns_ssutable
dns_stats
dns_stubDns_stub holds state while performing a 'stub' transfer. 'db' is the zone's 'db' or a new one if this is the initial transfer
dns_tcpmsg
dns_tkeyctx
dns_totext_ctxContext structure for a masterfile dump in progress
dns_tsecDNS Transaction Security object. We assume this is not shared by multiple threads, and so the structure does not contain a lock
dns_tsig_keyring
dns_tsigkey
dns_unreachable
dns_update_log_t
dns_update_state
dns_valarg_t
dns_validatorA validator object represents a validation in progress
dns_validatoreventA dns_validatorevent_t is sent when a 'validation' completes
dns_view
dns_xfrin_ctxIncoming zone transfer context
dns_zonemgr
dns_zt
dsn_c_pvt_sfnt
dst_context
dst_func
dst_hmacmd5_key
dst_hmacsha1_key
dst_hmacsha224_key
dst_hmacsha256_key
dst_hmacsha384_key
dst_hmacsha512_key
dst_keyDST Key Structure
dst_private
dst_private_element
dumpcontext
ecdb_rdatasetiter
element
elt
entropysource
fctxbucket
fetchctx
file_header
flag_def
flagtext
foreach_node_rr_ctx_tInternal context struct for foreach_node_rr()
hash_test_key
hash_testcase
hashlist
hex_decode_ctx_tState of a hex decoding process in progress
in6_addr
in6_pktinfoIPv6 packet info
inputsource
intervaltable
isc__appctx
isc__magic_t
isc__memmethods
isc__mempool
isc__mempoolmethods
isc__socket
isc__socketmgr
isc__task
isc__taskmethods
isc__timer
isc__timermethods
isc__timermgr
isc__timermgrmethods
isc_appctxThis structure is actually just the common prefix of an application context implementation's version of an isc_appctx_t
isc_appmethodsApp module methods. Only app driver implementations use this structure. Other clients should use the top-level interfaces (i.e., isc_app_xxx functions). magic must be ISCAPI_APPMETHODS_MAGIC
isc_backtrace_symmap
isc_buffer
isc_cbsource_t
isc_constregion
isc_consttextregion
isc_counter
isc_dirDirectory
isc_direntryDirectory Entry
isc_entropy
isc_entropyfilesource_t
isc_entropypool_tEntropy Pool
isc_entropysamplesource_t
isc_entropysource
isc_entropyusocketsource_t
isc_eventThis structure is public because "subclassing" it may be useful when defining new event types
isc_hashIsc hash structure
isc_heapISC heap structure
isc_hmacmd5_t
isc_hmacsha1_t
isc_hmacsha224_t
isc_hmacsha256_t
isc_hmacsha384_t
isc_hmacsha512_t
isc_httpdHttp client
isc_httpdmgrLightweight socket manager for httpd output
isc_httpdurlHTTP urls. These are the URLs we manage, and the function to call to provide the data for it. We pass in the base url (so the same function can handle multiple requests), and a structure to fill in to return a result to the client. We also pass in a pointer to be filled in for the data cleanup function
isc_interfacePublic structure describing a network interface
isc_interfaceiterIterator structure
isc_intervalThe contents of this structure are private, and MUST NOT be accessed directly by callers
isc_keyboard_t
isc_lex
isc_lfsrThe members of this structure can be used by the application, but care needs to be taken to not change state once the lfsr is in operation
isc_log
isc_logcategoryUsed to name the categories used by a library
isc_logchannel
isc_logchannellist
isc_logconfig
isc_logdestinationPassed to isc_log_createchannel to define the attributes of either a stdio or a syslog log
isc_logfileThe isc_logfile structure is initialized as part of an isc_logdestination before calling isc_log_createchannel()
isc_logmessage
isc_logmoduleSimilar to isc_logcategory, but for all the modules a library defines
isc_md5_t
isc_memThis structure is actually just the common prefix of a memory context implementation's version of an isc_mem_t
isc_memmethodsIsc_mem_putanddetach() is a convenience function for use where you have a structure with an attached memory context
isc_mempoolThis is the common prefix of a memory pool context. The same note as that for the mem structure applies
isc_mempoolmethods
isc_msgcat
isc_netaddr
isc_ondestroy
isc_pool
isc_portsetInternal representation of portset. It's an array of 32-bit integers, each bit corresponding to a single port in the ascending order. For example, the second most significant bit of buf[0] corresponds to port 1
isc_prefix
isc_quotaIsc_quota structure
isc_radix_node
isc_radix_tree
isc_ratelimiter
isc_refcount
isc_region
isc_rng
isc_rwlock
isc_sha1_t
isc_sha256_t
isc_sha512_t
isc_sockaddr
isc_socketThis is the common prefix of a socket object. The same note as that for the socketmgr structure applies
isc_socket_connev
isc_socket_newconnev
isc_socketevent
isc_socketmethods
isc_socketmgrThis structure is actually just the common prefix of a socket manager object implementation's version of an isc_socketmgr_t
isc_socketmgrmethodsSocket and socket manager methods
isc_socketwait
isc_stats
isc_symvalueSymbol table value
isc_taskThis is the common prefix of a task object. The same note as that for the taskmgr structure applies
isc_taskmethods
isc_taskmgrThis structure is actually just the common prefix of a task manager object implementation's version of an isc_taskmgr_t
isc_taskmgrmethodsTask and task manager methods
isc_taskpool
isc_textregion
isc_timeThe contents of this structure are private, and MUST NOT be accessed directly by callers
isc_timerThis is the common prefix of a timer object. The same note as that for the timermgr structure applies
isc_timerevent
isc_timermethods_t
isc_timermgrThis structure is actually just the common prefix of a timer manager object implementation's version of an isc_timermgr_t
isc_timermgrmethods_tTimer and timer manager methods
isc_token
isc_tokenvalue_t
isccc_ccmsgISCCC Message Structure
isccc_dottedpairDotted pair structure
isccc_regionIscc region structure
isccc_sexprIscc_sexpr structure
isccc_symvalue
item
ixfr_rrstream
journal_header_t
journal_pos_tThe in-core representation of the journal header
journal_rawheader_tThe on-disk representation of the journal header. All numbers are stored in big-endian order
journal_rawpos_tOn-disk representation of a "pointer" to a journal entry. These are used in the journal header to locate the beginning and end of the journal, and in the journal index to locate other transactions
journal_rawrrhdr_tThe on-disk representation of the RR header. There is one of these at the beginning of each RR
journal_rawxhdr_tThe on-disk representation of the transaction header. There is one of these at the beginning of each transaction
journal_rrhdr_tThe in-core representation of the RR header
journal_xhdr_tThe in-core representation of the transaction header
keyalgorithms
keydone
keyflag
keyword_type_tA keyword-type definition, for things like "port <integer>"
MechTypeList
NegTokenInit
NegTokenResp
noqname
ns_cache
ns_cfgctxConfiguration context to retain for each view that allows new zones to be added at runtime
ns_clientNameserver client structure
ns_clientmgrNameserver client manager structure
ns_controls
ns_dbversionNameserver database version structure
ns_dispatch
ns_interfaceThe nameserver interface structure
ns_interfacemgrNameserver interface manager structure
ns_listenelt
ns_listenlist
ns_lwdclientLightweight Resolver Daemon Client
ns_lwdclientmgrLightweight daemon client manager
ns_lwresd
ns_lwreslistener
ns_lwsearchctxAn ns_lwsearchctx stores the state of search list during a lookup operation
ns_lwsearchlistAn ns_lwsearchlist_t holds a list of search path elements
ns_queryNameserver query structure
ns_serverName server state. Better here than in lots of separate global variables
ns_statschannel
ns_zoneload_tHolds state information for the initial zone loading process. Uses the isc_refcount structure to count the number of views with pending zone loads, dereferencing as each view finishes
nsec3_chain_fixed
nsec3_testcase_t
nsec3param
nsu_requestinfo
octet_string
oid
opcodedumparg
optionstable
parse_map
pk11_context
pk11_object
pk11_token
query
rankedaddress
rbt_testdata
rbtdb_changed
rbtdb_dbiterator
rbtdb_file_header
rbtdb_load_tLoad Context
rbtdb_nodelock_t
rbtdb_rdatasetiter
rbtdb_search_tSearch Context
rbtdb_version
rdatadumparg
rdatasetheader
reqargArgument of an internal event for synchronous DNS request
reqctxInternal state for a single DNS request
resargArgument of an internal event for synchronous name resolution
resctxInternal state for a single name resolution procedure
resulttable
rr
rrstream
rrstream_methods
rtype
sample_queue_tSample Queue
sdb_rdatasetiter
sdlz_rdatasetiter
secure_event
signer_event
signing_testcase_t
size_info
soa_rrstream
sockaddr_in6
sockaddr_storage
ssevent
ssu_check_t
state
stats
stats_dumparg
tbl
test_context_t
towire_sort
tried
update_event
updateargArgument of an internal event for synchronous name resolution
updatectxInternal state for a single dynamic update procedure
viewlistentry
xfrout_ctx_t
xrdata
zonediff_t
zonelistentry

Generated on Tue Apr 28 17:41:19 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha