summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDmitry Safonov <dima@arista.com>2020-09-21 15:36:52 +0100
committerSteffen Klassert <steffen.klassert@secunet.com>2020-09-24 08:53:03 +0200
commit5461fc0c8d9f23956b99f5907f69726a293ccb67 (patch)
treec7cd6ef843f83276a0743f6f6e11ae1357ff5a84 /include
parentc9e7c76d70fa50582ca96759829c93d0dd024662 (diff)
downloadlinux-stable-5461fc0c8d9f23956b99f5907f69726a293ccb67.tar.gz
linux-stable-5461fc0c8d9f23956b99f5907f69726a293ccb67.tar.bz2
linux-stable-5461fc0c8d9f23956b99f5907f69726a293ccb67.zip
xfrm/compat: Add 64=>32-bit messages translator
Provide the kernel-to-user translator under XFRM_USER_COMPAT, that creates for 64-bit xfrm-user message a 32-bit translation and puts it in skb's frag_list. net/compat.c layer provides MSG_CMSG_COMPAT to decide if the message should be taken from skb or frag_list. (used by wext-core which has also an ABI difference) Kernel sends 64-bit xfrm messages to the userspace for: - multicast (monitor events) - netlink dumps Wire up the translator to xfrm_nlmsg_multicast(). Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/xfrm.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index fe2e3717da14..5b6cc62c9354 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -2000,7 +2000,12 @@ static inline int xfrm_tunnel_check(struct sk_buff *skb, struct xfrm_state *x,
return 0;
}
+extern const int xfrm_msg_min[XFRM_NR_MSGTYPES];
+
struct xfrm_translator {
+ /* Allocate frag_list and put compat translation there */
+ int (*alloc_compat)(struct sk_buff *skb, const struct nlmsghdr *src);
+
struct module *owner;
};