summaryrefslogtreecommitdiff
path: root/include/sparse
diff options
context:
space:
mode:
authorDaniele Di Proietto <diproiettod@vmware.com>2016-06-01 18:35:55 -0700
committerDaniele Di Proietto <diproiettod@vmware.com>2016-06-08 13:39:43 -0700
commitc663749d398fa1cd2ea5ad9ff96996c4356c3db6 (patch)
tree40185f132cf406b5eb3bf4796ff8e459e7c8d128 /include/sparse
parentc63b04d678aab6e63551f4105d6fc03c195d639e (diff)
downloadopenvswitch-c663749d398fa1cd2ea5ad9ff96996c4356c3db6.tar.gz
sparse: Fix conflict between netinet/in.h and linux/in.h
linux/in.h (from linux uapi headers) carries many of the same definitions as netinet/in.h (from glibc). If linux/in.h is included after netinet/in.h, conflicts are avoided in two ways: 1) linux/libc-compat.h (included by linux/in.h) detects the include guard of netinet/in.h and defines some macros (e.g. __UAPI_DEF_IN_IPPROTO) to 0. linux/in.h avoids exporting the same enums if those macros are 0. 2) The two files are allowed to redefine the same macros as long as the values are the same. Our include/sparse/netinet/in.h creates problems, because: 1) It uses a custom include guard 2) It uses dummy values for some macros. This commit changes include/sparse/netinet/in.h to use the same include guard as glibc netinet/in.h, and to use the same values for some macros. I think this problem is present with linux headers after a263653ed798("netfilter: don't pull include/linux/netfilter.h from netns headers") which cause our lib/netlink-conntrack.c to include linux/in.h after netinet/in.h. sample output from sparse: /usr/include/linux/in.h:29:9: warning: preprocessor token IPPROTO_IP redefined ../include/sparse/netinet/in.h:60:9: this was the original definition /usr/include/linux/in.h:31:9: warning: preprocessor token IPPROTO_ICMP redefined ../include/sparse/netinet/in.h:63:9: this was the original definition [...] /usr/include/linux/in.h:28:3: error: bad enum definition /usr/include/linux/in.h:28:3: error: Expected } at end of specifier /usr/include/linux/in.h:28:3: error: got 0 /usr/include/linux/in.h:84:16: error: redefinition of struct in_addr Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Tested-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'include/sparse')
-rw-r--r--include/sparse/netinet/in.h40
1 files changed, 20 insertions, 20 deletions
diff --git a/include/sparse/netinet/in.h b/include/sparse/netinet/in.h
index 78e598175..8a5b887bd 100644
--- a/include/sparse/netinet/in.h
+++ b/include/sparse/netinet/in.h
@@ -18,8 +18,8 @@
#error "Use this header only with sparse. It is not a correct implementation."
#endif
-#ifndef __NETINET_IN_SPARSE
-#define __NETINET_IN_SPARSE 1
+#ifndef _NETINET_IN_H
+#define _NETINET_IN_H 1
#include "openvswitch/types.h"
#include <inttypes.h>
@@ -77,25 +77,25 @@ struct sockaddr_in6 {
#define IPPORT_FTP 21
/* All the IP options documented in Linux ip(7). */
-#define IP_ADD_MEMBERSHIP 0
-#define IP_DROP_MEMBERSHIP 1
-#define IP_HDRINCL 2
-#define IP_MTU 3
-#define IP_MTU_DISCOVER 4
-#define IP_MULTICAST_IF 5
-#define IP_MULTICAST_LOOP 6
-#define IP_MULTICAST_TTL 7
-#define IP_NODEFRAG 8
-#define IP_OPTIONS 9
-#define IP_PKTINFO 10
+#define IP_ADD_MEMBERSHIP 35
+#define IP_DROP_MEMBERSHIP 36
+#define IP_HDRINCL 3
+#define IP_MTU 14
+#define IP_MTU_DISCOVER 10
+#define IP_MULTICAST_IF 32
+#define IP_MULTICAST_LOOP 34
+#define IP_MULTICAST_TTL 33
+#define IP_NODEFRAG 22
+#define IP_OPTIONS 4
+#define IP_PKTINFO 8
#define IP_RECVERR 11
-#define IP_RECVOPTS 12
+#define IP_RECVOPTS 6
#define IP_RECVTOS 13
-#define IP_RECVTTL 14
-#define IP_RETOPTS 15
-#define IP_ROUTER_ALERT 16
-#define IP_TOS 17
-#define IP_TTL 18
+#define IP_RECVTTL 12
+#define IP_RETOPTS 7
+#define IP_ROUTER_ALERT 5
+#define IP_TOS 1
+#define IP_TTL 2
#define INADDR_ANY 0x00000000
#define INADDR_BROADCAST 0xffffffff
@@ -146,4 +146,4 @@ int inet_aton (const char *, struct in_addr *);
const char *inet_ntop(int, const void *, char *, socklen_t);
int inet_pton(int, const char *, void *);
-#endif /* <netinet/in.h> sparse */
+#endif /* <netinet/in.h> */