"Fossies" - the Fresh Open Source Software Archive

Member "nsd-4.3.6/dnstap/dnstap_collector.h" (6 Apr 2021, 3169 Bytes) of package /linux/misc/dns/nsd-4.3.6.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "dnstap_collector.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 4.3.5_vs_4.3.6.

    1 /*
    2  * dnstap/dnstap_collector.h -- nsd collector process for dnstap information
    3  *
    4  * Copyright (c) 2018, NLnet Labs. All rights reserved.
    5  *
    6  * See LICENSE for the license.
    7  *
    8  */
    9 
   10 #ifndef DNSTAP_COLLECTOR_H
   11 #define DNSTAP_COLLECTOR_H
   12 struct dt_env;
   13 struct nsd;
   14 struct event_base;
   15 struct event;
   16 struct dt_collector_input;
   17 struct zone;
   18 struct buffer;
   19 struct region;
   20 
   21 /* information for the dnstap collector process. It collects information
   22  * for dnstap from the worker processes.  And writes them to the dnstap
   23  * socket. */
   24 struct dt_collector {
   25     /* dnstap env for the write to the dnstap socket */
   26     struct dt_env* dt_env;
   27     /* number of workers to collect from */
   28     int count;
   29     /* socketpair for communication between (xfrd) and the
   30      * dnstap collector process.  If closed, the collector process
   31      * exits.  The collector closes the other side of the socketpair, so
   32      * that if xfrd exits, so does the dnstap collector */
   33     int cmd_socket_dt, cmd_socket_nsd;
   34     /* the pid of the dt collector process (0 on that process) */
   35     pid_t dt_pid;
   36     /* in the collector process, the event base */
   37     struct event_base* event_base;
   38     /* in the collector process, the cmd handle event */
   39     struct event* cmd_event;
   40     /* in the collector process, array size count of input per worker */
   41     struct dt_collector_input* inputs;
   42     /* region for buffers */
   43     struct region* region;
   44     /* buffer for sending data to the collector */
   45     struct buffer* send_buffer;
   46 };
   47 
   48 /* information per worker to get input from that worker. */
   49 struct dt_collector_input {
   50     /* the collector this is part of (for use in callbacks) */
   51     struct dt_collector* dt_collector;
   52     /* the event to listen to the datagrams to process for that worker*/
   53     struct event* event;
   54     /* buffer to store the datagrams while they are read in */
   55     struct buffer* buffer;
   56 };
   57 
   58 /* create dt_collector process structure and dt_env */
   59 struct dt_collector* dt_collector_create(struct nsd* nsd);
   60 /* destroy the dt_collector structure */
   61 void dt_collector_destroy(struct dt_collector* dt_col, struct nsd* nsd);
   62 /* close file descriptors */
   63 void dt_collector_close(struct dt_collector* dt_col, struct nsd* nsd);
   64 /* start the collector process */
   65 void dt_collector_start(struct dt_collector* dt_col, struct nsd* nsd);
   66 
   67 /* submit auth query from worker.  It attempts to send it to the collector,
   68  * if the nonblocking fails, then it silently skips it.  So it does not block
   69  * on the log.
   70  */
   71 void dt_collector_submit_auth_query(struct nsd* nsd,
   72 #ifdef INET6
   73     struct sockaddr_storage* local_addr,
   74     struct sockaddr_storage* addr,
   75 #else
   76     struct sockaddr_in* local_addr,
   77     struct sockaddr_in* addr,
   78 #endif
   79     socklen_t addrlen, int is_tcp, struct buffer* packet);
   80 
   81 /* submit auth response from worker.  It attempts to send it to the collector,
   82  * if the nonblocking fails, then it silently skips it.  So it does not block
   83  * on the log.
   84  */
   85 void dt_collector_submit_auth_response(struct nsd* nsd,
   86 #ifdef INET6
   87     struct sockaddr_storage* local_addr,
   88     struct sockaddr_storage* addr,
   89 #else
   90     struct sockaddr_in* local_addr,
   91     struct sockaddr_in* addr,
   92 #endif
   93     socklen_t addrlen, int is_tcp, struct buffer* packet,
   94     struct zone* zone);
   95 
   96 #endif /* DNSTAP_COLLECTOR_H */