1*c9e7c76dSDmitry Safonov // SPDX-License-Identifier: GPL-2.0 2*c9e7c76dSDmitry Safonov /* 3*c9e7c76dSDmitry Safonov * XFRM compat layer 4*c9e7c76dSDmitry Safonov * Author: Dmitry Safonov <dima@arista.com> 5*c9e7c76dSDmitry Safonov * Based on code and translator idea by: Florian Westphal <fw@strlen.de> 6*c9e7c76dSDmitry Safonov */ 7*c9e7c76dSDmitry Safonov #include <linux/compat.h> 8*c9e7c76dSDmitry Safonov #include <linux/xfrm.h> 9*c9e7c76dSDmitry Safonov #include <net/xfrm.h> 10*c9e7c76dSDmitry Safonov 11*c9e7c76dSDmitry Safonov static struct xfrm_translator xfrm_translator = { 12*c9e7c76dSDmitry Safonov .owner = THIS_MODULE, 13*c9e7c76dSDmitry Safonov }; 14*c9e7c76dSDmitry Safonov 15*c9e7c76dSDmitry Safonov static int __init xfrm_compat_init(void) 16*c9e7c76dSDmitry Safonov { 17*c9e7c76dSDmitry Safonov return xfrm_register_translator(&xfrm_translator); 18*c9e7c76dSDmitry Safonov } 19*c9e7c76dSDmitry Safonov 20*c9e7c76dSDmitry Safonov static void __exit xfrm_compat_exit(void) 21*c9e7c76dSDmitry Safonov { 22*c9e7c76dSDmitry Safonov xfrm_unregister_translator(&xfrm_translator); 23*c9e7c76dSDmitry Safonov } 24*c9e7c76dSDmitry Safonov 25*c9e7c76dSDmitry Safonov module_init(xfrm_compat_init); 26*c9e7c76dSDmitry Safonov module_exit(xfrm_compat_exit); 27*c9e7c76dSDmitry Safonov MODULE_LICENSE("GPL"); 28*c9e7c76dSDmitry Safonov MODULE_AUTHOR("Dmitry Safonov"); 29*c9e7c76dSDmitry Safonov MODULE_DESCRIPTION("XFRM 32-bit compatibility layer"); 30