All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Leon Romanovsky <leon@kernel.org>
Cc: netdev@vger.kernel.org, Leon Romanovsky <leonro@mellanox.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Riad Abo Raed <riada@mellanox.com>
Subject: Re: [PATCH iproute2] ip: Fix compilation break on old systems
Date: Mon, 13 Nov 2017 07:33:37 -0800	[thread overview]
Message-ID: <20171113073337.1387f7fa@xeon-e3> (raw)
In-Reply-To: <20171113102119.11687-1-leon@kernel.org>

On Mon, 13 Nov 2017 12:21:19 +0200
Leon Romanovsky <leon@kernel.org> wrote:

> From: Leon Romanovsky <leonro@mellanox.com>
> 
> 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>
> ---
>  ip/xfrm.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/ip/xfrm.h b/ip/xfrm.h
> index 8566d639..71be574d 100644
> --- a/ip/xfrm.h
> +++ b/ip/xfrm.h
> @@ -30,6 +30,10 @@
>  #include <linux/xfrm.h>
>  #include <linux/ipsec.h>
> 
> +#ifndef IPPROTO_MH
> +#define IPPROTO_MH              135
> +#endif
> +

Is there some way to add an additional header to the file instead?
Doing local definitions seems like it might cause a future issue.

  reply	other threads:[~2017-11-13 15:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-13 10:21 [PATCH iproute2] ip: Fix compilation break on old systems Leon Romanovsky
2017-11-13 15:33 ` Stephen Hemminger [this message]
2017-11-13 16:04   ` Leon Romanovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171113073337.1387f7fa@xeon-e3 \
    --to=stephen@networkplumber.org \
    --cc=leon@kernel.org \
    --cc=leonro@mellanox.com \
    --cc=netdev@vger.kernel.org \
    --cc=riada@mellanox.com \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.