Subject: Re: latest iproute2 compilation issue with linux-4.6-rc7

From: Stephen Hemminger <[email-masked]>
Date: Thu, 9 Jun 2016 09:10:10 -0700

On Thu, 9 Jun 2016 11:46:38 +0000
"Cherukuru, Siva Ramaprasad" <[email-masked]> wrote:

> Hi ,
> 
>       When I try to compile latest iproute2 code, I am seeing the following errors.
> Please let me know if there is any workaround available Or fix for this issue?
> 
> ====
> 
> In file included from m_ipt.c:19:0:
> ../include/linux/if.h:106:19: error: redeclaration of enumerator 'IFF_UP'
> #define IFF_UP    IFF_UP
>                    ^
> ../include/linux/if.h:79:2: note: previous definition of 'IFF_UP' was here
>   IFF_UP    = 1<<0,  /* sysfs */
>  ^
> ../include/linux/if.h:107:25: error: redeclaration of enumerator 'IFF_BROADCAST'
> #define IFF_BROADCAST   IFF_BROADCAST
>                          ^
> ../include/linux/if.h:80:2: note: previous definition of 'IFF_BROADCAST' was here
>   IFF_BROADCAST   = 1<<1,  /* __volatile__ */
>   ^
> ../include/linux/if.h:108:21: error: redeclaration of enumerator 'IFF_DEBUG'
> #define IFF_DEBUG   IFF_DEBUG
>                      ^
> ../include/linux/if.h:81:2: note: previous definition of 'IFF_DEBUG' was here
>   IFF_DEBUG   = 1<<2,  /* sysfs */
>   ^
> 
> ...
> ...
> 
> In file included from ../include/iptables.h:5:0,
>                  from m_ipt.c:22:
> ../include/xtables.h:34:29: fatal error: xtables-version.h: No such file or directory
> #include <xtables-version.h>
>                              ^
> compilation terminated.
> make[1]: *** [m_ipt.o] Error 1
> rm emp_ematch.lex.c
> make: *** [all] Error 2
> 
> =========
> 
> I have tried the following to work around the errors  but still stuck with the xtables-version.h error?
> 
> ===
> root@dock1:~/siva_iproute2/iproute2# git diff tc/m_ipt.c
> diff --git a/tc/m_ipt.c b/tc/m_ipt.c
> index d088f5e..1ebd2f7 100644
> --- a/tc/m_ipt.c
> +++ b/tc/m_ipt.c
> @@ -14,7 +14,9 @@
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> +#ifndef linux/if.h
> #include <linux/if.h>
> +#endif
> #include <iptables.h>
> #include <linux/netfilter.h>
> #include <linux/netfilter_ipv4/ip_tables.h>
> 
> ====
> 
> 
>     CC       m_ipt.o
> In file included from ../include/iptables.h:5:0,
>                  from m_ipt.c:23:
> ../include/xtables.h:34:29: fatal error: xtables-version.h: No such file or directory
> #include <xtables-version.h>
>                              ^
> compilation terminated.
> make[1]: *** [m_ipt.o] Error 1
> rm emp_ematch.lex.c

The update to iptables headers broke compilation because they switched to
xtables.

For now, do
 $ make distclean
 $ make

There is a patch to fix this, but it got no review/feedback and was not submitted
in proper form to netdev for review. Therefore I am waiting for correct fix
to come.