[Openswan Users] keeping SA made OCF resource leak

Martin Schiller mschiller at tdt.de
Fri Jul 31 05:04:20 EDT 2009


----- Original Message ----- 
From: "David McCullough"
Sent: Friday, July 31, 2009 12:53 AM


> That is correct.  AFAICT now,  pluto is not releasing all the SA's correctly
> on a rekey,  still working through it.

I've got a similar problem here since I have updated from openswan 2.4.14 to 2.6.22:

When I set up (ipsec auto --up) a very simply MainMode PSK connection between 2 machines, I am 
getting the following output:

root:~# ipsec spi
tun0x1001 at 10.1.3.28 IPIP: dir=out src=10.1.4.165 life(c,s,h)=addtime(2,0,0) natencap=none natsport=0 
natdport=0 refcount=2 ref=1 refhim=0 reftable=0 refentry=1
tun0x1002 at 10.1.4.165 IPIP: dir=in  src=10.1.3.28 policy=192.168.28.0/24->192.168.165.0/24 
flags=0x8<> life(c,s,h)=addtime(2,0,0) natencap=none natsport=0 natdport=0 refcount=3 ref=3 refhim=1 
reftable=0 refentry=3
esp0x54151c68 at 10.1.4.165 ESP_AES_HMAC_SHA1: dir=in  src=10.1.3.28 iv_bits=128bits 
iv=0x574f2a911105bab302e3e52117b0f6ad ooowin=64 alen=160 aklen=160 eklen=128 
life(c,s,h)=addtime(2,0,0) natencap=none natsport=0 natdport=0 refcount=2 ref=4 refhim=1 reftable=0 
refentry=4
esp0x4d313dc7 at 10.1.3.28 ESP_AES_HMAC_SHA1: dir=out src=10.1.4.165 iv_bits=128bits 
iv=0xf8fb7431dd25d6b8e1b0bc69dc2fd179 ooowin=64 alen=160 aklen=160 eklen=128 
life(c,s,h)=addtime(2,0,0) natencap=none natsport=0 natdport=0 refcount=3 ref=2 refhim=0 reftable=0 
refentry=2

When I then do an ipsec auto --down (on the initiator side) and check the output of ipsec spi once 
again, I can see that:

root:~# ipsec spi
tun0x1001 at 10.1.3.28 IPIP: dir=out src=10.1.4.165 life(c,s,h)=addtime(6,0,0) natencap=none natsport=0 
natdport=0 refcount=2 ref=1 refhim=0 reftable=0 refentry=1
tun0x1002 at 10.1.4.165 IPIP: dir=in  src=10.1.3.28 policy=192.168.28.0/24->192.168.165.0/24 
flags=0x8<> life(c,s,h)=addtime(6,0,0) natencap=none natsport=0 natdport=0 refcount=2 ref=3 refhim=1 
reftable=0 refentry=3

And if i wait some time, so that there could happen some rekeyings, the amount of tun* SAs are 
increasing but none is ever deleted.

So, It seems to me that tun* SAs will never be deleted in general.

That wasn't so in the openswan 2.4.x releases and I think it has something to to with the way the 
SAs are deleted in the ipsec_sa_rm() function.
In 2.4.x there was an ipsec_sa_delchain() instead, in which you can find the following code

 while(ips->ips_onext != NULL) {
  ips = ips->ips_onext;
 }

where ips_onext points the the previous entry in the chain.

If I am right, this means that we are jumping to the first entry in the chain before we start 
removing SAs.
I cannot find an equivalent of this in the 2.6.x code.

Regards,
Martin 




More information about the Users mailing list