[ovs-dev] [compat 5/6] datapath: Add compat support for nla_type().

Ben Pfaff blp at nicira.com
Fri Dec 10 22:47:53 UTC 2010


The datapath code uses nla_type() but it was only introduced in 2.6.24.

The NLA_TYPE_MASK definition has to go above the #include <net/netlink.h>
because <net/netlink.h> recursively #include <linux/netlink.h>.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 .../linux-2.6/compat-2.6/include/linux/netlink.h   |    8 +++++++-
 .../linux-2.6/compat-2.6/include/net/netlink.h     |   13 +++++++++++++
 2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/datapath/linux-2.6/compat-2.6/include/linux/netlink.h b/datapath/linux-2.6/compat-2.6/include/linux/netlink.h
index fba899e..1666097 100644
--- a/datapath/linux-2.6/compat-2.6/include/linux/netlink.h
+++ b/datapath/linux-2.6/compat-2.6/include/linux/netlink.h
@@ -3,8 +3,14 @@
 
 #include <linux/skbuff.h>
 #include_next <linux/netlink.h>
-#include <net/netlink.h>
 
+#ifndef NLA_TYPE_MASK
+#define NLA_F_NESTED		(1 << 15)
+#define NLA_F_NET_BYTEORDER	(1 << 14)
+#define NLA_TYPE_MASK		~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+#endif
+
+#include <net/netlink.h>
 #include <linux/version.h>
 
 #ifndef NLMSG_DEFAULT_SIZE
diff --git a/datapath/linux-2.6/compat-2.6/include/net/netlink.h b/datapath/linux-2.6/compat-2.6/include/net/netlink.h
index 2f979fe..c6f5e04 100644
--- a/datapath/linux-2.6/compat-2.6/include/net/netlink.h
+++ b/datapath/linux-2.6/compat-2.6/include/net/netlink.h
@@ -1,6 +1,7 @@
 #ifndef __NET_NETLINK_WRAPPER_H
 #define __NET_NETLINK_WRAPPER_H 1
 
+#include <linux/version.h>
 #include_next <net/netlink.h>
 
 #ifndef HAVE_NLA_NUL_STRING
@@ -37,4 +38,16 @@ static inline __be16 nla_get_be16(struct nlattr *nla)
 }
 #endif  /* !HAVE_NLA_GET_BE16 */
 
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
+/**
+ * nla_type - attribute type
+ * @nla: netlink attribute
+ */
+static inline int nla_type(const struct nlattr *nla)
+{
+        return nla->nla_type & NLA_TYPE_MASK;
+}
+#endif
+
 #endif /* net/netlink.h */
-- 
1.7.1





More information about the dev mailing list