libnet4r 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +15 -0
- data/LICENSE +28 -0
- data/README +187 -0
- data/Rakefile +110 -0
- data/ext/extconf.rb +60 -0
- data/ext/libnet.c +705 -0
- data/ext/libnet_arp.c +152 -0
- data/ext/libnet_ethernet.c +115 -0
- data/ext/libnet_ipv4.c +140 -0
- data/ext/libnet_ipv6.c +138 -0
- data/ext/libnet_udp.c +112 -0
- data/ext/libnet_vlan.c +131 -0
- data/lib/libnet4r/header.rb +609 -0
- data/lib/libnet4r/helpers.rb +19 -0
- data/lib/libnet4r/libnet.rb +39 -0
- data/libnet/CVS/Entries +24 -0
- data/libnet/CVS/Repository +1 -0
- data/libnet/CVS/Root +1 -0
- data/libnet/Makefile.am +15 -0
- data/libnet/Makefile.am.common +10 -0
- data/libnet/Makefile.in +443 -0
- data/libnet/README +21 -0
- data/libnet/VERSION +1 -0
- data/libnet/acconfig.h +36 -0
- data/libnet/acinclude.m4 +463 -0
- data/libnet/aclocal.m4 +1337 -0
- data/libnet/autom4te.cache/CVS/Entries +1 -0
- data/libnet/autom4te.cache/CVS/Repository +1 -0
- data/libnet/autom4te.cache/CVS/Root +1 -0
- data/libnet/autom4te.cache/output.0 +6225 -0
- data/libnet/autom4te.cache/requests +111 -0
- data/libnet/autom4te.cache/traces.0 +272 -0
- data/libnet/config.guess +1314 -0
- data/libnet/config.sub +1410 -0
- data/libnet/configure +6225 -0
- data/libnet/configure.in +235 -0
- data/libnet/doc/BUGS +19 -0
- data/libnet/doc/CHANGELOG +527 -0
- data/libnet/doc/CONTRIB +53 -0
- data/libnet/doc/COPYING +31 -0
- data/libnet/doc/CVS/Entries +12 -0
- data/libnet/doc/CVS/Repository +1 -0
- data/libnet/doc/CVS/Root +1 -0
- data/libnet/doc/DESIGN_NOTES +134 -0
- data/libnet/doc/MIGRATION +172 -0
- data/libnet/doc/PACKET_BUILDING +161 -0
- data/libnet/doc/PORTED +45 -0
- data/libnet/doc/RAWSOCKET_NON_SEQUITUR +41 -0
- data/libnet/doc/TODO +96 -0
- data/libnet/doc/html/acconfig_8h-source.html +49 -0
- data/libnet/doc/html/annotated.html +17 -0
- data/libnet/doc/html/bpf_8h-source.html +277 -0
- data/libnet/doc/html/config_8h-source.html +125 -0
- data/libnet/doc/html/doxygen.css +169 -0
- data/libnet/doc/html/doxygen.png +0 -0
- data/libnet/doc/html/files.html +29 -0
- data/libnet/doc/html/functions.html +26 -0
- data/libnet/doc/html/functions_vars.html +26 -0
- data/libnet/doc/html/getopt_8h-source.html +97 -0
- data/libnet/doc/html/globals.html +219 -0
- data/libnet/doc/html/globals_defs.html +104 -0
- data/libnet/doc/html/globals_func.html +136 -0
- data/libnet/doc/html/gnuc_8h-source.html +56 -0
- data/libnet/doc/html/graph_legend.dot +22 -0
- data/libnet/doc/html/graph_legend.html +75 -0
- data/libnet/doc/html/ifaddrlist_8h-source.html +65 -0
- data/libnet/doc/html/in__systm_8h-source.html +90 -0
- data/libnet/doc/html/index.html +17 -0
- data/libnet/doc/html/libnet-asn1_8h-source.html +268 -0
- data/libnet/doc/html/libnet-functions_8h-source.html +742 -0
- data/libnet/doc/html/libnet-functions_8h.html +8844 -0
- data/libnet/doc/html/libnet-headers_8h-source.html +1655 -0
- data/libnet/doc/html/libnet-headers_8h.html +3053 -0
- data/libnet/doc/html/libnet-macros_8h-source.html +161 -0
- data/libnet/doc/html/libnet-macros_8h.html +358 -0
- data/libnet/doc/html/libnet-structures_8h-source.html +233 -0
- data/libnet/doc/html/libnet-types_8h-source.html +58 -0
- data/libnet/doc/html/libnet_8h-source.html +119 -0
- data/libnet/doc/html/libnet_8h.html +24 -0
- data/libnet/doc/html/structlibnet__802__1q__hdr.html +145 -0
- data/libnet/doc/html/structlibnet__802__1x__hdr.html +97 -0
- data/libnet/doc/libnet.doxygen.conf +1102 -0
- data/libnet/doc/man/CVS/Entries +1 -0
- data/libnet/doc/man/CVS/Repository +1 -0
- data/libnet/doc/man/CVS/Root +1 -0
- data/libnet/doc/man/man3/libnet-functions.h.3 +3136 -0
- data/libnet/doc/man/man3/libnet-headers.h.3 +1872 -0
- data/libnet/doc/man/man3/libnet-macros.h.3 +172 -0
- data/libnet/doc/man/man3/libnet.h.3 +17 -0
- data/libnet/doc/man/man3/libnet_802_1q_hdr.3 +53 -0
- data/libnet/doc/man/man3/libnet_802_1x_hdr.3 +41 -0
- data/libnet/include/CVS/Entries +10 -0
- data/libnet/include/CVS/Repository +1 -0
- data/libnet/include/CVS/Root +1 -0
- data/libnet/include/Makefile.am +7 -0
- data/libnet/include/Makefile.in +395 -0
- data/libnet/include/bpf.h +264 -0
- data/libnet/include/config.h.in +118 -0
- data/libnet/include/gnuc.h +43 -0
- data/libnet/include/ifaddrlist.h +52 -0
- data/libnet/include/libnet/CVS/Entries +9 -0
- data/libnet/include/libnet/CVS/Repository +1 -0
- data/libnet/include/libnet/CVS/Root +1 -0
- data/libnet/include/libnet/Makefile.am +12 -0
- data/libnet/include/libnet/Makefile.in +294 -0
- data/libnet/include/libnet/libnet-asn1.h +255 -0
- data/libnet/include/libnet/libnet-functions.h +2157 -0
- data/libnet/include/libnet/libnet-headers.h +1662 -0
- data/libnet/include/libnet/libnet-macros.h +186 -0
- data/libnet/include/libnet/libnet-structures.h +222 -0
- data/libnet/include/libnet/libnet-types.h +45 -0
- data/libnet/include/libnet.h.in +132 -0
- data/libnet/include/stamp-h.in +1 -0
- data/libnet/include/win32/CVS/Entries +5 -0
- data/libnet/include/win32/CVS/Repository +1 -0
- data/libnet/include/win32/CVS/Root +1 -0
- data/libnet/include/win32/config.h +112 -0
- data/libnet/include/win32/getopt.h +84 -0
- data/libnet/include/win32/in_systm.h +77 -0
- data/libnet/include/win32/libnet.h +106 -0
- data/libnet/install-sh +250 -0
- data/libnet/libnet-config.in +62 -0
- data/libnet/libnet.doxygen.conf +1102 -0
- data/libnet/man/CVS/Entries +1 -0
- data/libnet/man/CVS/Repository +1 -0
- data/libnet/man/CVS/Root +1 -0
- data/libnet/missing +283 -0
- data/libnet/mkinstalldirs +40 -0
- data/libnet/sample/CVS/Entries +47 -0
- data/libnet/sample/CVS/Repository +1 -0
- data/libnet/sample/CVS/Root +1 -0
- data/libnet/sample/Makefile.am +63 -0
- data/libnet/sample/Makefile.in +729 -0
- data/libnet/sample/arp-new.c +144 -0
- data/libnet/sample/arp.c +151 -0
- data/libnet/sample/bgp4_hdr.c +225 -0
- data/libnet/sample/bgp4_notification.c +242 -0
- data/libnet/sample/bgp4_open.c +266 -0
- data/libnet/sample/bgp4_update.c +337 -0
- data/libnet/sample/cdp.c +187 -0
- data/libnet/sample/dhcp_discover.c +257 -0
- data/libnet/sample/dns.c +260 -0
- data/libnet/sample/dot1x.c +113 -0
- data/libnet/sample/fddi_tcp1.c +213 -0
- data/libnet/sample/fddi_tcp2.c +209 -0
- data/libnet/sample/get_addr.c +112 -0
- data/libnet/sample/gre.c +410 -0
- data/libnet/sample/icmp6_echoreq.c +184 -0
- data/libnet/sample/icmp_echo_cq.c +201 -0
- data/libnet/sample/icmp_redirect.c +200 -0
- data/libnet/sample/icmp_timeexceed.c +190 -0
- data/libnet/sample/icmp_timestamp.c +157 -0
- data/libnet/sample/icmp_unreach.c +204 -0
- data/libnet/sample/ieee.c +177 -0
- data/libnet/sample/ip_link.c +201 -0
- data/libnet/sample/ip_raw.c +180 -0
- data/libnet/sample/isl.c +167 -0
- data/libnet/sample/libnet_test.h +60 -0
- data/libnet/sample/mpls.c +251 -0
- data/libnet/sample/ntp.c +193 -0
- data/libnet/sample/ospf_hello.c +179 -0
- data/libnet/sample/ospf_lsa.c +190 -0
- data/libnet/sample/ping_of_death.c +171 -0
- data/libnet/sample/rpc_tcp.c +214 -0
- data/libnet/sample/rpc_udp.c +213 -0
- data/libnet/sample/sebek.c +299 -0
- data/libnet/sample/smurf.c +194 -0
- data/libnet/sample/stp.c +227 -0
- data/libnet/sample/synflood.c +200 -0
- data/libnet/sample/synflood6.c +209 -0
- data/libnet/sample/synflood6_frag.c +234 -0
- data/libnet/sample/tcp1.c +227 -0
- data/libnet/sample/tcp2.c +192 -0
- data/libnet/sample/tftp.c +207 -0
- data/libnet/sample/tring_tcp1.c +214 -0
- data/libnet/sample/tring_tcp2.c +210 -0
- data/libnet/sample/udp1.c +223 -0
- data/libnet/sample/udp2.c +232 -0
- data/libnet/sample/win32/CVS/Entries +9 -0
- data/libnet/sample/win32/CVS/Repository +1 -0
- data/libnet/sample/win32/CVS/Root +1 -0
- data/libnet/sample/win32/arp/CVS/Entries +2 -0
- data/libnet/sample/win32/arp/CVS/Repository +1 -0
- data/libnet/sample/win32/arp/CVS/Root +1 -0
- data/libnet/sample/win32/arp/arp.vcproj +136 -0
- data/libnet/sample/win32/cdp/CVS/Entries +2 -0
- data/libnet/sample/win32/cdp/CVS/Repository +1 -0
- data/libnet/sample/win32/cdp/CVS/Root +1 -0
- data/libnet/sample/win32/cdp/cdp.vcproj +136 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Entries +2 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Repository +1 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Root +1 -0
- data/libnet/sample/win32/dhcp_discover/dhcp_discover.vcproj +139 -0
- data/libnet/sample/win32/dns/CVS/Entries +2 -0
- data/libnet/sample/win32/dns/CVS/Repository +1 -0
- data/libnet/sample/win32/dns/CVS/Root +1 -0
- data/libnet/sample/win32/dns/dns.vcproj +139 -0
- data/libnet/sample/win32/get_addr/CVS/Entries +2 -0
- data/libnet/sample/win32/get_addr/CVS/Repository +1 -0
- data/libnet/sample/win32/get_addr/CVS/Root +1 -0
- data/libnet/sample/win32/get_addr/get_addr.vcproj +139 -0
- data/libnet/sample/win32/getopt.c +121 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Entries +2 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Repository +1 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Root +1 -0
- data/libnet/sample/win32/icmp_echo_cq/icmp_echo_cq.vcproj +139 -0
- data/libnet/sample/win32/tcp1/CVS/Entries +2 -0
- data/libnet/sample/win32/tcp1/CVS/Repository +1 -0
- data/libnet/sample/win32/tcp1/CVS/Root +1 -0
- data/libnet/sample/win32/tcp1/tcp1.vcproj +142 -0
- data/libnet/sample/win32/udp1/CVS/Entries +3 -0
- data/libnet/sample/win32/udp1/CVS/Repository +1 -0
- data/libnet/sample/win32/udp1/CVS/Root +1 -0
- data/libnet/sample/win32/udp1/dns.vcproj +125 -0
- data/libnet/sample/win32/udp1/udp1.vcproj +139 -0
- data/libnet/src/CVS/Entries +60 -0
- data/libnet/src/CVS/Repository +1 -0
- data/libnet/src/CVS/Root +1 -0
- data/libnet/src/Makefile.am +71 -0
- data/libnet/src/Makefile.in +428 -0
- data/libnet/src/libnet_advanced.c +136 -0
- data/libnet/src/libnet_asn1.c +436 -0
- data/libnet/src/libnet_build_802.1q.c +115 -0
- data/libnet/src/libnet_build_802.1x.c +103 -0
- data/libnet/src/libnet_build_802.2.c +167 -0
- data/libnet/src/libnet_build_802.3.c +101 -0
- data/libnet/src/libnet_build_arp.c +169 -0
- data/libnet/src/libnet_build_bgp.c +350 -0
- data/libnet/src/libnet_build_cdp.c +191 -0
- data/libnet/src/libnet_build_data.c +90 -0
- data/libnet/src/libnet_build_dhcp.c +156 -0
- data/libnet/src/libnet_build_dns.c +129 -0
- data/libnet/src/libnet_build_ethernet.c +173 -0
- data/libnet/src/libnet_build_fddi.c +191 -0
- data/libnet/src/libnet_build_gre.c +427 -0
- data/libnet/src/libnet_build_icmp.c +437 -0
- data/libnet/src/libnet_build_igmp.c +112 -0
- data/libnet/src/libnet_build_ip.c +892 -0
- data/libnet/src/libnet_build_ipsec.c +232 -0
- data/libnet/src/libnet_build_isl.c +113 -0
- data/libnet/src/libnet_build_link.c +90 -0
- data/libnet/src/libnet_build_mpls.c +112 -0
- data/libnet/src/libnet_build_ntp.c +121 -0
- data/libnet/src/libnet_build_ospf.c +699 -0
- data/libnet/src/libnet_build_rip.c +108 -0
- data/libnet/src/libnet_build_rpc.c +138 -0
- data/libnet/src/libnet_build_sebek.c +108 -0
- data/libnet/src/libnet_build_snmp.c +52 -0
- data/libnet/src/libnet_build_stp.c +222 -0
- data/libnet/src/libnet_build_tcp.c +365 -0
- data/libnet/src/libnet_build_token_ring.c +193 -0
- data/libnet/src/libnet_build_udp.c +111 -0
- data/libnet/src/libnet_build_vrrp.c +117 -0
- data/libnet/src/libnet_checksum.c +376 -0
- data/libnet/src/libnet_cq.c +395 -0
- data/libnet/src/libnet_crc.c +113 -0
- data/libnet/src/libnet_dll.c +47 -0
- data/libnet/src/libnet_error.c +55 -0
- data/libnet/src/libnet_if_addr.c +415 -0
- data/libnet/src/libnet_init.c +234 -0
- data/libnet/src/libnet_internal.c +310 -0
- data/libnet/src/libnet_link_bpf.c +348 -0
- data/libnet/src/libnet_link_dlpi.c +785 -0
- data/libnet/src/libnet_link_linux.c +310 -0
- data/libnet/src/libnet_link_nit.c +125 -0
- data/libnet/src/libnet_link_none.c +66 -0
- data/libnet/src/libnet_link_pf.c +179 -0
- data/libnet/src/libnet_link_snit.c +149 -0
- data/libnet/src/libnet_link_snoop.c +166 -0
- data/libnet/src/libnet_link_win32.c +346 -0
- data/libnet/src/libnet_pblock.c +511 -0
- data/libnet/src/libnet_port_list.c +295 -0
- data/libnet/src/libnet_prand.c +106 -0
- data/libnet/src/libnet_raw.c +257 -0
- data/libnet/src/libnet_resolve.c +414 -0
- data/libnet/src/libnet_version.c +54 -0
- data/libnet/src/libnet_write.c +502 -0
- data/libnet/version.h.in +6 -0
- data/libnet/win32/CVS/Entries +15 -0
- data/libnet/win32/CVS/Repository +1 -0
- data/libnet/win32/CVS/Root +1 -0
- data/libnet/win32/Libnet-1.1.1-2002.sln +77 -0
- data/libnet/win32/Libnet-1.1.1-2003.ncb +0 -0
- data/libnet/win32/Libnet-1.1.1-2003.sln +84 -0
- data/libnet/win32/Libnet-1.1.1-2003.suo +0 -0
- data/libnet/win32/Libnet-1.1.1.vcproj +311 -0
- data/libnet/win32/Libnet-latest.ncb +0 -0
- data/libnet/win32/Libnet-latest.opt +0 -0
- data/libnet/win32/Libnet-latest.sln +77 -0
- data/libnet/win32/Libnet-latest.suo +0 -0
- data/libnet/win32/Libnet-latest.vcproj +311 -0
- data/libnet/win32/Libnet.dsp +337 -0
- data/libnet/win32/Libnet.dsw +32 -0
- data/libnet/win32/README.txt +57 -0
- data/libnet/win32/libnet_dll.def +164 -0
- data/test/tc_arp.rb +169 -0
- data/test/tc_class.rb +219 -0
- data/test/tc_ethernet.rb +97 -0
- data/test/tc_header.rb +163 -0
- data/test/tc_init.rb +25 -0
- data/test/tc_ipv4.rb +219 -0
- data/test/tc_ipv6.rb +235 -0
- data/test/tc_udp.rb +229 -0
- data/test/tc_vlan.rb +118 -0
- data/test/ts_all.rb +15 -0
- metadata +401 -0
data/libnet/acinclude.m4
ADDED
@@ -0,0 +1,463 @@
|
|
1
|
+
dnl $Id: acinclude.m4,v 1.3 2004/01/15 23:53:06 mike Exp $
|
2
|
+
dnl
|
3
|
+
dnl Libnet specific autoconf macros
|
4
|
+
dnl Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
|
5
|
+
dnl All rights reserved.
|
6
|
+
dnl
|
7
|
+
|
8
|
+
dnl
|
9
|
+
dnl Check for the Linux /proc filesystem
|
10
|
+
dnl
|
11
|
+
dnl usage: AC_LIBNET_LINUX_PROCFS
|
12
|
+
dnl results: HAVE_LINUX_PROCFS
|
13
|
+
dnl
|
14
|
+
AC_DEFUN(AC_LIBNET_LINUX_PROCFS,
|
15
|
+
[AC_MSG_CHECKING(for Linux proc filesystem)
|
16
|
+
AC_CACHE_VAL(ac_cv_libnet_linux_procfs,
|
17
|
+
if test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" ; then
|
18
|
+
ac_cv_libnet_linux_procfs=yes
|
19
|
+
else
|
20
|
+
ac_cv_libnet_linux_procfs=no
|
21
|
+
fi)
|
22
|
+
AC_MSG_RESULT($ac_cv_libnet_linux_procfs)
|
23
|
+
if test $ac_cv_libnet_linux_procfs = yes ; then
|
24
|
+
AC_DEFINE(HAVE_LINUX_PROCFS, 1,
|
25
|
+
[Define if you have the Linux /proc filesystem.])
|
26
|
+
fi])
|
27
|
+
|
28
|
+
dnl
|
29
|
+
dnl Checks to see if this linux kernel has a working PF_PACKET
|
30
|
+
dnl
|
31
|
+
dnl usage:
|
32
|
+
dnl
|
33
|
+
dnl AC_LIBNET_CHECK_PF_PACKET
|
34
|
+
dnl
|
35
|
+
dnl results:
|
36
|
+
dnl
|
37
|
+
dnl HAVE_PACKET_SOCKET (DEFINED)
|
38
|
+
dnl
|
39
|
+
|
40
|
+
AC_DEFUN(AC_LIBNET_CHECK_PF_PACKET,
|
41
|
+
[
|
42
|
+
AC_MSG_CHECKING(for packet socket (PF_SOCKET))
|
43
|
+
AC_CACHE_VAL(ac_libnet_have_packet_socket,
|
44
|
+
|
45
|
+
[case "$target_os" in
|
46
|
+
|
47
|
+
linux)
|
48
|
+
ac_libnet_have_packet_socket = no
|
49
|
+
;;
|
50
|
+
*)
|
51
|
+
|
52
|
+
cat > pf_packet-test.c << EOF
|
53
|
+
#include <stdio.h>
|
54
|
+
#include <errno.h>
|
55
|
+
#include <stdlib.h>
|
56
|
+
#include <netinet/in.h>
|
57
|
+
#include <sys/socket.h>
|
58
|
+
#include <features.h> /* for the glibc version number */
|
59
|
+
#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
|
60
|
+
#include <netpacket/packet.h>
|
61
|
+
#include <net/ethernet.h> /* the L2 protocols */
|
62
|
+
#else
|
63
|
+
#include <asm/types.h>
|
64
|
+
#include <linux/if_packet.h>
|
65
|
+
#include <linux/if_ether.h> /* The L2 protocols */
|
66
|
+
#endif
|
67
|
+
|
68
|
+
#ifndef SOL_PACKET
|
69
|
+
#define SOL_PACKET 263
|
70
|
+
#endif /* SOL_PACKET */
|
71
|
+
|
72
|
+
int
|
73
|
+
main(int argc, char **argv)
|
74
|
+
{
|
75
|
+
int fd;
|
76
|
+
|
77
|
+
fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
|
78
|
+
if (fd == -1)
|
79
|
+
{
|
80
|
+
if (errno == EPERM)
|
81
|
+
{
|
82
|
+
/* user's UID != 0 */
|
83
|
+
printf("probably");
|
84
|
+
exit (EXIT_FAILURE);
|
85
|
+
}
|
86
|
+
printf("no");
|
87
|
+
exit (EXIT_FAILURE);
|
88
|
+
}
|
89
|
+
printf("yes");
|
90
|
+
exit (EXIT_SUCCESS);
|
91
|
+
}
|
92
|
+
EOF
|
93
|
+
${CC-cc} -o pf_packet-test $CFLAGS pf_packet-test.c >/dev/null 2>&1
|
94
|
+
|
95
|
+
# Oopz 4.3 BSD doesn't have this. Sorry.
|
96
|
+
if test ! -x ./pf_packet-test ; then
|
97
|
+
ac_libnet_have_packet_socket=choked
|
98
|
+
else
|
99
|
+
ac_libnet_have_packet_socket=`./pf_packet-test`;
|
100
|
+
fi
|
101
|
+
if test $ac_libnet_have_packet_socket = choked; then
|
102
|
+
AC_MSG_RESULT(test program compile choked... assuming no)
|
103
|
+
elif test $ac_libnet_have_packet_socket = yes; then
|
104
|
+
AC_MSG_RESULT(yes)
|
105
|
+
elif test $ac_libnet_have_packet_socket = probably; then
|
106
|
+
AC_MSG_RESULT(test program got EPERM... assuming yes)
|
107
|
+
elif test $ac_libnet_have_packet_socket = no; then
|
108
|
+
AC_MSG_RESULT(no)
|
109
|
+
fi
|
110
|
+
|
111
|
+
rm -f pf_packet-test* core core.pf_packet-test
|
112
|
+
;;
|
113
|
+
esac])
|
114
|
+
|
115
|
+
if test $ac_libnet_have_packet_socket = yes -o $ac_libnet_have_packet_socket = probably; then
|
116
|
+
AC_DEFINE(HAVE_PACKET_SOCKET)
|
117
|
+
fi
|
118
|
+
])
|
119
|
+
|
120
|
+
dnl
|
121
|
+
dnl Looks for a previous libnet version and attempts to determine which verion
|
122
|
+
dnl it is. Version 0.8 was the first version that actually knew internally
|
123
|
+
dnl what version it was.
|
124
|
+
dnl
|
125
|
+
dnl usage:
|
126
|
+
dnl
|
127
|
+
dnl AC_LIBNET_CHECK_LIBNET_VERSION
|
128
|
+
dnl
|
129
|
+
dnl results:
|
130
|
+
dnl
|
131
|
+
dnl
|
132
|
+
dnl
|
133
|
+
|
134
|
+
AC_DEFUN(AC_LIBNET_CHECK_LIBNET_VER,
|
135
|
+
[
|
136
|
+
AC_CHECK_LIB(net, libnet_build_ip, AC_MSG_CHECKING(version) \
|
137
|
+
|
138
|
+
changequote(<<, >>)dnl
|
139
|
+
if [[ ! -f $LIB_PREFIX/libnet.a ]] ; then
|
140
|
+
changequote([, ])dnl
|
141
|
+
AC_MSG_RESULT($LIB_PREFIX/libnet.a doesn't exist)
|
142
|
+
AC_MSG_RESULT(previous libnet install lives elsewhere, you should probably find it)
|
143
|
+
else
|
144
|
+
__LIBNET_VERSION=`strings $LIB_PREFIX/libnet.a | grep "libnet version"\
|
145
|
+
| cut -f3 -d" "`;\
|
146
|
+
if test -z "$__LIBNET_VERSION"; then
|
147
|
+
AC_MSG_RESULT(<0.8)
|
148
|
+
else
|
149
|
+
AC_MSG_RESULT($__LIBNET_VERSION)
|
150
|
+
fi
|
151
|
+
fi\
|
152
|
+
)
|
153
|
+
])
|
154
|
+
|
155
|
+
|
156
|
+
dnl
|
157
|
+
dnl Checks to see if this linux kernel uses ip_sum or ip_csum
|
158
|
+
dnl (Pulled from queso)
|
159
|
+
dnl
|
160
|
+
dnl usage:
|
161
|
+
dnl
|
162
|
+
dnl AC_LIBNET_CHECK_IP_CSUM
|
163
|
+
dnl
|
164
|
+
dnl results:
|
165
|
+
dnl
|
166
|
+
dnl HAVE_STRUCT_IP_CSUM (DEFINED)
|
167
|
+
dnl
|
168
|
+
|
169
|
+
AC_DEFUN(AC_LIBNET_CHECK_IP_CSUM,
|
170
|
+
[
|
171
|
+
AC_MSG_CHECKING([struct ip contains ip_csum])
|
172
|
+
AC_TRY_COMPILE([
|
173
|
+
#define __BSD_SOURCE
|
174
|
+
#define _BSD_SOURCE
|
175
|
+
#include <sys/types.h>
|
176
|
+
#include <netinet/in.h>
|
177
|
+
#include <netinet/in_systm.h>
|
178
|
+
#include <netinet/ip.h>],
|
179
|
+
[
|
180
|
+
struct ip ip;
|
181
|
+
ip.ip_csum = 0;
|
182
|
+
],
|
183
|
+
[AC_MSG_RESULT(yes);
|
184
|
+
AC_DEFINE(HAVE_STRUCT_IP_CSUM)],
|
185
|
+
[AC_MSG_RESULT(no);
|
186
|
+
])
|
187
|
+
])
|
188
|
+
|
189
|
+
dnl
|
190
|
+
dnl Checks to see if unaligned memory accesses fail
|
191
|
+
dnl (Pulled from libpcap)
|
192
|
+
dnl
|
193
|
+
dnl usage:
|
194
|
+
dnl
|
195
|
+
dnl AC_LBL_UNALIGNED_ACCESS
|
196
|
+
dnl
|
197
|
+
dnl results:
|
198
|
+
dnl
|
199
|
+
dnl LBL_ALIGN (DEFINED)
|
200
|
+
dnl
|
201
|
+
|
202
|
+
AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
|
203
|
+
[AC_MSG_CHECKING(if unaligned accesses fail)
|
204
|
+
AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
|
205
|
+
[case "$target_cpu" in
|
206
|
+
|
207
|
+
alpha|hp*|mips|sparc)
|
208
|
+
ac_cv_lbl_unaligned_fail=yes
|
209
|
+
;;
|
210
|
+
|
211
|
+
*)
|
212
|
+
cat >conftest.c <<EOF
|
213
|
+
# include <sys/types.h>
|
214
|
+
# include <sys/wait.h>
|
215
|
+
# include <stdio.h>
|
216
|
+
unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
|
217
|
+
main()
|
218
|
+
{
|
219
|
+
unsigned int i;
|
220
|
+
pid_t pid;
|
221
|
+
int status;
|
222
|
+
/* avoid "core dumped" message */
|
223
|
+
pid = fork();
|
224
|
+
if (pid < 0)
|
225
|
+
{
|
226
|
+
exit(2);
|
227
|
+
}
|
228
|
+
if (pid > 0)
|
229
|
+
{
|
230
|
+
/* parent */
|
231
|
+
pid = waitpid(pid, &status, 0);
|
232
|
+
if (pid < 0)
|
233
|
+
{
|
234
|
+
exit(3);
|
235
|
+
}
|
236
|
+
exit(!WIFEXITED(status));
|
237
|
+
}
|
238
|
+
/* child */
|
239
|
+
i = *(unsigned int *)&a[[1]];
|
240
|
+
printf("%d\n", i);
|
241
|
+
exit(0);
|
242
|
+
}
|
243
|
+
EOF
|
244
|
+
${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
|
245
|
+
conftest.c $LIBS > /dev/null 2>&1
|
246
|
+
# Oopz 4.3 BSD doesn't have this. Sorry.
|
247
|
+
if test ! -x conftest ; then
|
248
|
+
dnl failed to compile for some reason
|
249
|
+
ac_cv_lbl_unaligned_fail=yes
|
250
|
+
else
|
251
|
+
./conftest > conftest.out
|
252
|
+
if test ! -s conftest.out ; then
|
253
|
+
ac_cv_lbl_unaligned_fail=yes
|
254
|
+
else
|
255
|
+
ac_cv_lbl_unaligned_fail=no
|
256
|
+
fi
|
257
|
+
fi
|
258
|
+
rm -f conftest* core core.conftest
|
259
|
+
;;
|
260
|
+
esac])
|
261
|
+
AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
|
262
|
+
if test $ac_cv_lbl_unaligned_fail = yes ; then
|
263
|
+
AC_DEFINE(LBL_ALIGN)
|
264
|
+
fi
|
265
|
+
])
|
266
|
+
|
267
|
+
|
268
|
+
dnl
|
269
|
+
dnl Checks endianess
|
270
|
+
dnl
|
271
|
+
dnl usage:
|
272
|
+
dnl
|
273
|
+
dnl AC_LIBNET_ENDIAN_CHECK
|
274
|
+
dnl
|
275
|
+
dnl results:
|
276
|
+
dnl
|
277
|
+
dnl LIBNET_BIG_ENDIAN = 1 or
|
278
|
+
dnl LIBNET_LIL_ENDIAN = 1
|
279
|
+
dnl
|
280
|
+
|
281
|
+
AC_DEFUN(AC_LIBNET_ENDIAN_CHECK,
|
282
|
+
[AC_MSG_CHECKING(machine endianess)
|
283
|
+
|
284
|
+
cat > conftest.c << EOF
|
285
|
+
# include <stdio.h>
|
286
|
+
# include <stdlib.h>
|
287
|
+
|
288
|
+
int main()
|
289
|
+
{
|
290
|
+
union
|
291
|
+
{
|
292
|
+
short s;
|
293
|
+
char c[[sizeof(short)]];
|
294
|
+
} un;
|
295
|
+
|
296
|
+
un.s = 0x0102;
|
297
|
+
if (sizeof (short) == 2)
|
298
|
+
{
|
299
|
+
if (un.c [[0]] == 1 && un.c [[1]] == 2)
|
300
|
+
{
|
301
|
+
printf("B\n");
|
302
|
+
}
|
303
|
+
else
|
304
|
+
{
|
305
|
+
if (un.c [[0]] == 2 && un.c [[1]] == 1)
|
306
|
+
{
|
307
|
+
printf("L\n");
|
308
|
+
}
|
309
|
+
}
|
310
|
+
}
|
311
|
+
else
|
312
|
+
{
|
313
|
+
printf("?\n");
|
314
|
+
}
|
315
|
+
return (EXIT_SUCCESS);
|
316
|
+
}
|
317
|
+
EOF
|
318
|
+
${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS > /dev/null 2>&1
|
319
|
+
# Oopz 4.3 BSD doesn't have this. Sorry.
|
320
|
+
if test ! -x conftest ; then
|
321
|
+
dnl failed to compile for some reason
|
322
|
+
ac_cv_libnet_endianess=unknown
|
323
|
+
else
|
324
|
+
./conftest > conftest.out
|
325
|
+
result=`cat conftest.out`
|
326
|
+
if test $result = "B"; then
|
327
|
+
ac_cv_libnet_endianess=big
|
328
|
+
elif test $result = "L"; then
|
329
|
+
ac_cv_libnet_endianess=lil
|
330
|
+
else
|
331
|
+
ac_cv_libnet_endianess=unknown
|
332
|
+
fi
|
333
|
+
fi
|
334
|
+
rm -f conftest* core core.conftest
|
335
|
+
|
336
|
+
AC_MSG_RESULT($ac_cv_libnet_endianess)
|
337
|
+
|
338
|
+
if test $ac_cv_libnet_endianess = big ; then
|
339
|
+
AC_DEFINE(LIBNET_BIG_ENDIAN)
|
340
|
+
ENDIANESS="LIBNET_BIG_ENDIAN"
|
341
|
+
LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DLIBNET_BIG_ENDIAN"
|
342
|
+
elif test $ac_cv_libnet_endianess = lil ; then
|
343
|
+
AC_DEFINE(LIBNET_LIL_ENDIAN)
|
344
|
+
ENDIANESS="LIBNET_LIL_ENDIAN"
|
345
|
+
LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DLIBNET_LIL_ENDIAN"
|
346
|
+
fi
|
347
|
+
])
|
348
|
+
|
349
|
+
dnl
|
350
|
+
dnl Improved version of AC_CHECK_LIB
|
351
|
+
dnl
|
352
|
+
dnl Thanks to John Hawkinson (jhawk@mit.edu)
|
353
|
+
dnl
|
354
|
+
dnl usage:
|
355
|
+
dnl
|
356
|
+
dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
|
357
|
+
dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
|
358
|
+
dnl
|
359
|
+
dnl results:
|
360
|
+
dnl
|
361
|
+
dnl LIBS
|
362
|
+
dnl
|
363
|
+
|
364
|
+
define(AC_LBL_CHECK_LIB,
|
365
|
+
[AC_MSG_CHECKING([for $2 in -l$1])
|
366
|
+
dnl Use a cache variable name containing both the library and function name,
|
367
|
+
dnl because the test really is for library $1 defining function $2, not
|
368
|
+
dnl just for library $1. Separate tests with the same $1 and different $2's
|
369
|
+
dnl may have different results.
|
370
|
+
ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
|
371
|
+
AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
|
372
|
+
[ac_save_LIBS="$LIBS"
|
373
|
+
LIBS="-l$1 $5 $LIBS"
|
374
|
+
AC_TRY_LINK(dnl
|
375
|
+
ifelse([$2], [main], , dnl Avoid conflicting decl of main.
|
376
|
+
[/* Override any gcc2 internal prototype to avoid an error. */
|
377
|
+
]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
|
378
|
+
extern "C"
|
379
|
+
#endif
|
380
|
+
])dnl
|
381
|
+
[/* We use char because int might match the return type of a gcc2
|
382
|
+
builtin and then its argument prototype would still apply. */
|
383
|
+
char $2();
|
384
|
+
]),
|
385
|
+
[$2()],
|
386
|
+
eval "ac_cv_lbl_lib_$ac_lib_var=yes",
|
387
|
+
eval "ac_cv_lbl_lib_$ac_lib_var=no")
|
388
|
+
LIBS="$ac_save_LIBS"
|
389
|
+
])dnl
|
390
|
+
if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
|
391
|
+
AC_MSG_RESULT(yes)
|
392
|
+
ifelse([$3], ,
|
393
|
+
[changequote(, )dnl
|
394
|
+
ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
|
395
|
+
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
|
396
|
+
changequote([, ])dnl
|
397
|
+
AC_DEFINE_UNQUOTED($ac_tr_lib)
|
398
|
+
LIBS="-l$1 $LIBS"
|
399
|
+
], [$3])
|
400
|
+
else
|
401
|
+
AC_MSG_RESULT(no)
|
402
|
+
ifelse([$4], , , [$4
|
403
|
+
])dnl
|
404
|
+
fi
|
405
|
+
])
|
406
|
+
|
407
|
+
dnl
|
408
|
+
dnl AC_LBL_LIBRARY_NET
|
409
|
+
dnl
|
410
|
+
dnl This test is for network applications that need socket() and
|
411
|
+
dnl gethostbyname() -ish functions. Under Solaris, those applications
|
412
|
+
dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
|
413
|
+
dnl with "-lnsl" but should *not* link with "-lsocket" because
|
414
|
+
dnl libsocket.a breaks a number of things (for instance:
|
415
|
+
dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
|
416
|
+
dnl versions of IRIX).
|
417
|
+
dnl
|
418
|
+
dnl Unfortunately, many application developers are not aware of this,
|
419
|
+
dnl and mistakenly write tests that cause -lsocket to be used under
|
420
|
+
dnl IRIX. It is also easy to write tests that cause -lnsl to be used
|
421
|
+
dnl under operating systems where neither are necessary (or useful),
|
422
|
+
dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
|
423
|
+
dnl
|
424
|
+
dnl This test exists so that every application developer does not test
|
425
|
+
dnl this in a different, and subtly broken fashion.
|
426
|
+
|
427
|
+
dnl It has been argued that this test should be broken up into two
|
428
|
+
dnl seperate tests, one for the resolver libraries, and one for the
|
429
|
+
dnl libraries necessary for using Sockets API. Unfortunately, the two
|
430
|
+
dnl are carefully intertwined and allowing the autoconf user to use
|
431
|
+
dnl them independantly potentially results in unfortunate ordering
|
432
|
+
dnl dependancies -- as such, such component macros would have to
|
433
|
+
dnl carefully use indirection and be aware if the other components were
|
434
|
+
dnl executed. Since other autoconf macros do not go to this trouble,
|
435
|
+
dnl and almost no applications use sockets without the resolver, this
|
436
|
+
dnl complexity has not been implemented.
|
437
|
+
dnl
|
438
|
+
dnl The check for libresolv is in case you are attempting to link
|
439
|
+
dnl statically and happen to have a libresolv.a lying around (and no
|
440
|
+
dnl libnsl.a).
|
441
|
+
dnl
|
442
|
+
AC_DEFUN(AC_LBL_LIBRARY_NET, [
|
443
|
+
# Most operating systems have gethostbyname() in the default searched
|
444
|
+
# libraries (i.e. libc):
|
445
|
+
AC_CHECK_FUNC(gethostbyname, ,
|
446
|
+
# Some OSes (eg. Solaris) place it in libnsl:
|
447
|
+
AC_LBL_CHECK_LIB(nsl, gethostbyname, ,
|
448
|
+
# Some strange OSes (SINIX) have it in libsocket:
|
449
|
+
AC_LBL_CHECK_LIB(socket, gethostbyname, ,
|
450
|
+
# Unfortunately libsocket sometimes depends on libnsl.
|
451
|
+
# AC_CHECK_LIB's API is essentially broken so the
|
452
|
+
# following ugliness is necessary:
|
453
|
+
AC_LBL_CHECK_LIB(socket, gethostbyname,
|
454
|
+
LIBS="-lsocket -lnsl $LIBS",
|
455
|
+
AC_CHECK_LIB(resolv, gethostbyname),
|
456
|
+
-lnsl))))
|
457
|
+
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
|
458
|
+
AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", ,
|
459
|
+
-lnsl)))
|
460
|
+
# DLPI needs putmsg under HPUX so test for -lstr while we're at it
|
461
|
+
AC_CHECK_LIB(str, putmsg)
|
462
|
+
])
|
463
|
+
|