When ELF binaries and shared libraries are used, the internal
functions of libnftnl such as xfree() are not visible to the outside
world (their visibility is 'hidden'). Therefore, the fact that other
programs (especially nftables) may have symbols with the same name
does not cause any problem.
However, when doing static linking on a non-ELF platform (such as
Blackfin, which uses the FLAT binary format), there is no way of
encoding this visibility. Therefore, the xfree() symbols of libnftnl
becomes visible to the outside world, causing a conflict with the
xfree() symbol defined by nftables.
To solve this, this patch renames the libnftnl xfree() function to
libnftnl_xfree().
This commit fixes a problem seen after building nftables statically on
Blackfin. This problem was seen after the previous patch fixing the
autobuilder failure:
http://autobuild.buildroot.org/results/98b/98b707ffdeeb1cda94b7c1019ef29cf5fd7db8bf/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
The CS PPC 2011.3 and 2010.9 toolchains have a bad linux/socket.h header
that doesn't define sa_family_t which is used by linux/netlink.h (and
libnftnl).
Patching external toolchain headers wouldn't be too nice and they seem
to be the only CS toolchains affected.
It's definitely NOT a kernel header version issue, the toolchain is
based on 2.6.38 headers and vanilla 2.6.38 has the proper definitions in
place. Fixes:
http://autobuild.buildroot.net/results/1e2/1e2cac84f0faa9b8915a628260ef41765d86e174/
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>