diff options
Diffstat (limited to 'src/lib/libc/net/res_debug.c')
-rw-r--r-- | src/lib/libc/net/res_debug.c | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/src/lib/libc/net/res_debug.c b/src/lib/libc/net/res_debug.c index 2ea9173fe9..f4e4c271ed 100644 --- a/src/lib/libc/net/res_debug.c +++ b/src/lib/libc/net/res_debug.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: res_debug.c,v 1.14 2002/07/25 21:55:30 deraadt Exp $ */ | 1 | /* $OpenBSD: res_debug.c,v 1.15 2003/01/28 04:58:00 marc Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * ++Copyright++ 1985, 1990, 1993 | 4 | * ++Copyright++ 1985, 1990, 1993 |
@@ -82,7 +82,7 @@ | |||
82 | static char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93"; | 82 | static char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93"; |
83 | static char rcsid[] = "$From: res_debug.c,v 8.19 1996/11/26 10:11:23 vixie Exp $"; | 83 | static char rcsid[] = "$From: res_debug.c,v 8.19 1996/11/26 10:11:23 vixie Exp $"; |
84 | #else | 84 | #else |
85 | static char rcsid[] = "$OpenBSD: res_debug.c,v 1.14 2002/07/25 21:55:30 deraadt Exp $"; | 85 | static char rcsid[] = "$OpenBSD: res_debug.c,v 1.15 2003/01/28 04:58:00 marc Exp $"; |
86 | #endif | 86 | #endif |
87 | #endif /* LIBC_SCCS and not lint */ | 87 | #endif /* LIBC_SCCS and not lint */ |
88 | 88 | ||
@@ -102,6 +102,8 @@ static char rcsid[] = "$OpenBSD: res_debug.c,v 1.14 2002/07/25 21:55:30 deraadt | |||
102 | #include <stdlib.h> | 102 | #include <stdlib.h> |
103 | #include <string.h> | 103 | #include <string.h> |
104 | 104 | ||
105 | #include "thread_private.h" | ||
106 | |||
105 | extern const char *_res_opcodes[]; | 107 | extern const char *_res_opcodes[]; |
106 | extern const char *_res_resultcodes[]; | 108 | extern const char *_res_resultcodes[]; |
107 | 109 | ||
@@ -200,19 +202,20 @@ do_rrset(msg, len, cp, cnt, pflag, file, hs) | |||
200 | const char *hs; | 202 | const char *hs; |
201 | FILE *file; | 203 | FILE *file; |
202 | { | 204 | { |
205 | struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); | ||
203 | int n; | 206 | int n; |
204 | int sflag; | 207 | int sflag; |
205 | 208 | ||
206 | /* | 209 | /* |
207 | * Print answer records. | 210 | * Print answer records. |
208 | */ | 211 | */ |
209 | sflag = (_res.pfcode & pflag); | 212 | sflag = (_resp->pfcode & pflag); |
210 | if ((n = ntohs(cnt))) { | 213 | if ((n = ntohs(cnt))) { |
211 | if ((!_res.pfcode) || | 214 | if ((!_resp->pfcode) || |
212 | ((sflag) && (_res.pfcode & RES_PRF_HEAD1))) | 215 | ((sflag) && (_resp->pfcode & RES_PRF_HEAD1))) |
213 | fprintf(file, "%s", hs); | 216 | fprintf(file, "%s", hs); |
214 | while (--n >= 0) { | 217 | while (--n >= 0) { |
215 | if ((!_res.pfcode) || sflag) { | 218 | if ((!_resp->pfcode) || sflag) { |
216 | cp = p_rr(cp, msg, file); | 219 | cp = p_rr(cp, msg, file); |
217 | } else { | 220 | } else { |
218 | unsigned int dlen; | 221 | unsigned int dlen; |
@@ -227,8 +230,8 @@ do_rrset(msg, len, cp, cnt, pflag, file, hs) | |||
227 | if ((cp - msg) > len) | 230 | if ((cp - msg) > len) |
228 | return (NULL); | 231 | return (NULL); |
229 | } | 232 | } |
230 | if ((!_res.pfcode) || | 233 | if ((!_resp->pfcode) || |
231 | ((sflag) && (_res.pfcode & RES_PRF_HEAD1))) | 234 | ((sflag) && (_resp->pfcode & RES_PRF_HEAD1))) |
232 | putc('\n', file); | 235 | putc('\n', file); |
233 | } | 236 | } |
234 | return (cp); | 237 | return (cp); |
@@ -271,11 +274,12 @@ __fp_nquery(msg, len, file) | |||
271 | int len; | 274 | int len; |
272 | FILE *file; | 275 | FILE *file; |
273 | { | 276 | { |
277 | struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); | ||
274 | register const u_char *cp, *endMark; | 278 | register const u_char *cp, *endMark; |
275 | register const HEADER *hp; | 279 | register const HEADER *hp; |
276 | register int n; | 280 | register int n; |
277 | 281 | ||
278 | if ((_res.options & RES_INIT) == 0 && res_init() == -1) | 282 | if ((_resp->options & RES_INIT) == 0 && res_init() == -1) |
279 | return; | 283 | return; |
280 | 284 | ||
281 | #define TruncTest(x) if (x > endMark) goto trunc | 285 | #define TruncTest(x) if (x > endMark) goto trunc |
@@ -287,16 +291,16 @@ __fp_nquery(msg, len, file) | |||
287 | hp = (HEADER *)msg; | 291 | hp = (HEADER *)msg; |
288 | cp = msg + HFIXEDSZ; | 292 | cp = msg + HFIXEDSZ; |
289 | endMark = msg + len; | 293 | endMark = msg + len; |
290 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEADX) || hp->rcode) { | 294 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_HEADX) || hp->rcode) { |
291 | fprintf(file, ";; ->>HEADER<<- opcode: %s, status: %s, id: %u", | 295 | fprintf(file, ";; ->>HEADER<<- opcode: %s, status: %s, id: %u", |
292 | _res_opcodes[hp->opcode], | 296 | _res_opcodes[hp->opcode], |
293 | _res_resultcodes[hp->rcode], | 297 | _res_resultcodes[hp->rcode], |
294 | ntohs(hp->id)); | 298 | ntohs(hp->id)); |
295 | putc('\n', file); | 299 | putc('\n', file); |
296 | } | 300 | } |
297 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEADX)) | 301 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_HEADX)) |
298 | putc(';', file); | 302 | putc(';', file); |
299 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD2)) { | 303 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_HEAD2)) { |
300 | fprintf(file, "; flags:"); | 304 | fprintf(file, "; flags:"); |
301 | if (hp->qr) | 305 | if (hp->qr) |
302 | fprintf(file, " qr"); | 306 | fprintf(file, " qr"); |
@@ -315,13 +319,13 @@ __fp_nquery(msg, len, file) | |||
315 | if (hp->cd) | 319 | if (hp->cd) |
316 | fprintf(file, " cd"); | 320 | fprintf(file, " cd"); |
317 | } | 321 | } |
318 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD1)) { | 322 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_HEAD1)) { |
319 | fprintf(file, "; Ques: %u", ntohs(hp->qdcount)); | 323 | fprintf(file, "; Ques: %u", ntohs(hp->qdcount)); |
320 | fprintf(file, ", Ans: %u", ntohs(hp->ancount)); | 324 | fprintf(file, ", Ans: %u", ntohs(hp->ancount)); |
321 | fprintf(file, ", Auth: %u", ntohs(hp->nscount)); | 325 | fprintf(file, ", Auth: %u", ntohs(hp->nscount)); |
322 | fprintf(file, ", Addit: %u", ntohs(hp->arcount)); | 326 | fprintf(file, ", Addit: %u", ntohs(hp->arcount)); |
323 | } | 327 | } |
324 | if ((!_res.pfcode) || (_res.pfcode & | 328 | if ((!_resp->pfcode) || (_resp->pfcode & |
325 | (RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) { | 329 | (RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) { |
326 | putc('\n',file); | 330 | putc('\n',file); |
327 | } | 331 | } |
@@ -329,13 +333,13 @@ __fp_nquery(msg, len, file) | |||
329 | * Print question records. | 333 | * Print question records. |
330 | */ | 334 | */ |
331 | if ((n = ntohs(hp->qdcount))) { | 335 | if ((n = ntohs(hp->qdcount))) { |
332 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 336 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
333 | fprintf(file, ";; QUESTIONS:\n"); | 337 | fprintf(file, ";; QUESTIONS:\n"); |
334 | while (--n >= 0) { | 338 | while (--n >= 0) { |
335 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 339 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
336 | fprintf(file, ";;\t"); | 340 | fprintf(file, ";;\t"); |
337 | TruncTest(cp); | 341 | TruncTest(cp); |
338 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 342 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
339 | cp = p_cdnname(cp, msg, len, file); | 343 | cp = p_cdnname(cp, msg, len, file); |
340 | else { | 344 | else { |
341 | int n; | 345 | int n; |
@@ -349,16 +353,16 @@ __fp_nquery(msg, len, file) | |||
349 | } | 353 | } |
350 | ErrorTest(cp); | 354 | ErrorTest(cp); |
351 | TruncTest(cp); | 355 | TruncTest(cp); |
352 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 356 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
353 | fprintf(file, ", type = %s", | 357 | fprintf(file, ", type = %s", |
354 | __p_type(_getshort((u_char*)cp))); | 358 | __p_type(_getshort((u_char*)cp))); |
355 | cp += INT16SZ; | 359 | cp += INT16SZ; |
356 | TruncTest(cp); | 360 | TruncTest(cp); |
357 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 361 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
358 | fprintf(file, ", class = %s\n", | 362 | fprintf(file, ", class = %s\n", |
359 | __p_class(_getshort((u_char*)cp))); | 363 | __p_class(_getshort((u_char*)cp))); |
360 | cp += INT16SZ; | 364 | cp += INT16SZ; |
361 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES)) | 365 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_QUES)) |
362 | putc('\n', file); | 366 | putc('\n', file); |
363 | } | 367 | } |
364 | } | 368 | } |
@@ -478,6 +482,7 @@ __p_rr(cp, msg, file) | |||
478 | const u_char *cp, *msg; | 482 | const u_char *cp, *msg; |
479 | FILE *file; | 483 | FILE *file; |
480 | { | 484 | { |
485 | struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); | ||
481 | int type, class, dlen, n, c; | 486 | int type, class, dlen, n, c; |
482 | struct in_addr inaddr; | 487 | struct in_addr inaddr; |
483 | const u_char *cp1, *cp2; | 488 | const u_char *cp1, *cp2; |
@@ -487,7 +492,7 @@ __p_rr(cp, msg, file) | |||
487 | char rrname[MAXDNAME]; /* The fqdn of this RR */ | 492 | char rrname[MAXDNAME]; /* The fqdn of this RR */ |
488 | char base64_key[MAX_KEY_BASE64]; | 493 | char base64_key[MAX_KEY_BASE64]; |
489 | 494 | ||
490 | if ((_res.options & RES_INIT) == 0 && res_init() == -1) { | 495 | if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { |
491 | h_errno = NETDB_INTERNAL; | 496 | h_errno = NETDB_INTERNAL; |
492 | return (NULL); | 497 | return (NULL); |
493 | } | 498 | } |
@@ -505,9 +510,9 @@ __p_rr(cp, msg, file) | |||
505 | dlen = _getshort((u_char*)cp); | 510 | dlen = _getshort((u_char*)cp); |
506 | cp += INT16SZ; | 511 | cp += INT16SZ; |
507 | cp1 = cp; | 512 | cp1 = cp; |
508 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_TTLID)) | 513 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_TTLID)) |
509 | fprintf(file, "\t%lu", (u_long)tmpttl); | 514 | fprintf(file, "\t%lu", (u_long)tmpttl); |
510 | if ((!_res.pfcode) || (_res.pfcode & RES_PRF_CLASS)) | 515 | if ((!_resp->pfcode) || (_resp->pfcode & RES_PRF_CLASS)) |
511 | fprintf(file, "\t%s", __p_class(class)); | 516 | fprintf(file, "\t%s", __p_class(class)); |
512 | fprintf(file, "\t%s", __p_type(type)); | 517 | fprintf(file, "\t%s", __p_type(type)); |
513 | /* | 518 | /* |