--- zzzz-none-000/linux-2.6.28.10/net/xfrm/xfrm_user.c 2009-05-02 18:54:43.000000000 +0000 +++ fusiv-7390-686/linux-2.6.28.10/net/xfrm/xfrm_user.c 2012-02-28 14:52:31.000000000 +0000 @@ -31,6 +31,13 @@ #include #endif +#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 + static inline int aead_len(struct xfrm_algo_aead *alg) { return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); @@ -421,6 +428,14 @@ 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 c.seq = nlh->nlmsg_seq; c.pid = nlh->nlmsg_pid; c.event = nlh->nlmsg_type; @@ -483,7 +498,12 @@ err = -EPERM; 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) @@ -1398,6 +1418,13 @@ audit_info.loginuid = NETLINK_CB(skb).loginuid; audit_info.sessionid = NETLINK_CB(skb).sessionid; audit_info.secid = NETLINK_CB(skb).sid; + +#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(p->proto, &audit_info); if (err) return err;