diff -ruN freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/README.NAT-Traversal freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/README.NAT-Traversal
--- freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/README.NAT-Traversal	Thu Jan  2 18:38:17 2003
+++ freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/README.NAT-Traversal	Mon Jan  6 10:11:15 2003
@@ -1,6 +1,6 @@
 
-NAT-Traversal Patch -- Version 0.5   [ Contributed by Arkoon Network Security ]
-==================================   [                  http://www.arkoon.net ]
+NAT-Traversal Patch -- Version 0.5a  [ Contributed by Arkoon Network Security ]
+===================================  [                  http://www.arkoon.net ]
                                      [          http://open-source.arkoon.net ]
 
 NAT-Traversal patch allows FreeS/WAN to be used behind any NAT device
@@ -188,4 +188,8 @@
     - Warning if IPSec-Passthrough NAT device is suspected and old drafts used
     - accept most recent NAT-T VID instead of first one
     - new ISAKMP VID (SSH Sentinel, esp-in-udp, Timestep)
+
+  o Version 0.5a
+    - fix bug that can block udp/4500 packets and create %hold state
+    - cosmetics
 
diff -ruN freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/klips/net/ipsec/ipsec_tunnel.c freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/klips/net/ipsec/ipsec_tunnel.c
--- freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/klips/net/ipsec/ipsec_tunnel.c	Thu Jan  2 17:34:44 2003
+++ freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/klips/net/ipsec/ipsec_tunnel.c	Mon Jan  6 10:11:15 2003
@@ -710,7 +710,12 @@
 	    && (!er
 		|| iph->daddr == er->er_said.dst.s_addr
 		|| INADDR_ANY == er->er_said.dst.s_addr)
-	    && (sport == 500)) {
+#ifdef CONFIG_IPSEC_NAT_TRAVERSAL
+	    && ((sport == 500) || (sport == 4500))
+#else
+	    && (sport == 500)
+#endif
+	    ) {
 		/* Whatever the eroute, this is an IKE message
 		 * from us (i.e. not being forwarded).
 		 * Furthermore, if there is a tunnel eroute,
diff -ruN freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/pluto/demux.c freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/pluto/demux.c
--- freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/pluto/demux.c	Thu Jan  2 17:40:50 2003
+++ freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/pluto/demux.c	Mon Jan  6 10:11:15 2003
@@ -715,6 +715,18 @@
 		    /* note dirty trick to suppress ~ at start of format
 		     * if we know what state to blame.
 		     */
+#ifdef NAT_TRAVERSAL
+		    if ((packet_len == 1) && (buffer[0] = 0xff)
+#ifdef DEBUG
+			&& ((cur_debugging & DBG_NATT) == 0)
+#endif
+			) {
+			/* don't log NAT-T keepalive related errors unless NATT debug is
+			 * enabled
+			 */
+		    }
+		    else
+#endif
 		    log((sender != NULL) + "~"
 			"ERROR: asynchronous network error report on %s"
 			"%s"
diff -ruN freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/pluto/nat_traversal.c freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/pluto/nat_traversal.c
--- freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5/pluto/nat_traversal.c	Thu Jan  2 16:46:15 2003
+++ freeswan-1.99-x509-0.9.15-alg-nd-natt-0.5a/pluto/nat_traversal.c	Mon Jan  6 10:11:15 2003
@@ -73,7 +73,7 @@
 static unsigned int _ka_evt = 0;
 static bool _force_ka = 0;
 
-static const char *natt_version = "0.5";
+static const char *natt_version = "0.5a";
 
 static const char *natt_methods[] = {
 	"draft-ietf-ipsec-nat-t-ike-00",
