flowtable: fix xfrm datapath establishment

don't use skb_dst(skb) in dev_fill_forward_path(), it does not work to
infer reverse path.

do not use xfrm_decode_session(), it refers to the original path only.

adjust input ifindex to the tunnel device for decapsulated tunnel packets.

cache original route (only required for route object, not for flow_tuple
actually, dst_release on the xfrm bundle is sufficient).

do not hold refcnt on dst: ctx.dst already holds reference count and
xfrm_lookup_with_ifid() already provides a reference counter of 1.
5 files changed