diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2014-07-11 06:24:10 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-07-11 06:24:10 +0000 |
commit | 7f81db06d38fefa163e3121e9935701a59ecceab (patch) | |
tree | 772c32853af4d9e9143a2f244cd65feffcabf7a8 /main/mtr | |
parent | 6e6ccfabbc080151a7e27b446cb337e0b57c7b56 (diff) | |
download | aports-7f81db06d38fefa163e3121e9935701a59ecceab.tar.bz2 aports-7f81db06d38fefa163e3121e9935701a59ecceab.tar.xz |
main/mtr: moved from testing
Diffstat (limited to 'main/mtr')
-rw-r--r-- | main/mtr/0001-dns-allow-disable-dns-during-compile-time.patch | 196 | ||||
-rw-r--r-- | main/mtr/APKBUILD | 75 | ||||
-rw-r--r-- | main/mtr/mtr-gtk.desktop | 10 | ||||
-rw-r--r-- | main/mtr/mtr-res_mkquery.patch | 374 |
4 files changed, 655 insertions, 0 deletions
diff --git a/main/mtr/0001-dns-allow-disable-dns-during-compile-time.patch b/main/mtr/0001-dns-allow-disable-dns-during-compile-time.patch new file mode 100644 index 0000000000..46598c4976 --- /dev/null +++ b/main/mtr/0001-dns-allow-disable-dns-during-compile-time.patch @@ -0,0 +1,196 @@ +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 + diff --git a/main/mtr/APKBUILD b/main/mtr/APKBUILD new file mode 100644 index 0000000000..4e2da61f36 --- /dev/null +++ b/main/mtr/APKBUILD @@ -0,0 +1,75 @@ +# Contributor: John Keith Hohm <john@hohm.net> +# Maintainer: +pkgname=mtr +pkgver=0.82 +pkgrel=1 +pkgdesc="Full screen ncurses traceroute tool" +url="http://www.bitwizard.nl/mtr/" +arch="all" +license="GPL" +depends="ncurses" +depends_dev="ncurses-dev" +makedepends="$depends_dev autoconf automake gtk+2.0-dev" +install="" +subpackages="$pkgname-doc $pkgname-gtk" +source="ftp://ftp.bitwizard.nl/$pkgname/$pkgname-$pkgver.tar.gz + 0001-dns-allow-disable-dns-during-compile-time.patch + mtr-gtk.desktop + " + +_builddir="$srcdir/$pkgname-$pkgver" +prepare() { + local i + cd "$_builddir" + mkdir mtr curses gtk + for i in $source; do + case $i in + *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; + esac + done + aclocal && touch ChangeLog && autoconf && automake --add-missing +} + +build() { + cd "$_builddir" + cd "$_builddir"/curses + ../configure --prefix=/usr \ + --disable-dns \ + --without-gtk \ + || return 1 + make || return 1 + + cd "$_builddir"/gtk + ../configure --prefix=/usr \ + --disable-dns \ + --with-gtk \ + --program-suffix=-gtk \ + || return 1 + make || return 1 +} + +package() { + cd "$_builddir"/curses + make DESTDIR="$pkgdir" install || return 1 + cd "$_builddir"/gtk + make DESTDIR="$pkgdir" install || return 1 + install -D -m 644 "$srcdir"/mtr-gtk.desktop \ + "$pkgdir"/usr/share/applications/mtr-gtk.desktop \ + || return 1 + install -D -m 644 "$_builddir"/img/mtr_icon.xpm \ + "$pkgdir"/usr/share/pixmaps/mtr_icon.xpm || return 1 +} + +gtk() { + pkgdesc="The GTK+ interface for mtr" + mkdir -p "$subpkgdir"/usr/sbin \ + "$subpkgdir"/usr/share + mv "$pkgdir"/usr/sbin/mtr-gtk "$subpkgdir"/usr/sbin/ + mv "$pkgdir"/usr/share/applications "$subpkgdir"/usr/share/ + mv "$pkgdir"/usr/share/pixmaps "$subpkgdir"/usr/share/ + +} + +md5sums="10601ea543fda3e51545c4bce195b64c mtr-0.82.tar.gz +ed4af88ccd422ba41f0c17268878cf4f 0001-dns-allow-disable-dns-during-compile-time.patch +d99a6f7bcef835bfc04af2b8c875123d mtr-gtk.desktop" diff --git a/main/mtr/mtr-gtk.desktop b/main/mtr/mtr-gtk.desktop new file mode 100644 index 0000000000..51d0cb8091 --- /dev/null +++ b/main/mtr/mtr-gtk.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Traceroute +Type=Application +Comment=Traces packets between two network hosts +Exec=mtr-gtk +Terminal=false +Icon=mtr_icon.xpm +Encoding=UTF-8 +X-Desktop-File-Install-Version=0.2 +Categories=System;Application; diff --git a/main/mtr/mtr-res_mkquery.patch b/main/mtr/mtr-res_mkquery.patch new file mode 100644 index 0000000000..c761e97e0e --- /dev/null +++ b/main/mtr/mtr-res_mkquery.patch @@ -0,0 +1,374 @@ +--- a/mtr-0.80/configure ++++ b/mtr-0.80/configure +@@ -7165,317 +7165,6 @@ + + # AC_CHECK_FUNC(setuid, , AC_MSG_ERROR (I Need either seteuid or setuid)) + +-{ echo "$as_me:$LINENO: checking for res_mkquery" >&5 +-echo $ECHO_N "checking for res_mkquery... $ECHO_C" >&6; } +-if test "${ac_cv_func_res_mkquery+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define res_mkquery to an innocuous variant, in case <limits.h> declares res_mkquery. +- For example, HP-UX 11i <limits.h> declares gettimeofday. */ +-#define res_mkquery innocuous_res_mkquery +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char res_mkquery (); below. +- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since +- <limits.h> exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include <limits.h> +-#else +-# include <assert.h> +-#endif +- +-#undef res_mkquery +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char res_mkquery (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_res_mkquery || defined __stub___res_mkquery +-choke me +-#endif +- +-int +-main () +-{ +-return res_mkquery (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && +- $as_test_x conftest$ac_exeext; then +- ac_cv_func_res_mkquery=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_res_mkquery=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-{ echo "$as_me:$LINENO: result: $ac_cv_func_res_mkquery" >&5 +-echo "${ECHO_T}$ac_cv_func_res_mkquery" >&6; } +-if test $ac_cv_func_res_mkquery = yes; then +- : +-else +- +-{ echo "$as_me:$LINENO: checking for res_mkquery in -lbind" >&5 +-echo $ECHO_N "checking for res_mkquery in -lbind... $ECHO_C" >&6; } +-if test "${ac_cv_lib_bind_res_mkquery+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lbind $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char res_mkquery (); +-int +-main () +-{ +-return res_mkquery (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && +- $as_test_x conftest$ac_exeext; then +- ac_cv_lib_bind_res_mkquery=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_bind_res_mkquery=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bind_res_mkquery" >&5 +-echo "${ECHO_T}$ac_cv_lib_bind_res_mkquery" >&6; } +-if test $ac_cv_lib_bind_res_mkquery = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBBIND 1 +-_ACEOF +- +- LIBS="-lbind $LIBS" +- +-else +- +-{ echo "$as_me:$LINENO: checking for res_mkquery in -lresolv" >&5 +-echo $ECHO_N "checking for res_mkquery in -lresolv... $ECHO_C" >&6; } +-if test "${ac_cv_lib_resolv_res_mkquery+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lresolv $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char res_mkquery (); +-int +-main () +-{ +-return res_mkquery (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && +- $as_test_x conftest$ac_exeext; then +- ac_cv_lib_resolv_res_mkquery=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_resolv_res_mkquery=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_mkquery" >&5 +-echo "${ECHO_T}$ac_cv_lib_resolv_res_mkquery" >&6; } +-if test $ac_cv_lib_resolv_res_mkquery = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBRESOLV 1 +-_ACEOF +- +- LIBS="-lresolv $LIBS" +- +-else +- +-{ echo "$as_me:$LINENO: checking for __res_mkquery in -lresolv" >&5 +-echo $ECHO_N "checking for __res_mkquery in -lresolv... $ECHO_C" >&6; } +-if test "${ac_cv_lib_resolv___res_mkquery+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lresolv $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char __res_mkquery (); +-int +-main () +-{ +-return __res_mkquery (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && +- $as_test_x conftest$ac_exeext; then +- ac_cv_lib_resolv___res_mkquery=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_resolv___res_mkquery=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv___res_mkquery" >&5 +-echo "${ECHO_T}$ac_cv_lib_resolv___res_mkquery" >&6; } +-if test $ac_cv_lib_resolv___res_mkquery = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBRESOLV 1 +-_ACEOF +- +- LIBS="-lresolv $LIBS" +- +-else +- { { echo "$as_me:$LINENO: error: No resolver library found" >&5 +-echo "$as_me: error: No resolver library found" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-fi +- +-fi +- +-fi +- +-# 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 +-# removing it hurts your OS.... -- REW +-#LIBS="$LIBS -lresolv" +- + { echo "$as_me:$LINENO: checking for herror" >&5 + echo $ECHO_N "checking for herror... $ECHO_C" >&6; } + if test "${ac_cv_func_herror+set}" = set; then +--- a/mtr-0.80/dns.c ++++ b/mtr-0.80/dns.c +@@ -881,6 +881,51 @@ + } + + ++ /* res_mkquery from dietlibc libcruft http://www.fefe.de/dietlibc/ */ ++ ++static char dnspacket[]="\xfe\xfe\001\000\000\001\000\000\000\000\000\000"; ++ ++static int res_mkquery(int op, const char *dname, int class, int type, char* data, ++ int datalen, const unsigned char* newrr, char* buf, int buflen) { ++ unsigned char packet[512]; ++ unsigned long len; ++ ++ memcpy(packet,dnspacket,12); ++ len=rand(); ++ packet[0]=len; ++ packet[1]=len>>8; ++ len=0; ++ if ((_res.options&RES_RECURSE)==0) packet[2]=0; ++ { ++ unsigned char* x; ++ const char* y,* tmp; ++ x=packet+12; y=dname; ++ while (*y) { ++ while (*y=='.') ++y; ++ for (tmp=y; *tmp && *tmp!='.'; ++tmp) ; ++ if (tmp-y > 63) return -1; ++ *x=tmp-y; ++ if (!(tmp-y)) break; ++ if ((len+=*x+1) > 254) return -1; ++ ++x; ++ memmove(x,y,tmp-y); ++ x+=tmp-y; ++ if (!*tmp) { ++ *x=0; ++ break; ++ } ++ y=tmp; ++ } ++ *++x= 0; *++x= type; /* A */ ++ *++x= 0; *++x= class; /* IN */ ++ ++x; ++ if (x-packet>buflen) return -1; ++ memmove(buf,packet,x-packet); ++ return x-packet; ++ } ++} ++ ++ + void dorequest(char *s,int type,word id) + { + packetheader *hp; |