diff --git a/print-tipc.c b/print-tipc.c
index 8f2f769..b883fba 100644
--- a/print-tipc.c
+++ b/print-tipc.c
@@ -19,26 +19,20 @@
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#ifndef lint
-static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.66 2006-03-03 22:53:21 hannes Exp $ (LBL)";
-#endif
-
+#define NETDISSECT_REWORKED
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
 #include <tcpdump-stdinc.h>
 
-#include <stdio.h>
-#include <string.h>
-
-#include "netdissect.h"
-#include "addrtoname.h"
+#include "interface.h"
 #include "ether.h"
 #include "ethertype.h"
 #include "extract.h"			/* must come after interface.h */
 
+static const char tstr[] = "[|TIPC]";
+
 /*
  * Transparent Inter-Process Communication (TIPC) protocol.
  *
@@ -69,8 +63,8 @@
 #define TIPC_NODE(addr)		(((addr) >> 0) & 0xFFF)
 
 struct tipc_pkthdr {
-	u_int32_t w0;
-	u_int32_t w1;
+	uint32_t w0;
+	uint32_t w1;
 };
 
 #define TIPC_VER(w0)		(((w0) >> 29) & 0x07)
@@ -113,30 +107,30 @@
 };
 
 struct payload_tipc_pkthdr {
-	u_int32_t w0;
-	u_int32_t w1;
-	u_int32_t w2;
-	u_int32_t prev_node;
-	u_int32_t orig_port;
-	u_int32_t dest_port;
-	u_int32_t orig_node;
-	u_int32_t dest_node;
-	u_int32_t name_type;
-	u_int32_t w9;
-	u_int32_t wA;
+	uint32_t w0;
+	uint32_t w1;
+	uint32_t w2;
+	uint32_t prev_node;
+	uint32_t orig_port;
+	uint32_t dest_port;
+	uint32_t orig_node;
+	uint32_t dest_node;
+	uint32_t name_type;
+	uint32_t w9;
+	uint32_t wA;
 };
 
 struct  internal_tipc_pkthdr {
-	u_int32_t w0;
-	u_int32_t w1;
-	u_int32_t w2;
-	u_int32_t prev_node;
-	u_int32_t w4;
-	u_int32_t w5;
-	u_int32_t orig_node;
-	u_int32_t dest_node;
-	u_int32_t trans_seq;
-	u_int32_t w9;
+	uint32_t w0;
+	uint32_t w1;
+	uint32_t w2;
+	uint32_t prev_node;
+	uint32_t w4;
+	uint32_t w5;
+	uint32_t orig_node;
+	uint32_t dest_node;
+	uint32_t trans_seq;
+	uint32_t w9;
 };
 
 #define TIPC_SEQ_GAP(w1)	(((w1) >> 16) & 0x1FFF)
@@ -149,13 +143,13 @@
 #define TIPC_LINK_TOL(w9)	(((w9) >> 0) & 0xFFFF)
 
 struct link_conf_tipc_pkthdr {
-	u_int32_t w0;
-	u_int32_t w1;
-	u_int32_t dest_domain;
-	u_int32_t prev_node;
-	u_int32_t ntwrk_id;
-	u_int32_t w5;
-	u_int8_t media_address[16];
+	uint32_t w0;
+	uint32_t w1;
+	uint32_t dest_domain;
+	uint32_t prev_node;
+	uint32_t ntwrk_id;
+	uint32_t w5;
+	uint8_t media_address[16];
 };
 
 #define TIPC_NODE_SIG(w1)	(((w1) >> 0) & 0xFFFF)
@@ -164,7 +158,7 @@
 static void
 print_payload(netdissect_options *ndo, const struct payload_tipc_pkthdr *ap)
 {
-	u_int32_t w0, w1, w2;
+	uint32_t w0, w1, w2;
 	u_int user;
 	u_int hsize;
 	u_int msize;
@@ -223,13 +217,13 @@
 	return;
 
 trunc:
-	ND_PRINT((ndo, "[|TIPC]"));
+	ND_PRINT((ndo, "%s", tstr));
 }
-	 
+
 static void
 print_internal(netdissect_options *ndo, const struct internal_tipc_pkthdr *ap)
 {
-	u_int32_t w0, w1, w2, w4, w5, w9;
+	uint32_t w0, w1, w2, w4, w5, w9;
 	u_int user;
 	u_int hsize;
 	u_int msize;
@@ -291,13 +285,13 @@
 	return;
 
 trunc:
-	ND_PRINT((ndo, "[|TIPC]"));
+	ND_PRINT((ndo, "%s", tstr));
 }
 
 static void
 print_link_conf(netdissect_options *ndo, const struct link_conf_tipc_pkthdr *ap)
 {
-	u_int32_t w0, w1, w5;
+	uint32_t w0, w1, w5;
 	u_int user;
 	u_int hsize;
 	u_int msize;
@@ -315,7 +309,6 @@
 	msize = TIPC_MSIZE(w0);
 	w1 = EXTRACT_32BITS(&ap->w1);
 	mtype = TIPC_MTYPE(w1);
-	prev_node = EXTRACT_32BITS(&ap->prev_node);
 	dest_domain = EXTRACT_32BITS(&ap->dest_domain);
 	prev_node = EXTRACT_32BITS(&ap->prev_node);
 
@@ -338,7 +331,7 @@
 	return;
 
 trunc:
-	ND_PRINT((ndo, "[|TIPC]"));
+	ND_PRINT((ndo, "%s", tstr));
 }
 
 void
@@ -346,7 +339,7 @@
     u_int caplen _U_)
 {
 	const struct tipc_pkthdr *ap;
-	u_int32_t w0;
+	uint32_t w0;
 	u_int user;
 
 	ap = (struct tipc_pkthdr *)bp;
@@ -363,7 +356,7 @@
 		case TIPC_USER_NAME_DISTRIBUTOR:
 		case TIPC_USER_CONN_MANAGER:
 			print_payload(ndo, (struct payload_tipc_pkthdr *)bp);
-			break;			 
+			break;
 
 		case TIPC_USER_LINK_CONFIG:
 			print_link_conf(ndo, (struct link_conf_tipc_pkthdr *)bp);
@@ -381,7 +374,7 @@
 	return;
 
 trunc:
-	ND_PRINT((ndo, "[|TIPC]"));
+	ND_PRINT((ndo, "%s", tstr));
 }
 
 /*
