diff --git a/print-geonet.c b/print-geonet.c
index edfb7f2..9da89bf 100644
--- a/print-geonet.c
+++ b/print-geonet.c
@@ -15,14 +15,15 @@
  * Original code by Ola Martin Lykkja (ola.lykkja@q-free.com)
  */
 
-#define NETDISSECT_REWORKED
+/* \summary: ISO CALM FAST and ETSI GeoNetworking printer */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
 
-#include "interface.h"
+#include "netdissect.h"
 #include "extract.h"
 #include "addrtoname.h"
 
@@ -85,6 +86,8 @@
 {
 	uint32_t lat, lon;
 
+	if (!ND_TTEST2(*bp, GEONET_ADDR_LEN))
+		return (-1);
 	ND_PRINT((ndo, "GN_ADDR:%s ", linkaddr_string (ndo, bp, 0, GEONET_ADDR_LEN)));
 
 	if (!ND_TTEST2(*(bp+12), 8))
@@ -102,7 +105,8 @@
  * to the geonet header of the packet.
  */
 void
-geonet_print(netdissect_options *ndo, const u_char *eth, const u_char *bp, u_int length)
+geonet_print(netdissect_options *ndo, const u_char *bp, u_int length,
+	     const struct lladdr_info *src)
 {
 	int version;
 	int next_hdr;
@@ -114,13 +118,16 @@
 	const char *hdr_type_txt = "Unknown";
 	int hdr_size = -1;
 
-	ND_PRINT((ndo, "GeoNet src:%s; ", etheraddr_string(ndo, eth+6)));
+	ND_PRINT((ndo, "GeoNet "));
+	if (src != NULL)
+		ND_PRINT((ndo, "src:%s", (src->addr_string)(ndo, src->addr)));
+	ND_PRINT((ndo, "; "));
 
 	/* Process Common Header */
 	if (length < 36)
-		goto malformed;
-		
-	ND_TCHECK2(*bp, 7);
+		goto invalid;
+
+	ND_TCHECK2(*bp, 8);
 	version = bp[0] >> 4;
 	next_hdr = bp[0] & 0x0f;
 	hdr_type = bp[1] >> 4;
@@ -224,7 +231,7 @@
 	/* Skip Extended headers */
 	if (hdr_size >= 0) {
 		if (length < (u_int)hdr_size)
-			goto malformed;
+			goto invalid;
 		ND_TCHECK2(*bp, hdr_size);
 		length -= hdr_size;
 		bp += hdr_size;
@@ -234,7 +241,7 @@
 			case 1:
 			case 2: /* BTP A/B */
 				if (length < 4)
-					goto malformed;
+					goto invalid;
 				ND_TCHECK2(*bp, 4);
 				print_btp(ndo, bp);
 				length -= 4;
@@ -261,7 +268,7 @@
 		ND_DEFAULTPRINT(bp, length);
 	return;
 
-malformed:
+invalid:
 	ND_PRINT((ndo, " Malformed (small) "));
 	/* XXX - print the remaining data as hex? */
 	return;
