tcpdump mailing list archives
[PATCH 1/3] Add getnameinfo support to getname and getname6.
From: Miroslav Lichvar <mlichvar () redhat com>
Date: Fri, 14 Aug 2009 12:19:10 +0200
---
addrtoname.c | 44 ++++++++++++++++++++++++++++++++++++--------
1 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/addrtoname.c b/addrtoname.c
index e67d114..593840c 100644
--- a/addrtoname.c
+++ b/addrtoname.c
@@ -224,7 +224,6 @@ static u_int32_t f_localnet;
const char *
getname(const u_char *ap)
{
- register struct hostent *hp;
u_int32_t addr;
static struct hnamemem *p; /* static for longjmp() */
@@ -236,6 +235,7 @@ getname(const u_char *ap)
}
p->addr = addr;
p->nxt = newhnamemem();
+ p->name = NULL;
/*
* Print names unless:
@@ -246,12 +246,26 @@ getname(const u_char *ap)
*/
if (!nflag &&
(addr & f_netmask) == f_localnet) {
+#ifdef HAVE_GETNAMEINFO
+ struct sockaddr_in sa;
+ char hbuf[NI_MAXHOST];
+
+ memset(&sa, 0, sizeof (sa));
+ sa.sin_family = AF_INET;
+ sa.sin_addr.s_addr = addr;
+ if (!getnameinfo((struct sockaddr *)&sa, sizeof (sa),
+ hbuf, sizeof (hbuf), NULL, 0, 0))
+ p->name = strdup(hbuf);
+#else
+ register struct hostent *hp;
hp = gethostbyaddr((char *)&addr, 4, AF_INET);
- if (hp) {
- char *dotp;
-
+ if (hp)
p->name = strdup(hp->h_name);
+#endif
+ if (p->name != NULL) {
if (Nflag) {
+ char *dotp;
+
/* Remove domain qualifications */
dotp = strchr(p->name, '.');
if (dotp)
@@ -272,7 +286,6 @@ getname(const u_char *ap)
const char *
getname6(const u_char *ap)
{
- register struct hostent *hp;
struct in6_addr addr;
static struct h6namemem *p; /* static for longjmp() */
register const char *cp;
@@ -286,17 +299,32 @@ getname6(const u_char *ap)
}
p->addr = addr;
p->nxt = newh6namemem();
+ p->name = NULL;
/*
* Do not print names if -n was given.
*/
if (!nflag) {
+#ifdef HAVE_GETNAMEINFO
+ struct sockaddr_in6 sa;
+ char hbuf[NI_MAXHOST];
+
+ memset(&sa, 0, sizeof (sa));
+ sa.sin6_family = AF_INET6;
+ sa.sin6_addr = addr;
+ if (!getnameinfo((struct sockaddr *)&sa, sizeof (sa),
+ hbuf, sizeof (hbuf), NULL, 0, 0))
+ p->name = strdup(hbuf);
+#else
+ register struct hostent *hp;
hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET6);
- if (hp) {
- char *dotp;
-
+ if (hp)
p->name = strdup(hp->h_name);
+#endif
+ if (p->name != NULL) {
if (Nflag) {
+ char *dotp;
+
/* Remove domain qualifications */
dotp = strchr(p->name, '.');
if (dotp)
--
1.6.2.5
-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- [PATCH 1/3] Add getnameinfo support to getname and getname6. Miroslav Lichvar (Aug 13)
- [PATCH 2/3] With -C option drop root before opening first savefile. Miroslav Lichvar (Aug 13)
- [PATCH 3/3] Convert port numbers to service names unless -nn is used. Miroslav Lichvar (Aug 13)
- Re: [PATCH 1/3] Add getnameinfo support to getname and getname6. Michael Richardson (Aug 30)
- <Possible follow-ups>
- [PATCH 1/3] Add getnameinfo support to getname and getname6. Miroslav Lichvar (Aug 16)
- Re: [PATCH 1/3] Add getnameinfo support to getname and getname6. Guy Harris (Aug 30)
- Re: [PATCH 1/3] Add getnameinfo support to getname Miroslav Lichvar (Sep 01)
- Re: [PATCH 1/3] Add getnameinfo support to getname and getname6. Guy Harris (Aug 30)
- [PATCH 2/3] With -C option drop root before opening first savefile. Miroslav Lichvar (Aug 13)
