Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <[email protected]> Tested-by: Joe Stringer <[email protected]> Acked-by: Ben Pfaff <[email protected]>
- Loading branch information