Blame


1 3e0d8fb3 2005-12-27 devnull #define OUdphdrsize Udphdrsize
2 3e0d8fb3 2005-12-27 devnull #define OUdphdr Udphdr
3 3e0d8fb3 2005-12-27 devnull
4 3e0d8fb3 2005-12-27 devnull enum
5 3e0d8fb3 2005-12-27 devnull {
6 3e0d8fb3 2005-12-27 devnull /* RR types */
7 3e0d8fb3 2005-12-27 devnull Ta= 1,
8 3e0d8fb3 2005-12-27 devnull Tns= 2,
9 3e0d8fb3 2005-12-27 devnull Tmd= 3,
10 3e0d8fb3 2005-12-27 devnull Tmf= 4,
11 3e0d8fb3 2005-12-27 devnull Tcname= 5,
12 3e0d8fb3 2005-12-27 devnull Tsoa= 6,
13 3e0d8fb3 2005-12-27 devnull Tmb= 7,
14 3e0d8fb3 2005-12-27 devnull Tmg= 8,
15 3e0d8fb3 2005-12-27 devnull Tmr= 9,
16 3e0d8fb3 2005-12-27 devnull Tnull= 10,
17 3e0d8fb3 2005-12-27 devnull Twks= 11,
18 3e0d8fb3 2005-12-27 devnull Tptr= 12,
19 3e0d8fb3 2005-12-27 devnull Thinfo= 13,
20 3e0d8fb3 2005-12-27 devnull Tminfo= 14,
21 3e0d8fb3 2005-12-27 devnull Tmx= 15,
22 3e0d8fb3 2005-12-27 devnull Ttxt= 16,
23 3e0d8fb3 2005-12-27 devnull Trp= 17,
24 3e0d8fb3 2005-12-27 devnull Tsig= 24,
25 3e0d8fb3 2005-12-27 devnull Tkey= 25,
26 3e0d8fb3 2005-12-27 devnull Taaaa= 28,
27 3e0d8fb3 2005-12-27 devnull Tcert= 37,
28 3e0d8fb3 2005-12-27 devnull
29 3e0d8fb3 2005-12-27 devnull /* query types (all RR types are also queries) */
30 3e0d8fb3 2005-12-27 devnull Tixfr= 251, /* incremental zone transfer */
31 3e0d8fb3 2005-12-27 devnull Taxfr= 252, /* zone transfer */
32 3e0d8fb3 2005-12-27 devnull Tmailb= 253, /* { Tmb, Tmg, Tmr } */
33 3e0d8fb3 2005-12-27 devnull Tall= 255, /* all records */
34 3e0d8fb3 2005-12-27 devnull
35 3e0d8fb3 2005-12-27 devnull /* classes */
36 3e0d8fb3 2005-12-27 devnull Csym= 0, /* internal symbols */
37 3e0d8fb3 2005-12-27 devnull Cin= 1, /* internet */
38 3e0d8fb3 2005-12-27 devnull Ccs, /* CSNET (obsolete) */
39 3e0d8fb3 2005-12-27 devnull Cch, /* Chaos net */
40 3e0d8fb3 2005-12-27 devnull Chs, /* Hesiod (?) */
41 3e0d8fb3 2005-12-27 devnull
42 3e0d8fb3 2005-12-27 devnull /* class queries (all class types are also queries) */
43 3e0d8fb3 2005-12-27 devnull Call= 255, /* all classes */
44 3e0d8fb3 2005-12-27 devnull
45 3e0d8fb3 2005-12-27 devnull /* opcodes */
46 3e0d8fb3 2005-12-27 devnull Oquery= 0<<11, /* normal query */
47 3e0d8fb3 2005-12-27 devnull Oinverse= 1<<11, /* inverse query */
48 3e0d8fb3 2005-12-27 devnull Ostatus= 2<<11, /* status request */
49 3e0d8fb3 2005-12-27 devnull Onotify= 4<<11, /* notify slaves of updates */
50 3e0d8fb3 2005-12-27 devnull Omask= 0xf<<11, /* mask for opcode */
51 3e0d8fb3 2005-12-27 devnull
52 3e0d8fb3 2005-12-27 devnull /* response codes */
53 3e0d8fb3 2005-12-27 devnull Rok= 0,
54 3e0d8fb3 2005-12-27 devnull Rformat= 1, /* format error */
55 3e0d8fb3 2005-12-27 devnull Rserver= 2, /* server failure (e.g. no answer from something) */
56 3e0d8fb3 2005-12-27 devnull Rname= 3, /* bad name */
57 3e0d8fb3 2005-12-27 devnull Runimplimented= 4, /* unimplemented */
58 3e0d8fb3 2005-12-27 devnull Rrefused= 5, /* we don't like you */
59 3e0d8fb3 2005-12-27 devnull Rmask= 0xf, /* mask for response */
60 3e0d8fb3 2005-12-27 devnull Rtimeout= 0x10, /* timeout sending (for internal use only) */
61 3e0d8fb3 2005-12-27 devnull
62 3e0d8fb3 2005-12-27 devnull /* bits in flag word (other than opcode and response) */
63 3e0d8fb3 2005-12-27 devnull Fresp= 1<<15, /* message is a response */
64 3e0d8fb3 2005-12-27 devnull Fauth= 1<<10, /* true if an authoritative response */
65 3e0d8fb3 2005-12-27 devnull Ftrunc= 1<<9, /* truncated message */
66 3e0d8fb3 2005-12-27 devnull Frecurse= 1<<8, /* request recursion */
67 3e0d8fb3 2005-12-27 devnull Fcanrec= 1<<7, /* server can recurse */
68 3e0d8fb3 2005-12-27 devnull
69 3e0d8fb3 2005-12-27 devnull Domlen= 256, /* max domain name length (with NULL) */
70 3e0d8fb3 2005-12-27 devnull Labellen= 256, /* max domain label length (with NULL) */
71 3e0d8fb3 2005-12-27 devnull Strlen= 256, /* max string length (with NULL) */
72 3e0d8fb3 2005-12-27 devnull Iplen= 32, /* max ascii ip address length (with NULL) */
73 3e0d8fb3 2005-12-27 devnull
74 3e0d8fb3 2005-12-27 devnull /* time to live values (in seconds) */
75 3e0d8fb3 2005-12-27 devnull Min= 60,
76 3e0d8fb3 2005-12-27 devnull Hour= 60*Min, /* */
77 3e0d8fb3 2005-12-27 devnull Day= 24*Hour, /* Ta, Tmx */
78 3e0d8fb3 2005-12-27 devnull Week= 7*Day, /* Tsoa, Tns */
79 3e0d8fb3 2005-12-27 devnull Year= 52*Week,
80 3e0d8fb3 2005-12-27 devnull DEFTTL= Day,
81 3e0d8fb3 2005-12-27 devnull
82 3e0d8fb3 2005-12-27 devnull /* reserved time (can't be timed out earlier) */
83 3e0d8fb3 2005-12-27 devnull Reserved= 5*Min,
84 3e0d8fb3 2005-12-27 devnull
85 3e0d8fb3 2005-12-27 devnull /* packet sizes */
86 3e0d8fb3 2005-12-27 devnull Maxudp= 512, /* maximum bytes per udp message */
87 3e0d8fb3 2005-12-27 devnull Maxudpin= 2048, /* maximum bytes per udp message */
88 3e0d8fb3 2005-12-27 devnull
89 3e0d8fb3 2005-12-27 devnull /* length of domain name hash table */
90 3e0d8fb3 2005-12-27 devnull HTLEN= 4*1024,
91 3e0d8fb3 2005-12-27 devnull
92 3e0d8fb3 2005-12-27 devnull RRmagic= 0xdeadbabe,
93 3e0d8fb3 2005-12-27 devnull DNmagic= 0xa110a110,
94 3e0d8fb3 2005-12-27 devnull
95 3e0d8fb3 2005-12-27 devnull /* parallelism */
96 3e0d8fb3 2005-12-27 devnull Maxactive= 32,
97 3e0d8fb3 2005-12-27 devnull };
98 3e0d8fb3 2005-12-27 devnull
99 3e0d8fb3 2005-12-27 devnull typedef struct DN DN;
100 3e0d8fb3 2005-12-27 devnull typedef struct DNSmsg DNSmsg;
101 3e0d8fb3 2005-12-27 devnull typedef struct RR RR;
102 3e0d8fb3 2005-12-27 devnull typedef struct SOA SOA;
103 3e0d8fb3 2005-12-27 devnull typedef struct Area Area;
104 3e0d8fb3 2005-12-27 devnull typedef struct Request Request;
105 3e0d8fb3 2005-12-27 devnull typedef struct Key Key;
106 3e0d8fb3 2005-12-27 devnull typedef struct Cert Cert;
107 3e0d8fb3 2005-12-27 devnull typedef struct Sig Sig;
108 3e0d8fb3 2005-12-27 devnull typedef struct Null Null;
109 3e0d8fb3 2005-12-27 devnull typedef struct Server Server;
110 3e0d8fb3 2005-12-27 devnull typedef struct Txt Txt;
111 3e0d8fb3 2005-12-27 devnull
112 3e0d8fb3 2005-12-27 devnull /*
113 3e0d8fb3 2005-12-27 devnull * a structure to track a request and any slave process handling it
114 3e0d8fb3 2005-12-27 devnull */
115 3e0d8fb3 2005-12-27 devnull struct Request
116 3e0d8fb3 2005-12-27 devnull {
117 3e0d8fb3 2005-12-27 devnull int isslave; /* pid of slave */
118 3e0d8fb3 2005-12-27 devnull ulong aborttime; /* time at which we give up */
119 3e0d8fb3 2005-12-27 devnull jmp_buf mret; /* where master jumps to after starting a slave */
120 3e0d8fb3 2005-12-27 devnull int id;
121 3e0d8fb3 2005-12-27 devnull };
122 3e0d8fb3 2005-12-27 devnull
123 3e0d8fb3 2005-12-27 devnull /*
124 3e0d8fb3 2005-12-27 devnull * a domain name
125 3e0d8fb3 2005-12-27 devnull */
126 3e0d8fb3 2005-12-27 devnull struct DN
127 3e0d8fb3 2005-12-27 devnull {
128 3e0d8fb3 2005-12-27 devnull DN *next; /* hash collision list */
129 3e0d8fb3 2005-12-27 devnull ulong magic;
130 3e0d8fb3 2005-12-27 devnull char *name; /* owner */
131 3e0d8fb3 2005-12-27 devnull RR *rr; /* resource records off this name */
132 3e0d8fb3 2005-12-27 devnull ulong referenced; /* time last referenced */
133 3e0d8fb3 2005-12-27 devnull ulong lookuptime; /* last time we tried to get a better value */
134 3e0d8fb3 2005-12-27 devnull ushort class; /* RR class */
135 3e0d8fb3 2005-12-27 devnull char refs; /* for mark and sweep */
136 3e0d8fb3 2005-12-27 devnull char nonexistent; /* true if we get an authoritative nx for this domain */
137 3e0d8fb3 2005-12-27 devnull ulong ordinal;
138 3e0d8fb3 2005-12-27 devnull };
139 3e0d8fb3 2005-12-27 devnull
140 3e0d8fb3 2005-12-27 devnull /*
141 3e0d8fb3 2005-12-27 devnull * security info
142 3e0d8fb3 2005-12-27 devnull */
143 3e0d8fb3 2005-12-27 devnull struct Key
144 3e0d8fb3 2005-12-27 devnull {
145 3e0d8fb3 2005-12-27 devnull int flags;
146 3e0d8fb3 2005-12-27 devnull int proto;
147 3e0d8fb3 2005-12-27 devnull int alg;
148 3e0d8fb3 2005-12-27 devnull int dlen;
149 3e0d8fb3 2005-12-27 devnull uchar *data;
150 3e0d8fb3 2005-12-27 devnull };
151 3e0d8fb3 2005-12-27 devnull struct Cert
152 3e0d8fb3 2005-12-27 devnull {
153 3e0d8fb3 2005-12-27 devnull int type;
154 3e0d8fb3 2005-12-27 devnull int tag;
155 3e0d8fb3 2005-12-27 devnull int alg;
156 3e0d8fb3 2005-12-27 devnull int dlen;
157 3e0d8fb3 2005-12-27 devnull uchar *data;
158 3e0d8fb3 2005-12-27 devnull };
159 3e0d8fb3 2005-12-27 devnull struct Sig
160 3e0d8fb3 2005-12-27 devnull {
161 3e0d8fb3 2005-12-27 devnull int type;
162 3e0d8fb3 2005-12-27 devnull int alg;
163 3e0d8fb3 2005-12-27 devnull int labels;
164 3e0d8fb3 2005-12-27 devnull ulong ttl;
165 3e0d8fb3 2005-12-27 devnull ulong exp;
166 3e0d8fb3 2005-12-27 devnull ulong incep;
167 3e0d8fb3 2005-12-27 devnull int tag;
168 3e0d8fb3 2005-12-27 devnull DN *signer;
169 3e0d8fb3 2005-12-27 devnull int dlen;
170 3e0d8fb3 2005-12-27 devnull uchar *data;
171 3e0d8fb3 2005-12-27 devnull };
172 3e0d8fb3 2005-12-27 devnull struct Null
173 3e0d8fb3 2005-12-27 devnull {
174 3e0d8fb3 2005-12-27 devnull int dlen;
175 3e0d8fb3 2005-12-27 devnull uchar *data;
176 3e0d8fb3 2005-12-27 devnull };
177 3e0d8fb3 2005-12-27 devnull
178 3e0d8fb3 2005-12-27 devnull /*
179 3e0d8fb3 2005-12-27 devnull * text strings
180 3e0d8fb3 2005-12-27 devnull */
181 3e0d8fb3 2005-12-27 devnull struct Txt
182 3e0d8fb3 2005-12-27 devnull {
183 3e0d8fb3 2005-12-27 devnull Txt *next;
184 3e0d8fb3 2005-12-27 devnull char *p;
185 3e0d8fb3 2005-12-27 devnull };
186 3e0d8fb3 2005-12-27 devnull
187 3e0d8fb3 2005-12-27 devnull /*
188 3e0d8fb3 2005-12-27 devnull * an unpacked resource record
189 3e0d8fb3 2005-12-27 devnull */
190 3e0d8fb3 2005-12-27 devnull struct RR
191 3e0d8fb3 2005-12-27 devnull {
192 3e0d8fb3 2005-12-27 devnull RR *next;
193 3e0d8fb3 2005-12-27 devnull ulong magic;
194 3e0d8fb3 2005-12-27 devnull DN *owner; /* domain that owns this resource record */
195 3e0d8fb3 2005-12-27 devnull uchar negative; /* this is a cached negative response */
196 3e0d8fb3 2005-12-27 devnull ulong pc;
197 3e0d8fb3 2005-12-27 devnull ulong ttl; /* time to live to be passed on */
198 3e0d8fb3 2005-12-27 devnull ulong expire; /* time this entry expires locally */
199 3e0d8fb3 2005-12-27 devnull ushort type; /* RR type */
200 3e0d8fb3 2005-12-27 devnull ushort query; /* query tyis is in response to */
201 3e0d8fb3 2005-12-27 devnull uchar auth; /* authoritative */
202 3e0d8fb3 2005-12-27 devnull uchar db; /* from database */
203 3e0d8fb3 2005-12-27 devnull uchar cached; /* rr in cache */
204 3e0d8fb3 2005-12-27 devnull ulong marker; /* used locally when scanning rrlists */
205 3e0d8fb3 2005-12-27 devnull union {
206 3e0d8fb3 2005-12-27 devnull DN *negsoaowner; /* soa for cached negative response */
207 3e0d8fb3 2005-12-27 devnull DN *host; /* hostname - soa, cname, mb, md, mf, mx, ns */
208 3e0d8fb3 2005-12-27 devnull DN *cpu; /* cpu type - hinfo */
209 3e0d8fb3 2005-12-27 devnull DN *mb; /* mailbox - mg, minfo */
210 3e0d8fb3 2005-12-27 devnull DN *ip; /* ip addrss - a */
211 3e0d8fb3 2005-12-27 devnull DN *rp; /* rp arg - rp */
212 3e0d8fb3 2005-12-27 devnull int cruftlen;
213 3e0d8fb3 2005-12-27 devnull ulong arg0;
214 3e0d8fb3 2005-12-27 devnull };
215 3e0d8fb3 2005-12-27 devnull union {
216 3e0d8fb3 2005-12-27 devnull int negrcode; /* response code for cached negative response */
217 3e0d8fb3 2005-12-27 devnull DN *rmb; /* responsible maibox - minfo, soa, rp */
218 3e0d8fb3 2005-12-27 devnull DN *ptr; /* pointer to domain name - ptr */
219 3e0d8fb3 2005-12-27 devnull DN *os; /* operating system - hinfo */
220 3e0d8fb3 2005-12-27 devnull ulong pref; /* preference value - mx */
221 3e0d8fb3 2005-12-27 devnull ulong local; /* ns served from local database - ns */
222 3e0d8fb3 2005-12-27 devnull ulong arg1;
223 3e0d8fb3 2005-12-27 devnull };
224 3e0d8fb3 2005-12-27 devnull union {
225 3e0d8fb3 2005-12-27 devnull SOA *soa; /* soa timers - soa */
226 3e0d8fb3 2005-12-27 devnull Key *key;
227 3e0d8fb3 2005-12-27 devnull Cert *cert;
228 3e0d8fb3 2005-12-27 devnull Sig *sig;
229 3e0d8fb3 2005-12-27 devnull Null *null;
230 3e0d8fb3 2005-12-27 devnull Txt *txt;
231 3e0d8fb3 2005-12-27 devnull };
232 3e0d8fb3 2005-12-27 devnull };
233 3e0d8fb3 2005-12-27 devnull
234 3e0d8fb3 2005-12-27 devnull /*
235 3e0d8fb3 2005-12-27 devnull * list of servers
236 3e0d8fb3 2005-12-27 devnull */
237 3e0d8fb3 2005-12-27 devnull struct Server
238 3e0d8fb3 2005-12-27 devnull {
239 3e0d8fb3 2005-12-27 devnull Server *next;
240 3e0d8fb3 2005-12-27 devnull char *name;
241 3e0d8fb3 2005-12-27 devnull };
242 3e0d8fb3 2005-12-27 devnull
243 3e0d8fb3 2005-12-27 devnull /*
244 3e0d8fb3 2005-12-27 devnull * timers for a start of authenticated record
245 3e0d8fb3 2005-12-27 devnull */
246 3e0d8fb3 2005-12-27 devnull struct SOA
247 3e0d8fb3 2005-12-27 devnull {
248 3e0d8fb3 2005-12-27 devnull ulong serial; /* zone serial # (sec) - soa */
249 3e0d8fb3 2005-12-27 devnull ulong refresh; /* zone refresh interval (sec) - soa */
250 3e0d8fb3 2005-12-27 devnull ulong retry; /* zone retry interval (sec) - soa */
251 3e0d8fb3 2005-12-27 devnull ulong expire; /* time to expiration (sec) - soa */
252 3e0d8fb3 2005-12-27 devnull ulong minttl; /* minimum time to live for any entry (sec) - soa */
253 3e0d8fb3 2005-12-27 devnull Server *slaves; /* slave servers */
254 3e0d8fb3 2005-12-27 devnull };
255 3e0d8fb3 2005-12-27 devnull
256 3e0d8fb3 2005-12-27 devnull /*
257 3e0d8fb3 2005-12-27 devnull * domain messages
258 3e0d8fb3 2005-12-27 devnull */
259 3e0d8fb3 2005-12-27 devnull struct DNSmsg
260 3e0d8fb3 2005-12-27 devnull {
261 3e0d8fb3 2005-12-27 devnull ushort id;
262 3e0d8fb3 2005-12-27 devnull int flags;
263 3e0d8fb3 2005-12-27 devnull int qdcount; /* questions */
264 3e0d8fb3 2005-12-27 devnull RR *qd;
265 3e0d8fb3 2005-12-27 devnull int ancount; /* answers */
266 3e0d8fb3 2005-12-27 devnull RR *an;
267 3e0d8fb3 2005-12-27 devnull int nscount; /* name servers */
268 3e0d8fb3 2005-12-27 devnull RR *ns;
269 3e0d8fb3 2005-12-27 devnull int arcount; /* hints */
270 3e0d8fb3 2005-12-27 devnull RR *ar;
271 3e0d8fb3 2005-12-27 devnull };
272 3e0d8fb3 2005-12-27 devnull
273 3e0d8fb3 2005-12-27 devnull /*
274 3e0d8fb3 2005-12-27 devnull * definition of local area for dblookup
275 3e0d8fb3 2005-12-27 devnull */
276 3e0d8fb3 2005-12-27 devnull struct Area
277 3e0d8fb3 2005-12-27 devnull {
278 3e0d8fb3 2005-12-27 devnull Area *next;
279 3e0d8fb3 2005-12-27 devnull
280 3e0d8fb3 2005-12-27 devnull int len; /* strlen(area->soarr->owner->name) */
281 3e0d8fb3 2005-12-27 devnull RR *soarr; /* soa defining this area */
282 3e0d8fb3 2005-12-27 devnull int neednotify;
283 3e0d8fb3 2005-12-27 devnull int needrefresh;
284 3e0d8fb3 2005-12-27 devnull };
285 3e0d8fb3 2005-12-27 devnull
286 3e0d8fb3 2005-12-27 devnull enum
287 3e0d8fb3 2005-12-27 devnull {
288 3e0d8fb3 2005-12-27 devnull Recurse,
289 3e0d8fb3 2005-12-27 devnull Dontrecurse,
290 3e0d8fb3 2005-12-27 devnull NOneg,
291 3e0d8fb3 2005-12-27 devnull OKneg,
292 3e0d8fb3 2005-12-27 devnull };
293 3e0d8fb3 2005-12-27 devnull
294 3e0d8fb3 2005-12-27 devnull /* dn.c */
295 3e0d8fb3 2005-12-27 devnull extern char *rrtname[];
296 3e0d8fb3 2005-12-27 devnull extern char *rname[];
297 3e0d8fb3 2005-12-27 devnull extern char *opname[];
298 3e0d8fb3 2005-12-27 devnull extern void db2cache(int);
299 3e0d8fb3 2005-12-27 devnull extern void dninit(void);
300 3e0d8fb3 2005-12-27 devnull extern DN* dnlookup(char*, int, int);
301 3e0d8fb3 2005-12-27 devnull extern void dnage(DN*);
302 3e0d8fb3 2005-12-27 devnull extern void dnageall(int);
303 3e0d8fb3 2005-12-27 devnull extern void dnagedb(void);
304 3e0d8fb3 2005-12-27 devnull extern void dnauthdb(void);
305 3e0d8fb3 2005-12-27 devnull extern void dnget(void);
306 3e0d8fb3 2005-12-27 devnull extern void dnpurge(void);
307 3e0d8fb3 2005-12-27 devnull extern void dnput(void);
308 3e0d8fb3 2005-12-27 devnull extern Area* inmyarea(char*);
309 3e0d8fb3 2005-12-27 devnull extern void rrattach(RR*, int);
310 3e0d8fb3 2005-12-27 devnull extern RR* rralloc(int);
311 3e0d8fb3 2005-12-27 devnull extern void rrfree(RR*);
312 3e0d8fb3 2005-12-27 devnull extern void rrfreelist(RR*);
313 3e0d8fb3 2005-12-27 devnull extern RR* rrlookup(DN*, int, int);
314 3e0d8fb3 2005-12-27 devnull extern RR* rrcat(RR**, RR*);
315 3e0d8fb3 2005-12-27 devnull extern RR** rrcopy(RR*, RR**);
316 3e0d8fb3 2005-12-27 devnull extern RR* rrremneg(RR**);
317 3e0d8fb3 2005-12-27 devnull extern RR* rrremtype(RR**, int);
318 3e0d8fb3 2005-12-27 devnull extern int rrfmt(Fmt*);
319 3e0d8fb3 2005-12-27 devnull extern int rravfmt(Fmt*);
320 3e0d8fb3 2005-12-27 devnull extern int rrsupported(int);
321 3e0d8fb3 2005-12-27 devnull extern int rrtype(char*);
322 3e0d8fb3 2005-12-27 devnull extern char* rrname(int, char*, int);
323 3e0d8fb3 2005-12-27 devnull extern int tsame(int, int);
324 3e0d8fb3 2005-12-27 devnull extern void dndump(char*);
325 3e0d8fb3 2005-12-27 devnull extern int getactivity(Request*);
326 3e0d8fb3 2005-12-27 devnull extern void putactivity(void);
327 3e0d8fb3 2005-12-27 devnull extern void abort(); /* char*, ... */;
328 3e0d8fb3 2005-12-27 devnull extern void warning(char*, ...);
329 3e0d8fb3 2005-12-27 devnull extern void slave(Request*);
330 3e0d8fb3 2005-12-27 devnull extern void dncheck(void*, int);
331 3e0d8fb3 2005-12-27 devnull extern void unique(RR*);
332 3e0d8fb3 2005-12-27 devnull extern int subsume(char*, char*);
333 3e0d8fb3 2005-12-27 devnull extern RR* randomize(RR*);
334 3e0d8fb3 2005-12-27 devnull extern void* emalloc(int);
335 3e0d8fb3 2005-12-27 devnull extern char* estrdup(char*);
336 3e0d8fb3 2005-12-27 devnull extern void dnptr(uchar*, uchar*, char*, int, int);
337 3e0d8fb3 2005-12-27 devnull extern void addserver(Server**, char*);
338 3e0d8fb3 2005-12-27 devnull extern Server* copyserverlist(Server*);
339 3e0d8fb3 2005-12-27 devnull extern void freeserverlist(Server*);
340 3e0d8fb3 2005-12-27 devnull
341 3e0d8fb3 2005-12-27 devnull /* dnarea.c */
342 3e0d8fb3 2005-12-27 devnull extern void refresh_areas(Area*);
343 3e0d8fb3 2005-12-27 devnull extern void freearea(Area**);
344 3e0d8fb3 2005-12-27 devnull extern void addarea(DN *dp, RR *rp, Ndbtuple *t);
345 3e0d8fb3 2005-12-27 devnull
346 3e0d8fb3 2005-12-27 devnull /* dblookup.c */
347 3e0d8fb3 2005-12-27 devnull extern RR* dblookup(char*, int, int, int, int);
348 3e0d8fb3 2005-12-27 devnull extern RR* dbinaddr(DN*, int);
349 3e0d8fb3 2005-12-27 devnull extern int baddelegation(RR*, RR*, uchar*);
350 3e0d8fb3 2005-12-27 devnull extern RR* dnsservers(int);
351 3e0d8fb3 2005-12-27 devnull extern RR* domainlist(int);
352 3e0d8fb3 2005-12-27 devnull extern int opendatabase(void);
353 3e0d8fb3 2005-12-27 devnull
354 3e0d8fb3 2005-12-27 devnull /* dns.c */
355 3e0d8fb3 2005-12-27 devnull extern char* walkup(char*);
356 3e0d8fb3 2005-12-27 devnull extern RR* getdnsservers(int);
357 3e0d8fb3 2005-12-27 devnull extern void logreply(int, uchar*, DNSmsg*);
358 3e0d8fb3 2005-12-27 devnull extern void logsend(int, int, uchar*, char*, char*, int);
359 3e0d8fb3 2005-12-27 devnull
360 3e0d8fb3 2005-12-27 devnull /* dnresolve.c */
361 3e0d8fb3 2005-12-27 devnull extern RR* dnresolve(char*, int, int, Request*, RR**, int, int, int, int*);
362 3e0d8fb3 2005-12-27 devnull extern int udpport(void);
363 3e0d8fb3 2005-12-27 devnull extern int mkreq(DN *dp, int type, uchar *buf, int flags, ushort reqno);
364 3e0d8fb3 2005-12-27 devnull
365 3e0d8fb3 2005-12-27 devnull /* dnserver.c */
366 3e0d8fb3 2005-12-27 devnull extern void dnserver(DNSmsg*, DNSmsg*, Request*);
367 3e0d8fb3 2005-12-27 devnull extern void dntcpserver(char*);
368 3e0d8fb3 2005-12-27 devnull
369 3e0d8fb3 2005-12-27 devnull /* dnnotify.c */
370 3e0d8fb3 2005-12-27 devnull extern void dnnotify(DNSmsg*, DNSmsg*, Request*);
371 3e0d8fb3 2005-12-27 devnull extern void notifyproc(void);
372 3e0d8fb3 2005-12-27 devnull
373 3e0d8fb3 2005-12-27 devnull /* convDNS2M.c */
374 3e0d8fb3 2005-12-27 devnull extern int convDNS2M(DNSmsg*, uchar*, int);
375 3e0d8fb3 2005-12-27 devnull
376 3e0d8fb3 2005-12-27 devnull /* convM2DNS.c */
377 3e0d8fb3 2005-12-27 devnull extern char* convM2DNS(uchar*, int, DNSmsg*);
378 3e0d8fb3 2005-12-27 devnull
379 3e0d8fb3 2005-12-27 devnull /* malloc.c */
380 3e0d8fb3 2005-12-27 devnull extern void mallocsanity(void*);
381 3e0d8fb3 2005-12-27 devnull extern void lasthist(void*, int, ulong);
382 3e0d8fb3 2005-12-27 devnull
383 3e0d8fb3 2005-12-27 devnull extern int debug;
384 3e0d8fb3 2005-12-27 devnull extern int traceactivity;
385 3e0d8fb3 2005-12-27 devnull extern char *trace;
386 3e0d8fb3 2005-12-27 devnull extern int testing; /* test cache whenever removing a DN */
387 3e0d8fb3 2005-12-27 devnull extern int cachedb;
388 3e0d8fb3 2005-12-27 devnull extern int needrefresh;
389 3e0d8fb3 2005-12-27 devnull extern char *dbfile;
390 3e0d8fb3 2005-12-27 devnull extern char mntpt[];
391 3e0d8fb3 2005-12-27 devnull extern char *logfile;
392 3e0d8fb3 2005-12-27 devnull extern int resolver;
393 3e0d8fb3 2005-12-27 devnull extern int maxage; /* age of oldest entry in cache (secs) */
394 3e0d8fb3 2005-12-27 devnull extern char *zonerefreshprogram;
395 3e0d8fb3 2005-12-27 devnull extern int sendnotifies;
396 3e0d8fb3 2005-12-27 devnull extern ulong now; /* time base */
397 3e0d8fb3 2005-12-27 devnull extern Area *owned;
398 3e0d8fb3 2005-12-27 devnull extern Area *delegated;
399 3e0d8fb3 2005-12-27 devnull
400 3e0d8fb3 2005-12-27 devnull #pragma varargck type "R" RR*
401 3e0d8fb3 2005-12-27 devnull #pragma varargck type "Q" RR*
402 3e0d8fb3 2005-12-27 devnull