From: Witold KrÄ™cicki Date: Tue, 3 Apr 2018 13:12:27 +0000 (+0200) Subject: libdns refactoring: get rid of multiple versions of dns_request_createraw and dns_req... X-Git-Tag: v9.13.0~70^2~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c12e488f754c5d6a97a905a41b04213bde95e37;p=thirdparty%2Fbind9.git libdns refactoring: get rid of multiple versions of dns_request_createraw and dns_request_createvia --- diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 8d1176f6f19..5baf409313f 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -2493,11 +2493,11 @@ send_update(dns_name_t *zone, isc_sockaddr_t *master) { if (updatemsg->tsigname) updatemsg->tsigname->attributes |= DNS_NAMEATTR_NOCOMPRESS; - result = dns_request_createvia3(requestmgr, updatemsg, srcaddr, - master, options, tsigkey, timeout, - udp_timeout, udp_retries, global_task, - update_completed, NULL, &request); - check_result(result, "dns_request_createvia3"); + result = dns_request_createvia(requestmgr, updatemsg, srcaddr, + master, -1, options, tsigkey, timeout, + udp_timeout, udp_retries, global_task, + update_completed, NULL, &request); + check_result(result, "dns_request_createvia"); if (debugging) show_message(stdout, updatemsg, "Outgoing update query:"); @@ -2602,13 +2602,13 @@ recvsoa(isc_task_t *task, isc_event_t *event) { else srcaddr = localaddr4; - result = dns_request_createvia3(requestmgr, soaquery, srcaddr, - addr, 0, NULL, - FIND_TIMEOUT * 20, - FIND_TIMEOUT, 3, - global_task, recvsoa, reqinfo, - &request); - check_result(result, "dns_request_createvia3"); + result = dns_request_createvia(requestmgr, soaquery, srcaddr, + addr, -1, 0, NULL, + FIND_TIMEOUT * 20, + FIND_TIMEOUT, 3, + global_task, recvsoa, reqinfo, + &request); + check_result(result, "dns_request_createvia"); requests++; return; } @@ -2805,11 +2805,11 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg, else srcaddr = localaddr4; - result = dns_request_createvia3(requestmgr, msg, srcaddr, destaddr, 0, - default_servers ? NULL : tsigkey, - FIND_TIMEOUT * 20, FIND_TIMEOUT, 3, - global_task, recvsoa, reqinfo, request); - check_result(result, "dns_request_createvia3"); + result = dns_request_createvia(requestmgr, msg, srcaddr, destaddr, -1, + 0, default_servers ? NULL : tsigkey, + FIND_TIMEOUT * 20, FIND_TIMEOUT, 3, + global_task, recvsoa, reqinfo, request); + check_result(result, "dns_request_createvia"); requests++; } @@ -3003,11 +3003,11 @@ send_gssrequest(isc_sockaddr_t *destaddr, dns_message_t *msg, else srcaddr = localaddr4; - result = dns_request_createvia3(requestmgr, msg, srcaddr, destaddr, - options, tsigkey, FIND_TIMEOUT * 20, - FIND_TIMEOUT, 3, global_task, recvgss, - reqinfo, request); - check_result(result, "dns_request_createvia3"); + result = dns_request_createvia(requestmgr, msg, srcaddr, destaddr, + -1, options, tsigkey, FIND_TIMEOUT * 20, + FIND_TIMEOUT, 3, global_task, recvgss, + reqinfo, request); + check_result(result, "dns_request_createvia"); if (debugging) show_message(stdout, msg, "Outgoing update query:"); requests++; diff --git a/bin/tests/system/pipelined/pipequeries.c b/bin/tests/system/pipelined/pipequeries.c index 93455861eff..c6801d32be7 100644 --- a/bin/tests/system/pipelined/pipequeries.c +++ b/bin/tests/system/pipelined/pipequeries.c @@ -177,8 +177,10 @@ sendquery(isc_task_t *task) { request = NULL; result = dns_request_createvia(requestmgr, message, have_src ? &srcaddr : NULL, &dstaddr, - DNS_REQUESTOPT_TCP|DNS_REQUESTOPT_SHARE, - NULL, TIMEOUT, task, recvresponse, + -1, + DNS_REQUESTOPT_TCP | + DNS_REQUESTOPT_SHARE, + NULL, TIMEOUT, 0, 0, task, recvresponse, message, &request); CHECK("dns_request_create", result); diff --git a/bin/tools/mdig.c b/bin/tools/mdig.c index 492d0a844e5..e615243ca9d 100644 --- a/bin/tools/mdig.c +++ b/bin/tools/mdig.c @@ -684,12 +684,12 @@ sendquery(struct query *query, isc_task_t *task) if (tcp_mode) options |= DNS_REQUESTOPT_TCP | DNS_REQUESTOPT_SHARE; request = NULL; - result = dns_request_createvia4(requestmgr, message, - have_src ? &srcaddr : NULL, &dstaddr, - dscp, options, NULL, - query->timeout, query->udptimeout, - query->udpretries, task, - recvresponse, message, &request); + result = dns_request_createvia(requestmgr, message, + have_src ? &srcaddr : NULL, &dstaddr, + dscp, options, NULL, + query->timeout, query->udptimeout, + query->udpretries, task, + recvresponse, message, &request); CHECK("dns_request_createvia4", result); return ISC_R_SUCCESS; diff --git a/lib/dns/client.c b/lib/dns/client.c index 0d1cf47cbd6..2d701e48f32 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -1785,11 +1785,11 @@ dns_client_startrequest(dns_client_t *client, dns_message_t *qmessage, UNLOCK(&client->lock); ctx->request = NULL; - result = dns_request_createvia3(view->requestmgr, qmessage, NULL, - server, reqoptions, ctx->tsigkey, - timeout, udptimeout, udpretries, - client->task, request_done, ctx, - &ctx->request); + result = dns_request_createvia(view->requestmgr, qmessage, NULL, + server, -1, reqoptions, ctx->tsigkey, + timeout, udptimeout, udpretries, + client->task, request_done, ctx, + &ctx->request); if (result == ISC_R_SUCCESS) { dns_view_detach(&view); *transp = (dns_clientreqtrans_t *)ctx; @@ -1992,18 +1992,19 @@ update_done(isc_task_t *task, isc_event_t *event) { reqoptions = 0; if (uctx->want_tcp) reqoptions |= DNS_REQUESTOPT_TCP; - result = dns_request_createvia3(uctx->view->requestmgr, - uctx->updatemsg, - NULL, - uctx->currentserver, - reqoptions, - uctx->tsigkey, - timeout, - client->update_udptimeout, - client->update_udpretries, - client->task, - update_done, uctx, - &uctx->updatereq); + result = dns_request_createvia(uctx->view->requestmgr, + uctx->updatemsg, + NULL, + uctx->currentserver, + -1, + reqoptions, + uctx->tsigkey, + timeout, + client->update_udptimeout, + client->update_udpretries, + client->task, + update_done, uctx, + &uctx->updatereq); UNLOCK(&uctx->lock); if (result == ISC_R_SUCCESS) { @@ -2053,14 +2054,14 @@ send_update(updatectx_t *uctx) { reqoptions = 0; if (uctx->want_tcp) reqoptions |= DNS_REQUESTOPT_TCP; - result = dns_request_createvia3(uctx->view->requestmgr, - uctx->updatemsg, - NULL, uctx->currentserver, - reqoptions, uctx->tsigkey, timeout, - client->update_udptimeout, - client->update_udpretries, - client->task, update_done, uctx, - &uctx->updatereq); + result = dns_request_createvia(uctx->view->requestmgr, + uctx->updatemsg, + NULL, uctx->currentserver, + -1, reqoptions, uctx->tsigkey, timeout, + client->update_udptimeout, + client->update_udpretries, + client->task, update_done, uctx, + &uctx->updatereq); if (result == ISC_R_SUCCESS && uctx->state == dns_clientupdatestate_prepare) { uctx->state = dns_clientupdatestate_sent; @@ -2311,14 +2312,14 @@ receive_soa(isc_task_t *task, isc_event_t *event) { reqoptions = 0; if (uctx->want_tcp) reqoptions |= DNS_REQUESTOPT_TCP; - result = dns_request_createvia3(uctx->view->requestmgr, - uctx->soaquery, NULL, addr, - reqoptions, NULL, - client->find_timeout * 20, - client->find_timeout, 3, - uctx->client->task, - receive_soa, uctx, - &newrequest); + result = dns_request_createvia(uctx->view->requestmgr, + uctx->soaquery, NULL, addr, -1, + reqoptions, NULL, + client->find_timeout * 20, + client->find_timeout, 3, + uctx->client->task, + receive_soa, uctx, + &newrequest); if (result == ISC_R_SUCCESS) { LOCK(&uctx->lock); dns_request_destroy(&uctx->soareq); @@ -2414,17 +2415,18 @@ receive_soa(isc_task_t *task, isc_event_t *event) { reqoptions = 0; if (uctx->want_tcp) reqoptions |= DNS_REQUESTOPT_TCP; - result = dns_request_createvia3(uctx->view->requestmgr, - soaquery, NULL, - uctx->currentserver, - reqoptions, - uctx->tsigkey, - client->find_timeout * - 20, - client->find_timeout, - 3, client->task, - receive_soa, uctx, - &uctx->soareq); + result = dns_request_createvia(uctx->view->requestmgr, + soaquery, NULL, + uctx->currentserver, + -1, + reqoptions, + uctx->tsigkey, + client->find_timeout * + 20, + client->find_timeout, + 3, client->task, + receive_soa, uctx, + &uctx->soareq); } } @@ -2474,13 +2476,13 @@ request_soa(updatectx_t *uctx) { if (uctx->want_tcp) reqoptions |= DNS_REQUESTOPT_TCP; - result = dns_request_createvia3(uctx->view->requestmgr, - soaquery, NULL, uctx->currentserver, - reqoptions, uctx->tsigkey, - uctx->client->find_timeout * 20, - uctx->client->find_timeout, 3, - uctx->client->task, receive_soa, uctx, - &uctx->soareq); + result = dns_request_createvia(uctx->view->requestmgr, + soaquery, NULL, uctx->currentserver, + -1, reqoptions, uctx->tsigkey, + uctx->client->find_timeout * 20, + uctx->client->find_timeout, 3, + uctx->client->task, receive_soa, uctx, + &uctx->soareq); if (result == ISC_R_SUCCESS) { uctx->soaquery = soaquery; return (ISC_R_SUCCESS); diff --git a/lib/dns/include/dns/request.h b/lib/dns/include/dns/request.h index da7c7a0bacc..4dbebca75df 100644 --- a/lib/dns/include/dns/request.h +++ b/lib/dns/include/dns/request.h @@ -193,45 +193,15 @@ dns_request_create(dns_requestmgr_t *requestmgr, dns_message_t *message, *\li requestp != NULL && *requestp == NULL */ -/*% See dns_request_createvia4() */ isc_result_t dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message, const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, unsigned int options, + const isc_sockaddr_t *destaddr, + isc_dscp_t dscp, unsigned int options, dns_tsigkey_t *key, unsigned int timeout, + unsigned int udptimeout, unsigned int udpretries, isc_task_t *task, isc_taskaction_t action, void *arg, dns_request_t **requestp); - -/*% See dns_request_createvia4() */ -isc_result_t -dns_request_createvia2(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, dns_tsigkey_t *key, - unsigned int timeout, unsigned int udptimeout, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp); - -/*% See dns_request_createvia4() */ -isc_result_t -dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, dns_tsigkey_t *key, - unsigned int timeout, unsigned int udptimeout, - unsigned int udpretries, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp); - -isc_result_t -dns_request_createvia4(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - isc_dscp_t dscp, unsigned int options, - dns_tsigkey_t *key, unsigned int timeout, - unsigned int udptimeout, unsigned int udpretries, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp); /*%< * Create and send a request. * @@ -267,44 +237,15 @@ dns_request_createvia4(dns_requestmgr_t *requestmgr, dns_message_t *message, *\li requestp != NULL && *requestp == NULL */ -/*% See dns_request_createraw4() */ isc_result_t dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - isc_task_t *task, isc_taskaction_t action, void *arg, + isc_dscp_t dscp, unsigned int options, + unsigned int timeout, unsigned int udptimeout, + unsigned int udpretries, isc_task_t *task, + isc_taskaction_t action, void *arg, dns_request_t **requestp); - -/*% See dns_request_createraw4() */ -isc_result_t -dns_request_createraw2(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - unsigned int udptimeout, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp); - -/*% See dns_request_createraw4() */ -isc_result_t -dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - unsigned int udptimeout, unsigned int udpretries, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp); - -isc_result_t -dns_request_createraw4(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - isc_dscp_t dscp, unsigned int options, - unsigned int timeout, unsigned int udptimeout, - unsigned int udpretries, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp); /*!< * \brief Create and send a request. * diff --git a/lib/dns/request.c b/lib/dns/request.c index cfc20eb68a8..82e5a80da2b 100644 --- a/lib/dns/request.c +++ b/lib/dns/request.c @@ -692,59 +692,11 @@ isc_result_t dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - isc_task_t *task, isc_taskaction_t action, void *arg, + isc_dscp_t dscp, unsigned int options, + unsigned int timeout, unsigned int udptimeout, + unsigned int udpretries, isc_task_t *task, + isc_taskaction_t action, void *arg, dns_request_t **requestp) -{ - return(dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr, - -1, options, timeout, 0, 0, task, action, - arg, requestp)); -} - -isc_result_t -dns_request_createraw2(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - unsigned int udptimeout, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp) -{ - unsigned int udpretries = 0; - - if (udptimeout != 0) - udpretries = timeout / udptimeout; - - return (dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr, - -1, options, timeout, udptimeout, - udpretries, task, action, arg, - requestp)); -} - -isc_result_t -dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, unsigned int timeout, - unsigned int udptimeout, unsigned int udpretries, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp) -{ - return (dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr, - -1, options, timeout, udptimeout, - udpretries, task, action, arg, - requestp)); -} - -isc_result_t -dns_request_createraw4(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - isc_dscp_t dscp, unsigned int options, - unsigned int timeout, unsigned int udptimeout, - unsigned int udpretries, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp) { dns_request_t *request = NULL; isc_task_t *tclone = NULL; @@ -921,69 +873,20 @@ dns_request_create(dns_requestmgr_t *requestmgr, dns_message_t *message, isc_taskaction_t action, void *arg, dns_request_t **requestp) { - return (dns_request_createvia4(requestmgr, message, NULL, address, - -1, options, key, timeout, 0, 0, task, - action, arg, requestp)); + return (dns_request_createvia(requestmgr, message, NULL, address, + -1, options, key, timeout, 0, 0, task, + action, arg, requestp)); } isc_result_t dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message, const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *destaddr, - unsigned int options, dns_tsigkey_t *key, - unsigned int timeout, isc_task_t *task, - isc_taskaction_t action, void *arg, + isc_dscp_t dscp, unsigned int options, + dns_tsigkey_t *key, unsigned int timeout, + unsigned int udptimeout, unsigned int udpretries, + isc_task_t *task, isc_taskaction_t action, void *arg, dns_request_t **requestp) -{ - return(dns_request_createvia4(requestmgr, message, srcaddr, destaddr, - -1, options, key, timeout, 0, 0, task, - action, arg, requestp)); -} - -isc_result_t -dns_request_createvia2(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, dns_tsigkey_t *key, - unsigned int timeout, unsigned int udptimeout, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp) -{ - unsigned int udpretries = 0; - - if (udptimeout != 0) - udpretries = timeout / udptimeout; - return (dns_request_createvia4(requestmgr, message, srcaddr, destaddr, - -1, options, key, timeout, udptimeout, - udpretries, task, action, arg, - requestp)); -} - -isc_result_t -dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - unsigned int options, dns_tsigkey_t *key, - unsigned int timeout, unsigned int udptimeout, - unsigned int udpretries, isc_task_t *task, - isc_taskaction_t action, void *arg, - dns_request_t **requestp) -{ - return (dns_request_createvia4(requestmgr, message, srcaddr, destaddr, - -1, options, key, timeout, udptimeout, - udpretries, task, action, arg, - requestp)); -} - -isc_result_t -dns_request_createvia4(dns_requestmgr_t *requestmgr, dns_message_t *message, - const isc_sockaddr_t *srcaddr, - const isc_sockaddr_t *destaddr, - isc_dscp_t dscp, unsigned int options, - dns_tsigkey_t *key, unsigned int timeout, - unsigned int udptimeout, unsigned int udpretries, - isc_task_t *task, isc_taskaction_t action, void *arg, - dns_request_t **requestp) { dns_request_t *request = NULL; isc_task_t *tclone = NULL; diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in index cb5c7c52020..c8d0037f7a4 100644 --- a/lib/dns/win32/libdns.def.in +++ b/lib/dns/win32/libdns.def.in @@ -851,13 +851,7 @@ dns_rdatatypestats_increment dns_request_cancel dns_request_create dns_request_createraw -dns_request_createraw2 -dns_request_createraw3 -dns_request_createraw4 dns_request_createvia -dns_request_createvia2 -dns_request_createvia3 -dns_request_createvia4 dns_request_destroy dns_request_getresponse dns_request_usedtcp diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 6fe852f3c8e..ddd63ff4a8d 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -11015,11 +11015,11 @@ notify_send_toaddr(isc_task_t *task, isc_event_t *event) { timeout = 15; if (DNS_ZONE_FLAG(notify->zone, DNS_ZONEFLG_DIALNOTIFY)) timeout = 30; - result = dns_request_createvia4(notify->zone->view->requestmgr, - message, &src, ¬ify->dst, dscp, - options, key, timeout * 3, timeout, - 0, notify->zone->task, notify_done, - notify, ¬ify->request); + result = dns_request_createvia(notify->zone->view->requestmgr, + message, &src, ¬ify->dst, dscp, + options, key, timeout * 3, timeout, + 0, notify->zone->task, notify_done, + notify, ¬ify->request); if (result == ISC_R_SUCCESS) { if (isc_sockaddr_pf(¬ify->dst) == AF_INET) { inc_stats(notify->zone, @@ -12422,11 +12422,11 @@ soa_query(isc_task_t *task, isc_event_t *event) { timeout = 15; if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DIALREFRESH)) timeout = 30; - result = dns_request_createvia4(zone->view->requestmgr, message, - &zone->sourceaddr, &zone->masteraddr, - dscp, options, key, timeout * 3, - timeout, 0, zone->task, - refresh_callback, zone, &zone->request); + result = dns_request_createvia(zone->view->requestmgr, message, + &zone->sourceaddr, &zone->masteraddr, + dscp, options, key, timeout * 3, + timeout, 0, zone->task, + refresh_callback, zone, &zone->request); if (result != ISC_R_SUCCESS) { zone_idetach(&dummy); zone_debuglog(zone, me, 1, @@ -12668,11 +12668,11 @@ ns_query(dns_zone_t *zone, dns_rdataset_t *soardataset, dns_stub_t *stub) { timeout = 15; if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DIALREFRESH)) timeout = 30; - result = dns_request_createvia4(zone->view->requestmgr, message, - &zone->sourceaddr, &zone->masteraddr, - dscp, DNS_REQUESTOPT_TCP, key, - timeout * 3, timeout, 0, zone->task, - stub_callback, stub, &zone->request); + result = dns_request_createvia(zone->view->requestmgr, message, + &zone->sourceaddr, &zone->masteraddr, + dscp, DNS_REQUESTOPT_TCP, key, + timeout * 3, timeout, 0, zone->task, + stub_callback, stub, &zone->request); if (result != ISC_R_SUCCESS) { zone_debuglog(zone, me, 1, "dns_request_createvia() failed: %s", @@ -15708,13 +15708,13 @@ sendtomaster(dns_forward_t *forward) { result = ISC_R_NOTIMPLEMENTED; goto unlock; } - result = dns_request_createraw4(forward->zone->view->requestmgr, - forward->msgbuf, - &src, &forward->addr, dscp, - forward->options, 15 /* XXX */, - 0, 0, forward->zone->task, - forward_callback, forward, - &forward->request); + result = dns_request_createraw(forward->zone->view->requestmgr, + forward->msgbuf, + &src, &forward->addr, dscp, + forward->options, 15 /* XXX */, + 0, 0, forward->zone->task, + forward_callback, forward, + &forward->request); if (result == ISC_R_SUCCESS) { if (!ISC_LINK_LINKED(forward, link)) ISC_LIST_APPEND(forward->zone->forwards, forward, link);