Hello Ben, On Fri, May 7, 2021 at 9:13 PM Ben Pfaff <b...@ovn.org> wrote: > > > > It would be interesting to know exact issue this solves for OVS. > > > > Referenced commit only says FreeBSD "insists" on this include order, > > > > but DPDK and standalone files with these includes build either way. > > > > > > Indeed, I tried building with FreeBSD 13.0 and I can see no pb. > > > This might be something that has been fixed in FreeBSD. > > > > > > Ben, would you have details on this header inclusion order? > > > > Using the wrong order caused a compiler error on whatever version of > > FreeBSD was current at the time of those commits. I think it was a > > historical BSD issue, since I remember running into this for many years > > across multiple BSD versions. > > > > If it's fixed now, we can drop the constraint.
I reverted some bits on arpa/inet.h vs netinet/in.h headers in OVS but did not reproduce the issue on FreeBSD 11 and 12 with Cirrus. > > Oh, Mac OS X appears to also have this or a related problem: Reverting the patch on conntrack which deals with sys/types.h vs netinet/icmp6.h, there is an issue on FreeBSD 11 and 12: https://cirrus-ci.com/task/4786810854309888 In file included from lib/conntrack.c:libtool: compile: clang -DHAVE_CONFIG_H -I. -I ./include -I ./include -I ./lib -I ./lib -I/usr/local/include -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -Wthread-safety -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wshift-negative-value -Qunused-arguments -Wshadow -Wno-null-pointer-arithmetic -Warray-bounds-pointer-arithmetic -Werror -Werror -g -O2 -Wall -DHAVE_AVX512F -DHAVE_LD_AVX512_GOOD -MT lib/coverage.lo -MD -MP -MF lib/.deps/coverage.Tpo -c lib/coverage.c -o lib/coverage.o 21: /usr/include/netinet/icmp6.h:71:2: error: unknown type name 'u_int8_t' u_int8_t icmp6_type; /* type field */ ^ /usr/include/netinet/icmp6.h:72:2: error: unknown type name 'u_int8_t' u_int8_t icmp6_code; /* code field */ ^ ... I don't think it is worth dropping only the first constraint, so I would keep it as is in OVS. Thanks. -- David Marchand