PATCH: shared library support
James Ralston <[email protected]> Sun, 09 Jan 2005 02:11:43 -0500
| Newsgroups | gmane.comp.security.libnet |
|---|---|
| Message-ID | <[email protected]> |
--==========319D51ABCC01D668ED3E==========
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
qAttached is a patch for libnet 1.1.2.1 that adds support (via libtool)
for building libnet as a shared library.
Before applying it, rename configure.in to configure.ac, and remove
acconfig.h. Then apply the patch and run autoreconf.
I used autoconf 2.59, automake 1.9.2, and libtool 1.5.6. Using
automake 1.8.3 did *not* work (perl bombed out with an error).
I tested the resulting shared library on Linux (i386) by linking
tcptraceroute against it; I've had no problems.
Someone with better knowledge of the libnet code should correct my
AC_DEFINE descriptions; most of them are just dummy text.
--
James Ralston, Information Technology
Software Engineering Institute
Carnegie Mellon University, Pittsburgh, PA, USA
--==========319D51ABCC01D668ED3E==========
Content-Type: text/plain; charset=us-ascii; name="libnet-1.1.2.1-shared.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="libnet-1.1.2.1-shared.patch";
size=13984
--- libnet/src/Makefile.am.shared 2004-03-11 13:50:20.000000000 -0500
+++ libnet/src/Makefile.am 2005-01-08 22:58:37.206866684 -0500
@@ -8,9 +8,9 @@
include $(top_srcdir)/Makefile.am.common
-lib_LIBRARIES = libnet.a
+lib_LTLIBRARIES = libnet.la
-libnet_a_SOURCES = libnet_asn1.c \
+libnet_la_SOURCES = libnet_asn1.c \
libnet_build_802.1q.c \
libnet_build_802.1x.c \
libnet_build_802.2.c \
@@ -57,15 +57,7 @@
libnet_version.c \
libnet_write.c
-EXTRA_libnet_a_SOURCES = libnet_link_bpf.c \
- libnet_link_dlpi.c \
- libnet_link_linux.c \
- libnet_link_nit.c \
- libnet_link_none.c \
- libnet_link_pf.c \
- libnet_link_snit.c \
- libnet_link_snoop.c \
- libnet_link_win32.c
+libnet_la_LDFLAGS = -version-info 1:0:0
-libnet_a_LIBADD = @LIBOBJS@
+libnet_la_LIBADD = $(LTLIBOBJS)
--- libnet/sample/Makefile.am.shared 2004-03-11 13:50:20.000000000 -0500
+++ libnet/sample/Makefile.am 2005-01-08 23:29:38.008689373 -0500
@@ -17,47 +17,88 @@
synflood6_frag tftp ip_link ip_raw sebek
arp_SOURCES = arp.c
+arp_LDADD = $(top_srcdir)/src/libnet.la
cdp_SOURCES = cdp.c
+cdp_LDADD = $(top_srcdir)/src/libnet.la
dot1x_SOURCES = dot1x.c
+dot1x_LDADD = $(top_srcdir)/src/libnet.la
dhcp_discover_SOURCES = dhcp_discover.c
+dhcp_discover_LDADD = $(top_srcdir)/src/libnet.la
dns_SOURCES = dns.c
+dns_LDADD = $(top_srcdir)/src/libnet.la
fddi_tcp1_SOURCES = fddi_tcp1.c
+fddi_tcp1_LDADD = $(top_srcdir)/src/libnet.la
fddi_tcp2_SOURCES = fddi_tcp2.c
+fddi_tcp2_LDADD = $(top_srcdir)/src/libnet.la
tring_tcp1_SOURCES = tring_tcp1.c
+tring_tcp1_LDADD = $(top_srcdir)/src/libnet.la
tring_tcp2_SOURCES = tring_tcp2.c
+tring_tcp2_LDADD = $(top_srcdir)/src/libnet.la
get_addr_SOURCES = get_addr.c
+get_addr_LDADD = $(top_srcdir)/src/libnet.la
icmp_echo_cq_SOURCES = icmp_echo_cq.c
+icmp_echo_cq_LDADD = $(top_srcdir)/src/libnet.la
icmp_redirect_SOURCES = icmp_redirect.c
+icmp_redirect_LDADD = $(top_srcdir)/src/libnet.la
icmp_timestamp_SOURCES = icmp_timestamp.c
+icmp_timestamp_LDADD = $(top_srcdir)/src/libnet.la
icmp_timeexceed_SOURCES = icmp_timeexceed.c
+icmp_timeexceed_LDADD = $(top_srcdir)/src/libnet.la
icmp_unreach_SOURCES = icmp_unreach.c
+icmp_unreach_LDADD = $(top_srcdir)/src/libnet.la
ieee_SOURCES = ieee.c
+ieee_LDADD = $(top_srcdir)/src/libnet.la
isl_SOURCES = isl.c
+isl_LDADD = $(top_srcdir)/src/libnet.la
ntp_SOURCES = ntp.c
+ntp_LDADD = $(top_srcdir)/src/libnet.la
ospf_hello_SOURCES = ospf_hello.c
+ospf_hello_LDADD = $(top_srcdir)/src/libnet.la
ospf_lsa_SOURCES = ospf_lsa.c
+ospf_lsa_LDADD = $(top_srcdir)/src/libnet.la
ping_of_death_SOURCES = ping_of_death.c
+ping_of_death_LDADD = $(top_srcdir)/src/libnet.la
mpls_SOURCES = mpls.c
+mpls_LDADD = $(top_srcdir)/src/libnet.la
rpc_tcp_SOURCES = rpc_tcp.c
+rpc_tcp_LDADD = $(top_srcdir)/src/libnet.la
rpc_udp_SOURCES = rpc_udp.c
+rpc_udp_LDADD = $(top_srcdir)/src/libnet.la
stp_SOURCES = stp.c
+stp_LDADD = $(top_srcdir)/src/libnet.la
synflood_SOURCES = synflood.c
+synflood_LDADD = $(top_srcdir)/src/libnet.la
tcp1_SOURCES = tcp1.c
+tcp1_LDADD = $(top_srcdir)/src/libnet.la
tcp2_SOURCES = tcp2.c
+tcp2_LDADD = $(top_srcdir)/src/libnet.la
tftp_SOURCES = tftp.c
+tftp_LDADD = $(top_srcdir)/src/libnet.la
udp1_SOURCES = udp1.c
+udp1_LDADD = $(top_srcdir)/src/libnet.la
udp2_SOURCES = udp2.c
+udp2_LDADD = $(top_srcdir)/src/libnet.la
icmp6_echoreq_SOURCES = icmp6_echoreq.c
+icmp6_echoreq_LDADD = $(top_srcdir)/src/libnet.la
smurf_SOURCES = smurf.c
+smurf_LDADD = $(top_srcdir)/src/libnet.la
synflood6_SOURCES = synflood6.c
+synflood6_LDADD = $(top_srcdir)/src/libnet.la
synflood6_frag_SOURCES = synflood6_frag.c
+synflood6_frag_LDADD = $(top_srcdir)/src/libnet.la
bgp4_hdr_SOURCES = bgp4_hdr.c
+bgp4_hdr_LDADD = $(top_srcdir)/src/libnet.la
bgp4_open_SOURCES = bgp4_open.c
+bgp4_open_LDADD = $(top_srcdir)/src/libnet.la
bgp4_update_SOURCES = bgp4_update.c
+bgp4_update_LDADD = $(top_srcdir)/src/libnet.la
bgp4_notification_SOURCES = bgp4_notification.c
+bgp4_notification_LDADD = $(top_srcdir)/src/libnet.la
gre_SOURCES = gre.c
+gre_LDADD = $(top_srcdir)/src/libnet.la
ip_raw_SOURCES = ip_raw.c
+ip_raw_LDADD = $(top_srcdir)/src/libnet.la
ip_link_SOURCES = ip_link.c
+ip_link_LDADD = $(top_srcdir)/src/libnet.la
sebek_SOURCES = sebek.c
-
-LDADD = $(top_srcdir)/src/libnet.a
+sebek_LDADD = $(top_srcdir)/src/libnet.la
--- libnet/configure.ac.shared 2004-03-01 15:26:11.000000000 -0500
+++ libnet/configure.ac 2005-01-08 22:14:56.676997061 -0500
@@ -7,12 +7,13 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(src/libnet_build_ip.c)
+AC_INIT(libnet, 1.1.2.1)
LIBNET_VERSION=`cat VERSION`
AC_MSG_RESULT(beginning autoconfiguration process for libnet-$LIBNET_VERSION...)
AC_CANONICAL_SYSTEM
-AM_INIT_AUTOMAKE(libnet, $LIBNET_VERSION)
+AM_INIT_AUTOMAKE
+AC_PROG_LIBTOOL
AM_CONFIG_HEADER(include/config.h)
AM_MAINTAINER_MODE
@@ -21,7 +22,6 @@
dnl
AC_PROG_CC
AC_PROG_INSTALL
-AC_PROG_RANLIB
AC_CHECK_HEADERS(sys/sockio.h)
@@ -85,7 +85,7 @@
elif test -r /usr/include/sys/dlpi.h ; then
AC_LIBOBJ([libnet_link_dlpi])
AC_MSG_RESULT(found dlpi)
- AC_DEFINE(HAVE_DLPI)
+ AC_DEFINE(HAVE_DLPI, 1, [I don't know what this does.])
elif test -r /usr/include/linux/socket.h ; then
AC_LIBOBJ([libnet_link_linux])
AC_MSG_RESULT(found linux primitives)
@@ -122,58 +122,58 @@
case "$target_os" in
*linux*)
- AC_DEFINE(_BSD_SOURCE)
- AC_DEFINE(__BSD_SOURCE)
- AC_DEFINE(__FAVOR_BSD)
+ AC_DEFINE(_BSD_SOURCE, 1, [Define to 1 if you want BSD definitions to take precedence over POSIX definitions.])
+ AC_DEFINE(__BSD_SOURCE, 1, [Define to 1 if you want BSD definitions to take precedence over POSIX definitions.])
+ AC_DEFINE(__FAVOR_BSD, 1, [Define to 1 if you want BSD definitions to take precedence over POSIX definitions.])
LIBNET_CONFIG_DEFINES="-D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD"
AC_CHECK_HEADERS(net/ethernet.h, \
LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DHAVE_NET_ETHERNET_H")
;;
*freebsd*)
- AC_DEFINE(LIBNET_BSDISH_OS)
- AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
- AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
+ AC_DEFINE(LIBNET_BSDISH_OS, 1, [Define to 1 if you have a BSD-ish OS.])
+ AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1, [Define to 1 if the ip_len and ip_off fields need to be in host byte order.])
+ AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [I don't know what this does.])
LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP -DHAVE_SOCKADDR_SA_LEN"
;;
*netbsd*)
- AC_DEFINE(LIBNET_BSDISH_OS)
- AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
+ AC_DEFINE(LIBNET_BSDISH_OS, 1, [Define to 1 if you have a BSD-ish OS.])
+ AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1, [Define to 1 if the ip_len and ip_off fields need to be in host byte order.])
LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
;;
*openbsd*)
- AC_DEFINE(LIBNET_BSDISH_OS)
- AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
+ AC_DEFINE(LIBNET_BSDISH_OS, 1, [Define to 1 if you have a BSD-ish OS.])
+ AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [I don't know what this does.])
LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS"
;;
*bsdi*)
- AC_DEFINE(LIBNET_BSDISH_OS)
- AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
+ AC_DEFINE(LIBNET_BSDISH_OS, 1, [Define to 1 if you have a BSD-ish OS.])
+ AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1, [Define to 1 if the ip_len and ip_off fields need to be in host byte order.])
LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
;;
*darwin*)
- AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
+ AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [I don't know what this does.])
LIBNET_CONFIG_DEFINES="-DHAVE_SOCKADDR_SA_LEN"
;;
*solaris*)
- AC_DEFINE(HAVE_SOLARIS)
+ AC_DEFINE(HAVE_SOLARIS, 1, [I don't know what this does.])
AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h)
AC_MSG_CHECKING(for /dev/dlpi device)
if test -c /dev/dlpi; then
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_DEV_DLPI)
+ AC_DEFINE(HAVE_DEV_DLPI, 1, [I don't know what this does.])
else
AC_MSG_RESULT(no)
dir="/dev/dlpi"
AC_MSG_CHECKING(for $dir directory)
if test -d $dir ; then
AC_MSG_RESULT(yes)
- AC_DEFINE_UNQUOTED(DLPI_DEV_PREFIX, "$dir")
+ AC_DEFINE_UNQUOTED(DLPI_DEV_PREFIX, "$dir", [I don't know what this does.])
else
AC_MSG_RESULT(no)
fi
@@ -186,18 +186,18 @@
dnl
case "`uname -r`" in
5.4)
- AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1, [I don't know what this does.])
;;
5.5*)
- AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1, [I don't know what this does.])
;;
5.8)
- AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
- AC_DEFINE(HAVE_SOLARIS_IPV6)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1, [I don't know what this does.])
+ AC_DEFINE(HAVE_SOLARIS_IPV6, 1, [I don't know what this does.])
;;
5.9)
- AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
- AC_DEFINE(HAVE_SOLARIS_IPV6)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1, [I don't know what this does.])
+ AC_DEFINE(HAVE_SOLARIS_IPV6, 1, [I don't know what this does.])
;;
esac
@@ -207,13 +207,13 @@
;;
*hpux11*)
- AC_DEFINE(HAVE_HPUX11)
+ AC_DEFINE(HAVE_HPUX11, 1, [I don't know what this does.])
AC_CHECK_HEADERS(sys/dlpi_ext.h)
;;
*cygwin*)
- AC_DEFINE(LIBNET_BSDISH_OS)
- AC_DEFINE(NO_SNPRINTF)
+ AC_DEFINE(LIBNET_BSDISH_OS, 1, [Define to 1 if you have a BSD-ish OS.])
+ AC_DEFINE(NO_SNPRINTF, 1, [I don't know what this does.])
LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DNO_SNPRINTF"
CFLAGS="$CFLAGS -mno-cygwin -O0 -fnative-struct -DNO_SNPRINTF -I/usr/include/pcap"
AC_CHECK_LIB(packet, PacketSetMode, ,AC_MSG_ERROR(packet lib not found.))
--- libnet/acinclude.m4.shared 2004-01-15 18:53:06.000000000 -0500
+++ libnet/acinclude.m4 2005-01-08 22:31:39.227589490 -0500
@@ -11,7 +11,7 @@
dnl usage: AC_LIBNET_LINUX_PROCFS
dnl results: HAVE_LINUX_PROCFS
dnl
-AC_DEFUN(AC_LIBNET_LINUX_PROCFS,
+AC_DEFUN([AC_LIBNET_LINUX_PROCFS],
[AC_MSG_CHECKING(for Linux proc filesystem)
AC_CACHE_VAL(ac_cv_libnet_linux_procfs,
if test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" ; then
@@ -37,7 +37,7 @@
dnl HAVE_PACKET_SOCKET (DEFINED)
dnl
-AC_DEFUN(AC_LIBNET_CHECK_PF_PACKET,
+AC_DEFUN([AC_LIBNET_CHECK_PF_PACKET],
[
AC_MSG_CHECKING(for packet socket (PF_SOCKET))
AC_CACHE_VAL(ac_libnet_have_packet_socket,
@@ -113,7 +113,7 @@
esac])
if test $ac_libnet_have_packet_socket = yes -o $ac_libnet_have_packet_socket = probably; then
- AC_DEFINE(HAVE_PACKET_SOCKET)
+ AC_DEFINE(HAVE_PACKET_SOCKET, 1, [I don't know what this does.])
fi
])
@@ -131,7 +131,7 @@
dnl
dnl
-AC_DEFUN(AC_LIBNET_CHECK_LIBNET_VER,
+AC_DEFUN([AC_LIBNET_CHECK_LIBNET_VER],
[
AC_CHECK_LIB(net, libnet_build_ip, AC_MSG_CHECKING(version) \
@@ -166,7 +166,7 @@
dnl HAVE_STRUCT_IP_CSUM (DEFINED)
dnl
-AC_DEFUN(AC_LIBNET_CHECK_IP_CSUM,
+AC_DEFUN([AC_LIBNET_CHECK_IP_CSUM],
[
AC_MSG_CHECKING([struct ip contains ip_csum])
AC_TRY_COMPILE([
@@ -181,7 +181,7 @@
ip.ip_csum = 0;
],
[AC_MSG_RESULT(yes);
- AC_DEFINE(HAVE_STRUCT_IP_CSUM)],
+ AC_DEFINE(HAVE_STRUCT_IP_CSUM, 1, [I don't know what this does.])],
[AC_MSG_RESULT(no);
])
])
@@ -199,7 +199,7 @@
dnl LBL_ALIGN (DEFINED)
dnl
-AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
+AC_DEFUN([AC_LBL_UNALIGNED_ACCESS],
[AC_MSG_CHECKING(if unaligned accesses fail)
AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
[case "$target_cpu" in
@@ -260,7 +260,7 @@
esac])
AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
if test $ac_cv_lbl_unaligned_fail = yes ; then
- AC_DEFINE(LBL_ALIGN)
+ AC_DEFINE(LBL_ALIGN, 1, [I don't know what this does.])
fi
])
@@ -278,7 +278,7 @@
dnl LIBNET_LIL_ENDIAN = 1
dnl
-AC_DEFUN(AC_LIBNET_ENDIAN_CHECK,
+AC_DEFUN([AC_LIBNET_ENDIAN_CHECK],
[AC_MSG_CHECKING(machine endianess)
cat > conftest.c << EOF
@@ -336,11 +336,11 @@
AC_MSG_RESULT($ac_cv_libnet_endianess)
if test $ac_cv_libnet_endianess = big ; then
- AC_DEFINE(LIBNET_BIG_ENDIAN)
+ AC_DEFINE(LIBNET_BIG_ENDIAN, 1, [I don't know what this does.])
ENDIANESS="LIBNET_BIG_ENDIAN"
LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DLIBNET_BIG_ENDIAN"
elif test $ac_cv_libnet_endianess = lil ; then
- AC_DEFINE(LIBNET_LIL_ENDIAN)
+ AC_DEFINE(LIBNET_LIL_ENDIAN, 1, [I don't know what this does.])
ENDIANESS="LIBNET_LIL_ENDIAN"
LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DLIBNET_LIL_ENDIAN"
fi
@@ -439,7 +439,7 @@
dnl statically and happen to have a libresolv.a lying around (and no
dnl libnsl.a).
dnl
-AC_DEFUN(AC_LBL_LIBRARY_NET, [
+AC_DEFUN([AC_LBL_LIBRARY_NET], [
# Most operating systems have gethostbyname() in the default searched
# libraries (i.e. libc):
AC_CHECK_FUNC(gethostbyname, ,
--==========319D51ABCC01D668ED3E==========--