{"action":"created","issue":{"url":"https://api.github.com/repos/acassen/keepalived/issues/1079","repository_url":"https://api.github.com/repos/acassen/keepalived","labels_url":"https://api.github.com/repos/acassen/keepalived/issues/1079/labels{/name}","comments_url":"https://api.github.com/repos/acassen/keepalived/issues/1079/comments","events_url":"https://api.github.com/repos/acassen/keepalived/issues/1079/events","html_url":"https://github.com/acassen/keepalived/issues/1079","id":387755166,"node_id":"MDU6SXNzdWUzODc3NTUxNjY=","number":1079,"title":"FTBFS on SLES15, if.h namespace collision?","user":{"login":"thresheek","id":5108015,"node_id":"MDQ6VXNlcjUxMDgwMTU=","avatar_url":"https://avatars3.githubusercontent.com/u/5108015?v=4","gravatar_id":"","url":"https://api.github.com/users/thresheek","html_url":"https://github.com/thresheek","followers_url":"https://api.github.com/users/thresheek/followers","following_url":"https://api.github.com/users/thresheek/following{/other_user}","gists_url":"https://api.github.com/users/thresheek/gists{/gist_id}","starred_url":"https://api.github.com/users/thresheek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thresheek/subscriptions","organizations_url":"https://api.github.com/users/thresheek/orgs","repos_url":"https://api.github.com/users/thresheek/repos","events_url":"https://api.github.com/users/thresheek/events{/privacy}","received_events_url":"https://api.github.com/users/thresheek/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-12-05T13:24:10Z","updated_at":"2018-12-06T12:31:23Z","closed_at":"2018-12-06T12:31:23Z","author_association":"CONTRIBUTOR","body":"When building current git (and 2.0.10 fwiw, didnt test earlier versions) on SLES15, the following error is seen:\r\n```\r\nthresh@sles15-ka:~/keepalived> export LC_ALL=C && git describe && autoreconf -fisv && ./configure --disable-nftables && make -j1\r\nv1.2.2-3556-gdcefd33a\r\nautoreconf: Entering directory `.'\r\nautoreconf: configure.ac: not using Gettext\r\nautoreconf: running: aclocal --force \r\nautoreconf: configure.ac: tracing\r\nautoreconf: configure.ac: not using Libtool\r\nautoreconf: running: /usr/bin/autoconf --force\r\nautoreconf: running: /usr/bin/autoheader --force\r\nautoreconf: running: automake --add-missing --force-missing\r\nconfigure.ac:288: installing './ar-lib'\r\nconfigure.ac:278: installing './compile'\r\nconfigure.ac:98: installing './install-sh'\r\nconfigure.ac:98: installing './missing'\r\ngenhash/Makefile.am: installing './depcomp'\r\nautoreconf: Leaving directory `.'\r\nchecking for a BSD-compatible install... /usr/bin/install -c\r\nchecking whether build environment is sane... yes\r\nchecking for a thread-safe mkdir -p... /usr/bin/mkdir -p\r\nchecking for gawk... gawk\r\nchecking whether make sets $(MAKE)... yes\r\nchecking whether make supports nested variables... yes\r\nchecking whether make supports nested variables... (cached) yes\r\nchecking for pkg-config... /usr/bin/pkg-config\r\nchecking pkg-config is at least version 0.9.0... yes\r\nchecking for gcc... gcc\r\nchecking whether the C compiler works... yes\r\nchecking for C compiler default output file name... a.out\r\nchecking for suffix of executables... \r\nchecking whether we are cross compiling... no\r\nchecking for suffix of object files... o\r\nchecking whether we are using the GNU C compiler... yes\r\nchecking whether gcc accepts -g... yes\r\nchecking for gcc option to accept ISO C89... none needed\r\nchecking whether gcc understands -c and -o together... yes\r\nchecking for style of include used by make... GNU\r\nchecking dependency style of gcc... gcc3\r\nchecking whether make sets $(MAKE)... (cached) yes\r\nchecking for ranlib... ranlib\r\nchecking for grep that handles long lines and -e... /usr/bin/grep\r\nchecking whether ln -s works... yes\r\nchecking for a sed that does not truncate output... /usr/bin/sed\r\nchecking for strip... strip\r\nchecking for ldd... ldd\r\nchecking for ar... ar\r\nchecking the archiver (ar) interface... ar\r\nchecking for -Wimplicit-fallthrough... yes\r\nchecking for PIE support... yes\r\nchecking for -Wformat -Werror=format-security support... yes\r\nchecking for -Wp,-D_FORTIFY_SOURCE=2 support... yes\r\nchecking for -fexceptions support... yes\r\nchecking for -fstack-protector-strong support... yes\r\nchecking for --param=ssp-buffer-size=4 support... yes\r\nchecking for -grecord-gcc-switches support... yes\r\nchecking for -Wl,-z,relro support... yes\r\nchecking for -Wl,-z,now support... yes\r\nchecking for -O2 support... yes\r\nchecking for clock_gettime() requires -lrt... no\r\nchecking how to run the C preprocessor... gcc -E\r\nchecking for egrep... /usr/bin/grep -E\r\nchecking for ANSI C header files... yes\r\nchecking for sys/types.h... yes\r\nchecking for sys/stat.h... yes\r\nchecking for stdlib.h... yes\r\nchecking for string.h... yes\r\nchecking for memory.h... yes\r\nchecking for strings.h... yes\r\nchecking for inttypes.h... yes\r\nchecking for stdint.h... yes\r\nchecking for unistd.h... yes\r\nchecking arpa/inet.h usability... yes\r\nchecking arpa/inet.h presence... yes\r\nchecking for arpa/inet.h... yes\r\nchecking fcntl.h usability... yes\r\nchecking fcntl.h presence... yes\r\nchecking for fcntl.h... yes\r\nchecking limits.h usability... yes\r\nchecking limits.h presence... yes\r\nchecking for limits.h... yes\r\nchecking netdb.h usability... yes\r\nchecking netdb.h presence... yes\r\nchecking for netdb.h... yes\r\nchecking netinet/in.h usability... yes\r\nchecking netinet/in.h presence... yes\r\nchecking for netinet/in.h... yes\r\nchecking for stdint.h... (cached) yes\r\nchecking for stdlib.h... (cached) yes\r\nchecking for string.h... (cached) yes\r\nchecking sys/ioctl.h usability... yes\r\nchecking sys/ioctl.h presence... yes\r\nchecking for sys/ioctl.h... yes\r\nchecking sys/param.h usability... yes\r\nchecking sys/param.h presence... yes\r\nchecking for sys/param.h... yes\r\nchecking sys/prctl.h usability... yes\r\nchecking sys/prctl.h presence... yes\r\nchecking for sys/prctl.h... yes\r\nchecking sys/socket.h usability... yes\r\nchecking sys/socket.h presence... yes\r\nchecking for sys/socket.h... yes\r\nchecking sys/time.h usability... yes\r\nchecking sys/time.h presence... yes\r\nchecking for sys/time.h... yes\r\nchecking syslog.h usability... yes\r\nchecking syslog.h presence... yes\r\nchecking for syslog.h... yes\r\nchecking for unistd.h... (cached) yes\r\nchecking asm/types.h usability... yes\r\nchecking asm/types.h presence... yes\r\nchecking for asm/types.h... yes\r\nchecking linux/ethtool.h usability... yes\r\nchecking linux/ethtool.h presence... yes\r\nchecking for linux/ethtool.h... yes\r\nchecking linux/icmpv6.h usability... yes\r\nchecking linux/icmpv6.h presence... yes\r\nchecking for linux/icmpv6.h... yes\r\nchecking linux/if_ether.h usability... yes\r\nchecking linux/if_ether.h presence... yes\r\nchecking for linux/if_ether.h... yes\r\nchecking linux/if_packet.h usability... yes\r\nchecking linux/if_packet.h presence... yes\r\nchecking for linux/if_packet.h... yes\r\nchecking linux/ip.h usability... yes\r\nchecking linux/ip.h presence... yes\r\nchecking for linux/ip.h... yes\r\nchecking linux/sockios.h usability... yes\r\nchecking linux/sockios.h presence... yes\r\nchecking for linux/sockios.h... yes\r\nchecking linux/types.h usability... yes\r\nchecking linux/types.h presence... yes\r\nchecking for linux/types.h... yes\r\nchecking for linux/fib_rules.h... yes\r\nchecking for linux/if_addr.h... yes\r\nchecking for linux/if_link.h... yes\r\nchecking for linux/if_arp.h... yes\r\nchecking for stdbool.h that conforms to C99... yes\r\nchecking for _Bool... yes\r\nchecking for inline... inline\r\nchecking for int64_t... yes\r\nchecking for pid_t... yes\r\nchecking for size_t... yes\r\nchecking for uint16_t... yes\r\nchecking for uint32_t... yes\r\nchecking for uint64_t... yes\r\nchecking for uint8_t... yes\r\nchecking for an ANSI C-conforming const... yes\r\nchecking vfork.h usability... no\r\nchecking vfork.h presence... no\r\nchecking for vfork.h... no\r\nchecking for fork... yes\r\nchecking for vfork... yes\r\nchecking for working fork... yes\r\nchecking for working vfork... (cached) yes\r\nchecking for stdlib.h... (cached) yes\r\nchecking for GNU libc compatible malloc... yes\r\nchecking for stdlib.h... (cached) yes\r\nchecking for GNU libc compatible realloc... yes\r\nchecking for dup2... yes\r\nchecking for getcwd... yes\r\nchecking for gettimeofday... yes\r\nchecking for memmove... yes\r\nchecking for memset... yes\r\nchecking for select... yes\r\nchecking for setenv... yes\r\nchecking for socket... yes\r\nchecking for strcasecmp... yes\r\nchecking for strchr... yes\r\nchecking for strdup... yes\r\nchecking for strerror... yes\r\nchecking for strpbrk... yes\r\nchecking for strstr... yes\r\nchecking for strtol... yes\r\nchecking for strtoul... yes\r\nchecking for uname... yes\r\nchecking for pipe2... yes\r\nchecking for signalfd... yes\r\nchecking for inotify_init1... yes\r\nchecking for vsyslog... yes\r\nchecking for epoll_create1... yes\r\nchecking whether ETHERTYPE_IPV6 is declared... yes\r\nchecking openssl/ssl.h usability... yes\r\nchecking openssl/ssl.h presence... yes\r\nchecking for openssl/ssl.h... yes\r\nchecking openssl/err.h usability... yes\r\nchecking openssl/err.h presence... yes\r\nchecking for openssl/err.h... yes\r\nchecking openssl/md5.h usability... yes\r\nchecking openssl/md5.h presence... yes\r\nchecking for openssl/md5.h... yes\r\nchecking for MD5_Init in -lcrypto... yes\r\nchecking for SSL_CTX_new in -lssl... yes\r\nchecking SSL_set_tlsext_host_name() - may be a definition... yes\r\nchecking for SSL_CTX_set_verify_depth... yes\r\nchecking for SSL_set0_rbio... yes\r\nchecking for OPENSSL_init_crypto... yes\r\nchecking for TLS_method... yes\r\nchecking whether IPV4_DEVCONF_ARP_IGNORE is declared... yes\r\nchecking whether IPV4_DEVCONF_ACCEPT_LOCAL is declared... yes\r\nchecking whether IPV4_DEVCONF_RP_FILTER is declared... yes\r\nchecking whether IPV4_DEVCONF_ARPFILTER is declared... yes\r\nchecking for linux/rtnetlink.h... yes\r\nchecking for nl_socket_modify_cb in -lnl... no\r\nconfigure: WARNING: keepalived will be built without libnl support.\r\nchecking for magic_open in -lmagic... no\r\nchecking whether RTA_ENCAP is declared... yes\r\nchecking whether RTA_EXPIRES is declared... yes\r\nchecking whether RTA_NEWDST is declared... yes\r\nchecking whether RTA_PREF is declared... yes\r\nchecking whether FRA_SUPPRESS_PREFIXLEN is declared... yes\r\nchecking whether FRA_SUPPRESS_IFGROUP is declared... yes\r\nchecking whether FRA_TUN_ID is declared... yes\r\nchecking whether RTAX_CC_ALGO is declared... yes\r\nchecking whether RTAX_QUICKACK is declared... yes\r\nchecking whether RTEXT_FILTER_SKIP_STATS is declared... yes\r\nchecking whether FRA_L3MDEV is declared... yes\r\nchecking whether FRA_UID_RANGE is declared... yes\r\nchecking whether RTAX_FASTOPEN_NO_COOKIE is declared... yes\r\nchecking whether RTA_VIA is declared... yes\r\nchecking whether FRA_OIFNAME is declared... yes\r\nchecking whether FRA_PROTOCOL is declared... no\r\nchecking whether FRA_IP_PROTO is declared... no\r\nchecking whether FRA_SPORT_RANGE is declared... no\r\nchecking whether FRA_DPORT_RANGE is declared... no\r\nchecking whether RTA_TTL_PROPAGATE is declared... yes\r\nchecking whether IFA_FLAGS is declared... yes\r\nchecking whether IP_MULTICAST_ALL is declared... yes\r\nchecking whether LWTUNNEL_ENCAP_MPLS is declared... yes\r\nchecking whether LWTUNNEL_ENCAP_ILA is declared... yes\r\nchecking linux/netfilter/x_tables.h usability... yes\r\nchecking linux/netfilter/x_tables.h presence... yes\r\nchecking for linux/netfilter/x_tables.h... yes\r\nchecking xtables.h usability... no\r\nchecking xtables.h presence... no\r\nchecking for xtables.h... no\r\nchecking for linux/if.h and net/if.h namespace collision... no\r\nchecking for linux/if_ether.h then netinet/if_ether.h namespace collision... no\r\nchecking for libiptc/libiptc.h linux/if.h and net/if.h namespace collision... yes\r\nchecking linux/ip_vs.h usability... yes\r\nchecking linux/ip_vs.h presence... yes\r\nchecking for linux/ip_vs.h... yes\r\nchecking whether IP_VS_SVC_F_ONEPACKET is declared... yes\r\nchecking whether IPVS_DEST_ATTR_ADDR_FAMILY is declared... yes\r\nchecking whether IPVS_DAEMON_ATTR_SYNC_MAXLEN is declared... yes\r\nchecking whether IPVS_DAEMON_ATTR_MCAST_GROUP is declared... yes\r\nchecking whether IPVS_DAEMON_ATTR_MCAST_GROUP6 is declared... yes\r\nchecking whether IPVS_DAEMON_ATTR_MCAST_PORT is declared... yes\r\nchecking whether IPVS_DAEMON_ATTR_MCAST_TTL is declared... yes\r\nchecking whether IPVS_SVC_ATTR_STATS64 is declared... yes\r\nchecking whether IPVS_DEST_ATTR_STATS64 is declared... yes\r\nchecking whether IFLA_MACVLAN_MODE is declared... yes\r\nchecking whether MACVLAN_MODE_PRIVATE is declared... yes\r\nchecking whether SOCK_NONBLOCK is declared... yes\r\nchecking whether SOCK_CLOEXEC is declared... yes\r\nchecking whether IPVS_SVC_ATTR_PE_NAME is declared... yes\r\nchecking whether O_PATH is declared... yes\r\nchecking whether GLOB_BRACE is declared... yes\r\nchecking whether FRA_SRC is declared... yes\r\nchecking whether IFLA_INET6_ADDR_GEN_MODE is declared... yes\r\nchecking whether IFLA_VRF_MAX is declared... yes\r\nchecking whether SO_MARK is declared... yes\r\nchecking whether CLONE_NEWNET is declared... yes\r\nchecking for setns... yes\r\nchecking whether SCHED_RR is declared... yes\r\nchecking whether RLIMIT_RTTIME is declared... yes\r\nchecking whether SCHED_RESET_ON_FORK is declared... yes\r\nchecking for sphinx-build... No\r\nchecking for rpm... Yes\r\nchecking for rpmbuild... Yes\r\n\r\nchecking that generated files are newer than configure... done\r\nconfigure: creating ./config.status\r\nconfig.status: creating Makefile\r\nconfig.status: creating keepalived/Makefile\r\nconfig.status: creating lib/Makefile\r\nconfig.status: creating keepalived/core/Makefile\r\nconfig.status: creating keepalived.spec\r\nconfig.status: creating genhash/Makefile\r\nconfig.status: creating keepalived/check/Makefile\r\nconfig.status: creating keepalived/vrrp/Makefile\r\nconfig.status: creating keepalived/bfd/Makefile\r\nconfig.status: creating doc/Makefile\r\nconfig.status: creating bin_install/Makefile\r\nconfig.status: creating keepalived/dbus/Makefile\r\nconfig.status: creating keepalived/etc/Makefile\r\nconfig.status: creating keepalived/etc/init/Makefile\r\nconfig.status: creating keepalived/etc/init.d/Makefile\r\nconfig.status: creating doc/man/man8/Makefile\r\nconfig.status: creating lib/config.h\r\nconfig.status: executing depfiles commands\r\n\r\nKeepalived configuration\r\n------------------------\r\nKeepalived version       : 2.0.10\r\nCompiler                 : gcc\r\nPreprocessor flags       : \r\nCompiler flags           : -Wall -Wunused -Wstrict-prototypes -Wextra -Winit-self -g -D_GNU_SOURCE -Wimplicit-fallthrough=3 -fPIE -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -O2\r\nLinker flags             :  -pie\r\nExtra Lib                :  -lcrypto  -lssl \r\nUse IPVS Framework       : Yes\r\nIPVS use libnl           : No\r\nIPVS syncd attributes    : Yes\r\nIPVS 64 bit stats        : Yes\r\nHTTP_GET regex support   : No\r\nfwmark socket support    : Yes\r\nUse VRRP Framework       : Yes\r\nUse VRRP VMAC            : Yes\r\nUse VRRP authentication  : Yes\r\nWith ip rules/routes     : Yes\r\nUse BFD Framework        : No\r\nSNMP vrrp support        : No\r\nSNMP checker support     : No\r\nSNMP RFCv2 support       : No\r\nSNMP RFCv3 support       : No\r\nDBUS support             : No\r\nSHA1 support             : No\r\nUse Json output          : No\r\nlibnl version            : None\r\nUse IPv4 devconf         : Yes\r\nUse iptables             : Yes\r\nUse libiptc              : No\r\nUse libipset             : No\r\nUse nftables             : No\r\ninit type                : systemd\r\nStrict config checks     : No\r\nBuild genhash            : Yes\r\nBuild documentation      : No\r\n\r\n*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.\r\n\r\nMaking all in lib\r\nmake[1]: Entering directory '/home/thresh/keepalived/lib'\r\nmake  all-am\r\nmake[2]: Entering directory '/home/thresh/keepalived/lib'\r\n  CC       memory.o\r\n  CC       utils.o\r\n  CC       notify.o\r\n  CC       timer.o\r\n  CC       scheduler.o\r\n  CC       vector.o\r\n  CC       list.o\r\n  CC       html.o\r\n  CC       parser.o\r\n  CC       signals.o\r\n  CC       logger.o\r\n  CC       list_head.o\r\n  CC       rbtree.o\r\n  CC       process.o\r\n  CC       rttables.o\r\n  AR       liblib.a\r\nmake[2]: Leaving directory '/home/thresh/keepalived/lib'\r\nmake[1]: Leaving directory '/home/thresh/keepalived/lib'\r\nMaking all in keepalived\r\nmake[1]: Entering directory '/home/thresh/keepalived/keepalived'\r\nMaking all in core\r\nmake[2]: Entering directory '/home/thresh/keepalived/keepalived/core'\r\n  CC       main.o\r\n  CC       daemon.o\r\n  CC       pidfile.o\r\n  CC       layer4.o\r\n  CC       smtp.o\r\n  CC       global_data.o\r\n  CC       global_parser.o\r\n  CC       keepalived_netlink.o\r\n  CC       namespaces.o\r\n  AR       libcore.a\r\nmake[2]: Leaving directory '/home/thresh/keepalived/keepalived/core'\r\nMaking all in vrrp\r\nmake[2]: Entering directory '/home/thresh/keepalived/keepalived/vrrp'\r\n  CC       vrrp_daemon.o\r\n  CC       vrrp_print.o\r\n  CC       vrrp_data.o\r\n  CC       vrrp_parser.o\r\n  CC       vrrp.o\r\nIn file included from ./../include/vrrp.h:32:0,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/linux/if.h:82:2: error: redeclaration of enumerator 'IFF_UP'\r\n  IFF_UP    = 1<<0,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:44:5: note: previous definition of 'IFF_UP' was here\r\n     IFF_UP = 0x1,  /* Interface is up.  */\r\n     ^~~~~~\r\n/usr/include/linux/if.h:83:2: error: redeclaration of enumerator 'IFF_BROADCAST'\r\n  IFF_BROADCAST   = 1<<1,  /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:46:5: note: previous definition of 'IFF_BROADCAST' was here\r\n     IFF_BROADCAST = 0x2, /* Broadcast address valid.  */\r\n     ^~~~~~~~~~~~~\r\n/usr/include/linux/if.h:84:2: error: redeclaration of enumerator 'IFF_DEBUG'\r\n  IFF_DEBUG   = 1<<2,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:48:5: note: previous definition of 'IFF_DEBUG' was here\r\n     IFF_DEBUG = 0x4,  /* Turn on debugging.  */\r\n     ^~~~~~~~~\r\n/usr/include/linux/if.h:85:2: error: redeclaration of enumerator 'IFF_LOOPBACK'\r\n  IFF_LOOPBACK   = 1<<3,  /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:50:5: note: previous definition of 'IFF_LOOPBACK' was here\r\n     IFF_LOOPBACK = 0x8,  /* Is a loopback net.  */\r\n     ^~~~~~~~~~~~\r\n/usr/include/linux/if.h:86:2: error: redeclaration of enumerator 'IFF_POINTOPOINT'\r\n  IFF_POINTOPOINT   = 1<<4,  /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:52:5: note: previous definition of 'IFF_POINTOPOINT' was here\r\n     IFF_POINTOPOINT = 0x10, /* Interface is point-to-point link.  */\r\n     ^~~~~~~~~~~~~~~\r\n/usr/include/linux/if.h:87:2: error: redeclaration of enumerator 'IFF_NOTRAILERS'\r\n  IFF_NOTRAILERS   = 1<<5,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:54:5: note: previous definition of 'IFF_NOTRAILERS' was here\r\n     IFF_NOTRAILERS = 0x20, /* Avoid use of trailers.  */\r\n     ^~~~~~~~~~~~~~\r\n/usr/include/linux/if.h:88:2: error: redeclaration of enumerator 'IFF_RUNNING'\r\n  IFF_RUNNING   = 1<<6,  /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:56:5: note: previous definition of 'IFF_RUNNING' was here\r\n     IFF_RUNNING = 0x40,  /* Resources allocated.  */\r\n     ^~~~~~~~~~~\r\n/usr/include/linux/if.h:89:2: error: redeclaration of enumerator 'IFF_NOARP'\r\n  IFF_NOARP   = 1<<7,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:58:5: note: previous definition of 'IFF_NOARP' was here\r\n     IFF_NOARP = 0x80,  /* No address resolution protocol.  */\r\n     ^~~~~~~~~\r\n/usr/include/linux/if.h:90:2: error: redeclaration of enumerator 'IFF_PROMISC'\r\n  IFF_PROMISC   = 1<<8,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:60:5: note: previous definition of 'IFF_PROMISC' was here\r\n     IFF_PROMISC = 0x100, /* Receive all packets.  */\r\n     ^~~~~~~~~~~\r\n/usr/include/linux/if.h:91:2: error: redeclaration of enumerator 'IFF_ALLMULTI'\r\n  IFF_ALLMULTI   = 1<<9,  /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:64:5: note: previous definition of 'IFF_ALLMULTI' was here\r\n     IFF_ALLMULTI = 0x200, /* Receive all multicast packets.  */\r\n     ^~~~~~~~~~~~\r\n/usr/include/linux/if.h:92:2: error: redeclaration of enumerator 'IFF_MASTER'\r\n  IFF_MASTER   = 1<<10, /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:67:5: note: previous definition of 'IFF_MASTER' was here\r\n     IFF_MASTER = 0x400,  /* Master of a load balancer.  */\r\n     ^~~~~~~~~~\r\n/usr/include/linux/if.h:93:2: error: redeclaration of enumerator 'IFF_SLAVE'\r\n  IFF_SLAVE   = 1<<11, /* __volatile__ */\r\n  ^\r\n/usr/include/net/if.h:69:5: note: previous definition of 'IFF_SLAVE' was here\r\n     IFF_SLAVE = 0x800,  /* Slave of a load balancer.  */\r\n     ^~~~~~~~~\r\n/usr/include/linux/if.h:94:2: error: redeclaration of enumerator 'IFF_MULTICAST'\r\n  IFF_MULTICAST   = 1<<12, /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:72:5: note: previous definition of 'IFF_MULTICAST' was here\r\n     IFF_MULTICAST = 0x1000, /* Supports multicast.  */\r\n     ^~~~~~~~~~~~~\r\n/usr/include/linux/if.h:95:2: error: redeclaration of enumerator 'IFF_PORTSEL'\r\n  IFF_PORTSEL   = 1<<13, /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:75:5: note: previous definition of 'IFF_PORTSEL' was here\r\n     IFF_PORTSEL = 0x2000, /* Can set media type.  */\r\n     ^~~~~~~~~~~\r\n/usr/include/linux/if.h:96:2: error: redeclaration of enumerator 'IFF_AUTOMEDIA'\r\n  IFF_AUTOMEDIA   = 1<<14, /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:77:5: note: previous definition of 'IFF_AUTOMEDIA' was here\r\n     IFF_AUTOMEDIA = 0x4000, /* Auto media select active.  */\r\n     ^~~~~~~~~~~~~\r\n/usr/include/linux/if.h:97:2: error: redeclaration of enumerator 'IFF_DYNAMIC'\r\n  IFF_DYNAMIC   = 1<<15, /* sysfs */\r\n  ^\r\n/usr/include/net/if.h:79:5: note: previous definition of 'IFF_DYNAMIC' was here\r\n     IFF_DYNAMIC = 0x8000 /* Dialup device with changing addresses.  */\r\n     ^~~~~~~~~~~\r\nIn file included from /usr/include/linux/netdevice.h:29:0,\r\n                 from ./../include/vrrp_if.h:39,\r\n                 from ./../include/vrrp.h:45,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/linux/if.h:192:8: error: redefinition of 'struct ifmap'\r\n struct ifmap {\r\n        ^~~~~\r\nIn file included from ./../include/vrrp.h:32:0,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/net/if.h:111:8: note: originally defined here\r\n struct ifmap\r\n        ^~~~~\r\nIn file included from /usr/include/linux/netdevice.h:29:0,\r\n                 from ./../include/vrrp_if.h:39,\r\n                 from ./../include/vrrp.h:45,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/linux/if.h:229:8: error: redefinition of 'struct ifreq'\r\n struct ifreq {\r\n        ^~~~~\r\nIn file included from ./../include/vrrp.h:32:0,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/net/if.h:126:8: note: originally defined here\r\n struct ifreq\r\n        ^~~~~\r\nIn file included from /usr/include/linux/netdevice.h:29:0,\r\n                 from ./../include/vrrp_if.h:39,\r\n                 from ./../include/vrrp.h:45,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/linux/if.h:281:8: error: redefinition of 'struct ifconf'\r\n struct ifconf  {\r\n        ^~~~~~\r\nIn file included from ./../include/vrrp.h:32:0,\r\n                 from ./../include/vrrp_arp.h:31,\r\n                 from vrrp.c:45:\r\n/usr/include/net/if.h:176:8: note: originally defined here\r\n struct ifconf\r\n        ^~~~~~\r\nmake[2]: *** [Makefile:422: vrrp.o] Error 1\r\nmake[2]: Leaving directory '/home/thresh/keepalived/keepalived/vrrp'\r\nmake[1]: *** [Makefile:583: all-recursive] Error 1\r\nmake[1]: Leaving directory '/home/thresh/keepalived/keepalived'\r\nmake: *** [Makefile:427: all-recursive] Error 1\r\nthresh@sles15-ka:~/keepalived>\r\n```\r\n\r\nThe following patch seems to workaround the issue.  I'm not submitting as a PR since I have no idea if it's right or not:\r\n```\r\ndiff --git a/configure.ac b/configure.ac\r\nindex 7a2e8ce1..9badcc62 100644\r\n--- a/configure.ac\r\n+++ b/configure.ac\r\n@@ -1349,8 +1349,8 @@ AC_MSG_CHECKING([for linux/if.h and net/if.h namespace collision])\r\n SAV_CPPFLAGS=\"$CPPFLAGS\"\r\n CPPFLAGS=\"$CPPFLAGS $kernelinc\"\r\n AC_COMPILE_IFELSE([AC_LANG_SOURCE([[\r\n-    #include <net/if.h>\r\n     #include <linux/if.h>\r\n+    #include <net/if.h>\r\n   ]])],\r\n   [\r\n     AC_MSG_RESULT([no])\r\n```\r\n\r\nglibc-2.26-11.8.x86_64, kernel is kernel-default-4.12.14-23.1.x86_64\r\n\r\nLet me know if you need more information."},"comment":{"url":"https://api.github.com/repos/acassen/keepalived/issues/comments/444855813","html_url":"https://github.com/acassen/keepalived/issues/1079#issuecomment-444855813","issue_url":"https://api.github.com/repos/acassen/keepalived/issues/1079","id":444855813,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NDg1NTgxMw==","user":{"login":"pqarmitage","id":15689733,"node_id":"MDQ6VXNlcjE1Njg5NzMz","avatar_url":"https://avatars1.githubusercontent.com/u/15689733?v=4","gravatar_id":"","url":"https://api.github.com/users/pqarmitage","html_url":"https://github.com/pqarmitage","followers_url":"https://api.github.com/users/pqarmitage/followers","following_url":"https://api.github.com/users/pqarmitage/following{/other_user}","gists_url":"https://api.github.com/users/pqarmitage/gists{/gist_id}","starred_url":"https://api.github.com/users/pqarmitage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pqarmitage/subscriptions","organizations_url":"https://api.github.com/users/pqarmitage/orgs","repos_url":"https://api.github.com/users/pqarmitage/repos","events_url":"https://api.github.com/users/pqarmitage/events{/privacy}","received_events_url":"https://api.github.com/users/pqarmitage/received_events","type":"User","site_admin":false},"created_at":"2018-12-06T12:31:23Z","updated_at":"2018-12-06T12:31:23Z","author_association":"COLLABORATOR","body":"I didn't notice your patch before. Yes that seems perfectly reasonable since the Linux headers have been modified so that if they are included after the glibc headers, they won't redefine the values (kernel commit 1575c09); this was first included in 4.4.11. So doing the test with net/if.h first followed by linux/if.h will not exhibit the collision problem, whereas the other way round will.\r\n\r\nI have merged commit e4dd33f which incorporates your patch."}}
{"actor":{"display_login":"pqarmitage"}}