1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
$NetBSD: patch-ab,v 1.1 2004/12/20 23:24:02 christos Exp $
--- src/dns.c.orig 2003-04-06 09:45:41.000000000 -0400
+++ src/dns.c 2004-12-20 18:15:45.000000000 -0500
@@ -60,6 +60,17 @@
#define strerror(errno) (((errno) >= 0 && (errno) < sys_nerr) ? sys_errlist[errno] : "unlisted error")
#endif
+#ifdef res_ninit
+#define RES_INIT() res_ninit(&myres);
+#define RES_MKQUERY(a, b, c, d, e, f, g, h, i) \
+ res_nmkquery(&myres, a, b, c, d, e, f, g, h, i)
+struct __res_state myres;
+#else
+#define myres _res
+#define RES_INIT() res_init();
+#define RES_MKQUERY(a, b, c, d, e, f, g, h, i) \
+ res_mkquery(a, b, c, d, e, f, g, h, i)
+#endif
/* Hmm, it seems Irix requires this */
@@ -432,15 +443,15 @@
dns_open (void)
{
int option, i;
- res_init ();
- if (!_res.nscount)
+ RES_INIT();
+ if (!myres.nscount)
{
fprintf (stderr, "No nameservers defined.\n");
exit (-1);
}
- _res.options |= RES_RECURSE | RES_DEFNAMES | RES_DNSRCH;
- for (i = 0; i < _res.nscount; i++)
- _res.nsaddr_list[i].sin_family = AF_INET;
+ myres.options |= RES_RECURSE | RES_DEFNAMES | RES_DNSRCH;
+ for (i = 0; i < myres.nscount; i++)
+ myres.nsaddr_list[i].sin_family = AF_INET;
resfd = socket (AF_INET, SOCK_DGRAM, 0);
if (resfd == -1)
{
@@ -755,7 +766,7 @@
int r, i;
int buf[(MaxPacketsize / sizeof (int)) + 1];
- r = res_mkquery (QUERY, s, C_IN, type, NULL, 0, NULL, (u_char *) buf,
+ r = RES_MKQUERY (QUERY, s, C_IN, type, NULL, 0, NULL, (u_char *) buf,
MaxPacketsize);
if (r == -1)
{
@@ -764,9 +775,9 @@
}
hp = (packetheader *) buf;
hp->id = id; /* htons() deliberately left out (redundant) */
- for (i = 0; i < _res.nscount; i++)
+ for (i = 0; i < myres.nscount; i++)
(void) sendto (resfd, buf, r, 0,
- (struct sockaddr *) &_res.nsaddr_list[i],
+ (struct sockaddr *) &myres.nsaddr_list[i],
sizeof (struct sockaddr));
}
@@ -1279,15 +1290,15 @@
/* Check to see if this server is actually one we sent to */
if (from.sin_addr.s_addr == localhost)
{
- for (i = 0; i < _res.nscount; i++)
- if ((_res.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr) || (!_res.nsaddr_list[i].sin_addr.s_addr)) /* 0.0.0.0 replies as 127.0.0.1 */
+ for (i = 0; i < myres.nscount; i++)
+ if ((myres.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr) || (!myres.nsaddr_list[i].sin_addr.s_addr)) /* 0.0.0.0 replies as 127.0.0.1 */
break;
}
else
- for (i = 0; i < _res.nscount; i++)
- if (_res.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr)
+ for (i = 0; i < myres.nscount; i++)
+ if (myres.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr)
break;
- if (i == _res.nscount)
+ if (i == myres.nscount)
{
snprintf (tempstring, sizeof (tempstring),
"Resolver error: Received reply from unknown source: %s",
|