Blame


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