chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Autoconfifying - beginning.
[adns]
/
src
/
internal.h
diff --git
a/src/internal.h
b/src/internal.h
index 33086f68c5350b43d7751cb83d3bd9fa2ca093bb..d878daad34b03f634c68b5c84a5df7ef4074116f 100644
(file)
--- a/
src/internal.h
+++ b/
src/internal.h
@@
-25,7
+25,7
@@
#ifndef ADNS_INTERNAL_H_INCLUDED
#define ADNS_INTERNAL_H_INCLUDED
#ifndef ADNS_INTERNAL_H_INCLUDED
#define ADNS_INTERNAL_H_INCLUDED
-#
define PRINTFFORMAT(a,b) __attribute__((format(printf,a,b)))
+#
include "config.h"
typedef unsigned char byte;
#include <stdarg.h>
typedef unsigned char byte;
#include <stdarg.h>
@@
-39,7
+39,8
@@
typedef unsigned char byte;
/* Configuration and constants */
#define MAXSERVERS 5
/* Configuration and constants */
#define MAXSERVERS 5
-#define UDPMAXRETRIES /*15*/5
+#define MAXSORTLIST 15
+#define UDPMAXRETRIES 15
#define UDPRETRYMS 2000
#define TCPMS 30000
#define LOCALRESOURCEMS 20
#define UDPRETRYMS 2000
#define TCPMS 30000
#define LOCALRESOURCEMS 20
@@
-50,6
+51,8
@@
typedef unsigned char byte;
#define DNS_HDRSIZE 12
#define DNS_CLASS_IN 1
#define DNS_HDRSIZE 12
#define DNS_CLASS_IN 1
+#define DNS_INADDR_ARPA "in-addr", "arpa"
+
typedef enum {
rcode_noerror,
rcode_formaterror,
typedef enum {
rcode_noerror,
rcode_formaterror,
@@
-75,16
+78,6
@@
typedef struct {
byte *buf;
} vbuf;
byte *buf;
} vbuf;
-typedef union {
- void *ext;
- struct {
- void (*callback)(adns_query parent, adns_query child);
- union {
- adns_rr_hostaddr *hostaddr;
- } info;
- } intern;
-} qcontext;
-
typedef struct {
adns_state ads;
adns_query qu;
typedef struct {
adns_state ads;
adns_query qu;
@@
-123,7
+116,7
@@
typedef struct {
* nsstart is the offset of the authority section.
*/
* nsstart is the offset of the authority section.
*/
- int (*diff_needswap)(const void *datap_a, const void *datap_b);
+ int (*diff_needswap)(
adns_state ads,
const void *datap_a, const void *datap_b);
/* Returns !0 if RR a should be strictly after RR b in the sort order,
* 0 otherwise. Must not fail.
*/
/* Returns !0 if RR a should be strictly after RR b in the sort order,
* 0 otherwise. Must not fail.
*/
@@
-142,6
+135,15
@@
union maxalign {
union maxalign *up;
} data;
union maxalign *up;
} data;
+typedef struct {
+ void *ext;
+ void (*callback)(adns_query parent, adns_query child);
+ union {
+ adns_rr_addr ptr_parent_addr;
+ adns_rr_hostaddr *hostaddr;
+ } info;
+} qcontext;
+
struct adns__query {
adns_state ads;
enum { query_udp, query_tcpwait, query_tcpsent, query_child, query_done } state;
struct adns__query {
adns_state ads;
enum { query_udp, query_tcpwait, query_tcpsent, query_child, query_done } state;
@@
-179,7
+181,8
@@
struct adns__query {
int udpnextserver;
unsigned long udpsent, tcpfailed; /* bitmap indexed by server */
struct timeval timeout;
int udpnextserver;
unsigned long udpsent, tcpfailed; /* bitmap indexed by server */
struct timeval timeout;
- qcontext context;
+
+ qcontext ctx;
/* Possible states:
*
/* Possible states:
*
@@
-237,15
+240,19
@@
struct adns__query {
struct adns__state {
adns_initflags iflags;
FILE *diagfile;
struct adns__state {
adns_initflags iflags;
FILE *diagfile;
+ int configerrno;
struct { adns_query head, tail; } timew, childw, output;
int nextid, udpsocket, tcpsocket;
vbuf tcpsend, tcprecv;
struct { adns_query head, tail; } timew, childw, output;
int nextid, udpsocket, tcpsocket;
vbuf tcpsend, tcprecv;
- int nservers, tcpserver;
+ int nservers,
nsortlist,
tcpserver;
enum adns__tcpstate { server_disconnected, server_connecting, server_ok } tcpstate;
struct timeval tcptimeout;
struct server {
struct in_addr addr;
} servers[MAXSERVERS];
enum adns__tcpstate { server_disconnected, server_connecting, server_ok } tcpstate;
struct timeval tcptimeout;
struct server {
struct in_addr addr;
} servers[MAXSERVERS];
+ struct sortlist {
+ struct in_addr base, mask;
+ } sortlist[MAXSORTLIST];
};
/* From setup.c: */
};
/* From setup.c: */
@@
-286,7
+293,8
@@
const char *adns__diag_domain(adns_state ads, int serv, adns_query qu,
*/
void adns__isort(void *array, int nobjs, int sz, void *tempbuf,
*/
void adns__isort(void *array, int nobjs, int sz, void *tempbuf,
- int (*needswap)(const void *a, const void *b));
+ int (*needswap)(void *context, const void *a, const void *b),
+ void *context);
/* Does an insertion sort of array which must contain nobjs objects
* each sz bytes long. tempbuf must point to a buffer at least
* sz bytes long. needswap should return !0 if a>b (strictly, ie
/* Does an insertion sort of array which must contain nobjs objects
* each sz bytes long. tempbuf must point to a buffer at least
* sz bytes long. needswap should return !0 if a>b (strictly, ie