Index: /trunk/tools/traceanon/traceanon.c
===================================================================
--- /trunk/tools/traceanon/traceanon.c	(revision 1566)
+++ /trunk/tools/traceanon/traceanon.c	(revision 1567)
@@ -208,4 +208,7 @@
 	for(;;) {
 		struct libtrace_ip *ipptr;
+		libtrace_udp_t *udp = NULL;
+		libtrace_tcp_t *tcp = NULL;
+
 		int psize;
 		psize = trace_read_packet(trace, packet);
@@ -220,6 +223,23 @@
 		ipptr = trace_get_ip(packet);
 
-		if (ipptr && (enc_source || enc_dest))
+		if (ipptr && (enc_source || enc_dest)) {
 			encrypt_ips(ipptr,enc_source,enc_dest);
+			ipptr->ip_sum = 0;
+		}
+
+		/* Replace checksums so that IP encryption cannot be
+		 * reversed */
+
+		/* XXX replace with nice use of trace_get_transport() */
+
+		udp = trace_get_udp(packet);
+		if (udp && (enc_source || enc_dest)) {
+			udp->check = 0;
+		} 
+
+		tcp = trace_get_tcp(packet);
+		if (tcp && (enc_source || enc_dest)) {
+			tcp->check = 0;
+		}
 
 		/* TODO: Encrypt IP's in ARP packets */
