On Tue, Mar 07, 2017 at 05:33:13PM +0530, trajara...@mvista.com wrote: > From: Thiruvadi rajaraman <trajara...@mvista.com> > > The "ip xfrm state update" process doesn't update the new authendication > and encryption keys as well as it doesn't return an error. > > Test logs: (Default) > ========== > ~# ip xfrm state list > ~# ip xfrm state add src fe80::/10 dst ff02::3 proto esp spi 1235 mode > transport auth sha1 0xAABBCCDDEEFF0010 enc des 0xAABBCCDDEEFF0010 > ~# ip xfrm state list > src fe80:: dst ff02::3 > proto esp spi 0x000004d3 reqid 0 mode transport > replay-window 0 > auth-trunc hmac(sha1) 0xaabbccddeeff0010 96 > enc cbc(des) 0xaabbccddeeff0010 > sel src ::/0 dst ::/0 > ~# > > ~# ip xfrm state update src fe80::/10 dst ff02::3 proto esp spi 1235 mode > transport auth sha1 0xAABBCCDDEEFF0015 enc des 0xAABBCCDDEEFF0020 > src fe80:: dst ff02::3 > proto esp spi 0x000004d3 reqid 0 mode transport > replay-window 0 > auth-trunc hmac(sha1) 0xaabbccddeeff0010 96 ----> [ Auth key > doesn't changed and remains same ] > enc cbc(des) 0xaabbccddeeff0010 ----> [ Enc key > doesn't changed and remains same ]
This is intentional, the original state is not XFRM_STATE_ACQ, so you are not allowed to update keys without requesting for a new SPI. The original code was written 15 years ago, based on RFC 2367 (PF_KEY) which says we must return -EINVAL in this case. So if we change this, we should return an error.