diff --git a/print-carp.c b/print-carp.c
index 75f5774..7b9f28c 100644
--- a/print-carp.c
+++ b/print-carp.c
@@ -34,52 +34,49 @@
  *
  */
 
+#define NETDISSECT_REWORKED
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
 #include <tcpdump-stdinc.h>
 
-#include <stdio.h>
-#include <stdlib.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]"));
 }
