• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/bind9-45.101/bind9/bin/dig/

Lines Matching refs:lookup

351 cancel_lookup(dig_lookup_t *lookup);
558 * Create a server structure, which is part of the lookup structure.
716 * Create an empty lookup structure, which holds all the information needed
802 * Clone a lookup, perhaps copying the server list. This does not clone
804 * function, nor does it queue up the new lookup for processing.
880 * Requeue a lookup for further processing, perhaps copying the server
881 * list. The new lookup structure is returned to the caller, and is
884 * completion of the event may result in the next entry on the lookup
1441 * and the lookup list is empty.
1444 * a whole or reseed the lookup list.
1465 dig_lookup_t *lookup;
1471 lookup = query->lookup;
1473 if (lookup->current_query == query)
1474 lookup->current_query = NULL;
1476 ISC_LIST_UNLINK(lookup->q, query, link);
1499 * Try and clear out a lookup if we're done with it. Return ISC_TRUE if
1500 * the lookup was successfully cleared. If ISC_TRUE is returned, the
1501 * lookup pointer has been invalidated.
1504 try_clear_lookup(dig_lookup_t *lookup) {
1507 REQUIRE(lookup != NULL);
1509 debug("try_clear_lookup(%p)", lookup);
1511 if (ISC_LIST_HEAD(lookup->q) != NULL) {
1513 q = ISC_LIST_HEAD(lookup->q);
1523 * At this point, we know there are no queries on the lookup,
1526 destroy_lookup(lookup);
1531 destroy_lookup(dig_lookup_t *lookup) {
1536 s = ISC_LIST_HEAD(lookup->my_server_list);
1538 debug("freeing server %p belonging to %p", s, lookup);
1541 ISC_LIST_DEQUEUE(lookup->my_server_list,
1545 if (lookup->sendmsg != NULL)
1546 dns_message_destroy(&lookup->sendmsg);
1547 if (lookup->querysig != NULL) {
1548 debug("freeing buffer %p", lookup->querysig);
1549 isc_buffer_free(&lookup->querysig);
1551 if (lookup->timer != NULL)
1552 isc_timer_detach(&lookup->timer);
1553 if (lookup->sendspace != NULL)
1554 isc_mempool_put(commctx, lookup->sendspace);
1556 if (lookup->tsigctx != NULL)
1557 dst_context_destroy(&lookup->tsigctx);
1559 isc_mem_free(mctx, lookup);
1563 * If we can, start the next lookup in the queue running.
1564 * This assumes that the lookup on the head of the queue hasn't been
1565 * started yet. It also removes the lookup from the head of the queue,
1575 * If there's a current lookup running, we really shouldn't get
1582 * Put the current lookup somewhere so cancel_all can find it
1676 * If we can, clear the current lookup and start the next one running.
1677 * This calls try_clear_lookup, so may invalidate the lookup pointer.
1680 check_next_lookup(dig_lookup_t *lookup) {
1684 debug("check_next_lookup(%p)", lookup);
1686 if (ISC_LIST_HEAD(lookup->q) != NULL) {
1690 if (try_clear_lookup(lookup)) {
1697 * Create and queue a new lookup as a followup to the current lookup,
1699 * name server search modes to start a new lookup using servers from
1705 dig_lookup_t *lookup = NULL;
1721 debug("following up %s", query->lookup->textname);
1746 if (query->lookup->trace && !query->lookup->trace_root) {
1751 domain = dns_fixedname_name(&query->lookup->fdomain);
1772 if (query->lookup->trace_root &&
1773 query->lookup->nsfound >= MXSERV)
1778 query->lookup->nsfound++;
1784 /* Initialize lookup if we've not yet */
1789 lookup = requeue_lookup(query->lookup,
1791 cancel_lookup(query->lookup);
1792 lookup->doing_xfr = ISC_FALSE;
1793 if (!lookup->trace_root &&
1795 lookup->trace = ISC_FALSE;
1797 lookup->trace = query->lookup->trace;
1798 lookup->ns_search_only =
1799 query->lookup->ns_search_only;
1800 lookup->trace_root = ISC_FALSE;
1801 if (lookup->ns_search_only)
1802 lookup->recurse = ISC_FALSE;
1803 domain = dns_fixedname_name(&lookup->fdomain);
1807 num = getaddresses(lookup, namestr, &lresult);
1825 if (lookup == NULL &&
1827 (query->lookup->trace || query->lookup->ns_search_only))
1841 for (srv = ISC_LIST_HEAD(lookup->my_server_list);
1843 srv = ISC_LIST_HEAD(lookup->my_server_list)) {
1852 ISC_LIST_DEQUEUE(lookup->my_server_list, srv, link);
1856 ISC_LIST_APPENDLIST(lookup->my_server_list,
1864 * Create and queue a new lookup using the next origin from the search
1871 dig_lookup_t *lookup;
1877 debug("following up %s", query->lookup->textname);
1885 if (query->lookup->origin == NULL && !query->lookup->need_search)
1890 if (query->lookup->origin == NULL && query->lookup->need_search) {
1891 lookup = requeue_lookup(query->lookup, ISC_TRUE);
1892 lookup->origin = ISC_LIST_HEAD(search_list);
1893 lookup->need_search = ISC_FALSE;
1895 search = ISC_LIST_NEXT(query->lookup->origin, link);
1896 if (search == NULL && query->lookup->done_as_is)
1898 lookup = requeue_lookup(query->lookup, ISC_TRUE);
1899 lookup->origin = search;
1901 cancel_lookup(query->lookup);
1906 * Insert an SOA record into the sendmessage in a lookup. Used for
1910 insert_soa(dig_lookup_t *lookup) {
1920 soa.serial = lookup->ixfr_serial;
1925 soa.common.rdclass = lookup->rdclass;
1934 isc_buffer_init(&lookup->rdatabuf, lookup->rdatastore,
1935 sizeof(lookup->rdatastore));
1937 result = dns_message_gettemprdata(lookup->sendmsg, &rdata);
1940 result = dns_rdata_fromstruct(rdata, lookup->rdclass,
1942 &lookup->rdatabuf);
1945 result = dns_message_gettemprdatalist(lookup->sendmsg, &rdatalist);
1948 result = dns_message_gettemprdataset(lookup->sendmsg, &rdataset);
1953 rdatalist->rdclass = lookup->rdclass;
1962 result = dns_message_gettempname(lookup->sendmsg, &soaname);
1965 dns_name_clone(lookup->name, soaname);
1968 dns_message_addname(lookup->sendmsg, soaname, DNS_SECTION_AUTHORITY);
1972 * Setup the supplied lookup structure, making it ready to start sending
1978 setup_lookup(dig_lookup_t *lookup) {
1997 REQUIRE(lookup != NULL);
2000 debug("setup_lookup(%p)", lookup);
2003 &lookup->sendmsg);
2006 if (lookup->new_search) {
2007 debug("resetting lookup counter.");
2011 if (ISC_LIST_EMPTY(lookup->my_server_list)) {
2013 clone_server_list(server_list, &lookup->my_server_list);
2015 result = dns_message_gettempname(lookup->sendmsg, &lookup->name);
2017 dns_name_init(lookup->name, NULL);
2019 isc_buffer_init(&lookup->namebuf, lookup->namespace,
2020 sizeof(lookup->namespace));
2021 isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
2022 sizeof(lookup->onamespace));
2030 mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
2037 * (which produces an absolute lookup). Otherwise, take the origin
2042 if (lookup->new_search) {
2045 lookup->origin = NULL; /* Force abs lookup */
2046 lookup->done_as_is = ISC_TRUE;
2047 lookup->need_search = usesearch;
2048 } else if (lookup->origin == NULL && usesearch) {
2049 lookup->origin = ISC_LIST_HEAD(search_list);
2050 lookup->need_search = ISC_FALSE;
2053 if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
2054 lookup->origin = NULL; /* Force abs lookup */
2055 lookup->done_as_is = ISC_TRUE;
2056 lookup->need_search = usesearch;
2057 } else if (lookup->origin == NULL && usesearch) {
2058 lookup->origin = ISC_LIST_HEAD(search_list);
2059 lookup->need_search = ISC_FALSE;
2065 if (lookup->origin != NULL) {
2067 lookup->origin->origin, utf8_origin,
2079 if (lookup->origin != NULL) {
2080 debug("trying origin %s", lookup->origin->origin);
2081 result = dns_message_gettempname(lookup->sendmsg,
2082 &lookup->oname);
2084 dns_name_init(lookup->oname, NULL);
2086 len = strlen(lookup->origin->origin);
2087 isc_buffer_init(&b, lookup->origin->origin, len);
2089 result = dns_name_fromtext(lookup->oname, &b, dns_rootname,
2090 0, &lookup->onamebuf);
2092 dns_message_puttempname(lookup->sendmsg,
2093 &lookup->name);
2094 dns_message_puttempname(lookup->sendmsg,
2095 &lookup->oname);
2097 lookup->origin->origin,
2100 if (lookup->trace && lookup->trace_root) {
2101 dns_name_clone(dns_rootname, lookup->name);
2103 len = strlen(lookup->textname);
2104 isc_buffer_init(&b, lookup->textname, len);
2106 result = dns_name_fromtext(lookup->name, &b,
2107 lookup->oname, 0,
2108 &lookup->namebuf);
2111 dns_message_puttempname(lookup->sendmsg,
2112 &lookup->name);
2113 dns_message_puttempname(lookup->sendmsg,
2114 &lookup->oname);
2116 lookup->textname, isc_result_totext(result));
2118 dns_message_puttempname(lookup->sendmsg, &lookup->oname);
2123 if (lookup->trace && lookup->trace_root)
2124 dns_name_clone(dns_rootname, lookup->name);
2130 result = dns_name_fromtext(lookup->name, &b,
2132 &lookup->namebuf);
2134 len = strlen(lookup->textname);
2135 isc_buffer_init(&b, lookup->textname, len);
2137 result = dns_name_fromtext(lookup->name, &b,
2139 &lookup->namebuf);
2143 dns_message_puttempname(lookup->sendmsg,
2144 &lookup->name);
2147 "(%s)", lookup->textname,
2151 dns_name_format(lookup->name, store, sizeof(store));
2152 trying(store, lookup);
2153 INSIST(dns_name_isabsolute(lookup->name));
2156 lookup->sendmsg->id = (unsigned short)id & 0xFFFF;
2157 lookup->sendmsg->opcode = dns_opcode_query;
2158 lookup->msgcounter = 0;
2163 if (lookup->trace || (lookup->ns_search_only && !lookup->trace_root))
2164 lookup->recurse = ISC_FALSE;
2166 if (lookup->recurse &&
2167 lookup->rdtype != dns_rdatatype_axfr &&
2168 lookup->rdtype != dns_rdatatype_ixfr) {
2170 lookup->sendmsg->flags |= DNS_MESSAGEFLAG_RD;
2174 if (lookup->aaonly) {
2176 lookup->sendmsg->flags |= DNS_MESSAGEFLAG_AA;
2179 if (lookup->adflag) {
2181 lookup->sendmsg->flags |= DNS_MESSAGEFLAG_AD;
2184 if (lookup->cdflag) {
2186 lookup->sendmsg->flags |= DNS_MESSAGEFLAG_CD;
2189 dns_message_addname(lookup->sendmsg, lookup->name,
2192 if (lookup->trace && lookup->trace_root) {
2193 lookup->qrdtype = lookup->rdtype;
2194 lookup->rdtype = dns_rdatatype_ns;
2197 if ((lookup->rdtype == dns_rdatatype_axfr) ||
2198 (lookup->rdtype == dns_rdatatype_ixfr)) {
2202 if (lookup->rdtype == dns_rdatatype_axfr) {
2203 lookup->doing_xfr = ISC_TRUE;
2204 lookup->tcp_mode = ISC_TRUE;
2205 } else if (lookup->tcp_mode) {
2206 lookup->doing_xfr = ISC_TRUE;
2210 add_question(lookup->sendmsg, lookup->name, lookup->rdclass,
2211 lookup->rdtype);
2214 if (lookup->rdtype == dns_rdatatype_ixfr)
2215 insert_soa(lookup);
2218 lookup->tsigctx = NULL;
2219 lookup->querysig = NULL;
2222 result = dns_message_settsigkey(lookup->sendmsg, key);
2226 lookup->sendspace = isc_mempool_get(commctx);
2227 if (lookup->sendspace == NULL)
2234 isc_buffer_init(&lookup->renderbuf, lookup->sendspace, COMMSIZE);
2235 result = dns_message_renderbegin(lookup->sendmsg, &cctx,
2236 &lookup->renderbuf);
2238 if (lookup->udpsize > 0 || lookup->dnssec || lookup->edns > -1) {
2239 if (lookup->udpsize == 0)
2240 lookup->udpsize = 4096;
2241 if (lookup->edns < 0)
2242 lookup->edns = 0;
2243 add_opt(lookup->sendmsg, lookup->udpsize,
2244 lookup->edns, lookup->dnssec, lookup->nsid);
2247 result = dns_message_rendersection(lookup->sendmsg,
2250 result = dns_message_rendersection(lookup->sendmsg,
2253 result = dns_message_renderend(lookup->sendmsg);
2262 if (isc_buffer_usedlength(&lookup->renderbuf) > 512)
2263 lookup->tcp_mode = ISC_TRUE;
2265 lookup->pending = ISC_FALSE;
2267 for (serv = ISC_LIST_HEAD(lookup->my_server_list);
2274 debug("create query %p linked to lookup %p",
2275 query, lookup);
2276 query->lookup = lookup;
2304 query->sendbuf = lookup->renderbuf;
2307 ISC_LIST_ENQUEUE(lookup->q, query, link);
2310 if (!ISC_LIST_EMPTY(lookup->q) && qr) {
2312 printmessage(ISC_LIST_HEAD(lookup->q), lookup->sendmsg,
2346 l = query->lookup;
2365 * Cancel a lookup, sending isc_socket_cancel() requests to all outstanding
2367 * query and lookup structures
2370 cancel_lookup(dig_lookup_t *lookup) {
2374 query = ISC_LIST_HEAD(lookup->q);
2386 if (lookup->timer != NULL)
2387 isc_timer_detach(&lookup->timer);
2388 lookup->pending = ISC_FALSE;
2389 lookup->retries = 0;
2404 l = query->lookup;
2452 * query. When we retry TCP, we requeue the whole lookup, which should
2463 l = query->lookup;
2465 query->lookup->current_query = query;
2484 l = query->lookup;
2541 l = query->lookup;
2544 debug("working on lookup %p, query %p", query->lookup, query);
2575 debug("recving with lookup=%p, query=%p, sock=%p",
2576 query->lookup, query, query->sock);
2599 * new TCP lookup. Otherwise, cancel the lookup.
2618 if ((query != NULL) && (query->lookup->current_query != NULL) &&
2619 (ISC_LIST_NEXT(query->lookup->current_query, link) != NULL)) {
2621 cq = query->lookup->current_query;
2692 l = query->lookup;
2704 l = query->lookup;
2732 debug("recving with lookup=%p, query=%p", query->lookup, query);
2756 if (!query->lookup->pending) {
2763 l = query->lookup;
2797 check_next_lookup(query->lookup);
2836 l = query->lookup;
2851 query->servname, query->lookup->textname,
2862 l = query->lookup;
2895 isc_uint32_t ixfr_serial = query->lookup->ixfr_serial, serial;
2897 isc_boolean_t ixfr = query->lookup->rdtype == dns_rdatatype_ixfr;
2898 isc_boolean_t axfr = query->lookup->rdtype == dns_rdatatype_axfr;
3063 debug("lookup=%p, query=%p", query->lookup, query);
3065 l = query->lookup;
3286 n->origin = query->lookup->origin;
3511 if (!query->lookup->ns_search_only)
3512 query->lookup->pending = ISC_FALSE;
3513 if (!query->lookup->ns_search_only ||
3514 query->lookup->trace_root || docancel) {
3572 getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp) {
3595 ISC_LIST_APPEND(lookup->my_server_list, srv, link);
3602 * Initiate either a TCP or UDP lookup
3605 do_lookup(dig_lookup_t *lookup) {
3607 REQUIRE(lookup != NULL);
3610 lookup->pending = ISC_TRUE;
3611 if (lookup->tcp_mode)
3612 send_tcp_connect(ISC_LIST_HEAD(lookup->q));
3614 send_udp(ISC_LIST_HEAD(lookup->q));
3631 * Make everything on the lookup queue go away. Mainly used by the
4062 dig_lookup_t *lookup;
4076 lookup = clone_lookup(current_lookup, ISC_TRUE);
4077 lookup->trace_root = ISC_FALSE;
4078 lookup->new_search = ISC_TRUE;
4086 strcpy(lookup->textname, (char*)r.base);
4099 lookup->rdtype = querytype;
4100 lookup->rdtypeset = ISC_TRUE;
4101 lookup->qrdtype = querytype;
4104 ISC_LIST_APPEND(lookup_list, lookup, link);
4107 printf(" for zone: %s\n", lookup->textname);
4336 dig_lookup_t *lookup = NULL;
4340 lookup = clone_lookup(current_lookup, ISC_TRUE);
4341 lookup->trace_root = ISC_FALSE;
4342 lookup->new_search = ISC_TRUE;
4343 lookup->trace_root_sigchase = ISC_FALSE;
4345 strncpy(lookup->textname, lookup->textnamesigchase, MXNAME);
4347 lookup->rdtype = lookup->rdtype_sigchase;
4348 lookup->rdtypeset = ISC_TRUE;
4349 lookup->qrdtype = lookup->qrdtype_sigchase;
4351 s = ISC_LIST_HEAD(lookup->my_server_list);
4354 s, lookup);
4357 ISC_LIST_DEQUEUE(lookup->my_server_list,
4412 ISC_LIST_APPEND(lookup->my_server_list,
4442 ISC_LIST_APPEND(lookup->my_server_list,
4454 ISC_LIST_APPEND(lookup->my_server_list, srv, link);
4462 ISC_LIST_APPEND(lookup_list, lookup, link);
4464 print_type(lookup->rdtype);
4465 printf(" for zone: %s", lookup->textname);