Subject: header conflict introduced by change to netfilter_ipv4/ip_tables.h

From: Stephen Hemminger <[email-masked]>
Date: Wed, 6 Jan 2016 09:20:07 -0800

This commit breaks compilation of iproute2 with net-next.

commit 1ffad83dffd675cd742286ae82dca7d746cb0da8
Author: Mikko Rapeli <[email-masked]>
Date:   Thu Oct 15 07:56:30 2015 +0200

    netfilter: fix include files for compilation
    
    Add missing header dependencies and other small changes so that each file
    compiles alone in userspace.
    
    Signed-off-by: Mikko Rapeli <[email-masked]>
    Signed-off-by: Pablo Neira Ayuso <[email-masked]>

For iproute2, a copy of kernel headers (from make install_headers) is used.
After this change. the build of x_tables.c fails because IFNAMSIZ is already
defined in net/if.h

gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wformat=2 -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -DHAVE_SETNS -DHAVE_ELF -DCONFIG_GACT -DCONFIG_GACT_PROB -DIPT_LIB_DIR=\"/lib/xtables\" -DYY_NO_INPUT -Wl,-export-dynamic -shared -fpic -o q_atm.so q_atm.c -latm
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wformat=2 -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -DHAVE_SETNS -DHAVE_ELF -DCONFIG_GACT -DCONFIG_GACT_PROB -DIPT_LIB_DIR=\"/lib/xtables\" -DYY_NO_INPUT -Wl,-export-dynamic -shared -fpic -o m_xt.so m_xt.c $(pkg-config xtables --cflags --libs)
In file included from ../include/linux/netfilter_ipv4/ip_tables.h:20:0,
                 from m_xt.c:20:
../include/linux/if.h:26:0: warning: "IFNAMSIZ" redefined
 #define IFNAMSIZ 16
 ^
In file included from m_xt.c:17:0:
/usr/include/net/if.h:129:0: note: this is the location of the previous definition
 # define IFNAMSIZ IF_NAMESIZE
 ^
../include/linux/if.h:71:2: error: redeclaration of enumerator ‘IFF_UP’
  IFF_UP    = 1<<0,  /* sysfs */
  ^
/usr/include/net/if.h:44:5: note: previous definition of ‘IFF_UP’ was here
     IFF_UP = 0x1,  /* Interface is up.  */
     ^
../include/linux/if.h:72:2: error: redeclaration of enumerator ‘IFF_BROADCAST’
  IFF_BROADCAST   = 1<<1,  /* __volatile__ */
  ^
/usr/include/net/if.h:46:5: note: previous definition of ‘IFF_BROADCAST’ was here
     IFF_BROADCAST = 0x2, /* Broadcast address valid.  */
     ^
../include/linux/if.h:73:2: error: redeclaration of enumerator ‘IFF_DEBUG’
  IFF_DEBUG   = 1<<2,  /* sysfs */