diff -urN openswan-2.4.13-orig/programs/pluto/demux.c openswan-2.4.13/programs/pluto/demux.c
--- openswan-2.4.13-orig/programs/pluto/demux.c	2009-09-24 16:17:45.000000000 +0800
+++ openswan-2.4.13/programs/pluto/demux.c	2009-09-24 14:07:58.000000000 +0800
@@ -2060,7 +2060,8 @@
     {
 	/* packet was not encryped -- should it have been? */
 
-	if (smc->flags & SMF_INPUT_ENCRYPTED)
+	if ((smc->flags & SMF_INPUT_ENCRYPTED) && !(st->st_policy & POLICY_AGGRESSIVE))
+	
 	{
 	    loglog(RC_LOG_SERIOUS, "packet rejected: should have been encrypted");
 	    SEND_NOTIFICATION(INVALID_FLAGS);
diff -urN openswan-2.4.13-orig/programs/pluto/ikev1_quick.c openswan-2.4.13/programs/pluto/ikev1_quick.c
--- openswan-2.4.13-orig/programs/pluto/ikev1_quick.c	2008-02-15 06:22:34.000000000 +0800
+++ openswan-2.4.13/programs/pluto/ikev1_quick.c	2009-09-29 16:17:36.000000000 +0800
@@ -661,6 +661,11 @@
     st->st_new_iv_len = h->hash_digest_len;
     passert(st->st_new_iv_len <= sizeof(st->st_new_iv));
 
+	if((st->st_connection->policy & POLICY_AGGRESSIVE)){
+		st->st_ph1_iv_len = 8;
+		//loglog(RC_LOG_SERIOUS, "st->st_iv_len = 8 !!!!!!!!!!!!!!");
+	}
+
     DBG_cond_dump(DBG_CRYPT, "current Phase 1 IV:"
 		  , st->st_iv, st->st_iv_len);
 
