xfrout.c File Reference

Outgoing AXFR and IXFR. More...

#include <config.h>
#include <isc/formatcheck.h>
#include <isc/mem.h>
#include <isc/timer.h>
#include <isc/print.h>
#include <isc/stats.h>
#include <isc/util.h>
#include <dns/db.h>
#include <dns/dbiterator.h>
#include <dns/dlz.h>
#include <dns/fixedname.h>
#include <dns/journal.h>
#include <dns/message.h>
#include <dns/peer.h>
#include <dns/rdataclass.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/rdatasetiter.h>
#include <dns/result.h>
#include <dns/rriterator.h>
#include <dns/soa.h>
#include <dns/stats.h>
#include <dns/timer.h>
#include <dns/tsig.h>
#include <dns/view.h>
#include <dns/zone.h>
#include <dns/zt.h>
#include <named/client.h>
#include <named/log.h>
#include <named/server.h>
#include <named/xfrout.h>

Go to the source code of this file.

Data Structures

struct  rrstream
struct  rrstream_methods
struct  ixfr_rrstream
struct  axfr_rrstream
struct  soa_rrstream
struct  compound_rrstream
struct  xfrout_ctx_t

Defines

#define XFROUT_COMMON_LOGARGS   ns_g_lctx, DNS_LOGCATEGORY_XFER_OUT, NS_LOGMODULE_XFER_OUT
#define XFROUT_PROTOCOL_LOGARGS   XFROUT_COMMON_LOGARGS, ISC_LOG_INFO
#define XFROUT_DEBUG_LOGARGS(n)   XFROUT_COMMON_LOGARGS, ISC_LOG_DEBUG(n)
#define XFROUT_RR_LOGARGS   XFROUT_COMMON_LOGARGS, XFROUT_RR_LOGLEVEL
#define XFROUT_RR_LOGLEVEL   ISC_LOG_DEBUG(8)
#define FAILC(code, msg)
 Fail unconditionally and log as a client error. The test against ISC_R_SUCCESS is there to keep the Solaris compiler from complaining about "end-of-loop code not reached".
#define FAILQ(code, msg, question, rdclass)
#define CHECK(op)

Typedefs

typedef struct rrstream_methods rrstream_methods_t
typedef struct rrstream rrstream_t
typedef struct ixfr_rrstream ixfr_rrstream_t
typedef struct axfr_rrstream axfr_rrstream_t
typedef struct soa_rrstream soa_rrstream_t
typedef struct compound_rrstream compound_rrstream_t

Functions

static void inc_stats (dns_zone_t *zone, isc_statscounter_t counter)
static void log_rr (dns_name_t *name, dns_rdata_t *rdata, isc_uint32_t ttl)
 Log an RR (for debugging).
static void rrstream_noop_pause (rrstream_t *rs)
static void ixfr_rrstream_destroy (rrstream_t **sp)
static isc_result_t ixfr_rrstream_create (isc_mem_t *mctx, const char *journal_filename, isc_uint32_t begin_serial, isc_uint32_t end_serial, rrstream_t **sp)
static isc_result_t ixfr_rrstream_first (rrstream_t *rs)
static isc_result_t ixfr_rrstream_next (rrstream_t *rs)
static void ixfr_rrstream_current (rrstream_t *rs, dns_name_t **name, isc_uint32_t *ttl, dns_rdata_t **rdata)
static void axfr_rrstream_destroy (rrstream_t **rsp)
static isc_result_t axfr_rrstream_create (isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *ver, rrstream_t **sp)
static isc_result_t axfr_rrstream_first (rrstream_t *rs)
static isc_result_t axfr_rrstream_next (rrstream_t *rs)
static void axfr_rrstream_current (rrstream_t *rs, dns_name_t **name, isc_uint32_t *ttl, dns_rdata_t **rdata)
static void axfr_rrstream_pause (rrstream_t *rs)
static void soa_rrstream_destroy (rrstream_t **rsp)
static isc_result_t soa_rrstream_create (isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *ver, rrstream_t **sp)
static isc_result_t soa_rrstream_first (rrstream_t *rs)
static isc_result_t soa_rrstream_next (rrstream_t *rs)
static void soa_rrstream_current (rrstream_t *rs, dns_name_t **name, isc_uint32_t *ttl, dns_rdata_t **rdata)
static void compound_rrstream_destroy (rrstream_t **rsp)
static isc_result_t compound_rrstream_next (rrstream_t *rs)
static isc_result_t compound_rrstream_create (isc_mem_t *mctx, rrstream_t **soa_stream, rrstream_t **data_stream, rrstream_t **sp)
static isc_result_t compound_rrstream_first (rrstream_t *rs)
static void compound_rrstream_current (rrstream_t *rs, dns_name_t **name, isc_uint32_t *ttl, dns_rdata_t **rdata)
static void compound_rrstream_pause (rrstream_t *rs)
static isc_result_t xfrout_ctx_create (isc_mem_t *mctx, ns_client_t *client, unsigned int id, dns_name_t *qname, dns_rdatatype_t qtype, dns_rdataclass_t qclass, dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, isc_quota_t *quota, rrstream_t *stream, dns_tsigkey_t *tsigkey, isc_buffer_t *lasttsig, unsigned int maxtime, unsigned int idletime, isc_boolean_t many_answers, xfrout_ctx_t **xfrp)
static void sendstream (xfrout_ctx_t *xfr)
static void xfrout_senddone (isc_task_t *task, isc_event_t *event)
static void xfrout_fail (xfrout_ctx_t *xfr, isc_result_t result, const char *msg)
static void xfrout_maybe_destroy (xfrout_ctx_t *xfr)
static void xfrout_ctx_destroy (xfrout_ctx_t **xfrp)
static void xfrout_client_shutdown (void *arg, isc_result_t result)
static void xfrout_log1 (ns_client_t *client, dns_name_t *zonename, dns_rdataclass_t rdclass, int level, const char *fmt,...) ISC_FORMAT_PRINTF(5
static void static void xfrout_log (xfrout_ctx_t *xfr, int level, const char *fmt,...) ISC_FORMAT_PRINTF(3
static void static void void ns_xfr_start (ns_client_t *client, dns_rdatatype_t reqtype)
static void xfrout_logv (ns_client_t *client, dns_name_t *zonename, dns_rdataclass_t rdclass, int level, const char *fmt, va_list ap) ISC_FORMAT_PRINTF(5

Variables

static rrstream_methods_t ixfr_rrstream_methods
static rrstream_methods_t axfr_rrstream_methods
static rrstream_methods_t soa_rrstream_methods
static rrstream_methods_t compound_rrstream_methods


Detailed Description

Outgoing AXFR and IXFR.

Definition in file xfrout.c.


Define Documentation

#define XFROUT_COMMON_LOGARGS   ns_g_lctx, DNS_LOGCATEGORY_XFER_OUT, NS_LOGMODULE_XFER_OUT

Definition at line 65 of file xfrout.c.

Referenced by ns_xfr_start().

#define XFROUT_PROTOCOL_LOGARGS   XFROUT_COMMON_LOGARGS, ISC_LOG_INFO

Definition at line 68 of file xfrout.c.

#define XFROUT_DEBUG_LOGARGS (  )     XFROUT_COMMON_LOGARGS, ISC_LOG_DEBUG(n)

Definition at line 71 of file xfrout.c.

#define XFROUT_RR_LOGARGS   XFROUT_COMMON_LOGARGS, XFROUT_RR_LOGLEVEL

Definition at line 74 of file xfrout.c.

Referenced by log_rr().

#define XFROUT_RR_LOGLEVEL   ISC_LOG_DEBUG(8)

Definition at line 77 of file xfrout.c.

Referenced by sendstream().

#define FAILC ( code,
msg   ) 

Value:

do {                                                    \
                result = (code);                                \
                ns_client_log(client, DNS_LOGCATEGORY_XFER_OUT, \
                           NS_LOGMODULE_XFER_OUT, ISC_LOG_INFO, \
                           "bad zone transfer request: %s (%s)", \
                           msg, isc_result_totext(code));       \
                if (result != ISC_R_SUCCESS) goto failure;      \
        } while (0)
Fail unconditionally and log as a client error. The test against ISC_R_SUCCESS is there to keep the Solaris compiler from complaining about "end-of-loop code not reached".

Definition at line 84 of file xfrout.c.

#define FAILQ ( code,
msg,
question,
rdclass   ) 

Value:

do {                                                    \
                char _buf1[DNS_NAME_FORMATSIZE];                \
                char _buf2[DNS_RDATACLASS_FORMATSIZE];          \
                result = (code);                                \
                dns_name_format(question, _buf1, sizeof(_buf1));  \
                dns_rdataclass_format(rdclass, _buf2, sizeof(_buf2)); \
                ns_client_log(client, DNS_LOGCATEGORY_XFER_OUT, \
                           NS_LOGMODULE_XFER_OUT, ISC_LOG_INFO, \
                           "bad zone transfer request: '%s/%s': %s (%s)", \
                           _buf1, _buf2, msg, isc_result_totext(code)); \
                if (result != ISC_R_SUCCESS) goto failure;      \
        } while (0)

Definition at line 94 of file xfrout.c.

Referenced by ns_xfr_start().

#define CHECK ( op   ) 

Value:

do { result = (op);                                     \
                if (result != ISC_R_SUCCESS) goto failure;      \
        } while (0)

Definition at line 108 of file xfrout.c.


Typedef Documentation

typedef struct rrstream_methods rrstream_methods_t

Definition at line 184 of file xfrout.c.

typedef struct rrstream rrstream_t

typedef struct ixfr_rrstream ixfr_rrstream_t

typedef struct axfr_rrstream axfr_rrstream_t

typedef struct soa_rrstream soa_rrstream_t

typedef struct compound_rrstream compound_rrstream_t


Function Documentation

static void inc_stats ( dns_zone_t zone,
isc_statscounter_t  counter 
) [inline, static]

Definition at line 116 of file xfrout.c.

References dns_zone_getrequeststats(), and isc_stats_increment().

static void log_rr ( dns_name_t name,
dns_rdata_t rdata,
isc_uint32_t  ttl 
) [static]

Log an RR (for debugging).

Definition at line 130 of file xfrout.c.

References isc_buffer::base, dns_rdatalist::covers, dns_rdata_clone(), dns_rdata_covers(), dns_rdata_init(), DNS_RDATA_INIT, dns_rdatalist_init(), dns_rdatalist_tordataset(), dns_rdataset_init(), dns_rdataset_totext(), INSIST, isc_buffer_base, isc_buffer_init, isc_buffer_usedlength, ISC_FALSE, ISC_LIST_APPEND, isc_log_write(), ISC_R_SUCCESS, dns_rdata::rdclass, dns_rdatalist::rdclass, RUNTIME_CHECK, dns_rdatalist::ttl, dns_rdata::type, dns_rdatalist::type, isc_buffer::used, and XFROUT_RR_LOGARGS.

Referenced by sendstream().

static void rrstream_noop_pause ( rrstream_t rs  )  [static]

Definition at line 203 of file xfrout.c.

References UNUSED.

static void ixfr_rrstream_destroy ( rrstream_t **  sp  )  [static]

Definition at line 288 of file xfrout.c.

References ixfr_rrstream::common, dns_journal_destroy(), isc_mem_putanddetach, ixfr_rrstream::journal, rrstream::mctx, and s.

Referenced by ixfr_rrstream_create().

static isc_result_t ixfr_rrstream_create ( isc_mem_t mctx,
const char *  journal_filename,
isc_uint32_t  begin_serial,
isc_uint32_t  end_serial,
rrstream_t **  sp 
) [static]

Definition at line 235 of file xfrout.c.

References CHECK, ixfr_rrstream::common, dns_journal_iter_init(), dns_journal_open(), DNS_JOURNAL_READ, INSIST, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, ixfr_rrstream_destroy(), ixfr_rrstream::journal, rrstream::mctx, rrstream::methods, and s.

Referenced by ns_xfr_start().

static isc_result_t ixfr_rrstream_first ( rrstream_t rs  )  [static]

Definition at line 267 of file xfrout.c.

References dns_journal_first_rr(), ixfr_rrstream::journal, and s.

static isc_result_t ixfr_rrstream_next ( rrstream_t rs  )  [static]

Definition at line 273 of file xfrout.c.

References dns_journal_next_rr(), ixfr_rrstream::journal, and s.

static void ixfr_rrstream_current ( rrstream_t rs,
dns_name_t **  name,
isc_uint32_t ttl,
dns_rdata_t **  rdata 
) [static]

Definition at line 279 of file xfrout.c.

References dns_journal_current_rr(), ixfr_rrstream::journal, and s.

static void axfr_rrstream_destroy ( rrstream_t **  rsp  )  [static]

Definition at line 413 of file xfrout.c.

References axfr_rrstream::common, dns_rriterator_destroy(), isc_mem_putanddetach, axfr_rrstream::it, axfr_rrstream::it_valid, rrstream::mctx, and s.

Referenced by axfr_rrstream_create().

static isc_result_t axfr_rrstream_create ( isc_mem_t mctx,
dns_db_t db,
dns_dbversion_t ver,
rrstream_t **  sp 
) [static]

Definition at line 327 of file xfrout.c.

References axfr_rrstream_destroy(), CHECK, axfr_rrstream::common, dns_rriterator_init(), INSIST, ISC_FALSE, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, ISC_TRUE, axfr_rrstream::it, axfr_rrstream::it_valid, rrstream::mctx, rrstream::methods, and s.

Referenced by ns_xfr_start().

static isc_result_t axfr_rrstream_first ( rrstream_t rs  )  [static]

Definition at line 355 of file xfrout.c.

References dns_rriterator_current(), dns_rriterator_first(), dns_rriterator_next(), ISC_R_SUCCESS, axfr_rrstream::it, s, and dns_rdata::type.

static isc_result_t axfr_rrstream_next ( rrstream_t rs  )  [static]

Definition at line 378 of file xfrout.c.

References dns_rriterator_current(), dns_rriterator_next(), ISC_R_SUCCESS, axfr_rrstream::it, s, and dns_rdata::type.

static void axfr_rrstream_current ( rrstream_t rs,
dns_name_t **  name,
isc_uint32_t ttl,
dns_rdata_t **  rdata 
) [static]

Definition at line 399 of file xfrout.c.

References dns_rriterator_current(), axfr_rrstream::it, and s.

static void axfr_rrstream_pause ( rrstream_t rs  )  [static]

Definition at line 407 of file xfrout.c.

References dns_rriterator_pause(), axfr_rrstream::it, and s.

static void soa_rrstream_destroy ( rrstream_t **  rsp  )  [static]

Definition at line 498 of file xfrout.c.

References soa_rrstream::common, dns_difftuple_free(), isc_mem_putanddetach, rrstream::mctx, s, and soa_rrstream::soa_tuple.

Referenced by soa_rrstream_create().

static isc_result_t soa_rrstream_create ( isc_mem_t mctx,
dns_db_t db,
dns_dbversion_t ver,
rrstream_t **  sp 
) [static]

Definition at line 448 of file xfrout.c.

References CHECK, soa_rrstream::common, dns_db_createsoatuple(), DNS_DIFFOP_EXISTS, INSIST, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, rrstream::mctx, rrstream::methods, s, soa_rrstream_destroy(), and soa_rrstream::soa_tuple.

Referenced by ns_xfr_start().

static isc_result_t soa_rrstream_first ( rrstream_t rs  )  [static]

Definition at line 476 of file xfrout.c.

References ISC_R_SUCCESS, and UNUSED.

static isc_result_t soa_rrstream_next ( rrstream_t rs  )  [static]

Definition at line 482 of file xfrout.c.

References ISC_R_NOMORE, and UNUSED.

static void soa_rrstream_current ( rrstream_t rs,
dns_name_t **  name,
isc_uint32_t ttl,
dns_rdata_t **  rdata 
) [static]

Definition at line 488 of file xfrout.c.

References dns_difftuple::name, dns_difftuple::rdata, s, soa_rrstream::soa_tuple, and dns_difftuple::ttl.

static void compound_rrstream_destroy ( rrstream_t **  rsp  )  [static]

Definition at line 635 of file xfrout.c.

References compound_rrstream::common, compound_rrstream::components, rrstream_methods::destroy, isc_mem_putanddetach, rrstream::mctx, rrstream::methods, and s.

static isc_result_t compound_rrstream_next ( rrstream_t rs  )  [static]

Definition at line 593 of file xfrout.c.

References compound_rrstream::components, rrstream_methods::first, ISC_R_NOMORE, rrstream::methods, rrstream_methods::next, rrstream_methods::pause, compound_rrstream::result, s, and compound_rrstream::state.

static isc_result_t compound_rrstream_create ( isc_mem_t mctx,
rrstream_t **  soa_stream,
rrstream_t **  data_stream,
rrstream_t **  sp 
) [static]

Definition at line 556 of file xfrout.c.

References compound_rrstream::common, compound_rrstream::components, INSIST, isc_mem_attach(), isc_mem_get, ISC_R_FAILURE, ISC_R_NOMEMORY, ISC_R_SUCCESS, rrstream::mctx, rrstream::methods, compound_rrstream::result, s, and compound_rrstream::state.

Referenced by ns_xfr_start().

static isc_result_t compound_rrstream_first ( rrstream_t rs  )  [static]

Definition at line 582 of file xfrout.c.

References compound_rrstream::components, rrstream_methods::first, ISC_R_NOMORE, rrstream::methods, compound_rrstream::result, s, and compound_rrstream::state.

static void compound_rrstream_current ( rrstream_t rs,
dns_name_t **  name,
isc_uint32_t ttl,
dns_rdata_t **  rdata 
) [static]

Definition at line 613 of file xfrout.c.

References compound_rrstream::components, rrstream_methods::current, INSIST, ISC_R_SUCCESS, rrstream::methods, compound_rrstream::result, s, and compound_rrstream::state.

static void compound_rrstream_pause ( rrstream_t rs  )  [static]

Definition at line 625 of file xfrout.c.

References compound_rrstream::components, INSIST, rrstream::methods, rrstream_methods::pause, s, and compound_rrstream::state.

static isc_result_t xfrout_ctx_create ( isc_mem_t mctx,
ns_client_t client,
unsigned int  id,
dns_name_t qname,
dns_rdatatype_t  qtype,
dns_rdataclass_t  qclass,
dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
isc_quota_t quota,
rrstream_t stream,
dns_tsigkey_t tsigkey,
isc_buffer_t lasttsig,
unsigned int  maxtime,
unsigned int  idletime,
isc_boolean_t  many_answers,
xfrout_ctx_t **  xfrp 
) [static]

Definition at line 1145 of file xfrout.c.

References isc_buffer::base, xfrout_ctx_t::buf, CHECK, xfrout_ctx_t::client, xfrout_ctx_t::db, dns_db_attach(), dns_db_attachversion(), dns_timer_setidle(), dns_zone_attach(), xfrout_ctx_t::end_of_stream, xfrout_ctx_t::id, INSIST, isc_buffer_init, ISC_FALSE, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, xfrout_ctx_t::lasttsig, isc_buffer::length, xfrout_ctx_t::many_answers, xfrout_ctx_t::mctx, xfrout_ctx_t::mnemonic, xfrout_ctx_t::nmsg, ns_client_attach(), xfrout_ctx_t::qclass, xfrout_ctx_t::qname, xfrout_ctx_t::qtype, xfrout_ctx_t::quota, xfrout_ctx_t::sends, ns_client::shutdown, ns_client::shutdown_arg, xfrout_ctx_t::shuttingdown, xfrout_ctx_t::stream, ns_client::timer, xfrout_ctx_t::tsigkey, xfrout_ctx_t::txbuf, xfrout_ctx_t::txlenbuf, xfrout_ctx_t::txmem, xfrout_ctx_t::txmemlen, xfrout_ctx_t::ver, xfrout_client_shutdown(), xfrout_ctx_destroy(), and xfrout_ctx_t::zone.

Referenced by ns_xfr_start().

static void sendstream ( xfrout_ctx_t xfr  )  [static]

Definition at line 1263 of file xfrout.c.

References ns_client::attributes, isc_buffer::base, isc_region::base, xfrout_ctx_t::buf, CHECK, xfrout_ctx_t::client, dns_rdatalist::covers, rrstream_methods::current, dns_rdata::data, dns_compress_init(), dns_compress_invalidate(), dns_compress_setsensitive(), dns_message_addname(), dns_message_create(), dns_message_destroy(), dns_message_getquerytsig(), dns_message_gettempname(), dns_message_gettemprdata(), dns_message_gettemprdatalist(), dns_message_gettemprdataset(), DNS_MESSAGE_INTENTRENDER, dns_message_puttempname(), dns_message_puttemprdata(), dns_message_puttemprdatalist(), dns_message_puttemprdataset(), dns_message_renderbegin(), dns_message_renderend(), dns_message_rendersection(), dns_message_reply(), dns_message_setopt(), dns_message_setquerytsig(), dns_message_settsigkey(), DNS_MESSAGEFLAG_AA, DNS_MESSAGEFLAG_QR, DNS_MESSAGEFLAG_RA, dns_name_fromregion(), dns_name_init(), dns_rcode_noerror, dns_rdata_covers(), dns_rdata_fromregion(), dns_rdata_init(), dns_rdatalist_tordataset(), dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_makequestion(), DNS_SECTION_ANSWER, DNS_SECTION_QUESTION, xfrout_ctx_t::end_of_stream, dns_message::flags, xfrout_ctx_t::id, dns_message::id, INSIST, isc_buffer_add, isc_buffer_availableregion, isc_buffer_clear, isc_buffer_free(), isc_buffer_putmem, isc_buffer_putuint16, isc_buffer_usedregion, ISC_FALSE, ISC_LIST_APPEND, ISC_LIST_INIT, ISC_LIST_UNLINK, ISC_LOG_DEBUG, ISC_LOG_WARNING, isc_log_wouldlog(), ISC_R_NOMORE, ISC_R_NOSPACE, ISC_R_SUCCESS, isc_socket_send(), ISC_TRUE, xfrout_ctx_t::lasttsig, dns_rdata::length, dns_name::length, isc_region::length, log_rr(), xfrout_ctx_t::many_answers, xfrout_ctx_t::mctx, ns_client::message, rrstream::methods, name, dns_name::ndata, rrstream_methods::next, xfrout_ctx_t::nmsg, ns_client_addopt(), ns_client_send(), NS_CLIENTATTR_HAVEEXPIRE, NS_CLIENTATTR_RA, NS_CLIENTATTR_TCP, NS_CLIENTATTR_WANTNSID, NS_CLIENTATTR_WANTOPT, rrstream_methods::pause, xfrout_ctx_t::qname, xfrout_ctx_t::qtype, r, dns_message::rcode, dns_rdatalist::rdclass, dns_rdata::rdclass, dns_message::rdclass, dns_message::reserved, xfrout_ctx_t::sends, xfrout_ctx_t::stream, ns_client::task, dns_message::tcp_continuation, ns_client::tcpsocket, xfrout_ctx_t::tsigkey, dns_rdatalist::ttl, ttl, xfrout_ctx_t::txbuf, xfrout_ctx_t::txlenbuf, dns_rdatalist::type, dns_rdata::type, xfrout_ctx_destroy(), xfrout_fail(), xfrout_log(), XFROUT_RR_LOGLEVEL, and xfrout_senddone().

Referenced by ns_xfr_start(), and xfrout_senddone().

static void xfrout_senddone ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 1599 of file xfrout.c.

References xfrout_ctx_t::client, dns_nsstatscounter_xfrdone, xfrout_ctx_t::end_of_stream, inc_stats(), INSIST, isc_event_free(), ISC_FALSE, ISC_LOG_INFO, ISC_R_SUCCESS, ISC_SOCKEVENT_SENDDONE, isc_timer_touch(), ISC_TRUE, xfrout_ctx_t::mnemonic, ns_client_next(), isc_socketevent::result, xfrout_ctx_t::sends, sendstream(), xfrout_ctx_t::shuttingdown, ns_client::timer, UNUSED, xfrout_ctx_destroy(), xfrout_fail(), xfrout_log(), xfrout_maybe_destroy(), and xfrout_ctx_t::zone.

Referenced by sendstream().

static void xfrout_fail ( xfrout_ctx_t xfr,
isc_result_t  result,
const char *  msg 
) [static]

Definition at line 1629 of file xfrout.c.

References ISC_LOG_ERROR, isc_result_totext(), ISC_TRUE, xfrout_ctx_t::shuttingdown, xfrout_log(), and xfrout_maybe_destroy().

Referenced by ns_xfr_start(), sendstream(), xfrout_client_shutdown(), and xfrout_senddone().

static void xfrout_maybe_destroy ( xfrout_ctx_t xfr  )  [static]

Definition at line 1637 of file xfrout.c.

References xfrout_ctx_t::client, INSIST, ISC_R_CANCELED, ISC_SOCKCANCEL_SEND, isc_socket_cancel(), ISC_TRUE, ns_client_next(), xfrout_ctx_t::sends, xfrout_ctx_t::shuttingdown, ns_client::task, ns_client::tcpsocket, and xfrout_ctx_destroy().

Referenced by xfrout_fail(), and xfrout_senddone().

static void xfrout_ctx_destroy ( xfrout_ctx_t **  xfrp  )  [static]

Definition at line 1560 of file xfrout.c.

References isc_buffer::base, xfrout_ctx_t::buf, xfrout_ctx_t::client, xfrout_ctx_t::db, rrstream_methods::destroy, dns_db_closeversion(), dns_db_detach(), dns_zone_detach(), INSIST, isc_buffer_free(), ISC_FALSE, isc_mem_put, isc_mem_putanddetach, isc_quota_detach(), xfrout_ctx_t::lasttsig, isc_buffer::length, xfrout_ctx_t::mctx, rrstream::methods, ns_client_attach(), ns_client_detach(), xfrout_ctx_t::quota, xfrout_ctx_t::sends, ns_client::shutdown, ns_client::shutdown_arg, xfrout_ctx_t::stream, xfrout_ctx_t::txmem, xfrout_ctx_t::txmemlen, xfrout_ctx_t::ver, and xfrout_ctx_t::zone.

Referenced by sendstream(), xfrout_ctx_create(), xfrout_maybe_destroy(), and xfrout_senddone().

static void xfrout_client_shutdown ( void *  arg,
isc_result_t  result 
) [static]

Definition at line 1653 of file xfrout.c.

References xfrout_fail().

Referenced by xfrout_ctx_create().

static void xfrout_log1 ( ns_client_t client,
dns_name_t zonename,
dns_rdataclass_t  rdclass,
int  level,
const char *  fmt,
  ... 
) [static]

Definition at line 1688 of file xfrout.c.

References xfrout_logv().

Referenced by ns_xfr_start().

static void xfrout_log ( xfrout_ctx_t xfr,
int  level,
const char *  fmt,
  ... 
) [static]

Definition at line 1700 of file xfrout.c.

References xfrout_ctx_t::client, xfrout_ctx_t::qclass, xfrout_ctx_t::qname, and xfrout_logv().

Referenced by sendstream(), xfrout_fail(), and xfrout_senddone().

static void static void void ns_xfr_start ( ns_client_t client,
dns_rdatatype_t  reqtype 
)

Definition at line 727 of file xfrout.c.

References axfr_rrstream_create(), CHECK, compound_rrstream_create(), rrstream_methods::destroy, dns_db_closeversion(), dns_db_createsoatuple(), dns_db_currentversion(), dns_db_detach(), DNS_DIFFOP_EXISTS, dns_difftuple_free(), dns_dlzallowzonexfr(), DNS_LOGCATEGORY_SECURITY, DNS_LOGCATEGORY_XFER_OUT, dns_many_answers, dns_message_currentname(), dns_message_firstname(), dns_message_getquerytsig(), dns_message_gettsigkey(), dns_message_nextname(), dns_name_equal(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_nsstatscounter_xfrrej, dns_peer_getprovideixfr(), dns_peer_gettransferformat(), dns_peerlist_peerbyaddr(), DNS_R_FORMERR, DNS_R_NOTAUTH, DNS_R_REFUSED, DNS_RDATA_INIT, dns_rdataclass_format(), DNS_RDATACLASS_FORMATSIZE, dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), DNS_SECTION_AUTHORITY, DNS_SECTION_QUESTION, DNS_SERIAL_GE, dns_soa_getserial(), dns_zone_detach(), dns_zone_dlz, dns_zone_getdb(), dns_zone_getexpiretime(), dns_zone_getidleout(), dns_zone_getjournal(), dns_zone_getmaxxfrout(), dns_zone_getraw(), dns_zone_gettype(), dns_zone_getxfracl(), dns_zone_master, dns_zone_slave, dns_zt_find(), FAILC, FAILQ, rrstream_methods::first, dns_message::id, inc_stats(), INSIST, ISC_FALSE, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_LOG_WARNING, isc_log_write(), isc_netaddr_fromsockaddr(), isc_quota_attach(), isc_quota_detach(), ISC_R_NOMORE, ISC_R_NOPERM, ISC_R_NOTFOUND, ISC_R_RANGE, ISC_R_SUCCESS, isc_result_totext(), isc_time_seconds(), ISC_TRUE, ixfr_rrstream_create(), mctx, rrstream::methods, xfrout_ctx_t::mnemonic, dns_tsigkey::name, ns_client_aclmsg(), NS_CLIENT_ACLMSGSIZE, ns_client_checkacl(), ns_client_error(), ns_client_log(), NS_CLIENTATTR_HAVEEXPIRE, NS_CLIENTATTR_TCP, NS_CLIENTATTR_WANTEXPIRE, NS_LOGMODULE_XFER_OUT, dns_difftuple::rdata, dns_rdataset::rdclass, sendstream(), soa_rrstream_create(), xfrout_ctx_t::stream, xfrout_ctx_t::tsigkey, dns_rdataset::type, XFROUT_COMMON_LOGARGS, xfrout_ctx_create(), xfrout_fail(), xfrout_log1(), and zone.

Referenced by ns_query_start().

static void static void xfrout_logv ( ns_client_t client,
dns_name_t zonename,
dns_rdataclass_t  rdclass,
int  level,
const char *  fmt,
va_list  ap 
) [static]

Definition at line 1669 of file xfrout.c.

References DNS_LOGCATEGORY_XFER_OUT, dns_name_format(), DNS_NAME_FORMATSIZE, dns_rdataclass_format(), DNS_RDATACLASS_FORMATSIZE, namebuf, ns_client_log(), and NS_LOGMODULE_XFER_OUT.

Referenced by xfrout_log(), and xfrout_log1().


Variable Documentation

static rrstream_methods_t ixfr_rrstream_methods [static]

Initial value:

Definition at line 227 of file xfrout.c.

static rrstream_methods_t axfr_rrstream_methods [static]

Initial value:

Definition at line 324 of file xfrout.c.

static rrstream_methods_t soa_rrstream_methods [static]

Initial value:

Definition at line 445 of file xfrout.c.

static rrstream_methods_t compound_rrstream_methods [static]

Initial value:

Definition at line 540 of file xfrout.c.


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