mirror_iproute2/ip
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
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
ifcfg ifcfg: Quote left-hand side of [ ] expression 2017-08-18 09:11:00 -07:00
ip6tunnel.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ip_common.h json: move json printer to common library 2017-09-22 10:06:43 -07:00
ip.c lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
ipaddress.c lib: json_print: rework 'new_json_obj' drop FILE* argument 2017-09-29 10:10:47 -07:00
ipaddrlabel.c Use C99 style initializers everywhere 2016-07-20 12:05:24 -07:00
ipfou.c fou: show usage even if the module is not available 2016-08-17 14:00:22 -07:00
ipila.c ila: show usage even if the module is not available 2016-08-17 14:00:28 -07:00
ipl2tp.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
iplink_bond_slave.c ip: iplink_bond_slave.c: add json output support (info_slave_data) 2017-08-17 18:02:40 -07:00
iplink_bond.c ip: iplink_bond.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_bridge_slave.c ip: iplink_bridge_slave.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_bridge.c ip: iplink_bridge.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_can.c Merge branch 'master' into net-next 2017-08-21 17:37:15 -07:00
iplink_dummy.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_geneve.c ip: iplink_geneve.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_hsr.c ip: iplink_hsr.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_ifb.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_ipoib.c ip: iplink_ipoib.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_ipvlan.c ip: iplink_ipvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_nlmon.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_team.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_vcan.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_vlan.c ip: iplink_vlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_vrf.c Merge branch 'master' into net-next 2017-08-21 17:37:15 -07:00
iplink_vxcan.c ip: link add vxcan support 2017-06-05 12:27:32 -07:00
iplink_vxlan.c ip: iplink_vxlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_xdp.c bpf: properly output json for xdp 2017-09-22 10:07:15 -07:00
iplink_xstats.c add missing iplink_xstats.c 2017-02-20 08:53:40 -08:00
iplink.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipmacsec.c ip: ipmacsec.c: add json output support 2017-08-17 18:02:41 -07:00
ipmaddr.c ip maddr: fix filtering by device 2017-10-21 15:02:24 +02:00
ipmonitor.c ip: Add support for MPLS netconf 2017-02-23 08:58:40 -08:00
ipmroute.c ip: mroute: Add table output to show command 2017-06-15 08:29:30 -07:00
ipneigh.c ip neigh: allow flush FAILED neighbour entry 2017-06-16 09:01:02 -07:00
ipnetconf.c ip netconf: show all families on dev request 2017-04-14 16:00:15 -07:00
ipnetns.c ip netns: use strtol() instead of atoi() 2017-11-01 22:06:05 +01:00
ipntable.c ipntable: Avoid memory allocation for filter.name 2017-08-24 14:53:14 -07:00
ipprefix.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
iproute_lwtunnel.c Merge branch 'master' into net-next 2017-09-01 12:17:48 -07:00
iproute_lwtunnel.h lwtunnel: Add encapsulation support to ip route 2015-10-16 16:13:22 -07:00
iproute.c ip-route: Fix for listing routes with RTAX_LOCK attribute 2017-09-29 12:02:09 -07:00
iprule.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipseg6.c ip: add ip sr command to control SR-IPv6 internal structures 2017-04-16 10:21:43 -07:00
iptoken.c Use C99 style initializers everywhere 2016-07-20 12:05:24 -07:00
iptunnel.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
iptuntap.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipvrf.c Convert harmful calls to strncpy() to strlcpy() 2017-09-01 12:10:54 -07:00
ipxfrm.c ipxfrm: Replace STRBUF_CAT macro with strlcat() 2017-09-01 12:10:54 -07:00
link_gre6.c Merge branch 'master' into net-next 2017-09-01 12:17:48 -07:00
link_gre.c gre: add support for ERSPAN tunnel 2017-08-23 10:06:54 -07:00
link_ip6tnl.c ip: link_ip6tnl.c: add json output support 2017-08-17 18:02:41 -07:00
link_iptnl.c ip: link_iptnl.c: add json output support 2017-08-17 18:02:41 -07:00
link_veth.c ip: code cleanup 2016-03-21 11:52:19 -07:00
link_vti6.c ip: link_vti6.c: add json output support 2017-08-17 18:02:41 -07:00
link_vti.c ip: link_vti.c: add json output support 2017-08-17 18:02:41 -07:00
Makefile json: move json printer to common library 2017-09-22 10:06:43 -07:00
routef ip/routef lifesaver 2007-07-10 18:29:20 -07:00
routel routel: fix infinite loop in line parser 2017-04-27 16:42:29 -07:00
rtm_map.c ip, realms: also allow to pass in raw realms value 2015-10-22 23:40:51 -07:00
rtmon.c lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
rtpr (Logical change 1.3) 2004-04-15 20:56:59 +00:00
static-syms.c Fix build when shared libraries are disabled 2013-03-13 08:29:59 -07:00
tcp_metrics.c libgenl: introduce genl_init_handle 2016-08-17 13:59:21 -07:00
tunnel.c iptunnel: add support for mpls/ip to sit tunnels 2017-07-05 09:04:59 -07:00
tunnel.h ip{,6}tunnel: have a shared stats parser/printer 2015-12-18 11:46:21 -08:00
xdp.h bpf: consolidate dumps to use bpf_dump_prog_info 2017-09-05 09:26:34 -07:00
xfrm_monitor.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
xfrm_policy.c xfrm_{state, policy}: Allow to deleteall polices/states with marks 2017-11-07 11:12:30 +09:00
xfrm_state.c xfrm_{state, policy}: Allow to deleteall polices/states with marks 2017-11-07 11:12:30 +09:00
xfrm.h ip: Fix compilation break on old systems 2017-11-13 10:07:25 -08:00