dt_collector
void dt_collector_destroy(struct dt_collector* dt_col, struct nsd* nsd)
void dt_collector_close(struct dt_collector* dt_col, struct nsd* nsd)
struct dt_collector* dt_col = (struct dt_collector*)arg;
event_base_loopexit(dt_input->dt_collector->event_base, NULL);
if(dt_input->dt_collector->dt_env) {
dt_submit_content(dt_input->dt_collector->dt_env,
static void dt_init_dnstap(struct dt_collector* dt_col, struct nsd* nsd)
static void dt_collector_cleanup(struct dt_collector* dt_col, struct nsd* nsd)
static void dt_attach_events(struct dt_collector* dt_col, struct nsd* nsd)
dt_col->inputs[i].dt_collector = dt_col;
static void dt_collector_run(struct dt_collector* dt_col, struct nsd* nsd)
struct dt_collector* dt_collector_create(struct nsd* nsd)
void dt_collector_start(struct dt_collector* dt_col, struct nsd* nsd)
struct dt_collector* dt_col = (struct dt_collector*)xalloc_zero(
if(!nsd->dt_collector) return;
if(!prep_send_data(nsd->dt_collector->send_buffer, 0, local_addr, addr, addrlen,
buffer_begin(nsd->dt_collector->send_buffer),
buffer_remaining(nsd->dt_collector->send_buffer))) {
if(!nsd->dt_collector) return;
if(!prep_send_data(nsd->dt_collector->send_buffer, 1, local_addr, addr, addrlen,
buffer_begin(nsd->dt_collector->send_buffer),
buffer_remaining(nsd->dt_collector->send_buffer))) {
struct dt_collector* dt_collector;
struct dt_collector* dt_collector_create(struct nsd* nsd);
void dt_collector_destroy(struct dt_collector* dt_col, struct nsd* nsd);
void dt_collector_close(struct dt_collector* dt_col, struct nsd* nsd);
void dt_collector_start(struct dt_collector* dt_col, struct nsd* nsd);
nsd.dt_collector = dt_collector_create(&nsd);
dt_collector_start(nsd.dt_collector, &nsd);
struct dt_collector* dt_collector;
struct dt_collector;
dt_collector_destroy(nsd->dt_collector, nsd);
if (nsd->dt_collector) {
} else if(nsd->dt_collector && child_pid == nsd->dt_collector->dt_pid) {
if(nsd->dt_collector) {
dt_collector_close(nsd->dt_collector, nsd);
dt_collector_destroy(nsd->dt_collector, nsd);
nsd->dt_collector = NULL;
nsd->dt_collector = dt_collector_create(nsd);
dt_collector_start(nsd->dt_collector, nsd);
dt_collector_close(nsd->dt_collector, nsd);
dt_collector_destroy(nsd->dt_collector, nsd);
nsd->dt_collector = NULL;
dt_collector_close(nsd.dt_collector, &nsd);
dt_collector_destroy(nsd.dt_collector, &nsd);