xfrm: Honor original L3 slave device in xfrmi policy lookup
authorMartin Willi <martin@strongswan.org>
Tue, 26 Mar 2019 12:20:43 +0000 (13:20 +0100)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 27 Mar 2019 15:14:05 +0000 (16:14 +0100)
commit025c65e119bf58b610549ca359c9ecc5dee6a8d2
treeb8a060c8237b6b965b327946043a11e40eae07bc
parent8dfb4eba4100e7cdd161a8baef2d8d61b7a7e62e
xfrm: Honor original L3 slave device in xfrmi policy lookup

If an xfrmi is associated to a vrf layer 3 master device,
xfrm_policy_check() fails after traffic decapsulation. The input
interface is replaced by the layer 3 master device, and hence
xfrmi_decode_session() can't match the xfrmi anymore to satisfy
policy checking.

Extend ingress xfrmi lookup to honor the original layer 3 slave
device, allowing xfrm interfaces to operate within a vrf domain.

Fixes: f203b76d7809 ("xfrm: Add virtual xfrm interfaces")
Signed-off-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
include/net/xfrm.h
net/xfrm/xfrm_interface.c
net/xfrm/xfrm_policy.c