|
Lines 462-467
struct dns_rbtdb {
Link Here
|
| 462 |
rbtdb_serial_t current_serial; |
462 |
rbtdb_serial_t current_serial; |
| 463 |
rbtdb_serial_t least_serial; |
463 |
rbtdb_serial_t least_serial; |
| 464 |
rbtdb_serial_t next_serial; |
464 |
rbtdb_serial_t next_serial; |
|
|
465 |
uint32_t maxrrperset; |
| 466 |
uint32_t maxtypepername; |
| 465 |
rbtdb_version_t *current_version; |
467 |
rbtdb_version_t *current_version; |
| 466 |
rbtdb_version_t *future_version; |
468 |
rbtdb_version_t *future_version; |
| 467 |
rbtdb_versionlist_t open_versions; |
469 |
rbtdb_versionlist_t open_versions; |
|
Lines 929-934
prio_type(rbtdb_rdatatype_t type) {
Link Here
|
| 929 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_soa): |
931 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_soa): |
| 930 |
case dns_rdatatype_a: |
932 |
case dns_rdatatype_a: |
| 931 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_a): |
933 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_a): |
|
|
934 |
case dns_rdatatype_mx: |
| 935 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_mx): |
| 932 |
case dns_rdatatype_aaaa: |
936 |
case dns_rdatatype_aaaa: |
| 933 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_aaaa): |
937 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_aaaa): |
| 934 |
case dns_rdatatype_nsec: |
938 |
case dns_rdatatype_nsec: |
|
Lines 941-946
prio_type(rbtdb_rdatatype_t type) {
Link Here
|
| 941 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ds): |
945 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ds): |
| 942 |
case dns_rdatatype_cname: |
946 |
case dns_rdatatype_cname: |
| 943 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_cname): |
947 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_cname): |
|
|
948 |
case dns_rdatatype_dname: |
| 949 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dname): |
| 950 |
case dns_rdatatype_svcb: |
| 951 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_svcb): |
| 952 |
case dns_rdatatype_https: |
| 953 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_https): |
| 954 |
case dns_rdatatype_dnskey: |
| 955 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dnskey): |
| 956 |
case dns_rdatatype_srv: |
| 957 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_srv): |
| 958 |
case dns_rdatatype_txt: |
| 959 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_txt): |
| 960 |
case dns_rdatatype_ptr: |
| 961 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ptr): |
| 962 |
case dns_rdatatype_naptr: |
| 963 |
case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_naptr): |
| 944 |
return (true); |
964 |
return (true); |
| 945 |
} |
965 |
} |
| 946 |
return (false); |
966 |
return (false); |
|
Lines 6238-6243
update_recordsandxfrsize(bool add, rbtdb_version_t *rbtversion,
Link Here
|
| 6238 |
RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write); |
6258 |
RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write); |
| 6239 |
} |
6259 |
} |
| 6240 |
|
6260 |
|
|
|
6261 |
static bool |
| 6262 |
overmaxtype(dns_rbtdb_t *rbtdb, uint32_t ntypes) { |
| 6263 |
if (rbtdb->maxtypepername == 0) { |
| 6264 |
return (false); |
| 6265 |
} |
| 6266 |
|
| 6267 |
return (ntypes >= rbtdb->maxtypepername); |
| 6268 |
} |
| 6269 |
|
| 6270 |
static bool |
| 6271 |
prio_header(rdatasetheader_t *header) { |
| 6272 |
if (NEGATIVE(header) && prio_type(RBTDB_RDATATYPE_EXT(header->type))) { |
| 6273 |
return (true); |
| 6274 |
} |
| 6275 |
|
| 6276 |
return (prio_type(header->type)); |
| 6277 |
} |
| 6278 |
|
| 6241 |
/* |
6279 |
/* |
| 6242 |
* write lock on rbtnode must be held. |
6280 |
* write lock on rbtnode must be held. |
| 6243 |
*/ |
6281 |
*/ |
|
Lines 6249-6255
add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename,
Link Here
|
| 6249 |
rbtdb_changed_t *changed = NULL; |
6287 |
rbtdb_changed_t *changed = NULL; |
| 6250 |
rdatasetheader_t *topheader = NULL, *topheader_prev = NULL; |
6288 |
rdatasetheader_t *topheader = NULL, *topheader_prev = NULL; |
| 6251 |
rdatasetheader_t *header = NULL, *sigheader = NULL; |
6289 |
rdatasetheader_t *header = NULL, *sigheader = NULL; |
| 6252 |
rdatasetheader_t *prioheader = NULL; |
6290 |
rdatasetheader_t *prioheader = NULL, *expireheader = NULL; |
| 6253 |
unsigned char *merged = NULL; |
6291 |
unsigned char *merged = NULL; |
| 6254 |
isc_result_t result; |
6292 |
isc_result_t result; |
| 6255 |
bool header_nx; |
6293 |
bool header_nx; |
|
Lines 6259-6264
add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename,
Link Here
|
| 6259 |
rbtdb_rdatatype_t negtype, sigtype; |
6297 |
rbtdb_rdatatype_t negtype, sigtype; |
| 6260 |
dns_trust_t trust; |
6298 |
dns_trust_t trust; |
| 6261 |
int idx; |
6299 |
int idx; |
|
|
6300 |
uint32_t ntypes = 0; |
| 6262 |
|
6301 |
|
| 6263 |
/* |
6302 |
/* |
| 6264 |
* Add an rdatasetheader_t to a node. |
6303 |
* Add an rdatasetheader_t to a node. |
|
Lines 6334-6339
add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename,
Link Here
|
| 6334 |
{ |
6373 |
{ |
| 6335 |
if (topheader->type == sigtype) { |
6374 |
if (topheader->type == sigtype) { |
| 6336 |
sigheader = topheader; |
6375 |
sigheader = topheader; |
|
|
6376 |
break; |
| 6337 |
} |
6377 |
} |
| 6338 |
} |
6378 |
} |
| 6339 |
negtype = RBTDB_RDATATYPE_VALUE(covers, 0); |
6379 |
negtype = RBTDB_RDATATYPE_VALUE(covers, 0); |
|
Lines 6396-6402
add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename,
Link Here
|
| 6396 |
for (topheader = rbtnode->data; topheader != NULL; |
6436 |
for (topheader = rbtnode->data; topheader != NULL; |
| 6397 |
topheader = topheader->next) |
6437 |
topheader = topheader->next) |
| 6398 |
{ |
6438 |
{ |
| 6399 |
if (prio_type(topheader->type)) { |
6439 |
if (IS_CACHE(rbtdb) && ACTIVE(topheader, now)) { |
|
|
6440 |
++ntypes; |
| 6441 |
expireheader = topheader; |
| 6442 |
} else if (!IS_CACHE(rbtdb)) { |
| 6443 |
++ntypes; |
| 6444 |
} |
| 6445 |
if (prio_header(topheader)) { |
| 6400 |
prioheader = topheader; |
6446 |
prioheader = topheader; |
| 6401 |
} |
6447 |
} |
| 6402 |
if (topheader->type == newheader->type || |
6448 |
if (topheader->type == newheader->type || |
|
Lines 6486-6492
find_header:
Link Here
|
| 6486 |
rbtdb->common.mctx, |
6532 |
rbtdb->common.mctx, |
| 6487 |
rbtdb->common.rdclass, |
6533 |
rbtdb->common.rdclass, |
| 6488 |
(dns_rdatatype_t)header->type, flags, |
6534 |
(dns_rdatatype_t)header->type, flags, |
| 6489 |
&merged); |
6535 |
rbtdb->maxrrperset, &merged); |
| 6490 |
} |
6536 |
} |
| 6491 |
if (result == ISC_R_SUCCESS) { |
6537 |
if (result == ISC_R_SUCCESS) { |
| 6492 |
/* |
6538 |
/* |
|
Lines 6765-6773
find_header:
Link Here
|
| 6765 |
/* |
6811 |
/* |
| 6766 |
* No rdatasets of the given type exist at the node. |
6812 |
* No rdatasets of the given type exist at the node. |
| 6767 |
*/ |
6813 |
*/ |
|
|
6814 |
if (!IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) { |
| 6815 |
free_rdataset(rbtdb, rbtdb->common.mctx, |
| 6816 |
newheader); |
| 6817 |
return (DNS_R_TOOMANYRECORDS); |
| 6818 |
} |
| 6819 |
|
| 6768 |
newheader->down = NULL; |
6820 |
newheader->down = NULL; |
| 6769 |
|
6821 |
|
| 6770 |
if (prio_type(newheader->type)) { |
6822 |
if (prio_header(newheader)) { |
| 6771 |
/* This is a priority type, prepend it */ |
6823 |
/* This is a priority type, prepend it */ |
| 6772 |
newheader->next = rbtnode->data; |
6824 |
newheader->next = rbtnode->data; |
| 6773 |
rbtnode->data = newheader; |
6825 |
rbtnode->data = newheader; |
|
Lines 6780-6785
find_header:
Link Here
|
| 6780 |
newheader->next = rbtnode->data; |
6832 |
newheader->next = rbtnode->data; |
| 6781 |
rbtnode->data = newheader; |
6833 |
rbtnode->data = newheader; |
| 6782 |
} |
6834 |
} |
|
|
6835 |
|
| 6836 |
if (IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) { |
| 6837 |
if (expireheader == NULL) { |
| 6838 |
expireheader = newheader; |
| 6839 |
} |
| 6840 |
if (NEGATIVE(newheader) && |
| 6841 |
!prio_header(newheader)) |
| 6842 |
{ |
| 6843 |
/* |
| 6844 |
* Add the new non-priority negative |
| 6845 |
* header to the database only |
| 6846 |
* temporarily. |
| 6847 |
*/ |
| 6848 |
expireheader = newheader; |
| 6849 |
} |
| 6850 |
|
| 6851 |
set_ttl(rbtdb, expireheader, 0); |
| 6852 |
mark_header_ancient(rbtdb, expireheader); |
| 6853 |
/* |
| 6854 |
* FIXME: In theory, we should mark the RRSIG |
| 6855 |
* and the header at the same time, but there is |
| 6856 |
* no direct link between those two header, so |
| 6857 |
* we would have to check the whole list again. |
| 6858 |
*/ |
| 6859 |
} |
| 6783 |
} |
6860 |
} |
| 6784 |
} |
6861 |
} |
| 6785 |
|
6862 |
|
|
Lines 6825-6831
delegating_type(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node,
Link Here
|
| 6825 |
|
6902 |
|
| 6826 |
static isc_result_t |
6903 |
static isc_result_t |
| 6827 |
addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, |
6904 |
addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, |
| 6828 |
dns_rdataset_t *rdataset) { |
6905 |
uint32_t maxrrperset, dns_rdataset_t *rdataset) { |
| 6829 |
struct noqname *noqname; |
6906 |
struct noqname *noqname; |
| 6830 |
isc_mem_t *mctx = rbtdb->common.mctx; |
6907 |
isc_mem_t *mctx = rbtdb->common.mctx; |
| 6831 |
dns_name_t name; |
6908 |
dns_name_t name; |
|
Lines 6846-6857
addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader,
Link Here
|
| 6846 |
noqname->negsig = NULL; |
6923 |
noqname->negsig = NULL; |
| 6847 |
noqname->type = neg.type; |
6924 |
noqname->type = neg.type; |
| 6848 |
dns_name_dup(&name, mctx, &noqname->name); |
6925 |
dns_name_dup(&name, mctx, &noqname->name); |
| 6849 |
result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0); |
6926 |
result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0, maxrrperset); |
| 6850 |
if (result != ISC_R_SUCCESS) { |
6927 |
if (result != ISC_R_SUCCESS) { |
| 6851 |
goto cleanup; |
6928 |
goto cleanup; |
| 6852 |
} |
6929 |
} |
| 6853 |
noqname->neg = r.base; |
6930 |
noqname->neg = r.base; |
| 6854 |
result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0); |
6931 |
result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0, maxrrperset); |
| 6855 |
if (result != ISC_R_SUCCESS) { |
6932 |
if (result != ISC_R_SUCCESS) { |
| 6856 |
goto cleanup; |
6933 |
goto cleanup; |
| 6857 |
} |
6934 |
} |
|
Lines 6870-6876
cleanup:
Link Here
|
| 6870 |
|
6947 |
|
| 6871 |
static isc_result_t |
6948 |
static isc_result_t |
| 6872 |
addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, |
6949 |
addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, |
| 6873 |
dns_rdataset_t *rdataset) { |
6950 |
uint32_t maxrrperset, dns_rdataset_t *rdataset) { |
| 6874 |
struct noqname *closest; |
6951 |
struct noqname *closest; |
| 6875 |
isc_mem_t *mctx = rbtdb->common.mctx; |
6952 |
isc_mem_t *mctx = rbtdb->common.mctx; |
| 6876 |
dns_name_t name; |
6953 |
dns_name_t name; |
|
Lines 6891-6902
addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader,
Link Here
|
| 6891 |
closest->negsig = NULL; |
6968 |
closest->negsig = NULL; |
| 6892 |
closest->type = neg.type; |
6969 |
closest->type = neg.type; |
| 6893 |
dns_name_dup(&name, mctx, &closest->name); |
6970 |
dns_name_dup(&name, mctx, &closest->name); |
| 6894 |
result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0); |
6971 |
result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0, maxrrperset); |
| 6895 |
if (result != ISC_R_SUCCESS) { |
6972 |
if (result != ISC_R_SUCCESS) { |
| 6896 |
goto cleanup; |
6973 |
goto cleanup; |
| 6897 |
} |
6974 |
} |
| 6898 |
closest->neg = r.base; |
6975 |
closest->neg = r.base; |
| 6899 |
result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0); |
6976 |
result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0, maxrrperset); |
| 6900 |
if (result != ISC_R_SUCCESS) { |
6977 |
if (result != ISC_R_SUCCESS) { |
| 6901 |
goto cleanup; |
6978 |
goto cleanup; |
| 6902 |
} |
6979 |
} |
|
Lines 6977-6983
addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
Link Here
|
| 6977 |
} |
7054 |
} |
| 6978 |
|
7055 |
|
| 6979 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
7056 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
| 6980 |
®ion, sizeof(rdatasetheader_t)); |
7057 |
®ion, sizeof(rdatasetheader_t), |
|
|
7058 |
rbtdb->maxrrperset); |
| 6981 |
if (result != ISC_R_SUCCESS) { |
7059 |
if (result != ISC_R_SUCCESS) { |
| 6982 |
return (result); |
7060 |
return (result); |
| 6983 |
} |
7061 |
} |
|
Lines 7035-7041
addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
Link Here
|
| 7035 |
RDATASET_ATTR_SET(newheader, RDATASET_ATTR_OPTOUT); |
7113 |
RDATASET_ATTR_SET(newheader, RDATASET_ATTR_OPTOUT); |
| 7036 |
} |
7114 |
} |
| 7037 |
if ((rdataset->attributes & DNS_RDATASETATTR_NOQNAME) != 0) { |
7115 |
if ((rdataset->attributes & DNS_RDATASETATTR_NOQNAME) != 0) { |
| 7038 |
result = addnoqname(rbtdb, newheader, rdataset); |
7116 |
result = addnoqname(rbtdb, newheader, |
|
|
7117 |
rbtdb->maxrrperset, rdataset); |
| 7039 |
if (result != ISC_R_SUCCESS) { |
7118 |
if (result != ISC_R_SUCCESS) { |
| 7040 |
free_rdataset(rbtdb, rbtdb->common.mctx, |
7119 |
free_rdataset(rbtdb, rbtdb->common.mctx, |
| 7041 |
newheader); |
7120 |
newheader); |
|
Lines 7043-7049
addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
Link Here
|
| 7043 |
} |
7122 |
} |
| 7044 |
} |
7123 |
} |
| 7045 |
if ((rdataset->attributes & DNS_RDATASETATTR_CLOSEST) != 0) { |
7124 |
if ((rdataset->attributes & DNS_RDATASETATTR_CLOSEST) != 0) { |
| 7046 |
result = addclosest(rbtdb, newheader, rdataset); |
7125 |
result = addclosest(rbtdb, newheader, |
|
|
7126 |
rbtdb->maxrrperset, rdataset); |
| 7047 |
if (result != ISC_R_SUCCESS) { |
7127 |
if (result != ISC_R_SUCCESS) { |
| 7048 |
free_rdataset(rbtdb, rbtdb->common.mctx, |
7128 |
free_rdataset(rbtdb, rbtdb->common.mctx, |
| 7049 |
newheader); |
7129 |
newheader); |
|
Lines 7188-7194
subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
Link Here
|
| 7188 |
nodefullname(db, node, nodename); |
7268 |
nodefullname(db, node, nodename); |
| 7189 |
|
7269 |
|
| 7190 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
7270 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
| 7191 |
®ion, sizeof(rdatasetheader_t)); |
7271 |
®ion, sizeof(rdatasetheader_t), |
|
|
7272 |
0); |
| 7192 |
if (result != ISC_R_SUCCESS) { |
7273 |
if (result != ISC_R_SUCCESS) { |
| 7193 |
return (result); |
7274 |
return (result); |
| 7194 |
} |
7275 |
} |
|
Lines 7570-7576
loading_addrdataset(void *arg, const dns_name_t *name,
Link Here
|
| 7570 |
} |
7651 |
} |
| 7571 |
|
7652 |
|
| 7572 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
7653 |
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, |
| 7573 |
®ion, sizeof(rdatasetheader_t)); |
7654 |
®ion, sizeof(rdatasetheader_t), |
|
|
7655 |
rbtdb->maxrrperset); |
| 7574 |
if (result != ISC_R_SUCCESS) { |
7656 |
if (result != ISC_R_SUCCESS) { |
| 7575 |
return (result); |
7657 |
return (result); |
| 7576 |
} |
7658 |
} |
|
Lines 8112-8117
setgluecachestats(dns_db_t *db, isc_stats_t *stats) {
Link Here
|
| 8112 |
return (ISC_R_SUCCESS); |
8194 |
return (ISC_R_SUCCESS); |
| 8113 |
} |
8195 |
} |
| 8114 |
|
8196 |
|
|
|
8197 |
static void |
| 8198 |
setmaxrrperset(dns_db_t *db, uint32_t maxrrperset) { |
| 8199 |
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; |
| 8200 |
|
| 8201 |
REQUIRE(VALID_RBTDB(rbtdb)); |
| 8202 |
|
| 8203 |
rbtdb->maxrrperset = maxrrperset; |
| 8204 |
} |
| 8205 |
|
| 8206 |
static void |
| 8207 |
setmaxtypepername(dns_db_t *db, uint32_t maxtypepername) { |
| 8208 |
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; |
| 8209 |
|
| 8210 |
REQUIRE(VALID_RBTDB(rbtdb)); |
| 8211 |
|
| 8212 |
rbtdb->maxtypepername = maxtypepername; |
| 8213 |
} |
| 8214 |
|
| 8115 |
static dns_stats_t * |
8215 |
static dns_stats_t * |
| 8116 |
getrrsetstats(dns_db_t *db) { |
8216 |
getrrsetstats(dns_db_t *db) { |
| 8117 |
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; |
8217 |
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; |
|
Lines 8233-8239
static dns_dbmethods_t zone_methods = { attach,
Link Here
|
| 8233 |
NULL, /* getservestalettl */ |
8333 |
NULL, /* getservestalettl */ |
| 8234 |
NULL, /* setservestalerefresh */ |
8334 |
NULL, /* setservestalerefresh */ |
| 8235 |
NULL, /* getservestalerefresh */ |
8335 |
NULL, /* getservestalerefresh */ |
| 8236 |
setgluecachestats }; |
8336 |
setgluecachestats, |
|
|
8337 |
setmaxrrperset, |
| 8338 |
setmaxtypepername }; |
| 8237 |
|
8339 |
|
| 8238 |
static dns_dbmethods_t cache_methods = { attach, |
8340 |
static dns_dbmethods_t cache_methods = { attach, |
| 8239 |
detach, |
8341 |
detach, |
|
Lines 8283-8289
static dns_dbmethods_t cache_methods = { attach,
Link Here
|
| 8283 |
getservestalettl, |
8385 |
getservestalettl, |
| 8284 |
setservestalerefresh, |
8386 |
setservestalerefresh, |
| 8285 |
getservestalerefresh, |
8387 |
getservestalerefresh, |
| 8286 |
NULL }; |
8388 |
NULL, |
|
|
8389 |
setmaxrrperset, |
| 8390 |
setmaxtypepername }; |
| 8287 |
|
8391 |
|
| 8288 |
isc_result_t |
8392 |
isc_result_t |
| 8289 |
dns_rbtdb_create(isc_mem_t *mctx, const dns_name_t *origin, dns_dbtype_t type, |
8393 |
dns_rbtdb_create(isc_mem_t *mctx, const dns_name_t *origin, dns_dbtype_t type, |