--- zzzz-none-000/linux-2.6.28.10/net/key/af_key.c 2009-05-02 18:54:43.000000000 +0000 +++ fusiv-7390-686/linux-2.6.28.10/net/key/af_key.c 2012-02-28 14:52:31.000000000 +0000 @@ -31,6 +31,13 @@ #include +#if defined(CONFIG_FUSIV_KERNEL_AP_2_AP) || defined(CONFIG_FUSIV_KERNEL_AP_2_AP_MODULE) +#if defined(CONFIG_IPSEC_AP_SUPPORT) +extern void (*ap2apIPsecRouteFlowDelete_ptr)(struct xfrm_state *x); +extern void (*ap2apIPsecRouteFlowAdd_ptr)(struct xfrm_state *x); +#endif +#endif + #define _X2KEY(x) ((x) == XFRM_INF ? 0 : (x)) #define _KEY2X(x) ((x) == 0 ? XFRM_INF : (x)) @@ -1506,6 +1513,14 @@ __xfrm_state_put(x); goto out; } +#if defined(CONFIG_FUSIV_KERNEL_AP_2_AP) || defined(CONFIG_FUSIV_KERNEL_AP_2_AP_MODULE) +#if defined(CONFIG_IPSEC_AP_SUPPORT) + spin_lock_bh(&x->lock); + if(ap2apIPsecRouteFlowAdd_ptr) + ap2apIPsecRouteFlowAdd_ptr(x); + spin_unlock_bh(&x->lock); +#endif +#endif if (hdr->sadb_msg_type == SADB_ADD) c.event = XFRM_MSG_NEWSA; @@ -1542,6 +1557,12 @@ goto out; } +/*#if defined(CONFIG_FUSIV_KERNEL_AP_2_AP) || defined(CONFIG_FUSIV_KERNEL_AP_2_AP_MODULE) +#if defined(CONFIG_IPSEC_AP_SUPPORT) + if(ap2apIPsecRouteFlowDelete_ptr) + ap2apIPsecRouteFlowDelete_ptr(x); +#endif +#endif*/ err = xfrm_state_delete(x); if (err < 0) @@ -1732,6 +1753,12 @@ audit_info.loginuid = audit_get_loginuid(current); audit_info.sessionid = audit_get_sessionid(current); audit_info.secid = 0; +#if defined(CONFIG_FUSIV_KERNEL_AP_2_AP) || defined(CONFIG_FUSIV_KERNEL_AP_2_AP_MODULE) +#if defined(CONFIG_IPSEC_AP_SUPPORT) + if(ap2apIPsecRouteFlowDelete_ptr) + ap2apIPsecRouteFlowDelete_ptr(NULL); +#endif +#endif err = xfrm_state_flush(proto, &audit_info); if (err) return err;