Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1af0302a38 | ||
|
|
5d3fab88c8 | ||
|
|
3382335716 |
@@ -129,9 +129,7 @@ add(char *key, int value) {
|
|||||||
isc_symvalue_t symvalue;
|
isc_symvalue_t symvalue;
|
||||||
|
|
||||||
if (sym_mctx == NULL) {
|
if (sym_mctx == NULL) {
|
||||||
result = isc_mem_create(0, 0, &sym_mctx);
|
isc_mem_create(0, 0, &sym_mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (symtab == NULL) {
|
if (symtab == NULL) {
|
||||||
|
|||||||
@@ -569,7 +569,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
isc_commandline_reset = true;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != EOF) {
|
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != EOF) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|||||||
@@ -517,7 +517,7 @@ main(int argc, char **argv) {
|
|||||||
InitSockets();
|
InitSockets();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
RUNTIME_CHECK(setup_logging(mctx, errout, &lctx)
|
RUNTIME_CHECK(setup_logging(mctx, errout, &lctx)
|
||||||
== ISC_R_SUCCESS);
|
== ISC_R_SUCCESS);
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ main(int argc, char **argv) {
|
|||||||
/* Use canonical algorithm name */
|
/* Use canonical algorithm name */
|
||||||
algname = alg_totext(alg);
|
algname = alg_totext(alg);
|
||||||
|
|
||||||
DO("create memory context", isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
if (keyname == NULL) {
|
if (keyname == NULL) {
|
||||||
const char *suffix = NULL;
|
const char *suffix = NULL;
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ main(int argc, char **argv) {
|
|||||||
keysize = alg_bits(alg);
|
keysize = alg_bits(alg);
|
||||||
algname = alg_totext(alg);
|
algname = alg_totext(alg);
|
||||||
|
|
||||||
DO("create memory context", isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
|
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
|
||||||
|
|
||||||
generate_key(mctx, alg, keysize, &key_txtbuffer);
|
generate_key(mctx, alg, keysize, &key_txtbuffer);
|
||||||
|
|||||||
+2
-4
@@ -1585,14 +1585,12 @@ main(int argc, char *argv[]) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("dns_lib_init failed: %d", result);
|
fatal("dns_lib_init failed: %d", result);
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("failed to create mctx");
|
|
||||||
|
|
||||||
CHECK(isc_appctx_create(mctx, &actx));
|
CHECK(isc_appctx_create(mctx, &actx));
|
||||||
CHECK(isc_taskmgr_createinctx(mctx, actx, 1, 0, &taskmgr));
|
CHECK(isc_taskmgr_createinctx(mctx, actx, 1, 0, &taskmgr));
|
||||||
CHECK(isc_socketmgr_createinctx(mctx, actx, &socketmgr));
|
CHECK(isc_socketmgr_createinctx(mctx, actx, &socketmgr));
|
||||||
CHECK(isc_timermgr_createinctx(mctx, actx, &timermgr));
|
isc_timermgr_createinctx(mctx, actx, &timermgr);
|
||||||
|
|
||||||
parse_args(argc, argv);
|
parse_args(argc, argv);
|
||||||
|
|
||||||
|
|||||||
+3
-7
@@ -520,8 +520,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
|||||||
if (!query->lookup->comments)
|
if (!query->lookup->comments)
|
||||||
flags |= DNS_MESSAGETEXTFLAG_NOCOMMENTS;
|
flags |= DNS_MESSAGETEXTFLAG_NOCOMMENTS;
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &buf, len);
|
isc_buffer_allocate(mctx, &buf, len);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
|
|
||||||
if (query->lookup->comments && !short_form) {
|
if (query->lookup->comments && !short_form) {
|
||||||
if (query->lookup->cmdline[0] != 0)
|
if (query->lookup->cmdline[0] != 0)
|
||||||
@@ -597,11 +596,8 @@ repopulate_buffer:
|
|||||||
buftoosmall:
|
buftoosmall:
|
||||||
len += OUTPUTBUF;
|
len += OUTPUTBUF;
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
result = isc_buffer_allocate(mctx, &buf, len);
|
isc_buffer_allocate(mctx, &buf, len);
|
||||||
if (result == ISC_R_SUCCESS)
|
goto repopulate_buffer;
|
||||||
goto repopulate_buffer;
|
|
||||||
else
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
check_result(result,
|
check_result(result,
|
||||||
"dns_message_pseudosectiontotext");
|
"dns_message_pseudosectiontotext");
|
||||||
|
|||||||
+8
-16
@@ -862,8 +862,7 @@ setup_text_key(void) {
|
|||||||
unsigned char *secretstore;
|
unsigned char *secretstore;
|
||||||
|
|
||||||
debug("setup_text_key()");
|
debug("setup_text_key()");
|
||||||
result = isc_buffer_allocate(mctx, &namebuf, MXNAME);
|
isc_buffer_allocate(mctx, &namebuf, MXNAME);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
dns_name_init(&keyname, NULL);
|
dns_name_init(&keyname, NULL);
|
||||||
check_result(result, "dns_name_init");
|
check_result(result, "dns_name_init");
|
||||||
isc_buffer_putstr(namebuf, keynametext);
|
isc_buffer_putstr(namebuf, keynametext);
|
||||||
@@ -1328,8 +1327,7 @@ setup_libs(void) {
|
|||||||
if (!have_ipv6 && !have_ipv4)
|
if (!have_ipv6 && !have_ipv4)
|
||||||
fatal("can't find either v4 or v6 networking");
|
fatal("can't find either v4 or v6 networking");
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
check_result(result, "isc_mem_create");
|
|
||||||
isc_mem_setname(mctx, "dig", NULL);
|
isc_mem_setname(mctx, "dig", NULL);
|
||||||
|
|
||||||
result = isc_log_create(mctx, &lctx, &logconfig);
|
result = isc_log_create(mctx, &lctx, &logconfig);
|
||||||
@@ -1351,8 +1349,7 @@ setup_libs(void) {
|
|||||||
check_result(result, "isc_task_create");
|
check_result(result, "isc_task_create");
|
||||||
isc_task_setname(global_task, "dig", NULL);
|
isc_task_setname(global_task, "dig", NULL);
|
||||||
|
|
||||||
result = isc_timermgr_create(mctx, &timermgr);
|
isc_timermgr_create(mctx, &timermgr);
|
||||||
check_result(result, "isc_timermgr_create");
|
|
||||||
|
|
||||||
result = isc_socketmgr_create(mctx, &socketmgr);
|
result = isc_socketmgr_create(mctx, &socketmgr);
|
||||||
check_result(result, "isc_socketmgr_create");
|
check_result(result, "isc_socketmgr_create");
|
||||||
@@ -1361,8 +1358,7 @@ setup_libs(void) {
|
|||||||
check_result(result, "dst_lib_init");
|
check_result(result, "dst_lib_init");
|
||||||
is_dst_up = true;
|
is_dst_up = true;
|
||||||
|
|
||||||
result = isc_mempool_create(mctx, COMMSIZE, &commctx);
|
isc_mempool_create(mctx, COMMSIZE, &commctx);
|
||||||
check_result(result, "isc_mempool_create");
|
|
||||||
isc_mempool_setname(commctx, "COMMPOOL");
|
isc_mempool_setname(commctx, "COMMPOOL");
|
||||||
/*
|
/*
|
||||||
* 6 and 2 set as reasonable parameters for 3 or 4 nameserver
|
* 6 and 2 set as reasonable parameters for 3 or 4 nameserver
|
||||||
@@ -1371,8 +1367,7 @@ setup_libs(void) {
|
|||||||
isc_mempool_setfreemax(commctx, 6);
|
isc_mempool_setfreemax(commctx, 6);
|
||||||
isc_mempool_setfillcount(commctx, 2);
|
isc_mempool_setfillcount(commctx, 2);
|
||||||
|
|
||||||
result = isc_mutex_init(&lookup_lock);
|
isc_mutex_init(&lookup_lock);
|
||||||
check_result(result, "isc_mutex_init");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct dig_ednsoptname {
|
typedef struct dig_ednsoptname {
|
||||||
@@ -2018,9 +2013,8 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
|
|
||||||
debug("setup_lookup(%p)", lookup);
|
debug("setup_lookup(%p)", lookup);
|
||||||
|
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER,
|
dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER,
|
||||||
&lookup->sendmsg);
|
&lookup->sendmsg);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
|
|
||||||
if (lookup->new_search) {
|
if (lookup->new_search) {
|
||||||
debug("resetting lookup counter.");
|
debug("resetting lookup counter.");
|
||||||
@@ -2256,8 +2250,7 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
if (lookup->sendspace == NULL)
|
if (lookup->sendspace == NULL)
|
||||||
fatal("memory allocation failure");
|
fatal("memory allocation failure");
|
||||||
|
|
||||||
result = dns_compress_init(&cctx, -1, mctx);
|
dns_compress_init(&cctx, -1, mctx);
|
||||||
check_result(result, "dns_compress_init");
|
|
||||||
|
|
||||||
debug("starting to render the message");
|
debug("starting to render the message");
|
||||||
isc_buffer_init(&lookup->renderbuf, lookup->sendspace, COMMSIZE);
|
isc_buffer_init(&lookup->renderbuf, lookup->sendspace, COMMSIZE);
|
||||||
@@ -3611,8 +3604,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (!match)
|
if (!match)
|
||||||
goto udp_mismatch;
|
goto udp_mismatch;
|
||||||
|
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &msg);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &msg);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
|
|
||||||
if (tsigkey != NULL) {
|
if (tsigkey != NULL) {
|
||||||
if (l->querysig == NULL) {
|
if (l->querysig == NULL) {
|
||||||
|
|||||||
+1
-2
@@ -201,8 +201,7 @@ say_message(dns_name_t *name, const char *msg, dns_rdata_t *rdata,
|
|||||||
|
|
||||||
dns_name_format(name, namestr, sizeof(namestr));
|
dns_name_format(name, namestr, sizeof(namestr));
|
||||||
retry:
|
retry:
|
||||||
result = isc_buffer_allocate(mctx, &b, bufsize);
|
isc_buffer_allocate(mctx, &b, bufsize);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
result = dns_rdata_totext(rdata, NULL, b);
|
result = dns_rdata_totext(rdata, NULL, b);
|
||||||
if (result == ISC_R_NOSPACE) {
|
if (result == ISC_R_NOSPACE) {
|
||||||
isc_buffer_free(&b);
|
isc_buffer_free(&b);
|
||||||
|
|||||||
+1
-3
@@ -223,9 +223,7 @@ printrdata(dns_rdata_t *rdata) {
|
|||||||
printf("rdata_%d = ", rdata->type);
|
printf("rdata_%d = ", rdata->type);
|
||||||
|
|
||||||
while (!done) {
|
while (!done) {
|
||||||
result = isc_buffer_allocate(mctx, &b, size);
|
isc_buffer_allocate(mctx, &b, size);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
result = dns_rdata_totext(rdata, NULL, b);
|
result = dns_rdata_totext(rdata, NULL, b);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
printf("%.*s\n", (int)isc_buffer_usedlength(b),
|
printf("%.*s\n", (int)isc_buffer_usedlength(b),
|
||||||
|
|||||||
@@ -383,8 +383,7 @@ formatset(dns_rdataset_t *rdataset) {
|
|||||||
mctx);
|
mctx);
|
||||||
check_result(result, "dns_master_stylecreate2 failed");
|
check_result(result, "dns_master_stylecreate2 failed");
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &buf, MAX_CDS_RDATA_TEXT_SIZE);
|
isc_buffer_allocate(mctx, &buf, MAX_CDS_RDATA_TEXT_SIZE);
|
||||||
check_result(result, "printing DS records");
|
|
||||||
result = dns_master_rdatasettotext(name, rdataset, style, buf);
|
result = dns_master_rdatasettotext(name, rdataset, style, buf);
|
||||||
|
|
||||||
if ((result == ISC_R_SUCCESS) && isc_buffer_availablelength(buf) < 1) {
|
if ((result == ISC_R_SUCCESS) && isc_buffer_availablelength(buf) < 1) {
|
||||||
@@ -896,8 +895,7 @@ make_new_ds_set(ds_maker_func_t *ds_from_rdata,
|
|||||||
result = dns_rdatalist_tordataset(dslist, &new_ds_set);
|
result = dns_rdatalist_tordataset(dslist, &new_ds_set);
|
||||||
check_result(result, "dns_rdatalist_tordataset(dslist)");
|
check_result(result, "dns_rdatalist_tordataset(dslist)");
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &new_ds_buf, size);
|
isc_buffer_allocate(mctx, &new_ds_buf, size);
|
||||||
check_result(result, "building new DS records");
|
|
||||||
|
|
||||||
for (result = dns_rdataset_first(rdset);
|
for (result = dns_rdataset_first(rdset);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -1144,10 +1142,7 @@ main(int argc, char *argv[]) {
|
|||||||
int ch;
|
int ch;
|
||||||
char *endp;
|
char *endp;
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
fatal("out of memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
|
|
||||||
|
|||||||
@@ -307,9 +307,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("out of memory");
|
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
isc_commandline_reset = true;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
|
|
||||||
|
|||||||
@@ -91,9 +91,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("Out of memory");
|
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if HAVE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
@@ -170,9 +170,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("Out of memory");
|
|
||||||
|
|
||||||
setup_logging(mctx, &log);
|
setup_logging(mctx, &log);
|
||||||
|
|
||||||
|
|||||||
@@ -232,8 +232,7 @@ dumpnode(dns_name_t *name, dns_dbnode_t *node) {
|
|||||||
|
|
||||||
dns_rdataset_init(&rds);
|
dns_rdataset_init(&rds);
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &buffer, bufsize);
|
isc_buffer_allocate(mctx, &buffer, bufsize);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
|
|
||||||
for (result = dns_rdatasetiter_first(iter);
|
for (result = dns_rdatasetiter_first(iter);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -258,8 +257,7 @@ dumpnode(dns_name_t *name, dns_dbnode_t *node) {
|
|||||||
|
|
||||||
bufsize <<= 1;
|
bufsize <<= 1;
|
||||||
isc_buffer_free(&buffer);
|
isc_buffer_free(&buffer);
|
||||||
result = isc_buffer_allocate(mctx, &buffer, bufsize);
|
isc_buffer_allocate(mctx, &buffer, bufsize);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
}
|
}
|
||||||
check_result(result, "dns_master_rdatasettotext");
|
check_result(result, "dns_master_rdatasettotext");
|
||||||
|
|
||||||
@@ -3277,9 +3275,7 @@ main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
check_result(isc_app_start(), "isc_app_start");
|
check_result(isc_app_start(), "isc_app_start");
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("out of memory");
|
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -3710,10 +3706,7 @@ main(int argc, char *argv[]) {
|
|||||||
* of keys rather early.
|
* of keys rather early.
|
||||||
*/
|
*/
|
||||||
ISC_LIST_INIT(keylist);
|
ISC_LIST_INIT(keylist);
|
||||||
result = isc_rwlock_init(&keylist_lock, 0, 0);
|
isc_rwlock_init(&keylist_lock, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("could not initialize keylist_lock: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill keylist with:
|
* Fill keylist with:
|
||||||
@@ -3875,9 +3868,9 @@ main(int argc, char *argv[]) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mutex_init(&namelock) == ISC_R_SUCCESS);
|
isc_mutex_init(&namelock);
|
||||||
if (printstats)
|
if (printstats)
|
||||||
RUNTIME_CHECK(isc_mutex_init(&statslock) == ISC_R_SUCCESS);
|
isc_mutex_init(&statslock);
|
||||||
|
|
||||||
presign();
|
presign();
|
||||||
TIME_NOW(&sign_start);
|
TIME_NOW(&sign_start);
|
||||||
|
|||||||
@@ -201,9 +201,7 @@ main(int argc, char *argv[]) {
|
|||||||
isc_commandline_reset = true;
|
isc_commandline_reset = true;
|
||||||
check_result(isc_app_start(), "isc_app_start");
|
check_result(isc_app_start(), "isc_app_start");
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("out of memory");
|
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
+1
-3
@@ -802,10 +802,8 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
dns_rootname, 0, NULL);
|
dns_rootname, 0, NULL);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
result = dns_name_dup(dns_fixedname_name(&fname), mctx,
|
dns_name_dup(dns_fixedname_name(&fname), mctx,
|
||||||
keys[i - 1]);
|
keys[i - 1]);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
if (pushed != 0) {
|
if (pushed != 0) {
|
||||||
pushed--;
|
pushed--;
|
||||||
|
|||||||
+2
-6
@@ -100,15 +100,11 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
|
|||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_lex_create(named_g_mctx, strlen(cmdline), &lex);
|
isc_lex_create(named_g_mctx, strlen(cmdline), &lex);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
isc_buffer_init(&src, cmdline, strlen(cmdline));
|
isc_buffer_init(&src, cmdline, strlen(cmdline));
|
||||||
isc_buffer_add(&src, strlen(cmdline));
|
isc_buffer_add(&src, strlen(cmdline));
|
||||||
result = isc_lex_openbuffer(lex, &src);
|
isc_lex_openbuffer(lex, &src);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = getcommand(lex, &command);
|
result = getcommand(lex, &command);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
|
|||||||
@@ -448,9 +448,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
goto cleanup_request;
|
goto cleanup_request;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_buffer_allocate(listener->mctx, &text, 2 * 2048);
|
isc_buffer_allocate(listener->mctx, &text, 2 * 2048);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_request;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establish nonce.
|
* Establish nonce.
|
||||||
@@ -496,10 +494,8 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
goto cleanup_response;
|
goto cleanup_response;
|
||||||
|
|
||||||
if (conn->buffer == NULL) {
|
if (conn->buffer == NULL) {
|
||||||
result = isc_buffer_allocate(listener->mctx,
|
isc_buffer_allocate(listener->mctx,
|
||||||
&conn->buffer, 2 * 2048);
|
&conn->buffer, 2 * 2048);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_buffer_clear(conn->buffer);
|
isc_buffer_clear(conn->buffer);
|
||||||
@@ -1061,7 +1057,8 @@ update_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
aclconfctx, listener->mctx, 0,
|
aclconfctx, listener->mctx, 0,
|
||||||
&new_acl);
|
&new_acl);
|
||||||
} else {
|
} else {
|
||||||
result = dns_acl_any(listener->mctx, &new_acl);
|
dns_acl_any(listener->mctx, &new_acl);
|
||||||
|
result = ISC_R_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (control != NULL) {
|
if (control != NULL) {
|
||||||
@@ -1158,7 +1155,8 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
aclconfctx, mctx, 0,
|
aclconfctx, mctx, 0,
|
||||||
&new_acl);
|
&new_acl);
|
||||||
} else {
|
} else {
|
||||||
result = dns_acl_any(mctx, &new_acl);
|
dns_acl_any(mctx, &new_acl);
|
||||||
|
result = ISC_R_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-13
@@ -815,14 +815,7 @@ create_managers(void) {
|
|||||||
return (ISC_R_UNEXPECTED);
|
return (ISC_R_UNEXPECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_timermgr_create(named_g_mctx, &named_g_timermgr);
|
isc_timermgr_create(named_g_mctx, &named_g_timermgr);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
"isc_timermgr_create() failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
return (ISC_R_UNEXPECTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_socketmgr_create2(named_g_mctx, &named_g_socketmgr,
|
result = isc_socketmgr_create2(named_g_mctx, &named_g_socketmgr,
|
||||||
maxsocks);
|
maxsocks);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
@@ -831,7 +824,7 @@ create_managers(void) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
return (ISC_R_UNEXPECTED);
|
return (ISC_R_UNEXPECTED);
|
||||||
}
|
}
|
||||||
isc__socketmgr_maxudp(named_g_socketmgr, maxudp);
|
isc_socketmgr_maxudp(named_g_socketmgr, maxudp);
|
||||||
result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks);
|
result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
@@ -1387,10 +1380,7 @@ main(int argc, char *argv[]) {
|
|||||||
named_g_chrootdir);
|
named_g_chrootdir);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &named_g_mctx);
|
isc_mem_create(0, 0, &named_g_mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
named_main_earlyfatal("isc_mem_create() failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
isc_mem_setname(named_g_mctx, "main", NULL);
|
isc_mem_setname(named_g_mctx, "main", NULL);
|
||||||
|
|
||||||
setup();
|
setup();
|
||||||
|
|||||||
+41
-77
@@ -656,9 +656,7 @@ configure_view_nametable(const cfg_obj_t *vconfig, const cfg_obj_t *config,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_rbt_create(mctx, NULL, NULL, rbtp);
|
dns_rbt_create(mctx, NULL, NULL, rbtp);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
for (element = cfg_list_first(obj);
|
for (element = cfg_list_first(obj);
|
||||||
@@ -966,13 +964,7 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig,
|
|||||||
maps[i++] = named_g_defaults;
|
maps[i++] = named_g_defaults;
|
||||||
maps[i] = NULL;
|
maps[i] = NULL;
|
||||||
|
|
||||||
result = dns_view_initsecroots(view, mctx);
|
dns_view_initsecroots(view, mctx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
|
||||||
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
|
|
||||||
"couldn't create keytable");
|
|
||||||
return (ISC_R_UNEXPECTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = dns_view_initntatable(view, named_g_taskmgr, named_g_timermgr);
|
result = dns_view_initntatable(view, named_g_taskmgr, named_g_timermgr);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
@@ -1677,10 +1669,8 @@ setquerystats(dns_zone_t *zone, isc_mem_t *mctx, dns_zonestat_level_t level) {
|
|||||||
|
|
||||||
zoneqrystats = NULL;
|
zoneqrystats = NULL;
|
||||||
if (level == dns_zonestat_full) {
|
if (level == dns_zonestat_full) {
|
||||||
result = isc_stats_create(mctx, &zoneqrystats,
|
isc_stats_create(mctx, &zoneqrystats,
|
||||||
ns_statscounter_max);
|
ns_statscounter_max);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
dns_zone_setrequeststats(zone, zoneqrystats);
|
dns_zone_setrequeststats(zone, zoneqrystats);
|
||||||
if (zoneqrystats != NULL)
|
if (zoneqrystats != NULL)
|
||||||
@@ -2836,13 +2826,7 @@ configure_catz_zone(dns_view_t *view, const cfg_obj_t *config,
|
|||||||
* We have to walk through all the member zones and attach
|
* We have to walk through all the member zones and attach
|
||||||
* them to current view
|
* them to current view
|
||||||
*/
|
*/
|
||||||
result = dns_catz_get_iterator(zone, &it);
|
dns_catz_get_iterator(zone, &it);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
cfg_obj_log(catz_obj, named_g_lctx,
|
|
||||||
DNS_CATZ_ERROR_LEVEL,
|
|
||||||
"catz: unable to create iterator");
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (result = isc_ht_iter_first(it);
|
for (result = isc_ht_iter_first(it);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -2938,9 +2922,9 @@ configure_catz(dns_view_t *view, const cfg_obj_t *config,
|
|||||||
if (zone_element == NULL)
|
if (zone_element == NULL)
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
CHECK(dns_catz_new_zones(&view->catzs, &ns_catz_zonemodmethods,
|
dns_catz_new_zones(&view->catzs, &ns_catz_zonemodmethods,
|
||||||
view->mctx, named_g_taskmgr,
|
view->mctx, named_g_taskmgr,
|
||||||
named_g_timermgr));
|
named_g_timermgr);
|
||||||
|
|
||||||
result = dns_viewlist_find(&named_g_server->viewlist, view->name,
|
result = dns_viewlist_find(&named_g_server->viewlist, view->name,
|
||||||
view->rdclass, &pview);
|
view->rdclass, &pview);
|
||||||
@@ -3017,9 +3001,7 @@ configure_rrl(dns_view_t *view, const cfg_obj_t *config, const cfg_obj_t *map) {
|
|||||||
if (min_entries < 1)
|
if (min_entries < 1)
|
||||||
min_entries = 1;
|
min_entries = 1;
|
||||||
}
|
}
|
||||||
result = dns_rrl_init(&rrl, view, min_entries);
|
dns_rrl_init(&rrl, view, min_entries);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
i = ISC_MAX(20000, min_entries);
|
i = ISC_MAX(20000, min_entries);
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
@@ -3603,24 +3585,18 @@ configure_dnstap(const cfg_obj_t **maps, dns_view_t *view) {
|
|||||||
}
|
}
|
||||||
#endif /* HAVE_DNSTAP */
|
#endif /* HAVE_DNSTAP */
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
create_mapped_acl(void) {
|
create_mapped_acl(void) {
|
||||||
isc_result_t result;
|
|
||||||
dns_acl_t *acl = NULL;
|
dns_acl_t *acl = NULL;
|
||||||
struct in6_addr in6 = IN6ADDR_V4MAPPED_INIT;
|
struct in6_addr in6 = IN6ADDR_V4MAPPED_INIT;
|
||||||
isc_netaddr_t addr;
|
isc_netaddr_t addr;
|
||||||
|
|
||||||
isc_netaddr_fromin6(&addr, &in6);
|
isc_netaddr_fromin6(&addr, &in6);
|
||||||
|
|
||||||
result = dns_acl_create(named_g_mctx, 1, &acl);
|
dns_acl_create(named_g_mctx, 1, &acl);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = dns_iptable_addprefix(acl->iptable, &addr, 96, true);
|
dns_iptable_addprefix(acl->iptable, &addr, 96, true);
|
||||||
if (result == ISC_R_SUCCESS)
|
|
||||||
dns_acl_attach(acl, &named_g_mapped);
|
|
||||||
dns_acl_detach(&acl);
|
dns_acl_detach(&acl);
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -4021,9 +3997,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else {
|
} else {
|
||||||
if (named_g_mapped == NULL) {
|
if (named_g_mapped == NULL) {
|
||||||
result = create_mapped_acl();
|
create_mapped_acl();
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
dns_acl_attach(named_g_mapped, &excluded);
|
dns_acl_attach(named_g_mapped, &excluded);
|
||||||
}
|
}
|
||||||
@@ -4202,9 +4176,9 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|||||||
* cache, for the main cache memory and the heap
|
* cache, for the main cache memory and the heap
|
||||||
* memory.
|
* memory.
|
||||||
*/
|
*/
|
||||||
CHECK(isc_mem_create(0, 0, &cmctx));
|
isc_mem_create(0, 0, &cmctx);
|
||||||
isc_mem_setname(cmctx, "cache", NULL);
|
isc_mem_setname(cmctx, "cache", NULL);
|
||||||
CHECK(isc_mem_create(0, 0, &hmctx));
|
isc_mem_create(0, 0, &hmctx);
|
||||||
isc_mem_setname(hmctx, "cache_heap", NULL);
|
isc_mem_setname(hmctx, "cache_heap", NULL);
|
||||||
CHECK(dns_cache_create(cmctx, hmctx, named_g_taskmgr,
|
CHECK(dns_cache_create(cmctx, hmctx, named_g_taskmgr,
|
||||||
named_g_timermgr, view->rdclass,
|
named_g_timermgr, view->rdclass,
|
||||||
@@ -4270,20 +4244,20 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (resstats == NULL) {
|
if (resstats == NULL) {
|
||||||
CHECK(isc_stats_create(mctx, &resstats,
|
isc_stats_create(mctx, &resstats,
|
||||||
dns_resstatscounter_max));
|
dns_resstatscounter_max);
|
||||||
}
|
}
|
||||||
dns_view_setresstats(view, resstats);
|
dns_view_setresstats(view, resstats);
|
||||||
if (resquerystats == NULL)
|
if (resquerystats == NULL)
|
||||||
CHECK(dns_rdatatypestats_create(mctx, &resquerystats));
|
dns_rdatatypestats_create(mctx, &resquerystats);
|
||||||
dns_view_setresquerystats(view, resquerystats);
|
dns_view_setresquerystats(view, resquerystats);
|
||||||
|
|
||||||
ndisp = 4 * ISC_MIN(named_g_udpdisp, MAX_UDP_DISPATCH);
|
ndisp = 4 * ISC_MIN(named_g_udpdisp, MAX_UDP_DISPATCH);
|
||||||
CHECK(dns_view_createresolver(view, named_g_taskmgr, RESOLVER_NTASKS,
|
dns_view_createresolver(view, named_g_taskmgr, RESOLVER_NTASKS,
|
||||||
ndisp, named_g_socketmgr,
|
ndisp, named_g_socketmgr,
|
||||||
named_g_timermgr, resopts,
|
named_g_timermgr, resopts,
|
||||||
named_g_dispatchmgr,
|
named_g_dispatchmgr,
|
||||||
dispatch4, dispatch6));
|
dispatch4, dispatch6);
|
||||||
|
|
||||||
if (dscp4 == -1)
|
if (dscp4 == -1)
|
||||||
dscp4 = named_g_dscp;
|
dscp4 = named_g_dscp;
|
||||||
@@ -4838,10 +4812,10 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|||||||
* been set at the options/view level, set them to none.
|
* been set at the options/view level, set them to none.
|
||||||
*/
|
*/
|
||||||
if (view->cacheacl == NULL) {
|
if (view->cacheacl == NULL) {
|
||||||
CHECK(dns_acl_none(mctx, &view->cacheacl));
|
dns_acl_none(mctx, &view->cacheacl);
|
||||||
}
|
}
|
||||||
if (view->cacheonacl == NULL) {
|
if (view->cacheonacl == NULL) {
|
||||||
CHECK(dns_acl_none(mctx, &view->cacheonacl));
|
dns_acl_none(mctx, &view->cacheonacl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5196,7 +5170,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|||||||
CHECK(dns_name_fromstring(name,
|
CHECK(dns_name_fromstring(name,
|
||||||
cfg_obj_asstring(exclude),
|
cfg_obj_asstring(exclude),
|
||||||
0, NULL));
|
0, NULL));
|
||||||
CHECK(dns_view_excludedelegationonly(view, name));
|
dns_view_excludedelegationonly(view, name);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
dns_view_setrootdelonly(view, false);
|
dns_view_setrootdelonly(view, false);
|
||||||
@@ -5958,7 +5932,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
|
|||||||
tresult = cfg_map_get(zoptions, "delegation-only",
|
tresult = cfg_map_get(zoptions, "delegation-only",
|
||||||
&only);
|
&only);
|
||||||
if (tresult == ISC_R_SUCCESS && cfg_obj_asboolean(only))
|
if (tresult == ISC_R_SUCCESS && cfg_obj_asboolean(only))
|
||||||
CHECK(dns_view_adddelegationonly(view, origin));
|
dns_view_adddelegationonly(view, origin);
|
||||||
} else {
|
} else {
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||||
@@ -5989,7 +5963,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
|
|||||||
only = NULL;
|
only = NULL;
|
||||||
tresult = cfg_map_get(zoptions, "delegation-only", &only);
|
tresult = cfg_map_get(zoptions, "delegation-only", &only);
|
||||||
if (tresult == ISC_R_SUCCESS && cfg_obj_asboolean(only))
|
if (tresult == ISC_R_SUCCESS && cfg_obj_asboolean(only))
|
||||||
CHECK(dns_view_adddelegationonly(view, origin));
|
dns_view_adddelegationonly(view, origin);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5997,7 +5971,8 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
|
|||||||
* "delegation-only zones" aren't zones either.
|
* "delegation-only zones" aren't zones either.
|
||||||
*/
|
*/
|
||||||
if (strcasecmp(ztypestr, "delegation-only") == 0) {
|
if (strcasecmp(ztypestr, "delegation-only") == 0) {
|
||||||
result = dns_view_adddelegationonly(view, origin);
|
dns_view_adddelegationonly(view, origin);
|
||||||
|
result = ISC_R_SUCCESS;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6152,7 +6127,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
|
|||||||
if (cfg_map_get(zoptions, "delegation-only", &only) == ISC_R_SUCCESS)
|
if (cfg_map_get(zoptions, "delegation-only", &only) == ISC_R_SUCCESS)
|
||||||
{
|
{
|
||||||
if (cfg_obj_asboolean(only))
|
if (cfg_obj_asboolean(only))
|
||||||
CHECK(dns_view_adddelegationonly(view, origin));
|
dns_view_adddelegationonly(view, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -6283,7 +6258,7 @@ add_keydata_zone(dns_view_t *view, const char *directory, isc_mem_t *mctx) {
|
|||||||
|
|
||||||
CHECK(dns_zonemgr_managezone(named_g_server->zonemgr, zone));
|
CHECK(dns_zonemgr_managezone(named_g_server->zonemgr, zone));
|
||||||
|
|
||||||
CHECK(dns_acl_none(mctx, &none));
|
dns_acl_none(mctx, &none);
|
||||||
dns_zone_setqueryacl(zone, none);
|
dns_zone_setqueryacl(zone, none);
|
||||||
dns_zone_setqueryonacl(zone, none);
|
dns_zone_setqueryonacl(zone, none);
|
||||||
dns_acl_detach(&none);
|
dns_acl_detach(&none);
|
||||||
@@ -6392,14 +6367,10 @@ add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr,
|
|||||||
(wcardport_ok || isc_sockaddr_getport(addr) != 0)) {
|
(wcardport_ok || isc_sockaddr_getport(addr) != 0)) {
|
||||||
isc_netaddr_fromin6(&netaddr, &addr->type.sin6.sin6_addr);
|
isc_netaddr_fromin6(&netaddr, &addr->type.sin6.sin6_addr);
|
||||||
|
|
||||||
result = dns_acl_create(mctx, 0, &src_acl);
|
dns_acl_create(mctx, 0, &src_acl);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = dns_iptable_addprefix(src_acl->iptable, &netaddr,
|
dns_iptable_addprefix(src_acl->iptable, &netaddr,
|
||||||
128, true);
|
128, true);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto clean;
|
|
||||||
|
|
||||||
result = ns_listenelt_create(mctx, isc_sockaddr_getport(addr),
|
result = ns_listenelt_create(mctx, isc_sockaddr_getport(addr),
|
||||||
dscp, src_acl, &lelt);
|
dscp, src_acl, &lelt);
|
||||||
@@ -7173,7 +7144,7 @@ configure_session_key(const cfg_obj_t **maps, named_server_t *server,
|
|||||||
if (server->session_keyname == NULL)
|
if (server->session_keyname == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
dns_name_init(server->session_keyname, NULL);
|
dns_name_init(server->session_keyname, NULL);
|
||||||
CHECK(dns_name_dup(keyname, mctx, server->session_keyname));
|
dns_name_dup(keyname, mctx, server->session_keyname);
|
||||||
|
|
||||||
server->session_keyfile = isc_mem_strdup(mctx, keyfile);
|
server->session_keyfile = isc_mem_strdup(mctx, keyfile);
|
||||||
if (server->session_keyfile == NULL)
|
if (server->session_keyfile == NULL)
|
||||||
@@ -8098,7 +8069,7 @@ load_configuration(const char *filename, named_server_t *server,
|
|||||||
"less than 128 UDP sockets available after "
|
"less than 128 UDP sockets available after "
|
||||||
"applying 'reserved-sockets' and 'maxsockets'");
|
"applying 'reserved-sockets' and 'maxsockets'");
|
||||||
}
|
}
|
||||||
isc__socketmgr_setreserved(named_g_socketmgr, reserved);
|
isc_socketmgr_setreserved(named_g_socketmgr, reserved);
|
||||||
|
|
||||||
#ifdef HAVE_GEOIP
|
#ifdef HAVE_GEOIP
|
||||||
/*
|
/*
|
||||||
@@ -8241,10 +8212,8 @@ load_configuration(const char *filename, named_server_t *server,
|
|||||||
/*
|
/*
|
||||||
* Configure sets of UDP query source ports.
|
* Configure sets of UDP query source ports.
|
||||||
*/
|
*/
|
||||||
CHECKM(isc_portset_create(named_g_mctx, &v4portset),
|
isc_portset_create(named_g_mctx, &v4portset);
|
||||||
"creating UDP port set");
|
isc_portset_create(named_g_mctx, &v6portset);
|
||||||
CHECKM(isc_portset_create(named_g_mctx, &v6portset),
|
|
||||||
"creating UDP port set");
|
|
||||||
|
|
||||||
usev4ports = NULL;
|
usev4ports = NULL;
|
||||||
usev6ports = NULL;
|
usev6ports = NULL;
|
||||||
@@ -9305,8 +9274,7 @@ run_server(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
|
|
||||||
CHECKFATAL(dns_dispatchmgr_create(named_g_mctx, &named_g_dispatchmgr),
|
dns_dispatchmgr_create(named_g_mctx, &named_g_dispatchmgr);
|
||||||
"creating dispatch manager");
|
|
||||||
|
|
||||||
dns_dispatchmgr_setstats(named_g_dispatchmgr, server->resolverstats);
|
dns_dispatchmgr_setstats(named_g_dispatchmgr, server->resolverstats);
|
||||||
|
|
||||||
@@ -9537,8 +9505,7 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) {
|
|||||||
&server->in_roothints),
|
&server->in_roothints),
|
||||||
"setting up root hints");
|
"setting up root hints");
|
||||||
|
|
||||||
CHECKFATAL(isc_mutex_init(&server->reload_event_lock),
|
isc_mutex_init(&server->reload_event_lock);
|
||||||
"initializing reload event lock");
|
|
||||||
server->reload_event =
|
server->reload_event =
|
||||||
isc_event_allocate(named_g_mctx, server,
|
isc_event_allocate(named_g_mctx, server,
|
||||||
NAMED_EVENT_RELOAD,
|
NAMED_EVENT_RELOAD,
|
||||||
@@ -9629,18 +9596,15 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) {
|
|||||||
server->zonestats = NULL;
|
server->zonestats = NULL;
|
||||||
server->resolverstats = NULL;
|
server->resolverstats = NULL;
|
||||||
server->sockstats = NULL;
|
server->sockstats = NULL;
|
||||||
CHECKFATAL(isc_stats_create(server->mctx, &server->sockstats,
|
isc_stats_create(server->mctx, &server->sockstats,
|
||||||
isc_sockstatscounter_max),
|
isc_sockstatscounter_max);
|
||||||
"isc_stats_create");
|
|
||||||
isc_socketmgr_setstats(named_g_socketmgr, server->sockstats);
|
isc_socketmgr_setstats(named_g_socketmgr, server->sockstats);
|
||||||
|
|
||||||
CHECKFATAL(isc_stats_create(named_g_mctx, &server->zonestats,
|
isc_stats_create(named_g_mctx, &server->zonestats,
|
||||||
dns_zonestatscounter_max),
|
dns_zonestatscounter_max);
|
||||||
"dns_stats_create (zone)");
|
|
||||||
|
|
||||||
CHECKFATAL(isc_stats_create(named_g_mctx, &server->resolverstats,
|
isc_stats_create(named_g_mctx, &server->resolverstats,
|
||||||
dns_resstatscounter_max),
|
dns_resstatscounter_max);
|
||||||
"dns_stats_create (resolver)");
|
|
||||||
|
|
||||||
server->flushonshutdown = false;
|
server->flushonshutdown = false;
|
||||||
|
|
||||||
|
|||||||
@@ -3235,7 +3235,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
isc_sockaddr_t *addr, cfg_aclconfctx_t *aclconfctx,
|
isc_sockaddr_t *addr, cfg_aclconfctx_t *aclconfctx,
|
||||||
const char *socktext)
|
const char *socktext)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
named_statschannel_t *listener;
|
named_statschannel_t *listener;
|
||||||
isc_task_t *task = NULL;
|
isc_task_t *task = NULL;
|
||||||
isc_socket_t *sock = NULL;
|
isc_socket_t *sock = NULL;
|
||||||
@@ -3243,8 +3243,6 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
dns_acl_t *new_acl = NULL;
|
dns_acl_t *new_acl = NULL;
|
||||||
|
|
||||||
listener = isc_mem_get(server->mctx, sizeof(*listener));
|
listener = isc_mem_get(server->mctx, sizeof(*listener));
|
||||||
if (listener == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
listener->httpdmgr = NULL;
|
listener->httpdmgr = NULL;
|
||||||
listener->address = *addr;
|
listener->address = *addr;
|
||||||
@@ -3252,11 +3250,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
listener->mctx = NULL;
|
listener->mctx = NULL;
|
||||||
ISC_LINK_INIT(listener, link);
|
ISC_LINK_INIT(listener, link);
|
||||||
|
|
||||||
result = isc_mutex_init(&listener->lock);
|
isc_mutex_init(&listener->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(server->mctx, listener, sizeof(*listener));
|
|
||||||
return (ISC_R_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_mem_attach(server->mctx, &listener->mctx);
|
isc_mem_attach(server->mctx, &listener->mctx);
|
||||||
|
|
||||||
@@ -3266,7 +3260,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
aclconfctx, listener->mctx, 0,
|
aclconfctx, listener->mctx, 0,
|
||||||
&new_acl);
|
&new_acl);
|
||||||
} else
|
} else
|
||||||
result = dns_acl_any(listener->mctx, &new_acl);
|
dns_acl_any(listener->mctx, &new_acl);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
dns_acl_attach(new_acl, &listener->acl);
|
dns_acl_attach(new_acl, &listener->acl);
|
||||||
@@ -3394,7 +3388,7 @@ update_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
aclconfctx, listener->mctx, 0,
|
aclconfctx, listener->mctx, 0,
|
||||||
&new_acl);
|
&new_acl);
|
||||||
} else
|
} else
|
||||||
result = dns_acl_any(listener->mctx, &new_acl);
|
dns_acl_any(listener->mctx, &new_acl);
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
LOCK(&listener->lock);
|
LOCK(&listener->lock);
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
|||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
dns_name_init(tctx->domain, NULL);
|
dns_name_init(tctx->domain, NULL);
|
||||||
RETERR(dns_name_dup(name, mctx, tctx->domain));
|
dns_name_dup(name, mctx, tctx->domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
|
|||||||
@@ -155,9 +155,7 @@ named_tsigkeyring_fromconfig(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
maps[i++] = cfg_tuple_get(vconfig, "options");
|
maps[i++] = cfg_tuple_get(vconfig, "options");
|
||||||
maps[i] = NULL;
|
maps[i] = NULL;
|
||||||
|
|
||||||
result = dns_tsigkeyring_create(mctx, &ring);
|
dns_tsigkeyring_create(mctx, &ring);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
for (i = 0; ; i++) {
|
for (i = 0; ; i++) {
|
||||||
if (maps[i] == NULL)
|
if (maps[i] == NULL)
|
||||||
|
|||||||
@@ -226,35 +226,20 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
return (ISC_R_FAILURE);
|
return (ISC_R_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
cd = isc_mem_get(mctx, sizeof(*cd));
|
cd = isc_mem_get(mctx, sizeof(*cd));
|
||||||
if (cd == NULL) {
|
|
||||||
isc_mem_destroy(&mctx);
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
memset(cd, 0, sizeof(*cd));
|
memset(cd, 0, sizeof(*cd));
|
||||||
|
|
||||||
cd->mctx = mctx;
|
cd->mctx = mctx;
|
||||||
|
|
||||||
cd->dl_path = isc_mem_strdup(cd->mctx, argv[1]);
|
cd->dl_path = isc_mem_strdup(cd->mctx, argv[1]);
|
||||||
if (cd->dl_path == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
cd->dlzname = isc_mem_strdup(cd->mctx, dlzname);
|
cd->dlzname = isc_mem_strdup(cd->mctx, dlzname);
|
||||||
if (cd->dlzname == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize the lock */
|
/* Initialize the lock */
|
||||||
result = isc_mutex_init(&cd->lock);
|
isc_mutex_init(&cd->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto failed;
|
|
||||||
|
|
||||||
/* Open the library */
|
/* Open the library */
|
||||||
dlopen_flags = RTLD_NOW|RTLD_GLOBAL;
|
dlopen_flags = RTLD_NOW|RTLD_GLOBAL;
|
||||||
|
|||||||
+9
-19
@@ -207,9 +207,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
|
|||||||
updatepolicy = NULL;
|
updatepolicy = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_ssutable_create(mctx, &table);
|
dns_ssutable_create(mctx, &table);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
for (element = cfg_list_first(updatepolicy);
|
for (element = cfg_list_first(updatepolicy);
|
||||||
element != NULL;
|
element != NULL;
|
||||||
@@ -320,16 +318,13 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
|
|||||||
}
|
}
|
||||||
INSIST(i == n);
|
INSIST(i == n);
|
||||||
|
|
||||||
result = dns_ssutable_addrule(table, grant,
|
dns_ssutable_addrule(table, grant,
|
||||||
dns_fixedname_name(&fident),
|
dns_fixedname_name(&fident),
|
||||||
mtype,
|
mtype,
|
||||||
dns_fixedname_name(&fname),
|
dns_fixedname_name(&fname),
|
||||||
n, types);
|
n, types);
|
||||||
if (types != NULL)
|
if (types != NULL)
|
||||||
isc_mem_put(mctx, types, n * sizeof(dns_rdatatype_t));
|
isc_mem_put(mctx, types, n * sizeof(dns_rdatatype_t));
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -350,14 +345,11 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_ssutable_addrule(table, true,
|
dns_ssutable_addrule(table, true,
|
||||||
named_g_server->session_keyname,
|
named_g_server->session_keyname,
|
||||||
dns_ssumatchtype_local,
|
dns_ssumatchtype_local,
|
||||||
dns_zone_getorigin(zone),
|
dns_zone_getorigin(zone),
|
||||||
1, &any);
|
1, &any);
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
@@ -1144,10 +1136,10 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
zoneqrystats = NULL;
|
zoneqrystats = NULL;
|
||||||
rcvquerystats = NULL;
|
rcvquerystats = NULL;
|
||||||
if (statlevel == dns_zonestat_full) {
|
if (statlevel == dns_zonestat_full) {
|
||||||
RETERR(isc_stats_create(mctx, &zoneqrystats,
|
isc_stats_create(mctx, &zoneqrystats,
|
||||||
ns_statscounter_max));
|
ns_statscounter_max);
|
||||||
RETERR(dns_rdatatypestats_create(mctx,
|
dns_rdatatypestats_create(mctx,
|
||||||
&rcvquerystats));
|
&rcvquerystats);
|
||||||
}
|
}
|
||||||
dns_zone_setrequeststats(zone, zoneqrystats);
|
dns_zone_setrequeststats(zone, zoneqrystats);
|
||||||
dns_zone_setrcvquerystats(zone, rcvquerystats);
|
dns_zone_setrcvquerystats(zone, rcvquerystats);
|
||||||
@@ -1744,7 +1736,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
&obj);
|
&obj);
|
||||||
if (obj == NULL) {
|
if (obj == NULL) {
|
||||||
dns_acl_t *none;
|
dns_acl_t *none;
|
||||||
RETERR(dns_acl_none(mctx, &none));
|
dns_acl_none(mctx, &none);
|
||||||
dns_zone_setxfracl(zone, none);
|
dns_zone_setxfracl(zone, none);
|
||||||
dns_acl_detach(&none);
|
dns_acl_detach(&none);
|
||||||
}
|
}
|
||||||
@@ -1880,9 +1872,7 @@ named_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase,
|
|||||||
TIME_NOW(&now);
|
TIME_NOW(&now);
|
||||||
|
|
||||||
dns_zone_settype(zone, dns_zone_dlz);
|
dns_zone_settype(zone, dns_zone_dlz);
|
||||||
result = dns_sdlz_setdb(dlzdatabase, rdclass, name, &db);
|
dns_sdlz_setdb(dlzdatabase, rdclass, name, &db);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
result = dns_zone_dlzpostload(zone, db);
|
result = dns_zone_dlzpostload(zone, db);
|
||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
return (result);
|
return (result);
|
||||||
|
|||||||
+17
-39
@@ -354,9 +354,8 @@ reset_system(void) {
|
|||||||
if (updatemsg != NULL)
|
if (updatemsg != NULL)
|
||||||
dns_message_reset(updatemsg, DNS_MESSAGE_INTENTRENDER);
|
dns_message_reset(updatemsg, DNS_MESSAGE_INTENTRENDER);
|
||||||
else {
|
else {
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER,
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER,
|
||||||
&updatemsg);
|
&updatemsg);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
}
|
}
|
||||||
updatemsg->opcode = dns_opcode_update;
|
updatemsg->opcode = dns_opcode_update;
|
||||||
if (usegsstsig) {
|
if (usegsstsig) {
|
||||||
@@ -876,14 +875,12 @@ setup_system(void) {
|
|||||||
|
|
||||||
irs_resconf_destroy(&resconf);
|
irs_resconf_destroy(&resconf);
|
||||||
|
|
||||||
result = dns_dispatchmgr_create(gmctx, &dispatchmgr);
|
dns_dispatchmgr_create(gmctx, &dispatchmgr);
|
||||||
check_result(result, "dns_dispatchmgr_create");
|
|
||||||
|
|
||||||
result = isc_socketmgr_create(gmctx, &socketmgr);
|
result = isc_socketmgr_create(gmctx, &socketmgr);
|
||||||
check_result(result, "dns_socketmgr_create");
|
check_result(result, "dns_socketmgr_create");
|
||||||
|
|
||||||
result = isc_timermgr_create(gmctx, &timermgr);
|
isc_timermgr_create(gmctx, &timermgr);
|
||||||
check_result(result, "dns_timermgr_create");
|
|
||||||
|
|
||||||
result = isc_taskmgr_create(gmctx, 1, 0, &taskmgr);
|
result = isc_taskmgr_create(gmctx, 1, 0, &taskmgr);
|
||||||
check_result(result, "isc_taskmgr_create");
|
check_result(result, "isc_taskmgr_create");
|
||||||
@@ -925,10 +922,9 @@ setup_system(void) {
|
|||||||
check_result(result, "dns_dispatch_getudp (v4)");
|
check_result(result, "dns_dispatch_getudp (v4)");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_requestmgr_create(gmctx, timermgr,
|
dns_requestmgr_create(gmctx, timermgr,
|
||||||
socketmgr, taskmgr, dispatchmgr,
|
socketmgr, taskmgr, dispatchmgr,
|
||||||
dispatchv4, dispatchv6, &requestmgr);
|
dispatchv4, dispatchv6, &requestmgr);
|
||||||
check_result(result, "dns_requestmgr_create");
|
|
||||||
|
|
||||||
if (keystr != NULL)
|
if (keystr != NULL)
|
||||||
setup_keystr();
|
setup_keystr();
|
||||||
@@ -1215,8 +1211,7 @@ parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) {
|
|||||||
|
|
||||||
result = dns_message_gettempname(msg, namep);
|
result = dns_message_gettempname(msg, namep);
|
||||||
check_result(result, "dns_message_gettempname");
|
check_result(result, "dns_message_gettempname");
|
||||||
result = isc_buffer_allocate(gmctx, &namebuf, DNS_NAME_MAXWIRE);
|
isc_buffer_allocate(gmctx, &namebuf, DNS_NAME_MAXWIRE);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
dns_name_init(*namep, NULL);
|
dns_name_init(*namep, NULL);
|
||||||
dns_name_setbuffer(*namep, namebuf);
|
dns_name_setbuffer(*namep, namebuf);
|
||||||
dns_message_takebuffer(msg, &namebuf);
|
dns_message_takebuffer(msg, &namebuf);
|
||||||
@@ -1255,22 +1250,18 @@ parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
|
|||||||
|
|
||||||
if (*cmdline != 0) {
|
if (*cmdline != 0) {
|
||||||
dns_rdatacallbacks_init(&callbacks);
|
dns_rdatacallbacks_init(&callbacks);
|
||||||
result = isc_lex_create(gmctx, strlen(cmdline), &lex);
|
isc_lex_create(gmctx, strlen(cmdline), &lex);
|
||||||
check_result(result, "isc_lex_create");
|
|
||||||
isc_buffer_init(&source, cmdline, strlen(cmdline));
|
isc_buffer_init(&source, cmdline, strlen(cmdline));
|
||||||
isc_buffer_add(&source, strlen(cmdline));
|
isc_buffer_add(&source, strlen(cmdline));
|
||||||
result = isc_lex_openbuffer(lex, &source);
|
isc_lex_openbuffer(lex, &source);
|
||||||
check_result(result, "isc_lex_openbuffer");
|
isc_buffer_allocate(gmctx, &buf, MAXWIRE);
|
||||||
result = isc_buffer_allocate(gmctx, &buf, MAXWIRE);
|
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
result = dns_rdata_fromtext(NULL, rdataclass, rdatatype, lex,
|
result = dns_rdata_fromtext(NULL, rdataclass, rdatatype, lex,
|
||||||
dns_rootname, 0, gmctx, buf,
|
dns_rootname, 0, gmctx, buf,
|
||||||
&callbacks);
|
&callbacks);
|
||||||
isc_lex_destroy(&lex);
|
isc_lex_destroy(&lex);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
isc_buffer_usedregion(buf, &r);
|
isc_buffer_usedregion(buf, &r);
|
||||||
result = isc_buffer_allocate(gmctx, &newbuf, r.length);
|
isc_buffer_allocate(gmctx, &newbuf, r.length);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
isc_buffer_putmem(newbuf, r.base, r.length);
|
isc_buffer_putmem(newbuf, r.base, r.length);
|
||||||
isc_buffer_usedregion(newbuf, &r);
|
isc_buffer_usedregion(newbuf, &r);
|
||||||
dns_rdata_fromregion(rdata, rdataclass, rdatatype, &r);
|
dns_rdata_fromregion(rdata, rdataclass, rdatatype, &r);
|
||||||
@@ -2026,8 +2017,7 @@ show_message(FILE *stream, dns_message_t *msg, const char *description) {
|
|||||||
}
|
}
|
||||||
if (buf != NULL)
|
if (buf != NULL)
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
result = isc_buffer_allocate(gmctx, &buf, bufsz);
|
isc_buffer_allocate(gmctx, &buf, bufsz);
|
||||||
check_result(result, "isc_buffer_allocate");
|
|
||||||
result = dns_message_totext(msg, style, 0, buf);
|
result = dns_message_totext(msg, style, 0, buf);
|
||||||
bufsz *= 2;
|
bufsz *= 2;
|
||||||
} while (result == ISC_R_NOSPACE);
|
} while (result == ISC_R_NOSPACE);
|
||||||
@@ -2298,8 +2288,7 @@ update_completed(isc_task_t *task, isc_event_t *event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &answer);
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &answer);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
result = dns_request_getresponse(request, answer,
|
result = dns_request_getresponse(request, answer,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
@@ -2480,8 +2469,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
|
|||||||
reqev = NULL;
|
reqev = NULL;
|
||||||
|
|
||||||
ddebug("About to create rcvmsg");
|
ddebug("About to create rcvmsg");
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
result = dns_request_getresponse(request, rcvmsg,
|
result = dns_request_getresponse(request, rcvmsg,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
if (result == DNS_R_TSIGERRORSET && servers != NULL) {
|
if (result == DNS_R_TSIGERRORSET && servers != NULL) {
|
||||||
@@ -2793,11 +2781,7 @@ start_gssrequest(dns_name_t *master) {
|
|||||||
if (gssring != NULL)
|
if (gssring != NULL)
|
||||||
dns_tsigkeyring_detach(&gssring);
|
dns_tsigkeyring_detach(&gssring);
|
||||||
gssring = NULL;
|
gssring = NULL;
|
||||||
result = dns_tsigkeyring_create(gmctx, &gssring);
|
dns_tsigkeyring_create(gmctx, &gssring);
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("dns_tsigkeyring_create failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
|
|
||||||
dns_name_format(master, namestr, sizeof(namestr));
|
dns_name_format(master, namestr, sizeof(namestr));
|
||||||
if (kserver == NULL) {
|
if (kserver == NULL) {
|
||||||
@@ -2846,10 +2830,7 @@ start_gssrequest(dns_name_t *master) {
|
|||||||
keyname->attributes |= DNS_NAMEATTR_NOCOMPRESS;
|
keyname->attributes |= DNS_NAMEATTR_NOCOMPRESS;
|
||||||
|
|
||||||
rmsg = NULL;
|
rmsg = NULL;
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER, &rmsg);
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER, &rmsg);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("dns_message_create failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
|
|
||||||
/* Build first request. */
|
/* Build first request. */
|
||||||
context = GSS_C_NO_CONTEXT;
|
context = GSS_C_NO_CONTEXT;
|
||||||
@@ -2971,8 +2952,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
|
|||||||
reqev = NULL;
|
reqev = NULL;
|
||||||
|
|
||||||
ddebug("recvgss creating rcvmsg");
|
ddebug("recvgss creating rcvmsg");
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
|
|
||||||
result = dns_request_getresponse(request, rcvmsg,
|
result = dns_request_getresponse(request, rcvmsg,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
@@ -3094,9 +3074,8 @@ start_update(void) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER,
|
dns_message_create(gmctx, DNS_MESSAGE_INTENTRENDER,
|
||||||
&soaquery);
|
&soaquery);
|
||||||
check_result(result, "dns_message_create");
|
|
||||||
|
|
||||||
if (default_servers)
|
if (default_servers)
|
||||||
soaquery->flags |= DNS_MESSAGEFLAG_RD;
|
soaquery->flags |= DNS_MESSAGEFLAG_RD;
|
||||||
@@ -3254,8 +3233,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
pre_parse_args(argc, argv);
|
pre_parse_args(argc, argv);
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &gmctx);
|
isc_mem_create(0, 0, &gmctx);
|
||||||
check_result(result, "isc_mem_create");
|
|
||||||
|
|
||||||
parse_args(argc, argv);
|
parse_args(argc, argv);
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -932,7 +932,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
serial = isc_random32();
|
serial = isc_random32();
|
||||||
|
|
||||||
DO("create memory context", isc_mem_create(0, 0, &rndc_mctx));
|
isc_mem_create(0, 0, &rndc_mctx);
|
||||||
DO("create socket manager", isc_socketmgr_create(rndc_mctx, &socketmgr));
|
DO("create socket manager", isc_socketmgr_create(rndc_mctx, &socketmgr));
|
||||||
DO("create task manager", isc_taskmgr_create(rndc_mctx, 1, 0, &taskmgr));
|
DO("create task manager", isc_taskmgr_create(rndc_mctx, 1, 0, &taskmgr));
|
||||||
DO("create task", isc_task_create(taskmgr, 0, &task));
|
DO("create task", isc_task_create(taskmgr, 0, &task));
|
||||||
@@ -957,8 +957,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
command = *argv;
|
command = *argv;
|
||||||
|
|
||||||
DO("allocate data buffer",
|
isc_buffer_allocate(rndc_mctx, &databuf, 2048);
|
||||||
isc_buffer_allocate(rndc_mctx, &databuf, 2048));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert argc/argv into a space-delimited command string
|
* Convert argc/argv into a space-delimited command string
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ main(int argc, char **argv) {
|
|||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
unsigned int zonetype = 0;
|
unsigned int zonetype = 0;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
result = isc_log_create(mctx, &lctx, &lcfg);
|
result = isc_log_create(mctx, &lctx, &lcfg);
|
||||||
check_result(result, "isc_log_create()");
|
check_result(result, "isc_log_create()");
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ main(int argc, char **argv) {
|
|||||||
journal = argv[4];
|
journal = argv[4];
|
||||||
|
|
||||||
isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
|
isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
|
||||||
CHECK(isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
CHECK(dst_lib_init(mctx, NULL));
|
CHECK(dst_lib_init(mctx, NULL));
|
||||||
dst_active = true;
|
dst_active = true;
|
||||||
|
|||||||
@@ -769,7 +769,7 @@ create_db(isc_mem_t *mctx, const dns_name_t *origin, dns_dbtype_t type,
|
|||||||
sampledb->common.attributes = 0;
|
sampledb->common.attributes = 0;
|
||||||
sampledb->common.rdclass = rdclass;
|
sampledb->common.rdclass = rdclass;
|
||||||
|
|
||||||
CHECK(dns_name_dupwithoffsets(origin, mctx, &sampledb->common.origin));
|
dns_name_dupwithoffsets(origin, mctx, &sampledb->common.origin);
|
||||||
|
|
||||||
isc_refcount_init(&sampledb->refs, 1);
|
isc_refcount_init(&sampledb->refs, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ create_zone(sample_instance_t * const inst, dns_name_t * const name,
|
|||||||
CHECK(dns_zonemgr_managezone(inst->zmgr, raw));
|
CHECK(dns_zonemgr_managezone(inst->zmgr, raw));
|
||||||
|
|
||||||
/* This is completely insecure - use some sensible values instead! */
|
/* This is completely insecure - use some sensible values instead! */
|
||||||
CHECK(dns_acl_any(inst->mctx, &acl_any));
|
dns_acl_any(inst->mctx, &acl_any);
|
||||||
dns_zone_setupdateacl(raw, acl_any);
|
dns_zone_setupdateacl(raw, acl_any);
|
||||||
dns_zone_setqueryacl(raw, acl_any);
|
dns_zone_setqueryacl(raw, acl_any);
|
||||||
dns_zone_setxfracl(raw, acl_any);
|
dns_zone_setxfracl(raw, acl_any);
|
||||||
|
|||||||
@@ -88,8 +88,7 @@ recvresponse(isc_task_t *task, isc_event_t *event) {
|
|||||||
query = reqev->ev_arg;
|
query = reqev->ev_arg;
|
||||||
|
|
||||||
response = NULL;
|
response = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
result = dns_request_getresponse(reqev->request, response,
|
result = dns_request_getresponse(reqev->request, response,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
@@ -152,8 +151,7 @@ sendquery(isc_task_t *task) {
|
|||||||
CHECK("dns_name_fromtext", result);
|
CHECK("dns_name_fromtext", result);
|
||||||
|
|
||||||
message = NULL;
|
message = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &message);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &message);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
message->opcode = dns_opcode_query;
|
message->opcode = dns_opcode_query;
|
||||||
message->flags |= DNS_MESSAGEFLAG_RD;
|
message->flags |= DNS_MESSAGEFLAG_RD;
|
||||||
@@ -270,7 +268,7 @@ main(int argc, char *argv[]) {
|
|||||||
isc_sockaddr_fromin(&dstaddr, &inaddr, port);
|
isc_sockaddr_fromin(&dstaddr, &inaddr, port);
|
||||||
|
|
||||||
mctx = NULL;
|
mctx = NULL;
|
||||||
RUNCHECK(isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
lctx = NULL;
|
lctx = NULL;
|
||||||
lcfg = NULL;
|
lcfg = NULL;
|
||||||
@@ -284,11 +282,11 @@ main(int argc, char *argv[]) {
|
|||||||
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
||||||
timermgr = NULL;
|
timermgr = NULL;
|
||||||
|
|
||||||
RUNCHECK(isc_timermgr_create(mctx, &timermgr));
|
isc_timermgr_create(mctx, &timermgr);
|
||||||
socketmgr = NULL;
|
socketmgr = NULL;
|
||||||
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
||||||
dispatchmgr = NULL;
|
dispatchmgr = NULL;
|
||||||
RUNCHECK(dns_dispatchmgr_create(mctx, &dispatchmgr));
|
dns_dispatchmgr_create(mctx, &dispatchmgr);
|
||||||
|
|
||||||
attrs = DNS_DISPATCHATTR_UDP |
|
attrs = DNS_DISPATCHATTR_UDP |
|
||||||
DNS_DISPATCHATTR_MAKEQUERY |
|
DNS_DISPATCHATTR_MAKEQUERY |
|
||||||
@@ -303,9 +301,9 @@ main(int argc, char *argv[]) {
|
|||||||
4096, 4, 2, 3, 5,
|
4096, 4, 2, 3, 5,
|
||||||
attrs, attrmask, &dispatchv4));
|
attrs, attrmask, &dispatchv4));
|
||||||
requestmgr = NULL;
|
requestmgr = NULL;
|
||||||
RUNCHECK(dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
||||||
dispatchmgr, dispatchv4, NULL,
|
dispatchmgr, dispatchv4, NULL,
|
||||||
&requestmgr));
|
&requestmgr);
|
||||||
|
|
||||||
view = NULL;
|
view = NULL;
|
||||||
RUNCHECK(dns_view_create(mctx, 0, "_test", &view));
|
RUNCHECK(dns_view_create(mctx, 0, "_test", &view));
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
CHECK(isc_mem_create(0, 0, &mctx), "isc_mem_create()");
|
isc_mem_create(0, 0, &mctx);
|
||||||
CHECK(dst_lib_init(mctx, NULL), "dst_lib_init()");
|
CHECK(dst_lib_init(mctx, NULL), "dst_lib_init()");
|
||||||
CHECK(isc_log_create(mctx, &log_, &logconfig), "isc_log_create()");
|
CHECK(isc_log_create(mctx, &log_, &logconfig), "isc_log_create()");
|
||||||
isc_log_setcontext(log_);
|
isc_log_setcontext(log_);
|
||||||
|
|||||||
@@ -87,8 +87,7 @@ recvquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
query = reqev->ev_arg;
|
query = reqev->ev_arg;
|
||||||
|
|
||||||
response = NULL;
|
response = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
result = dns_request_getresponse(reqev->request, response,
|
result = dns_request_getresponse(reqev->request, response,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
@@ -176,8 +175,7 @@ sendquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
CHECK("dns_tsigkey_create", result);
|
CHECK("dns_tsigkey_create", result);
|
||||||
|
|
||||||
query = NULL;
|
query = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
result = dns_tkey_builddhquery(query, ourkey,
|
result = dns_tkey_builddhquery(query, ourkey,
|
||||||
dns_fixedname_name(&ownername),
|
dns_fixedname_name(&ownername),
|
||||||
@@ -230,7 +228,7 @@ main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
mctx = NULL;
|
mctx = NULL;
|
||||||
isc_mem_debugging = ISC_MEM_DEBUGRECORD;
|
isc_mem_debugging = ISC_MEM_DEBUGRECORD;
|
||||||
RUNCHECK(isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
log = NULL;
|
log = NULL;
|
||||||
logconfig = NULL;
|
logconfig = NULL;
|
||||||
@@ -243,11 +241,11 @@ main(int argc, char *argv[]) {
|
|||||||
task = NULL;
|
task = NULL;
|
||||||
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
||||||
timermgr = NULL;
|
timermgr = NULL;
|
||||||
RUNCHECK(isc_timermgr_create(mctx, &timermgr));
|
isc_timermgr_create(mctx, &timermgr);
|
||||||
socketmgr = NULL;
|
socketmgr = NULL;
|
||||||
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
||||||
dispatchmgr = NULL;
|
dispatchmgr = NULL;
|
||||||
RUNCHECK(dns_dispatchmgr_create(mctx, &dispatchmgr));
|
dns_dispatchmgr_create(mctx, &dispatchmgr);
|
||||||
isc_sockaddr_any(&bind_any);
|
isc_sockaddr_any(&bind_any);
|
||||||
attrs = DNS_DISPATCHATTR_UDP |
|
attrs = DNS_DISPATCHATTR_UDP |
|
||||||
DNS_DISPATCHATTR_MAKEQUERY |
|
DNS_DISPATCHATTR_MAKEQUERY |
|
||||||
@@ -261,12 +259,12 @@ main(int argc, char *argv[]) {
|
|||||||
&bind_any, 4096, 4, 2, 3, 5,
|
&bind_any, 4096, 4, 2, 3, 5,
|
||||||
attrs, attrmask, &dispatchv4));
|
attrs, attrmask, &dispatchv4));
|
||||||
requestmgr = NULL;
|
requestmgr = NULL;
|
||||||
RUNCHECK(dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
||||||
dispatchmgr, dispatchv4, NULL,
|
dispatchmgr, dispatchv4, NULL,
|
||||||
&requestmgr));
|
&requestmgr);
|
||||||
|
|
||||||
ring = NULL;
|
ring = NULL;
|
||||||
RUNCHECK(dns_tsigkeyring_create(mctx, &ring));
|
dns_tsigkeyring_create(mctx, &ring);
|
||||||
tctx = NULL;
|
tctx = NULL;
|
||||||
RUNCHECK(dns_tkeyctx_create(mctx, &tctx));
|
RUNCHECK(dns_tkeyctx_create(mctx, &tctx));
|
||||||
|
|
||||||
|
|||||||
@@ -79,8 +79,7 @@ recvquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
query = reqev->ev_arg;
|
query = reqev->ev_arg;
|
||||||
|
|
||||||
response = NULL;
|
response = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
result = dns_request_getresponse(reqev->request, response,
|
result = dns_request_getresponse(reqev->request, response,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
@@ -120,8 +119,7 @@ sendquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
isc_sockaddr_fromin(&address, &inaddr, PORT);
|
isc_sockaddr_fromin(&address, &inaddr, PORT);
|
||||||
|
|
||||||
query = NULL;
|
query = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
result = dns_tkey_builddeletequery(query, tsigkey);
|
result = dns_tkey_builddeletequery(query, tsigkey);
|
||||||
CHECK("dns_tkey_builddeletequery", result);
|
CHECK("dns_tkey_builddeletequery", result);
|
||||||
@@ -169,7 +167,7 @@ main(int argc, char **argv) {
|
|||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
mctx = NULL;
|
mctx = NULL;
|
||||||
RUNCHECK(isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
log = NULL;
|
log = NULL;
|
||||||
logconfig = NULL;
|
logconfig = NULL;
|
||||||
@@ -182,11 +180,11 @@ main(int argc, char **argv) {
|
|||||||
task = NULL;
|
task = NULL;
|
||||||
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
||||||
timermgr = NULL;
|
timermgr = NULL;
|
||||||
RUNCHECK(isc_timermgr_create(mctx, &timermgr));
|
isc_timermgr_create(mctx, &timermgr);
|
||||||
socketmgr = NULL;
|
socketmgr = NULL;
|
||||||
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
||||||
dispatchmgr = NULL;
|
dispatchmgr = NULL;
|
||||||
RUNCHECK(dns_dispatchmgr_create(mctx, &dispatchmgr));
|
dns_dispatchmgr_create(mctx, &dispatchmgr);
|
||||||
isc_sockaddr_any(&bind_any);
|
isc_sockaddr_any(&bind_any);
|
||||||
attrs = DNS_DISPATCHATTR_UDP |
|
attrs = DNS_DISPATCHATTR_UDP |
|
||||||
DNS_DISPATCHATTR_MAKEQUERY |
|
DNS_DISPATCHATTR_MAKEQUERY |
|
||||||
@@ -200,12 +198,12 @@ main(int argc, char **argv) {
|
|||||||
&bind_any, 4096, 4, 2, 3, 5,
|
&bind_any, 4096, 4, 2, 3, 5,
|
||||||
attrs, attrmask, &dispatchv4));
|
attrs, attrmask, &dispatchv4));
|
||||||
requestmgr = NULL;
|
requestmgr = NULL;
|
||||||
RUNCHECK(dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
|
||||||
dispatchmgr, dispatchv4, NULL,
|
dispatchmgr, dispatchv4, NULL,
|
||||||
&requestmgr));
|
&requestmgr);
|
||||||
|
|
||||||
ring = NULL;
|
ring = NULL;
|
||||||
RUNCHECK(dns_tsigkeyring_create(mctx, &ring));
|
dns_tsigkeyring_create(mctx, &ring);
|
||||||
tctx = NULL;
|
tctx = NULL;
|
||||||
RUNCHECK(dns_tkeyctx_create(mctx, &tctx));
|
RUNCHECK(dns_tkeyctx_create(mctx, &tctx));
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
isc_commandline_reset = true;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@@ -181,8 +181,7 @@ main(int argc, char *argv[]) {
|
|||||||
} else
|
} else
|
||||||
f = stdin;
|
f = stdin;
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &input, 64 * 1024);
|
isc_buffer_allocate(mctx, &input, 64 * 1024);
|
||||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
if (rawdata) {
|
if (rawdata) {
|
||||||
while (fread(&c, 1, 1, f) != 0) {
|
while (fread(&c, 1, 1, f) != 0) {
|
||||||
@@ -266,8 +265,7 @@ process_message(isc_buffer_t *source) {
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
message = NULL;
|
message = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &message);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &message);
|
||||||
CHECKRESULT(result, "dns_message_create failed");
|
|
||||||
|
|
||||||
result = dns_message_parse(message, source, parseflags);
|
result = dns_message_parse(message, source, parseflags);
|
||||||
if (result == DNS_R_RECOVERABLE)
|
if (result == DNS_R_RECOVERABLE)
|
||||||
@@ -297,8 +295,7 @@ process_message(isc_buffer_t *source) {
|
|||||||
for (i = 0; i < DNS_SECTION_MAX; i++)
|
for (i = 0; i < DNS_SECTION_MAX; i++)
|
||||||
message->counts[i] = 0; /* Another hack XXX */
|
message->counts[i] = 0; /* Another hack XXX */
|
||||||
|
|
||||||
result = dns_compress_init(&cctx, -1, mctx);
|
dns_compress_init(&cctx, -1, mctx);
|
||||||
CHECKRESULT(result, "dns_compress_init() failed");
|
|
||||||
|
|
||||||
result = dns_message_renderbegin(message, &cctx, &buffer);
|
result = dns_message_renderbegin(message, &cctx, &buffer);
|
||||||
CHECKRESULT(result, "dns_message_renderbegin() failed");
|
CHECKRESULT(result, "dns_message_renderbegin() failed");
|
||||||
@@ -334,9 +331,8 @@ process_message(isc_buffer_t *source) {
|
|||||||
if (printmemstats)
|
if (printmemstats)
|
||||||
isc_mem_stats(mctx, stdout);
|
isc_mem_stats(mctx, stdout);
|
||||||
|
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE,
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE,
|
||||||
&message);
|
&message);
|
||||||
CHECKRESULT(result, "dns_message_create failed");
|
|
||||||
|
|
||||||
result = dns_message_parse(message, &buffer, parseflags);
|
result = dns_message_parse(message, &buffer, parseflags);
|
||||||
CHECKRESULT(result, "dns_message_parse failed");
|
CHECKRESULT(result, "dns_message_parse failed");
|
||||||
|
|||||||
+10
-17
@@ -234,8 +234,7 @@ recvresponse(isc_task_t *task, isc_event_t *event) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
parseflags |= DNS_MESSAGEPARSE_PRESERVEORDER;
|
parseflags |= DNS_MESSAGEPARSE_PRESERVEORDER;
|
||||||
if (besteffort) {
|
if (besteffort) {
|
||||||
@@ -292,8 +291,7 @@ recvresponse(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (!display_comments)
|
if (!display_comments)
|
||||||
flags |= DNS_MESSAGETEXTFLAG_NOCOMMENTS;
|
flags |= DNS_MESSAGETEXTFLAG_NOCOMMENTS;
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &buf, len);
|
isc_buffer_allocate(mctx, &buf, len);
|
||||||
CHECK("isc_buffer_allocate", result);
|
|
||||||
|
|
||||||
if (display_comments && !display_short_form) {
|
if (display_comments && !display_short_form) {
|
||||||
printf(";; Got answer:\n");
|
printf(";; Got answer:\n");
|
||||||
@@ -346,11 +344,8 @@ repopulate_buffer:
|
|||||||
buftoosmall:
|
buftoosmall:
|
||||||
len += OUTPUTBUF;
|
len += OUTPUTBUF;
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
result = isc_buffer_allocate(mctx, &buf, len);
|
isc_buffer_allocate(mctx, &buf, len);
|
||||||
if (result == ISC_R_SUCCESS)
|
goto repopulate_buffer;
|
||||||
goto repopulate_buffer;
|
|
||||||
else
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
CHECK("dns_message_pseudosectiontotext", result);
|
CHECK("dns_message_pseudosectiontotext", result);
|
||||||
}
|
}
|
||||||
@@ -536,8 +531,7 @@ sendquery(struct query *query, isc_task_t *task)
|
|||||||
CHECK("dns_name_fromtext", result);
|
CHECK("dns_name_fromtext", result);
|
||||||
|
|
||||||
message = NULL;
|
message = NULL;
|
||||||
result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &message);
|
dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &message);
|
||||||
CHECK("dns_message_create", result);
|
|
||||||
|
|
||||||
message->opcode = dns_opcode_query;
|
message->opcode = dns_opcode_query;
|
||||||
if (query->recurse)
|
if (query->recurse)
|
||||||
@@ -608,7 +602,6 @@ sendquery(struct query *query, isc_task_t *task)
|
|||||||
INSIST(i < DNS_EDNSOPTIONS);
|
INSIST(i < DNS_EDNSOPTIONS);
|
||||||
opts[i].code = DNS_OPT_CLIENT_SUBNET;
|
opts[i].code = DNS_OPT_CLIENT_SUBNET;
|
||||||
opts[i].length = (uint16_t) addrl + 4;
|
opts[i].length = (uint16_t) addrl + 4;
|
||||||
CHECK("isc_buffer_allocate", result);
|
|
||||||
isc_buffer_init(&b, ecsbuf, sizeof(ecsbuf));
|
isc_buffer_init(&b, ecsbuf, sizeof(ecsbuf));
|
||||||
if (sa->sa_family == AF_INET) {
|
if (sa->sa_family == AF_INET) {
|
||||||
family = 1;
|
family = 1;
|
||||||
@@ -1941,7 +1934,7 @@ main(int argc, char *argv[]) {
|
|||||||
preparse_args(argc, argv);
|
preparse_args(argc, argv);
|
||||||
|
|
||||||
mctx = NULL;
|
mctx = NULL;
|
||||||
RUNCHECK(isc_mem_create(0, 0, &mctx));
|
isc_mem_create(0, 0, &mctx);
|
||||||
|
|
||||||
lctx = NULL;
|
lctx = NULL;
|
||||||
lcfg = NULL;
|
lcfg = NULL;
|
||||||
@@ -1978,11 +1971,11 @@ main(int argc, char *argv[]) {
|
|||||||
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
RUNCHECK(isc_task_create(taskmgr, 0, &task));
|
||||||
timermgr = NULL;
|
timermgr = NULL;
|
||||||
|
|
||||||
RUNCHECK(isc_timermgr_create(mctx, &timermgr));
|
isc_timermgr_create(mctx, &timermgr);
|
||||||
socketmgr = NULL;
|
socketmgr = NULL;
|
||||||
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
|
||||||
dispatchmgr = NULL;
|
dispatchmgr = NULL;
|
||||||
RUNCHECK(dns_dispatchmgr_create(mctx, &dispatchmgr));
|
dns_dispatchmgr_create(mctx, &dispatchmgr);
|
||||||
|
|
||||||
attrs = DNS_DISPATCHATTR_UDP |
|
attrs = DNS_DISPATCHATTR_UDP |
|
||||||
DNS_DISPATCHATTR_MAKEQUERY;
|
DNS_DISPATCHATTR_MAKEQUERY;
|
||||||
@@ -2003,11 +1996,11 @@ main(int argc, char *argv[]) {
|
|||||||
4096, 100, 100, 17, 19,
|
4096, 100, 100, 17, 19,
|
||||||
attrs, attrmask, &dispatchvx));
|
attrs, attrmask, &dispatchvx));
|
||||||
requestmgr = NULL;
|
requestmgr = NULL;
|
||||||
RUNCHECK(dns_requestmgr_create(mctx, timermgr, socketmgr,
|
dns_requestmgr_create(mctx, timermgr, socketmgr,
|
||||||
taskmgr, dispatchmgr,
|
taskmgr, dispatchmgr,
|
||||||
have_ipv4 ? dispatchvx : NULL,
|
have_ipv4 ? dispatchvx : NULL,
|
||||||
have_ipv6 ? dispatchvx : NULL,
|
have_ipv6 ? dispatchvx : NULL,
|
||||||
&requestmgr));
|
&requestmgr);
|
||||||
|
|
||||||
view = NULL;
|
view = NULL;
|
||||||
RUNCHECK(dns_view_create(mctx, 0, "_test", &view));
|
RUNCHECK(dns_view_create(mctx, 0, "_test", &view));
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
file = argv[1];
|
file = argv[1];
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
RUNTIME_CHECK(setup_logging(mctx, stderr, &lctx) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(setup_logging(mctx, stderr, &lctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
result = dns_journal_print(mctx, file, stdout);
|
result = dns_journal_print(mctx, file, stdout);
|
||||||
|
|||||||
@@ -148,8 +148,8 @@ main(int argc, char *argv[]) {
|
|||||||
if (doexit)
|
if (doexit)
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
RUNTIME_CHECK(isc_lex_create(mctx, 256, &lex) == ISC_R_SUCCESS);
|
isc_lex_create(mctx, 256, &lex);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set up to lex DNS master file.
|
* Set up to lex DNS master file.
|
||||||
@@ -162,7 +162,7 @@ main(int argc, char *argv[]) {
|
|||||||
options = ISC_LEXOPT_EOL;
|
options = ISC_LEXOPT_EOL;
|
||||||
isc_lex_setcomments(lex, ISC_LEXCOMMENT_DNSMASTERFILE);
|
isc_lex_setcomments(lex, ISC_LEXCOMMENT_DNSMASTERFILE);
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_lex_openstream(lex, stdin) == ISC_R_SUCCESS);
|
isc_lex_openstream(lex, stdin);
|
||||||
|
|
||||||
if (origin != NULL) {
|
if (origin != NULL) {
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
|||||||
static isc_mem_t *mctx = NULL;
|
static isc_mem_t *mctx = NULL;
|
||||||
|
|
||||||
static void __attribute__((constructor)) init(void) {
|
static void __attribute__((constructor)) init(void) {
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
isc_mem_create(0, 0, &mctx);
|
||||||
RUNTIME_CHECK(dst_lib_init(mctx, NULL) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(dst_lib_init(mctx, NULL) == ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
-63
@@ -30,9 +30,8 @@
|
|||||||
* for 'n' ACL elements. The elements are uninitialized and the
|
* for 'n' ACL elements. The elements are uninitialized and the
|
||||||
* length is 0.
|
* length is 0.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
||||||
isc_result_t result;
|
|
||||||
dns_acl_t *acl;
|
dns_acl_t *acl;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -42,9 +41,6 @@ dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
|||||||
n = 1;
|
n = 1;
|
||||||
|
|
||||||
acl = isc_mem_get(mctx, sizeof(*acl));
|
acl = isc_mem_get(mctx, sizeof(*acl));
|
||||||
if (acl == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
acl->mctx = NULL;
|
acl->mctx = NULL;
|
||||||
isc_mem_attach(mctx, &acl->mctx);
|
isc_mem_attach(mctx, &acl->mctx);
|
||||||
|
|
||||||
@@ -52,11 +48,7 @@ dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
|||||||
|
|
||||||
isc_refcount_init(&acl->refcount, 1);
|
isc_refcount_init(&acl->refcount, 1);
|
||||||
|
|
||||||
result = dns_iptable_create(mctx, &acl->iptable);
|
dns_iptable_create(mctx, &acl->iptable);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, acl, sizeof(*acl));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
acl->elements = NULL;
|
acl->elements = NULL;
|
||||||
acl->alloc = 0;
|
acl->alloc = 0;
|
||||||
@@ -70,18 +62,9 @@ dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
|||||||
acl->magic = DNS_ACL_MAGIC;
|
acl->magic = DNS_ACL_MAGIC;
|
||||||
|
|
||||||
acl->elements = isc_mem_get(mctx, n * sizeof(dns_aclelement_t));
|
acl->elements = isc_mem_get(mctx, n * sizeof(dns_aclelement_t));
|
||||||
if (acl->elements == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
acl->alloc = n;
|
acl->alloc = n;
|
||||||
memset(acl->elements, 0, n * sizeof(dns_aclelement_t));
|
memset(acl->elements, 0, n * sizeof(dns_aclelement_t));
|
||||||
*target = acl;
|
*target = acl;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
dns_acl_detach(&acl);
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -90,39 +73,30 @@ dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target) {
|
|||||||
* "any" is a positive iptable entry with bit length 0.
|
* "any" is a positive iptable entry with bit length 0.
|
||||||
* "none" is the same as "!any".
|
* "none" is the same as "!any".
|
||||||
*/
|
*/
|
||||||
static isc_result_t
|
static void
|
||||||
dns_acl_anyornone(isc_mem_t *mctx, bool neg, dns_acl_t **target) {
|
dns_acl_anyornone(isc_mem_t *mctx, bool neg, dns_acl_t **target) {
|
||||||
isc_result_t result;
|
|
||||||
dns_acl_t *acl = NULL;
|
dns_acl_t *acl = NULL;
|
||||||
|
|
||||||
result = dns_acl_create(mctx, 0, &acl);
|
dns_acl_create(mctx, 0, &acl);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = dns_iptable_addprefix(acl->iptable, NULL, 0, !neg);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dns_acl_detach(&acl);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
dns_iptable_addprefix(acl->iptable, NULL, 0, !neg);
|
||||||
*target = acl;
|
*target = acl;
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new ACL that matches everything.
|
* Create a new ACL that matches everything.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_any(isc_mem_t *mctx, dns_acl_t **target) {
|
dns_acl_any(isc_mem_t *mctx, dns_acl_t **target) {
|
||||||
return (dns_acl_anyornone(mctx, false, target));
|
dns_acl_anyornone(mctx, false, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new ACL that matches nothing.
|
* Create a new ACL that matches nothing.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_none(isc_mem_t *mctx, dns_acl_t **target) {
|
dns_acl_none(isc_mem_t *mctx, dns_acl_t **target) {
|
||||||
return (dns_acl_anyornone(mctx, true, target));
|
dns_acl_anyornone(mctx, true, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -262,10 +236,9 @@ dns_acl_match(const isc_netaddr_t *reqaddr,
|
|||||||
* but leave negatives alone, so as to prevent a double-negative causing
|
* but leave negatives alone, so as to prevent a double-negative causing
|
||||||
* an unexpected positive match in the parent ACL.
|
* an unexpected positive match in the parent ACL.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos)
|
dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
|
||||||
unsigned int newalloc, nelem, i;
|
unsigned int newalloc, nelem, i;
|
||||||
int max_node = 0, nodes;
|
int max_node = 0, nodes;
|
||||||
|
|
||||||
@@ -279,8 +252,6 @@ dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos)
|
|||||||
|
|
||||||
newmem = isc_mem_get(dest->mctx,
|
newmem = isc_mem_get(dest->mctx,
|
||||||
newalloc * sizeof(dns_aclelement_t));
|
newalloc * sizeof(dns_aclelement_t));
|
||||||
if (newmem == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
/* Zero. */
|
/* Zero. */
|
||||||
memset(newmem, 0, newalloc * sizeof(dns_aclelement_t));
|
memset(newmem, 0, newalloc * sizeof(dns_aclelement_t));
|
||||||
@@ -324,11 +295,9 @@ dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos)
|
|||||||
/* Duplicate key name. */
|
/* Duplicate key name. */
|
||||||
if (source->elements[i].type == dns_aclelementtype_keyname) {
|
if (source->elements[i].type == dns_aclelementtype_keyname) {
|
||||||
dns_name_init(&dest->elements[nelem+i].keyname, NULL);
|
dns_name_init(&dest->elements[nelem+i].keyname, NULL);
|
||||||
result = dns_name_dup(&source->elements[i].keyname,
|
dns_name_dup(&source->elements[i].keyname,
|
||||||
dest->mctx,
|
dest->mctx,
|
||||||
&dest->elements[nelem+i].keyname);
|
&dest->elements[nelem+i].keyname);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_GEOIP
|
#ifdef HAVE_GEOIP
|
||||||
@@ -353,13 +322,9 @@ dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos)
|
|||||||
* node_count value is set correctly afterward.
|
* node_count value is set correctly afterward.
|
||||||
*/
|
*/
|
||||||
nodes = max_node + dest->node_count;
|
nodes = max_node + dest->node_count;
|
||||||
result = dns_iptable_merge(dest->iptable, source->iptable, pos);
|
dns_iptable_merge(dest->iptable, source->iptable, pos);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
if (nodes > dest->node_count)
|
if (nodes > dest->node_count)
|
||||||
dest->node_count = nodes;
|
dest->node_count = nodes;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -498,7 +463,7 @@ static bool insecure_prefix_found;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
initialize_action(void) {
|
initialize_action(void) {
|
||||||
RUNTIME_CHECK(isc_mutex_init(&insecure_prefix_lock) == ISC_R_SUCCESS);
|
isc_mutex_init(&insecure_prefix_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -625,28 +590,18 @@ dns_acl_allowed(isc_netaddr_t *addr, dns_name_t *signer,
|
|||||||
/*
|
/*
|
||||||
* Initialize ACL environment, setting up localhost and localnets ACLs
|
* Initialize ACL environment, setting up localhost and localnets ACLs
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_aclenv_init(isc_mem_t *mctx, dns_aclenv_t *env) {
|
dns_aclenv_init(isc_mem_t *mctx, dns_aclenv_t *env) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
env->localhost = NULL;
|
env->localhost = NULL;
|
||||||
env->localnets = NULL;
|
env->localnets = NULL;
|
||||||
result = dns_acl_create(mctx, 0, &env->localhost);
|
dns_acl_create(mctx, 0, &env->localhost);
|
||||||
if (result != ISC_R_SUCCESS)
|
dns_acl_create(mctx, 0, &env->localnets);
|
||||||
goto cleanup_nothing;
|
|
||||||
result = dns_acl_create(mctx, 0, &env->localnets);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_localhost;
|
|
||||||
env->match_mapped = false;
|
env->match_mapped = false;
|
||||||
#ifdef HAVE_GEOIP
|
#ifdef HAVE_GEOIP
|
||||||
env->geoip = NULL;
|
env->geoip = NULL;
|
||||||
#endif
|
#endif
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_localhost:
|
|
||||||
dns_acl_detach(&env->localhost);
|
|
||||||
cleanup_nothing:
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+33
-183
@@ -602,17 +602,11 @@ grow_entries(isc_task_t *task, isc_event_t *ev) {
|
|||||||
newentrylocks = isc_mem_get(adb->mctx, sizeof(*newentrylocks) * n);
|
newentrylocks = isc_mem_get(adb->mctx, sizeof(*newentrylocks) * n);
|
||||||
newentry_sd = isc_mem_get(adb->mctx, sizeof(*newentry_sd) * n);
|
newentry_sd = isc_mem_get(adb->mctx, sizeof(*newentry_sd) * n);
|
||||||
newentry_refcnt = isc_mem_get(adb->mctx, sizeof(*newentry_refcnt) * n);
|
newentry_refcnt = isc_mem_get(adb->mctx, sizeof(*newentry_refcnt) * n);
|
||||||
if (newentries == NULL || newdeadentries == NULL ||
|
|
||||||
newentrylocks == NULL || newentry_sd == NULL ||
|
|
||||||
newentry_refcnt == NULL)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the new resources.
|
* Initialise the new resources.
|
||||||
*/
|
*/
|
||||||
result = isc_mutexblock_init(newentrylocks, n);
|
isc_mutexblock_init(newentrylocks, n);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
ISC_LIST_INIT(newentries[i]);
|
ISC_LIST_INIT(newentries[i]);
|
||||||
@@ -655,7 +649,7 @@ grow_entries(isc_task_t *task, isc_event_t *ev) {
|
|||||||
/*
|
/*
|
||||||
* Cleanup old resources.
|
* Cleanup old resources.
|
||||||
*/
|
*/
|
||||||
DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries);
|
isc_mutexblock_destroy(adb->entrylocks, adb->nentries);
|
||||||
isc_mem_put(adb->mctx, adb->entries,
|
isc_mem_put(adb->mctx, adb->entries,
|
||||||
sizeof(*adb->entries) * adb->nentries);
|
sizeof(*adb->entries) * adb->nentries);
|
||||||
isc_mem_put(adb->mctx, adb->deadentries,
|
isc_mem_put(adb->mctx, adb->deadentries,
|
||||||
@@ -759,17 +753,11 @@ grow_names(isc_task_t *task, isc_event_t *ev) {
|
|||||||
newnamelocks = isc_mem_get(adb->mctx, sizeof(*newnamelocks) * n);
|
newnamelocks = isc_mem_get(adb->mctx, sizeof(*newnamelocks) * n);
|
||||||
newname_sd = isc_mem_get(adb->mctx, sizeof(*newname_sd) * n);
|
newname_sd = isc_mem_get(adb->mctx, sizeof(*newname_sd) * n);
|
||||||
newname_refcnt = isc_mem_get(adb->mctx, sizeof(*newname_refcnt) * n);
|
newname_refcnt = isc_mem_get(adb->mctx, sizeof(*newname_refcnt) * n);
|
||||||
if (newnames == NULL || newdeadnames == NULL ||
|
|
||||||
newnamelocks == NULL || newname_sd == NULL ||
|
|
||||||
newname_refcnt == NULL)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the new resources.
|
* Initialise the new resources.
|
||||||
*/
|
*/
|
||||||
result = isc_mutexblock_init(newnamelocks, n);
|
isc_mutexblock_init(newnamelocks, n);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
ISC_LIST_INIT(newnames[i]);
|
ISC_LIST_INIT(newnames[i]);
|
||||||
@@ -812,7 +800,7 @@ grow_names(isc_task_t *task, isc_event_t *ev) {
|
|||||||
/*
|
/*
|
||||||
* Cleanup old resources.
|
* Cleanup old resources.
|
||||||
*/
|
*/
|
||||||
DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames);
|
isc_mutexblock_destroy(adb->namelocks, adb->nnames);
|
||||||
isc_mem_put(adb->mctx, adb->names,
|
isc_mem_put(adb->mctx, adb->names,
|
||||||
sizeof(*adb->names) * adb->nnames);
|
sizeof(*adb->names) * adb->nnames);
|
||||||
isc_mem_put(adb->mctx, adb->deadnames,
|
isc_mem_put(adb->mctx, adb->deadnames,
|
||||||
@@ -1408,10 +1396,8 @@ set_target(dns_adb_t *adb, const dns_name_t *name, const dns_name_t *fname,
|
|||||||
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
result = dns_name_dup(&cname.cname, adb->mctx, target);
|
dns_name_dup(&cname.cname, adb->mctx, target);
|
||||||
dns_rdata_freestruct(&cname);
|
dns_rdata_freestruct(&cname);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
} else {
|
} else {
|
||||||
dns_rdata_dname_t dname;
|
dns_rdata_dname_t dname;
|
||||||
|
|
||||||
@@ -1439,9 +1425,7 @@ set_target(dns_adb_t *adb, const dns_name_t *name, const dns_name_t *fname,
|
|||||||
dns_rdata_freestruct(&dname);
|
dns_rdata_freestruct(&dname);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
result = dns_name_dup(new_target, adb->mctx, target);
|
dns_name_dup(new_target, adb->mctx, target);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
@@ -1676,10 +1660,7 @@ new_adbname(dns_adb_t *adb, const dns_name_t *dnsname) {
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
dns_name_init(&name->name, NULL);
|
dns_name_init(&name->name, NULL);
|
||||||
if (dns_name_dup(dnsname, adb->mctx, &name->name) != ISC_R_SUCCESS) {
|
dns_name_dup(dnsname, adb->mctx, &name->name);
|
||||||
isc_mempool_put(adb->nmp, name);
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
dns_name_init(&name->target, NULL);
|
dns_name_init(&name->target, NULL);
|
||||||
name->magic = DNS_ADBNAME_MAGIC;
|
name->magic = DNS_ADBNAME_MAGIC;
|
||||||
name->adb = adb;
|
name->adb = adb;
|
||||||
@@ -1782,10 +1763,7 @@ new_adblameinfo(dns_adb_t *adb, const dns_name_t *qname,
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
dns_name_init(&li->qname, NULL);
|
dns_name_init(&li->qname, NULL);
|
||||||
if (dns_name_dup(qname, adb->mctx, &li->qname) != ISC_R_SUCCESS) {
|
dns_name_dup(qname, adb->mctx, &li->qname);
|
||||||
isc_mempool_put(adb->limp, li);
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
li->magic = DNS_ADBLAMEINFO_MAGIC;
|
li->magic = DNS_ADBLAMEINFO_MAGIC;
|
||||||
li->lame_timer = 0;
|
li->lame_timer = 0;
|
||||||
li->qtype = qtype;
|
li->qtype = qtype;
|
||||||
@@ -1921,11 +1899,7 @@ new_adbfind(dns_adb_t *adb) {
|
|||||||
/*
|
/*
|
||||||
* private members
|
* private members
|
||||||
*/
|
*/
|
||||||
result = isc_mutex_init(&h->lock);
|
isc_mutex_init(&h->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mempool_put(adb->ahmp, h);
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
ISC_EVENT_INIT(&h->event, sizeof(isc_event_t), 0, 0, 0, NULL, NULL,
|
ISC_EVENT_INIT(&h->event, sizeof(isc_event_t), 0, 0, 0, NULL, NULL,
|
||||||
NULL, NULL, h);
|
NULL, NULL, h);
|
||||||
@@ -2481,7 +2455,7 @@ destroy(dns_adb_t *adb) {
|
|||||||
isc_mempool_destroy(&adb->aimp);
|
isc_mempool_destroy(&adb->aimp);
|
||||||
isc_mempool_destroy(&adb->afmp);
|
isc_mempool_destroy(&adb->afmp);
|
||||||
|
|
||||||
DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries);
|
isc_mutexblock_destroy(adb->entrylocks, adb->nentries);
|
||||||
isc_mem_put(adb->mctx, adb->entries,
|
isc_mem_put(adb->mctx, adb->entries,
|
||||||
sizeof(*adb->entries) * adb->nentries);
|
sizeof(*adb->entries) * adb->nentries);
|
||||||
isc_mem_put(adb->mctx, adb->deadentries,
|
isc_mem_put(adb->mctx, adb->deadentries,
|
||||||
@@ -2493,7 +2467,7 @@ destroy(dns_adb_t *adb) {
|
|||||||
isc_mem_put(adb->mctx, adb->entry_refcnt,
|
isc_mem_put(adb->mctx, adb->entry_refcnt,
|
||||||
sizeof(*adb->entry_refcnt) * adb->nentries);
|
sizeof(*adb->entry_refcnt) * adb->nentries);
|
||||||
|
|
||||||
DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames);
|
isc_mutexblock_destroy(adb->namelocks, adb->nnames);
|
||||||
isc_mem_put(adb->mctx, adb->names,
|
isc_mem_put(adb->mctx, adb->names,
|
||||||
sizeof(*adb->names) * adb->nnames);
|
sizeof(*adb->names) * adb->nnames);
|
||||||
isc_mem_put(adb->mctx, adb->deadnames,
|
isc_mem_put(adb->mctx, adb->deadnames,
|
||||||
@@ -2520,7 +2494,7 @@ destroy(dns_adb_t *adb) {
|
|||||||
* Public functions.
|
* Public functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
||||||
isc_taskmgr_t *taskmgr, dns_adb_t **newadb)
|
isc_taskmgr_t *taskmgr, dns_adb_t **newadb)
|
||||||
{
|
{
|
||||||
@@ -2537,8 +2511,6 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
|||||||
UNUSED(timermgr);
|
UNUSED(timermgr);
|
||||||
|
|
||||||
adb = isc_mem_get(mem, sizeof(dns_adb_t));
|
adb = isc_mem_get(mem, sizeof(dns_adb_t));
|
||||||
if (adb == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize things here that cannot fail, and especially things
|
* Initialize things here that cannot fail, and especially things
|
||||||
@@ -2607,69 +2579,30 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
|||||||
|
|
||||||
isc_mem_attach(mem, &adb->mctx);
|
isc_mem_attach(mem, &adb->mctx);
|
||||||
|
|
||||||
result = isc_mutex_init(&adb->lock);
|
isc_mutex_init(&adb->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_mutex_init(&adb->mplock);
|
||||||
goto fail0b;
|
isc_mutex_init(&adb->reflock);
|
||||||
|
isc_mutex_init(&adb->overmemlock);
|
||||||
|
isc_mutex_init(&adb->entriescntlock);
|
||||||
|
isc_mutex_init(&adb->namescntlock);
|
||||||
|
|
||||||
result = isc_mutex_init(&adb->mplock);
|
adb->entries = isc_mem_get(adb->mctx, sizeof(*adb->entries) * adb->nentries);
|
||||||
if (result != ISC_R_SUCCESS)
|
adb->deadentries = isc_mem_get(adb->mctx, sizeof(*adb->deadentries) * adb->nentries);
|
||||||
goto fail0c;
|
adb->entrylocks = isc_mem_get(adb->mctx, sizeof(*adb->entrylocks) * adb->nentries);
|
||||||
|
adb->entry_sd = isc_mem_get(adb->mctx, sizeof(*adb->entry_sd) * adb->nentries);
|
||||||
|
adb->entry_refcnt = isc_mem_get(adb->mctx, sizeof(*adb->entry_refcnt) * adb->nentries);
|
||||||
|
|
||||||
result = isc_mutex_init(&adb->reflock);
|
adb->names = isc_mem_get(adb->mctx, sizeof(*adb->names) * adb->nnames);
|
||||||
if (result != ISC_R_SUCCESS)
|
adb->deadnames = isc_mem_get(adb->mctx, sizeof(*adb->deadnames) * adb->nnames);
|
||||||
goto fail0d;
|
adb->namelocks = isc_mem_get(adb->mctx, sizeof(*adb->namelocks) * adb->nnames);
|
||||||
|
adb->name_sd = isc_mem_get(adb->mctx, sizeof(*adb->name_sd) * adb->nnames);
|
||||||
result = isc_mutex_init(&adb->overmemlock);
|
adb->name_refcnt = isc_mem_get(adb->mctx, sizeof(*adb->name_refcnt) * adb->nnames);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail0e;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&adb->entriescntlock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail0f;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&adb->namescntlock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail0g;
|
|
||||||
|
|
||||||
#define ALLOCENTRY(adb, el) \
|
|
||||||
do { \
|
|
||||||
(adb)->el = isc_mem_get((adb)->mctx, \
|
|
||||||
sizeof(*(adb)->el) * (adb)->nentries); \
|
|
||||||
if ((adb)->el == NULL) { \
|
|
||||||
result = ISC_R_NOMEMORY; \
|
|
||||||
goto fail1; \
|
|
||||||
}\
|
|
||||||
} while (0)
|
|
||||||
ALLOCENTRY(adb, entries);
|
|
||||||
ALLOCENTRY(adb, deadentries);
|
|
||||||
ALLOCENTRY(adb, entrylocks);
|
|
||||||
ALLOCENTRY(adb, entry_sd);
|
|
||||||
ALLOCENTRY(adb, entry_refcnt);
|
|
||||||
#undef ALLOCENTRY
|
|
||||||
|
|
||||||
#define ALLOCNAME(adb, el) \
|
|
||||||
do { \
|
|
||||||
(adb)->el = isc_mem_get((adb)->mctx, \
|
|
||||||
sizeof(*(adb)->el) * (adb)->nnames); \
|
|
||||||
if ((adb)->el == NULL) { \
|
|
||||||
result = ISC_R_NOMEMORY; \
|
|
||||||
goto fail1; \
|
|
||||||
}\
|
|
||||||
} while (0)
|
|
||||||
ALLOCNAME(adb, names);
|
|
||||||
ALLOCNAME(adb, deadnames);
|
|
||||||
ALLOCNAME(adb, namelocks);
|
|
||||||
ALLOCNAME(adb, name_sd);
|
|
||||||
ALLOCNAME(adb, name_refcnt);
|
|
||||||
#undef ALLOCNAME
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the bucket locks for names and elements.
|
* Initialize the bucket locks for names and elements.
|
||||||
* May as well initialize the list heads, too.
|
* May as well initialize the list heads, too.
|
||||||
*/
|
*/
|
||||||
result = isc_mutexblock_init(adb->namelocks, adb->nnames);
|
isc_mutexblock_init(adb->namelocks, adb->nnames);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail1;
|
|
||||||
for (i = 0; i < adb->nnames; i++) {
|
for (i = 0; i < adb->nnames; i++) {
|
||||||
ISC_LIST_INIT(adb->names[i]);
|
ISC_LIST_INIT(adb->names[i]);
|
||||||
ISC_LIST_INIT(adb->deadnames[i]);
|
ISC_LIST_INIT(adb->deadnames[i]);
|
||||||
@@ -2684,17 +2617,13 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
|||||||
adb->entry_refcnt[i] = 0;
|
adb->entry_refcnt[i] = 0;
|
||||||
adb->irefcnt++;
|
adb->irefcnt++;
|
||||||
}
|
}
|
||||||
result = isc_mutexblock_init(adb->entrylocks, adb->nentries);
|
isc_mutexblock_init(adb->entrylocks, adb->nentries);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail2;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Memory pools
|
* Memory pools
|
||||||
*/
|
*/
|
||||||
#define MPINIT(t, p, n) do { \
|
#define MPINIT(t, p, n) do { \
|
||||||
result = isc_mempool_create(mem, sizeof(t), &(p)); \
|
isc_mempool_create(mem, sizeof(t), &(p)); \
|
||||||
if (result != ISC_R_SUCCESS) \
|
|
||||||
goto fail3; \
|
|
||||||
isc_mempool_setfreemax((p), FREE_ITEMS); \
|
isc_mempool_setfreemax((p), FREE_ITEMS); \
|
||||||
isc_mempool_setfillcount((p), FILL_COUNT); \
|
isc_mempool_setfillcount((p), FILL_COUNT); \
|
||||||
isc_mempool_setname((p), n); \
|
isc_mempool_setname((p), n); \
|
||||||
@@ -2714,15 +2643,11 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
|||||||
/*
|
/*
|
||||||
* Allocate an internal task.
|
* Allocate an internal task.
|
||||||
*/
|
*/
|
||||||
result = isc_task_create(adb->taskmgr, 0, &adb->task);
|
RUNTIME_CHECK(isc_task_create(adb->taskmgr, 0, &adb->task) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail3;
|
|
||||||
|
|
||||||
isc_task_setname(adb->task, "ADB", adb);
|
isc_task_setname(adb->task, "ADB", adb);
|
||||||
|
|
||||||
result = isc_stats_create(adb->mctx, &view->adbstats, dns_adbstats_max);
|
isc_stats_create(adb->mctx, &view->adbstats, dns_adbstats_max);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail3;
|
|
||||||
|
|
||||||
set_adbstat(adb, adb->nentries, dns_adbstats_nentries);
|
set_adbstat(adb, adb->nentries, dns_adbstats_nentries);
|
||||||
set_adbstat(adb, adb->nnames, dns_adbstats_nnames);
|
set_adbstat(adb, adb->nnames, dns_adbstats_nnames);
|
||||||
@@ -2732,81 +2657,6 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
|
|||||||
*/
|
*/
|
||||||
adb->magic = DNS_ADB_MAGIC;
|
adb->magic = DNS_ADB_MAGIC;
|
||||||
*newadb = adb;
|
*newadb = adb;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
fail3:
|
|
||||||
if (adb->task != NULL)
|
|
||||||
isc_task_detach(&adb->task);
|
|
||||||
|
|
||||||
/* clean up entrylocks */
|
|
||||||
DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries);
|
|
||||||
|
|
||||||
fail2: /* clean up namelocks */
|
|
||||||
DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames);
|
|
||||||
|
|
||||||
fail1: /* clean up only allocated memory */
|
|
||||||
if (adb->entries != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->entries,
|
|
||||||
sizeof(*adb->entries) * adb->nentries);
|
|
||||||
if (adb->deadentries != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->deadentries,
|
|
||||||
sizeof(*adb->deadentries) * adb->nentries);
|
|
||||||
if (adb->entrylocks != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->entrylocks,
|
|
||||||
sizeof(*adb->entrylocks) * adb->nentries);
|
|
||||||
if (adb->entry_sd != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->entry_sd,
|
|
||||||
sizeof(*adb->entry_sd) * adb->nentries);
|
|
||||||
if (adb->entry_refcnt != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->entry_refcnt,
|
|
||||||
sizeof(*adb->entry_refcnt) * adb->nentries);
|
|
||||||
if (adb->names != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->names,
|
|
||||||
sizeof(*adb->names) * adb->nnames);
|
|
||||||
if (adb->deadnames != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->deadnames,
|
|
||||||
sizeof(*adb->deadnames) * adb->nnames);
|
|
||||||
if (adb->namelocks != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->namelocks,
|
|
||||||
sizeof(*adb->namelocks) * adb->nnames);
|
|
||||||
if (adb->name_sd != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->name_sd,
|
|
||||||
sizeof(*adb->name_sd) * adb->nnames);
|
|
||||||
if (adb->name_refcnt != NULL)
|
|
||||||
isc_mem_put(adb->mctx, adb->name_refcnt,
|
|
||||||
sizeof(*adb->name_refcnt) * adb->nnames);
|
|
||||||
if (adb->nmp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->nmp);
|
|
||||||
if (adb->nhmp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->nhmp);
|
|
||||||
if (adb->limp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->limp);
|
|
||||||
if (adb->emp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->emp);
|
|
||||||
if (adb->ahmp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->ahmp);
|
|
||||||
if (adb->aimp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->aimp);
|
|
||||||
if (adb->afmp != NULL)
|
|
||||||
isc_mempool_destroy(&adb->afmp);
|
|
||||||
|
|
||||||
DESTROYLOCK(&adb->namescntlock);
|
|
||||||
fail0g:
|
|
||||||
DESTROYLOCK(&adb->entriescntlock);
|
|
||||||
fail0f:
|
|
||||||
DESTROYLOCK(&adb->overmemlock);
|
|
||||||
fail0e:
|
|
||||||
DESTROYLOCK(&adb->reflock);
|
|
||||||
fail0d:
|
|
||||||
DESTROYLOCK(&adb->mplock);
|
|
||||||
fail0c:
|
|
||||||
DESTROYLOCK(&adb->lock);
|
|
||||||
fail0b:
|
|
||||||
if (adb->excl != NULL)
|
|
||||||
isc_task_detach(&adb->excl);
|
|
||||||
isc_mem_putanddetach(&adb->mctx, adb, sizeof(dns_adb_t));
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+4
-24
@@ -58,32 +58,23 @@ struct dns_bcentry {
|
|||||||
dns_name_t name;
|
dns_name_t name;
|
||||||
};
|
};
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow);
|
badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow);
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_badcache_init(isc_mem_t *mctx, unsigned int size, dns_badcache_t **bcp) {
|
dns_badcache_init(isc_mem_t *mctx, unsigned int size, dns_badcache_t **bcp) {
|
||||||
isc_result_t result;
|
|
||||||
dns_badcache_t *bc = NULL;
|
dns_badcache_t *bc = NULL;
|
||||||
|
|
||||||
REQUIRE(bcp != NULL && *bcp == NULL);
|
REQUIRE(bcp != NULL && *bcp == NULL);
|
||||||
REQUIRE(mctx != NULL);
|
REQUIRE(mctx != NULL);
|
||||||
|
|
||||||
bc = isc_mem_get(mctx, sizeof(dns_badcache_t));
|
bc = isc_mem_get(mctx, sizeof(dns_badcache_t));
|
||||||
if (bc == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
memset(bc, 0, sizeof(dns_badcache_t));
|
memset(bc, 0, sizeof(dns_badcache_t));
|
||||||
|
|
||||||
isc_mem_attach(mctx, &bc->mctx);
|
isc_mem_attach(mctx, &bc->mctx);
|
||||||
result = isc_mutex_init(&bc->lock);
|
isc_mutex_init(&bc->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
bc->table = isc_mem_get(bc->mctx, sizeof(*bc->table) * size);
|
bc->table = isc_mem_get(bc->mctx, sizeof(*bc->table) * size);
|
||||||
if (bc->table == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto destroy_lock;
|
|
||||||
}
|
|
||||||
|
|
||||||
bc->size = bc->minsize = size;
|
bc->size = bc->minsize = size;
|
||||||
memset(bc->table, 0, bc->size * sizeof(dns_bcentry_t *));
|
memset(bc->table, 0, bc->size * sizeof(dns_bcentry_t *));
|
||||||
@@ -93,13 +84,6 @@ dns_badcache_init(isc_mem_t *mctx, unsigned int size, dns_badcache_t **bcp) {
|
|||||||
bc->magic = BADCACHE_MAGIC;
|
bc->magic = BADCACHE_MAGIC;
|
||||||
|
|
||||||
*bcp = bc;
|
*bcp = bc;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
destroy_lock:
|
|
||||||
DESTROYLOCK(&bc->lock);
|
|
||||||
cleanup:
|
|
||||||
isc_mem_putanddetach(&bc->mctx, bc, sizeof(dns_badcache_t));
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -118,7 +102,7 @@ dns_badcache_destroy(dns_badcache_t **bcp) {
|
|||||||
*bcp = NULL;
|
*bcp = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow) {
|
badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow) {
|
||||||
dns_bcentry_t **newtable, *bad, *next;
|
dns_bcentry_t **newtable, *bad, *next;
|
||||||
unsigned int newsize, i;
|
unsigned int newsize, i;
|
||||||
@@ -129,8 +113,6 @@ badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow) {
|
|||||||
newsize = (bc->size - 1) / 2;
|
newsize = (bc->size - 1) / 2;
|
||||||
|
|
||||||
newtable = isc_mem_get(bc->mctx, sizeof(dns_bcentry_t *) * newsize);
|
newtable = isc_mem_get(bc->mctx, sizeof(dns_bcentry_t *) * newsize);
|
||||||
if (newtable == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
memset(newtable, 0, sizeof(dns_bcentry_t *) * newsize);
|
memset(newtable, 0, sizeof(dns_bcentry_t *) * newsize);
|
||||||
|
|
||||||
for (i = 0; bc->count > 0 && i < bc->size; i++) {
|
for (i = 0; bc->count > 0 && i < bc->size; i++) {
|
||||||
@@ -151,8 +133,6 @@ badcache_resize(dns_badcache_t *bc, isc_time_t *now, bool grow) {
|
|||||||
isc_mem_put(bc->mctx, bc->table, sizeof(*bc->table) * bc->size);
|
isc_mem_put(bc->mctx, bc->table, sizeof(*bc->table) * bc->size);
|
||||||
bc->size = newsize;
|
bc->size = newsize;
|
||||||
bc->table = newtable;
|
bc->table = newtable;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+3
-19
@@ -132,17 +132,9 @@ copy_ptr_targets(dns_byaddr_t *byaddr, dns_rdataset_t *rdataset) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
name = isc_mem_get(byaddr->mctx, sizeof(*name));
|
name = isc_mem_get(byaddr->mctx, sizeof(*name));
|
||||||
if (name == NULL) {
|
|
||||||
dns_rdata_freestruct(&ptr);
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
dns_name_init(name, NULL);
|
dns_name_init(name, NULL);
|
||||||
result = dns_name_dup(&ptr.ptr, byaddr->mctx, name);
|
dns_name_dup(&ptr.ptr, byaddr->mctx, name);
|
||||||
dns_rdata_freestruct(&ptr);
|
dns_rdata_freestruct(&ptr);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(byaddr->mctx, name, sizeof(*name));
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
ISC_LIST_APPEND(byaddr->event->names, name, link);
|
ISC_LIST_APPEND(byaddr->event->names, name, link);
|
||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
result = dns_rdataset_next(rdataset);
|
result = dns_rdataset_next(rdataset);
|
||||||
@@ -214,10 +206,7 @@ dns_byaddr_create(isc_mem_t *mctx, const isc_netaddr_t *address,
|
|||||||
byaddr->options = options;
|
byaddr->options = options;
|
||||||
|
|
||||||
byaddr->event = isc_mem_get(mctx, sizeof(*byaddr->event));
|
byaddr->event = isc_mem_get(mctx, sizeof(*byaddr->event));
|
||||||
if (byaddr->event == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_byaddr;
|
|
||||||
}
|
|
||||||
ISC_EVENT_INIT(byaddr->event, sizeof(*byaddr->event), 0, NULL,
|
ISC_EVENT_INIT(byaddr->event, sizeof(*byaddr->event), 0, NULL,
|
||||||
DNS_EVENT_BYADDRDONE, action, arg, byaddr,
|
DNS_EVENT_BYADDRDONE, action, arg, byaddr,
|
||||||
bevent_destroy, mctx);
|
bevent_destroy, mctx);
|
||||||
@@ -227,9 +216,7 @@ dns_byaddr_create(isc_mem_t *mctx, const isc_netaddr_t *address,
|
|||||||
byaddr->task = NULL;
|
byaddr->task = NULL;
|
||||||
isc_task_attach(task, &byaddr->task);
|
isc_task_attach(task, &byaddr->task);
|
||||||
|
|
||||||
result = isc_mutex_init(&byaddr->lock);
|
isc_mutex_init(&byaddr->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_event;
|
|
||||||
|
|
||||||
dns_fixedname_init(&byaddr->name);
|
dns_fixedname_init(&byaddr->name);
|
||||||
|
|
||||||
@@ -254,15 +241,12 @@ dns_byaddr_create(isc_mem_t *mctx, const isc_netaddr_t *address,
|
|||||||
|
|
||||||
cleanup_lock:
|
cleanup_lock:
|
||||||
DESTROYLOCK(&byaddr->lock);
|
DESTROYLOCK(&byaddr->lock);
|
||||||
|
|
||||||
cleanup_event:
|
|
||||||
ievent = (isc_event_t *)byaddr->event;
|
ievent = (isc_event_t *)byaddr->event;
|
||||||
isc_event_free(&ievent);
|
isc_event_free(&ievent);
|
||||||
byaddr->event = NULL;
|
byaddr->event = NULL;
|
||||||
|
|
||||||
isc_task_detach(&byaddr->task);
|
isc_task_detach(&byaddr->task);
|
||||||
|
|
||||||
cleanup_byaddr:
|
|
||||||
isc_mem_putanddetach(&mctx, byaddr, sizeof(*byaddr));
|
isc_mem_putanddetach(&mctx, byaddr, sizeof(*byaddr));
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
|
|||||||
+6
-50
@@ -196,8 +196,6 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
REQUIRE(cachename != NULL);
|
REQUIRE(cachename != NULL);
|
||||||
|
|
||||||
cache = isc_mem_get(cmctx, sizeof(*cache));
|
cache = isc_mem_get(cmctx, sizeof(*cache));
|
||||||
if (cache == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
cache->mctx = cache->hmctx = NULL;
|
cache->mctx = cache->hmctx = NULL;
|
||||||
isc_mem_attach(cmctx, &cache->mctx);
|
isc_mem_attach(cmctx, &cache->mctx);
|
||||||
@@ -206,19 +204,10 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
cache->name = NULL;
|
cache->name = NULL;
|
||||||
if (cachename != NULL) {
|
if (cachename != NULL) {
|
||||||
cache->name = isc_mem_strdup(cmctx, cachename);
|
cache->name = isc_mem_strdup(cmctx, cachename);
|
||||||
if (cache->name == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_mem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_mutex_init(&cache->lock);
|
isc_mutex_init(&cache->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_mutex_init(&cache->filelock);
|
||||||
goto cleanup_mem;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&cache->filelock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_lock;
|
|
||||||
|
|
||||||
cache->references = 1;
|
cache->references = 1;
|
||||||
cache->live_tasks = 0;
|
cache->live_tasks = 0;
|
||||||
@@ -226,16 +215,10 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
cache->serve_stale_ttl = 0;
|
cache->serve_stale_ttl = 0;
|
||||||
|
|
||||||
cache->stats = NULL;
|
cache->stats = NULL;
|
||||||
result = isc_stats_create(cmctx, &cache->stats,
|
isc_stats_create(cmctx, &cache->stats,
|
||||||
dns_cachestatscounter_max);
|
dns_cachestatscounter_max);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_filelock;
|
|
||||||
|
|
||||||
cache->db_type = isc_mem_strdup(cmctx, db_type);
|
cache->db_type = isc_mem_strdup(cmctx, db_type);
|
||||||
if (cache->db_type == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_stats;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For databases of type "rbt" we pass hmctx to dns_db_create()
|
* For databases of type "rbt" we pass hmctx to dns_db_create()
|
||||||
@@ -251,10 +234,6 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
if (cache->db_argc != 0) {
|
if (cache->db_argc != 0) {
|
||||||
cache->db_argv = isc_mem_get(cmctx,
|
cache->db_argv = isc_mem_get(cmctx,
|
||||||
cache->db_argc * sizeof(char *));
|
cache->db_argc * sizeof(char *));
|
||||||
if (cache->db_argv == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_dbtype;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < cache->db_argc; i++)
|
for (i = 0; i < cache->db_argc; i++)
|
||||||
cache->db_argv[i] = NULL;
|
cache->db_argv[i] = NULL;
|
||||||
@@ -263,10 +242,6 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
for (i = extra; i < cache->db_argc; i++) {
|
for (i = extra; i < cache->db_argc; i++) {
|
||||||
cache->db_argv[i] = isc_mem_strdup(cmctx,
|
cache->db_argv[i] = isc_mem_strdup(cmctx,
|
||||||
db_argv[i - extra]);
|
db_argv[i - extra]);
|
||||||
if (cache->db_argv[i] == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_dbargv;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,9 +254,7 @@ dns_cache_create(isc_mem_t *cmctx, isc_mem_t *hmctx, isc_taskmgr_t *taskmgr,
|
|||||||
goto cleanup_dbargv;
|
goto cleanup_dbargv;
|
||||||
if (taskmgr != NULL) {
|
if (taskmgr != NULL) {
|
||||||
dbtask = NULL;
|
dbtask = NULL;
|
||||||
result = isc_task_create(taskmgr, 1, &dbtask);
|
RUNTIME_CHECK(isc_task_create(taskmgr, 1, &dbtask) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_db;
|
|
||||||
|
|
||||||
isc_task_setname(dbtask, "cache_dbtask", NULL);
|
isc_task_setname(dbtask, "cache_dbtask", NULL);
|
||||||
dns_db_settask(cache->db, dbtask);
|
dns_db_settask(cache->db, dbtask);
|
||||||
@@ -596,9 +569,7 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
|
|||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
result = isc_mutex_init(&cleaner->lock);
|
isc_mutex_init(&cleaner->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
cleaner->increment = DNS_CACHE_CLEANERINCREMENT;
|
cleaner->increment = DNS_CACHE_CLEANERINCREMENT;
|
||||||
cleaner->state = cleaner_s_idle;
|
cleaner->state = cleaner_s_idle;
|
||||||
@@ -619,14 +590,7 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (taskmgr != NULL && timermgr != NULL) {
|
if (taskmgr != NULL && timermgr != NULL) {
|
||||||
result = isc_task_create(taskmgr, 1, &cleaner->task);
|
RUNTIME_CHECK(isc_task_create(taskmgr, 1, &cleaner->task) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
"isc_task_create() failed: %s",
|
|
||||||
dns_result_totext(result));
|
|
||||||
result = ISC_R_UNEXPECTED;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
cleaner->cache->live_tasks++;
|
cleaner->cache->live_tasks++;
|
||||||
isc_task_setname(cleaner->task, "cachecleaner", cleaner);
|
isc_task_setname(cleaner->task, "cachecleaner", cleaner);
|
||||||
|
|
||||||
@@ -657,20 +621,12 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
|
|||||||
DNS_EVENT_CACHECLEAN,
|
DNS_EVENT_CACHECLEAN,
|
||||||
incremental_cleaning_action,
|
incremental_cleaning_action,
|
||||||
cleaner, sizeof(isc_event_t));
|
cleaner, sizeof(isc_event_t));
|
||||||
if (cleaner->resched_event == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
cleaner->overmem_event =
|
cleaner->overmem_event =
|
||||||
isc_event_allocate(cache->mctx, cleaner,
|
isc_event_allocate(cache->mctx, cleaner,
|
||||||
DNS_EVENT_CACHEOVERMEM,
|
DNS_EVENT_CACHEOVERMEM,
|
||||||
overmem_cleaning_action,
|
overmem_cleaning_action,
|
||||||
cleaner, sizeof(isc_event_t));
|
cleaner, sizeof(isc_event_t));
|
||||||
if (cleaner->overmem_event == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|||||||
+29
-98
@@ -190,9 +190,7 @@ dns_catz_entry_new(isc_mem_t *mctx, const dns_name_t *domain,
|
|||||||
|
|
||||||
dns_name_init(&nentry->name, NULL);
|
dns_name_init(&nentry->name, NULL);
|
||||||
if (domain != NULL) {
|
if (domain != NULL) {
|
||||||
result = dns_name_dup(domain, mctx, &nentry->name);
|
dns_name_dup(domain, mctx, &nentry->name);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dns_catz_options_init(&nentry->opts);
|
dns_catz_options_init(&nentry->opts);
|
||||||
@@ -354,33 +352,19 @@ dns_catz_zones_merge(dns_catz_zone_t *target, dns_catz_zone_t *newzone) {
|
|||||||
|
|
||||||
dns_name_format(&target->name, czname, DNS_NAME_FORMATSIZE);
|
dns_name_format(&target->name, czname, DNS_NAME_FORMATSIZE);
|
||||||
|
|
||||||
result = isc_ht_init(&toadd, target->catzs->mctx, 16);
|
isc_ht_init(&toadd, target->catzs->mctx, 16);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_ht_init(&tomod, target->catzs->mctx, 16);
|
isc_ht_init(&tomod, target->catzs->mctx, 16);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_ht_iter_create(newzone->entries, &iter1);
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_ht_iter_create(newzone->entries, &iter1);
|
isc_ht_iter_create(target->entries, &iter2);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_ht_iter_create(target->entries, &iter2);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We can create those iterators now, even though toadd and tomod are
|
* We can create those iterators now, even though toadd and tomod are
|
||||||
* empty
|
* empty
|
||||||
*/
|
*/
|
||||||
result = isc_ht_iter_create(toadd, &iteradd);
|
isc_ht_iter_create(toadd, &iteradd);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_ht_iter_create(tomod, &itermod);
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_ht_iter_create(tomod, &itermod);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First - walk the new zone and find all nodes that are not in the
|
* First - walk the new zone and find all nodes that are not in the
|
||||||
@@ -541,7 +525,7 @@ cleanup:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
|
dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
|
||||||
isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
||||||
isc_timermgr_t *timermgr)
|
isc_timermgr_t *timermgr)
|
||||||
@@ -553,41 +537,22 @@ dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
|
|||||||
REQUIRE(zmm != NULL);
|
REQUIRE(zmm != NULL);
|
||||||
|
|
||||||
new_zones = isc_mem_get(mctx, sizeof(*new_zones));
|
new_zones = isc_mem_get(mctx, sizeof(*new_zones));
|
||||||
if (new_zones == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
memset(new_zones, 0, sizeof(*new_zones));
|
memset(new_zones, 0, sizeof(*new_zones));
|
||||||
|
|
||||||
result = isc_mutex_init(&new_zones->lock);
|
isc_mutex_init(&new_zones->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_newzones;
|
|
||||||
|
|
||||||
isc_refcount_init(&new_zones->refs, 1);
|
isc_refcount_init(&new_zones->refs, 1);
|
||||||
|
|
||||||
result = isc_ht_init(&new_zones->zones, mctx, 4);
|
isc_ht_init(&new_zones->zones, mctx, 4);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_refcount;
|
|
||||||
|
|
||||||
isc_mem_attach(mctx, &new_zones->mctx);
|
isc_mem_attach(mctx, &new_zones->mctx);
|
||||||
new_zones->zmm = zmm;
|
new_zones->zmm = zmm;
|
||||||
new_zones->timermgr = timermgr;
|
new_zones->timermgr = timermgr;
|
||||||
new_zones->taskmgr = taskmgr;
|
new_zones->taskmgr = taskmgr;
|
||||||
|
|
||||||
result = isc_task_create(taskmgr, 0, &new_zones->updater);
|
RUNTIME_CHECK(isc_task_create(taskmgr, 0, &new_zones->updater) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_ht;
|
|
||||||
|
|
||||||
*catzsp = new_zones;
|
*catzsp = new_zones;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_ht:
|
|
||||||
isc_ht_destroy(&new_zones->zones);
|
|
||||||
cleanup_refcount:
|
|
||||||
isc_refcount_destroy(&new_zones->refs);
|
|
||||||
isc_mutex_destroy(&new_zones->lock);
|
|
||||||
cleanup_newzones:
|
|
||||||
isc_mem_put(mctx, new_zones, sizeof(*new_zones));
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -617,13 +582,9 @@ dns_catz_new_zone(dns_catz_zones_t *catzs, dns_catz_zone_t **zonep,
|
|||||||
|
|
||||||
dns_name_init(&new_zone->name, NULL);
|
dns_name_init(&new_zone->name, NULL);
|
||||||
|
|
||||||
result = dns_name_dup(name, catzs->mctx, &new_zone->name);
|
dns_name_dup(name, catzs->mctx, &new_zone->name);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_newzone;
|
|
||||||
|
|
||||||
result = isc_ht_init(&new_zone->entries, catzs->mctx, 4);
|
isc_ht_init(&new_zone->entries, catzs->mctx, 4);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_name;
|
|
||||||
|
|
||||||
new_zone->updatetimer = NULL;
|
new_zone->updatetimer = NULL;
|
||||||
result = isc_timer_create(catzs->timermgr, isc_timertype_inactive,
|
result = isc_timer_create(catzs->timermgr, isc_timertype_inactive,
|
||||||
@@ -744,8 +705,7 @@ dns_catz_zone_detach(dns_catz_zone_t **zonep) {
|
|||||||
if (zone->entries != NULL) {
|
if (zone->entries != NULL) {
|
||||||
isc_ht_iter_t *iter = NULL;
|
isc_ht_iter_t *iter = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
result = isc_ht_iter_create(zone->entries, &iter);
|
isc_ht_iter_create(zone->entries, &iter);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
|
||||||
for (result = isc_ht_iter_first(iter);
|
for (result = isc_ht_iter_first(iter);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
result = isc_ht_iter_delcurrent_next(iter))
|
result = isc_ht_iter_delcurrent_next(iter))
|
||||||
@@ -800,8 +760,7 @@ dns_catz_catzs_detach(dns_catz_zones_t **catzsp) {
|
|||||||
if (catzs->zones != NULL) {
|
if (catzs->zones != NULL) {
|
||||||
isc_ht_iter_t *iter = NULL;
|
isc_ht_iter_t *iter = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
result = isc_ht_iter_create(catzs->zones, &iter);
|
isc_ht_iter_create(catzs->zones, &iter);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
|
||||||
for (result = isc_ht_iter_first(iter);
|
for (result = isc_ht_iter_first(iter);
|
||||||
result == ISC_R_SUCCESS;)
|
result == ISC_R_SUCCESS;)
|
||||||
{
|
{
|
||||||
@@ -917,12 +876,8 @@ catz_process_zones_entry(dns_catz_zone_t *zone, dns_rdataset_t *value,
|
|||||||
dns_rdata_freestruct(&ptr);
|
dns_rdata_freestruct(&ptr);
|
||||||
return (ISC_R_FAILURE);
|
return (ISC_R_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
result = dns_name_dup(&ptr.ptr, zone->catzs->mctx,
|
dns_name_dup(&ptr.ptr, zone->catzs->mctx,
|
||||||
&entry->name);
|
&entry->name);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dns_rdata_freestruct(&ptr);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result = dns_catz_entry_new(zone->catzs->mctx, &ptr.ptr,
|
result = dns_catz_entry_new(zone->catzs->mctx, &ptr.ptr,
|
||||||
@@ -1116,11 +1071,7 @@ catz_process_masters(dns_catz_zone_t *zone, dns_ipkeylist_t *ipkl,
|
|||||||
memmove(&ipkl->addrs[i], &sockaddr,
|
memmove(&ipkl->addrs[i], &sockaddr,
|
||||||
sizeof(isc_sockaddr_t));
|
sizeof(isc_sockaddr_t));
|
||||||
} else {
|
} else {
|
||||||
result = dns_ipkeylist_resize(mctx, ipkl,
|
dns_ipkeylist_resize(mctx, ipkl, i+1);
|
||||||
i+1);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
ipkl->labels[i] = isc_mem_get(mctx, sizeof(dns_name_t));
|
ipkl->labels[i] = isc_mem_get(mctx, sizeof(dns_name_t));
|
||||||
if (ipkl->labels[i] == NULL) {
|
if (ipkl->labels[i] == NULL) {
|
||||||
@@ -1132,15 +1083,7 @@ catz_process_masters(dns_catz_zone_t *zone, dns_ipkeylist_t *ipkl,
|
|||||||
return (ISC_R_NOMEMORY);
|
return (ISC_R_NOMEMORY);
|
||||||
}
|
}
|
||||||
dns_name_init(ipkl->labels[i], NULL);
|
dns_name_init(ipkl->labels[i], NULL);
|
||||||
result = dns_name_dup(name, mctx, ipkl->labels[i]);
|
dns_name_dup(name, mctx, ipkl->labels[i]);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
if (keyname != NULL) {
|
|
||||||
dns_name_free(keyname, mctx);
|
|
||||||
isc_mem_put(mctx, keyname,
|
|
||||||
sizeof(dns_name_t));
|
|
||||||
}
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value->type == dns_rdatatype_txt)
|
if (value->type == dns_rdatatype_txt)
|
||||||
ipkl->keys[i] = keyname;
|
ipkl->keys[i] = keyname;
|
||||||
@@ -1159,10 +1102,7 @@ catz_process_masters(dns_catz_zone_t *zone, dns_ipkeylist_t *ipkl,
|
|||||||
|
|
||||||
rcount = dns_rdataset_count(value) + ipkl->count;
|
rcount = dns_rdataset_count(value) + ipkl->count;
|
||||||
|
|
||||||
result = dns_ipkeylist_resize(mctx, ipkl, rcount);
|
dns_ipkeylist_resize(mctx, ipkl, rcount);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (result = dns_rdataset_first(value);
|
for (result = dns_rdataset_first(value);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -1228,10 +1168,9 @@ catz_process_apl(dns_catz_zone_t *zone, isc_buffer_t **aclbp,
|
|||||||
result = dns_rdata_tostruct(&rdata, &rdata_apl, zone->catzs->mctx);
|
result = dns_rdata_tostruct(&rdata, &rdata_apl, zone->catzs->mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
result = isc_buffer_allocate(zone->catzs->mctx, &aclb, 16);
|
isc_buffer_allocate(zone->catzs->mctx, &aclb, 16);
|
||||||
isc_buffer_setautorealloc(aclb, true);
|
isc_buffer_setautorealloc(aclb, true);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
for (result = dns_rdata_apl_first(&rdata_apl);
|
for (result = dns_rdata_apl_first(&rdata_apl);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
result = dns_rdata_apl_next(&rdata_apl)) {
|
result = dns_rdata_apl_next(&rdata_apl)) {
|
||||||
@@ -1434,11 +1373,9 @@ dns_catz_generate_masterfilename(dns_catz_zone_t *zone, dns_catz_entry_t *entry,
|
|||||||
REQUIRE(entry != NULL);
|
REQUIRE(entry != NULL);
|
||||||
REQUIRE(buffer != NULL && *buffer != NULL);
|
REQUIRE(buffer != NULL && *buffer != NULL);
|
||||||
|
|
||||||
result = isc_buffer_allocate(zone->catzs->mctx, &tbuf,
|
isc_buffer_allocate(zone->catzs->mctx, &tbuf,
|
||||||
strlen(zone->catzs->view->name) +
|
strlen(zone->catzs->view->name) +
|
||||||
2 * DNS_NAME_FORMATSIZE + 2);
|
2 * DNS_NAME_FORMATSIZE + 2);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
INSIST(tbuf != NULL);
|
INSIST(tbuf != NULL);
|
||||||
|
|
||||||
isc_buffer_putstr(tbuf, zone->catzs->view->name);
|
isc_buffer_putstr(tbuf, zone->catzs->view->name);
|
||||||
@@ -1515,11 +1452,8 @@ dns_catz_generate_zonecfg(dns_catz_zone_t *zone, dns_catz_entry_t *entry,
|
|||||||
* The buffer will be reallocated if something won't fit,
|
* The buffer will be reallocated if something won't fit,
|
||||||
* ISC_BUFFER_INCR seems like a good start.
|
* ISC_BUFFER_INCR seems like a good start.
|
||||||
*/
|
*/
|
||||||
result = isc_buffer_allocate(zone->catzs->mctx, &buffer,
|
isc_buffer_allocate(zone->catzs->mctx, &buffer,
|
||||||
ISC_BUFFER_INCR);
|
ISC_BUFFER_INCR);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_buffer_setautorealloc(buffer, true);
|
isc_buffer_setautorealloc(buffer, true);
|
||||||
isc_buffer_putstr(buffer, "zone ");
|
isc_buffer_putstr(buffer, "zone ");
|
||||||
@@ -1892,11 +1826,10 @@ dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs) {
|
|||||||
* call onupdate() artificially so we can register the callback here.
|
* call onupdate() artificially so we can register the callback here.
|
||||||
*/
|
*/
|
||||||
if (oldzone->db_registered == false) {
|
if (oldzone->db_registered == false) {
|
||||||
result = dns_db_updatenotify_register(db,
|
dns_db_updatenotify_register(db,
|
||||||
dns_catz_dbupdate_callback,
|
dns_catz_dbupdate_callback,
|
||||||
oldzone->catzs);
|
oldzone->catzs);
|
||||||
if (result == ISC_R_SUCCESS)
|
oldzone->db_registered = true;
|
||||||
oldzone->db_registered = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1908,8 +1841,7 @@ dns_catz_prereconfig(dns_catz_zones_t *catzs) {
|
|||||||
|
|
||||||
REQUIRE(catzs != NULL);
|
REQUIRE(catzs != NULL);
|
||||||
|
|
||||||
result = isc_ht_iter_create(catzs->zones, &iter);
|
isc_ht_iter_create(catzs->zones, &iter);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
|
||||||
for (result = isc_ht_iter_first(iter);
|
for (result = isc_ht_iter_first(iter);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
result = isc_ht_iter_next(iter))
|
result = isc_ht_iter_next(iter))
|
||||||
@@ -1929,8 +1861,7 @@ dns_catz_postreconfig(dns_catz_zones_t *catzs) {
|
|||||||
dns_catz_zone_t *zone;
|
dns_catz_zone_t *zone;
|
||||||
|
|
||||||
LOCK(&catzs->lock);
|
LOCK(&catzs->lock);
|
||||||
result = isc_ht_iter_create(catzs->zones, &iter);
|
isc_ht_iter_create(catzs->zones, &iter);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
|
||||||
for (result = isc_ht_iter_first(iter);
|
for (result = isc_ht_iter_first(iter);
|
||||||
result == ISC_R_SUCCESS;)
|
result == ISC_R_SUCCESS;)
|
||||||
{
|
{
|
||||||
@@ -1967,7 +1898,7 @@ dns_catz_postreconfig(dns_catz_zones_t *catzs) {
|
|||||||
isc_ht_iter_destroy(&iter);
|
isc_ht_iter_destroy(&iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp) {
|
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp) {
|
||||||
return (isc_ht_iter_create(catz->entries, itp));
|
isc_ht_iter_create(catz->entries, itp);
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-100
@@ -320,19 +320,11 @@ createview(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
|||||||
return (result);
|
return (result);
|
||||||
|
|
||||||
/* Initialize view security roots */
|
/* Initialize view security roots */
|
||||||
result = dns_view_initsecroots(view, mctx);
|
dns_view_initsecroots(view, mctx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dns_view_detach(&view);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = dns_view_createresolver(view, taskmgr, ntasks, 1,
|
dns_view_createresolver(view, taskmgr, ntasks, 1,
|
||||||
socketmgr, timermgr, 0,
|
socketmgr, timermgr, 0,
|
||||||
dispatchmgr, dispatchv4, dispatchv6);
|
dispatchmgr, dispatchv4, dispatchv6);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dns_view_detach(&view);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set cache DB.
|
* Set cache DB.
|
||||||
@@ -369,9 +361,8 @@ dns_client_create(dns_client_t **clientp, unsigned int options) {
|
|||||||
unsigned int logdebuglevel = 0;
|
unsigned int logdebuglevel = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
result = isc_appctx_create(mctx, &actx);
|
result = isc_appctx_create(mctx, &actx);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -384,9 +375,7 @@ dns_client_create(dns_client_t **clientp, unsigned int options) {
|
|||||||
result = isc_socketmgr_createinctx(mctx, actx, &socketmgr);
|
result = isc_socketmgr_createinctx(mctx, actx, &socketmgr);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
result = isc_timermgr_createinctx(mctx, actx, &timermgr);
|
isc_timermgr_createinctx(mctx, actx, &timermgr);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
#if 0
|
#if 0
|
||||||
result = isc_log_create(mctx, &lctx, &logconfig);
|
result = isc_log_create(mctx, &lctx, &logconfig);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -446,14 +435,8 @@ dns_client_createx(isc_mem_t *mctx, isc_appctx_t *actx,
|
|||||||
REQUIRE(clientp != NULL && *clientp == NULL);
|
REQUIRE(clientp != NULL && *clientp == NULL);
|
||||||
|
|
||||||
client = isc_mem_get(mctx, sizeof(*client));
|
client = isc_mem_get(mctx, sizeof(*client));
|
||||||
if (client == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
result = isc_mutex_init(&client->lock);
|
isc_mutex_init(&client->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, client, sizeof(*client));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
client->actx = actx;
|
client->actx = actx;
|
||||||
client->taskmgr = taskmgr;
|
client->taskmgr = taskmgr;
|
||||||
@@ -461,13 +444,9 @@ dns_client_createx(isc_mem_t *mctx, isc_appctx_t *actx,
|
|||||||
client->timermgr = timermgr;
|
client->timermgr = timermgr;
|
||||||
|
|
||||||
client->task = NULL;
|
client->task = NULL;
|
||||||
result = isc_task_create(client->taskmgr, 0, &client->task);
|
RUNTIME_CHECK(isc_task_create(client->taskmgr, 0, &client->task) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = dns_dispatchmgr_create(mctx, &dispatchmgr);
|
dns_dispatchmgr_create(mctx, &dispatchmgr);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
client->dispatchmgr = dispatchmgr;
|
client->dispatchmgr = dispatchmgr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -897,10 +876,7 @@ client_resfind(resctx_t *rctx, dns_fetchevent_t *event) {
|
|||||||
|
|
||||||
aname = dns_fixedname_name(&rctx->name);
|
aname = dns_fixedname_name(&rctx->name);
|
||||||
dns_name_init(ansname, NULL);
|
dns_name_init(ansname, NULL);
|
||||||
tresult = dns_name_dup(aname, mctx, ansname);
|
dns_name_dup(aname, mctx, ansname);
|
||||||
if (tresult != ISC_R_SUCCESS)
|
|
||||||
isc_mem_put(mctx, ansname,
|
|
||||||
sizeof(*ansname));
|
|
||||||
}
|
}
|
||||||
if (tresult != ISC_R_SUCCESS)
|
if (tresult != ISC_R_SUCCESS)
|
||||||
result = tresult;
|
result = tresult;
|
||||||
@@ -1240,14 +1216,8 @@ dns_client_resolve(dns_client_t *client, const dns_name_t *name,
|
|||||||
actx = client->actx;
|
actx = client->actx;
|
||||||
|
|
||||||
resarg = isc_mem_get(client->mctx, sizeof(*resarg));
|
resarg = isc_mem_get(client->mctx, sizeof(*resarg));
|
||||||
if (resarg == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
result = isc_mutex_init(&resarg->lock);
|
isc_mutex_init(&resarg->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(client->mctx, resarg, sizeof(*resarg));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
resarg->actx = actx;
|
resarg->actx = actx;
|
||||||
resarg->client = client;
|
resarg->client = client;
|
||||||
@@ -1352,17 +1322,7 @@ dns_client_startresolve(dns_client_t *client, const dns_name_t *name,
|
|||||||
ISC_LIST_INIT(event->answerlist);
|
ISC_LIST_INIT(event->answerlist);
|
||||||
|
|
||||||
rctx = isc_mem_get(mctx, sizeof(*rctx));
|
rctx = isc_mem_get(mctx, sizeof(*rctx));
|
||||||
if (rctx == NULL)
|
isc_mutex_init(&rctx->lock);
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
else {
|
|
||||||
result = isc_mutex_init(&rctx->lock);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, rctx, sizeof(*rctx));
|
|
||||||
rctx = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = getrdataset(mctx, &rdataset);
|
result = getrdataset(mctx, &rdataset);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -1651,14 +1611,8 @@ dns_client_request(dns_client_t *client, dns_message_t *qmessage,
|
|||||||
actx = client->actx;
|
actx = client->actx;
|
||||||
|
|
||||||
reqarg = isc_mem_get(client->mctx, sizeof(*reqarg));
|
reqarg = isc_mem_get(client->mctx, sizeof(*reqarg));
|
||||||
if (reqarg == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
result = isc_mutex_init(&reqarg->lock);
|
isc_mutex_init(&reqarg->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(client->mctx, reqarg, sizeof(*reqarg));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
reqarg->actx = actx;
|
reqarg->actx = actx;
|
||||||
reqarg->client = client;
|
reqarg->client = client;
|
||||||
@@ -1757,17 +1711,7 @@ dns_client_startrequest(dns_client_t *client, dns_message_t *qmessage,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx = isc_mem_get(client->mctx, sizeof(*ctx));
|
ctx = isc_mem_get(client->mctx, sizeof(*ctx));
|
||||||
if (ctx == NULL)
|
isc_mutex_init(&ctx->lock);
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
else {
|
|
||||||
result = isc_mutex_init(&ctx->lock);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(client->mctx, ctx, sizeof(*ctx));
|
|
||||||
ctx = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ctx->client = client;
|
ctx->client = client;
|
||||||
ISC_LINK_INIT(ctx, link);
|
ISC_LINK_INIT(ctx, link);
|
||||||
@@ -1951,10 +1895,8 @@ update_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
result = dns_message_create(client->mctx, DNS_MESSAGE_INTENTPARSE,
|
dns_message_create(client->mctx, DNS_MESSAGE_INTENTPARSE,
|
||||||
&answer);
|
&answer);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto out;
|
|
||||||
uctx->state = dns_clientupdatestate_done;
|
uctx->state = dns_clientupdatestate_done;
|
||||||
result = dns_request_getresponse(request, answer,
|
result = dns_request_getresponse(request, answer,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
@@ -2297,10 +2239,8 @@ receive_soa(isc_task_t *task, isc_event_t *event) {
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_message_create(uctx->client->mctx,
|
dns_message_create(uctx->client->mctx,
|
||||||
DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
DNS_MESSAGE_INTENTPARSE, &rcvmsg);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto out;
|
|
||||||
result = dns_request_getresponse(request, rcvmsg,
|
result = dns_request_getresponse(request, rcvmsg,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
|
|
||||||
@@ -2454,11 +2394,9 @@ request_soa(updatectx_t *uctx) {
|
|||||||
unsigned int reqoptions;
|
unsigned int reqoptions;
|
||||||
|
|
||||||
if (soaquery == NULL) {
|
if (soaquery == NULL) {
|
||||||
result = dns_message_create(uctx->client->mctx,
|
dns_message_create(uctx->client->mctx,
|
||||||
DNS_MESSAGE_INTENTRENDER,
|
DNS_MESSAGE_INTENTRENDER,
|
||||||
&soaquery);
|
&soaquery);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
soaquery->flags |= DNS_MESSAGEFLAG_RD;
|
soaquery->flags |= DNS_MESSAGEFLAG_RD;
|
||||||
result = dns_message_gettempname(soaquery, &name);
|
result = dns_message_gettempname(soaquery, &name);
|
||||||
@@ -2586,9 +2524,7 @@ copy_name(isc_mem_t *mctx, dns_message_t *msg, const dns_name_t *name,
|
|||||||
result = dns_message_gettempname(msg, &newname);
|
result = dns_message_gettempname(msg, &newname);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
result = isc_buffer_allocate(mctx, &namebuf, DNS_NAME_MAXWIRE);
|
isc_buffer_allocate(mctx, &namebuf, DNS_NAME_MAXWIRE);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail;
|
|
||||||
dns_name_init(newname, NULL);
|
dns_name_init(newname, NULL);
|
||||||
dns_name_setbuffer(newname, namebuf);
|
dns_name_setbuffer(newname, namebuf);
|
||||||
dns_message_takebuffer(msg, &namebuf);
|
dns_message_takebuffer(msg, &namebuf);
|
||||||
@@ -2619,10 +2555,8 @@ copy_name(isc_mem_t *mctx, dns_message_t *msg, const dns_name_t *name,
|
|||||||
goto fail;
|
goto fail;
|
||||||
dns_rdata_toregion(&rdata, &r);
|
dns_rdata_toregion(&rdata, &r);
|
||||||
rdatabuf = NULL;
|
rdatabuf = NULL;
|
||||||
result = isc_buffer_allocate(mctx, &rdatabuf,
|
isc_buffer_allocate(mctx, &rdatabuf,
|
||||||
r.length);
|
r.length);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail;
|
|
||||||
isc_buffer_putmem(rdatabuf, r.base, r.length);
|
isc_buffer_putmem(rdatabuf, r.base, r.length);
|
||||||
isc_buffer_usedregion(rdatabuf, &r);
|
isc_buffer_usedregion(rdatabuf, &r);
|
||||||
dns_rdata_init(newrdata);
|
dns_rdata_init(newrdata);
|
||||||
@@ -2710,14 +2644,8 @@ dns_client_update(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||||||
actx = client->actx;
|
actx = client->actx;
|
||||||
|
|
||||||
uarg = isc_mem_get(client->mctx, sizeof(*uarg));
|
uarg = isc_mem_get(client->mctx, sizeof(*uarg));
|
||||||
if (uarg == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
result = isc_mutex_init(&uarg->lock);
|
isc_mutex_init(&uarg->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(client->mctx, uarg, sizeof(*uarg));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
uarg->actx = actx;
|
uarg->actx = actx;
|
||||||
uarg->client = client;
|
uarg->client = client;
|
||||||
@@ -2860,12 +2788,7 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||||||
return (ISC_R_NOMEMORY);
|
return (ISC_R_NOMEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_mutex_init(&uctx->lock);
|
isc_mutex_init(&uctx->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dns_view_detach(&view);
|
|
||||||
isc_mem_put(client->mctx, uctx, sizeof(*uctx));
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
|
|
||||||
tclone = NULL;
|
tclone = NULL;
|
||||||
isc_task_attach(task, &tclone);
|
isc_task_attach(task, &tclone);
|
||||||
@@ -2922,10 +2845,8 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make update message */
|
/* Make update message */
|
||||||
result = dns_message_create(client->mctx, DNS_MESSAGE_INTENTRENDER,
|
dns_message_create(client->mctx, DNS_MESSAGE_INTENTRENDER,
|
||||||
&uctx->updatemsg);
|
&uctx->updatemsg);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail;
|
|
||||||
uctx->updatemsg->opcode = dns_opcode_update;
|
uctx->updatemsg->opcode = dns_opcode_update;
|
||||||
|
|
||||||
if (prerequisites != NULL) {
|
if (prerequisites != NULL) {
|
||||||
|
|||||||
+1
-3
@@ -142,7 +142,7 @@ static unsigned char tableindex[256] = {
|
|||||||
*** Compression
|
*** Compression
|
||||||
***/
|
***/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx) {
|
dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx) {
|
||||||
REQUIRE(cctx != NULL);
|
REQUIRE(cctx != NULL);
|
||||||
REQUIRE(mctx != NULL); /* See: rdataset.c:towiresorted(). */
|
REQUIRE(mctx != NULL); /* See: rdataset.c:towiresorted(). */
|
||||||
@@ -155,8 +155,6 @@ dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx) {
|
|||||||
memset(&cctx->table[0], 0, sizeof(cctx->table));
|
memset(&cctx->table[0], 0, sizeof(cctx->table));
|
||||||
|
|
||||||
cctx->magic = CCTX_MAGIC;
|
cctx->magic = CCTX_MAGIC;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+2
-10
@@ -68,7 +68,7 @@ static dns_dbimplementation_t rbtimp;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
initialize(void) {
|
initialize(void) {
|
||||||
RUNTIME_CHECK(isc_rwlock_init(&implock, 0, 0) == ISC_R_SUCCESS);
|
isc_rwlock_init(&implock, 0, 0);
|
||||||
|
|
||||||
rbtimp.name = "rbt";
|
rbtimp.name = "rbt";
|
||||||
rbtimp.create = dns_rbtdb_create;
|
rbtimp.create = dns_rbtdb_create;
|
||||||
@@ -881,10 +881,6 @@ dns_db_register(const char *name, dns_dbcreatefunc_t create, void *driverarg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
imp = isc_mem_get(mctx, sizeof(dns_dbimplementation_t));
|
imp = isc_mem_get(mctx, sizeof(dns_dbimplementation_t));
|
||||||
if (imp == NULL) {
|
|
||||||
RWUNLOCK(&implock, isc_rwlocktype_write);
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
imp->name = name;
|
imp->name = name;
|
||||||
imp->create = create;
|
imp->create = create;
|
||||||
imp->mctx = NULL;
|
imp->mctx = NULL;
|
||||||
@@ -1031,7 +1027,7 @@ dns_db_rpz_ready(dns_db_t *db) {
|
|||||||
/**
|
/**
|
||||||
* Attach a notify-on-update function the database
|
* Attach a notify-on-update function the database
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_db_updatenotify_register(dns_db_t *db,
|
dns_db_updatenotify_register(dns_db_t *db,
|
||||||
dns_dbupdate_callback_t fn,
|
dns_dbupdate_callback_t fn,
|
||||||
void *fn_arg)
|
void *fn_arg)
|
||||||
@@ -1042,16 +1038,12 @@ dns_db_updatenotify_register(dns_db_t *db,
|
|||||||
REQUIRE(fn != NULL);
|
REQUIRE(fn != NULL);
|
||||||
|
|
||||||
listener = isc_mem_get(db->mctx, sizeof(dns_dbonupdatelistener_t));
|
listener = isc_mem_get(db->mctx, sizeof(dns_dbonupdatelistener_t));
|
||||||
if (listener == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
listener->onupdate = fn;
|
listener->onupdate = fn;
|
||||||
listener->onupdate_arg = fn_arg;
|
listener->onupdate_arg = fn_arg;
|
||||||
|
|
||||||
ISC_LINK_INIT(listener, link);
|
ISC_LINK_INIT(listener, link);
|
||||||
ISC_LIST_APPEND(db->update_listeners, listener, link);
|
ISC_LIST_APPEND(db->update_listeners, listener, link);
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
+4
-25
@@ -48,7 +48,7 @@ dbdetach(void *data, void *arg) {
|
|||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
||||||
dns_dbtable_t **dbtablep)
|
dns_dbtable_t **dbtablep)
|
||||||
{
|
{
|
||||||
@@ -59,21 +59,13 @@ dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
|||||||
REQUIRE(dbtablep != NULL && *dbtablep == NULL);
|
REQUIRE(dbtablep != NULL && *dbtablep == NULL);
|
||||||
|
|
||||||
dbtable = (dns_dbtable_t *)isc_mem_get(mctx, sizeof(*dbtable));
|
dbtable = (dns_dbtable_t *)isc_mem_get(mctx, sizeof(*dbtable));
|
||||||
if (dbtable == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
dbtable->rbt = NULL;
|
dbtable->rbt = NULL;
|
||||||
result = dns_rbt_create(mctx, dbdetach, NULL, &dbtable->rbt);
|
dns_rbt_create(mctx, dbdetach, NULL, &dbtable->rbt);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto clean1;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&dbtable->lock);
|
isc_mutex_init(&dbtable->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto clean2;
|
|
||||||
|
|
||||||
result = isc_rwlock_init(&dbtable->tree_lock, 0, 0);
|
isc_rwlock_init(&dbtable->tree_lock, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto clean3;
|
|
||||||
|
|
||||||
dbtable->default_db = NULL;
|
dbtable->default_db = NULL;
|
||||||
dbtable->mctx = NULL;
|
dbtable->mctx = NULL;
|
||||||
@@ -83,19 +75,6 @@ dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
|||||||
dbtable->references = 1;
|
dbtable->references = 1;
|
||||||
|
|
||||||
*dbtablep = dbtable;
|
*dbtablep = dbtable;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
clean3:
|
|
||||||
DESTROYLOCK(&dbtable->lock);
|
|
||||||
|
|
||||||
clean2:
|
|
||||||
dns_rbt_destroy(&dbtable->rbt);
|
|
||||||
|
|
||||||
clean1:
|
|
||||||
isc_mem_putanddetach(&mctx, dbtable, sizeof(*dbtable));
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
|||||||
+46
-289
@@ -310,9 +310,9 @@ static isc_result_t dispatch_createudp(dns_dispatchmgr_t *mgr,
|
|||||||
isc_socket_t *dup_socket);
|
isc_socket_t *dup_socket);
|
||||||
static bool destroy_mgr_ok(dns_dispatchmgr_t *mgr);
|
static bool destroy_mgr_ok(dns_dispatchmgr_t *mgr);
|
||||||
static void destroy_mgr(dns_dispatchmgr_t **mgrp);
|
static void destroy_mgr(dns_dispatchmgr_t **mgrp);
|
||||||
static isc_result_t qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
static void qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
||||||
unsigned int increment, dns_qid_t **qidp,
|
unsigned int increment, dns_qid_t **qidp,
|
||||||
bool needaddrtable);
|
bool needaddrtable);
|
||||||
static void qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp);
|
static void qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp);
|
||||||
static isc_result_t open_socket(isc_socketmgr_t *mgr,
|
static isc_result_t open_socket(isc_socketmgr_t *mgr,
|
||||||
const isc_sockaddr_t *local,
|
const isc_sockaddr_t *local,
|
||||||
@@ -983,8 +983,6 @@ allocate_devent(dns_dispatch_t *disp) {
|
|||||||
dns_dispatchevent_t *ev;
|
dns_dispatchevent_t *ev;
|
||||||
|
|
||||||
ev = isc_mempool_get(disp->mgr->depool);
|
ev = isc_mempool_get(disp->mgr->depool);
|
||||||
if (ev == NULL)
|
|
||||||
return (NULL);
|
|
||||||
ISC_EVENT_INIT(ev, sizeof(*ev), 0, NULL, 0,
|
ISC_EVENT_INIT(ev, sizeof(*ev), 0, NULL, 0,
|
||||||
NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
@@ -1249,10 +1247,6 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) {
|
|||||||
sendresponse:
|
sendresponse:
|
||||||
queue_response = resp->item_out;
|
queue_response = resp->item_out;
|
||||||
rev = allocate_devent(resp->disp);
|
rev = allocate_devent(resp->disp);
|
||||||
if (rev == NULL) {
|
|
||||||
free_buffer(disp, ev->region.base, ev->region.length);
|
|
||||||
goto unlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* At this point, rev contains the event we want to fill in, and
|
* At this point, rev contains the event we want to fill in, and
|
||||||
@@ -1446,8 +1440,6 @@ tcp_recv(isc_task_t *task, isc_event_t *ev_in) {
|
|||||||
goto unlock;
|
goto unlock;
|
||||||
queue_response = resp->item_out;
|
queue_response = resp->item_out;
|
||||||
rev = allocate_devent(disp);
|
rev = allocate_devent(disp);
|
||||||
if (rev == NULL)
|
|
||||||
goto unlock;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* At this point, rev contains the event we want to fill in, and
|
* At this point, rev contains the event we want to fill in, and
|
||||||
@@ -1718,27 +1710,22 @@ open_socket(isc_socketmgr_t *mgr, const isc_sockaddr_t *local,
|
|||||||
* normally set the ports explicitly, but is provided to fill some minor corner
|
* normally set the ports explicitly, but is provided to fill some minor corner
|
||||||
* cases.
|
* cases.
|
||||||
*/
|
*/
|
||||||
static isc_result_t
|
static void
|
||||||
create_default_portset(isc_mem_t *mctx, isc_portset_t **portsetp) {
|
create_default_portset(isc_mem_t *mctx, isc_portset_t **portsetp) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
result = isc_portset_create(mctx, portsetp);
|
isc_portset_create(mctx, portsetp);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
isc_portset_addrange(*portsetp, 1024, 65535);
|
isc_portset_addrange(*portsetp, 1024, 65535);
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Publics.
|
* Publics.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp)
|
dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp)
|
||||||
{
|
{
|
||||||
dns_dispatchmgr_t *mgr;
|
dns_dispatchmgr_t *mgr;
|
||||||
isc_result_t result;
|
|
||||||
isc_portset_t *v4portset = NULL;
|
isc_portset_t *v4portset = NULL;
|
||||||
isc_portset_t *v6portset = NULL;
|
isc_portset_t *v6portset = NULL;
|
||||||
|
|
||||||
@@ -1746,8 +1733,6 @@ dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp)
|
|||||||
REQUIRE(mgrp != NULL && *mgrp == NULL);
|
REQUIRE(mgrp != NULL && *mgrp == NULL);
|
||||||
|
|
||||||
mgr = isc_mem_get(mctx, sizeof(dns_dispatchmgr_t));
|
mgr = isc_mem_get(mctx, sizeof(dns_dispatchmgr_t));
|
||||||
if (mgr == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
mgr->mctx = NULL;
|
mgr->mctx = NULL;
|
||||||
isc_mem_attach(mctx, &mgr->mctx);
|
isc_mem_attach(mctx, &mgr->mctx);
|
||||||
@@ -1755,54 +1740,24 @@ dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp)
|
|||||||
mgr->blackhole = NULL;
|
mgr->blackhole = NULL;
|
||||||
mgr->stats = NULL;
|
mgr->stats = NULL;
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->lock);
|
isc_mutex_init(&mgr->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_mutex_init(&mgr->buffer_lock);
|
||||||
goto deallocate;
|
isc_mutex_init(&mgr->depool_lock);
|
||||||
|
isc_mutex_init(&mgr->rpool_lock);
|
||||||
result = isc_mutex_init(&mgr->buffer_lock);
|
isc_mutex_init(&mgr->dpool_lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_mutex_init(&mgr->bpool_lock);
|
||||||
goto kill_lock;
|
isc_mutex_init(&mgr->spool_lock);
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->depool_lock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_buffer_lock;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->rpool_lock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_depool_lock;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->dpool_lock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_rpool_lock;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->bpool_lock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_dpool_lock;
|
|
||||||
|
|
||||||
result = isc_mutex_init(&mgr->spool_lock);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_bpool_lock;
|
|
||||||
|
|
||||||
mgr->depool = NULL;
|
mgr->depool = NULL;
|
||||||
if (isc_mempool_create(mgr->mctx, sizeof(dns_dispatchevent_t),
|
isc_mempool_create(mgr->mctx, sizeof(dns_dispatchevent_t),
|
||||||
&mgr->depool) != ISC_R_SUCCESS) {
|
&mgr->depool);
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_spool_lock;
|
|
||||||
}
|
|
||||||
|
|
||||||
mgr->rpool = NULL;
|
mgr->rpool = NULL;
|
||||||
if (isc_mempool_create(mgr->mctx, sizeof(dns_dispentry_t),
|
isc_mempool_create(mgr->mctx, sizeof(dns_dispentry_t),
|
||||||
&mgr->rpool) != ISC_R_SUCCESS) {
|
&mgr->rpool);
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_depool;
|
|
||||||
}
|
|
||||||
|
|
||||||
mgr->dpool = NULL;
|
mgr->dpool = NULL;
|
||||||
if (isc_mempool_create(mgr->mctx, sizeof(dns_dispatch_t),
|
isc_mempool_create(mgr->mctx, sizeof(dns_dispatch_t),
|
||||||
&mgr->dpool) != ISC_R_SUCCESS) {
|
&mgr->dpool);
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_rpool;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_mempool_setname(mgr->depool, "dispmgr_depool");
|
isc_mempool_setname(mgr->depool, "dispmgr_depool");
|
||||||
isc_mempool_setmaxalloc(mgr->depool, 32768);
|
isc_mempool_setmaxalloc(mgr->depool, 32768);
|
||||||
@@ -1836,50 +1791,16 @@ dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp)
|
|||||||
mgr->nv6ports = 0;
|
mgr->nv6ports = 0;
|
||||||
mgr->magic = DNS_DISPATCHMGR_MAGIC;
|
mgr->magic = DNS_DISPATCHMGR_MAGIC;
|
||||||
|
|
||||||
result = create_default_portset(mctx, &v4portset);
|
create_default_portset(mctx, &v4portset);
|
||||||
if (result == ISC_R_SUCCESS) {
|
create_default_portset(mctx, &v6portset);
|
||||||
result = create_default_portset(mctx, &v6portset);
|
dns_dispatchmgr_setavailports(mgr, v4portset, v6portset);
|
||||||
if (result == ISC_R_SUCCESS) {
|
|
||||||
result = dns_dispatchmgr_setavailports(mgr,
|
|
||||||
v4portset,
|
|
||||||
v6portset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (v4portset != NULL)
|
if (v4portset != NULL)
|
||||||
isc_portset_destroy(mctx, &v4portset);
|
isc_portset_destroy(mctx, &v4portset);
|
||||||
if (v6portset != NULL)
|
if (v6portset != NULL)
|
||||||
isc_portset_destroy(mctx, &v6portset);
|
isc_portset_destroy(mctx, &v6portset);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_dpool;
|
|
||||||
|
|
||||||
*mgrp = mgr;
|
*mgrp = mgr;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
kill_dpool:
|
|
||||||
isc_mempool_destroy(&mgr->dpool);
|
|
||||||
kill_rpool:
|
|
||||||
isc_mempool_destroy(&mgr->rpool);
|
|
||||||
kill_depool:
|
|
||||||
isc_mempool_destroy(&mgr->depool);
|
|
||||||
kill_spool_lock:
|
|
||||||
DESTROYLOCK(&mgr->spool_lock);
|
|
||||||
kill_bpool_lock:
|
|
||||||
DESTROYLOCK(&mgr->bpool_lock);
|
|
||||||
kill_dpool_lock:
|
|
||||||
DESTROYLOCK(&mgr->dpool_lock);
|
|
||||||
kill_rpool_lock:
|
|
||||||
DESTROYLOCK(&mgr->rpool_lock);
|
|
||||||
kill_depool_lock:
|
|
||||||
DESTROYLOCK(&mgr->depool_lock);
|
|
||||||
kill_buffer_lock:
|
|
||||||
DESTROYLOCK(&mgr->buffer_lock);
|
|
||||||
kill_lock:
|
|
||||||
DESTROYLOCK(&mgr->lock);
|
|
||||||
deallocate:
|
|
||||||
isc_mem_put(mctx, mgr, sizeof(dns_dispatchmgr_t));
|
|
||||||
isc_mem_detach(&mctx);
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1913,7 +1834,7 @@ dns_dispatchmgr_getblackportlist(dns_dispatchmgr_t *mgr) {
|
|||||||
return (NULL); /* this function is deprecated */
|
return (NULL); /* this function is deprecated */
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
||||||
isc_portset_t *v6portset)
|
isc_portset_t *v6portset)
|
||||||
{
|
{
|
||||||
@@ -1928,20 +1849,10 @@ dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
|||||||
v4ports = NULL;
|
v4ports = NULL;
|
||||||
if (nv4ports != 0) {
|
if (nv4ports != 0) {
|
||||||
v4ports = isc_mem_get(mgr->mctx, sizeof(in_port_t) * nv4ports);
|
v4ports = isc_mem_get(mgr->mctx, sizeof(in_port_t) * nv4ports);
|
||||||
if (v4ports == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
}
|
||||||
v6ports = NULL;
|
v6ports = NULL;
|
||||||
if (nv6ports != 0) {
|
if (nv6ports != 0) {
|
||||||
v6ports = isc_mem_get(mgr->mctx, sizeof(in_port_t) * nv6ports);
|
v6ports = isc_mem_get(mgr->mctx, sizeof(in_port_t) * nv6ports);
|
||||||
if (v6ports == NULL) {
|
|
||||||
if (v4ports != NULL) {
|
|
||||||
isc_mem_put(mgr->mctx, v4ports,
|
|
||||||
sizeof(in_port_t) *
|
|
||||||
isc_portset_nports(v4portset));
|
|
||||||
}
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p = 0;
|
p = 0;
|
||||||
@@ -1974,18 +1885,14 @@ dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
|||||||
mgr->v6ports = v6ports;
|
mgr->v6ports = v6ports;
|
||||||
mgr->nv6ports = nv6ports;
|
mgr->nv6ports = nv6ports;
|
||||||
PORTBUFUNLOCK(mgr);
|
PORTBUFUNLOCK(mgr);
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
|
dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
|
||||||
unsigned int buffersize, unsigned int maxbuffers,
|
unsigned int buffersize, unsigned int maxbuffers,
|
||||||
unsigned int maxrequests, unsigned int buckets,
|
unsigned int maxrequests, unsigned int buckets,
|
||||||
unsigned int increment)
|
unsigned int increment)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
|
||||||
|
|
||||||
REQUIRE(VALID_DISPATCHMGR(mgr));
|
REQUIRE(VALID_DISPATCHMGR(mgr));
|
||||||
REQUIRE(buffersize >= 512 && buffersize < (64 * 1024));
|
REQUIRE(buffersize >= 512 && buffersize < (64 * 1024));
|
||||||
REQUIRE(maxbuffers > 0);
|
REQUIRE(maxbuffers > 0);
|
||||||
@@ -2026,11 +1933,7 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
|
|||||||
mgr->maxbuffers = maxbuffers;
|
mgr->maxbuffers = maxbuffers;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result = isc_mempool_create(mgr->mctx, buffersize, &mgr->bpool);
|
isc_mempool_create(mgr->mctx, buffersize, &mgr->bpool);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNLOCK(&mgr->buffer_lock);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
isc_mempool_setname(mgr->bpool, "dispmgr_bpool");
|
isc_mempool_setname(mgr->bpool, "dispmgr_bpool");
|
||||||
isc_mempool_setmaxalloc(mgr->bpool, maxbuffers);
|
isc_mempool_setmaxalloc(mgr->bpool, maxbuffers);
|
||||||
isc_mempool_setfreemax(mgr->bpool, maxbuffers);
|
isc_mempool_setfreemax(mgr->bpool, maxbuffers);
|
||||||
@@ -2047,12 +1950,10 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
|
|||||||
DNS_DISPATCH_POOLSOCKS * 2);
|
DNS_DISPATCH_POOLSOCKS * 2);
|
||||||
}
|
}
|
||||||
UNLOCK(&mgr->buffer_lock);
|
UNLOCK(&mgr->buffer_lock);
|
||||||
return (ISC_R_SUCCESS);
|
return;
|
||||||
}
|
}
|
||||||
result = isc_mempool_create(mgr->mctx, sizeof(dispsocket_t),
|
isc_mempool_create(mgr->mctx, sizeof(dispsocket_t),
|
||||||
&mgr->spool);
|
&mgr->spool);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
isc_mempool_setname(mgr->spool, "dispmgr_spool");
|
isc_mempool_setname(mgr->spool, "dispmgr_spool");
|
||||||
isc_mempool_setmaxalloc(mgr->spool, maxrequests);
|
isc_mempool_setmaxalloc(mgr->spool, maxrequests);
|
||||||
@@ -2060,21 +1961,11 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
|
|||||||
isc_mempool_associatelock(mgr->spool, &mgr->spool_lock);
|
isc_mempool_associatelock(mgr->spool, &mgr->spool_lock);
|
||||||
isc_mempool_setfillcount(mgr->spool, 32);
|
isc_mempool_setfillcount(mgr->spool, 32);
|
||||||
|
|
||||||
result = qid_allocate(mgr, buckets, increment, &mgr->qid, true);
|
qid_allocate(mgr, buckets, increment, &mgr->qid, true);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
mgr->buffersize = buffersize;
|
mgr->buffersize = buffersize;
|
||||||
mgr->maxbuffers = maxbuffers;
|
mgr->maxbuffers = maxbuffers;
|
||||||
UNLOCK(&mgr->buffer_lock);
|
UNLOCK(&mgr->buffer_lock);
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
isc_mempool_destroy(&mgr->bpool);
|
|
||||||
if (mgr->spool != NULL)
|
|
||||||
isc_mempool_destroy(&mgr->spool);
|
|
||||||
UNLOCK(&mgr->buffer_lock);
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2250,7 +2141,7 @@ dispatch_find(dns_dispatchmgr_t *mgr, const isc_sockaddr_t *local,
|
|||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
||||||
unsigned int increment, dns_qid_t **qidp,
|
unsigned int increment, dns_qid_t **qidp,
|
||||||
bool needsocktable)
|
bool needsocktable)
|
||||||
@@ -2265,40 +2156,16 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
|||||||
REQUIRE(qidp != NULL && *qidp == NULL);
|
REQUIRE(qidp != NULL && *qidp == NULL);
|
||||||
|
|
||||||
qid = isc_mem_get(mgr->mctx, sizeof(*qid));
|
qid = isc_mem_get(mgr->mctx, sizeof(*qid));
|
||||||
if (qid == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
qid->qid_table = isc_mem_get(mgr->mctx,
|
qid->qid_table = isc_mem_get(mgr->mctx,
|
||||||
buckets * sizeof(dns_displist_t));
|
buckets * sizeof(dns_displist_t));
|
||||||
if (qid->qid_table == NULL) {
|
|
||||||
isc_mem_put(mgr->mctx, qid, sizeof(*qid));
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
|
|
||||||
qid->sock_table = NULL;
|
qid->sock_table = NULL;
|
||||||
if (needsocktable) {
|
if (needsocktable) {
|
||||||
qid->sock_table = isc_mem_get(mgr->mctx, buckets *
|
qid->sock_table = isc_mem_get(mgr->mctx, buckets *
|
||||||
sizeof(dispsocketlist_t));
|
sizeof(dispsocketlist_t));
|
||||||
if (qid->sock_table == NULL) {
|
|
||||||
isc_mem_put(mgr->mctx, qid->qid_table,
|
|
||||||
buckets * sizeof(dns_displist_t));
|
|
||||||
isc_mem_put(mgr->mctx, qid, sizeof(*qid));
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_mutex_init(&qid->lock);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
if (qid->sock_table != NULL) {
|
|
||||||
isc_mem_put(mgr->mctx, qid->sock_table,
|
|
||||||
buckets * sizeof(dispsocketlist_t));
|
|
||||||
}
|
|
||||||
isc_mem_put(mgr->mctx, qid->qid_table,
|
|
||||||
buckets * sizeof(dns_displist_t));
|
|
||||||
isc_mem_put(mgr->mctx, qid, sizeof(*qid));
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isc_mutex_init(&qid->lock);
|
||||||
for (i = 0; i < buckets; i++) {
|
for (i = 0; i < buckets; i++) {
|
||||||
ISC_LIST_INIT(qid->qid_table[i]);
|
ISC_LIST_INIT(qid->qid_table[i]);
|
||||||
if (qid->sock_table != NULL)
|
if (qid->sock_table != NULL)
|
||||||
@@ -2309,7 +2176,6 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
|
|||||||
qid->qid_increment = increment;
|
qid->qid_increment = increment;
|
||||||
qid->magic = QID_MAGIC;
|
qid->magic = QID_MAGIC;
|
||||||
*qidp = qid;
|
*qidp = qid;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2336,7 +2202,7 @@ qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp) {
|
|||||||
/*
|
/*
|
||||||
* Allocate and set important limits.
|
* Allocate and set important limits.
|
||||||
*/
|
*/
|
||||||
static isc_result_t
|
static void
|
||||||
dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests,
|
dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests,
|
||||||
dns_dispatch_t **dispp)
|
dns_dispatch_t **dispp)
|
||||||
{
|
{
|
||||||
@@ -2352,8 +2218,6 @@ dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
disp = isc_mempool_get(mgr->dpool);
|
disp = isc_mempool_get(mgr->dpool);
|
||||||
if (disp == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
disp->magic = 0;
|
disp->magic = 0;
|
||||||
disp->mgr = mgr;
|
disp->mgr = mgr;
|
||||||
@@ -2380,30 +2244,12 @@ dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests,
|
|||||||
disp->portpool = NULL;
|
disp->portpool = NULL;
|
||||||
disp->dscp = -1;
|
disp->dscp = -1;
|
||||||
|
|
||||||
result = isc_mutex_init(&disp->lock);
|
isc_mutex_init(&disp->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto deallocate;
|
|
||||||
|
|
||||||
disp->failsafe_ev = allocate_devent(disp);
|
disp->failsafe_ev = allocate_devent(disp);
|
||||||
if (disp->failsafe_ev == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_lock;
|
|
||||||
}
|
|
||||||
|
|
||||||
disp->magic = DISPATCH_MAGIC;
|
disp->magic = DISPATCH_MAGIC;
|
||||||
|
|
||||||
*dispp = disp;
|
*dispp = disp;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* error returns
|
|
||||||
*/
|
|
||||||
kill_lock:
|
|
||||||
DESTROYLOCK(&disp->lock);
|
|
||||||
deallocate:
|
|
||||||
isc_mempool_put(mgr->dpool, disp);
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2457,7 +2303,7 @@ dispatch_free(dns_dispatch_t **dispp) {
|
|||||||
isc_mempool_put(mgr->dpool, disp);
|
isc_mempool_put(mgr->dpool, disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
||||||
isc_taskmgr_t *taskmgr, const isc_sockaddr_t *localaddr,
|
isc_taskmgr_t *taskmgr, const isc_sockaddr_t *localaddr,
|
||||||
const isc_sockaddr_t *destaddr, unsigned int buffersize,
|
const isc_sockaddr_t *destaddr, unsigned int buffersize,
|
||||||
@@ -2465,7 +2311,6 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
|||||||
unsigned int buckets, unsigned int increment,
|
unsigned int buckets, unsigned int increment,
|
||||||
unsigned int attributes, dns_dispatch_t **dispp)
|
unsigned int attributes, dns_dispatch_t **dispp)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
|
||||||
dns_dispatch_t *disp;
|
dns_dispatch_t *disp;
|
||||||
|
|
||||||
UNUSED(maxbuffers);
|
UNUSED(maxbuffers);
|
||||||
@@ -2486,15 +2331,9 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
|||||||
* qid_allocate() checks buckets and increment for us.
|
* qid_allocate() checks buckets and increment for us.
|
||||||
*/
|
*/
|
||||||
disp = NULL;
|
disp = NULL;
|
||||||
result = dispatch_allocate(mgr, maxrequests, &disp);
|
dispatch_allocate(mgr, maxrequests, &disp);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNLOCK(&mgr->lock);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = qid_allocate(mgr, buckets, increment, &disp->qid, false);
|
qid_allocate(mgr, buckets, increment, &disp->qid, false);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto deallocate_dispatch;
|
|
||||||
|
|
||||||
disp->socktype = isc_sockettype_tcp;
|
disp->socktype = isc_sockettype_tcp;
|
||||||
disp->socket = NULL;
|
disp->socket = NULL;
|
||||||
@@ -2504,19 +2343,12 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
|||||||
|
|
||||||
disp->ntasks = 1;
|
disp->ntasks = 1;
|
||||||
disp->task[0] = NULL;
|
disp->task[0] = NULL;
|
||||||
result = isc_task_create(taskmgr, 0, &disp->task[0]);
|
RUNTIME_CHECK(isc_task_create(taskmgr, 0, &disp->task[0]) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_socket;
|
|
||||||
|
|
||||||
disp->ctlevent = isc_event_allocate(mgr->mctx, disp,
|
disp->ctlevent = isc_event_allocate(mgr->mctx, disp,
|
||||||
DNS_EVENT_DISPATCHCONTROL,
|
DNS_EVENT_DISPATCHCONTROL,
|
||||||
destroy_disp, disp,
|
destroy_disp, disp,
|
||||||
sizeof(isc_event_t));
|
sizeof(isc_event_t));
|
||||||
if (disp->ctlevent == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_task;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_task_setname(disp->task[0], "tcpdispatch", disp);
|
isc_task_setname(disp->task[0], "tcpdispatch", disp);
|
||||||
|
|
||||||
dns_tcpmsg_init(mgr->mctx, disp->socket, &disp->tcpmsg);
|
dns_tcpmsg_init(mgr->mctx, disp->socket, &disp->tcpmsg);
|
||||||
@@ -2550,22 +2382,6 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
|||||||
mgr_log(mgr, LVL(90), "created TCP dispatcher %p", disp);
|
mgr_log(mgr, LVL(90), "created TCP dispatcher %p", disp);
|
||||||
dispatch_log(disp, LVL(90), "created task %p", disp->task[0]);
|
dispatch_log(disp, LVL(90), "created task %p", disp->task[0]);
|
||||||
*dispp = disp;
|
*dispp = disp;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Error returns.
|
|
||||||
*/
|
|
||||||
kill_task:
|
|
||||||
isc_task_detach(&disp->task[0]);
|
|
||||||
kill_socket:
|
|
||||||
isc_socket_detach(&disp->socket);
|
|
||||||
deallocate_dispatch:
|
|
||||||
dispatch_free(&disp);
|
|
||||||
|
|
||||||
UNLOCK(&mgr->lock);
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
@@ -2669,10 +2485,8 @@ dns_dispatch_getudp_dup(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
REQUIRE(dispp != NULL && *dispp == NULL);
|
REQUIRE(dispp != NULL && *dispp == NULL);
|
||||||
REQUIRE((attributes & DNS_DISPATCHATTR_TCP) == 0);
|
REQUIRE((attributes & DNS_DISPATCHATTR_TCP) == 0);
|
||||||
|
|
||||||
result = dns_dispatchmgr_setudp(mgr, buffersize, maxbuffers,
|
dns_dispatchmgr_setudp(mgr, buffersize, maxbuffers,
|
||||||
maxrequests, buckets, increment);
|
maxrequests, buckets, increment);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
LOCK(&mgr->lock);
|
LOCK(&mgr->lock);
|
||||||
|
|
||||||
@@ -2878,9 +2692,7 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
* dispatch_allocate() checks mgr for us.
|
* dispatch_allocate() checks mgr for us.
|
||||||
*/
|
*/
|
||||||
disp = NULL;
|
disp = NULL;
|
||||||
result = dispatch_allocate(mgr, maxrequests, &disp);
|
dispatch_allocate(mgr, maxrequests, &disp);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
disp->socktype = isc_sockettype_udp;
|
disp->socktype = isc_sockettype_udp;
|
||||||
|
|
||||||
@@ -2921,15 +2733,11 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
disp->port_table = isc_mem_get(mgr->mctx,
|
disp->port_table = isc_mem_get(mgr->mctx,
|
||||||
sizeof(disp->port_table[0]) *
|
sizeof(disp->port_table[0]) *
|
||||||
DNS_DISPATCH_PORTTABLESIZE);
|
DNS_DISPATCH_PORTTABLESIZE);
|
||||||
if (disp->port_table == NULL)
|
|
||||||
goto deallocate_dispatch;
|
|
||||||
for (i = 0; i < DNS_DISPATCH_PORTTABLESIZE; i++)
|
for (i = 0; i < DNS_DISPATCH_PORTTABLESIZE; i++)
|
||||||
ISC_LIST_INIT(disp->port_table[i]);
|
ISC_LIST_INIT(disp->port_table[i]);
|
||||||
|
|
||||||
result = isc_mempool_create(mgr->mctx, sizeof(dispportentry_t),
|
isc_mempool_create(mgr->mctx, sizeof(dispportentry_t),
|
||||||
&disp->portpool);
|
&disp->portpool);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto deallocate_dispatch;
|
|
||||||
isc_mempool_setname(disp->portpool, "disp_portpool");
|
isc_mempool_setname(disp->portpool, "disp_portpool");
|
||||||
isc_mempool_setfreemax(disp->portpool, 128);
|
isc_mempool_setfreemax(disp->portpool, 128);
|
||||||
}
|
}
|
||||||
@@ -2942,14 +2750,7 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
disp->ntasks = 1;
|
disp->ntasks = 1;
|
||||||
for (i = 0; i < disp->ntasks; i++) {
|
for (i = 0; i < disp->ntasks; i++) {
|
||||||
disp->task[i] = NULL;
|
disp->task[i] = NULL;
|
||||||
result = isc_task_create(taskmgr, 0, &disp->task[i]);
|
RUNTIME_CHECK(isc_task_create(taskmgr, 0, &disp->task[i]) == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
while (--i >= 0) {
|
|
||||||
isc_task_shutdown(disp->task[i]);
|
|
||||||
isc_task_detach(&disp->task[i]);
|
|
||||||
}
|
|
||||||
goto kill_socket;
|
|
||||||
}
|
|
||||||
isc_task_setname(disp->task[i], "udpdispatch", disp);
|
isc_task_setname(disp->task[i], "udpdispatch", disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2957,22 +2758,11 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
DNS_EVENT_DISPATCHCONTROL,
|
DNS_EVENT_DISPATCHCONTROL,
|
||||||
destroy_disp, disp,
|
destroy_disp, disp,
|
||||||
sizeof(isc_event_t));
|
sizeof(isc_event_t));
|
||||||
if (disp->ctlevent == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_task;
|
|
||||||
}
|
|
||||||
|
|
||||||
disp->sepool = NULL;
|
disp->sepool = NULL;
|
||||||
if (isc_mempool_create(mgr->mctx, sizeof(isc_socketevent_t),
|
isc_mempool_create(mgr->mctx, sizeof(isc_socketevent_t),
|
||||||
&disp->sepool) != ISC_R_SUCCESS)
|
&disp->sepool);
|
||||||
{
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto kill_ctlevent;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_mutex_init(&disp->sepool_lock);
|
isc_mutex_init(&disp->sepool_lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto kill_sepool;
|
|
||||||
|
|
||||||
isc_mempool_setname(disp->sepool, "disp_sepool");
|
isc_mempool_setname(disp->sepool, "disp_sepool");
|
||||||
isc_mempool_setmaxalloc(disp->sepool, 32768);
|
isc_mempool_setmaxalloc(disp->sepool, 32768);
|
||||||
@@ -3001,16 +2791,6 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
/*
|
/*
|
||||||
* Error returns.
|
* Error returns.
|
||||||
*/
|
*/
|
||||||
kill_sepool:
|
|
||||||
isc_mempool_destroy(&disp->sepool);
|
|
||||||
kill_ctlevent:
|
|
||||||
isc_event_free(&disp->ctlevent);
|
|
||||||
kill_task:
|
|
||||||
for (i = 0; i < disp->ntasks; i++)
|
|
||||||
isc_task_detach(&disp->task[i]);
|
|
||||||
kill_socket:
|
|
||||||
if (disp->socket != NULL)
|
|
||||||
isc_socket_detach(&disp->socket);
|
|
||||||
deallocate_dispatch:
|
deallocate_dispatch:
|
||||||
dispatch_free(&disp);
|
dispatch_free(&disp);
|
||||||
|
|
||||||
@@ -3122,22 +2902,7 @@ dns_dispatch_addresponse(dns_dispatch_t *disp, unsigned int options,
|
|||||||
oldestsocket = ISC_LIST_HEAD(disp->activesockets);
|
oldestsocket = ISC_LIST_HEAD(disp->activesockets);
|
||||||
oldestresp = oldestsocket->resp;
|
oldestresp = oldestsocket->resp;
|
||||||
if (oldestresp != NULL && !oldestresp->item_out) {
|
if (oldestresp != NULL && !oldestresp->item_out) {
|
||||||
rev = allocate_devent(oldestresp->disp);
|
allocate_devent(oldestresp->disp);
|
||||||
if (rev != NULL) {
|
|
||||||
rev->buffer.base = NULL;
|
|
||||||
rev->result = ISC_R_CANCELED;
|
|
||||||
rev->id = oldestresp->id;
|
|
||||||
ISC_EVENT_INIT(rev, sizeof(*rev), 0,
|
|
||||||
NULL, DNS_EVENT_DISPATCH,
|
|
||||||
oldestresp->action,
|
|
||||||
oldestresp->arg, oldestresp,
|
|
||||||
NULL, NULL);
|
|
||||||
oldestresp->item_out = true;
|
|
||||||
isc_task_send(oldestresp->task,
|
|
||||||
ISC_EVENT_PTR(&rev));
|
|
||||||
inc_stats(disp->mgr,
|
|
||||||
dns_resstatscounter_dispabort);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3667,19 +3432,11 @@ dns_dispatchset_create(isc_mem_t *mctx, isc_socketmgr_t *sockmgr,
|
|||||||
mgr = source->mgr;
|
mgr = source->mgr;
|
||||||
|
|
||||||
dset = isc_mem_get(mctx, sizeof(dns_dispatchset_t));
|
dset = isc_mem_get(mctx, sizeof(dns_dispatchset_t));
|
||||||
if (dset == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
memset(dset, 0, sizeof(*dset));
|
memset(dset, 0, sizeof(*dset));
|
||||||
|
|
||||||
result = isc_mutex_init(&dset->lock);
|
isc_mutex_init(&dset->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail_alloc;
|
|
||||||
|
|
||||||
dset->dispatches = isc_mem_get(mctx, sizeof(dns_dispatch_t *) * n);
|
dset->dispatches = isc_mem_get(mctx, sizeof(dns_dispatch_t *) * n);
|
||||||
if (dset->dispatches == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto fail_lock;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_mem_attach(mctx, &dset->mctx);
|
isc_mem_attach(mctx, &dset->mctx);
|
||||||
dset->ndisp = n;
|
dset->ndisp = n;
|
||||||
|
|||||||
+2
-4
@@ -83,7 +83,7 @@ static isc_once_t once = ISC_ONCE_INIT;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
dlz_initialize(void) {
|
dlz_initialize(void) {
|
||||||
RUNTIME_CHECK(isc_rwlock_init(&dlz_implock, 0, 0) == ISC_R_SUCCESS);
|
isc_rwlock_init(&dlz_implock, 0, 0);
|
||||||
ISC_LIST_INIT(dlz_implementations);
|
ISC_LIST_INIT(dlz_implementations);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,10 +476,8 @@ dns_dlz_writeablezone(dns_view_t *view, dns_dlzdb_t *dlzdb,
|
|||||||
dns_zone_setadded(zone, true);
|
dns_zone_setadded(zone, true);
|
||||||
|
|
||||||
if (dlzdb->ssutable == NULL) {
|
if (dlzdb->ssutable == NULL) {
|
||||||
result = dns_ssutable_createdlz(dlzdb->mctx,
|
dns_ssutable_createdlz(dlzdb->mctx,
|
||||||
&dlzdb->ssutable, dlzdb);
|
&dlzdb->ssutable, dlzdb);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
dns_zone_setssutable(zone, dlzdb->ssutable);
|
dns_zone_setssutable(zone, dlzdb->ssutable);
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -257,12 +257,8 @@ dns_dnssec_sign(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
|
|||||||
* they're not used in digest_sig().
|
* they're not used in digest_sig().
|
||||||
*/
|
*/
|
||||||
sig.signature = isc_mem_get(mctx, sig.siglen);
|
sig.signature = isc_mem_get(mctx, sig.siglen);
|
||||||
if (sig.signature == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
ret = isc_buffer_allocate(mctx, &databuf, sigsize + 256 + 18);
|
isc_buffer_allocate(mctx, &databuf, sigsize + 256 + 18);
|
||||||
if (ret != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_signature;
|
|
||||||
|
|
||||||
dns_rdata_init(&tmpsigrdata);
|
dns_rdata_init(&tmpsigrdata);
|
||||||
ret = dns_rdata_fromstruct(&tmpsigrdata, sig.common.rdclass,
|
ret = dns_rdata_fromstruct(&tmpsigrdata, sig.common.rdclass,
|
||||||
@@ -972,7 +968,7 @@ dns_dnssec_signmessage(dns_message_t *msg, dst_key_t *key) {
|
|||||||
|
|
||||||
rdata = NULL;
|
rdata = NULL;
|
||||||
RETERR(dns_message_gettemprdata(msg, &rdata));
|
RETERR(dns_message_gettemprdata(msg, &rdata));
|
||||||
RETERR(isc_buffer_allocate(msg->mctx, &dynbuf, 1024));
|
isc_buffer_allocate(msg->mctx, &dynbuf, 1024);
|
||||||
RETERR(dns_rdata_fromstruct(rdata, dns_rdataclass_any,
|
RETERR(dns_rdata_fromstruct(rdata, dns_rdataclass_any,
|
||||||
dns_rdatatype_sig /* SIG(0) */,
|
dns_rdatatype_sig /* SIG(0) */,
|
||||||
&sig, dynbuf));
|
&sig, dynbuf));
|
||||||
|
|||||||
+9
-18
@@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
*
|
*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
@@ -159,10 +159,8 @@ dst_lib_init(isc_mem_t *mctx, const char *engine) {
|
|||||||
* ISC_MEMFLAG_INTERNAL as it will free up memory still being used
|
* ISC_MEMFLAG_INTERNAL as it will free up memory still being used
|
||||||
* by libcrypto.
|
* by libcrypto.
|
||||||
*/
|
*/
|
||||||
result = isc_mem_createx2(0, 0, default_memalloc, default_memfree,
|
isc_mem_createx2(0, 0, default_memalloc, default_memfree,
|
||||||
NULL, &dst__memory_pool, 0);
|
NULL, &dst__memory_pool, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
isc_mem_setname(dst__memory_pool, "dst", NULL);
|
isc_mem_setname(dst__memory_pool, "dst", NULL);
|
||||||
#ifndef OPENSSL_LEAKS
|
#ifndef OPENSSL_LEAKS
|
||||||
isc_mem_setdestroycheck(dst__memory_pool, false);
|
isc_mem_setdestroycheck(dst__memory_pool, false);
|
||||||
@@ -606,7 +604,7 @@ dst_key_fromnamedfile(const char *filename, const char *dirname,
|
|||||||
dirname, filename, ".private");
|
dirname, filename, ".private");
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
|
|
||||||
RETERR(isc_lex_create(mctx, 1500, &lex));
|
isc_lex_create(mctx, 1500, &lex);
|
||||||
RETERR(isc_lex_openfile(lex, newfilename));
|
RETERR(isc_lex_openfile(lex, newfilename));
|
||||||
isc_mem_put(mctx, newfilename, newfilenamelen);
|
isc_mem_put(mctx, newfilename, newfilenamelen);
|
||||||
|
|
||||||
@@ -760,8 +758,8 @@ dst_key_privatefrombuffer(dst_key_t *key, isc_buffer_t *buffer) {
|
|||||||
if (key->func->parse == NULL)
|
if (key->func->parse == NULL)
|
||||||
RETERR(DST_R_UNSUPPORTEDALG);
|
RETERR(DST_R_UNSUPPORTEDALG);
|
||||||
|
|
||||||
RETERR(isc_lex_create(key->mctx, 1500, &lex));
|
isc_lex_create(key->mctx, 1500, &lex);
|
||||||
RETERR(isc_lex_openbuffer(lex, buffer));
|
isc_lex_openbuffer(lex, buffer);
|
||||||
RETERR(key->func->parse(key, lex, NULL));
|
RETERR(key->func->parse(key, lex, NULL));
|
||||||
out:
|
out:
|
||||||
if (lex != NULL)
|
if (lex != NULL)
|
||||||
@@ -797,8 +795,8 @@ dst_key_fromgssapi(const dns_name_t *name, gss_ctx_id_t gssctx,
|
|||||||
* Keep the token for use by external ssu rules. They may need
|
* Keep the token for use by external ssu rules. They may need
|
||||||
* to examine the PAC in the kerberos ticket.
|
* to examine the PAC in the kerberos ticket.
|
||||||
*/
|
*/
|
||||||
RETERR(isc_buffer_allocate(key->mctx, &key->key_tkeytoken,
|
isc_buffer_allocate(key->mctx, &key->key_tkeytoken,
|
||||||
intoken->length));
|
intoken->length);
|
||||||
RETERR(isc_buffer_copyregion(key->key_tkeytoken, intoken));
|
RETERR(isc_buffer_copyregion(key->key_tkeytoken, intoken));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1340,12 +1338,7 @@ get_key_struct(const dns_name_t *name, unsigned int alg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
dns_name_init(key->key_name, NULL);
|
dns_name_init(key->key_name, NULL);
|
||||||
result = dns_name_dup(name, mctx, key->key_name);
|
dns_name_dup(name, mctx, key->key_name);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, key->key_name, sizeof(dns_name_t));
|
|
||||||
isc_mem_put(mctx, key, sizeof(dst_key_t));
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_refcount_init(&key->refs, 1);
|
isc_refcount_init(&key->refs, 1);
|
||||||
isc_mem_attach(mctx, &key->mctx);
|
isc_mem_attach(mctx, &key->mctx);
|
||||||
@@ -1412,9 +1405,7 @@ dst_key_read_public(const char *filename, int type,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* 1500 should be large enough for any key */
|
/* 1500 should be large enough for any key */
|
||||||
ret = isc_lex_create(mctx, 1500, &lex);
|
isc_lex_create(mctx, 1500, &lex);
|
||||||
if (ret != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
memset(specials, 0, sizeof(specials));
|
memset(specials, 0, sizeof(specials));
|
||||||
specials['('] = 1;
|
specials['('] = 1;
|
||||||
|
|||||||
+1
-1
@@ -67,7 +67,7 @@ static isc_once_t once = ISC_ONCE_INIT;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
dyndb_initialize(void) {
|
dyndb_initialize(void) {
|
||||||
RUNTIME_CHECK(isc_mutex_init(&dyndb_lock) == ISC_R_SUCCESS);
|
isc_mutex_init(&dyndb_lock);
|
||||||
INIT_LIST(dyndb_implementations);
|
INIT_LIST(dyndb_implementations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-31
@@ -349,25 +349,11 @@ findnode(dns_db_t *db, const dns_name_t *name, bool create,
|
|||||||
|
|
||||||
mctx = ecdb->common.mctx;
|
mctx = ecdb->common.mctx;
|
||||||
node = isc_mem_get(mctx, sizeof(*node));
|
node = isc_mem_get(mctx, sizeof(*node));
|
||||||
if (node == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
result = isc_mutex_init(&node->lock);
|
isc_mutex_init(&node->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
"isc_mutex_init() failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
isc_mem_put(mctx, node, sizeof(*node));
|
|
||||||
return (ISC_R_UNEXPECTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
dns_name_init(&node->name, NULL);
|
dns_name_init(&node->name, NULL);
|
||||||
result = dns_name_dup(name, mctx, &node->name);
|
dns_name_dup(name, mctx, &node->name);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
DESTROYLOCK(&node->lock);
|
|
||||||
isc_mem_put(mctx, node, sizeof(*node));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
node->ecdb= ecdb;
|
node->ecdb= ecdb;
|
||||||
node->references = 1;
|
node->references = 1;
|
||||||
ISC_LIST_INIT(node->rdatasets);
|
ISC_LIST_INIT(node->rdatasets);
|
||||||
@@ -617,22 +603,9 @@ dns_ecdb_create(isc_mem_t *mctx, const dns_name_t *origin, dns_dbtype_t type,
|
|||||||
ecdb->common.rdclass = rdclass;
|
ecdb->common.rdclass = rdclass;
|
||||||
ecdb->common.methods = &ecdb_methods;
|
ecdb->common.methods = &ecdb_methods;
|
||||||
dns_name_init(&ecdb->common.origin, NULL);
|
dns_name_init(&ecdb->common.origin, NULL);
|
||||||
result = dns_name_dupwithoffsets(origin, mctx, &ecdb->common.origin);
|
dns_name_dupwithoffsets(origin, mctx, &ecdb->common.origin);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, ecdb, sizeof(*ecdb));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_mutex_init(&ecdb->lock);
|
isc_mutex_init(&ecdb->lock);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
"isc_mutex_init() failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
if (dns_name_dynamic(&ecdb->common.origin))
|
|
||||||
dns_name_free(&ecdb->common.origin, mctx);
|
|
||||||
isc_mem_put(mctx, ecdb, sizeof(*ecdb));
|
|
||||||
return (ISC_R_UNEXPECTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
ecdb->references = 1;
|
ecdb->references = 1;
|
||||||
ISC_LIST_INIT(ecdb->nodes);
|
ISC_LIST_INIT(ecdb->nodes);
|
||||||
|
|||||||
+3
-31
@@ -38,7 +38,7 @@ struct dns_fwdtable {
|
|||||||
static void
|
static void
|
||||||
auto_detach(void *, void *);
|
auto_detach(void *, void *);
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep) {
|
dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep) {
|
||||||
dns_fwdtable_t *fwdtable;
|
dns_fwdtable_t *fwdtable;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -46,32 +46,16 @@ dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep) {
|
|||||||
REQUIRE(fwdtablep != NULL && *fwdtablep == NULL);
|
REQUIRE(fwdtablep != NULL && *fwdtablep == NULL);
|
||||||
|
|
||||||
fwdtable = isc_mem_get(mctx, sizeof(dns_fwdtable_t));
|
fwdtable = isc_mem_get(mctx, sizeof(dns_fwdtable_t));
|
||||||
if (fwdtable == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
fwdtable->table = NULL;
|
fwdtable->table = NULL;
|
||||||
result = dns_rbt_create(mctx, auto_detach, fwdtable, &fwdtable->table);
|
dns_rbt_create(mctx, auto_detach, fwdtable, &fwdtable->table);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_fwdtable;
|
|
||||||
|
|
||||||
result = isc_rwlock_init(&fwdtable->rwlock, 0, 0);
|
isc_rwlock_init(&fwdtable->rwlock, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_rbt;
|
|
||||||
|
|
||||||
fwdtable->mctx = NULL;
|
fwdtable->mctx = NULL;
|
||||||
isc_mem_attach(mctx, &fwdtable->mctx);
|
isc_mem_attach(mctx, &fwdtable->mctx);
|
||||||
fwdtable->magic = FWDTABLEMAGIC;
|
fwdtable->magic = FWDTABLEMAGIC;
|
||||||
*fwdtablep = fwdtable;
|
*fwdtablep = fwdtable;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_rbt:
|
|
||||||
dns_rbt_destroy(&fwdtable->table);
|
|
||||||
|
|
||||||
cleanup_fwdtable:
|
|
||||||
isc_mem_put(mctx, fwdtable, sizeof(dns_fwdtable_t));
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
@@ -85,8 +69,6 @@ dns_fwdtable_addfwd(dns_fwdtable_t *fwdtable, const dns_name_t *name,
|
|||||||
REQUIRE(VALID_FWDTABLE(fwdtable));
|
REQUIRE(VALID_FWDTABLE(fwdtable));
|
||||||
|
|
||||||
forwarders = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarders_t));
|
forwarders = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarders_t));
|
||||||
if (forwarders == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
ISC_LIST_INIT(forwarders->fwdrs);
|
ISC_LIST_INIT(forwarders->fwdrs);
|
||||||
for (fwd = ISC_LIST_HEAD(*fwdrs);
|
for (fwd = ISC_LIST_HEAD(*fwdrs);
|
||||||
@@ -94,10 +76,6 @@ dns_fwdtable_addfwd(dns_fwdtable_t *fwdtable, const dns_name_t *name,
|
|||||||
fwd = ISC_LIST_NEXT(fwd, link))
|
fwd = ISC_LIST_NEXT(fwd, link))
|
||||||
{
|
{
|
||||||
nfwd = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarder_t));
|
nfwd = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarder_t));
|
||||||
if (nfwd == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
*nfwd = *fwd;
|
*nfwd = *fwd;
|
||||||
ISC_LINK_INIT(nfwd, link);
|
ISC_LINK_INIT(nfwd, link);
|
||||||
ISC_LIST_APPEND(forwarders->fwdrs, nfwd, link);
|
ISC_LIST_APPEND(forwarders->fwdrs, nfwd, link);
|
||||||
@@ -135,8 +113,6 @@ dns_fwdtable_add(dns_fwdtable_t *fwdtable, const dns_name_t *name,
|
|||||||
REQUIRE(VALID_FWDTABLE(fwdtable));
|
REQUIRE(VALID_FWDTABLE(fwdtable));
|
||||||
|
|
||||||
forwarders = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarders_t));
|
forwarders = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarders_t));
|
||||||
if (forwarders == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
ISC_LIST_INIT(forwarders->fwdrs);
|
ISC_LIST_INIT(forwarders->fwdrs);
|
||||||
for (sa = ISC_LIST_HEAD(*addrs);
|
for (sa = ISC_LIST_HEAD(*addrs);
|
||||||
@@ -144,10 +120,6 @@ dns_fwdtable_add(dns_fwdtable_t *fwdtable, const dns_name_t *name,
|
|||||||
sa = ISC_LIST_NEXT(sa, link))
|
sa = ISC_LIST_NEXT(sa, link))
|
||||||
{
|
{
|
||||||
fwd = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarder_t));
|
fwd = isc_mem_get(fwdtable->mctx, sizeof(dns_forwarder_t));
|
||||||
if (fwd == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
fwd->addr = *sa;
|
fwd->addr = *sa;
|
||||||
fwd->dscp = -1;
|
fwd->dscp = -1;
|
||||||
ISC_LINK_INIT(fwd, link);
|
ISC_LINK_INIT(fwd, link);
|
||||||
|
|||||||
+3
-15
@@ -61,18 +61,11 @@ gssapi_create_signverify_ctx(dst_key_t *key, dst_context_t *dctx) {
|
|||||||
UNUSED(key);
|
UNUSED(key);
|
||||||
|
|
||||||
ctx = isc_mem_get(dctx->mctx, sizeof(dst_gssapi_signverifyctx_t));
|
ctx = isc_mem_get(dctx->mctx, sizeof(dst_gssapi_signverifyctx_t));
|
||||||
if (ctx == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
ctx->buffer = NULL;
|
ctx->buffer = NULL;
|
||||||
result = isc_buffer_allocate(dctx->mctx, &ctx->buffer,
|
isc_buffer_allocate(dctx->mctx, &ctx->buffer,
|
||||||
INITIAL_BUFFER_SIZE);
|
INITIAL_BUFFER_SIZE);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(dctx->mctx, ctx, sizeof(dst_gssapi_signverifyctx_t));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
dctx->ctxdata.gssctx = ctx;
|
dctx->ctxdata.gssctx = ctx;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,9 +104,7 @@ gssapi_adddata(dst_context_t *dctx, const isc_region_t *data) {
|
|||||||
|
|
||||||
length = isc_buffer_length(ctx->buffer) + data->length + BUFFER_EXTRA;
|
length = isc_buffer_length(ctx->buffer) + data->length + BUFFER_EXTRA;
|
||||||
|
|
||||||
result = isc_buffer_allocate(dctx->mctx, &newbuffer, length);
|
isc_buffer_allocate(dctx->mctx, &newbuffer, length);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
isc_buffer_usedregion(ctx->buffer, &r);
|
isc_buffer_usedregion(ctx->buffer, &r);
|
||||||
(void)isc_buffer_copyregion(newbuffer, &r);
|
(void)isc_buffer_copyregion(newbuffer, &r);
|
||||||
@@ -121,7 +112,6 @@ gssapi_adddata(dst_context_t *dctx, const isc_region_t *data) {
|
|||||||
|
|
||||||
isc_buffer_free(&ctx->buffer);
|
isc_buffer_free(&ctx->buffer);
|
||||||
ctx->buffer = newbuffer;
|
ctx->buffer = newbuffer;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,9 +281,7 @@ gssapi_restore(dst_key_t *key, const char *keystr) {
|
|||||||
|
|
||||||
len = (len / 4) * 3;
|
len = (len / 4) * 3;
|
||||||
|
|
||||||
result = isc_buffer_allocate(key->mctx, &b, len);
|
isc_buffer_allocate(key->mctx, &b, len);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = isc_base64_decodestring(keystr, b);
|
result = isc_base64_decodestring(keystr, b);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
|||||||
+2
-2
@@ -756,8 +756,8 @@ dst_gssapi_acceptctx(gss_cred_id_t cred,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gouttoken.length > 0U) {
|
if (gouttoken.length > 0U) {
|
||||||
RETERR(isc_buffer_allocate(mctx, outtoken,
|
isc_buffer_allocate(mctx, outtoken,
|
||||||
(unsigned int)gouttoken.length));
|
(unsigned int)gouttoken.length);
|
||||||
GBUFFER_TO_REGION(gouttoken, r);
|
GBUFFER_TO_REGION(gouttoken, r);
|
||||||
RETERR(isc_buffer_copyregion(*outtoken, &r));
|
RETERR(isc_buffer_copyregion(*outtoken, &r));
|
||||||
(void)gss_release_buffer(&minor, &gouttoken);
|
(void)gss_release_buffer(&minor, &gouttoken);
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ struct dns_aclenv {
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target);
|
dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a new ACL, including an IP table and an array with room
|
* Create a new ACL, including an IP table and an array with room
|
||||||
@@ -117,13 +117,13 @@ dns_acl_create(isc_mem_t *mctx, int n, dns_acl_t **target);
|
|||||||
* length is 0.
|
* length is 0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_any(isc_mem_t *mctx, dns_acl_t **target);
|
dns_acl_any(isc_mem_t *mctx, dns_acl_t **target);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a new ACL that matches everything.
|
* Create a new ACL that matches everything.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_none(isc_mem_t *mctx, dns_acl_t **target);
|
dns_acl_none(isc_mem_t *mctx, dns_acl_t **target);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a new ACL that matches nothing.
|
* Create a new ACL that matches nothing.
|
||||||
@@ -141,7 +141,7 @@ dns_acl_isnone(dns_acl_t *acl);
|
|||||||
* Test whether ACL is set to "{ none; }"
|
* Test whether ACL is set to "{ none; }"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos);
|
dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, bool pos);
|
||||||
/*%<
|
/*%<
|
||||||
* Merge the contents of one ACL into another. Call dns_iptable_merge()
|
* Merge the contents of one ACL into another. Call dns_iptable_merge()
|
||||||
@@ -195,7 +195,7 @@ dns_acl_allowed(isc_netaddr_t *addr, dns_name_t *signer,
|
|||||||
* permitted by 'acl' in environment 'aclenv'.
|
* permitted by 'acl' in environment 'aclenv'.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_aclenv_init(isc_mem_t *mctx, dns_aclenv_t *env);
|
dns_aclenv_init(isc_mem_t *mctx, dns_aclenv_t *env);
|
||||||
/*%<
|
/*%<
|
||||||
* Initialize ACL environment, setting up localhost and localnets ACLs
|
* Initialize ACL environment, setting up localhost and localnets ACLs
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ struct dns_adbaddrinfo {
|
|||||||
****/
|
****/
|
||||||
|
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *tmgr,
|
dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *tmgr,
|
||||||
isc_taskmgr_t *taskmgr, dns_adb_t **newadb);
|
isc_taskmgr_t *taskmgr, dns_adb_t **newadb);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -273,11 +273,6 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *tmgr,
|
|||||||
*\li 'taskmgr' be a pointer to a valid task manager.
|
*\li 'taskmgr' be a pointer to a valid task manager.
|
||||||
*
|
*
|
||||||
*\li 'newadb' != NULL && '*newadb' == NULL.
|
*\li 'newadb' != NULL && '*newadb' == NULL.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*
|
|
||||||
*\li #ISC_R_SUCCESS after happiness.
|
|
||||||
*\li #ISC_R_NOMEMORY after resource allocation failure.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ ISC_LANG_BEGINDECLS
|
|||||||
*** Functions
|
*** Functions
|
||||||
***/
|
***/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_badcache_init(isc_mem_t *mctx, unsigned int size, dns_badcache_t **bcp);
|
dns_badcache_init(isc_mem_t *mctx, unsigned int size, dns_badcache_t **bcp);
|
||||||
/*%
|
/*%
|
||||||
* Allocate and initialize a badcache and store it in '*bcp'.
|
* Allocate and initialize a badcache and store it in '*bcp'.
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ struct dns_catz_zonemodmethods {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
|
dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
|
||||||
isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
||||||
isc_timermgr_t *timermgr);
|
isc_timermgr_t *timermgr);
|
||||||
@@ -455,7 +455,7 @@ dns_catz_postreconfig(dns_catz_zones_t *catzs);
|
|||||||
* \li catzs is not NULL
|
* \li catzs is not NULL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp);
|
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp);
|
||||||
/*%<
|
/*%<
|
||||||
* Get the hashtable iterator on catalog zone members, point '*itp' to it.
|
* Get the hashtable iterator on catalog zone members, point '*itp' to it.
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ struct dns_decompress {
|
|||||||
dns_decompresstype_t type; /*%< Strict checking */
|
dns_decompresstype_t type; /*%< Strict checking */
|
||||||
};
|
};
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx);
|
dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx);
|
||||||
/*%<
|
/*%<
|
||||||
* Initialise the compression context structure pointed to by
|
* Initialise the compression context structure pointed to by
|
||||||
@@ -101,9 +101,6 @@ dns_compress_init(dns_compress_t *cctx, int edns, isc_mem_t *mctx);
|
|||||||
* \li 'mctx' is an initialized memory context.
|
* \li 'mctx' is an initialized memory context.
|
||||||
* Ensures:
|
* Ensures:
|
||||||
* \li cctx->global is initialized.
|
* \li cctx->global is initialized.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* \li #ISC_R_SUCCESS
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -1626,7 +1626,7 @@ dns_db_rpz_ready(dns_db_t *db)
|
|||||||
* Finish loading a response policy zone.
|
* Finish loading a response policy zone.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_db_updatenotify_register(dns_db_t *db,
|
dns_db_updatenotify_register(dns_db_t *db,
|
||||||
dns_dbupdate_callback_t fn,
|
dns_dbupdate_callback_t fn,
|
||||||
void *fn_arg);
|
void *fn_arg);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
||||||
dns_dbtable_t **dbtablep);
|
dns_dbtable_t **dbtablep);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -58,11 +58,6 @@ dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
|
|||||||
*\li mctx != NULL
|
*\li mctx != NULL
|
||||||
* \li dbtablep != NULL && *dptablep == NULL
|
* \li dbtablep != NULL && *dptablep == NULL
|
||||||
*\li 'rdclass' is a valid class
|
*\li 'rdclass' is a valid class
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*\li #ISC_R_UNEXPECTED
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ struct dns_dispatchset {
|
|||||||
*/
|
*/
|
||||||
#define DNS_DISPATCHOPT_FIXEDID 0x00000001U
|
#define DNS_DISPATCHOPT_FIXEDID 0x00000001U
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp);
|
dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp);
|
||||||
/*%<
|
/*%<
|
||||||
* Creates a new dispatchmgr object.
|
* Creates a new dispatchmgr object.
|
||||||
@@ -155,11 +155,6 @@ dns_dispatchmgr_create(isc_mem_t *mctx, dns_dispatchmgr_t **mgrp);
|
|||||||
*\li "mctx" be a valid memory context.
|
*\li "mctx" be a valid memory context.
|
||||||
*
|
*
|
||||||
*\li mgrp != NULL && *mgrp == NULL
|
*\li mgrp != NULL && *mgrp == NULL
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li ISC_R_SUCCESS -- all ok
|
|
||||||
*
|
|
||||||
*\li anything else -- failure
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -217,7 +212,7 @@ dns_dispatchmgr_getblackportlist(dns_dispatchmgr_t *mgr);
|
|||||||
*\li mgr is a valid dispatchmgr
|
*\li mgr is a valid dispatchmgr
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset,
|
||||||
isc_portset_t *v6portset);
|
isc_portset_t *v6portset);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -286,7 +281,7 @@ dns_dispatch_getudp_dup(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
|
|||||||
*\li Anything else -- failure.
|
*\li Anything else -- failure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
|
||||||
isc_taskmgr_t *taskmgr, const isc_sockaddr_t *localaddr,
|
isc_taskmgr_t *taskmgr, const isc_sockaddr_t *localaddr,
|
||||||
const isc_sockaddr_t *destaddr, unsigned int buffersize,
|
const isc_sockaddr_t *destaddr, unsigned int buffersize,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ struct dns_forwarders {
|
|||||||
dns_fwdpolicy_t fwdpolicy;
|
dns_fwdpolicy_t fwdpolicy;
|
||||||
};
|
};
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep);
|
dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep);
|
||||||
/*%<
|
/*%<
|
||||||
* Creates a new forwarding table.
|
* Creates a new forwarding table.
|
||||||
@@ -43,10 +43,6 @@ dns_fwdtable_create(isc_mem_t *mctx, dns_fwdtable_t **fwdtablep);
|
|||||||
* Requires:
|
* Requires:
|
||||||
* \li mctx is a valid memory context.
|
* \li mctx is a valid memory context.
|
||||||
* \li fwdtablep != NULL && *fwdtablep == NULL
|
* \li fwdtablep != NULL && *fwdtablep == NULL
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* \li #ISC_R_SUCCESS
|
|
||||||
* \li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ dns_ipkeylist_clear(isc_mem_t *mctx, dns_ipkeylist_t *ipkl);
|
|||||||
*\li 'ipkl' to be non NULL.
|
*\li 'ipkl' to be non NULL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
||||||
dns_ipkeylist_t *dst);
|
dns_ipkeylist_t *dst);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -63,12 +63,8 @@ dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
|||||||
*\li 'src' to be non NULL
|
*\li 'src' to be non NULL
|
||||||
*\li 'dst' to be non NULL and point to an empty \ref dns_ipkeylist_t
|
*\li 'dst' to be non NULL and point to an empty \ref dns_ipkeylist_t
|
||||||
* with all pointers set to `NULL` and count set to 0.
|
* with all pointers set to `NULL` and count set to 0.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS -- success
|
|
||||||
*\li any other value -- failure
|
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n);
|
dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n);
|
||||||
/*%<
|
/*%<
|
||||||
* Resize ipkl to contain n elements. Size (count) is not changed, and the
|
* Resize ipkl to contain n elements. Size (count) is not changed, and the
|
||||||
@@ -78,10 +74,6 @@ dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n);
|
|||||||
* \li 'mctx' to be a valid memory context.
|
* \li 'mctx' to be a valid memory context.
|
||||||
* \li 'ipk' to be non NULL
|
* \li 'ipk' to be non NULL
|
||||||
* \li 'n' >= ipkl->count
|
* \li 'n' >= ipkl->count
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* \li #ISC_R_SUCCESS if successs
|
|
||||||
* \li #ISC_R_NOMEMORY if there's no memory, ipkeylist is left untoched
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -38,20 +38,20 @@ struct dns_iptable {
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target);
|
dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target);
|
||||||
/*
|
/*
|
||||||
* Create a new IP table and the underlying radix structure
|
* Create a new IP table and the underlying radix structure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
||||||
uint16_t bitlen, bool pos);
|
uint16_t bitlen, bool pos);
|
||||||
/*
|
/*
|
||||||
* Add an IP prefix to an existing IP table
|
* Add an IP prefix to an existing IP table
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos);
|
dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos);
|
||||||
/*
|
/*
|
||||||
* Merge one IP table into another one.
|
* Merge one IP table into another one.
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep);
|
dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a keytable.
|
* Create a keytable.
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ struct dns_ednsopt {
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp);
|
dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp);
|
||||||
|
|
||||||
/*%<
|
/*%<
|
||||||
@@ -300,10 +300,6 @@ dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp);
|
|||||||
* Ensures:
|
* Ensures:
|
||||||
*\li The data in "*msg" is set to indicate an unused and empty msg
|
*\li The data in "*msg" is set to indicate an unused and empty msg
|
||||||
* structure.
|
* structure.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_NOMEMORY -- out of memory
|
|
||||||
*\li #ISC_R_SUCCESS -- success
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -1026,7 +1026,7 @@ dns_name_split(const dns_name_t *name, unsigned int suffixlabels,
|
|||||||
*\li #ISC_R_SUCCESS No worries. (This function should always success).
|
*\li #ISC_R_SUCCESS No worries. (This function should always success).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
||||||
dns_name_t *target);
|
dns_name_t *target);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -1041,7 +1041,7 @@ dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
|||||||
*\li 'mctx' is a valid memory context.
|
*\li 'mctx' is a valid memory context.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
||||||
dns_name_t *target);
|
dns_name_t *target);
|
||||||
/*%<
|
/*%<
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_portlist_create(isc_mem_t *mctx, dns_portlist_t **portlistp);
|
dns_portlist_create(isc_mem_t *mctx, dns_portlist_t **portlistp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a port list.
|
* Create a port list.
|
||||||
@@ -32,14 +32,9 @@ dns_portlist_create(isc_mem_t *mctx, dns_portlist_t **portlistp);
|
|||||||
* Requires:
|
* Requires:
|
||||||
*\li 'mctx' to be valid.
|
*\li 'mctx' to be valid.
|
||||||
*\li 'portlistp' to be non NULL and '*portlistp' to be NULL;
|
*\li 'portlistp' to be non NULL and '*portlistp' to be NULL;
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*\li #ISC_R_UNEXPECTED
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_portlist_add(dns_portlist_t *portlist, int af, in_port_t port);
|
dns_portlist_add(dns_portlist_t *portlist, int af, in_port_t port);
|
||||||
/*%<
|
/*%<
|
||||||
* Add the given <port,af> tuple to the portlist.
|
* Add the given <port,af> tuple to the portlist.
|
||||||
@@ -47,10 +42,6 @@ dns_portlist_add(dns_portlist_t *portlist, int af, in_port_t port);
|
|||||||
* Requires:
|
* Requires:
|
||||||
*\li 'portlist' to be valid.
|
*\li 'portlist' to be valid.
|
||||||
*\li 'af' to be AF_INET or AF_INET6
|
*\li 'af' to be AF_INET or AF_INET6
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ typedef struct dns_rbtnodechain {
|
|||||||
/*****
|
/*****
|
||||||
***** Public interfaces.
|
***** Public interfaces.
|
||||||
*****/
|
*****/
|
||||||
isc_result_t
|
void
|
||||||
dns_rbt_create(isc_mem_t *mctx, dns_rbtdeleter_t deleter,
|
dns_rbt_create(isc_mem_t *mctx, dns_rbtdeleter_t deleter,
|
||||||
void *deleter_arg, dns_rbt_t **rbtp);
|
void *deleter_arg, dns_rbt_t **rbtp);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -304,10 +304,6 @@ dns_rbt_create(isc_mem_t *mctx, dns_rbtdeleter_t deleter,
|
|||||||
*
|
*
|
||||||
*\li If result is failure:
|
*\li If result is failure:
|
||||||
* *rbtp does not point to a valid red-black tree manager.
|
* *rbtp does not point to a valid red-black tree manager.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS Success
|
|
||||||
*\li #ISC_R_NOMEMORY Resource limit: Out of Memory
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ typedef struct dns_requestevent {
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_requestmgr_create(isc_mem_t *mctx, isc_timermgr_t *timermgr,
|
dns_requestmgr_create(isc_mem_t *mctx, isc_timermgr_t *timermgr,
|
||||||
isc_socketmgr_t *socketmgr, isc_taskmgr_t *taskmgr,
|
isc_socketmgr_t *socketmgr, isc_taskmgr_t *taskmgr,
|
||||||
dns_dispatchmgr_t *dispatchmgr,
|
dns_dispatchmgr_t *dispatchmgr,
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ typedef enum {
|
|||||||
#define DNS_QMIN_MAX_NO_DELEGATION 3
|
#define DNS_QMIN_MAX_NO_DELEGATION 3
|
||||||
#define DNS_MAX_LABELS 127
|
#define DNS_MAX_LABELS 127
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_resolver_create(dns_view_t *view,
|
dns_resolver_create(dns_view_t *view,
|
||||||
isc_taskmgr_t *taskmgr,
|
isc_taskmgr_t *taskmgr,
|
||||||
unsigned int ntasks, unsigned int ndisp,
|
unsigned int ntasks, unsigned int ndisp,
|
||||||
@@ -190,12 +190,6 @@ dns_resolver_create(dns_view_t *view,
|
|||||||
* If not NULL, 'ndisp' clones of it will be created by the resolver.
|
* If not NULL, 'ndisp' clones of it will be created by the resolver.
|
||||||
*
|
*
|
||||||
*\li resp != NULL && *resp == NULL.
|
*\li resp != NULL && *resp == NULL.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*
|
|
||||||
*\li #ISC_R_SUCCESS On success.
|
|
||||||
*
|
|
||||||
*\li Anything else Failure.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ dns_rrl(dns_view_t *view,
|
|||||||
void
|
void
|
||||||
dns_rrl_view_destroy(dns_view_t *view);
|
dns_rrl_view_destroy(dns_view_t *view);
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_rrl_init(dns_rrl_t **rrlp, dns_view_t *view, int min_entries);
|
dns_rrl_init(dns_rrl_t **rrlp, dns_view_t *view, int min_entries);
|
||||||
|
|
||||||
ISC_LANG_ENDDECLS
|
ISC_LANG_ENDDECLS
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ dns_sdlz_putsoa_t dns_sdlz_putsoa;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
typedef isc_result_t dns_sdlz_setdb_t(dns_dlzdb_t *dlzdatabase,
|
typedef void dns_sdlz_setdb_t(dns_dlzdb_t *dlzdatabase,
|
||||||
dns_rdataclass_t rdclass,
|
dns_rdataclass_t rdclass,
|
||||||
const dns_name_t *name,
|
const dns_name_t *name,
|
||||||
dns_db_t **dbp);
|
dns_db_t **dbp);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ typedef enum {
|
|||||||
dns_ssumatchtype_dlz = 16 /* intentionally higher than _max */
|
dns_ssumatchtype_dlz = 16 /* intentionally higher than _max */
|
||||||
} dns_ssumatchtype_t;
|
} dns_ssumatchtype_t;
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table);
|
dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table);
|
||||||
/*%<
|
/*%<
|
||||||
* Creates a table that will be used to store simple-secure-update rules.
|
* Creates a table that will be used to store simple-secure-update rules.
|
||||||
@@ -56,12 +56,9 @@ dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table);
|
|||||||
*\li 'mctx' is a valid memory context
|
*\li 'mctx' is a valid memory context
|
||||||
*\li 'table' is not NULL, and '*table' is NULL
|
*\li 'table' is not NULL, and '*table' is NULL
|
||||||
*
|
*
|
||||||
* Returns:
|
|
||||||
*\li ISC_R_SUCCESS
|
|
||||||
*\li ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep,
|
dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep,
|
||||||
dns_dlzdb_t *dlzdatabase);
|
dns_dlzdb_t *dlzdatabase);
|
||||||
/*%<
|
/*%<
|
||||||
@@ -98,7 +95,7 @@ dns_ssutable_detach(dns_ssutable_t **tablep);
|
|||||||
* resources used by the table will be freed.
|
* resources used by the table will be freed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ssutable_addrule(dns_ssutable_t *table, bool grant,
|
dns_ssutable_addrule(dns_ssutable_t *table, bool grant,
|
||||||
const dns_name_t *identity, dns_ssumatchtype_t matchtype,
|
const dns_name_t *identity, dns_ssumatchtype_t matchtype,
|
||||||
const dns_name_t *name, unsigned int ntypes,
|
const dns_name_t *name, unsigned int ntypes,
|
||||||
@@ -125,10 +122,6 @@ dns_ssutable_addrule(dns_ssutable_t *table, bool grant,
|
|||||||
*\li 'matchtype' must be one of the defined constants.
|
*\li 'matchtype' must be one of the defined constants.
|
||||||
*\li 'name' is a valid absolute name
|
*\li 'name' is a valid absolute name
|
||||||
*\li If 'ntypes' > 0, 'types' must not be NULL
|
*\li If 'ntypes' > 0, 'types' must not be NULL
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li ISC_R_SUCCESS
|
|
||||||
*\li ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|||||||
@@ -505,7 +505,7 @@ typedef void (*dns_rcodestats_dumper_t)(dns_rcode_t, uint64_t, void *);
|
|||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters);
|
dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a statistics counter structure of general type. It counts a general
|
* Create a statistics counter structure of general type. It counts a general
|
||||||
@@ -524,7 +524,7 @@ dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters);
|
|||||||
*\li anything else -- failure
|
*\li anything else -- failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_rdatatypestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
dns_rdatatypestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a statistics counter structure per rdatatype.
|
* Create a statistics counter structure per rdatatype.
|
||||||
@@ -540,7 +540,7 @@ dns_rdatatypestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
|||||||
*\li anything else -- failure
|
*\li anything else -- failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_rdatasetstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
dns_rdatasetstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a statistics counter structure per RRset.
|
* Create a statistics counter structure per RRset.
|
||||||
@@ -556,7 +556,7 @@ dns_rdatasetstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
|||||||
*\li anything else -- failure
|
*\li anything else -- failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a statistics counter structure per opcode.
|
* Create a statistics counter structure per opcode.
|
||||||
@@ -572,7 +572,7 @@ dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
|||||||
*\li anything else -- failure
|
*\li anything else -- failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a statistics counter structure per assigned rcode.
|
* Create a statistics counter structure per assigned rcode.
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ dns_tsigkey_find(dns_tsigkey_t **tsigkey, const dns_name_t *name,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_tsigkeyring_create(isc_mem_t *mctx, dns_tsig_keyring_t **ringp);
|
dns_tsigkeyring_create(isc_mem_t *mctx, dns_tsig_keyring_t **ringp);
|
||||||
/*%<
|
/*%<
|
||||||
* Create an empty TSIG key ring.
|
* Create an empty TSIG key ring.
|
||||||
@@ -246,10 +246,6 @@ dns_tsigkeyring_create(isc_mem_t *mctx, dns_tsig_keyring_t **ringp);
|
|||||||
* Requires:
|
* Requires:
|
||||||
*\li 'mctx' is not NULL
|
*\li 'mctx' is not NULL
|
||||||
*\li 'ringp' is not NULL, and '*ringp' is NULL
|
*\li 'ringp' is not NULL, and '*ringp' is NULL
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
@@ -372,7 +372,7 @@ dns_view_weakdetach(dns_view_t **targetp);
|
|||||||
*\li *viewp is NULL.
|
*\li *viewp is NULL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_view_createzonetable(dns_view_t *view);
|
dns_view_createzonetable(dns_view_t *view);
|
||||||
/*%<
|
/*%<
|
||||||
* Create a zonetable for the view.
|
* Create a zonetable for the view.
|
||||||
@@ -383,14 +383,9 @@ dns_view_createzonetable(dns_view_t *view);
|
|||||||
*
|
*
|
||||||
*\li 'view' does not have a zonetable already.
|
*\li 'view' does not have a zonetable already.
|
||||||
*
|
*
|
||||||
* Returns:
|
|
||||||
*
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*
|
|
||||||
*\li Any error that dns_zt_create() can return.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_view_createresolver(dns_view_t *view,
|
dns_view_createresolver(dns_view_t *view,
|
||||||
isc_taskmgr_t *taskmgr,
|
isc_taskmgr_t *taskmgr,
|
||||||
unsigned int ntasks, unsigned int ndisp,
|
unsigned int ntasks, unsigned int ndisp,
|
||||||
@@ -412,12 +407,6 @@ dns_view_createresolver(dns_view_t *view,
|
|||||||
*\li The requirements of dns_resolver_create() apply to 'taskmgr',
|
*\li The requirements of dns_resolver_create() apply to 'taskmgr',
|
||||||
* 'ntasks', 'socketmgr', 'timermgr', 'options', 'dispatchv4', and
|
* 'ntasks', 'socketmgr', 'timermgr', 'options', 'dispatchv4', and
|
||||||
* 'dispatchv6'.
|
* 'dispatchv6'.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*
|
|
||||||
*\li Any error that dns_resolver_create() can return.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -950,7 +939,7 @@ dns_view_flushname(dns_view_t *view, const dns_name_t *name);
|
|||||||
* other returns are failures.
|
* other returns are failures.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_view_adddelegationonly(dns_view_t *view, const dns_name_t *name);
|
dns_view_adddelegationonly(dns_view_t *view, const dns_name_t *name);
|
||||||
/*%<
|
/*%<
|
||||||
* Add the given name to the delegation only table.
|
* Add the given name to the delegation only table.
|
||||||
@@ -958,13 +947,9 @@ dns_view_adddelegationonly(dns_view_t *view, const dns_name_t *name);
|
|||||||
* Requires:
|
* Requires:
|
||||||
*\li 'view' is valid.
|
*\li 'view' is valid.
|
||||||
*\li 'name' is valid.
|
*\li 'name' is valid.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_view_excludedelegationonly(dns_view_t *view, const dns_name_t *name);
|
dns_view_excludedelegationonly(dns_view_t *view, const dns_name_t *name);
|
||||||
/*%<
|
/*%<
|
||||||
* Add the given name to be excluded from the root-delegation-only.
|
* Add the given name to be excluded from the root-delegation-only.
|
||||||
@@ -973,10 +958,6 @@ dns_view_excludedelegationonly(dns_view_t *view, const dns_name_t *name);
|
|||||||
* Requires:
|
* Requires:
|
||||||
*\li 'view' is valid.
|
*\li 'view' is valid.
|
||||||
*\li 'name' is valid.
|
*\li 'name' is valid.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li #ISC_R_SUCCESS
|
|
||||||
*\li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -1142,7 +1123,7 @@ dns_view_getntatable(dns_view_t *view, dns_ntatable_t **ntp);
|
|||||||
*\li ISC_R_NOTFOUND
|
*\li ISC_R_NOTFOUND
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_view_initsecroots(dns_view_t *view, isc_mem_t *mctx);
|
dns_view_initsecroots(dns_view_t *view, isc_mem_t *mctx);
|
||||||
/*%<
|
/*%<
|
||||||
* Initialize security roots for the view, detaching any previously
|
* Initialize security roots for the view, detaching any previously
|
||||||
@@ -1154,10 +1135,6 @@ dns_view_initsecroots(dns_view_t *view, isc_mem_t *mctx);
|
|||||||
*
|
*
|
||||||
* Requires:
|
* Requires:
|
||||||
* \li 'view' is valid.
|
* \li 'view' is valid.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*\li ISC_R_SUCCESS
|
|
||||||
*\li Any other result indicates failure
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
@@ -41,17 +41,13 @@ typedef isc_result_t
|
|||||||
* can be informed via a callback function with this signature.
|
* can be informed via a callback function with this signature.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_zt_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_zt_t **zt);
|
dns_zt_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_zt_t **zt);
|
||||||
/*%<
|
/*%<
|
||||||
* Creates a new zone table.
|
* Creates a new zone table.
|
||||||
*
|
*
|
||||||
* Requires:
|
* Requires:
|
||||||
* \li 'mctx' to be initialized.
|
* \li 'mctx' to be initialized.
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* \li #ISC_R_SUCCESS on success.
|
|
||||||
* \li #ISC_R_NOMEMORY
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
+7
-66
@@ -75,11 +75,10 @@ dns_ipkeylist_clear(isc_mem_t *mctx, dns_ipkeylist_t *ipkl) {
|
|||||||
dns_ipkeylist_init(ipkl);
|
dns_ipkeylist_init(ipkl);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
||||||
dns_ipkeylist_t *dst)
|
dns_ipkeylist_t *dst)
|
||||||
{
|
{
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
REQUIRE(dst != NULL);
|
REQUIRE(dst != NULL);
|
||||||
@@ -87,11 +86,9 @@ dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
|||||||
REQUIRE(dst->count == 0);
|
REQUIRE(dst->count == 0);
|
||||||
|
|
||||||
if (src->count == 0)
|
if (src->count == 0)
|
||||||
return (ISC_R_SUCCESS);
|
return;
|
||||||
|
|
||||||
result = dns_ipkeylist_resize(mctx, dst, src->count);
|
dns_ipkeylist_resize(mctx, dst, src->count);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
memmove(dst->addrs, src->addrs, src->count * sizeof(isc_sockaddr_t));
|
memmove(dst->addrs, src->addrs, src->count * sizeof(isc_sockaddr_t));
|
||||||
|
|
||||||
@@ -105,15 +102,9 @@ dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
|||||||
if (src->keys[i] != NULL) {
|
if (src->keys[i] != NULL) {
|
||||||
dst->keys[i] = isc_mem_get(mctx,
|
dst->keys[i] = isc_mem_get(mctx,
|
||||||
sizeof(dns_name_t));
|
sizeof(dns_name_t));
|
||||||
if (dst->keys[i] == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_keys;
|
|
||||||
}
|
|
||||||
dns_name_init(dst->keys[i], NULL);
|
dns_name_init(dst->keys[i], NULL);
|
||||||
result = dns_name_dup(src->keys[i], mctx,
|
dns_name_dup(src->keys[i], mctx,
|
||||||
dst->keys[i]);
|
dst->keys[i]);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_keys;
|
|
||||||
} else {
|
} else {
|
||||||
dst->keys[i] = NULL;
|
dst->keys[i] = NULL;
|
||||||
}
|
}
|
||||||
@@ -125,47 +116,18 @@ dns_ipkeylist_copy(isc_mem_t *mctx, const dns_ipkeylist_t *src,
|
|||||||
if (src->labels[i] != NULL) {
|
if (src->labels[i] != NULL) {
|
||||||
dst->labels[i] = isc_mem_get(mctx,
|
dst->labels[i] = isc_mem_get(mctx,
|
||||||
sizeof(dns_name_t));
|
sizeof(dns_name_t));
|
||||||
if (dst->labels[i] == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_labels;
|
|
||||||
}
|
|
||||||
dns_name_init(dst->labels[i], NULL);
|
dns_name_init(dst->labels[i], NULL);
|
||||||
result = dns_name_dup(src->labels[i], mctx,
|
dns_name_dup(src->labels[i], mctx,
|
||||||
dst->labels[i]);
|
dst->labels[i]);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_labels;
|
|
||||||
} else {
|
} else {
|
||||||
dst->labels[i] = NULL;
|
dst->labels[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dst->count = src->count;
|
dst->count = src->count;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_labels:
|
|
||||||
do {
|
|
||||||
if (dst->labels[i] != NULL) {
|
|
||||||
if (dns_name_dynamic(dst->labels[i]))
|
|
||||||
dns_name_free(dst->labels[i], mctx);
|
|
||||||
isc_mem_put(mctx, dst->labels[i], sizeof(dns_name_t));
|
|
||||||
dst->labels[i] = NULL;
|
|
||||||
}
|
|
||||||
} while (i-- > 0);
|
|
||||||
|
|
||||||
cleanup_keys:
|
|
||||||
do {
|
|
||||||
if (dst->keys[i] != NULL) {
|
|
||||||
if (dns_name_dynamic(dst->keys[i]))
|
|
||||||
dns_name_free(dst->keys[i], mctx);
|
|
||||||
isc_mem_put(mctx, dst->keys[i], sizeof(dns_name_t));
|
|
||||||
dst->keys[i] = NULL;
|
|
||||||
}
|
|
||||||
} while (i-- > 0);
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n) {
|
dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n) {
|
||||||
isc_sockaddr_t *addrs = NULL;
|
isc_sockaddr_t *addrs = NULL;
|
||||||
isc_dscp_t *dscps = NULL;
|
isc_dscp_t *dscps = NULL;
|
||||||
@@ -176,20 +138,12 @@ dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n) {
|
|||||||
REQUIRE(n > ipkl->count);
|
REQUIRE(n > ipkl->count);
|
||||||
|
|
||||||
if (n <= ipkl->allocated)
|
if (n <= ipkl->allocated)
|
||||||
return (ISC_R_SUCCESS);
|
return;
|
||||||
|
|
||||||
addrs = isc_mem_get(mctx, n * sizeof(isc_sockaddr_t));
|
addrs = isc_mem_get(mctx, n * sizeof(isc_sockaddr_t));
|
||||||
if (addrs == NULL)
|
|
||||||
goto nomemory;
|
|
||||||
dscps = isc_mem_get(mctx, n * sizeof(isc_dscp_t));
|
dscps = isc_mem_get(mctx, n * sizeof(isc_dscp_t));
|
||||||
if (dscps == NULL)
|
|
||||||
goto nomemory;
|
|
||||||
keys = isc_mem_get(mctx, n * sizeof(dns_name_t *));
|
keys = isc_mem_get(mctx, n * sizeof(dns_name_t *));
|
||||||
if (keys == NULL)
|
|
||||||
goto nomemory;
|
|
||||||
labels = isc_mem_get(mctx, n * sizeof(dns_name_t *));
|
labels = isc_mem_get(mctx, n * sizeof(dns_name_t *));
|
||||||
if (labels == NULL)
|
|
||||||
goto nomemory;
|
|
||||||
|
|
||||||
if (ipkl->addrs != NULL) {
|
if (ipkl->addrs != NULL) {
|
||||||
memmove(addrs, ipkl->addrs,
|
memmove(addrs, ipkl->addrs,
|
||||||
@@ -232,17 +186,4 @@ dns_ipkeylist_resize(isc_mem_t *mctx, dns_ipkeylist_t *ipkl, unsigned int n) {
|
|||||||
(n - ipkl->allocated) * sizeof(dns_name_t *));
|
(n - ipkl->allocated) * sizeof(dns_name_t *));
|
||||||
|
|
||||||
ipkl->allocated = n;
|
ipkl->allocated = n;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
nomemory:
|
|
||||||
if (addrs != NULL)
|
|
||||||
isc_mem_put(mctx, addrs, n * sizeof(isc_sockaddr_t));
|
|
||||||
if (dscps != NULL)
|
|
||||||
isc_mem_put(mctx, dscps, n * sizeof(isc_dscp_t));
|
|
||||||
if (keys != NULL)
|
|
||||||
isc_mem_put(mctx, keys, n * sizeof(dns_name_t *));
|
|
||||||
if (labels != NULL)
|
|
||||||
isc_mem_put(mctx, labels, n * sizeof(dns_name_t *));
|
|
||||||
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-25
@@ -25,30 +25,20 @@ static void destroy_iptable(dns_iptable_t *dtab);
|
|||||||
/*
|
/*
|
||||||
* Create a new IP table and the underlying radix structure
|
* Create a new IP table and the underlying radix structure
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target) {
|
dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target) {
|
||||||
isc_result_t result;
|
|
||||||
dns_iptable_t *tab;
|
dns_iptable_t *tab;
|
||||||
|
|
||||||
tab = isc_mem_get(mctx, sizeof(*tab));
|
tab = isc_mem_get(mctx, sizeof(*tab));
|
||||||
if (tab == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
tab->mctx = NULL;
|
tab->mctx = NULL;
|
||||||
isc_mem_attach(mctx, &tab->mctx);
|
isc_mem_attach(mctx, &tab->mctx);
|
||||||
isc_refcount_init(&tab->refcount, 1);
|
isc_refcount_init(&tab->refcount, 1);
|
||||||
tab->radix = NULL;
|
tab->radix = NULL;
|
||||||
tab->magic = DNS_IPTABLE_MAGIC;
|
tab->magic = DNS_IPTABLE_MAGIC;
|
||||||
|
|
||||||
result = isc_radix_create(mctx, &tab->radix, RADIX_MAXBITS);
|
isc_radix_create(mctx, &tab->radix, RADIX_MAXBITS);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
*target = tab;
|
*target = tab;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
dns_iptable_detach(&tab);
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool dns_iptable_neg = false;
|
static bool dns_iptable_neg = false;
|
||||||
@@ -57,7 +47,7 @@ static bool dns_iptable_pos = true;
|
|||||||
/*
|
/*
|
||||||
* Add an IP prefix to an existing IP table
|
* Add an IP prefix to an existing IP table
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
||||||
uint16_t bitlen, bool pos)
|
uint16_t bitlen, bool pos)
|
||||||
{
|
{
|
||||||
@@ -71,11 +61,7 @@ dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
|||||||
|
|
||||||
NETADDR_TO_PREFIX_T(addr, pfx, bitlen);
|
NETADDR_TO_PREFIX_T(addr, pfx, bitlen);
|
||||||
|
|
||||||
result = isc_radix_insert(tab->radix, &node, NULL, &pfx);
|
isc_radix_insert(tab->radix, &node, NULL, &pfx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_refcount_destroy(&pfx.refcount);
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If a node already contains data, don't overwrite it */
|
/* If a node already contains data, don't overwrite it */
|
||||||
if (pfx.family == AF_UNSPEC) {
|
if (pfx.family == AF_UNSPEC) {
|
||||||
@@ -96,13 +82,12 @@ dns_iptable_addprefix(dns_iptable_t *tab, const isc_netaddr_t *addr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
isc_refcount_destroy(&pfx.refcount);
|
isc_refcount_destroy(&pfx.refcount);
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Merge one IP table into another one.
|
* Merge one IP table into another one.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
void
|
||||||
dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos)
|
dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -111,10 +96,7 @@ dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos)
|
|||||||
|
|
||||||
RADIX_WALK (source->radix->head, node) {
|
RADIX_WALK (source->radix->head, node) {
|
||||||
new_node = NULL;
|
new_node = NULL;
|
||||||
result = isc_radix_insert (tab->radix, &new_node, node, NULL);
|
isc_radix_insert (tab->radix, &new_node, node, NULL);
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return(result);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we're negating a nested ACL, then we should
|
* If we're negating a nested ACL, then we should
|
||||||
@@ -136,7 +118,6 @@ dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, bool pos)
|
|||||||
} RADIX_WALK_END;
|
} RADIX_WALK_END;
|
||||||
|
|
||||||
tab->radix->num_added_node += max_node;
|
tab->radix->num_added_node += max_node;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+4
-25
@@ -62,7 +62,7 @@ free_keynode(void *node, void *arg) {
|
|||||||
dns_keynode_detachall(mctx, &keynode);
|
dns_keynode_detachall(mctx, &keynode);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep) {
|
dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep) {
|
||||||
dns_keytable_t *keytable;
|
dns_keytable_t *keytable;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -74,20 +74,11 @@ dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep) {
|
|||||||
REQUIRE(keytablep != NULL && *keytablep == NULL);
|
REQUIRE(keytablep != NULL && *keytablep == NULL);
|
||||||
|
|
||||||
keytable = isc_mem_get(mctx, sizeof(*keytable));
|
keytable = isc_mem_get(mctx, sizeof(*keytable));
|
||||||
if (keytable == NULL) {
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
|
||||||
|
|
||||||
keytable->table = NULL;
|
keytable->table = NULL;
|
||||||
result = dns_rbt_create(mctx, free_keynode, mctx, &keytable->table);
|
dns_rbt_create(mctx, free_keynode, mctx, &keytable->table);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
goto cleanup_keytable;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_rwlock_init(&keytable->rwlock, 0, 0);
|
isc_rwlock_init(&keytable->rwlock, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
goto cleanup_rbt;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_refcount_init(&keytable->active_nodes, 0);
|
isc_refcount_init(&keytable->active_nodes, 0);
|
||||||
isc_refcount_init(&keytable->references, 1);
|
isc_refcount_init(&keytable->references, 1);
|
||||||
@@ -96,16 +87,6 @@ dns_keytable_create(isc_mem_t *mctx, dns_keytable_t **keytablep) {
|
|||||||
isc_mem_attach(mctx, &keytable->mctx);
|
isc_mem_attach(mctx, &keytable->mctx);
|
||||||
keytable->magic = KEYTABLE_MAGIC;
|
keytable->magic = KEYTABLE_MAGIC;
|
||||||
*keytablep = keytable;
|
*keytablep = keytable;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_rbt:
|
|
||||||
dns_rbt_destroy(&keytable->table);
|
|
||||||
|
|
||||||
cleanup_keytable:
|
|
||||||
isc_mem_putanddetach(&mctx, keytable, sizeof(*keytable));
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -636,9 +617,7 @@ dns_keytable_dump(dns_keytable_t *keytable, FILE *fp) {
|
|||||||
REQUIRE(VALID_KEYTABLE(keytable));
|
REQUIRE(VALID_KEYTABLE(keytable));
|
||||||
REQUIRE(fp != NULL);
|
REQUIRE(fp != NULL);
|
||||||
|
|
||||||
result = isc_buffer_allocate(keytable->mctx, &text, 4096);
|
isc_buffer_allocate(keytable->mctx, &text, 4096);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = dns_keytable_totext(keytable, &text);
|
result = dns_keytable_totext(keytable, &text);
|
||||||
|
|
||||||
|
|||||||
+2
-9
@@ -79,9 +79,7 @@ initialize(void) {
|
|||||||
|
|
||||||
REQUIRE(initialize_done == false);
|
REQUIRE(initialize_done == false);
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &dns_g_mctx);
|
isc_mem_create(0, 0, &dns_g_mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return;
|
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
result = dns_ecdb_register(dns_g_mctx, &dbimp);
|
result = dns_ecdb_register(dns_g_mctx, &dbimp);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -91,15 +89,10 @@ initialize(void) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup_db;
|
goto cleanup_db;
|
||||||
|
|
||||||
result = isc_mutex_init(&reflock);
|
isc_mutex_init(&reflock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_dst;
|
|
||||||
|
|
||||||
initialize_done = true;
|
initialize_done = true;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cleanup_dst:
|
|
||||||
dst_lib_destroy();
|
|
||||||
cleanup_db:
|
cleanup_db:
|
||||||
if (dbimp != NULL)
|
if (dbimp != NULL)
|
||||||
dns_ecdb_unregister(&dbimp);
|
dns_ecdb_unregister(&dbimp);
|
||||||
|
|||||||
+4
-35
@@ -96,7 +96,7 @@ start_fetch(dns_lookup_t *lookup) {
|
|||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
build_event(dns_lookup_t *lookup) {
|
build_event(dns_lookup_t *lookup) {
|
||||||
dns_name_t *name = NULL;
|
dns_name_t *name = NULL;
|
||||||
dns_rdataset_t *rdataset = NULL;
|
dns_rdataset_t *rdataset = NULL;
|
||||||
@@ -104,22 +104,12 @@ build_event(dns_lookup_t *lookup) {
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
name = isc_mem_get(lookup->mctx, sizeof(dns_name_t));
|
name = isc_mem_get(lookup->mctx, sizeof(dns_name_t));
|
||||||
if (name == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
dns_name_init(name, NULL);
|
dns_name_init(name, NULL);
|
||||||
result = dns_name_dup(dns_fixedname_name(&lookup->name),
|
dns_name_dup(dns_fixedname_name(&lookup->name),
|
||||||
lookup->mctx, name);
|
lookup->mctx, name);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
if (dns_rdataset_isassociated(&lookup->rdataset)) {
|
if (dns_rdataset_isassociated(&lookup->rdataset)) {
|
||||||
rdataset = isc_mem_get(lookup->mctx, sizeof(dns_rdataset_t));
|
rdataset = isc_mem_get(lookup->mctx, sizeof(dns_rdataset_t));
|
||||||
if (rdataset == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
dns_rdataset_init(rdataset);
|
dns_rdataset_init(rdataset);
|
||||||
dns_rdataset_clone(&lookup->rdataset, rdataset);
|
dns_rdataset_clone(&lookup->rdataset, rdataset);
|
||||||
}
|
}
|
||||||
@@ -127,10 +117,6 @@ build_event(dns_lookup_t *lookup) {
|
|||||||
if (dns_rdataset_isassociated(&lookup->sigrdataset)) {
|
if (dns_rdataset_isassociated(&lookup->sigrdataset)) {
|
||||||
sigrdataset = isc_mem_get(lookup->mctx,
|
sigrdataset = isc_mem_get(lookup->mctx,
|
||||||
sizeof(dns_rdataset_t));
|
sizeof(dns_rdataset_t));
|
||||||
if (sigrdataset == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
dns_rdataset_init(sigrdataset);
|
dns_rdataset_init(sigrdataset);
|
||||||
dns_rdataset_clone(&lookup->sigrdataset, sigrdataset);
|
dns_rdataset_clone(&lookup->sigrdataset, sigrdataset);
|
||||||
}
|
}
|
||||||
@@ -138,21 +124,6 @@ build_event(dns_lookup_t *lookup) {
|
|||||||
lookup->event->name = name;
|
lookup->event->name = name;
|
||||||
lookup->event->rdataset = rdataset;
|
lookup->event->rdataset = rdataset;
|
||||||
lookup->event->sigrdataset = sigrdataset;
|
lookup->event->sigrdataset = sigrdataset;
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
fail:
|
|
||||||
if (name != NULL) {
|
|
||||||
if (dns_name_dynamic(name))
|
|
||||||
dns_name_free(name, lookup->mctx);
|
|
||||||
isc_mem_put(lookup->mctx, name, sizeof(dns_name_t));
|
|
||||||
}
|
|
||||||
if (rdataset != NULL) {
|
|
||||||
if (dns_rdataset_isassociated(rdataset))
|
|
||||||
dns_rdataset_disassociate(rdataset);
|
|
||||||
isc_mem_put(lookup->mctx, rdataset, sizeof(dns_rdataset_t));
|
|
||||||
}
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -248,7 +219,7 @@ lookup_find(dns_lookup_t *lookup, dns_fetchevent_t *event) {
|
|||||||
|
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case ISC_R_SUCCESS:
|
case ISC_R_SUCCESS:
|
||||||
result = build_event(lookup);
|
build_event(lookup);
|
||||||
if (event == NULL)
|
if (event == NULL)
|
||||||
break;
|
break;
|
||||||
if (event->db != NULL)
|
if (event->db != NULL)
|
||||||
@@ -410,9 +381,7 @@ dns_lookup_create(isc_mem_t *mctx, const dns_name_t *name, dns_rdatatype_t type,
|
|||||||
lookup->task = NULL;
|
lookup->task = NULL;
|
||||||
isc_task_attach(task, &lookup->task);
|
isc_task_attach(task, &lookup->task);
|
||||||
|
|
||||||
result = isc_mutex_init(&lookup->lock);
|
isc_mutex_init(&lookup->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_event;
|
|
||||||
|
|
||||||
dns_fixedname_init(&lookup->name);
|
dns_fixedname_init(&lookup->name);
|
||||||
|
|
||||||
|
|||||||
+19
-68
@@ -471,15 +471,13 @@ loadctx_destroy(dns_loadctx_t *lctx) {
|
|||||||
isc_mem_detach(&mctx);
|
isc_mem_detach(&mctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
incctx_create(isc_mem_t *mctx, dns_name_t *origin, dns_incctx_t **ictxp) {
|
incctx_create(isc_mem_t *mctx, dns_name_t *origin, dns_incctx_t **ictxp) {
|
||||||
dns_incctx_t *ictx;
|
dns_incctx_t *ictx;
|
||||||
isc_region_t r;
|
isc_region_t r;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
ictx = isc_mem_get(mctx, sizeof(*ictx));
|
ictx = isc_mem_get(mctx, sizeof(*ictx));
|
||||||
if (ictx == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
for (i = 0; i < NBUFS; i++) {
|
for (i = 0; i < NBUFS; i++) {
|
||||||
dns_fixedname_init(&ictx->fixed[i]);
|
dns_fixedname_init(&ictx->fixed[i]);
|
||||||
@@ -503,10 +501,9 @@ incctx_create(isc_mem_t *mctx, dns_name_t *origin, dns_incctx_t **ictxp) {
|
|||||||
ictx->origin_changed = true;
|
ictx->origin_changed = true;
|
||||||
|
|
||||||
*ictxp = ictx;
|
*ictxp = ictx;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
loadctx_create(dns_masterformat_t format, isc_mem_t *mctx,
|
loadctx_create(dns_masterformat_t format, isc_mem_t *mctx,
|
||||||
unsigned int options, uint32_t resign, dns_name_t *top,
|
unsigned int options, uint32_t resign, dns_name_t *top,
|
||||||
dns_rdataclass_t zclass, dns_name_t *origin,
|
dns_rdataclass_t zclass, dns_name_t *origin,
|
||||||
@@ -532,18 +529,10 @@ loadctx_create(dns_masterformat_t format, isc_mem_t *mctx,
|
|||||||
(task != NULL && done != NULL));
|
(task != NULL && done != NULL));
|
||||||
|
|
||||||
lctx = isc_mem_get(mctx, sizeof(*lctx));
|
lctx = isc_mem_get(mctx, sizeof(*lctx));
|
||||||
if (lctx == NULL)
|
isc_mutex_init(&lctx->lock);
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
result = isc_mutex_init(&lctx->lock);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(mctx, lctx, sizeof(*lctx));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
lctx->inc = NULL;
|
lctx->inc = NULL;
|
||||||
result = incctx_create(mctx, origin, &lctx->inc);
|
incctx_create(mctx, origin, &lctx->inc);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_ctx;
|
|
||||||
|
|
||||||
lctx->maxttl = 0;
|
lctx->maxttl = 0;
|
||||||
|
|
||||||
@@ -570,9 +559,7 @@ loadctx_create(dns_masterformat_t format, isc_mem_t *mctx,
|
|||||||
lctx->keep_lex = true;
|
lctx->keep_lex = true;
|
||||||
} else {
|
} else {
|
||||||
lctx->lex = NULL;
|
lctx->lex = NULL;
|
||||||
result = isc_lex_create(mctx, TOKENSIZ, &lctx->lex);
|
isc_lex_create(mctx, TOKENSIZ, &lctx->lex);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_inc;
|
|
||||||
lctx->keep_lex = false;
|
lctx->keep_lex = false;
|
||||||
memset(specials, 0, sizeof(specials));
|
memset(specials, 0, sizeof(specials));
|
||||||
specials[0] = 1;
|
specials[0] = 1;
|
||||||
@@ -620,13 +607,6 @@ loadctx_create(dns_masterformat_t format, isc_mem_t *mctx,
|
|||||||
lctx->references = 1; /* Implicit attach. */
|
lctx->references = 1; /* Implicit attach. */
|
||||||
lctx->magic = DNS_LCTX_MAGIC;
|
lctx->magic = DNS_LCTX_MAGIC;
|
||||||
*lctxp = lctx;
|
*lctxp = lctx;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
cleanup_inc:
|
|
||||||
incctx_destroy(mctx, lctx->inc);
|
|
||||||
cleanup_ctx:
|
|
||||||
isc_mem_put(mctx, lctx, sizeof(*lctx));
|
|
||||||
return (result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *hex = "0123456789abcdef0123456789ABCDEF";
|
static const char *hex = "0123456789abcdef0123456789ABCDEF";
|
||||||
@@ -888,9 +868,7 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs,
|
|||||||
isc_buffer_add(&buffer, strlen(rhsbuf));
|
isc_buffer_add(&buffer, strlen(rhsbuf));
|
||||||
isc_buffer_setactive(&buffer, strlen(rhsbuf));
|
isc_buffer_setactive(&buffer, strlen(rhsbuf));
|
||||||
|
|
||||||
result = isc_lex_openbuffer(lctx->lex, &buffer);
|
isc_lex_openbuffer(lctx->lex, &buffer);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto error_cleanup;
|
|
||||||
|
|
||||||
isc_buffer_init(&target, target_mem, target_size);
|
isc_buffer_init(&target, target_mem, target_size);
|
||||||
result = dns_rdata_fromtext(&rdata, lctx->zclass, type,
|
result = dns_rdata_fromtext(&rdata, lctx->zclass, type,
|
||||||
@@ -2106,9 +2084,7 @@ pushfile(const char *master_file, dns_name_t *origin, dns_loadctx_t *lctx) {
|
|||||||
ictx = lctx->inc;
|
ictx = lctx->inc;
|
||||||
lctx->seen_include = true;
|
lctx->seen_include = true;
|
||||||
|
|
||||||
result = incctx_create(lctx->mctx, origin, &newctx);
|
incctx_create(lctx->mctx, origin, &newctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Push origin_changed.
|
* Push origin_changed.
|
||||||
@@ -2608,11 +2584,9 @@ dns_master_loadfile(const char *master_file, dns_name_t *top,
|
|||||||
dns_loadctx_t *lctx = NULL;
|
dns_loadctx_t *lctx = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
result = loadctx_create(format, mctx, options, resign, top, zclass,
|
loadctx_create(format, mctx, options, resign, top, zclass,
|
||||||
origin, callbacks, NULL, NULL, NULL,
|
origin, callbacks, NULL, NULL, NULL,
|
||||||
include_cb, include_arg, NULL, &lctx);
|
include_cb, include_arg, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
lctx->maxttl = maxttl;
|
lctx->maxttl = maxttl;
|
||||||
|
|
||||||
@@ -2645,11 +2619,9 @@ dns_master_loadfileinc(const char *master_file, dns_name_t *top,
|
|||||||
REQUIRE(task != NULL);
|
REQUIRE(task != NULL);
|
||||||
REQUIRE(done != NULL);
|
REQUIRE(done != NULL);
|
||||||
|
|
||||||
result = loadctx_create(format, mctx, options, resign, top, zclass,
|
loadctx_create(format, mctx, options, resign, top, zclass,
|
||||||
origin, callbacks, task, done, done_arg,
|
origin, callbacks, task, done, done_arg,
|
||||||
include_cb, include_arg, NULL, &lctx);
|
include_cb, include_arg, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
lctx->maxttl = maxttl;
|
lctx->maxttl = maxttl;
|
||||||
|
|
||||||
@@ -2678,15 +2650,11 @@ dns_master_loadstream(FILE *stream, dns_name_t *top, dns_name_t *origin,
|
|||||||
|
|
||||||
REQUIRE(stream != NULL);
|
REQUIRE(stream != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, NULL, NULL, NULL,
|
zclass, origin, callbacks, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, &lctx);
|
NULL, NULL, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_lex_openstream(lctx->lex, stream);
|
isc_lex_openstream(lctx->lex, stream);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = (lctx->load)(lctx);
|
result = (lctx->load)(lctx);
|
||||||
INSIST(result != DNS_R_CONTINUE);
|
INSIST(result != DNS_R_CONTINUE);
|
||||||
@@ -2711,15 +2679,11 @@ dns_master_loadstreaminc(FILE *stream, dns_name_t *top, dns_name_t *origin,
|
|||||||
REQUIRE(task != NULL);
|
REQUIRE(task != NULL);
|
||||||
REQUIRE(done != NULL);
|
REQUIRE(done != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, task, done,
|
zclass, origin, callbacks, task, done,
|
||||||
done_arg, NULL, NULL, NULL, &lctx);
|
done_arg, NULL, NULL, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = isc_lex_openstream(lctx->lex, stream);
|
isc_lex_openstream(lctx->lex, stream);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = task_send(lctx);
|
result = task_send(lctx);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
@@ -2744,15 +2708,10 @@ dns_master_loadbuffer(isc_buffer_t *buffer, dns_name_t *top,
|
|||||||
|
|
||||||
REQUIRE(buffer != NULL);
|
REQUIRE(buffer != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, NULL, NULL, NULL,
|
zclass, origin, callbacks, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, &lctx);
|
NULL, NULL, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
isc_lex_openbuffer(lctx->lex, buffer);
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = isc_lex_openbuffer(lctx->lex, buffer);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = (lctx->load)(lctx);
|
result = (lctx->load)(lctx);
|
||||||
INSIST(result != DNS_R_CONTINUE);
|
INSIST(result != DNS_R_CONTINUE);
|
||||||
@@ -2777,15 +2736,11 @@ dns_master_loadbufferinc(isc_buffer_t *buffer, dns_name_t *top,
|
|||||||
REQUIRE(task != NULL);
|
REQUIRE(task != NULL);
|
||||||
REQUIRE(done != NULL);
|
REQUIRE(done != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, task, done,
|
zclass, origin, callbacks, task, done,
|
||||||
done_arg, NULL, NULL, NULL, &lctx);
|
done_arg, NULL, NULL, NULL, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = isc_lex_openbuffer(lctx->lex, buffer);
|
isc_lex_openbuffer(lctx->lex, buffer);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
result = task_send(lctx);
|
result = task_send(lctx);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
@@ -2809,11 +2764,9 @@ dns_master_loadlexer(isc_lex_t *lex, dns_name_t *top,
|
|||||||
|
|
||||||
REQUIRE(lex != NULL);
|
REQUIRE(lex != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, NULL, NULL, NULL,
|
zclass, origin, callbacks, NULL, NULL, NULL,
|
||||||
NULL, NULL, lex, &lctx);
|
NULL, NULL, lex, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = (lctx->load)(lctx);
|
result = (lctx->load)(lctx);
|
||||||
INSIST(result != DNS_R_CONTINUE);
|
INSIST(result != DNS_R_CONTINUE);
|
||||||
@@ -2837,11 +2790,9 @@ dns_master_loadlexerinc(isc_lex_t *lex, dns_name_t *top,
|
|||||||
REQUIRE(task != NULL);
|
REQUIRE(task != NULL);
|
||||||
REQUIRE(done != NULL);
|
REQUIRE(done != NULL);
|
||||||
|
|
||||||
result = loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
loadctx_create(dns_masterformat_text, mctx, options, 0, top,
|
||||||
zclass, origin, callbacks, task, done,
|
zclass, origin, callbacks, task, done,
|
||||||
done_arg, NULL, NULL, lex, &lctx);
|
done_arg, NULL, NULL, lex, &lctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = task_send(lctx);
|
result = task_send(lctx);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
|
|||||||
@@ -1527,9 +1527,7 @@ dumpctx_create(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
result = isc_mutex_init(&dctx->lock);
|
isc_mutex_init(&dctx->lock);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
if (version != NULL)
|
if (version != NULL)
|
||||||
dns_db_attachversion(dctx->db, version, &dctx->version);
|
dns_db_attachversion(dctx->db, version, &dctx->version);
|
||||||
else if (!dns_db_iscache(db))
|
else if (!dns_db_iscache(db))
|
||||||
|
|||||||
+12
-70
@@ -191,8 +191,6 @@ msgblock_allocate(isc_mem_t *mctx, unsigned int sizeof_type,
|
|||||||
length = sizeof(dns_msgblock_t) + (sizeof_type * count);
|
length = sizeof(dns_msgblock_t) + (sizeof_type * count);
|
||||||
|
|
||||||
block = isc_mem_get(mctx, length);
|
block = isc_mem_get(mctx, length);
|
||||||
if (block == NULL)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
block->count = count;
|
block->count = count;
|
||||||
block->remaining = count;
|
block->remaining = count;
|
||||||
@@ -245,18 +243,15 @@ msgblock_free(isc_mem_t *mctx, dns_msgblock_t *block, unsigned int sizeof_type)
|
|||||||
* "current" buffer. (which is always the last on the list, for our
|
* "current" buffer. (which is always the last on the list, for our
|
||||||
* uses)
|
* uses)
|
||||||
*/
|
*/
|
||||||
static inline isc_result_t
|
static inline void
|
||||||
newbuffer(dns_message_t *msg, unsigned int size) {
|
newbuffer(dns_message_t *msg, unsigned int size) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_buffer_t *dynbuf;
|
isc_buffer_t *dynbuf;
|
||||||
|
|
||||||
dynbuf = NULL;
|
dynbuf = NULL;
|
||||||
result = isc_buffer_allocate(msg->mctx, &dynbuf, size);
|
isc_buffer_allocate(msg->mctx, &dynbuf, size);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
ISC_LIST_APPEND(msg->scratchpad, dynbuf, link);
|
ISC_LIST_APPEND(msg->scratchpad, dynbuf, link);
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline isc_buffer_t *
|
static inline isc_buffer_t *
|
||||||
@@ -290,9 +285,6 @@ newrdata(dns_message_t *msg) {
|
|||||||
if (rdata == NULL) {
|
if (rdata == NULL) {
|
||||||
msgblock = msgblock_allocate(msg->mctx, sizeof(dns_rdata_t),
|
msgblock = msgblock_allocate(msg->mctx, sizeof(dns_rdata_t),
|
||||||
RDATA_COUNT);
|
RDATA_COUNT);
|
||||||
if (msgblock == NULL)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
ISC_LIST_APPEND(msg->rdatas, msgblock, link);
|
ISC_LIST_APPEND(msg->rdatas, msgblock, link);
|
||||||
|
|
||||||
rdata = msgblock_get(msgblock, dns_rdata_t);
|
rdata = msgblock_get(msgblock, dns_rdata_t);
|
||||||
@@ -324,9 +316,6 @@ newrdatalist(dns_message_t *msg) {
|
|||||||
msgblock = msgblock_allocate(msg->mctx,
|
msgblock = msgblock_allocate(msg->mctx,
|
||||||
sizeof(dns_rdatalist_t),
|
sizeof(dns_rdatalist_t),
|
||||||
RDATALIST_COUNT);
|
RDATALIST_COUNT);
|
||||||
if (msgblock == NULL)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
ISC_LIST_APPEND(msg->rdatalists, msgblock, link);
|
ISC_LIST_APPEND(msg->rdatalists, msgblock, link);
|
||||||
|
|
||||||
rdatalist = msgblock_get(msgblock, dns_rdatalist_t);
|
rdatalist = msgblock_get(msgblock, dns_rdatalist_t);
|
||||||
@@ -349,9 +338,6 @@ newoffsets(dns_message_t *msg) {
|
|||||||
msgblock = msgblock_allocate(msg->mctx,
|
msgblock = msgblock_allocate(msg->mctx,
|
||||||
sizeof(dns_offsets_t),
|
sizeof(dns_offsets_t),
|
||||||
OFFSET_COUNT);
|
OFFSET_COUNT);
|
||||||
if (msgblock == NULL)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
ISC_LIST_APPEND(msg->offsets, msgblock, link);
|
ISC_LIST_APPEND(msg->offsets, msgblock, link);
|
||||||
|
|
||||||
offsets = msgblock_get(msgblock, dns_offsets_t);
|
offsets = msgblock_get(msgblock, dns_offsets_t);
|
||||||
@@ -700,7 +686,7 @@ spacefortsig(dns_tsigkey_t *key, int otherlen) {
|
|||||||
return (26 + r1.length + r2.length + x + otherlen);
|
return (26 + r1.length + r2.length + x + otherlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp)
|
dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp)
|
||||||
{
|
{
|
||||||
dns_message_t *m;
|
dns_message_t *m;
|
||||||
@@ -715,8 +701,6 @@ dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp)
|
|||||||
|| intent == DNS_MESSAGE_INTENTRENDER);
|
|| intent == DNS_MESSAGE_INTENTRENDER);
|
||||||
|
|
||||||
m = isc_mem_get(mctx, sizeof(dns_message_t));
|
m = isc_mem_get(mctx, sizeof(dns_message_t));
|
||||||
if (m == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No allocations until further notice. Just initialize all lists
|
* No allocations until further notice. Just initialize all lists
|
||||||
@@ -747,49 +731,24 @@ dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp)
|
|||||||
* Ok, it is safe to allocate (and then "goto cleanup" if failure)
|
* Ok, it is safe to allocate (and then "goto cleanup" if failure)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
result = isc_mempool_create(m->mctx, sizeof(dns_name_t), &m->namepool);
|
isc_mempool_create(m->mctx, sizeof(dns_name_t), &m->namepool);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
isc_mempool_setfillcount(m->namepool, NAME_COUNT);
|
isc_mempool_setfillcount(m->namepool, NAME_COUNT);
|
||||||
isc_mempool_setfreemax(m->namepool, NAME_COUNT);
|
isc_mempool_setfreemax(m->namepool, NAME_COUNT);
|
||||||
isc_mempool_setname(m->namepool, "msg:names");
|
isc_mempool_setname(m->namepool, "msg:names");
|
||||||
|
|
||||||
result = isc_mempool_create(m->mctx, sizeof(dns_rdataset_t),
|
isc_mempool_create(m->mctx, sizeof(dns_rdataset_t),
|
||||||
&m->rdspool);
|
&m->rdspool);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
isc_mempool_setfillcount(m->rdspool, RDATASET_COUNT);
|
isc_mempool_setfillcount(m->rdspool, RDATASET_COUNT);
|
||||||
isc_mempool_setfreemax(m->rdspool, RDATASET_COUNT);
|
isc_mempool_setfreemax(m->rdspool, RDATASET_COUNT);
|
||||||
isc_mempool_setname(m->rdspool, "msg:rdataset");
|
isc_mempool_setname(m->rdspool, "msg:rdataset");
|
||||||
|
|
||||||
dynbuf = NULL;
|
dynbuf = NULL;
|
||||||
result = isc_buffer_allocate(mctx, &dynbuf, SCRATCHPAD_SIZE);
|
isc_buffer_allocate(mctx, &dynbuf, SCRATCHPAD_SIZE);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
ISC_LIST_APPEND(m->scratchpad, dynbuf, link);
|
ISC_LIST_APPEND(m->scratchpad, dynbuf, link);
|
||||||
|
|
||||||
m->cctx = NULL;
|
m->cctx = NULL;
|
||||||
|
|
||||||
*msgp = m;
|
*msgp = m;
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Cleanup for error returns.
|
|
||||||
*/
|
|
||||||
cleanup:
|
|
||||||
dynbuf = ISC_LIST_HEAD(m->scratchpad);
|
|
||||||
if (dynbuf != NULL) {
|
|
||||||
ISC_LIST_UNLINK(m->scratchpad, dynbuf, link);
|
|
||||||
isc_buffer_free(&dynbuf);
|
|
||||||
}
|
|
||||||
if (m->namepool != NULL)
|
|
||||||
isc_mempool_destroy(&m->namepool);
|
|
||||||
if (m->rdspool != NULL)
|
|
||||||
isc_mempool_destroy(&m->rdspool);
|
|
||||||
m->magic = 0;
|
|
||||||
isc_mem_putanddetach(&mctx, m, sizeof(dns_message_t));
|
|
||||||
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -909,9 +868,7 @@ getname(dns_name_t *name, isc_buffer_t *source, dns_message_t *msg,
|
|||||||
if (result == ISC_R_NOSPACE) {
|
if (result == ISC_R_NOSPACE) {
|
||||||
tries++;
|
tries++;
|
||||||
|
|
||||||
result = newbuffer(msg, SCRATCHPAD_SIZE);
|
newbuffer(msg, SCRATCHPAD_SIZE);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
scratch = currentbuffer(msg);
|
scratch = currentbuffer(msg);
|
||||||
dns_name_reset(name);
|
dns_name_reset(name);
|
||||||
@@ -966,10 +923,7 @@ getrdata(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx,
|
|||||||
trysize *= 2;
|
trysize *= 2;
|
||||||
}
|
}
|
||||||
tries++;
|
tries++;
|
||||||
result = newbuffer(msg, trysize);
|
newbuffer(msg, trysize);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
scratch = currentbuffer(msg);
|
scratch = currentbuffer(msg);
|
||||||
} else {
|
} else {
|
||||||
return (result);
|
return (result);
|
||||||
@@ -1764,8 +1718,6 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source,
|
|||||||
else {
|
else {
|
||||||
msg->saved.length = isc_buffer_usedlength(&origsource);
|
msg->saved.length = isc_buffer_usedlength(&origsource);
|
||||||
msg->saved.base = isc_mem_get(msg->mctx, msg->saved.length);
|
msg->saved.base = isc_mem_get(msg->mctx, msg->saved.length);
|
||||||
if (msg->saved.base == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
memmove(msg->saved.base, isc_buffer_base(&origsource),
|
memmove(msg->saved.base, isc_buffer_base(&origsource),
|
||||||
msg->saved.length);
|
msg->saved.length);
|
||||||
msg->free_saved = 1;
|
msg->free_saved = 1;
|
||||||
@@ -2924,9 +2876,7 @@ dns_message_setquerytsig(dns_message_t *msg, isc_buffer_t *querytsig) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
isc_buffer_usedregion(querytsig, &r);
|
isc_buffer_usedregion(querytsig, &r);
|
||||||
result = isc_buffer_allocate(msg->mctx, &buf, r.length);
|
isc_buffer_allocate(msg->mctx, &buf, r.length);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
isc_buffer_putmem(buf, r.base, r.length);
|
isc_buffer_putmem(buf, r.base, r.length);
|
||||||
isc_buffer_usedregion(buf, &r);
|
isc_buffer_usedregion(buf, &r);
|
||||||
dns_rdata_init(rdata);
|
dns_rdata_init(rdata);
|
||||||
@@ -2971,9 +2921,7 @@ dns_message_getquerytsig(dns_message_t *msg, isc_mem_t *mctx,
|
|||||||
dns_rdataset_current(msg->tsig, &rdata);
|
dns_rdataset_current(msg->tsig, &rdata);
|
||||||
dns_rdata_toregion(&rdata, &r);
|
dns_rdata_toregion(&rdata, &r);
|
||||||
|
|
||||||
result = isc_buffer_allocate(mctx, querytsig, r.length);
|
isc_buffer_allocate(mctx, querytsig, r.length);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
isc_buffer_putmem(*querytsig, r.base, r.length);
|
isc_buffer_putmem(*querytsig, r.base, r.length);
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
@@ -3092,9 +3040,7 @@ dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
|
|||||||
|
|
||||||
if (!dns_name_hasbuffer(signer)) {
|
if (!dns_name_hasbuffer(signer)) {
|
||||||
isc_buffer_t *dynbuf = NULL;
|
isc_buffer_t *dynbuf = NULL;
|
||||||
result = isc_buffer_allocate(msg->mctx, &dynbuf, 512);
|
isc_buffer_allocate(msg->mctx, &dynbuf, 512);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
dns_name_setbuffer(signer, dynbuf);
|
dns_name_setbuffer(signer, dynbuf);
|
||||||
dns_message_takebuffer(msg, &dynbuf);
|
dns_message_takebuffer(msg, &dynbuf);
|
||||||
}
|
}
|
||||||
@@ -4307,8 +4253,6 @@ logfmtpacket(dns_message_t *message, const char *description,
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
buf = isc_mem_get(mctx, len);
|
buf = isc_mem_get(mctx, len);
|
||||||
if (buf == NULL)
|
|
||||||
break;
|
|
||||||
isc_buffer_init(&buffer, buf, len);
|
isc_buffer_init(&buffer, buf, len);
|
||||||
result = dns_message_totext(message, style, 0, &buffer);
|
result = dns_message_totext(message, style, 0, &buffer);
|
||||||
if (result == ISC_R_NOSPACE) {
|
if (result == ISC_R_NOSPACE) {
|
||||||
@@ -4377,9 +4321,7 @@ dns_message_buildopt(dns_message_t *message, dns_rdataset_t **rdatasetp,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = isc_buffer_allocate(message->mctx, &buf, len);
|
isc_buffer_allocate(message->mctx, &buf, len);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (ednsopts[i].code == DNS_OPT_PAD &&
|
if (ednsopts[i].code == DNS_OPT_PAD &&
|
||||||
|
|||||||
+8
-17
@@ -1283,7 +1283,7 @@ free_specific(void *arg) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
thread_key_mutex_init(void) {
|
thread_key_mutex_init(void) {
|
||||||
RUNTIME_CHECK(isc_mutex_init(&thread_key_mutex) == ISC_R_SUCCESS);
|
isc_mutex_init(&thread_key_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -1301,9 +1301,7 @@ totext_filter_proc_key_init(void) {
|
|||||||
if (!thread_key_initialized) {
|
if (!thread_key_initialized) {
|
||||||
LOCK(&thread_key_mutex);
|
LOCK(&thread_key_mutex);
|
||||||
if (thread_key_mctx == NULL)
|
if (thread_key_mctx == NULL)
|
||||||
result = isc_mem_create2(0, 0, &thread_key_mctx, 0);
|
isc_mem_create2(0, 0, &thread_key_mctx, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto unlock;
|
|
||||||
isc_mem_setname(thread_key_mctx, "threadkey", NULL);
|
isc_mem_setname(thread_key_mctx, "threadkey", NULL);
|
||||||
isc_mem_setdestroycheck(thread_key_mctx, false);
|
isc_mem_setdestroycheck(thread_key_mctx, false);
|
||||||
|
|
||||||
@@ -1312,8 +1310,10 @@ totext_filter_proc_key_init(void) {
|
|||||||
free_specific) != 0) {
|
free_specific) != 0) {
|
||||||
result = ISC_R_FAILURE;
|
result = ISC_R_FAILURE;
|
||||||
isc_mem_detach(&thread_key_mctx);
|
isc_mem_detach(&thread_key_mctx);
|
||||||
} else
|
} else {
|
||||||
|
result = ISC_R_SUCCESS;
|
||||||
thread_key_initialized = 1;
|
thread_key_initialized = 1;
|
||||||
|
}
|
||||||
unlock:
|
unlock:
|
||||||
UNLOCK(&thread_key_mutex);
|
UNLOCK(&thread_key_mutex);
|
||||||
}
|
}
|
||||||
@@ -2158,7 +2158,7 @@ dns_name_split(const dns_name_t *name, unsigned int suffixlabels,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
||||||
dns_name_t *target)
|
dns_name_t *target)
|
||||||
{
|
{
|
||||||
@@ -2177,8 +2177,6 @@ dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
|||||||
MAKE_EMPTY(target);
|
MAKE_EMPTY(target);
|
||||||
|
|
||||||
target->ndata = isc_mem_get(mctx, source->length);
|
target->ndata = isc_mem_get(mctx, source->length);
|
||||||
if (target->ndata == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
memmove(target->ndata, source->ndata, source->length);
|
memmove(target->ndata, source->ndata, source->length);
|
||||||
|
|
||||||
@@ -2194,11 +2192,9 @@ dns_name_dup(const dns_name_t *source, isc_mem_t *mctx,
|
|||||||
else
|
else
|
||||||
set_offsets(target, target->offsets, NULL);
|
set_offsets(target, target->offsets, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
void
|
||||||
dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
||||||
dns_name_t *target)
|
dns_name_t *target)
|
||||||
{
|
{
|
||||||
@@ -2219,8 +2215,6 @@ dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
|||||||
MAKE_EMPTY(target);
|
MAKE_EMPTY(target);
|
||||||
|
|
||||||
target->ndata = isc_mem_get(mctx, source->length + source->labels);
|
target->ndata = isc_mem_get(mctx, source->length + source->labels);
|
||||||
if (target->ndata == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
memmove(target->ndata, source->ndata, source->length);
|
memmove(target->ndata, source->ndata, source->length);
|
||||||
|
|
||||||
@@ -2235,8 +2229,6 @@ dns_name_dupwithoffsets(const dns_name_t *source, isc_mem_t *mctx,
|
|||||||
memmove(target->offsets, source->offsets, source->labels);
|
memmove(target->offsets, source->offsets, source->labels);
|
||||||
else
|
else
|
||||||
set_offsets(target, target->offsets, NULL);
|
set_offsets(target, target->offsets, NULL);
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2452,8 +2444,7 @@ dns_name_fromstring2(dns_name_t *target, const char *src,
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
|
|
||||||
if (name != target)
|
dns_name_dupwithoffsets(name, mctx, target);
|
||||||
result = dns_name_dupwithoffsets(name, mctx, target);
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-17
@@ -112,24 +112,19 @@ dns_ntatable_create(dns_view_t *view,
|
|||||||
REQUIRE(ntatablep != NULL && *ntatablep == NULL);
|
REQUIRE(ntatablep != NULL && *ntatablep == NULL);
|
||||||
|
|
||||||
ntatable = isc_mem_get(view->mctx, sizeof(*ntatable));
|
ntatable = isc_mem_get(view->mctx, sizeof(*ntatable));
|
||||||
if (ntatable == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
ntatable->task = NULL;
|
ntatable->task = NULL;
|
||||||
result = isc_task_create(taskmgr, 0, &ntatable->task);
|
result = isc_task_create(taskmgr, 0, &ntatable->task);
|
||||||
|
REQUIRE(result == ISC_R_SUCCESS);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup_ntatable;
|
goto cleanup_ntatable;
|
||||||
isc_task_setname(ntatable->task, "ntatable", ntatable);
|
isc_task_setname(ntatable->task, "ntatable", ntatable);
|
||||||
|
|
||||||
ntatable->table = NULL;
|
ntatable->table = NULL;
|
||||||
result = dns_rbt_create(view->mctx, free_nta, view->mctx,
|
dns_rbt_create(view->mctx, free_nta, view->mctx,
|
||||||
&ntatable->table);
|
&ntatable->table);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_task;
|
|
||||||
|
|
||||||
result = isc_rwlock_init(&ntatable->rwlock, 0, 0);
|
isc_rwlock_init(&ntatable->rwlock, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_rbt;
|
|
||||||
|
|
||||||
ntatable->timermgr = timermgr;
|
ntatable->timermgr = timermgr;
|
||||||
ntatable->taskmgr = taskmgr;
|
ntatable->taskmgr = taskmgr;
|
||||||
@@ -142,12 +137,6 @@ dns_ntatable_create(dns_view_t *view,
|
|||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
cleanup_rbt:
|
|
||||||
dns_rbt_destroy(&ntatable->table);
|
|
||||||
|
|
||||||
cleanup_task:
|
|
||||||
isc_task_detach(&ntatable->task);
|
|
||||||
|
|
||||||
cleanup_ntatable:
|
cleanup_ntatable:
|
||||||
isc_mem_put(ntatable->view->mctx, ntatable, sizeof(*ntatable));
|
isc_mem_put(ntatable->view->mctx, ntatable, sizeof(*ntatable));
|
||||||
|
|
||||||
@@ -584,9 +573,7 @@ dns_ntatable_dump(dns_ntatable_t *ntatable, FILE *fp) {
|
|||||||
isc_buffer_t *text = NULL;
|
isc_buffer_t *text = NULL;
|
||||||
int len = 4096;
|
int len = 4096;
|
||||||
|
|
||||||
result = isc_buffer_allocate(ntatable->view->mctx, &text, len);
|
isc_buffer_allocate(ntatable->view->mctx, &text, len);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
result = dns_ntatable_totext(ntatable, &text);
|
result = dns_ntatable_totext(ntatable, &text);
|
||||||
|
|
||||||
|
|||||||
@@ -156,9 +156,7 @@ dst__openssl_init(const char *engine) {
|
|||||||
locks = mem_alloc(sizeof(isc_mutex_t) * nlocks FILELINE);
|
locks = mem_alloc(sizeof(isc_mutex_t) * nlocks FILELINE);
|
||||||
if (locks == NULL)
|
if (locks == NULL)
|
||||||
return (ISC_R_NOMEMORY);
|
return (ISC_R_NOMEMORY);
|
||||||
result = isc_mutexblock_init(locks, nlocks);
|
isc_mutexblock_init(locks, nlocks);
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_mutexalloc;
|
|
||||||
CRYPTO_set_locking_callback(lock_callback);
|
CRYPTO_set_locking_callback(lock_callback);
|
||||||
# if defined(LIBRESSL_VERSION_NUMBER)
|
# if defined(LIBRESSL_VERSION_NUMBER)
|
||||||
CRYPTO_set_id_callback(id_callback);
|
CRYPTO_set_id_callback(id_callback);
|
||||||
@@ -220,7 +218,7 @@ dst__openssl_init(const char *engine) {
|
|||||||
#endif
|
#endif
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
||||||
CRYPTO_set_locking_callback(NULL);
|
CRYPTO_set_locking_callback(NULL);
|
||||||
DESTROYMUTEXBLOCK(locks, nlocks);
|
isc_mutexblock_destroy(locks, nlocks);
|
||||||
cleanup_mutexalloc:
|
cleanup_mutexalloc:
|
||||||
mem_free(locks FILELINE);
|
mem_free(locks FILELINE);
|
||||||
locks = NULL;
|
locks = NULL;
|
||||||
@@ -258,7 +256,7 @@ dst__openssl_destroy(void) {
|
|||||||
|
|
||||||
if (locks != NULL) {
|
if (locks != NULL) {
|
||||||
CRYPTO_set_locking_callback(NULL);
|
CRYPTO_set_locking_callback(NULL);
|
||||||
DESTROYMUTEXBLOCK(locks, nlocks);
|
isc_mutexblock_destroy(locks, nlocks);
|
||||||
mem_free(locks FILELINE);
|
mem_free(locks FILELINE);
|
||||||
locks = NULL;
|
locks = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-7
@@ -654,15 +654,9 @@ dns_peer_setkeybycharp(dns_peer_t *peer, const char *keyval) {
|
|||||||
return (result);
|
return (result);
|
||||||
|
|
||||||
name = isc_mem_get(peer->mem, sizeof(dns_name_t));
|
name = isc_mem_get(peer->mem, sizeof(dns_name_t));
|
||||||
if (name == NULL)
|
|
||||||
return (ISC_R_NOMEMORY);
|
|
||||||
|
|
||||||
dns_name_init(name, NULL);
|
dns_name_init(name, NULL);
|
||||||
result = dns_name_dup(dns_fixedname_name(&fname), peer->mem, name);
|
dns_name_dup(dns_fixedname_name(&fname), peer->mem, name);
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isc_mem_put(peer->mem, name, sizeof(dns_name_t));
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = dns_peer_setkey(peer, &name);
|
result = dns_peer_setkey(peer, &name);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user