aboutsummaryrefslogblamecommitdiffstats
path: root/main/mtr/0001-dns-allow-disable-dns-during-compile-time.patch
blob: 46598c4976516a4aa71f98938c333e914ae0dfc1 (plain) (tree)



































































































































































































                                                                                          
From 32863554ab50dfee32a25e641399c31b7fe7357d Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Fri, 6 Jul 2012 13:33:54 +0000
Subject: [PATCH] dns: allow disable dns during compile time

---
 configure.in | 14 +++++++++----
 dns.c        | 65 ++++++++++++++++++++++++++++++++++++------------------------
 mtr.c        | 10 +++++++++-
 3 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/configure.in b/configure.in
index 8474543..1f53f74 100644
--- a/configure.in
+++ b/configure.in
@@ -72,10 +72,16 @@ AC_CHECK_FUNC(gethostbyname, ,
 AC_CHECK_FUNCS(seteuid)
 #  AC_CHECK_FUNC(setuid, , AC_MSG_ERROR (I Need either seteuid or setuid))
 
-AC_CHECK_FUNC(res_mkquery, , 
-  AC_CHECK_LIB(bind, res_mkquery, , 
-   AC_CHECK_LIB(resolv, res_mkquery, ,
-     AC_CHECK_LIB(resolv, __res_mkquery, , AC_MSG_ERROR(No resolver library found)))))
+AC_ARG_ENABLE([dns], AS_HELP_STRING([--disable-dns],[Disable use of DNS]))
+
+AS_IF([test "x$enable_dns" != "xno"],
+  AC_CHECK_FUNC(res_mkquery, , 
+    AC_CHECK_LIB(bind, res_mkquery, , 
+     AC_CHECK_LIB(resolv, res_mkquery, ,
+       AC_CHECK_LIB(resolv, __res_mkquery, , AC_MSG_ERROR(No resolver library found))))),
+  [AC_DEFINE([NO_DNS], [1], [Disable use of DNS])]
+)
+
 # This next line would override the just detected-or-not -lresolv. 
 # This apparently hurts BSD. And it's bad practise. So it should go. 
 # However, it probably didn't get added for nothing..... Holler if
diff --git a/dns.c b/dns.c
index 512da97..e85fcb3 100644
--- a/dns.c
+++ b/dns.c
@@ -48,6 +48,7 @@
 #include "mtr.h"
 #include "dns.h"
 #include "net.h"
+#include "config.h"
 
 /* OSX  Needs this. I don't know how to enable this for them automatically. 
  * Should be easy with autoconf. Please submit a patch if you know 
@@ -58,6 +59,11 @@
 #endif
 
 
+extern int af;
+int use_dns = 1;
+
+#ifndef NO_DNS
+
 #ifdef NO_STRERROR
 extern int sys_nerr;
 extern char *sys_errlist[];
@@ -69,7 +75,6 @@ extern char *sys_errlist[];
 extern int errno;
 #endif
 
-extern int af;
 
 /* Defines */
 
@@ -307,8 +312,6 @@ char stackstring[1024+1];
 
 char nullstring[] = "";
 
-int use_dns = 1;
-
 #ifdef res_ninit
 #define MY_RES_INIT() res_ninit(&myres);
 #define RES_MKQUERY(a, b, c, d, e, f, g, h, i) \
@@ -451,18 +454,6 @@ void clearset(fd_set *set)
 }
 
 
-char *strlongip(ip_t * ip)
-{
-#ifdef ENABLE_IPV6
-  static char buf[INET6_ADDRSTRLEN];
-
-  return (char *) inet_ntop( af, ip, buf, sizeof buf );
-#else
-  return inet_ntoa( *ip );
-#endif
-}
-
-
 int longipstr( char *s, ip_t *dst, int af )
 {
 #ifdef ENABLE_IPV6
@@ -473,17 +464,6 @@ int longipstr( char *s, ip_t *dst, int af )
 }
 
 
-struct hostent * dns_forward(const char *name)
-{
-  struct hostent *host;
-
-  if ((host = gethostbyname(name)))
-    return host;
-  else
-    return NULL;
-}
-
-
 int dns_waitfd(void)
 {
   return resfd;
@@ -1397,6 +1377,39 @@ void addr2ip6arpa( ip_t * ip, char * buf ) {
 }
 #endif
 
+#else /* NO_DNS */
+void dns_ack(void) {}
+void dns_events(double *sinterval) {}
+int dns_waitfd(void) { return 0; }
+void dns_open(void) { use_dns = dns = 0; }
+char *dns_lookup2(ip_t * ip) { return NULL; }
+char *dns_lookup(ip_t * ip) { return strlongip (ip); }
+
+#endif /* NO_DNS */
+
+struct hostent * dns_forward(const char *name)
+{
+  struct hostent *host;
+
+  if ((host = gethostbyname(name)))
+    return host;
+  else
+    return NULL;
+}
+
+
+char *strlongip(ip_t * ip)
+{
+#ifdef ENABLE_IPV6
+  static char buf[INET6_ADDRSTRLEN];
+
+  return (char *) inet_ntop( af, ip, buf, sizeof buf );
+#else
+  return inet_ntoa( *ip );
+#endif
+}
+
+
 /* Resolve an IP address to a hostname. */ 
 struct hostent *addr2host( const char *addr, int af ) {
   int len = 0;
diff --git a/mtr.c b/mtr.c
index 5f1b651..1fc3873 100644
--- a/mtr.c
+++ b/mtr.c
@@ -143,7 +143,9 @@ void parse_arg (int argc, char **argv)
     { "bitpattern", 1, 0, 'b' },/* overload b>255, ->rand(0,255) */
     { "tos", 1, 0, 'Q' },	/* typeof service (0,255) */
     { "mpls", 0, 0, 'e' },
+#ifndef NO_DNS
     { "no-dns", 0, 0, 'n' },
+#endif
     { "address", 1, 0, 'a' },
     { "first-ttl", 1, 0, 'f' },	/* -f & -m are borrowed from traceroute */
     { "max-ttl", 1, 0, 'm' },
@@ -204,9 +206,11 @@ void parse_arg (int argc, char **argv)
     case 'e':
       enablempls = 1;
       break;
+#ifndef NO_DNS
     case 'n':
       dns = 0;
       break;
+#endif
     case 'i':
       WaitTime = atof (optarg);
       if (WaitTime <= 0.0) {
@@ -382,7 +386,11 @@ int main(int argc, char **argv)
   if (PrintHelp) {
     printf("usage: %s [-hvrwctglspniu46] [--help] [--version] [--report]\n"
 	   "\t\t[--report-wide] [--report-cycles=COUNT] [--curses] [--gtk]\n"
-           "\t\t[--raw] [--split] [--mpls] [--no-dns] [--address interface]\n" /* BL */
+           "\t\t[--raw] [--split] [--mpls] "
+#ifndef NO_DNS
+	   "[--no-dns] "
+#endif
+	   "[--address interface]\n" /* BL */
            "\t\t[--psize=bytes/-s bytes]\n"            /* ok */
            "\t\t[--report-wide|-w] [-u]\n"            /* rew */
 	   "\t\t[--interval=SECONDS] HOSTNAME [PACKETSIZE]\n", argv[0]);
-- 
1.7.11.1