Good time.

In case libpcap (current git) was built on system with libnl installed,
tcpreplay fails to build with the following error:

libtool: link: gcc -I../libopts -I.. -I/usr/include -DTCPREPLAY 
"-D_U_=__attribute__((unused))" -Wall -O3 -std=gnu99 -Wextra 
-Wno-variadic-macros -Wfatal-errors -I/usr/include -o tcpreplay 
tcpreplay-tcpreplay_opts.o tcpreplay-send_packets.o tcpreplay-signal_handler.o 
tcpreplay-tcpreplay.o tcpreplay-sleep.o  ./common/libcommon.a ../lib/libstrl.a 
/usr/lib/libpcap.a -L/usr/lib /usr/lib/libdnet.so ../libopts/.libs/libopts.a 
-lrt -lnsl
/usr/lib/libpcap.a(pcap.o): In function `pcap_datalink_val_to_name':
(.text+0x290): multiple definition of `pcap_datalink_val_to_name'
./common/libcommon.a(fakepcap.o):fakepcap.c:(.text+0x20): first defined here
/usr/lib/libpcap.a(pcap.o): In function `pcap_datalink_val_to_description':
(.text+0x2e0): multiple definition of `pcap_datalink_val_to_description'
./common/libcommon.a(fakepcap.o):fakepcap.c:(.text+0x0): first defined here
/usr/lib/libpcap.a(pcap-linux.o): In function `nl80211_init':
(.text+0x73f): undefined reference to `nl_handle_alloc'

(take a look on bugs.gentoo.org/274813 for full build output, and
theor.ran.gpi.ru/tcpreplay-config.log for config.log)

This is cased because linking with libpcap requires -lnl and this check
is missed in configure script. Since libnl does not have static version
(at least libnl developers don't provides us with such build option in
the latest release) I'm unsure how to fix this problem correctly. In
Gentoo we use --enable-shared switch so we could detect if libnl is
required for linking with libpcap. Probably just by modifying the
following code

if test $dynamic_link = yes; then
  if test -f "${testdir}/lib64/libpcap${shrext_cmds}" ; then
  LPCAPLIB="-L${testdir}/lib64 -lpcap"
elif test -f "${testdir}/lib/libpcap${shrext_cmds}" ; then
  LPCAPLIB="-L${testdir}/lib -lpcap"
else
  AC_ERROR([Unable to find libpcap in ${testdir}])
fi

with something like

AC_SEARCH_LIBS(pcap_close,pcap,
  LPCAPLIB="$LIBS"
  ,AC_ERROR([Unable to find libpcap in ${testdir}])
  ,-lnl)

but I'm unsure how good such solution is. Any suggestions how to fix
this problem correctly are welcome.


Another problem I've encountered is that distribution specifies
ACLOCAL_AMFLAGS = -I m4
while there is no m4 directory and thus autoreconf fails. Probably 
ACLOCAL_AMFLAGS = -I libopts/m4
was assumed there.

And last, I have not filled this bug report in trac since I'm unable to
register there. It failed with the following error:

Trac detected an internal error: 
URLError: <urlopen error (2, 'Temporary failure in name resolution')>


Thank you in advance for your time,
-- 
Peter.


------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Tcpreplay-users mailing list
Tcpreplay-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tcpreplay-users
Support Information: http://tcpreplay.synfin.net/trac/wiki/Support

Reply via email to