chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanups, development.
[adns]
/
src
/
adns-internal.h
diff --git
a/src/adns-internal.h
b/src/adns-internal.h
index cabb271604a910dab677262291af26058361b2ad..7caba2f6d9db024cbe701c3b279a6b522f4c32f7 100644
(file)
--- a/
src/adns-internal.h
+++ b/
src/adns-internal.h
@@
-3,35
+3,64
@@
#ifndef ADNS_INTERNAL_H_INCLUDED
#define ADNS_INTERNAL_H_INCLUDED
#ifndef ADNS_INTERNAL_H_INCLUDED
#define ADNS_INTERNAL_H_INCLUDED
+#include <sys/time.h>
+
#include "adns.h"
#define MAXSERVERS 5
#include "adns.h"
#define MAXSERVERS 5
-#define MAXUDPRETRIES 1
0
+#define MAXUDPRETRIES 1
5
#define UDPRETRYMS 2000
#define UDPRETRYMS 2000
-#define TCPMS 20000
+#define TCPMS 30000
+#define LOCALRESOURCEMS 20
+
+union adns__align {
+ adns_status status;
+ char *cp;
+ adns_rrtype type;
+ int int;
+ struct in_addr ia;
+ unsigned long ul;
+};
struct adns__query {
struct adns__query {
- adns_query next, back;
- adns_query parent, child;
+ adns_query back, next;
+ adns_query parent;
+ struct { adns_query head, tail; } children;
+ struct { adns_query back, next; } siblings;
adns_rrtype type;
adns_rrtype type;
- stuct adns_answer *answer;
- int flags, udpretries, server;
+ adns_answer *answer;
+ size_t ansalloc; ansused;
+ int id, flags, udpretries; /* udpretries==-1 => _f_usevc or too big for UDP */
+ int nextudpserver;
+ unsigned long sentudp, senttcp; /* bitmaps indexed by server */
struct timeval timeout;
void *context;
struct timeval timeout;
void *context;
+ unsigned char *querymsg;
+ int querylen;
char owner[1];
char owner[1];
+ /* Possible states:
+ * Queue child id answer nextserver sentudp senttcp
+ * tosend null >=0 null any any any
+ * timew null >=0 null any at least 1 bit set any
+ * childw set >=0 partial any any any
+ * output null -1 set/null any any any
+ */
};
struct adns__state {
};
struct adns__state {
- struct { adns_query head, tail } input, timew, childw, output;
- int udpsocket;
+ adns_initflags iflags;
+ struct { adns_query head, tail; } tosend, timew, childw, output;
+ int nextid, udpsocket;
int qbufavail, tcpbufavail, tcpbufused, tcpbufdone;
int qbufavail, tcpbufavail, tcpbufused, tcpbufdone;
- char *qbuf, *tcpbuf;
- int nservers;
- struct {
+ unsigned char *qbuf, *tcpbuf;
+ int nservers, tcpserver;
+ enum { server_disc, server_connecting, server_ok } tcpstate;
+ int tcpsocket;
+ struct timeval tcptimeout;
+ int opbufavail, opbufused;
+ unsigned char *opbuf;
+ struct server {
struct in_addr addr;
struct in_addr addr;
- int tcpsocket;
- struct timeval timeout;
- struct { adns_query head, tail } connw;
} servers[MAXSERVERS];
};
} servers[MAXSERVERS];
};