summaryrefslogtreecommitdiff
path: root/net/etherape/patches/patch-ab
blob: 3cbe89d67b208d7b242178ce0b63bf649a0156b6 (plain)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
$NetBSD: patch-ab,v 1.2 2006/06/21 21:27:30 joerg Exp $

--- src/dns.c.orig	2003-04-06 13:45:41.000000000 +0000
+++ src/dns.c
@@ -38,7 +38,6 @@
 #include <sys/time.h>
 #include <sys/select.h>
 #include <sys/stat.h>
-#include <sys/errno.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
@@ -60,11 +59,19 @@ extern char *sys_errlist[];
 #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  */
-extern int errno;
-
 /* Defined in main.c - non zero if you want to activate DNS resolving, zero to disable*/
 extern int dns;
 
@@ -432,15 +439,15 @@ void
 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 +762,7 @@ dorequest (char *s, int type, word id)
   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 +771,9 @@ dorequest (char *s, int type, word id)
     }
   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 +1286,15 @@ dns_ack ()
       /* 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",