Lines Matching defs:xfr

200 static isc_result_t axfr_init(dns_xfrin_ctx_t *xfr);
201 static isc_result_t axfr_makedb(dns_xfrin_ctx_t *xfr, dns_db_t **dbp);
202 static isc_result_t axfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op,
205 static isc_result_t axfr_apply(dns_xfrin_ctx_t *xfr);
206 static isc_result_t axfr_commit(dns_xfrin_ctx_t *xfr);
207 static isc_result_t axfr_finalize(dns_xfrin_ctx_t *xfr);
209 static isc_result_t ixfr_init(dns_xfrin_ctx_t *xfr);
210 static isc_result_t ixfr_apply(dns_xfrin_ctx_t *xfr);
211 static isc_result_t ixfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op,
214 static isc_result_t ixfr_commit(dns_xfrin_ctx_t *xfr);
216 static isc_result_t xfr_rr(dns_xfrin_ctx_t *xfr, dns_name_t *name,
219 static isc_result_t xfrin_start(dns_xfrin_ctx_t *xfr);
222 static isc_result_t xfrin_send_request(dns_xfrin_ctx_t *xfr);
227 static void maybe_free(dns_xfrin_ctx_t *xfr);
230 xfrin_fail(dns_xfrin_ctx_t *xfr, isc_result_t result, const char *msg);
245 xfrin_log(dns_xfrin_ctx_t *xfr, int level, const char *fmt, ...)
254 axfr_init(dns_xfrin_ctx_t *xfr) {
257 xfr->is_ixfr = ISC_FALSE;
259 if (xfr->db != NULL)
260 dns_db_detach(&xfr->db);
262 CHECK(axfr_makedb(xfr, &xfr->db));
263 CHECK(dns_db_beginload(xfr->db, &xfr->axfr.add_func,
264 &xfr->axfr.add_private));
271 axfr_makedb(dns_xfrin_ctx_t *xfr, dns_db_t **dbp) {
272 return (dns_db_create(xfr->mctx, /* XXX */
274 &xfr->name,
276 xfr->rdclass,
282 axfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op,
289 CHECK(dns_zone_checknames(xfr->zone, name, rdata));
290 CHECK(dns_difftuple_create(xfr->diff.mctx, op,
292 dns_diff_append(&xfr->diff, &tuple);
293 if (++xfr->difflen > 100)
294 CHECK(axfr_apply(xfr));
304 axfr_apply(dns_xfrin_ctx_t *xfr) {
307 CHECK(dns_diff_load(&xfr->diff,
308 xfr->axfr.add_func, xfr->axfr.add_private));
309 xfr->difflen = 0;
310 dns_diff_clear(&xfr->diff);
317 axfr_commit(dns_xfrin_ctx_t *xfr) {
320 CHECK(axfr_apply(xfr));
321 CHECK(dns_db_endload(xfr->db, &xfr->axfr.add_private));
329 axfr_finalize(dns_xfrin_ctx_t *xfr) {
332 CHECK(dns_zone_replacedb(xfr->zone, xfr->db, ISC_TRUE));
345 ixfr_init(dns_xfrin_ctx_t *xfr) {
349 if (xfr->reqtype != dns_rdatatype_ixfr) {
350 xfrin_log(xfr, ISC_LOG_ERROR,
355 xfr->is_ixfr = ISC_TRUE;
356 INSIST(xfr->db != NULL);
357 xfr->difflen = 0;
359 journalfile = dns_zone_getjournal(xfr->zone);
361 CHECK(dns_journal_open(xfr->mctx, journalfile,
362 ISC_TRUE, &xfr->ixfr.journal));
370 ixfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op,
377 CHECK(dns_zone_checknames(xfr->zone, name, rdata));
378 CHECK(dns_difftuple_create(xfr->diff.mctx, op,
380 dns_diff_append(&xfr->diff, &tuple);
381 if (++xfr->difflen > 100)
382 CHECK(ixfr_apply(xfr));
392 ixfr_apply(dns_xfrin_ctx_t *xfr) {
395 if (xfr->ver == NULL) {
396 CHECK(dns_db_newversion(xfr->db, &xfr->ver));
397 if (xfr->ixfr.journal != NULL)
398 CHECK(dns_journal_begin_transaction(xfr->ixfr.journal));
400 CHECK(dns_diff_apply(&xfr->diff, xfr->db, xfr->ver));
401 if (xfr->ixfr.journal != NULL) {
402 result = dns_journal_writediff(xfr->ixfr.journal, &xfr->diff);
406 dns_diff_clear(&xfr->diff);
407 xfr->difflen = 0;
414 ixfr_commit(dns_xfrin_ctx_t *xfr) {
417 CHECK(ixfr_apply(xfr));
418 if (xfr->ver != NULL) {
420 if (xfr->ixfr.journal != NULL)
421 CHECK(dns_journal_commit(xfr->ixfr.journal));
422 dns_db_closeversion(xfr->db, &xfr->ver, ISC_TRUE);
423 dns_zone_markdirty(xfr->zone);
440 xfr_rr(dns_xfrin_ctx_t *xfr, dns_name_t *name, isc_uint32_t ttl,
445 xfr->nrecs++;
452 switch (xfr->state) {
455 xfrin_log(xfr, ISC_LOG_ERROR,
459 xfr->end_serial = dns_soa_getserial(rdata);
460 if (!DNS_SERIAL_GT(xfr->end_serial, xfr->ixfr.request_serial) &&
461 !dns_zone_isforced(xfr->zone)) {
462 xfrin_log(xfr, ISC_LOG_DEBUG(3),
465 xfr->ixfr.request_serial, xfr->end_serial);
468 xfr->state = XFRST_GOTSOA;
479 xfrin_log(xfr, ISC_LOG_ERROR,
487 xfr->end_serial = dns_soa_getserial(rdata);
488 if (xfr->reqtype == dns_rdatatype_ixfr &&
489 ! DNS_SERIAL_GT(xfr->end_serial, xfr->ixfr.request_serial)
490 && !dns_zone_isforced(xfr->zone))
497 xfrin_log(xfr, ISC_LOG_DEBUG(3),
500 xfr->ixfr.request_serial, xfr->end_serial);
503 if (xfr->reqtype == dns_rdatatype_axfr)
504 xfr->checkid = ISC_FALSE;
505 xfr->state = XFRST_FIRSTDATA;
513 if (xfr->reqtype == dns_rdatatype_ixfr &&
515 xfr->ixfr.request_serial == dns_soa_getserial(rdata)) {
516 xfrin_log(xfr, ISC_LOG_DEBUG(3),
518 CHECK(ixfr_init(xfr));
519 xfr->state = XFRST_IXFR_DELSOA;
521 xfrin_log(xfr, ISC_LOG_DEBUG(3),
523 CHECK(axfr_init(xfr));
524 xfr->state = XFRST_AXFR;
530 CHECK(ixfr_putdata(xfr, DNS_DIFFOP_DEL, name, ttl, rdata));
531 xfr->state = XFRST_IXFR_DEL;
537 xfr->state = XFRST_IXFR_ADDSOA;
538 xfr->ixfr.current_serial = soa_serial;
541 CHECK(ixfr_putdata(xfr, DNS_DIFFOP_DEL, name, ttl, rdata));
546 CHECK(ixfr_putdata(xfr, DNS_DIFFOP_ADD, name, ttl, rdata));
547 xfr->state = XFRST_IXFR_ADD;
553 if (soa_serial == xfr->end_serial) {
554 CHECK(ixfr_commit(xfr));
555 xfr->state = XFRST_IXFR_END;
557 } else if (soa_serial != xfr->ixfr.current_serial) {
558 xfrin_log(xfr, ISC_LOG_ERROR,
561 xfr->ixfr.current_serial, soa_serial);
564 CHECK(ixfr_commit(xfr));
565 xfr->state = XFRST_IXFR_DELSOA;
572 CHECK(ixfr_putdata(xfr, DNS_DIFFOP_ADD, name, ttl, rdata));
580 rdata->rdclass != xfr->rdclass &&
581 xfr->rdclass != dns_rdataclass_in)
583 CHECK(axfr_putdata(xfr, DNS_DIFFOP_ADD, name, ttl, rdata));
585 CHECK(axfr_commit(xfr));
586 xfr->state = XFRST_AXFR_END;
636 dns_xfrin_ctx_t *xfr = NULL;
649 sourceaddr, tsigkey, &xfr));
651 CHECK(xfrin_start(xfr));
653 xfr->done = done;
654 xfr->refcount++;
655 *xfrp = xfr;
670 dns_xfrin_shutdown(dns_xfrin_ctx_t *xfr) {
671 if (! xfr->shuttingdown)
672 xfrin_fail(xfr, ISC_R_CANCELED, "shut down");
684 dns_xfrin_ctx_t *xfr = *xfrp;
685 INSIST(xfr->refcount > 0);
686 xfr->refcount--;
687 maybe_free(xfr);
692 xfrin_cancelio(dns_xfrin_ctx_t *xfr) {
693 if (xfr->connects > 0) {
694 isc_socket_cancel(xfr->socket, xfr->task,
696 } else if (xfr->recvs > 0) {
697 dns_tcpmsg_cancelread(&xfr->tcpmsg);
698 } else if (xfr->sends > 0) {
699 isc_socket_cancel(xfr->socket, xfr->task,
705 xfrin_reset(dns_xfrin_ctx_t *xfr) {
706 REQUIRE(VALID_XFRIN(xfr));
708 xfrin_log(xfr, ISC_LOG_INFO, "resetting");
710 xfrin_cancelio(xfr);
712 if (xfr->socket != NULL)
713 isc_socket_detach(&xfr->socket);
715 if (xfr->lasttsig != NULL)
716 isc_buffer_free(&xfr->lasttsig);
718 dns_diff_clear(&xfr->diff);
719 xfr->difflen = 0;
721 if (xfr->ixfr.journal != NULL)
722 dns_journal_destroy(&xfr->ixfr.journal);
724 if (xfr->axfr.add_private != NULL) {
725 (void)dns_db_endload(xfr->db, &xfr->axfr.add_private);
726 xfr->axfr.add_func = NULL;
729 if (xfr->tcpmsg_valid) {
730 dns_tcpmsg_invalidate(&xfr->tcpmsg);
731 xfr->tcpmsg_valid = ISC_FALSE;
734 if (xfr->ver != NULL)
735 dns_db_closeversion(xfr->db, &xfr->ver, ISC_FALSE);
740 xfrin_fail(dns_xfrin_ctx_t *xfr, isc_result_t result, const char *msg) {
742 xfrin_log(xfr, ISC_LOG_ERROR, "%s: %s",
744 if (xfr->is_ixfr)
748 xfrin_cancelio(xfr);
752 if (xfr->ixfr.journal != NULL)
753 dns_journal_destroy(&xfr->ixfr.journal);
754 if (xfr->done != NULL) {
755 (xfr->done)(xfr->zone, result);
756 xfr->done = NULL;
758 xfr->shuttingdown = ISC_TRUE;
759 maybe_free(xfr);
777 dns_xfrin_ctx_t *xfr = NULL;
781 xfr = isc_mem_get(mctx, sizeof(*xfr));
782 if (xfr == NULL)
784 xfr->mctx = NULL;
785 isc_mem_attach(mctx, &xfr->mctx);
786 xfr->refcount = 0;
787 xfr->zone = NULL;
788 dns_zone_iattach(zone, &xfr->zone);
789 xfr->task = NULL;
790 isc_task_attach(task, &xfr->task);
791 xfr->timer = NULL;
792 xfr->socketmgr = socketmgr;
793 xfr->done = NULL;
795 xfr->connects = 0;
796 xfr->sends = 0;
797 xfr->recvs = 0;
798 xfr->shuttingdown = ISC_FALSE;
800 dns_name_init(&xfr->name, NULL);
801 xfr->rdclass = rdclass;
803 xfr->checkid = ISC_TRUE;
804 xfr->id = (isc_uint16_t)(tmp & 0xffff);
805 xfr->reqtype = reqtype;
808 xfr->socket = NULL;
812 xfr->tcpmsg_valid = ISC_FALSE;
814 xfr->db = NULL;
816 dns_db_attach(db, &xfr->db);
817 xfr->ver = NULL;
818 dns_diff_init(xfr->mctx, &xfr->diff);
819 xfr->difflen = 0;
822 xfr->state = XFRST_SOAQUERY;
824 xfr->state = XFRST_INITIALSOA;
827 xfr->nmsg = 0;
828 xfr->nrecs = 0;
829 xfr->nbytes = 0;
830 isc_time_now(&xfr->start);
832 xfr->tsigkey = NULL;
834 dns_tsigkey_attach(tsigkey, &xfr->tsigkey);
835 xfr->lasttsig = NULL;
836 xfr->tsigctx = NULL;
837 xfr->sincetsig = 0;
838 xfr->is_ixfr = ISC_FALSE;
842 xfr->ixfr.journal = NULL;
844 xfr->axfr.add_func = NULL;
845 xfr->axfr.add_private = NULL;
847 CHECK(dns_name_dup(zonename, mctx, &xfr->name));
850 task, xfrin_timeout, xfr, &xfr->timer));
851 CHECK(dns_timer_setidle(xfr->timer,
852 dns_zone_getmaxxfrin(xfr->zone),
853 dns_zone_getidlein(xfr->zone),
856 xfr->masteraddr = *masteraddr;
859 xfr->sourceaddr = *sourceaddr;
860 isc_sockaddr_setport(&xfr->sourceaddr, 0);
865 isc_buffer_init(&xfr->qbuffer, &xfr->qbuffer_data[2],
866 sizeof(xfr->qbuffer_data) - 2);
868 xfr->magic = XFRIN_MAGIC;
869 *xfrp = xfr;
873 if (xfr->timer != NULL)
874 isc_timer_detach(&xfr->timer);
875 if (dns_name_dynamic(&xfr->name))
876 dns_name_free(&xfr->name, xfr->mctx);
877 if (xfr->tsigkey != NULL)
878 dns_tsigkey_detach(&xfr->tsigkey);
879 if (xfr->db != NULL)
880 dns_db_detach(&xfr->db);
881 isc_task_detach(&xfr->task);
882 dns_zone_idetach(&xfr->zone);
883 isc_mem_putanddetach(&xfr->mctx, xfr, sizeof(*xfr));
889 xfrin_start(dns_xfrin_ctx_t *xfr) {
891 CHECK(isc_socket_create(xfr->socketmgr,
892 isc_sockaddr_pf(&xfr->sourceaddr),
894 &xfr->socket));
895 isc_socket_setname(xfr->socket, "xfrin", NULL);
897 CHECK(isc_socket_bind(xfr->socket, &xfr->sourceaddr,
900 CHECK(isc_socket_connect(xfr->socket, &xfr->masteraddr, xfr->task,
901 xfrin_connect_done, xfr));
902 xfr->connects++;
905 xfrin_fail(xfr, result, "failed setting up socket");
938 dns_xfrin_ctx_t *xfr = (dns_xfrin_ctx_t *) event->ev_arg;
945 REQUIRE(VALID_XFRIN(xfr));
952 xfr->connects--;
953 if (xfr->shuttingdown) {
954 maybe_free(xfr);
958 zmgr = dns_zone_getmgr(xfr->zone);
962 dns_zonemgr_unreachableadd(zmgr, &xfr->masteraddr,
963 &xfr->sourceaddr, &now);
966 dns_zonemgr_unreachabledel(zmgr, &xfr->masteraddr,
967 &xfr->sourceaddr);
970 result = isc_socket_getsockname(xfr->socket, &sockaddr);
975 xfrin_log(xfr, ISC_LOG_INFO, "connected using %s", sourcetext);
977 dns_tcpmsg_init(xfr->mctx, xfr->socket, &xfr->tcpmsg);
978 xfr->tcpmsg_valid = ISC_TRUE;
980 CHECK(xfrin_send_request(xfr));
983 xfrin_fail(xfr, result, "failed to connect");
1045 xfrin_send_request(dns_xfrin_ctx_t *xfr) {
1056 CHECK(dns_message_create(xfr->mctx, DNS_MESSAGE_INTENTRENDER, &msg));
1057 CHECK(dns_message_settsigkey(msg, xfr->tsigkey));
1062 dns_name_clone(&xfr->name, qname);
1067 dns_rdataset_makequestion(qrdataset, xfr->rdclass, xfr->reqtype);
1074 if (xfr->reqtype == dns_rdatatype_ixfr) {
1077 dns_db_currentversion(xfr->db, &ver);
1078 CHECK(dns_db_createsoatuple(xfr->db, ver, xfr->mctx,
1080 xfr->ixfr.request_serial = dns_soa_getserial(&soatuple->rdata);
1081 xfr->ixfr.current_serial = xfr->ixfr.request_serial;
1082 xfrin_log(xfr, ISC_LOG_DEBUG(3),
1084 xfr->ixfr.request_serial);
1088 } else if (xfr->reqtype == dns_rdatatype_soa)
1089 CHECK(dns_db_getsoaserial(xfr->db, NULL,
1090 &xfr->ixfr.request_serial));
1092 xfr->checkid = ISC_TRUE;
1093 xfr->id++;
1094 xfr->nmsg = 0;
1095 xfr->nrecs = 0;
1096 xfr->nbytes = 0;
1097 isc_time_now(&xfr->start);
1098 msg->id = xfr->id;
1099 if (xfr->tsigctx != NULL)
1100 dst_context_destroy(&xfr->tsigctx);
1102 CHECK(render(msg, xfr->mctx, &xfr->qbuffer));
1107 if (xfr->lasttsig != NULL)
1108 isc_buffer_free(&xfr->lasttsig);
1113 CHECK(dns_message_getquerytsig(msg, xfr->mctx, &xfr->lasttsig));
1115 isc_buffer_usedregion(&xfr->qbuffer, &region);
1122 xfr->qbuffer_data[0] = (region.length >> 8) & 0xff;
1123 xfr->qbuffer_data[1] = region.length & 0xff;
1126 CHECK(isc_socket_send(xfr->socket, &region, xfr->task,
1127 xfrin_send_done, xfr));
1128 xfr->sends++;
1140 dns_db_closeversion(xfr->db, &ver, ISC_FALSE);
1147 dns_xfrin_ctx_t *xfr = (dns_xfrin_ctx_t *) event->ev_arg;
1150 REQUIRE(VALID_XFRIN(xfr));
1156 xfr->sends--;
1157 xfrin_log(xfr, ISC_LOG_DEBUG(3), "sent request data");
1160 CHECK(dns_tcpmsg_readmessage(&xfr->tcpmsg, xfr->task,
1161 xfrin_recv_done, xfr));
1162 xfr->recvs++;
1166 xfrin_fail(xfr, result, "failed sending request data");
1172 dns_xfrin_ctx_t *xfr = (dns_xfrin_ctx_t *) ev->ev_arg;
1179 REQUIRE(VALID_XFRIN(xfr));
1187 xfr->recvs--;
1188 if (xfr->shuttingdown) {
1189 maybe_free(xfr);
1195 xfrin_log(xfr, ISC_LOG_DEBUG(7), "received %u bytes",
1198 CHECK(isc_timer_touch(xfr->timer));
1200 CHECK(dns_message_create(xfr->mctx, DNS_MESSAGE_INTENTPARSE, &msg));
1202 CHECK(dns_message_settsigkey(msg, xfr->tsigkey));
1203 CHECK(dns_message_setquerytsig(msg, xfr->lasttsig));
1205 msg->tsigctx = xfr->tsigctx;
1206 xfr->tsigctx = NULL;
1208 if (xfr->nmsg > 0)
1215 (xfr->checkid && msg->id != xfr->id)) {
1220 if (xfr->reqtype == dns_rdatatype_axfr ||
1221 xfr->reqtype == dns_rdatatype_soa)
1223 xfrin_log(xfr, ISC_LOG_DEBUG(3), "got %s, retrying with AXFR",
1227 xfrin_reset(xfr);
1228 xfr->reqtype = dns_rdatatype_soa;
1229 xfr->state = XFRST_SOAQUERY;
1230 (void)xfrin_start(xfr);
1240 if (xfr->reqtype == dns_rdatatype_ixfr &&
1241 xfr->state == XFRST_INITIALSOA &&
1243 xfrin_log(xfr, ISC_LOG_DEBUG(3),
1248 if (xfr->reqtype == dns_rdatatype_soa &&
1254 result = dns_message_checksig(msg, dns_zone_getview(xfr->zone));
1256 xfrin_log(xfr, ISC_LOG_DEBUG(3), "TSIG check failed: %s",
1279 CHECK(xfr_rr(xfr, name, rds->ttl, &rdata));
1290 xfr->sincetsig = 0;
1295 if (xfr->lasttsig != NULL)
1296 isc_buffer_free(&xfr->lasttsig);
1301 CHECK(dns_message_getquerytsig(msg, xfr->mctx,
1302 &xfr->lasttsig));
1305 xfr->sincetsig++;
1306 if (xfr->sincetsig > 100 || xfr->nmsg == 0 ||
1307 xfr->state == XFRST_AXFR_END ||
1308 xfr->state == XFRST_IXFR_END)
1318 xfr->nmsg++;
1323 xfr->nbytes += tcpmsg->buffer.used;
1328 INSIST(xfr->tsigctx == NULL);
1329 xfr->tsigctx = msg->tsigctx;
1334 switch (xfr->state) {
1336 xfr->reqtype = dns_rdatatype_axfr;
1337 xfr->state = XFRST_INITIALSOA;
1338 CHECK(xfrin_send_request(xfr));
1341 CHECK(axfr_finalize(xfr));
1347 if (xfr->ixfr.journal != NULL)
1348 dns_journal_destroy(&xfr->ixfr.journal);
1353 if (xfr->done != NULL) {
1354 (xfr->done)(xfr->zone, ISC_R_SUCCESS);
1355 xfr->done = NULL;
1361 xfr->shuttingdown = ISC_TRUE;
1362 maybe_free(xfr);
1368 CHECK(dns_tcpmsg_readmessage(&xfr->tcpmsg, xfr->task,
1369 xfrin_recv_done, xfr));
1370 xfr->recvs++;
1378 xfrin_fail(xfr, result, "failed while receiving responses");
1383 dns_xfrin_ctx_t *xfr = (dns_xfrin_ctx_t *) event->ev_arg;
1385 REQUIRE(VALID_XFRIN(xfr));
1393 xfrin_fail(xfr, ISC_R_TIMEDOUT, "giving up");
1397 maybe_free(dns_xfrin_ctx_t *xfr) {
1401 REQUIRE(VALID_XFRIN(xfr));
1403 if (! xfr->shuttingdown || xfr->refcount != 0 ||
1404 xfr->connects != 0 || xfr->sends != 0 ||
1405 xfr->recvs != 0)
1412 isc_time_now(&xfr->end);
1413 msecs = isc_time_microdiff(&xfr->end, &xfr->start) / 1000;
1416 persec = (xfr->nbytes * 1000) / msecs;
1417 xfrin_log(xfr, ISC_LOG_INFO,
1421 xfr->nmsg, xfr->nrecs, xfr->nbytes,
1425 if (xfr->socket != NULL)
1426 isc_socket_detach(&xfr->socket);
1428 if (xfr->timer != NULL)
1429 isc_timer_detach(&xfr->timer);
1431 if (xfr->task != NULL)
1432 isc_task_detach(&xfr->task);
1434 if (xfr->tsigkey != NULL)
1435 dns_tsigkey_detach(&xfr->tsigkey);
1437 if (xfr->lasttsig != NULL)
1438 isc_buffer_free(&xfr->lasttsig);
1440 dns_diff_clear(&xfr->diff);
1442 if (xfr->ixfr.journal != NULL)
1443 dns_journal_destroy(&xfr->ixfr.journal);
1445 if (xfr->axfr.add_private != NULL)
1446 (void)dns_db_endload(xfr->db, &xfr->axfr.add_private);
1448 if (xfr->tcpmsg_valid)
1449 dns_tcpmsg_invalidate(&xfr->tcpmsg);
1451 if (xfr->tsigctx != NULL)
1452 dst_context_destroy(&xfr->tsigctx);
1454 if ((xfr->name.attributes & DNS_NAMEATTR_DYNAMIC) != 0)
1455 dns_name_free(&xfr->name, xfr->mctx);
1457 if (xfr->ver != NULL)
1458 dns_db_closeversion(xfr->db, &xfr->ver, ISC_FALSE);
1460 if (xfr->db != NULL)
1461 dns_db_detach(&xfr->db);
1463 if (xfr->zone != NULL)
1464 dns_zone_idetach(&xfr->zone);
1466 isc_mem_putanddetach(&xfr->mctx, xfr, sizeof(*xfr));
1512 xfrin_log(dns_xfrin_ctx_t *xfr, int level, const char *fmt, ...)
1520 dns_zone_name(xfr->zone, zonetext, sizeof(zonetext));
1523 xfrin_logv(level, zonetext, &xfr->masteraddr, fmt, ap);