ERR_CAST was introduced in Linux 2.6.25 but it is also backported into the
Red Hat 2.6.18, so we need a configure-time check.
[OFP_DEFINE([HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET])])
OFP_GREP_IFELSE([$KSRC26/include/net/netlink.h], [NLA_NUL_STRING],
[OFP_DEFINE([HAVE_NLA_NUL_STRING])])
+ OFP_GREP_IFELSE([$KSRC26/include/linux/err.h], [ERR_CAST],
+ [OFP_DEFINE([HAVE_ERR_CAST])])
OFP_CHECK_LOG2_H
OFP_CHECK_VETH
if cmp -s datapath/linux-2.6/kcompat.h.new \
--- /dev/null
+#ifndef __LINUX_ERR_WRAPPER_H
+#define __LINUX_ERR_WRAPPER_H 1
+
+#include_next <linux/err.h>
+
+#ifndef HAVE_ERR_CAST
+/**
+ * ERR_CAST - Explicitly cast an error-valued pointer to another pointer type
+ * @ptr: The pointer to cast.
+ *
+ * Explicitly cast an error-valued pointer to another pointer type in such a
+ * way as to make it clear that's what's going on.
+ */
+static inline void *ERR_CAST(const void *ptr)
+{
+ /* cast away the const */
+ return (void *) ptr;
+}
+#endif /* HAVE_ERR_CAST */
+
+#endif