]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv4/ip_tunnel_core.c
ip_tunnel: Call ip_tunnel_core_init() from inet_init()
[karo-tx-linux.git] / net / ipv4 / ip_tunnel_core.c
index 025b76e803fde5c8f10245ce5613e42962a85b23..5512f4e4ec1b1b629a9c1fe1c7ac2ac4ffced248 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/etherdevice.h>
 #include <linux/if_ether.h>
 #include <linux/if_vlan.h>
+#include <linux/static_key.h>
 
 #include <net/ip.h>
 #include <net/icmp.h>
@@ -291,16 +292,22 @@ static const struct lwtunnel_encap_ops ip_tun_lwt_ops = {
        .get_encap_size = ip_tun_encap_nlsize,
 };
 
-static int __init ip_tunnel_core_init(void)
+void __init ip_tunnel_core_init(void)
 {
        lwtunnel_encap_add_ops(&ip_tun_lwt_ops, LWTUNNEL_ENCAP_IP);
+}
 
-       return 0;
+struct static_key ip_tunnel_metadata_cnt = STATIC_KEY_INIT_FALSE;
+EXPORT_SYMBOL(ip_tunnel_metadata_cnt);
+
+void ip_tunnel_need_metadata(void)
+{
+       static_key_slow_inc(&ip_tunnel_metadata_cnt);
 }
-module_init(ip_tunnel_core_init);
+EXPORT_SYMBOL_GPL(ip_tunnel_need_metadata);
 
-static void __exit ip_tunnel_core_exit(void)
+void ip_tunnel_unneed_metadata(void)
 {
-       lwtunnel_encap_del_ops(&ip_tun_lwt_ops, LWTUNNEL_ENCAP_IP);
+       static_key_slow_dec(&ip_tunnel_metadata_cnt);
 }
-module_exit(ip_tunnel_core_exit);
+EXPORT_SYMBOL_GPL(ip_tunnel_unneed_metadata);