summaryrefslogtreecommitdiff
path: root/addrtoname.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2017-02-02 12:18:56 -0800
committerGitHub <noreply@github.com>2017-02-02 12:18:56 -0800
commitb8c56aa09228ee6c59af9bd2565bc66b69ac7943 (patch)
treec02448066a1d68c134ceca9c09a92ad7bda71923 /addrtoname.c
parentefd50b3e143aa6a2dad1a78a795174a71d6fb18b (diff)
parentcd3c5880b13c9c25ad480ecafadbfe6e86a7c5c7 (diff)
downloadtcpdump-b8c56aa09228ee6c59af9bd2565bc66b69ac7943.tar.gz
Merge pull request #588 from glebius/casper
Add support for libcasper library available on FreeBSD 11.0 and newer.
Diffstat (limited to 'addrtoname.c')
-rw-r--r--addrtoname.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/addrtoname.c b/addrtoname.c
index 6975b713..85cbf7b7 100644
--- a/addrtoname.c
+++ b/addrtoname.c
@@ -26,6 +26,11 @@
#include "config.h"
#endif
+#ifdef HAVE_CASPER
+#include <libcasper.h>
+#include <casper/cap_dns.h>
+#endif /* HAVE_CASPER */
+
#include <netdissect-stdinc.h>
#ifdef USE_ETHER_NTOHOST
@@ -197,6 +202,9 @@ intoa(uint32_t addr)
static uint32_t f_netmask;
static uint32_t f_localnet;
+#ifdef HAVE_CASPER
+extern cap_channel_t *capdns;
+#endif
/*
* Return a name for the IP address pointed to by ap. This address
@@ -242,7 +250,13 @@ getname(netdissect_options *ndo, const u_char *ap)
*/
if (!ndo->ndo_nflag &&
(addr & f_netmask) == f_localnet) {
- hp = gethostbyaddr((char *)&addr, 4, AF_INET);
+#ifdef HAVE_CASPER
+ if (capdns != NULL) {
+ hp = cap_gethostbyaddr(capdns, (char *)&addr, 4,
+ AF_INET);
+ } else
+#endif
+ hp = gethostbyaddr((char *)&addr, 4, AF_INET);
if (hp) {
char *dotp;
@@ -297,7 +311,14 @@ getname6(netdissect_options *ndo, const u_char *ap)
* Do not print names if -n was given.
*/
if (!ndo->ndo_nflag) {
- hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET6);
+#ifdef HAVE_CASPER
+ if (capdns != NULL) {
+ hp = cap_gethostbyaddr(capdns, (char *)&addr,
+ sizeof(addr), AF_INET6);
+ } else
+#endif
+ hp = gethostbyaddr((char *)&addr, sizeof(addr),
+ AF_INET6);
if (hp) {
char *dotp;