aboutsummaryrefslogtreecommitdiff
path: root/networking/traceroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/traceroute.c')
-rw-r--r--networking/traceroute.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/networking/traceroute.c b/networking/traceroute.c
index 9fc15d390..577738a97 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -802,22 +802,20 @@ packet_ok(unsigned char *buf, int cc, struct sockaddr_in *from, int seq)
802 * numeric value, otherwise try for symbolic name. 802 * numeric value, otherwise try for symbolic name.
803 */ 803 */
804static inline void 804static inline void
805inetname(struct sockaddr_in *from) 805print_inetname(struct sockaddr_in *from)
806{ 806{
807 const char *n = NULL;
808 const char *ina; 807 const char *ina;
809 char name[257];
810 808
811 if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
812 if (INET_rresolve(name, sizeof(name), from, 0x4000,
813 0xffffffff) >= 0)
814 n = name;
815 }
816 ina = inet_ntoa(from->sin_addr); 809 ina = inet_ntoa(from->sin_addr);
817 if (nflag) 810 if (nflag)
818 printf(" %s", ina); 811 printf(" %s", ina);
819 else 812 else {
813 char *n = NULL;
814 if (from->sin_addr.s_addr != INADDR_ANY)
815 n = xmalloc_sockaddr2host_noport((struct sockaddr*)from, sizeof(*from));
820 printf(" %s (%s)", (n ? n : ina), ina); 816 printf(" %s (%s)", (n ? n : ina), ina);
817 free(n);
818 }
821} 819}
822 820
823static inline void 821static inline void
@@ -830,7 +828,7 @@ print(unsigned char *buf, int cc, struct sockaddr_in *from)
830 hlen = ip->ip_hl << 2; 828 hlen = ip->ip_hl << 2;
831 cc -= hlen; 829 cc -= hlen;
832 830
833 inetname(from); 831 print_inetname(from);
834#if ENABLE_FEATURE_TRACEROUTE_VERBOSE 832#if ENABLE_FEATURE_TRACEROUTE_VERBOSE
835 if (verbose) 833 if (verbose)
836 printf(" %d bytes to %s", cc, inet_ntoa(ip->ip_dst)); 834 printf(" %d bytes to %s", cc, inet_ntoa(ip->ip_dst));