Subject: Re: FYI: this time, really about to import crypto framework
To: Sam Leffler <sam@errno.com>
From: None <itojun@iijlab.net>
List: tech-kern
Date: 07/23/2003 12:56:31
>>>> This is assuming there's still a consensus to move towards a
>>>> continuation-passing crypto framework for IPsec in general (which is a
>>>> pre-requisite for taking advantage of crypto accelerator cards) and to
>>>> Fast-IPsec (finishing adding Ipv6) in particular.
>>> I think that's a good direction to move.
>
>	Sam's code re-injects ESP-decoded packet (and others) to ipintrq,
>	just like openbsd (Sam commented that he wouldn't do it but from
>	freebsd code, he did).  it causes a big problem on transport mode case.

	maybe my memory wrt communication w/ Sam on this matter is incorrect.
	anyways, the following text describes the problem.  i believe Sam will
	address this.

itojun

---
	at the end ofsys/netipsec/ipsec_input.c:ipsec4_common_input_cb(),
	mbuf after ESP decryption/AH authentication is re-injected into
	ipintrq.  because of this, for transport-mode IPsec packet, we will
	experience problems like follows:
	- IP options will be evaluated again
	  (in IPv6 case, all extension headers prior to ESP/AH will be evaluated
	   again - this is a violation of RFC2460 page 6, last 4 lines)
	- IP stat counters will be increased twice
	- IP header checksum computed twice
	and there may be more.
	also
	- it becomes difficult to distinguish gif + ipsec transport mode and
	  ipsec tunnel mode (this is a problem markus@openbsd is attacking
	  right now)

	the right thing to happen for the transport mode IPsec packet is
	to go into protosw logic directly, with offset argument for pr_input
	properly set.