diff -rduNp linux-2.6.21.5.openswan28/net/ipsec/ipsec_alg_cryptoapi.c linux-2.6.21.5/net/ipsec/ipsec_alg_cryptoapi.c
--- linux-2.6.21.5.openswan28/net/ipsec/ipsec_alg_cryptoapi.c	2007-06-21 10:44:07.000000000 +0200
+++ linux-2.6.21.5/net/ipsec/ipsec_alg_cryptoapi.c	2007-06-21 23:34:05.000000000 +0200
@@ -197,7 +197,7 @@ static struct ipsec_alg_capi_cipher alg_
  */
 int setup_cipher(const char *ciphername)
 {
-	return crypto_alg_available(ciphername, 0);
+	return crypto_has_alg(ciphername, 0, CRYPTO_ALG_ASYNC);
 }
 
 /*
@@ -272,7 +272,7 @@ static __u8 *
 _capi_new_key (struct ipsec_alg_enc *alg, const __u8 *key, size_t keylen)
 {
 	struct ipsec_alg_capi_cipher *cptr;
-	struct crypto_tfm *tfm=NULL;
+	struct crypto_cipher *tfm=NULL;
 
 	cptr = alg->ixt_common.ixt_data;
 	if (!cptr) {
@@ -289,7 +289,7 @@ _capi_new_key (struct ipsec_alg_enc *alg
 	/*	
 	 *	alloc tfm
 	 */
-	tfm = crypto_alloc_tfm(cptr->ciphername, CRYPTO_TFM_MODE_CBC);
+	tfm = crypto_alloc_cipher(cptr->ciphername, 0, CRYPTO_ALG_ASYNC);
 	if (!tfm) {
 		printk(KERN_ERR "_capi_new_key(): "
 				"NULL tfm for \"%s\" cryptoapi (\"%s\") algo\n" 
@@ -300,7 +300,7 @@ _capi_new_key (struct ipsec_alg_enc *alg
 		printk(KERN_ERR "_capi_new_key(): "
 				"failed new_key() for \"%s\" cryptoapi algo (keylen=%d)\n" 
 			, alg->ixt_common.ixt_name, keylen);
-		crypto_free_tfm(tfm);
+		crypto_free_cipher(tfm);
 		tfm=NULL;
 	}
 err:
@@ -317,23 +317,26 @@ err:
 static int 
 _capi_cbc_encrypt(struct ipsec_alg_enc *alg, __u8 * key_e, __u8 * in, int ilen, const __u8 * iv, int encrypt) {
 	int error =0;
-	struct crypto_tfm *tfm=(struct crypto_tfm *)key_e;
+	struct crypto_blkcipher *tfm=(struct crypto_blkcipher *)key_e;
+	struct blkcipher_desc desc;
 	struct scatterlist sg = { 
 		.page = virt_to_page(in),
 		.offset = (unsigned long)(in) % PAGE_SIZE,
 		.length=ilen,
 	};
+	desc.tfm = tfm;
+	desc.flags = 0;
 	if (debug_crypto > 1)
 		printk(KERN_DEBUG "klips_debug:_capi_cbc_encrypt:"
 				"key_e=%p "
 				"in=%p out=%p ilen=%d iv=%p encrypt=%d\n"
 				, key_e
 				, in, in, ilen, iv, encrypt);
-	crypto_cipher_set_iv(tfm, iv, crypto_tfm_alg_ivsize(tfm));
+	crypto_blkcipher_set_iv(tfm, iv, crypto_blkcipher_ivsize(tfm));
 	if (encrypt)
-		error = crypto_cipher_encrypt (tfm, &sg, &sg, ilen);
+		error = crypto_blkcipher_encrypt (&desc, &sg, &sg, ilen);
 	else
-		error = crypto_cipher_decrypt (tfm, &sg, &sg, ilen);
+		error = crypto_blkcipher_decrypt (&desc, &sg, &sg, ilen);
 	if (debug_crypto > 1)
 		printk(KERN_DEBUG "klips_debug:_capi_cbc_encrypt:"
 				"error=%d\n"
@@ -370,8 +373,9 @@ setup_cipher_list (struct ipsec_alg_capi
 		 * 	use a local ci to avoid touching cptr->ci,
 		 * 	if register ipsec_alg success then bind cipher
 		 */
-		if(cptr->alg.ixt_common.ixt_support.ias_name == NULL) {
-		  cptr->alg.ixt_common.ixt_support.ias_name = cptr->ciphername;
+		if (cptr->alg.ixt_common.ixt_support.ias_name == NULL) {
+printk(KERN_DEBUG "klips_debug: ias_name was nil\n");
+//		  cptr->alg.ixt_common.ixt_support.ias_name = cptr->ciphername;
 		}
 
 		if( setup_cipher(cptr->ciphername) ) {
diff -rduNp linux-2.6.21.5.openswan28/net/ipsec/sysctl_net_ipsec.c linux-2.6.21.5/net/ipsec/sysctl_net_ipsec.c
--- linux-2.6.21.5.openswan28/net/ipsec/sysctl_net_ipsec.c	2007-06-21 10:44:07.000000000 +0200
+++ linux-2.6.21.5/net/ipsec/sysctl_net_ipsec.c	2007-06-21 22:33:51.000000000 +0200
@@ -74,45 +74,45 @@ enum {
 static ctl_table ipsec_table[] = {
 #ifdef CONFIG_KLIPS_DEBUG
 	{ NET_IPSEC_DEBUG_AH, "debug_ah", &debug_ah,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_ESP, "debug_esp", &debug_esp,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_TUNNEL, "debug_tunnel", &debug_tunnel,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_EROUTE, "debug_eroute", &debug_eroute,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_SPI, "debug_spi", &debug_spi,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_RADIJ, "debug_radij", &debug_radij,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_NETLINK, "debug_netlink", &debug_netlink,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_XFORM, "debug_xform", &debug_xform,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_RCV, "debug_rcv", &debug_rcv,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_PFKEY, "debug_pfkey", &debug_pfkey,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_DEBUG_VERBOSE, "debug_verbose",&sysctl_ipsec_debug_verbose,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 #ifdef CONFIG_KLIPS_IPCOMP
 	{ NET_IPSEC_DEBUG_IPCOMP, "debug_ipcomp", &sysctl_ipsec_debug_ipcomp,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 #endif /* CONFIG_KLIPS_IPCOMP */
 
 #ifdef CONFIG_KLIPS_REGRESS
 	{ NET_IPSEC_REGRESS_PFKEY_LOSSAGE, "pfkey_lossage",
 	  &sysctl_ipsec_regress_pfkey_lossage,
-	  sizeof(int), 0644, NULL, &proc_dointvec},
+	  sizeof(int), 0644,  &proc_dointvec},
 #endif /* CONFIG_KLIPS_REGRESS */
 
 #endif /* CONFIG_KLIPS_DEBUG */
 	{ NET_IPSEC_ICMP, "icmp", &sysctl_ipsec_icmp,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_INBOUND_POLICY_CHECK, "inbound_policy_check", &sysctl_ipsec_inbound_policy_check,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644,  &proc_dointvec},
 	{ NET_IPSEC_TOS, "tos", &sysctl_ipsec_tos,
-	  sizeof(int), 0644, NULL, &proc_dointvec},    
+	  sizeof(int), 0644, &proc_dointvec},
 	{0}
 };
 
@@ -130,7 +130,7 @@ static struct ctl_table_header *ipsec_ta
 
 int ipsec_sysctl_register(void)
 {
-        ipsec_table_header = register_sysctl_table(ipsec_root_table, 0);
+        ipsec_table_header = register_sysctl_table(ipsec_root_table);
         if (!ipsec_table_header) {
                 return -ENOMEM;
 	}
