-#include <thread.h> /* for Ref */
-
#define NS2MS(ns) ((ns) / 1000000L)
#define S2MS(s) ((s) * 1000LL)
jmp_buf mret; /* where master jumps to after starting a slave */
int id;
char *from; /* who asked us? */
-};
-
-typedef struct Querylck Querylck;
-struct Querylck
-{
- QLock;
-// Rendez;
- Ref;
+ void *aux;
};
/*
char *name; /* owner */
RR *rr; /* resource records off this name */
ulong referenced; /* time last referenced */
- ulong lookuptime; /* last time we tried to get a better value */
- /* refs was `char' but we've seen refs > 120, so go whole hog */
- ulong refs; /* for mark and sweep */
ulong ordinal;
ushort class; /* RR class */
- uchar keep; /* flag: never age this name */
uchar respcode; /* response code */
-/* was: char nonexistent; /* true if we get an authoritative nx for this domain */
- /* permit only 1 query per (domain name, type) at a time */
- Querylck querylck[Maxlcks];
+ uchar mark; /* for mark and sweep */
};
/*
extern Area *owned;
extern int sendnotifies;
extern ulong target;
-extern int testing; /* test cache whenever removing a DN */
extern char *trace;
extern int traceactivity;
extern char *zonerefreshprogram;
void dnage(DN*);
void dnageall(int);
void dnagedb(void);
-void dnageallnever(void);
-void dnagenever(DN *, int);
+void dnagenever(DN *);
void dnauthdb(void);
-void dncheck(void*, int);
void dndump(char*);
-void dnget(void);
void dninit(void);
DN* dnlookup(char*, int, int);
+DN* idnlookup(char*, int, int);
+DN* ipalookup(uchar*, int, int);
void dnptr(uchar*, uchar*, char*, int, int, int);
void dnpurge(void);
-void dnput(void);
void dnslog(char*, ...);
void dnstats(char *file);
void* emalloc(int);
char* rrname(int, char*, int);
RR* rrremneg(RR**);
RR* rrremtype(RR**, int);
+RR* rrremowner(RR**, DN*);
+RR* rrremfilter(RR**, int (*)(RR*, void*), void*);
int rrsupported(int);
int rrtype(char*);
void slave(Request*);
/* dblookup.c */
int baddelegation(RR*, RR*, uchar*);
-RR* dbinaddr(DN*, int);
RR* dblookup(char*, int, int, int, int);
-void dnforceage(void);
RR* dnsservers(int);
RR* domainlist(int);
int insideaddr(char *dom);
int insidens(uchar *ip);
-int myaddr(char *addr);
+int myip(uchar *ip);
int opendatabase(void);
-uchar* outsidens(int);
+int outsidensip(int, uchar *ip);
/* dns.c */
char* walkup(char*);
RR* getdnsservers(int);
void logreply(int, uchar*, DNSmsg*);
void logsend(int, int, uchar*, char*, char*, int);
-void procsetname(char *fmt, ...);
/* dnresolve.c */
RR* dnresolve(char*, int, int, Request*, RR**, int, int, int, int*);
/* dnserver.c */
void dnserver(DNSmsg*, DNSmsg*, Request*, uchar *, int);
void dnudpserver(char*);
-void dntcpserver(char*);
/* dnnotify.c */
void dnnotify(DNSmsg*, DNSmsg*, Request*);