Signed-off-by: Sven Eckelmann <s...@narfation.org>
---
 compat.c |   30 +++++++++++++++++++++++++++++-
 compat.h |   10 ++++++++++
 2 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/compat.c b/compat.c
index f4561c3..67c5126 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
-#include <linux/version.h>
+#include "main.h"
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29)
 
@@ -959,3 +959,31 @@ int bat_seq_printf(struct seq_file *m, const char *f, ...)
 }
 
 #endif /* < KERNEL_VERSION(2, 6, 29) */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 1234)
+
+void free_rcu_gw_node(struct rcu_head *rcu)
+{
+       struct gw_node *gw_node;
+
+       gw_node = container_of(rcu, struct gw_node, rcu);
+       kfree(gw_node);
+}
+
+void free_rcu_neigh_node(struct rcu_head *rcu)
+{
+       struct neigh_node *neigh_node;
+
+       neigh_node = container_of(rcu, struct neigh_node, rcu);
+       kfree(neigh_node);
+}
+
+void free_rcu_softif_neigh(struct rcu_head *rcu)
+{
+       struct softif_neigh *softif_neigh;
+
+       softif_neigh = container_of(rcu, struct softif_neigh, rcu);
+       kfree(softif_neigh);
+}
+
+#endif /* < KERNEL_VERSION(2, 6, 1234) */
diff --git a/compat.h b/compat.h
index c3fd2cd..62fd968 100644
--- a/compat.h
+++ b/compat.h
@@ -291,4 +291,14 @@ int bat_seq_printf(struct seq_file *m, const char *f, ...);
 
 #endif /* < KERNEL_VERSION(2, 6, 36) */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 1234)
+
+#define kfree_rcu(ptr, rcu_head) call_rcu(&ptr->rcu_head, free_rcu_##ptr)
+
+void free_rcu_gw_node(struct rcu_head *rcu);
+void free_rcu_neigh_node(struct rcu_head *rcu);
+void free_rcu_softif_neigh(struct rcu_head *rcu);
+
+#endif /* < KERNEL_VERSION(2, 6, 1234) */
+
 #endif /* _NET_BATMAN_ADV_COMPAT_H_ */
-- 
1.7.4.4

Reply via email to