summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/print-carp.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
committerdelphij <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
commitf49c5d523af9076a4a59e8dd664f9a897108432e (patch)
treee268839e08c106e178b33bd461d8d0a9c6fb5ad9 /contrib/tcpdump/print-carp.c
parentc371846049d370ab78d943e60e789cdffe0aad3d (diff)
parent08263d19579d35a7a65e0c8bcb768504ce76d04e (diff)
downloadFreeBSD-src-f49c5d523af9076a4a59e8dd664f9a897108432e.zip
FreeBSD-src-f49c5d523af9076a4a59e8dd664f9a897108432e.tar.gz
MFV r276761: tcpdump 4.6.2.
MFC after: 1 month
Diffstat (limited to 'contrib/tcpdump/print-carp.c')
-rw-r--r--contrib/tcpdump/print-carp.c40
1 files changed, 17 insertions, 23 deletions
diff --git a/contrib/tcpdump/print-carp.c b/contrib/tcpdump/print-carp.c
index ba5be7c..7b9f28c 100644
--- a/contrib/tcpdump/print-carp.c
+++ b/contrib/tcpdump/print-carp.c
@@ -34,55 +34,49 @@
*
*/
+#define NETDISSECT_REWORKED
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <netinet/in.h>
-
-#include "interface.h"
+#include "interface.h" /* for checksum structure and functions */
#include "extract.h"
-#include "addrtoname.h"
void
-carp_print(register const u_char *bp, register u_int len, int ttl)
+carp_print(netdissect_options *ndo, register const u_char *bp, register u_int len, int ttl)
{
int version, type;
const char *type_s;
- TCHECK(bp[0]);
+ ND_TCHECK(bp[0]);
version = (bp[0] & 0xf0) >> 4;
type = bp[0] & 0x0f;
if (type == 1)
type_s = "advertise";
else
type_s = "unknown";
- printf("CARPv%d-%s %d: ", version, type_s, len);
+ ND_PRINT((ndo, "CARPv%d-%s %d: ", version, type_s, len));
if (ttl != 255)
- printf("[ttl=%d!] ", ttl);
+ ND_PRINT((ndo, "[ttl=%d!] ", ttl));
if (version != 2 || type != 1)
return;
- TCHECK(bp[2]);
- TCHECK(bp[5]);
- printf("vhid=%d advbase=%d advskew=%d authlen=%d ",
- bp[1], bp[5], bp[2], bp[3]);
- if (vflag) {
+ ND_TCHECK(bp[2]);
+ ND_TCHECK(bp[5]);
+ ND_PRINT((ndo, "vhid=%d advbase=%d advskew=%d authlen=%d ",
+ bp[1], bp[5], bp[2], bp[3]));
+ if (ndo->ndo_vflag) {
struct cksum_vec vec[1];
- vec[0].ptr = (const u_int8_t *)bp;
+ vec[0].ptr = (const uint8_t *)bp;
vec[0].len = len;
- if (TTEST2(bp[0], len) && in_cksum(vec, 1))
- printf(" (bad carp cksum %x!)",
- EXTRACT_16BITS(&bp[6]));
+ if (ND_TTEST2(bp[0], len) && in_cksum(vec, 1))
+ ND_PRINT((ndo, " (bad carp cksum %x!)",
+ EXTRACT_16BITS(&bp[6])));
}
- printf("counter=%" PRIu64, EXTRACT_64BITS(&bp[8]));
+ ND_PRINT((ndo, "counter=%" PRIu64, EXTRACT_64BITS(&bp[8])));
return;
trunc:
- printf("[|carp]");
+ ND_PRINT((ndo, "[|carp]"));
}
OpenPOWER on IntegriCloud