aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-06-06 12:24:51 +0000
committerEric Andersen <andersen@codepoet.org>2002-06-06 12:24:51 +0000
commitad79c0b629e123685cbb33d6b393225343fadedf (patch)
tree9f5434fcd4b2d71c0f0bacb29214324617b5f53c
parent77d22c4abda04ee2e54b3f189ff41b493fb4f54e (diff)
downloadbusybox-w32-ad79c0b629e123685cbb33d6b393225343fadedf.tar.gz
busybox-w32-ad79c0b629e123685cbb33d6b393225343fadedf.tar.bz2
busybox-w32-ad79c0b629e123685cbb33d6b393225343fadedf.zip
Patch from Gyepi SAM <gyepi@praxis-sw.com>:
Fixed up domain removal for local domains. GNU traceroute does not do this. I don't know why we do. Fixed incorrect argument for reverse resolution. Clean up cruft that appears when CONFIG_FEATURE_TRACEROUTE_VERBOSE is defined
-rw-r--r--networking/traceroute.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/networking/traceroute.c b/networking/traceroute.c
index 5bd3ddb0e..e05a50fbc 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -233,15 +233,12 @@ inetname(struct sockaddr_in *from)
233 233
234 if (first && !nflag) { 234 if (first && !nflag) {
235 first = 0; 235 first = 0;
236 if (gethostname(domain, MAXHOSTNAMELEN) == 0 && 236 if (getdomainname(domain, MAXHOSTNAMELEN) != 0)
237 (cp = strchr(domain, '.')))
238 (void) strcpy(domain, cp + 1);
239 else
240 domain[0] = 0; 237 domain[0] = 0;
241 } 238 }
242 cp = 0; 239 cp = 0;
243 if (!nflag && from->sin_addr.s_addr != INADDR_ANY) { 240 if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
244 if(INET_rresolve(name, sizeof(name), from, 0, 0xffffffff) >= 0) { 241 if(INET_rresolve(name, sizeof(name), from, 0x4000, 0xffffffff) >= 0) {
245 if ((cp = strchr(name, '.')) && 242 if ((cp = strchr(name, '.')) &&
246 !strcmp(cp + 1, domain)) 243 !strcmp(cp + 1, domain))
247 *cp = 0; 244 *cp = 0;
@@ -321,8 +318,7 @@ wait_for_reply(int sock, struct sockaddr_in *from, int reset_timer)
321 * Convert an ICMP "type" field to a printable string. 318 * Convert an ICMP "type" field to a printable string.
322 */ 319 */
323static inline const char * 320static inline const char *
324pr_type(t) 321pr_type(u_char t)
325 u_char t;
326{ 322{
327 static const char * const ttab[] = { 323 static const char * const ttab[] = {
328 "Echo Reply", "ICMP 1", "ICMP 2", "Dest Unreachable", 324 "Echo Reply", "ICMP 1", "ICMP 2", "Dest Unreachable",
@@ -546,12 +542,12 @@ traceroute_main(argc, argv)
546 if (setsockopt(sndsock, SOL_SOCKET, SO_SNDBUF, (char *)&datalen, 542 if (setsockopt(sndsock, SOL_SOCKET, SO_SNDBUF, (char *)&datalen,
547 sizeof(datalen)) < 0) 543 sizeof(datalen)) < 0)
548 perror_msg_and_die("SO_SNDBUF"); 544 perror_msg_and_die("SO_SNDBUF");
549#endif SO_SNDBUF 545#endif
550#ifdef IP_HDRINCL 546#ifdef IP_HDRINCL
551 if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, (char *)&on, 547 if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, (char *)&on,
552 sizeof(on)) < 0) 548 sizeof(on)) < 0)
553 perror_msg_and_die("IP_HDRINCL"); 549 perror_msg_and_die("IP_HDRINCL");
554#endif IP_HDRINCL 550#endif
555#ifdef CONFIG_FEATURE_TRACEROUTE_SO_DEBUG 551#ifdef CONFIG_FEATURE_TRACEROUTE_SO_DEBUG
556 if (options & SO_DEBUG) 552 if (options & SO_DEBUG)
557 (void) setsockopt(sndsock, SOL_SOCKET, SO_DEBUG, 553 (void) setsockopt(sndsock, SOL_SOCKET, SO_DEBUG,
@@ -571,7 +567,7 @@ traceroute_main(argc, argv)
571#ifndef IP_HDRINCL 567#ifndef IP_HDRINCL
572 if (bind(sndsock, (struct sockaddr *)&from, sizeof(from)) < 0) 568 if (bind(sndsock, (struct sockaddr *)&from, sizeof(from)) < 0)
573 perror_msg_and_die("bind"); 569 perror_msg_and_die("bind");
574#endif IP_HDRINCL 570#endif
575 } 571 }
576 572
577 fprintf(stderr, "traceroute to %s (%s)", hostname, 573 fprintf(stderr, "traceroute to %s (%s)", hostname,