chiark / gitweb /
Sends packet, is apparently OK (tcpdump shows response is OK).
[adns.git] / src / adns-internal.h
1 /**/
2
3 #ifndef ADNS_INTERNAL_H_INCLUDED
4 #define ADNS_INTERNAL_H_INCLUDED
5
6 #include <sys/time.h>
7
8 #include "adns.h"
9
10 #define MAXSERVERS 5
11 #define MAXUDPRETRIES 10
12 #define UDPRETRYMS 2000
13 #define TCPMS 20000
14
15 struct adns__query {
16   adns_query next, back;
17   adns_query parent, child;
18   adns_rrtype type;
19   adns_answer *answer;
20   int id, flags, udpretries, nextserver;
21   unsigned long sentudp, senttcp; /* bitmaps indexed by server */
22   struct timeval timeout;
23   void *context;
24   unsigned char *querymsg;
25   int querylen;
26   char owner[1];
27   /* Possible states:
28    *  Queue   child  id   answer    nextserver  sentudp             senttcp
29    *  tosend  null   >=0  null      any         any                 any
30    *  timew   null   >=0  null      any         at least 1 bit set  any
31    *  childw  set    >=0  partial   any         any                 any
32    *  output  null   -1   set/null  any         any                 any
33    */
34 };
35
36 struct adns__state {
37   adns_initflags iflags;
38   struct { adns_query head, tail; } tosend, timew, childw, output;
39   int nextid, udpsocket;
40   int qbufavail, tcpbufavail, tcpbufused, tcpbufdone;
41   unsigned char *qbuf, *tcpbuf;
42   int nservers;
43   struct server {
44     struct in_addr addr;
45     enum { server_disc, server_connecting, server_ok } state;
46     int tcpsocket;
47     struct timeval timeout;
48     struct { adns_query head, tail; } connw;
49   } servers[MAXSERVERS];
50 };
51
52 #endif