mirror of https://github.com/getdnsapi/getdns.git
Add abbreviated logging mode for daemon
This commit is contained in:
parent
0432fe37c4
commit
a1461d51ec
|
@ -144,6 +144,7 @@ ACX_ARG_RPATH
|
|||
|
||||
AC_ARG_ENABLE(debug-sched, AC_HELP_STRING([--enable-debug-sched], [Enable scheduling debugging messages]))
|
||||
AC_ARG_ENABLE(debug-stub, AC_HELP_STRING([--enable-debug-stub], [Enable stub debugging messages]))
|
||||
AC_ARG_ENABLE(debug-daemon, AC_HELP_STRING([--enable-debug-daemon], [Enable daemon debugging messages]))
|
||||
AC_ARG_ENABLE(debug-sec, AC_HELP_STRING([--enable-debug-sec], [Enable dnssec debugging messages]))
|
||||
AC_ARG_ENABLE(debug-server, AC_HELP_STRING([--enable-debug-server], [Enable server debugging messages]))
|
||||
AC_ARG_ENABLE(all-debugging, AC_HELP_STRING([--enable-all-debugging], [Enable scheduling, stub and dnssec debugging]))
|
||||
|
@ -151,6 +152,7 @@ case "$enable_all_debugging" in
|
|||
yes)
|
||||
enable_debug_sched=yes
|
||||
enable_debug_stub=yes
|
||||
enable_debug_daemon=yes
|
||||
enable_debug_sec=yes
|
||||
enable_debug_server=yes
|
||||
;;
|
||||
|
@ -171,6 +173,13 @@ case "$enable_debug_stub" in
|
|||
no|*)
|
||||
;;
|
||||
esac
|
||||
case "$enable_debug_daemon" in
|
||||
yes)
|
||||
AC_DEFINE_UNQUOTED([DAEMON_DEBUG], [1], [Define this to enable printing of daemon debugging messages.])
|
||||
;;
|
||||
no|*)
|
||||
;;
|
||||
esac
|
||||
case "$enable_debug_sec" in
|
||||
yes)
|
||||
AC_DEFINE_UNQUOTED([SEC_DEBUG], [1], [Define this to enable printing of dnssec debugging messages.])
|
||||
|
|
|
@ -224,6 +224,14 @@ add_WIN_cacerts_to_openssl_store(SSL_CTX* tls_ctx)
|
|||
}
|
||||
#endif
|
||||
|
||||
static uint8_t*
|
||||
upstream_addr(getdns_upstream *upstream)
|
||||
{
|
||||
return upstream->addr.ss_family == AF_INET
|
||||
? (void *)&((struct sockaddr_in*)&upstream->addr)->sin_addr
|
||||
: (void *)&((struct sockaddr_in6*)&upstream->addr)->sin6_addr;
|
||||
}
|
||||
|
||||
static void destroy_local_host(_getdns_rbnode_t * node, void *arg)
|
||||
{
|
||||
getdns_context *context = (getdns_context *)arg;
|
||||
|
@ -683,11 +691,17 @@ _getdns_upstream_shutdown(getdns_upstream *upstream)
|
|||
if (upstream->tls_auth_state != GETDNS_AUTH_NONE)
|
||||
upstream->past_tls_auth_state = upstream->tls_auth_state;
|
||||
|
||||
DEBUG_STUB("%s %-35s: FD: %d Upstream Stats: Resp=%d,Timeouts=%d,Conns=%d,Conn_fails=%d,Conn_shutdowns=%d,Auth=%d\n",
|
||||
STUB_DEBUG_CLEANUP, __FUNCTION__, upstream->fd,
|
||||
(int)upstream->total_responses, (int)upstream->total_timeouts,
|
||||
(int)upstream->conn_completed, (int)upstream->conn_setup_failed,
|
||||
(int)upstream->conn_shutdowns, upstream->past_tls_auth_state);
|
||||
#if defined(DAEMON_DEBUG) && DAEMON_DEBUG
|
||||
DEBUG_DAEMON("%s Upstream %s : Connection closed: Connection stats - Resp=%d,Timeouts=%d,Keepalive(ms)=%d,Auth=%s\n",
|
||||
STUB_DEBUG_DAEMON, upstream->addr_str,
|
||||
(int)upstream->responses_received, (int)upstream->responses_timeouts,
|
||||
(int)upstream->keepalive_timeout, getdns_auth_str_array[upstream->tls_auth_state]);
|
||||
DEBUG_DAEMON("%s Upstream %s : Connection closed: Upstream stats - Resp=%d,Timeouts=%d,Conns=%d,Conn_fails=%d,Conn_shutdowns=%d,Auth=%s\n",
|
||||
STUB_DEBUG_DAEMON, upstream->addr_str,
|
||||
(int)upstream->total_responses, (int)upstream->total_timeouts,
|
||||
(int)upstream->conn_completed, (int)upstream->conn_setup_failed,
|
||||
(int)upstream->conn_shutdowns, getdns_auth_str_array[upstream->tls_auth_state]);
|
||||
#endif
|
||||
|
||||
/* Back off connections that never got up service at all (probably no
|
||||
TCP service or incompatible TLS version/cipher).
|
||||
|
@ -829,6 +843,10 @@ upstream_init(getdns_upstream *upstream,
|
|||
|
||||
upstream->addr_len = ai->ai_addrlen;
|
||||
(void) memcpy(&upstream->addr, ai->ai_addr, ai->ai_addrlen);
|
||||
#if defined(DAEMON_DEBUG) && DAEMON_DEBUG
|
||||
inet_ntop(upstream->addr.ss_family, upstream_addr(upstream),
|
||||
upstream->addr_str, INET6_ADDRSTRLEN);
|
||||
#endif
|
||||
|
||||
/* How is this upstream doing? */
|
||||
upstream->conn_setup_failed = 0;
|
||||
|
@ -2831,15 +2849,8 @@ getdns_cancel_callback(getdns_context *context,
|
|||
return r;
|
||||
} /* getdns_cancel_callback */
|
||||
|
||||
#ifndef STUB_NATIVE_DNSSEC
|
||||
static uint8_t*
|
||||
upstream_addr(getdns_upstream *upstream)
|
||||
{
|
||||
return upstream->addr.ss_family == AF_INET
|
||||
? (void *)&((struct sockaddr_in*)&upstream->addr)->sin_addr
|
||||
: (void *)&((struct sockaddr_in6*)&upstream->addr)->sin6_addr;
|
||||
}
|
||||
|
||||
#ifndef STUB_NATIVE_DNSSEC
|
||||
static in_port_t
|
||||
upstream_port(getdns_upstream *upstream)
|
||||
{
|
||||
|
|
|
@ -124,6 +124,9 @@ typedef struct getdns_upstream {
|
|||
|
||||
socklen_t addr_len;
|
||||
struct sockaddr_storage addr;
|
||||
#if defined(DAEMON_DEBUG) && DAEMON_DEBUG
|
||||
char addr_str[INET6_ADDRSTRLEN];
|
||||
#endif
|
||||
|
||||
/* How is this upstream doing over UDP? */
|
||||
int to_retry;
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define STUB_DEBUG_READ "------- READ: "
|
||||
#define STUB_DEBUG_WRITE "------- WRITE: "
|
||||
#define STUB_DEBUG_CLEANUP "--- CLEANUP: "
|
||||
#define STUB_DEBUG_DAEMON "GETDNS_DAEMON: "
|
||||
|
||||
#define DEBUG_ON(...) do { \
|
||||
struct timeval tv; \
|
||||
|
@ -88,6 +89,13 @@
|
|||
#define DEBUG_STUB(...) DEBUG_OFF(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#if defined(DAEMON_DEBUG) && DAEMON_DEBUG
|
||||
#include <time.h>
|
||||
#define DEBUG_DAEMON(...) DEBUG_ON(__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG_DAEMON(...) DEBUG_OFF(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#if defined(SEC_DEBUG) && SEC_DEBUG
|
||||
#include <time.h>
|
||||
#define DEBUG_SEC(...) DEBUG_ON(__VA_ARGS__)
|
||||
|
|
15
src/stub.c
15
src/stub.c
|
@ -522,9 +522,14 @@ upstream_failed(getdns_upstream *upstream, int during_setup)
|
|||
if (during_setup) {
|
||||
/* Reset timeout on setup failure to trigger fallback handling.*/
|
||||
GETDNS_CLEAR_EVENT(upstream->loop, &upstream->event);
|
||||
GETDNS_SCHEDULE_EVENT(upstream->loop, upstream->fd, TIMEOUT_FOREVER,
|
||||
getdns_eventloop_event_init(&upstream->event, upstream,
|
||||
NULL, upstream_write_cb, NULL));
|
||||
/* Need this check because if the setup failed because the interface is
|
||||
not up we get -1 and then a seg fault. Found when using IPv6 address
|
||||
but IPv6 interface not enabled.*/
|
||||
if (upstream->fd != -1) {
|
||||
GETDNS_SCHEDULE_EVENT(upstream->loop, upstream->fd, TIMEOUT_FOREVER,
|
||||
getdns_eventloop_event_init(&upstream->event, upstream,
|
||||
NULL, upstream_write_cb, NULL));
|
||||
}
|
||||
/* Special case if failure was due to authentication issues since this
|
||||
upstream could be used oppotunistically with no problem.*/
|
||||
if (!(upstream->transport == GETDNS_TRANSPORT_TLS &&
|
||||
|
@ -1739,6 +1744,10 @@ upstream_connect(getdns_upstream *upstream, getdns_transport_list_t transport,
|
|||
return -1;
|
||||
/* Nothing to do*/
|
||||
}
|
||||
#if defined(DAEMON_DEBUG) && DAEMON_DEBUG
|
||||
DEBUG_DAEMON("%s Upstream %s : Connection initialised\n",
|
||||
STUB_DEBUG_DAEMON, upstream->addr_str);
|
||||
#endif
|
||||
return fd;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,6 +63,17 @@ typedef enum getdns_auth_state {
|
|||
GETDNS_AUTH_OK, /* Tried and worked (Strict) */
|
||||
} getdns_auth_state_t;
|
||||
|
||||
#define GETDNS_STR_AUTH_NONE "N/A"
|
||||
#define GETDNS_STR_AUTH_FAILED "Failed or not tried"
|
||||
#define GETDNS_STR_AUTH_OK "Success"
|
||||
|
||||
static char*
|
||||
getdns_auth_str_array[] = {
|
||||
GETDNS_STR_AUTH_NONE,
|
||||
GETDNS_STR_AUTH_FAILED,
|
||||
GETDNS_STR_AUTH_OK
|
||||
};
|
||||
|
||||
struct getdns_context;
|
||||
struct getdns_upstreams;
|
||||
struct getdns_upstream;
|
||||
|
|
Loading…
Reference in New Issue