Although tmpl->optional is set, kernel still attempts to create a set of SAs.
In xfrm_tmpl_resolve_one(), xfrm_state_find() is called to find an SA. First time, there won't be an SA, so an ACQUIRE will be sent and code then returns to xfrm_tmpl_resolv_one() who then checks tmpl->optional. Since tmpl->optional is set, the xfrm code will then allow flow to pass not transformed. I may have misinterpreted semantics of tmpl->optional, (I thought it meant use an SA only if there is one, otherwise do not transform) but do we want to create an SA as well as send flow without xfrm'ing? regards, Joy Signed-off-by: Joy Latten <[EMAIL PROTECTED]> diff -urpN linux-2.6.orig/net/xfrm/xfrm_state.c linux-2.6.spd/net/xfrm/xfrm_state.c --- linux-2.6.orig/net/xfrm/xfrm_state.c 2007-11-18 16:53:16.000000000 -0600 +++ linux-2.6.spd/net/xfrm/xfrm_state.c 2007-11-18 23:38:08.000000000 -0600 @@ -814,6 +814,12 @@ xfrm_state_find(xfrm_address_t *daddr, x error = -EEXIST; goto out; } + + if (tmpl->optional) { + error = 0; + goto out; + } + x = xfrm_state_alloc(); if (x == NULL) { error = -ENOMEM; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html