2000-04-19 23:23:31 +00:00
|
|
|
/*
|
2018-02-23 09:53:12 +01:00
|
|
|
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
2000-08-01 01:33:37 +00:00
|
|
|
*
|
2016-06-27 14:56:38 +10:00
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
2020-09-14 16:20:40 -07:00
|
|
|
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
2018-02-23 09:53:12 +01:00
|
|
|
*
|
|
|
|
* See the COPYRIGHT file distributed with this work for additional
|
|
|
|
* information regarding copyright ownership.
|
2000-04-19 23:23:31 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef DIG_H
|
|
|
|
#define DIG_H
|
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*! \file */
|
|
|
|
|
2018-03-28 14:19:37 +02:00
|
|
|
#include <inttypes.h>
|
2018-04-17 08:29:14 -07:00
|
|
|
#include <stdbool.h>
|
2018-03-28 14:19:37 +02:00
|
|
|
|
2018-08-07 16:46:53 +02:00
|
|
|
#include <isc/attributes.h>
|
2000-04-19 23:23:31 +00:00
|
|
|
#include <isc/buffer.h>
|
2001-08-08 22:54:55 +00:00
|
|
|
#include <isc/formatcheck.h>
|
2000-06-21 17:48:32 +00:00
|
|
|
#include <isc/lang.h>
|
2000-04-19 23:23:31 +00:00
|
|
|
#include <isc/list.h>
|
2018-11-07 13:04:13 -05:00
|
|
|
#include <isc/magic.h>
|
2000-06-21 17:48:32 +00:00
|
|
|
#include <isc/mem.h>
|
2000-04-26 19:36:40 +00:00
|
|
|
#include <isc/print.h>
|
2000-06-21 17:48:32 +00:00
|
|
|
#include <isc/sockaddr.h>
|
|
|
|
#include <isc/socket.h>
|
2000-04-19 23:23:31 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
#include <dns/rdatalist.h>
|
|
|
|
|
|
|
|
#include <dst/dst.h>
|
|
|
|
|
2017-11-23 16:58:12 +11:00
|
|
|
#ifdef __APPLE__
|
|
|
|
#include <TargetConditionals.h>
|
2020-02-13 21:48:23 +01:00
|
|
|
#endif /* ifdef __APPLE__ */
|
2017-11-23 16:58:12 +11:00
|
|
|
|
2005-03-31 02:36:05 +00:00
|
|
|
#define MXSERV 20
|
2020-02-12 13:59:18 +01:00
|
|
|
#define MXNAME (DNS_NAME_MAXTEXT + 1)
|
2020-02-13 14:44:37 -08:00
|
|
|
#define MXRD 32
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Buffer Size */
|
2020-02-13 14:44:37 -08:00
|
|
|
#define BUFSIZE 512
|
2000-06-23 02:56:10 +00:00
|
|
|
#define COMMSIZE 0xffff
|
2001-10-04 03:20:23 +00:00
|
|
|
#ifndef RESOLV_CONF
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% location of resolve.conf */
|
2001-10-04 03:20:23 +00:00
|
|
|
#define RESOLV_CONF "/etc/resolv.conf"
|
2020-02-13 21:48:23 +01:00
|
|
|
#endif /* ifndef RESOLV_CONF */
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% output buffer */
|
2000-05-24 19:27:01 +00:00
|
|
|
#define OUTPUTBUF 32767
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Max RR Limit */
|
2000-11-21 20:55:00 +00:00
|
|
|
#define MAXRRLIMIT 0xffffffff
|
|
|
|
#define MAXTIMEOUT 0xffff
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Max number of tries */
|
2000-11-21 21:40:12 +00:00
|
|
|
#define MAXTRIES 0xffffffff
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Max number of dots */
|
2000-11-21 20:55:00 +00:00
|
|
|
#define MAXNDOTS 0xffff
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Max number of ports */
|
2000-11-21 20:55:00 +00:00
|
|
|
#define MAXPORT 0xffff
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Max serial number */
|
2000-11-21 20:55:00 +00:00
|
|
|
#define MAXSERIAL 0xffffffff
|
2020-05-08 12:39:16 -07:00
|
|
|
/*% Max query ID */
|
|
|
|
#define MAXQID 0xffff
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Default TCP Timeout */
|
2000-07-18 01:28:20 +00:00
|
|
|
#define TCP_TIMEOUT 10
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% Default UDP Timeout */
|
2000-07-18 01:28:20 +00:00
|
|
|
#define UDP_TIMEOUT 5
|
2000-07-10 17:25:59 +00:00
|
|
|
|
2000-09-21 22:46:39 +00:00
|
|
|
#define SERVER_TIMEOUT 1
|
|
|
|
|
2000-05-06 01:16:07 +00:00
|
|
|
#define LOOKUP_LIMIT 64
|
2020-07-29 12:34:54 +10:00
|
|
|
|
|
|
|
#define DEFAULT_EDNS_VERSION 0
|
2020-09-30 18:18:05 +02:00
|
|
|
#define DEFAULT_EDNS_BUFSIZE 1232
|
2020-07-29 12:34:54 +10:00
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*%
|
2000-07-05 19:31:26 +00:00
|
|
|
* Lookup_limit is just a limiter, keeping too many lookups from being
|
2000-05-06 01:16:07 +00:00
|
|
|
* created. It's job is mainly to prevent the program from running away
|
|
|
|
* in a tight loop of constant lookups. It's value is arbitrary.
|
|
|
|
*/
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2000-04-19 23:23:31 +00:00
|
|
|
ISC_LANG_BEGINDECLS
|
|
|
|
|
|
|
|
typedef struct dig_lookup dig_lookup_t;
|
2018-08-07 16:46:53 +02:00
|
|
|
typedef struct dig_query dig_query_t;
|
2000-04-19 23:23:31 +00:00
|
|
|
typedef struct dig_server dig_server_t;
|
2000-07-14 16:35:30 +00:00
|
|
|
typedef ISC_LIST(dig_server_t) dig_serverlist_t;
|
2000-05-02 23:23:12 +00:00
|
|
|
typedef struct dig_searchlist dig_searchlist_t;
|
2000-04-19 23:23:31 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
#define DIG_QUERY_MAGIC ISC_MAGIC('D', 'i', 'g', 'q')
|
2018-11-07 13:04:13 -05:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
#define DIG_VALID_QUERY(x) ISC_MAGIC_VALID((x), DIG_QUERY_MAGIC)
|
2018-11-07 13:04:13 -05:00
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% The dig_lookup structure */
|
2000-04-19 23:23:31 +00:00
|
|
|
struct dig_lookup {
|
2020-02-12 13:59:18 +01:00
|
|
|
bool pending, /*%< Pending a successful answer */
|
2020-02-13 21:48:23 +01:00
|
|
|
waiting_connect, doing_xfr, ns_search_only, /*%< dig
|
|
|
|
* +nssearch,
|
|
|
|
* host -C */
|
2005-04-27 04:57:32 +00:00
|
|
|
identify, /*%< Append an "on server <foo>" message */
|
|
|
|
identify_previous_line, /*% Prepend a "Nameserver <foo>:"
|
2020-02-13 21:48:23 +01:00
|
|
|
* message, with newline and tab */
|
2020-02-12 13:59:18 +01:00
|
|
|
ignore, recurse, aaonly, adflag, cdflag, raflag, tcflag, zflag,
|
|
|
|
trace, /*% dig +trace */
|
2020-02-13 21:48:23 +01:00
|
|
|
trace_root, /*% initial query for either +trace or +nssearch
|
|
|
|
* */
|
2020-02-12 13:59:18 +01:00
|
|
|
tcp_mode, tcp_mode_set, comments, stats, section_question,
|
|
|
|
section_answer, section_authority, section_additional,
|
|
|
|
servfail_stops, new_search, need_search, done_as_is, besteffort,
|
|
|
|
dnssec, expire, sendcookie, seenbadcookie, badcookie,
|
|
|
|
nsid, /*% Name Server ID (RFC 5001) */
|
|
|
|
tcp_keepalive, header_only, ednsneg, mapped,
|
|
|
|
print_unknown_format, multiline, nottl, noclass, onesoa,
|
|
|
|
use_usec, nocrypto, ttlunits, idnin, idnout, expandaaaa, qr,
|
2020-05-08 12:39:16 -07:00
|
|
|
accept_reply_unexpected_src, /*% print replies from
|
2020-02-13 21:48:23 +01:00
|
|
|
* unexpected
|
|
|
|
* sources. */
|
2020-05-08 12:39:16 -07:00
|
|
|
setqid; /*% use a speciied query ID */
|
2020-02-13 21:48:23 +01:00
|
|
|
char textname[MXNAME]; /*% Name we're going to be
|
|
|
|
* looking up */
|
2018-08-07 16:46:53 +02:00
|
|
|
char cmdline[MXNAME];
|
|
|
|
dns_rdatatype_t rdtype;
|
|
|
|
dns_rdatatype_t qrdtype;
|
2000-07-18 01:28:20 +00:00
|
|
|
dns_rdataclass_t rdclass;
|
2018-08-07 16:46:53 +02:00
|
|
|
bool rdtypeset;
|
|
|
|
bool rdclassset;
|
|
|
|
char name_space[BUFSIZE];
|
|
|
|
char oname_space[BUFSIZE];
|
|
|
|
isc_buffer_t namebuf;
|
|
|
|
isc_buffer_t onamebuf;
|
|
|
|
isc_buffer_t renderbuf;
|
|
|
|
char *sendspace;
|
|
|
|
dns_name_t *name;
|
|
|
|
isc_interval_t interval;
|
|
|
|
dns_message_t *sendmsg;
|
|
|
|
dns_name_t *oname;
|
2000-04-19 23:23:31 +00:00
|
|
|
ISC_LINK(dig_lookup_t) link;
|
|
|
|
ISC_LIST(dig_query_t) q;
|
2012-10-18 17:50:07 -05:00
|
|
|
ISC_LIST(dig_query_t) connecting;
|
2018-08-07 16:46:53 +02:00
|
|
|
dig_query_t *current_query;
|
|
|
|
dig_serverlist_t my_server_list;
|
2000-05-02 23:23:12 +00:00
|
|
|
dig_searchlist_t *origin;
|
2018-08-07 16:46:53 +02:00
|
|
|
dig_query_t *xfr_q;
|
|
|
|
uint32_t retries;
|
|
|
|
int nsfound;
|
2020-07-29 12:34:54 +10:00
|
|
|
int16_t udpsize;
|
2018-08-07 16:46:53 +02:00
|
|
|
int16_t edns;
|
|
|
|
int16_t padding;
|
|
|
|
uint32_t ixfr_serial;
|
|
|
|
isc_buffer_t rdatabuf;
|
|
|
|
char rdatastore[MXNAME];
|
|
|
|
dst_context_t *tsigctx;
|
|
|
|
isc_buffer_t *querysig;
|
|
|
|
uint32_t msgcounter;
|
|
|
|
dns_fixedname_t fdomain;
|
|
|
|
isc_sockaddr_t *ecs_addr;
|
|
|
|
char *cookie;
|
|
|
|
dns_ednsopt_t *ednsopts;
|
|
|
|
unsigned int ednsoptscnt;
|
|
|
|
isc_dscp_t dscp;
|
|
|
|
unsigned int ednsflags;
|
|
|
|
dns_opcode_t opcode;
|
|
|
|
int rrcomments;
|
|
|
|
unsigned int eoferr;
|
2020-05-08 12:39:16 -07:00
|
|
|
uint16_t qid;
|
2000-04-19 23:23:31 +00:00
|
|
|
};
|
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*% The dig_query structure */
|
2000-04-19 23:23:31 +00:00
|
|
|
struct dig_query {
|
2018-08-07 16:46:53 +02:00
|
|
|
unsigned int magic;
|
2000-04-19 23:23:31 +00:00
|
|
|
dig_lookup_t *lookup;
|
2020-02-12 13:59:18 +01:00
|
|
|
bool waiting_connect, pending_free, waiting_senddone, first_pass,
|
|
|
|
first_soa_rcvd, second_rr_rcvd, first_repeat_rcvd, recv_made,
|
|
|
|
warn_id, timedout;
|
2018-08-07 16:46:53 +02:00
|
|
|
uint32_t first_rr_serial;
|
|
|
|
uint32_t second_rr_serial;
|
|
|
|
uint32_t msg_count;
|
|
|
|
uint32_t rr_count;
|
|
|
|
bool ixfr_axfr;
|
|
|
|
char *servname;
|
|
|
|
char *userarg;
|
|
|
|
isc_buffer_t recvbuf, lengthbuf, tmpsendbuf, sendbuf;
|
|
|
|
char *recvspace, *tmpsendspace, lengthspace[4];
|
2000-04-19 23:23:31 +00:00
|
|
|
isc_socket_t *sock;
|
|
|
|
ISC_LINK(dig_query_t) link;
|
2012-10-18 17:50:07 -05:00
|
|
|
ISC_LINK(dig_query_t) clink;
|
2000-04-19 23:23:31 +00:00
|
|
|
isc_sockaddr_t sockaddr;
|
2018-08-07 16:46:53 +02:00
|
|
|
isc_time_t time_sent;
|
|
|
|
isc_time_t time_recv;
|
|
|
|
uint64_t byte_count;
|
|
|
|
isc_timer_t *timer;
|
2000-04-19 23:23:31 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct dig_server {
|
|
|
|
char servername[MXNAME];
|
2004-09-06 01:24:44 +00:00
|
|
|
char userarg[MXNAME];
|
2000-04-19 23:23:31 +00:00
|
|
|
ISC_LINK(dig_server_t) link;
|
|
|
|
};
|
|
|
|
|
2000-05-02 23:23:12 +00:00
|
|
|
struct dig_searchlist {
|
|
|
|
char origin[MXNAME];
|
|
|
|
ISC_LINK(dig_searchlist_t) link;
|
|
|
|
};
|
2005-07-04 03:03:21 +00:00
|
|
|
|
|
|
|
typedef ISC_LIST(dig_searchlist_t) dig_searchlistlist_t;
|
|
|
|
typedef ISC_LIST(dig_lookup_t) dig_lookuplist_t;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Externals from dighost.c
|
|
|
|
*/
|
|
|
|
|
2018-08-07 16:46:53 +02:00
|
|
|
extern dig_lookuplist_t lookup_list;
|
|
|
|
extern dig_serverlist_t server_list;
|
2005-07-04 03:03:21 +00:00
|
|
|
extern dig_searchlistlist_t search_list;
|
2018-08-07 16:46:53 +02:00
|
|
|
extern unsigned int extrabytes;
|
2020-02-12 13:59:18 +01:00
|
|
|
|
|
|
|
extern bool check_ra, have_ipv4, have_ipv6, specified_source, usesearch,
|
|
|
|
showsearch, yaml;
|
2018-08-07 16:46:53 +02:00
|
|
|
extern in_port_t port;
|
|
|
|
extern unsigned int timeout;
|
|
|
|
extern isc_mem_t *mctx;
|
|
|
|
extern int sendcount;
|
|
|
|
extern int ndots;
|
|
|
|
extern int lookup_counter;
|
|
|
|
extern int exitcode;
|
|
|
|
extern isc_sockaddr_t bind_address;
|
|
|
|
extern char keynametext[MXNAME];
|
|
|
|
extern char keyfile[MXNAME];
|
|
|
|
extern char keysecret[MXNAME];
|
2016-12-30 15:45:08 +11:00
|
|
|
extern const dns_name_t *hmacname;
|
2018-08-07 16:46:53 +02:00
|
|
|
extern unsigned int digestbits;
|
|
|
|
extern dns_tsigkey_t *tsigkey;
|
|
|
|
extern bool validated;
|
|
|
|
extern isc_taskmgr_t *taskmgr;
|
|
|
|
extern isc_task_t *global_task;
|
|
|
|
extern bool free_now;
|
|
|
|
extern bool debugging, debugtiming, memdebugging;
|
|
|
|
extern bool keep_open;
|
2005-07-04 03:03:21 +00:00
|
|
|
|
|
|
|
extern char *progname;
|
2018-08-07 16:46:53 +02:00
|
|
|
extern int tries;
|
|
|
|
extern int fatalexit;
|
|
|
|
extern bool verbose;
|
2005-07-04 03:03:21 +00:00
|
|
|
|
2000-06-01 18:49:22 +00:00
|
|
|
/*
|
|
|
|
* Routines in dighost.c.
|
|
|
|
*/
|
2008-12-16 02:57:24 +00:00
|
|
|
isc_result_t
|
2015-04-17 02:57:02 +02:00
|
|
|
get_address(char *host, in_port_t myport, isc_sockaddr_t *sockaddr);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2011-02-25 23:11:13 +00:00
|
|
|
int
|
2011-12-07 17:23:28 +00:00
|
|
|
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
|
2011-02-25 23:11:13 +00:00
|
|
|
|
2000-10-23 23:13:21 +00:00
|
|
|
isc_result_t
|
2018-11-02 14:23:01 +00:00
|
|
|
get_reverse(char *reverse, size_t len, char *value, bool strict);
|
2000-10-23 23:13:21 +00:00
|
|
|
|
2018-08-07 16:46:53 +02:00
|
|
|
ISC_NORETURN void
|
|
|
|
fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2017-11-23 16:58:12 +11:00
|
|
|
void
|
|
|
|
warn(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
|
|
|
|
2018-08-07 16:46:53 +02:00
|
|
|
ISC_NORETURN void
|
|
|
|
digexit(void);
|
2017-11-23 16:58:12 +11:00
|
|
|
|
2000-04-29 00:12:56 +00:00
|
|
|
void
|
2001-08-08 22:54:55 +00:00
|
|
|
debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2000-05-05 18:22:16 +00:00
|
|
|
void
|
2000-06-01 18:49:22 +00:00
|
|
|
check_result(isc_result_t result, const char *msg);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2018-04-17 08:29:14 -07:00
|
|
|
bool
|
2000-04-26 18:34:17 +00:00
|
|
|
setup_lookup(dig_lookup_t *lookup);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2007-04-03 23:06:39 +00:00
|
|
|
void
|
|
|
|
destroy_lookup(dig_lookup_t *lookup);
|
|
|
|
|
2000-04-26 18:34:17 +00:00
|
|
|
void
|
2000-05-12 01:02:37 +00:00
|
|
|
do_lookup(dig_lookup_t *lookup);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2000-04-26 18:34:17 +00:00
|
|
|
void
|
2000-07-05 19:31:26 +00:00
|
|
|
start_lookup(void);
|
|
|
|
|
2000-07-10 18:02:31 +00:00
|
|
|
void
|
|
|
|
onrun_callback(isc_task_t *task, isc_event_t *event);
|
|
|
|
|
2000-05-09 18:05:13 +00:00
|
|
|
int
|
|
|
|
dhmain(int argc, char **argv);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2000-05-09 18:05:13 +00:00
|
|
|
void
|
|
|
|
setup_libs(void);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2000-05-09 18:05:13 +00:00
|
|
|
void
|
2018-04-17 08:29:14 -07:00
|
|
|
setup_system(bool ipv4only, bool ipv6only);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2009-09-15 03:13:44 +00:00
|
|
|
isc_result_t
|
2020-02-12 13:59:18 +01:00
|
|
|
parse_uint(uint32_t *uip, const char *value, uint32_t max, const char *desc);
|
2009-09-15 03:13:44 +00:00
|
|
|
|
2014-09-13 19:13:59 +10:00
|
|
|
isc_result_t
|
2020-02-12 13:59:18 +01:00
|
|
|
parse_xint(uint32_t *uip, const char *value, uint32_t max, const char *desc);
|
2014-09-13 19:13:59 +10:00
|
|
|
|
2014-02-19 15:51:02 -08:00
|
|
|
isc_result_t
|
|
|
|
parse_netprefix(isc_sockaddr_t **sap, const char *value);
|
|
|
|
|
2009-09-15 03:13:44 +00:00
|
|
|
void
|
|
|
|
parse_hmac(const char *hmacstr);
|
|
|
|
|
2000-06-01 18:49:22 +00:00
|
|
|
dig_lookup_t *
|
2018-04-17 08:29:14 -07:00
|
|
|
requeue_lookup(dig_lookup_t *lookold, bool servers);
|
2000-05-09 18:05:13 +00:00
|
|
|
|
2000-07-13 18:52:58 +00:00
|
|
|
dig_lookup_t *
|
|
|
|
make_empty_lookup(void);
|
|
|
|
|
|
|
|
dig_lookup_t *
|
2018-04-17 08:29:14 -07:00
|
|
|
clone_lookup(dig_lookup_t *lookold, bool servers);
|
2000-07-13 18:52:58 +00:00
|
|
|
|
2000-07-14 16:35:30 +00:00
|
|
|
dig_server_t *
|
2004-09-06 01:24:44 +00:00
|
|
|
make_server(const char *servname, const char *userarg);
|
2000-07-14 16:35:30 +00:00
|
|
|
|
2002-08-12 18:25:25 +00:00
|
|
|
void
|
|
|
|
flush_server_list(void);
|
|
|
|
|
|
|
|
void
|
|
|
|
set_nameserver(char *opt);
|
|
|
|
|
2000-07-14 16:35:30 +00:00
|
|
|
void
|
2020-02-12 13:59:18 +01:00
|
|
|
clone_server_list(dig_serverlist_t src, dig_serverlist_t *dest);
|
2000-04-26 18:34:17 +00:00
|
|
|
|
2000-07-14 17:57:27 +00:00
|
|
|
void
|
|
|
|
cancel_all(void);
|
|
|
|
|
|
|
|
void
|
|
|
|
destroy_libs(void);
|
|
|
|
|
2001-01-18 05:12:44 +00:00
|
|
|
void
|
|
|
|
set_search_domain(char *domain);
|
|
|
|
|
2000-06-01 18:49:22 +00:00
|
|
|
/*
|
2017-08-10 22:51:24 -07:00
|
|
|
* Routines to be defined in dig.c, host.c, and nslookup.c. and
|
|
|
|
* then assigned to the appropriate function pointer
|
2000-06-01 18:49:22 +00:00
|
|
|
*/
|
2018-08-07 16:46:53 +02:00
|
|
|
extern isc_result_t (*dighost_printmessage)(dig_query_t *query,
|
2020-02-12 13:59:18 +01:00
|
|
|
const isc_buffer_t *msgbuf,
|
|
|
|
dns_message_t *msg, bool headers);
|
2019-07-16 23:44:20 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Print an error message in the appropriate format.
|
|
|
|
*/
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_error)(const char *format, ...);
|
2019-07-16 23:44:20 -07:00
|
|
|
|
2019-08-30 14:23:29 +10:00
|
|
|
/*
|
|
|
|
* Print a warning message in the appropriate format.
|
|
|
|
*/
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_warning)(const char *format, ...);
|
2019-08-30 14:23:29 +10:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Print a comment in the appropriate format.
|
|
|
|
*/
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_comments)(dig_lookup_t *lookup, const char *format, ...);
|
2019-08-30 14:23:29 +10:00
|
|
|
|
2005-04-27 04:57:32 +00:00
|
|
|
/*%<
|
2001-01-24 19:28:34 +00:00
|
|
|
* Print the final result of the lookup.
|
|
|
|
*/
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_received)(unsigned int bytes, isc_sockaddr_t *from,
|
|
|
|
dig_query_t *query);
|
2005-04-27 04:57:32 +00:00
|
|
|
/*%<
|
2001-01-24 19:28:34 +00:00
|
|
|
* Print a message about where and when the response
|
|
|
|
* was received from, like the final comment in the
|
|
|
|
* output of "dig".
|
|
|
|
*/
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_trying)(char *frm, dig_lookup_t *lookup);
|
2000-07-05 19:31:26 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_shutdown)(void);
|
2000-09-21 23:47:41 +00:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
extern void (*dighost_pre_exit_hook)(void);
|
2017-11-23 16:58:12 +11:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
void
|
|
|
|
save_opt(dig_lookup_t *lookup, char *code, char *value);
|
2014-04-18 09:52:12 +10:00
|
|
|
|
2020-02-12 13:59:18 +01:00
|
|
|
void
|
|
|
|
setup_file_key(void);
|
|
|
|
void
|
|
|
|
setup_text_key(void);
|
2014-04-18 07:27:50 -07:00
|
|
|
|
2017-08-10 22:51:24 -07:00
|
|
|
/*
|
|
|
|
* Routines exported from dig.c for use by dig for iOS
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*%<
|
|
|
|
* Call once only to set up libraries, parse global
|
|
|
|
* parameters and initial command line query parameters
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
dig_setup(int argc, char **argv);
|
|
|
|
|
|
|
|
/*%<
|
|
|
|
* Call to supply new parameters for the next lookup
|
|
|
|
*/
|
|
|
|
void
|
2018-04-17 08:29:14 -07:00
|
|
|
dig_query_setup(bool, bool, int argc, char **argv);
|
2017-08-10 22:51:24 -07:00
|
|
|
|
|
|
|
/*%<
|
|
|
|
* set the main application event cycle running
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
dig_startup(void);
|
|
|
|
|
|
|
|
/*%<
|
|
|
|
* Initiates the next lookup cycle
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
dig_query_start(void);
|
|
|
|
|
|
|
|
/*%<
|
|
|
|
* Cleans up the application
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
dig_shutdown(void);
|
|
|
|
|
2000-04-19 23:23:31 +00:00
|
|
|
ISC_LANG_ENDDECLS
|
|
|
|
|
2020-02-13 21:48:23 +01:00
|
|
|
#endif /* ifndef DIG_H */
|