diff options
| author | Justin Pettit <jpettit@nicira.com> | 2009-12-15 11:20:58 -0800 |
|---|---|---|
| committer | Justin Pettit <jpettit@nicira.com> | 2010-01-04 14:07:26 -0800 |
| commit | 8f3a29be917cad5bcb389ab510d918ae21fea0c5 (patch) | |
| tree | 277090ee33569661fd1a2af155c8accc96b2c93c | |
| parent | c475ae67206ef40a32b07b886c2d619e9c170440 (diff) | |
| download | openvswitch-8f3a29be917cad5bcb389ab510d918ae21fea0c5.tar.gz | |
datapath: Add missing definitions for building GRE on older kernels
| -rw-r--r-- | acinclude.m4 | 6 | ||||
| -rw-r--r-- | datapath/linux-2.6/compat-2.6/include/linux/in.h | 5 | ||||
| -rw-r--r-- | datapath/linux-2.6/compat-2.6/include/linux/skbuff.h | 5 | ||||
| -rw-r--r-- | datapath/linux-2.6/compat-2.6/include/linux/stddef.h | 17 | ||||
| -rw-r--r-- | datapath/linux-2.6/compat-2.6/include/linux/types.h | 4 | ||||
| -rw-r--r-- | datapath/linux-2.6/compat-2.6/include/net/netlink.h | 18 |
6 files changed, 52 insertions, 3 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index e4fa5e621..490936e1d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -139,6 +139,8 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ rm -f datapath/linux-2.6/kcompat.h.new mkdir -p datapath/linux-2.6 : > datapath/linux-2.6/kcompat.h.new + OVS_GREP_IFELSE([$KSRC26/include/linux/types.h], [bool], + [OVS_DEFINE([HAVE_BOOL_TYPE])]) OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_transport_header], [OVS_DEFINE([HAVE_SKBUFF_HEADER_HELPERS])]) OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [raw], @@ -154,6 +156,10 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ [OVS_DEFINE([HAVE_CSUM_UNFOLD])]) OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_cow], [OVS_DEFINE([HAVE_SKB_COW])]) + OVS_GREP_IFELSE([$KSRC26/include/net/netlink.h], [nla_get_be16], + [OVS_DEFINE([HAVE_NLA_GET_BE16])]) + OVS_GREP_IFELSE([$KSRC26/include/linux/in.h], [ipv4_is_multicast], + [OVS_DEFINE([HAVE_IPV4_IS_MULTICAST])]) # Check for the proto_data_valid member in struct sk_buff. The [^@] # is necessary because some versions of this header remove the # member but retain the kerneldoc comment that describes it (which diff --git a/datapath/linux-2.6/compat-2.6/include/linux/in.h b/datapath/linux-2.6/compat-2.6/include/linux/in.h index 2cfe6450e..fd5c3c673 100644 --- a/datapath/linux-2.6/compat-2.6/include/linux/in.h +++ b/datapath/linux-2.6/compat-2.6/include/linux/in.h @@ -3,14 +3,13 @@ #include_next <linux/in.h> -#include <linux/version.h> -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) +#ifndef HAVE_IPV4_IS_MULTICAST static inline bool ipv4_is_multicast(__be32 addr) { return (addr & htonl(0xf0000000)) == htonl(0xe0000000); } -#endif /* linux kernel < 2.6.25 */ +#endif /* !HAVE_IPV4_IS_MULTICAST */ #endif diff --git a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h index edeba5ae2..d8205c6a2 100644 --- a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h +++ b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h @@ -149,6 +149,11 @@ static inline unsigned char *skb_network_header(const struct sk_buff *skb) return skb->nh.raw; } +static inline void skb_reset_network_header(struct sk_buff *skb) +{ + skb->nh.raw = skb->data; +} + static inline void skb_set_network_header(struct sk_buff *skb, const int offset) { skb->nh.raw = skb->data + offset; diff --git a/datapath/linux-2.6/compat-2.6/include/linux/stddef.h b/datapath/linux-2.6/compat-2.6/include/linux/stddef.h new file mode 100644 index 000000000..9b68f710f --- /dev/null +++ b/datapath/linux-2.6/compat-2.6/include/linux/stddef.h @@ -0,0 +1,17 @@ +#ifndef __LINUX_STDDEF_WRAPPER_H +#define __LINUX_STDDEF_WRAPPER_H 1 + +#include_next <linux/stddef.h> + +#ifdef __KERNEL__ + +#ifndef HAVE_BOOL_TYPE +enum { + false = 0, + true = 1 +}; +#endif /* !HAVE_BOOL_TYPE */ + +#endif /* __KERNEL__ */ + +#endif diff --git a/datapath/linux-2.6/compat-2.6/include/linux/types.h b/datapath/linux-2.6/compat-2.6/include/linux/types.h index c1f375eb3..d88baf71c 100644 --- a/datapath/linux-2.6/compat-2.6/include/linux/types.h +++ b/datapath/linux-2.6/compat-2.6/include/linux/types.h @@ -11,4 +11,8 @@ typedef __u32 __bitwise __wsum; #endif /* linux kernel < 2.6.20 */ +#ifndef HAVE_BOOL_TYPE +typedef _Bool bool; +#endif /* !HAVE_BOOL_TYPE */ + #endif 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 e0d594d78..2f979fecb 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 @@ -19,4 +19,22 @@ static inline int VERIFY_NUL_STRING(struct nlattr *attr) } #endif /* !HAVE_NLA_NUL_STRING */ + +#ifndef NLA_PUT_BE16 +#define NLA_PUT_BE16(skb, attrtype, value) \ + NLA_PUT_TYPE(skb, __be16, attrtype, value) +#endif /* !NLA_PUT_BE16 */ + + +#ifndef HAVE_NLA_GET_BE16 +/** + * nla_get_be16 - return payload of __be16 attribute + * @nla: __be16 netlink attribute + */ +static inline __be16 nla_get_be16(struct nlattr *nla) +{ + return *(__be16 *) nla_data(nla); +} +#endif /* !HAVE_NLA_GET_BE16 */ + #endif /* net/netlink.h */ |
