Lines Matching defs:query
115 struct query {
139 ISC_LINK(struct query) link;
141 static struct query default_query;
142 static ISC_LIST(struct query) queries;
209 dns_message_t *query = NULL, *response = NULL;
220 query = reqev->ev_arg;
473 if (query != NULL)
474 dns_message_destroy(&query);
512 sendquery(struct query *query, isc_task_t *task)
526 isc_buffer_init(&buf, query->textname, strlen(query->textname));
527 isc_buffer_add(&buf, strlen(query->textname));
537 if (query->recurse)
539 if (query->have_aaonly)
541 if (query->have_adflag)
543 if (query->have_cdflag)
545 if (query->have_zflag)
547 message->rdclass = query->rdclass;
560 dns_rdataset_makequestion(qrdataset, query->rdclass,
561 query->rdtype);
565 if (query->udpsize > 0 || query->dnssec ||
566 query->edns > -1 || query->ecs_addr != NULL)
574 if (query->udpsize == 0)
575 query->udpsize = 4096;
576 if (query->edns < 0)
577 query->edns = 0;
579 if (query->nsid) {
587 if (query->ecs_addr != NULL) {
596 sa = &query->ecs_addr->type.sa;
597 plen = query->ecs_addr->length;
639 if (query->send_cookie) {
642 if (query->cookie != NULL) {
646 result = isc_hex_decodestring(query->cookie,
659 if (query->expire) {
667 if (query->ednsoptscnt != 0) {
668 memmove(&opts[i], query->ednsopts,
669 sizeof(dns_ednsopt_t) * query->ednsoptscnt);
670 i += query->ednsoptscnt;
673 flags = query->ednsflags;
675 if (query->dnssec)
677 add_opt(message, query->udpsize, query->edns, flags, opts, i);
687 query->timeout, query->udptimeout,
688 query->udpretries, task,
698 struct query *query = (struct query *)event->ev_arg;
702 while (query != NULL) {
703 struct query *next = ISC_LIST_NEXT(query, link);
705 sendquery(query, task);
706 query = next;
741 " -4 (use IPv4 query transport only)\n"
742 " -6 (use IPv6 query transport only)\n"
769 " -c class (specify query class)\n"
770 " -t type (specify query type)\n"
773 " +timeout=### (Set query timeout) [UDP=5,TCP=10]\n"
784 " +[no]aaonly (Set AA flag in query (+[no]aaflag))\n"
785 " +[no]adflag (Set AD flag in query)\n"
786 " +[no]cdflag (Set CD flag in query)\n"
787 " +[no]zflag (Set Z flag in query)\n"
856 save_opt(struct query *query, char *code, char *value) {
884 if (query->ednsoptscnt == 0)
885 query->ednsopts = &ednsopts[ednsoptscnt];
886 query->ednsoptscnt++;
1035 plus_option(char *option, struct query *query, isc_boolean_t global)
1081 query->have_aaonly = state;
1092 query->have_adflag = state;
1138 query->udpsize = num;
1151 query->have_cdflag = state;
1176 if (state && query->edns == -1)
1177 query->edns = 0;
1178 query->send_cookie = state;
1184 query->cookie = hexcookie;
1186 query->cookie = NULL;
1205 if (state && query->edns == -1)
1206 query->edns = 0;
1207 query->dnssec = state;
1237 query->edns = -1;
1241 query->edns = 0;
1250 query->edns = num;
1255 query->ednsflags = 0;
1259 query->ednsflags = 0;
1268 query->ednsflags = num;
1273 query->ednsoptscnt = 0;
1281 save_opt(query, code, value);
1297 query->expire = state;
1310 if (state && query->edns == -1)
1311 query->edns = 0;
1312 query->nsid = state;
1325 query->recurse = state;
1333 result = parse_uint(&query->udpretries,
1338 query->udpretries++;
1405 if (query->ecs_addr != NULL) {
1406 isc_mem_free(mctx, query->ecs_addr);
1407 query->ecs_addr = NULL;
1411 if (query->edns == -1)
1412 query->edns = 0;
1413 result = parse_netprefix(&query->ecs_addr, value);
1433 result = parse_uint(&query->timeout, value,
1436 if (query->timeout == 0)
1437 query->timeout = 1;
1445 result = parse_uint(&query->udpretries, value,
1448 if (query->udpretries == 0)
1449 query->udpretries = 1;
1487 result = parse_uint(&query->udptimeout, value,
1506 query->have_zflag = state;
1526 dash_option(const char *option, char *next, struct query *query,
1578 query->ip6_int = ISC_TRUE;
1638 query->rdclass = rdclass;
1655 query->rdtype = rdtype;
1658 get_reverse(textname, sizeof(textname), value, query->ip6_int);
1659 strlcpy(query->textname, textname, sizeof(query->textname));
1660 query->rdtype = dns_rdatatype_ptr;
1661 query->rdclass = dns_rdataclass_in;
1676 static struct query *
1678 struct query *query;
1680 query = isc_mem_allocate(mctx, sizeof(struct query));
1681 if (query == NULL)
1684 memmove(query, &default_query, sizeof(struct query));
1688 query->ecs_addr = isc_mem_allocate(mctx, len);
1689 if (query->ecs_addr == NULL)
1692 memmove(query->ecs_addr, default_query.ecs_addr, len);
1695 if (query->timeout == 0)
1696 query->timeout = tcp_mode ? TCPTIMEOUT : UDPTIMEOUT;
1698 return query;
1750 struct query *query = NULL;
1766 * First, create a "default query" which won't actually be used
1799 query = clone_default_query();
1802 query = &default_query;
1814 plus_option(&rv[0][1], query, global);
1819 if (dash_option(&rv[0][1], NULL, query,
1825 if (dash_option(&rv[0][1], rv[1], query,
1832 if (query == &default_query)
1833 query = clone_default_query();
1834 ISC_LIST_APPEND(queries, query, link);
1837 query = clone_default_query();
1844 if (query == &default_query)
1845 query = clone_default_query();
1846 strlcpy(query->textname, rv[0],
1847 sizeof(query->textname));
1848 ISC_LIST_APPEND(queries, query, link);
1850 query = clone_default_query();
1857 * If we have a batchfile, read the query list from it.
1886 if (query != &default_query) {
1887 if (query->ecs_addr != NULL)
1888 isc_mem_free(mctx, query->ecs_addr);
1889 isc_mem_free(mctx, query);
1896 struct query *query;
2002 query = ISC_LIST_HEAD(queries);
2003 RUNCHECK(isc_app_onrun(mctx, task, sendqueries, query));
2007 query = ISC_LIST_HEAD(queries);
2008 while (query != NULL) {
2009 struct query *next = ISC_LIST_NEXT(query, link);
2011 if (query->ecs_addr != NULL) {
2012 isc_mem_free(mctx, query->ecs_addr);
2013 query->ecs_addr = NULL;
2015 isc_mem_free(mctx, query);
2016 query = next;