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
This commit is contained in:
Eric Andersen 2002-06-06 12:24:51 +00:00
parent 77d22c4abd
commit ad79c0b629

View File

@ -233,15 +233,12 @@ inetname(struct sockaddr_in *from)
if (first && !nflag) {
first = 0;
if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
(cp = strchr(domain, '.')))
(void) strcpy(domain, cp + 1);
else
if (getdomainname(domain, MAXHOSTNAMELEN) != 0)
domain[0] = 0;
}
cp = 0;
if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
if(INET_rresolve(name, sizeof(name), from, 0, 0xffffffff) >= 0) {
if(INET_rresolve(name, sizeof(name), from, 0x4000, 0xffffffff) >= 0) {
if ((cp = strchr(name, '.')) &&
!strcmp(cp + 1, domain))
*cp = 0;
@ -321,8 +318,7 @@ wait_for_reply(int sock, struct sockaddr_in *from, int reset_timer)
* Convert an ICMP "type" field to a printable string.
*/
static inline const char *
pr_type(t)
u_char t;
pr_type(u_char t)
{
static const char * const ttab[] = {
"Echo Reply", "ICMP 1", "ICMP 2", "Dest Unreachable",
@ -546,12 +542,12 @@ traceroute_main(argc, argv)
if (setsockopt(sndsock, SOL_SOCKET, SO_SNDBUF, (char *)&datalen,
sizeof(datalen)) < 0)
perror_msg_and_die("SO_SNDBUF");
#endif SO_SNDBUF
#endif
#ifdef IP_HDRINCL
if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, (char *)&on,
sizeof(on)) < 0)
perror_msg_and_die("IP_HDRINCL");
#endif IP_HDRINCL
#endif
#ifdef CONFIG_FEATURE_TRACEROUTE_SO_DEBUG
if (options & SO_DEBUG)
(void) setsockopt(sndsock, SOL_SOCKET, SO_DEBUG,
@ -571,7 +567,7 @@ traceroute_main(argc, argv)
#ifndef IP_HDRINCL
if (bind(sndsock, (struct sockaddr *)&from, sizeof(from)) < 0)
perror_msg_and_die("bind");
#endif IP_HDRINCL
#endif
}
fprintf(stderr, "traceroute to %s (%s)", hostname,