summaryrefslogtreecommitdiff
path: root/print-carp.c
diff options
context:
space:
mode:
authorDenis Ovsienko <infrastation@yandex.ru>2014-02-25 18:23:45 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2014-02-25 18:23:45 +0400
commit6e12d87355718f309ce9f33183ff8235b9c5eb0d (patch)
treeb26b948f2b375259741237d3347e6d7c818bb161 /print-carp.c
parent69f6f4392a3dd9b25467da61bf112d34cc7d558d (diff)
downloadtcpdump-6e12d87355718f309ce9f33183ff8235b9c5eb0d.tar.gz
CARP: NDOize
Diffstat (limited to 'print-carp.c')
-rw-r--r--print-carp.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/print-carp.c b/print-carp.c
index 05abff16..3602cdac 100644
--- a/print-carp.c
+++ b/print-carp.c
@@ -43,42 +43,43 @@
#include <stdio.h>
#include <stdlib.h>
-#include "interface.h"
+#include "interface.h" /* for checksum structure and functions */
+#include "netdissect.h"
#include "extract.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].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]"));
}