Go to file
Leon Romanovsky aba736dc25 ip: Fix compilation break on old systems
As was reported [1], the iproute2 fails to compile on old systems,
in Cong's case, it was Fedora 19, in our case it was RedHat 7.2, which
failed with the following errors during compilation:

ipxfrm.c: In function ‘xfrm_selector_print’:
ipxfrm.c:479:7: error: ‘IPPROTO_MH’ undeclared (first use in this
function)
  case IPPROTO_MH:
       ^
ipxfrm.c:479:7: note: each undeclared identifier is reported only once
for each function it appears in
ipxfrm.c: In function ‘xfrm_selector_upspec_parse’:
ipxfrm.c:1345:8: error: ‘IPPROTO_MH’ undeclared (first use in this
function)
   case IPPROTO_MH:
        ^                                                                                                                                                            make[1]: *** [ipxfrm.o] Error 1

The reason to it is the order of headers files. The IPPROTO_MH field is
set in kernel's UAPI header file (in6.h), but only in case
__UAPI_DEF_IPPROTO_V6 is set before. That define comes from other kernel's
header file (libc-compat.h) and is set in case there are no previous
libc relevant declarations.

In ip code, the include of <netdb.h> causes to indirect inclusion of
<netinet/in.h> and it sets __UAPI_DEF_IPPROTO_V6 to be zero and prevents from
IPPROTO_MH declaration.

This patch takes the simplest possible approach to fix the compilation
error by checking if IPPROTO_MH was defined before and in case it
wasn't, it defines it to be the same as in the kernel.

[1] https://www.spinics.net/lists/netdev/msg463980.html

Cc: Cong Wang <xiyou.wangcong@gmail.com>
Cc: Riad Abo Raed <riada@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
2017-11-13 10:07:25 -08:00
bash-completion tc: bash-completion: Add support for matchall 2017-02-07 11:44:53 -08:00
bridge lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
devlink devlink: add batch command support 2017-11-12 16:15:23 -08:00
doc/actions doc: drop old ip command documentation 2017-09-29 10:51:02 -07:00
etc/iproute2 whitespace cleanup 2017-01-12 17:31:20 -08:00
examples examples: Some shell fixes to cbq.init 2017-08-18 09:11:00 -07:00
genl lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
include v4.14.0 2017-11-12 16:29:43 -08:00
ip ip: Fix compilation break on old systems 2017-11-13 10:07:25 -08:00
lib lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
man devlink: add batch command support 2017-11-12 16:15:23 -08:00
misc lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
netem Merge branch 'master' into net-next 2017-08-24 15:30:32 -07:00
rdma Merge branch 'master' into net-next 2017-08-24 15:30:32 -07:00
schema bridge: add json schema for bridge fdb show 2016-07-20 12:02:02 -07:00
tc lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
testsuite tests: Revert back /bin/sh in shebang 2017-10-16 09:22:01 -07:00
tipc tipc: don't need custom CFLAGS 2017-10-11 10:35:38 -07:00
.gitignore ignore generated Config file 2017-09-29 10:02:45 -07:00
configure lib: fix multiple strlcpy definition 2017-10-11 11:02:13 -07:00
COPYING Update address of FSF in license 2008-03-08 13:31:03 -08:00
Makefile iproute: build more easily on Android 2017-10-11 10:35:45 -07:00
README config: put CFLAGS/LDLIBS in config.mk 2017-08-23 10:03:09 -07:00
README.decnet Decnet documentation update 2005-06-13 18:47:56 +00:00
README.devel iproute2: fix minor typo in comments 2011-07-11 10:11:09 -07:00
README.distribution README cleanup's 2012-01-03 15:04:55 -08:00
README.iproute2+tc tc, bpf: finalize eBPF support for cls and act front-end 2015-04-10 13:31:19 -07:00
README.lnstat Rename: misc/README.lnstat -> README.lnstat 2004-10-19 20:24:47 +00:00

This is a set of utilities for Linux networking.

Information:
    http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2

Download:
    http://www.kernel.org/pub/linux/utils/net/iproute2/

Repository:
    git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git

How to compile this.
--------------------
1. libdbm

arpd needs to have the db4 development libraries. For Debian
users this is the package with a name like libdb4.x-dev.
DBM_INCLUDE points to the directory with db_185.h which
is the include file used by arpd to get to the old format Berkeley
database routines.  Often this is in the db-devel package.

2. make

The makefile will automatically build a config.mk file which
contains definitions of libraries that may or may not be available
on the system such as: ATM, ELF, MNL, and SELINUX.

3. To make documentation, cd to doc/ directory , then
   look at start of Makefile and set correct values for
   PAGESIZE=a4		, ie: a4 , letter ...	(string)
   PAGESPERPAGE=2	, ie: 1 , 2 ...		(numeric)
   and make there. It assumes, that latex, dvips and psnup
   are in your path.

4. This package includes matching sanitized kernel headers because
   the build environment may not have up to date versions. See Makefile
   if you have special requirements and need to point at different
   kernel include files.

Stephen Hemminger
stephen@networkplumber.org

Alexey Kuznetsov
kuznet@ms2.inr.ac.ru