Lines Matching refs:adbname
863 * Requires the adbname bucket be locked and that no entry buckets be locked.
868 import_rdataset(dns_adbname_t *adbname, dns_rdataset_t *rdataset,
886 INSIST(DNS_ADBNAME_VALID(adbname));
887 adb = adbname->adb;
909 hookhead = &adbname->v4;
914 hookhead = &adbname->v6;
920 adbname->partial_result |= findoptions;
932 adbname->partial_result |= findoptions;
982 adbname->expire_v4, now + rdataset->ttl);
983 adbname->expire_v4 = ISC_MIN(adbname->expire_v4,
988 adbname->expire_v6, now + rdataset->ttl);
989 adbname->expire_v6 = ISC_MIN(adbname->expire_v6,
1517 find->adbname = NULL;
1913 h->adbname = NULL;
1979 INSIST(find->adbname == NULL);
2040 dns_adbname_t *adbname;
2054 adbname = ISC_LIST_HEAD(adb->names[bucket]);
2055 while (adbname != NULL) {
2056 if (!NAME_DEAD(adbname)) {
2057 if (dns_name_equal(name, &adbname->name)
2058 && GLUEHINT_OK(adbname, options)
2059 && STARTATZONE_MATCHES(adbname, options))
2060 return (adbname);
2062 adbname = ISC_LIST_NEXT(adbname, plink);
2699 MPINIT(dns_adbname_t, adb->nmp, "adbname");
2949 dns_adbname_t *adbname;
3026 adbname = find_name_and_lock(adb, name, find->options, &bucket);
3037 * Nothing found. Allocate a new adbname structure for this name.
3039 if (adbname == NULL) {
3046 adbname = new_adbname(adb, name);
3047 if (adbname == NULL) {
3052 link_name(adb, bucket, adbname);
3054 adbname->flags |= NAME_HINT_OK;
3056 adbname->flags |= NAME_GLUE_OK;
3058 adbname->flags |= NAME_STARTATZONE;
3061 ISC_LIST_UNLINK(adb->names[bucket], adbname, plink);
3062 ISC_LIST_PREPEND(adb->names[bucket], adbname, plink);
3064 adbname->last_used = now;
3069 RUNTIME_CHECK(check_expire_namehooks(adbname, now) == ISC_FALSE);
3074 if (!EXPIRE_OK(adbname->expire_target, now)) {
3080 namebuf, adbname);
3090 if (!NAME_HAS_V4(adbname) && EXPIRE_OK(adbname->expire_v4, now)
3092 result = dbfind_name(adbname, now, dns_rdatatype_a);
3096 namebuf, adbname);
3106 namebuf, adbname);
3125 if (!NAME_FETCH_V4(adbname))
3130 if (!NAME_HAS_V6(adbname) && EXPIRE_OK(adbname->expire_v6, now)
3132 result = dbfind_name(adbname, now, dns_rdatatype_aaaa);
3136 namebuf, adbname);
3146 namebuf, adbname);
3158 if (!NAME_FETCH_V6(adbname))
3163 if ((WANT_INET(wanted_addresses) && NAME_HAS_V4(adbname)) ||
3164 (WANT_INET6(wanted_addresses) && NAME_HAS_V6(adbname)))
3184 fetch_name(adbname, start_at_zone, depth, qc,
3188 namebuf, adbname);
3195 fetch_name(adbname, start_at_zone, depth, qc,
3199 namebuf, adbname);
3207 copy_namehook_lists(adb, find, qname, qtype, adbname, now);
3210 if (NAME_FETCH_V4(adbname))
3212 if (NAME_FETCH_V6(adbname))
3229 find->adbname = adbname;
3231 ISC_LIST_APPEND(adbname->finds, find, plink);
3235 DP(DEF_LEVEL, "createfind: attaching find %p to adbname %p",
3236 find, adbname);
3250 find->partial_result |= (adbname->partial_result & wanted_addresses);
3253 result = dns_name_copy(&adbname->target, target, NULL);
3264 find->result_v4 = find_err_map[adbname->fetch_err];
3265 find->result_v6 = find_err_map[adbname->fetch6_err];
3369 * We need to get the adbname's lock to unlink the find.
3375 ISC_LIST_UNLINK(find->adbname->finds, find, plink);
3376 find->adbname = NULL;
3592 find->name_bucket, find->adbname, find->event.ev_sender);
3678 dbfind_name(dns_adbname_t *adbname, isc_stdtime_t now, dns_rdatatype_t rdtype)
3686 INSIST(DNS_ADBNAME_VALID(adbname));
3687 adb = adbname->adb;
3696 adbname->fetch_err = FIND_ERR_UNEXPECTED;
3698 adbname->fetch6_err = FIND_ERR_UNEXPECTED;
3708 result = dns_view_find2(adb->view, &adbname->name, rdtype, now,
3709 NAME_GLUEOK(adbname) ? DNS_DBFIND_GLUEOK : 0,
3710 ISC_TF(NAME_HINTOK(adbname)),
3711 (adbname->flags & NAME_STARTATZONE) != 0 ?
3726 adbname->fetch_err = FIND_ERR_SUCCESS;
3728 adbname->fetch6_err = FIND_ERR_SUCCESS;
3729 result = import_rdataset(adbname, &rdataset, now);
3742 adbname->expire_v4 = now + 30;
3745 adbname);
3747 adbname->fetch_err = FIND_ERR_NXDOMAIN;
3749 adbname->fetch_err = FIND_ERR_NXRRSET;
3753 adbname);
3754 adbname->expire_v6 = now + 30;
3756 adbname->fetch6_err = FIND_ERR_NXDOMAIN;
3758 adbname->fetch6_err = FIND_ERR_NXRRSET;
3769 adbname->expire_v4 = rdataset.ttl + now;
3771 adbname->fetch_err = FIND_ERR_NXDOMAIN;
3773 adbname->fetch_err = FIND_ERR_NXRRSET;
3776 adbname, rdataset.ttl);
3780 adbname, rdataset.ttl);
3781 adbname->expire_v6 = rdataset.ttl + now;
3783 adbname->fetch6_err = FIND_ERR_NXDOMAIN;
3785 adbname->fetch6_err = FIND_ERR_NXRRSET;
3794 adbname->flags &= ~(DNS_ADBFIND_GLUEOK | DNS_ADBFIND_HINTOK);
3797 clean_target(adb, &adbname->target);
3798 adbname->expire_target = INT_MAX;
3799 result = set_target(adb, &adbname->name, fname, &rdataset,
3800 &adbname->target);
3805 adbname);
3806 adbname->expire_target = rdataset.ttl + now;
3809 adbname->fetch_err = FIND_ERR_SUCCESS;
3811 adbname->fetch6_err = FIND_ERR_SUCCESS;
4003 fetch_name(dns_adbname_t *adbname, isc_boolean_t start_at_zone,
4015 INSIST(DNS_ADBNAME_VALID(adbname));
4016 adb = adbname->adb;
4019 INSIST((type == dns_rdatatype_a && !NAME_FETCH_V4(adbname)) ||
4020 (type == dns_rdatatype_aaaa && !NAME_FETCH_V6(adbname)));
4022 adbname->fetch_err = FIND_ERR_NOTFOUND;
4032 adbname);
4035 result = dns_view_findzonecut2(adb->view, &adbname->name, name,
4051 result = dns_resolver_createfetch3(adb->view->resolver, &adbname->name,
4054 adb->task, fetch_callback, adbname,
4061 adbname->fetch_a = fetch;
4064 adbname->fetch_aaaa = fetch;
4683 dns_adbname_t *adbname;
4693 adbname = ISC_LIST_HEAD(adb->names[bucket]);
4694 while (adbname != NULL) {
4695 nextname = ISC_LIST_NEXT(adbname, plink);
4696 if (!NAME_DEAD(adbname) &&
4697 dns_name_equal(name, &adbname->name)) {
4698 RUNTIME_CHECK(kill_name(&adbname,
4702 adbname = nextname;
4710 dns_adbname_t *adbname, *nextname;
4719 adbname = ISC_LIST_HEAD(adb->names[i]);
4720 while (adbname != NULL) {
4722 nextname = ISC_LIST_NEXT(adbname, plink);
4723 if (!NAME_DEAD(adbname) &&
4724 dns_name_issubdomain(&adbname->name, name))
4726 ret = kill_name(&adbname,
4730 adbname = nextname;