datapath: Add compatibility code for inet_add_protocol().
authorJesse Gross <jesse@nicira.com>
Wed, 24 Nov 2010 06:35:15 +0000 (22:35 -0800)
committerJesse Gross <jesse@nicira.com>
Fri, 3 Dec 2010 01:10:15 +0000 (17:10 -0800)
Kernels earlier than 2.6.32 did not mark struct net_protocol as const
in inet_add_protcol() and inet_del_protocol().  This provides compatibility
code to cast away the constness on these kernels so we can have them be
const on newer kernels.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/linux-2.6/Modules.mk
datapath/linux-2.6/compat-2.6/include/net/protocol.h [new file with mode: 0644]

index 380f1c1..e1e3334 100644 (file)
@@ -48,6 +48,7 @@ openvswitch_headers += \
        linux-2.6/compat-2.6/include/net/genetlink.h \
        linux-2.6/compat-2.6/include/net/ip.h \
        linux-2.6/compat-2.6/include/net/netlink.h \
+       linux-2.6/compat-2.6/include/net/protocol.h \
        linux-2.6/compat-2.6/include/net/route.h
 
 both_modules += brcompat
diff --git a/datapath/linux-2.6/compat-2.6/include/net/protocol.h b/datapath/linux-2.6/compat-2.6/include/net/protocol.h
new file mode 100644 (file)
index 0000000..6ffe0cb
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __NET_PROTOCOL_WRAPPER_H
+#define __NET_PROTOCOL_WRAPPER_H 1
+
+#include_next <net/protocol.h>
+
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
+#define inet_add_protocol(prot, num) inet_add_protocol((struct net_protocol *)(prot), num)
+#define inet_del_protocol(prot, num) inet_del_protocol((struct net_protocol *)(prot), num)
+#endif
+
+#endif