-
Committer:
Paul Jakma
-
Author(s):
Xiami
-
Date:
2018-02-04 20:27:58 UTC
-
Revision ID:
git-v1:fed50218deeaef4d996d25c45b1aa56fe5e337c4
lib: Avoid re-definition of IPPROTO_IP with some versions of Linux
* Starting from linux-4.11 [commit
bcb41c6bced1ee778d23c53a6b4807fb08cf5540], linux/mroute.h includes
linux/in.h , that makes gcc roar a lot of things like "error:
redeclaration of enumerator 'IPPROTO_IP'" when compiling quagga-1.2.2
lib/zebra.h includes sys/capability.h first, then includes
netinet/in.h . In sys/capability.h, it includes linux/xattr.h, and
that includes linux/libc-compat.h . Since at that time netinet/in.h is
not included yet, _NETINET_IN_H is not defined, causing libc-compat.h
set __UAPI_DEF_IN_IPPROTO to 1. Then, a include of netinet/in.h
defines IPPROTO_IP. Later a include of linux/mroute.h includes
linux/in.h. Because __UAPI_DEF_IN_IPPROTO is set to non zero,
IPPROTO_IP is redeclared.
* lib/zebra.h: Move the privs/capabilities include block to after the
network block.