From 8af5f5cb84ba7ee1bde5626b1efc95db71647339 Mon Sep 17 00:00:00 2001 From: evilsocket Date: Thu, 25 Jan 2018 12:35:11 +0100 Subject: [PATCH] balls --- README.md | 14 +- libpcap-1.8.1.tar.gz | Bin 0 -> 739163 bytes libpcap-1.8.1/CHANGES | 837 ++ libpcap-1.8.1/CMakeLists.txt | 520 + libpcap-1.8.1/CREDITS | 180 + libpcap-1.8.1/ChmodBPF/ChmodBPF | 33 + .../ChmodBPF/StartupParameters.plist | 4 + libpcap-1.8.1/GenVersion.bat | 23 + libpcap-1.8.1/INSTALL.txt | 374 + libpcap-1.8.1/LICENSE | 19 + libpcap-1.8.1/Makefile | 752 ++ libpcap-1.8.1/Makefile-devel-adds | 22 + libpcap-1.8.1/Makefile.in | 752 ++ libpcap-1.8.1/README | 106 + libpcap-1.8.1/README.Win32 | 46 + libpcap-1.8.1/README.aix | 88 + libpcap-1.8.1/README.dag | 122 + libpcap-1.8.1/README.hpux | 254 + libpcap-1.8.1/README.linux | 108 + libpcap-1.8.1/README.macosx | 74 + libpcap-1.8.1/README.septel | 50 + libpcap-1.8.1/README.sita | 64 + libpcap-1.8.1/README.tru64 | 49 + libpcap-1.8.1/SUNOS4/nit_if.o.sparc | Bin 0 -> 5212 bytes libpcap-1.8.1/SUNOS4/nit_if.o.sun3 | Bin 0 -> 4267 bytes libpcap-1.8.1/SUNOS4/nit_if.o.sun4c.4.0.3c | Bin 0 -> 5291 bytes libpcap-1.8.1/TODO | 35 + libpcap-1.8.1/VERSION | 1 + libpcap-1.8.1/Win32/Include/Gnuc.h | 8 + libpcap-1.8.1/Win32/Include/net/if.h | 230 + libpcap-1.8.1/Win32/Prj/wpcap.sln | 28 + libpcap-1.8.1/Win32/Prj/wpcap.vcxproj | 234 + libpcap-1.8.1/Win32/Prj/wpcap.vcxproj.filters | 107 + libpcap-1.8.1/aclocal.m4 | 1253 ++ libpcap-1.8.1/arcnet.h | 50 + libpcap-1.8.1/atmuni31.h | 85 + libpcap-1.8.1/bpf/net/bpf_filter.c | 766 ++ libpcap-1.8.1/bpf_dump.c | 61 + libpcap-1.8.1/bpf_dump.o | Bin 0 -> 7304 bytes libpcap-1.8.1/bpf_filter.c | 1 + libpcap-1.8.1/bpf_filter.o | Bin 0 -> 10920 bytes libpcap-1.8.1/bpf_image.c | 320 + libpcap-1.8.1/bpf_image.o | Bin 0 -> 13460 bytes libpcap-1.8.1/chmod_bpf | 19 + libpcap-1.8.1/cmake/preconfigure.cmake | 55 + libpcap-1.8.1/cmakeconfig.h.in | 345 + libpcap-1.8.1/config.guess | 1435 +++ libpcap-1.8.1/config.h | 348 + libpcap-1.8.1/config.h.in | 347 + libpcap-1.8.1/config.log | 10057 +++++++++++++++ libpcap-1.8.1/config.status | 1126 ++ libpcap-1.8.1/config.sub | 1807 +++ libpcap-1.8.1/config/have_siocglifconf.c | 6 + libpcap-1.8.1/configure | 10359 ++++++++++++++++ libpcap-1.8.1/configure.ac | 1821 +++ libpcap-1.8.1/dlpisubs.c | 388 + libpcap-1.8.1/dlpisubs.h | 38 + libpcap-1.8.1/etherent.c | 169 + libpcap-1.8.1/etherent.o | Bin 0 -> 8520 bytes libpcap-1.8.1/ethertype.h | 123 + libpcap-1.8.1/extract.h | 221 + libpcap-1.8.1/fad-getad.c | 292 + libpcap-1.8.1/fad-getad.o | Bin 0 -> 11780 bytes libpcap-1.8.1/fad-gifc.c | 428 + libpcap-1.8.1/fad-glifc.c | 359 + libpcap-1.8.1/fad-helpers.c | 884 ++ libpcap-1.8.1/fad-helpers.o | Bin 0 -> 23908 bytes libpcap-1.8.1/gen_version_c.sh | 11 + libpcap-1.8.1/gen_version_header.sh | 19 + libpcap-1.8.1/gencode.c | 8977 +++++++++++++ libpcap-1.8.1/gencode.h | 395 + libpcap-1.8.1/gencode.o | Bin 0 -> 320584 bytes libpcap-1.8.1/grammar.c | 3650 ++++++ libpcap-1.8.1/grammar.h | 323 + libpcap-1.8.1/grammar.o | Bin 0 -> 58524 bytes libpcap-1.8.1/grammar.y | 768 ++ libpcap-1.8.1/ieee80211.h | 146 + libpcap-1.8.1/inet.c | 403 + libpcap-1.8.1/inet.o | Bin 0 -> 14892 bytes libpcap-1.8.1/install-sh | 250 + libpcap-1.8.1/lbl/os-aix4.h | 23 + libpcap-1.8.1/lbl/os-aix7.h | 23 + libpcap-1.8.1/lbl/os-hpux11.h | 23 + libpcap-1.8.1/lbl/os-osf4.h | 26 + libpcap-1.8.1/lbl/os-osf5.h | 30 + libpcap-1.8.1/lbl/os-solaris2.h | 24 + libpcap-1.8.1/lbl/os-sunos4.h | 211 + libpcap-1.8.1/lbl/os-ultrix4.h | 36 + libpcap-1.8.1/libpcap.a | Bin 0 -> 1133764 bytes libpcap-1.8.1/libpcap.so.1.8.1 | Bin 0 -> 850004 bytes libpcap-1.8.1/llc.h | 98 + libpcap-1.8.1/missing/getopt.c | 126 + libpcap-1.8.1/missing/getopt.h | 7 + libpcap-1.8.1/missing/snprintf.c | 625 + libpcap-1.8.1/missing/strtok_r.c | 87 + libpcap-1.8.1/missing/win_snprintf.c | 31 + libpcap-1.8.1/mkdep | 112 + libpcap-1.8.1/msdos/bin2c.c | 43 + libpcap-1.8.1/msdos/common.dj | 86 + libpcap-1.8.1/msdos/makefile | 184 + libpcap-1.8.1/msdos/makefile.dj | 127 + libpcap-1.8.1/msdos/makefile.wc | 134 + libpcap-1.8.1/msdos/ndis2.c | 860 ++ libpcap-1.8.1/msdos/ndis2.h | 559 + libpcap-1.8.1/msdos/ndis_0.asm | 188 + libpcap-1.8.1/msdos/pkt_rx0.asm | 197 + libpcap-1.8.1/msdos/pkt_rx1.s | 155 + libpcap-1.8.1/msdos/pktdrvr.c | 1436 +++ libpcap-1.8.1/msdos/pktdrvr.h | 153 + libpcap-1.8.1/msdos/readme.dos | 166 + libpcap-1.8.1/nametoaddr.c | 548 + libpcap-1.8.1/nametoaddr.h | 48 + libpcap-1.8.1/nametoaddr.o | Bin 0 -> 20268 bytes libpcap-1.8.1/net | 1 + libpcap-1.8.1/nlpid.h | 56 + libpcap-1.8.1/optimize.c | 2384 ++++ libpcap-1.8.1/optimize.o | Bin 0 -> 58040 bytes libpcap-1.8.1/org.tcpdump.chmod_bpf.plist | 16 + libpcap-1.8.1/pcap-bpf.c | 3108 +++++ libpcap-1.8.1/pcap-bpf.h | 45 + libpcap-1.8.1/pcap-bt-linux.c | 411 + libpcap-1.8.1/pcap-bt-linux.h | 38 + libpcap-1.8.1/pcap-bt-linux.o | Bin 0 -> 30204 bytes libpcap-1.8.1/pcap-bt-monitor-linux.c | 252 + libpcap-1.8.1/pcap-bt-monitor-linux.h | 32 + libpcap-1.8.1/pcap-bt-monitor-linux.o | Bin 0 -> 21244 bytes libpcap-1.8.1/pcap-common.c | 1461 +++ libpcap-1.8.1/pcap-common.h | 25 + libpcap-1.8.1/pcap-common.o | Bin 0 -> 13032 bytes libpcap-1.8.1/pcap-config | 89 + libpcap-1.8.1/pcap-config.1 | 72 + libpcap-1.8.1/pcap-config.in | 89 + libpcap-1.8.1/pcap-dag.c | 1379 ++ libpcap-1.8.1/pcap-dag.h | 12 + libpcap-1.8.1/pcap-dbus.c | 279 + libpcap-1.8.1/pcap-dbus.h | 2 + libpcap-1.8.1/pcap-dlpi.c | 1837 +++ libpcap-1.8.1/pcap-dos.c | 1512 +++ libpcap-1.8.1/pcap-dos.h | 225 + libpcap-1.8.1/pcap-enet.c | 231 + libpcap-1.8.1/pcap-filter.manmisc | 1032 ++ libpcap-1.8.1/pcap-filter.manmisc.in | 1032 ++ libpcap-1.8.1/pcap-int.h | 469 + libpcap-1.8.1/pcap-libdlpi.c | 439 + libpcap-1.8.1/pcap-linktype.manmisc | 48 + libpcap-1.8.1/pcap-linktype.manmisc.in | 48 + libpcap-1.8.1/pcap-linux.c | 6879 ++++++++++ libpcap-1.8.1/pcap-linux.o | Bin 0 -> 161176 bytes libpcap-1.8.1/pcap-namedb.h | 40 + libpcap-1.8.1/pcap-netfilter-linux.c | 658 + libpcap-1.8.1/pcap-netfilter-linux.h | 35 + libpcap-1.8.1/pcap-netfilter-linux.o | Bin 0 -> 42860 bytes libpcap-1.8.1/pcap-new.c | 1265 ++ libpcap-1.8.1/pcap-nit.c | 384 + libpcap-1.8.1/pcap-null.c | 53 + libpcap-1.8.1/pcap-pf.c | 622 + libpcap-1.8.1/pcap-rpcap.c | 2127 ++++ libpcap-1.8.1/pcap-rpcap.h | 465 + libpcap-1.8.1/pcap-savefile.manfile | 133 + libpcap-1.8.1/pcap-savefile.manfile.in | 133 + libpcap-1.8.1/pcap-septel.c | 321 + libpcap-1.8.1/pcap-septel.h | 13 + libpcap-1.8.1/pcap-sita.c | 1049 ++ libpcap-1.8.1/pcap-sita.h | 8 + libpcap-1.8.1/pcap-sita.html | 943 ++ libpcap-1.8.1/pcap-snf.c | 520 + libpcap-1.8.1/pcap-snf.h | 2 + libpcap-1.8.1/pcap-snit.c | 460 + libpcap-1.8.1/pcap-snoop.c | 435 + libpcap-1.8.1/pcap-stdinc.h | 126 + libpcap-1.8.1/pcap-tc.c | 1284 ++ libpcap-1.8.1/pcap-tc.h | 54 + libpcap-1.8.1/pcap-tstamp.manmisc | 175 + libpcap-1.8.1/pcap-tstamp.manmisc.in | 175 + libpcap-1.8.1/pcap-usb-linux.c | 979 ++ libpcap-1.8.1/pcap-usb-linux.h | 38 + libpcap-1.8.1/pcap-usb-linux.o | Bin 0 -> 46508 bytes libpcap-1.8.1/pcap-win32.c | 1548 +++ libpcap-1.8.1/pcap.3pcap | 937 ++ libpcap-1.8.1/pcap.3pcap.in | 937 ++ libpcap-1.8.1/pcap.c | 2327 ++++ libpcap-1.8.1/pcap.h | 43 + libpcap-1.8.1/pcap.o | Bin 0 -> 64420 bytes libpcap-1.8.1/pcap/bluetooth.h | 55 + libpcap-1.8.1/pcap/bpf.h | 280 + libpcap-1.8.1/pcap/can_socketcan.h | 54 + libpcap-1.8.1/pcap/dlt.h | 1340 ++ libpcap-1.8.1/pcap/export-defs.h | 108 + libpcap-1.8.1/pcap/ipnet.h | 43 + libpcap-1.8.1/pcap/namedb.h | 85 + libpcap-1.8.1/pcap/nflog.h | 92 + libpcap-1.8.1/pcap/pcap.h | 538 + libpcap-1.8.1/pcap/sll.h | 129 + libpcap-1.8.1/pcap/usb.h | 141 + libpcap-1.8.1/pcap/vlan.h | 44 + libpcap-1.8.1/pcap_activate.3pcap | 122 + libpcap-1.8.1/pcap_breakloop.3pcap | 98 + libpcap-1.8.1/pcap_can_set_rfmon.3pcap | 72 + libpcap-1.8.1/pcap_close.3pcap | 39 + libpcap-1.8.1/pcap_compile.3pcap | 70 + libpcap-1.8.1/pcap_compile.3pcap.in | 70 + libpcap-1.8.1/pcap_create.3pcap | 72 + libpcap-1.8.1/pcap_datalink.3pcap | 68 + libpcap-1.8.1/pcap_datalink.3pcap.in | 68 + libpcap-1.8.1/pcap_datalink_name_to_val.3pcap | 47 + libpcap-1.8.1/pcap_datalink_val_to_name.3pcap | 54 + libpcap-1.8.1/pcap_dump.3pcap | 51 + libpcap-1.8.1/pcap_dump_close.3pcap | 37 + libpcap-1.8.1/pcap_dump_file.3pcap | 38 + libpcap-1.8.1/pcap_dump_flush.3pcap | 43 + libpcap-1.8.1/pcap_dump_ftell.3pcap | 42 + libpcap-1.8.1/pcap_dump_open.3pcap | 96 + libpcap-1.8.1/pcap_dump_open.3pcap.in | 96 + libpcap-1.8.1/pcap_file.3pcap | 57 + libpcap-1.8.1/pcap_fileno.3pcap | 66 + libpcap-1.8.1/pcap_findalldevs.3pcap | 190 + libpcap-1.8.1/pcap_freecode.3pcap | 43 + libpcap-1.8.1/pcap_get_selectable_fd.3pcap | 133 + libpcap-1.8.1/pcap_get_tstamp_precision.3pcap | 52 + .../pcap_get_tstamp_precision.3pcap.in | 52 + libpcap-1.8.1/pcap_geterr.3pcap | 51 + libpcap-1.8.1/pcap_inject.3pcap | 88 + libpcap-1.8.1/pcap_is_swapped.3pcap | 51 + libpcap-1.8.1/pcap_lib_version.3pcap | 39 + libpcap-1.8.1/pcap_list_datalinks.3pcap | 73 + libpcap-1.8.1/pcap_list_datalinks.3pcap.in | 73 + libpcap-1.8.1/pcap_list_tstamp_types.3pcap | 70 + libpcap-1.8.1/pcap_list_tstamp_types.3pcap.in | 70 + libpcap-1.8.1/pcap_lookupdev.3pcap | 60 + libpcap-1.8.1/pcap_lookupnet.3pcap | 63 + libpcap-1.8.1/pcap_loop.3pcap | 199 + libpcap-1.8.1/pcap_major_version.3pcap | 54 + libpcap-1.8.1/pcap_next_ex.3pcap | 141 + libpcap-1.8.1/pcap_offline_filter.3pcap | 55 + libpcap-1.8.1/pcap_open_dead.3pcap | 79 + libpcap-1.8.1/pcap_open_dead.3pcap.in | 79 + libpcap-1.8.1/pcap_open_live.3pcap | 87 + libpcap-1.8.1/pcap_open_offline.3pcap | 109 + libpcap-1.8.1/pcap_open_offline.3pcap.in | 109 + libpcap-1.8.1/pcap_set_buffer_size.3pcap | 45 + libpcap-1.8.1/pcap_set_datalink.3pcap | 51 + libpcap-1.8.1/pcap_set_immediate_mode.3pcap | 47 + libpcap-1.8.1/pcap_set_promisc.3pcap | 46 + libpcap-1.8.1/pcap_set_rfmon.3pcap | 47 + libpcap-1.8.1/pcap_set_snaplen.3pcap | 44 + libpcap-1.8.1/pcap_set_timeout.3pcap | 50 + libpcap-1.8.1/pcap_set_tstamp_precision.3pcap | 61 + .../pcap_set_tstamp_precision.3pcap.in | 61 + libpcap-1.8.1/pcap_set_tstamp_type.3pcap | 65 + libpcap-1.8.1/pcap_set_tstamp_type.3pcap.in | 65 + libpcap-1.8.1/pcap_setdirection.3pcap | 69 + libpcap-1.8.1/pcap_setfilter.3pcap | 52 + libpcap-1.8.1/pcap_setnonblock.3pcap | 81 + libpcap-1.8.1/pcap_snapshot.3pcap | 52 + libpcap-1.8.1/pcap_stats.3pcap | 97 + libpcap-1.8.1/pcap_statustostr.3pcap | 41 + libpcap-1.8.1/pcap_strerror.3pcap | 40 + .../pcap_tstamp_type_name_to_val.3pcap | 45 + .../pcap_tstamp_type_val_to_name.3pcap | 49 + libpcap-1.8.1/pcap_version.h | 13 + libpcap-1.8.1/pcap_version.h.in | 13 + libpcap-1.8.1/portability.h | 216 + libpcap-1.8.1/ppp.h | 57 + libpcap-1.8.1/remote-ext.h | 467 + libpcap-1.8.1/savefile.c | 534 + libpcap-1.8.1/savefile.o | Bin 0 -> 20984 bytes libpcap-1.8.1/scanner.c | 5105 ++++++++ libpcap-1.8.1/scanner.h | 349 + libpcap-1.8.1/scanner.l | 484 + libpcap-1.8.1/scanner.o | Bin 0 -> 100772 bytes libpcap-1.8.1/sf-pcap-ng.c | 1424 +++ libpcap-1.8.1/sf-pcap-ng.h | 32 + libpcap-1.8.1/sf-pcap-ng.o | Bin 0 -> 39704 bytes libpcap-1.8.1/sf-pcap.c | 958 ++ libpcap-1.8.1/sf-pcap.h | 37 + libpcap-1.8.1/sf-pcap.o | Bin 0 -> 36844 bytes libpcap-1.8.1/sockutils.c | 1230 ++ libpcap-1.8.1/sockutils.h | 241 + libpcap-1.8.1/sunatmpos.h | 43 + libpcap-1.8.1/tests/CMakeLists.txt | 42 + libpcap-1.8.1/tests/can_set_rfmon_test.c | 92 + libpcap-1.8.1/tests/capturetest.c | 334 + libpcap-1.8.1/tests/filtertest.c | 364 + libpcap-1.8.1/tests/findalldevstest.c | 161 + libpcap-1.8.1/tests/opentest.c | 273 + libpcap-1.8.1/tests/reactivatetest.c | 84 + libpcap-1.8.1/tests/selpolltest.c | 407 + libpcap-1.8.1/tests/valgrindtest.c | 470 + libpcap-1.8.1/version.c | 3 + libpcap-1.8.1/version.o | Bin 0 -> 1776 bytes 290 files changed, 122171 insertions(+), 2 deletions(-) create mode 100644 libpcap-1.8.1.tar.gz create mode 100644 libpcap-1.8.1/CHANGES create mode 100644 libpcap-1.8.1/CMakeLists.txt create mode 100644 libpcap-1.8.1/CREDITS create mode 100755 libpcap-1.8.1/ChmodBPF/ChmodBPF create mode 100644 libpcap-1.8.1/ChmodBPF/StartupParameters.plist create mode 100644 libpcap-1.8.1/GenVersion.bat create mode 100644 libpcap-1.8.1/INSTALL.txt create mode 100644 libpcap-1.8.1/LICENSE create mode 100644 libpcap-1.8.1/Makefile create mode 100644 libpcap-1.8.1/Makefile-devel-adds create mode 100644 libpcap-1.8.1/Makefile.in create mode 100644 libpcap-1.8.1/README create mode 100644 libpcap-1.8.1/README.Win32 create mode 100644 libpcap-1.8.1/README.aix create mode 100644 libpcap-1.8.1/README.dag create mode 100644 libpcap-1.8.1/README.hpux create mode 100644 libpcap-1.8.1/README.linux create mode 100644 libpcap-1.8.1/README.macosx create mode 100644 libpcap-1.8.1/README.septel create mode 100644 libpcap-1.8.1/README.sita create mode 100644 libpcap-1.8.1/README.tru64 create mode 100644 libpcap-1.8.1/SUNOS4/nit_if.o.sparc create mode 100644 libpcap-1.8.1/SUNOS4/nit_if.o.sun3 create mode 100644 libpcap-1.8.1/SUNOS4/nit_if.o.sun4c.4.0.3c create mode 100644 libpcap-1.8.1/TODO create mode 100644 libpcap-1.8.1/VERSION create mode 100644 libpcap-1.8.1/Win32/Include/Gnuc.h create mode 100644 libpcap-1.8.1/Win32/Include/net/if.h create mode 100644 libpcap-1.8.1/Win32/Prj/wpcap.sln create mode 100644 libpcap-1.8.1/Win32/Prj/wpcap.vcxproj create mode 100644 libpcap-1.8.1/Win32/Prj/wpcap.vcxproj.filters create mode 100644 libpcap-1.8.1/aclocal.m4 create mode 100644 libpcap-1.8.1/arcnet.h create mode 100644 libpcap-1.8.1/atmuni31.h create mode 100644 libpcap-1.8.1/bpf/net/bpf_filter.c create mode 100644 libpcap-1.8.1/bpf_dump.c create mode 100644 libpcap-1.8.1/bpf_dump.o create mode 120000 libpcap-1.8.1/bpf_filter.c create mode 100644 libpcap-1.8.1/bpf_filter.o create mode 100644 libpcap-1.8.1/bpf_image.c create mode 100644 libpcap-1.8.1/bpf_image.o create mode 100755 libpcap-1.8.1/chmod_bpf create mode 100644 libpcap-1.8.1/cmake/preconfigure.cmake create mode 100644 libpcap-1.8.1/cmakeconfig.h.in create mode 100644 libpcap-1.8.1/config.guess create mode 100644 libpcap-1.8.1/config.h create mode 100644 libpcap-1.8.1/config.h.in create mode 100644 libpcap-1.8.1/config.log create mode 100755 libpcap-1.8.1/config.status create mode 100644 libpcap-1.8.1/config.sub create mode 100644 libpcap-1.8.1/config/have_siocglifconf.c create mode 100755 libpcap-1.8.1/configure create mode 100644 libpcap-1.8.1/configure.ac create mode 100644 libpcap-1.8.1/dlpisubs.c create mode 100644 libpcap-1.8.1/dlpisubs.h create mode 100644 libpcap-1.8.1/etherent.c create mode 100644 libpcap-1.8.1/etherent.o create mode 100644 libpcap-1.8.1/ethertype.h create mode 100644 libpcap-1.8.1/extract.h create mode 100644 libpcap-1.8.1/fad-getad.c create mode 100644 libpcap-1.8.1/fad-getad.o create mode 100644 libpcap-1.8.1/fad-gifc.c create mode 100644 libpcap-1.8.1/fad-glifc.c create mode 100644 libpcap-1.8.1/fad-helpers.c create mode 100644 libpcap-1.8.1/fad-helpers.o create mode 100755 libpcap-1.8.1/gen_version_c.sh create mode 100755 libpcap-1.8.1/gen_version_header.sh create mode 100644 libpcap-1.8.1/gencode.c create mode 100644 libpcap-1.8.1/gencode.h create mode 100644 libpcap-1.8.1/gencode.o create mode 100644 libpcap-1.8.1/grammar.c create mode 100644 libpcap-1.8.1/grammar.h create mode 100644 libpcap-1.8.1/grammar.o create mode 100644 libpcap-1.8.1/grammar.y create mode 100644 libpcap-1.8.1/ieee80211.h create mode 100644 libpcap-1.8.1/inet.c create mode 100644 libpcap-1.8.1/inet.o create mode 100755 libpcap-1.8.1/install-sh create mode 100644 libpcap-1.8.1/lbl/os-aix4.h create mode 100644 libpcap-1.8.1/lbl/os-aix7.h create mode 100644 libpcap-1.8.1/lbl/os-hpux11.h create mode 100644 libpcap-1.8.1/lbl/os-osf4.h create mode 100644 libpcap-1.8.1/lbl/os-osf5.h create mode 100644 libpcap-1.8.1/lbl/os-solaris2.h create mode 100644 libpcap-1.8.1/lbl/os-sunos4.h create mode 100644 libpcap-1.8.1/lbl/os-ultrix4.h create mode 100644 libpcap-1.8.1/libpcap.a create mode 100755 libpcap-1.8.1/libpcap.so.1.8.1 create mode 100644 libpcap-1.8.1/llc.h create mode 100644 libpcap-1.8.1/missing/getopt.c create mode 100644 libpcap-1.8.1/missing/getopt.h create mode 100644 libpcap-1.8.1/missing/snprintf.c create mode 100644 libpcap-1.8.1/missing/strtok_r.c create mode 100644 libpcap-1.8.1/missing/win_snprintf.c create mode 100755 libpcap-1.8.1/mkdep create mode 100644 libpcap-1.8.1/msdos/bin2c.c create mode 100644 libpcap-1.8.1/msdos/common.dj create mode 100644 libpcap-1.8.1/msdos/makefile create mode 100644 libpcap-1.8.1/msdos/makefile.dj create mode 100644 libpcap-1.8.1/msdos/makefile.wc create mode 100644 libpcap-1.8.1/msdos/ndis2.c create mode 100644 libpcap-1.8.1/msdos/ndis2.h create mode 100644 libpcap-1.8.1/msdos/ndis_0.asm create mode 100644 libpcap-1.8.1/msdos/pkt_rx0.asm create mode 100644 libpcap-1.8.1/msdos/pkt_rx1.s create mode 100644 libpcap-1.8.1/msdos/pktdrvr.c create mode 100644 libpcap-1.8.1/msdos/pktdrvr.h create mode 100644 libpcap-1.8.1/msdos/readme.dos create mode 100644 libpcap-1.8.1/nametoaddr.c create mode 100644 libpcap-1.8.1/nametoaddr.h create mode 100644 libpcap-1.8.1/nametoaddr.o create mode 120000 libpcap-1.8.1/net create mode 100644 libpcap-1.8.1/nlpid.h create mode 100644 libpcap-1.8.1/optimize.c create mode 100644 libpcap-1.8.1/optimize.o create mode 100644 libpcap-1.8.1/org.tcpdump.chmod_bpf.plist create mode 100644 libpcap-1.8.1/pcap-bpf.c create mode 100644 libpcap-1.8.1/pcap-bpf.h create mode 100644 libpcap-1.8.1/pcap-bt-linux.c create mode 100644 libpcap-1.8.1/pcap-bt-linux.h create mode 100644 libpcap-1.8.1/pcap-bt-linux.o create mode 100644 libpcap-1.8.1/pcap-bt-monitor-linux.c create mode 100644 libpcap-1.8.1/pcap-bt-monitor-linux.h create mode 100644 libpcap-1.8.1/pcap-bt-monitor-linux.o create mode 100644 libpcap-1.8.1/pcap-common.c create mode 100644 libpcap-1.8.1/pcap-common.h create mode 100644 libpcap-1.8.1/pcap-common.o create mode 100755 libpcap-1.8.1/pcap-config create mode 100644 libpcap-1.8.1/pcap-config.1 create mode 100644 libpcap-1.8.1/pcap-config.in create mode 100644 libpcap-1.8.1/pcap-dag.c create mode 100644 libpcap-1.8.1/pcap-dag.h create mode 100644 libpcap-1.8.1/pcap-dbus.c create mode 100644 libpcap-1.8.1/pcap-dbus.h create mode 100644 libpcap-1.8.1/pcap-dlpi.c create mode 100644 libpcap-1.8.1/pcap-dos.c create mode 100644 libpcap-1.8.1/pcap-dos.h create mode 100644 libpcap-1.8.1/pcap-enet.c create mode 100644 libpcap-1.8.1/pcap-filter.manmisc create mode 100644 libpcap-1.8.1/pcap-filter.manmisc.in create mode 100644 libpcap-1.8.1/pcap-int.h create mode 100644 libpcap-1.8.1/pcap-libdlpi.c create mode 100644 libpcap-1.8.1/pcap-linktype.manmisc create mode 100644 libpcap-1.8.1/pcap-linktype.manmisc.in create mode 100644 libpcap-1.8.1/pcap-linux.c create mode 100644 libpcap-1.8.1/pcap-linux.o create mode 100644 libpcap-1.8.1/pcap-namedb.h create mode 100644 libpcap-1.8.1/pcap-netfilter-linux.c create mode 100644 libpcap-1.8.1/pcap-netfilter-linux.h create mode 100644 libpcap-1.8.1/pcap-netfilter-linux.o create mode 100644 libpcap-1.8.1/pcap-new.c create mode 100644 libpcap-1.8.1/pcap-nit.c create mode 100644 libpcap-1.8.1/pcap-null.c create mode 100644 libpcap-1.8.1/pcap-pf.c create mode 100644 libpcap-1.8.1/pcap-rpcap.c create mode 100644 libpcap-1.8.1/pcap-rpcap.h create mode 100644 libpcap-1.8.1/pcap-savefile.manfile create mode 100644 libpcap-1.8.1/pcap-savefile.manfile.in create mode 100644 libpcap-1.8.1/pcap-septel.c create mode 100644 libpcap-1.8.1/pcap-septel.h create mode 100644 libpcap-1.8.1/pcap-sita.c create mode 100644 libpcap-1.8.1/pcap-sita.h create mode 100644 libpcap-1.8.1/pcap-sita.html create mode 100644 libpcap-1.8.1/pcap-snf.c create mode 100644 libpcap-1.8.1/pcap-snf.h create mode 100644 libpcap-1.8.1/pcap-snit.c create mode 100644 libpcap-1.8.1/pcap-snoop.c create mode 100644 libpcap-1.8.1/pcap-stdinc.h create mode 100644 libpcap-1.8.1/pcap-tc.c create mode 100644 libpcap-1.8.1/pcap-tc.h create mode 100644 libpcap-1.8.1/pcap-tstamp.manmisc create mode 100644 libpcap-1.8.1/pcap-tstamp.manmisc.in create mode 100644 libpcap-1.8.1/pcap-usb-linux.c create mode 100644 libpcap-1.8.1/pcap-usb-linux.h create mode 100644 libpcap-1.8.1/pcap-usb-linux.o create mode 100644 libpcap-1.8.1/pcap-win32.c create mode 100644 libpcap-1.8.1/pcap.3pcap create mode 100644 libpcap-1.8.1/pcap.3pcap.in create mode 100644 libpcap-1.8.1/pcap.c create mode 100644 libpcap-1.8.1/pcap.h create mode 100644 libpcap-1.8.1/pcap.o create mode 100644 libpcap-1.8.1/pcap/bluetooth.h create mode 100644 libpcap-1.8.1/pcap/bpf.h create mode 100644 libpcap-1.8.1/pcap/can_socketcan.h create mode 100644 libpcap-1.8.1/pcap/dlt.h create mode 100644 libpcap-1.8.1/pcap/export-defs.h create mode 100644 libpcap-1.8.1/pcap/ipnet.h create mode 100644 libpcap-1.8.1/pcap/namedb.h create mode 100644 libpcap-1.8.1/pcap/nflog.h create mode 100644 libpcap-1.8.1/pcap/pcap.h create mode 100644 libpcap-1.8.1/pcap/sll.h create mode 100644 libpcap-1.8.1/pcap/usb.h create mode 100644 libpcap-1.8.1/pcap/vlan.h create mode 100644 libpcap-1.8.1/pcap_activate.3pcap create mode 100644 libpcap-1.8.1/pcap_breakloop.3pcap create mode 100644 libpcap-1.8.1/pcap_can_set_rfmon.3pcap create mode 100644 libpcap-1.8.1/pcap_close.3pcap create mode 100644 libpcap-1.8.1/pcap_compile.3pcap create mode 100644 libpcap-1.8.1/pcap_compile.3pcap.in create mode 100644 libpcap-1.8.1/pcap_create.3pcap create mode 100644 libpcap-1.8.1/pcap_datalink.3pcap create mode 100644 libpcap-1.8.1/pcap_datalink.3pcap.in create mode 100644 libpcap-1.8.1/pcap_datalink_name_to_val.3pcap create mode 100644 libpcap-1.8.1/pcap_datalink_val_to_name.3pcap create mode 100644 libpcap-1.8.1/pcap_dump.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_close.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_file.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_flush.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_ftell.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_open.3pcap create mode 100644 libpcap-1.8.1/pcap_dump_open.3pcap.in create mode 100644 libpcap-1.8.1/pcap_file.3pcap create mode 100644 libpcap-1.8.1/pcap_fileno.3pcap create mode 100644 libpcap-1.8.1/pcap_findalldevs.3pcap create mode 100644 libpcap-1.8.1/pcap_freecode.3pcap create mode 100644 libpcap-1.8.1/pcap_get_selectable_fd.3pcap create mode 100644 libpcap-1.8.1/pcap_get_tstamp_precision.3pcap create mode 100644 libpcap-1.8.1/pcap_get_tstamp_precision.3pcap.in create mode 100644 libpcap-1.8.1/pcap_geterr.3pcap create mode 100644 libpcap-1.8.1/pcap_inject.3pcap create mode 100644 libpcap-1.8.1/pcap_is_swapped.3pcap create mode 100644 libpcap-1.8.1/pcap_lib_version.3pcap create mode 100644 libpcap-1.8.1/pcap_list_datalinks.3pcap create mode 100644 libpcap-1.8.1/pcap_list_datalinks.3pcap.in create mode 100644 libpcap-1.8.1/pcap_list_tstamp_types.3pcap create mode 100644 libpcap-1.8.1/pcap_list_tstamp_types.3pcap.in create mode 100644 libpcap-1.8.1/pcap_lookupdev.3pcap create mode 100644 libpcap-1.8.1/pcap_lookupnet.3pcap create mode 100644 libpcap-1.8.1/pcap_loop.3pcap create mode 100644 libpcap-1.8.1/pcap_major_version.3pcap create mode 100644 libpcap-1.8.1/pcap_next_ex.3pcap create mode 100644 libpcap-1.8.1/pcap_offline_filter.3pcap create mode 100644 libpcap-1.8.1/pcap_open_dead.3pcap create mode 100644 libpcap-1.8.1/pcap_open_dead.3pcap.in create mode 100644 libpcap-1.8.1/pcap_open_live.3pcap create mode 100644 libpcap-1.8.1/pcap_open_offline.3pcap create mode 100644 libpcap-1.8.1/pcap_open_offline.3pcap.in create mode 100644 libpcap-1.8.1/pcap_set_buffer_size.3pcap create mode 100644 libpcap-1.8.1/pcap_set_datalink.3pcap create mode 100644 libpcap-1.8.1/pcap_set_immediate_mode.3pcap create mode 100644 libpcap-1.8.1/pcap_set_promisc.3pcap create mode 100644 libpcap-1.8.1/pcap_set_rfmon.3pcap create mode 100644 libpcap-1.8.1/pcap_set_snaplen.3pcap create mode 100644 libpcap-1.8.1/pcap_set_timeout.3pcap create mode 100644 libpcap-1.8.1/pcap_set_tstamp_precision.3pcap create mode 100644 libpcap-1.8.1/pcap_set_tstamp_precision.3pcap.in create mode 100644 libpcap-1.8.1/pcap_set_tstamp_type.3pcap create mode 100644 libpcap-1.8.1/pcap_set_tstamp_type.3pcap.in create mode 100644 libpcap-1.8.1/pcap_setdirection.3pcap create mode 100644 libpcap-1.8.1/pcap_setfilter.3pcap create mode 100644 libpcap-1.8.1/pcap_setnonblock.3pcap create mode 100644 libpcap-1.8.1/pcap_snapshot.3pcap create mode 100644 libpcap-1.8.1/pcap_stats.3pcap create mode 100644 libpcap-1.8.1/pcap_statustostr.3pcap create mode 100644 libpcap-1.8.1/pcap_strerror.3pcap create mode 100644 libpcap-1.8.1/pcap_tstamp_type_name_to_val.3pcap create mode 100644 libpcap-1.8.1/pcap_tstamp_type_val_to_name.3pcap create mode 100644 libpcap-1.8.1/pcap_version.h create mode 100644 libpcap-1.8.1/pcap_version.h.in create mode 100644 libpcap-1.8.1/portability.h create mode 100644 libpcap-1.8.1/ppp.h create mode 100644 libpcap-1.8.1/remote-ext.h create mode 100644 libpcap-1.8.1/savefile.c create mode 100644 libpcap-1.8.1/savefile.o create mode 100644 libpcap-1.8.1/scanner.c create mode 100644 libpcap-1.8.1/scanner.h create mode 100644 libpcap-1.8.1/scanner.l create mode 100644 libpcap-1.8.1/scanner.o create mode 100644 libpcap-1.8.1/sf-pcap-ng.c create mode 100644 libpcap-1.8.1/sf-pcap-ng.h create mode 100644 libpcap-1.8.1/sf-pcap-ng.o create mode 100644 libpcap-1.8.1/sf-pcap.c create mode 100644 libpcap-1.8.1/sf-pcap.h create mode 100644 libpcap-1.8.1/sf-pcap.o create mode 100644 libpcap-1.8.1/sockutils.c create mode 100644 libpcap-1.8.1/sockutils.h create mode 100644 libpcap-1.8.1/sunatmpos.h create mode 100644 libpcap-1.8.1/tests/CMakeLists.txt create mode 100644 libpcap-1.8.1/tests/can_set_rfmon_test.c create mode 100644 libpcap-1.8.1/tests/capturetest.c create mode 100644 libpcap-1.8.1/tests/filtertest.c create mode 100644 libpcap-1.8.1/tests/findalldevstest.c create mode 100644 libpcap-1.8.1/tests/opentest.c create mode 100644 libpcap-1.8.1/tests/reactivatetest.c create mode 100644 libpcap-1.8.1/tests/selpolltest.c create mode 100644 libpcap-1.8.1/tests/valgrindtest.c create mode 100644 libpcap-1.8.1/version.c create mode 100644 libpcap-1.8.1/version.o diff --git a/README.md b/README.md index 28c84141..bba9a1c9 100644 --- a/README.md +++ b/README.md @@ -52,10 +52,20 @@ To show the command line options: ## Cross Compiling -An example cross compilation for ARM (C toolchain and libs installation left to the reader as an excercise :D) +An example cross compilation for ARM (requires C ARM toolchain): + # download and cross compile libpcap-1.8.1 for ARM + cd /tmp + export PCAPV=1.8.1 + wget http://www.tcpdump.org/release/libpcap-$PCAPV.tar.gz + tar xvf libpcap-$PCAPV.tar.gz + cd libpcap-$PCAPV + export CC=arm-linux-gnueabi-gcc + ./configure --host=arm-linux --with-pcap=linux + make + # cross compile bettercap-ng cd $GOPATH/src/github.com/evilsocket/bettercap-ng - env CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm make + env CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm CGO_LDFLAGS="-L/tmp/libpcap-$PCAPV" make ## Caplets diff --git a/libpcap-1.8.1.tar.gz b/libpcap-1.8.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e812e0793210295dd58cd88802e2655a362b7b76 GIT binary patch literal 739163 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

    T?w|Er>W5C}pogFU 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 II`k+5z$rS> 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 nUi6tGwcbY1lE3vozgrb19P%dA^W+ literal 0 HcmV?d00001 diff --git a/libpcap-1.8.1/CHANGES b/libpcap-1.8.1/CHANGES new file mode 100644 index 00000000..17840965 --- /dev/null +++ b/libpcap-1.8.1/CHANGES @@ -0,0 +1,837 @@ +Tuesday, Oct. 25, 2016 mcr@sandelman.ca + Summary for 1.8.1 libpcap release + Add a target in Makefile.in for Exuberant Ctags use: 'extags'. + Rename configure.in to configure.ac: autoconf 2.59 + Clean up the name-to-DLT mapping table. + Add some newer DLT_ values: IPMI_HPM_2,ZWAVE_R1_R2,ZWAVE_R3,WATTSTOPPER_DLM,ISO_14443,RDS + Clarify what the return values are for both success and failure. + Many changes to build on windows + Check for the "break the loop" condition in the inner loop for TPACKET_V3. + Fix handling of packet count in the TPACKET_V3 inner loop: GitHub issue #493. + Filter out duplicate looped back CAN frames. + Fix the handling of loopback filters for IPv6 packets. + Add a link-layer header type for RDS (IEC 62106) groups. + Use different intermediate folders for x86 and x64 builds on Windows. + On Linux, handle all CAN captures with pcap-linux.c, in cooked mode. + Removes the need for the "host-endian" link-layer header type. + Compile with '-Wused-but-marked-unused' in devel mode if supported + Have separate DLTs for big-endian and host-endian SocketCAN headers. + Reflect version.h being renamed to pcap_version.h. + Require that version.h be generated: all build procedures we support generate version.h (autoconf, CMake, MSVC)! + Properly check for sock_recv() errors. + Re-impose some of Winsock's limitations on sock_recv(). + Replace sprintf() with pcap_snprintf(). + Fix signature of pcap_stats_ex_remote(). + Initial cmake support for remote packet capture. + Have rpcap_remoteact_getsock() return a SOCKET and supply an "is active" flag. + Clean up {DAG, Septel, Myricom SNF}-only builds. + Do UTF-16-to-ASCII conversion into the right place. + pcap_create_interface() needs the interface name on Linux. + Clean up hardware time stamp support: the "any" device does not support any time stamp types. + Add support for capturing on FreeBSD usbusN interfaces. + Add a LINKTYPE/DLT_ value for FreeBSD USB. + Go back to using PCAP_API on Windows. + CMake support + Add TurboCap support from WinPcap. + Recognize 802.1ad nested VLAN tag in vlan filter. + +Thursday Sep. 3, 2015 guy@alum.mit.edu + Summary for 1.7.5 libpcap release + Man page cleanups. + Add some allocation failure checks. + Fix a number of Linux/ucLinux configure/build issues. + Fix some memory leaks. + Recognize 802.1ad nested VLAN tag in vlan filter. + Fix building Bluetooth Linux Monitor support with BlueZ 5.1+ + +Saturday Jun. 27, 2015 mcr@sandelman.ca + Summary for 1.7.4 libpcap release + Include fix for GitHub issue #424 -- out of tree builds. + +Friday Apr. 10, 2015 guy@alum.mit.edu + Summary for 1.7.3 libpcap release + Work around a Linux bonding driver bug. + +Thursday Feb. 12, 2015 guy@alum.mit.edu/mcr@sandelman.ca + Summary for 1.7.2 libpcap release + Support for filtering Geneve encapsulated packets. + Generalize encapsulation handling, fixing some bugs. + Don't add null addresses to address lists. + Add pcap_dump_open_append() to open for appending. + Fix the swapping of isochronous descriptors in Linux USB. + Attempt to handle TPACKET_V1 with 32-bit userland and 64-bit kernel. + +Wednesday Nov. 12, 2014 guy@alum.mit.edu/mcr@sandelman.ca + Summary for 1.7.0 libpcap release + Fix handling of zones for BPF on Solaris + new DLT for ZWAVE + clarifications for read timeouts. + Use BPF extensions in compiled filters, fixing VLAN filters + some fixes to compilation without stdint.h + EBUSY can now be returned by SNFv3 code. + Fix the range checks in BPF loads + Various DAG fixes. + Various Linux fixes. + +Monday Aug. 12, 2014 guy@alum.mit.edu + Summary for 1.6.2 libpcap release + Don't crash on filters testing a non-existent link-layer type + field. + Fix sending in non-blocking mode on Linux with memory-mapped + capture. + Fix timestamps when reading pcap-ng files on big-endian + machines. + +Saturday Jul. 19, 2014 mcr@sandelman.ca + Summary for 1.6.1 libpcap release + some fixes for the any device + changes for how --enable-XXX (--enable-sniffing, --enable-can) works + +Wednesday Jul. 2, 2014 mcr@sandelman.ca + Summary for 1.6.0 libpcap release + Don't support D-Bus sniffing on OS X + fixes for byte order issues with NFLOG captures + Handle using cooked mode for DLT_NETLINK in activate_new(). + on platforms where you can not capture on down interfaces, do not list them + but: do list interfaces which are down, if you can capture on them! + +Wednesday December 18, 2013 guy@alum.mit.edu +Summary for 1.5.3 libpcap release + Don't let packets that don't match the current filter get to the + application when TPACKET_V3 is used. (GitHub issue #331) + Fix handling of pcap_loop()/pcap_dispatch() with a packet count + of 0 on some platforms (including Linux with TPACKET_V3). + (GitHub issue #333) + Work around TPACKET_V3 deficiency that causes packets to be lost + when a timeout of 0 is specified. (GitHub issue #335) + Man page formatting fixes. + +Wednesday December 4, 2013 guy@alum.mit.edu +Summary for 1.5.2 libpcap release + Fix libpcap to work when compiled with TPACKET_V3 support and + running on a kernel without TPACKET_V3 support. (GitHub + issue #329) + +Wednesday November 20, 2013 guy@alum.mit.edu +Summary for 1.5.1 libpcap release + Report an error, rather than crashing, if an IPv6 address is + used for link-layer filtering. (Wireshark bug 9376) + +Wednesday October 30, 2013 guy@alum.mit.edu +Summary for 1.5.0 libpcap release + TPACKET_V3 support added for Linux + Point users to the the-tcpdump-group repository on GitHub rather + than the mcr repository + Checks added for malloc()/realloc()/etc. failures + Fixed build on Solaris 11 + Support filtering filtering E1 SS7 traffic on MTP2 layer Annex A + Use "ln -s" to link man pages by default + Add support for getting nanosecond-resolution time stamps when + capturing and reading capture files + Many changes to autoconf to deal better with non-GCC compilers + added many new DLT types + +Saturday April 6, 2013 guy@alum.mit.edu +Summary for 1.4.0 libpcap release + Add netfilter/nfqueue interface. + If we don't have support for IPv6 address resolution, support, + in filter expressions, what IPv6 stuff we can. + Fix pcap-config to include -lpthread if canusb support is + present + Try to fix "pcap_parse not defined" problems when --without-flex + and --without-bison are used when you have Flex and Bison + Fix some issues with the pcap_loop man page. + Fix pcap_getnonblock() and pcap_setnonblock() to fill in the + supplied error message buffer + Fix typo that, it appeared, would cause pcap-libdlpi.c not to + compile (perhaps systems with libdlpi also have BPF and use + that instead) + Catch attempts to call pcap_compile() on a non-activated pcap_t + Fix crash on Linux with CAN-USB support without usbfs + Fix addition of VLAN tags for Linux cooked captures + Check for both EOPNOTSUPP and EINVAL after SIOCETHTOOL ioctl, so + that the driver can report either one if it doesn't support + SIOCETHTOOL + Add DLT_INFINIBAND and DLT_SCTP + Describe "proto XXX" and "protochain XXX" in the pcap-filter man + page + Handle either directories, or symlinks to directories, that + correspond to interfaces in /sys/class/net + Fix handling of VLAN tag insertion to check, on Linux 3.x + kernels, for VLAN tag valid flag + Clean up some man pages + Support libnl3 as well as libnl1 and libnl2 on Linux + Fix handling of Bluetooth devices on 3.x Linux kernels + +Friday March 30, 2012. mcr@sandelman.ca +Summary for 1.3.0 libpcap release + Handle DLT_PFSYNC in {FreeBSD, other *BSD+Mac OS X, other}. + Linux: Don't fail if netfilter isn't enabled in the kernel. + Add new link-layer type for NFC Forum LLCP. + Put the CANUSB stuff into EXTRA_DIST, so it shows up in the release tarball. + Add LINKTYPE_NG40/DLT_NG40. + Add DLT_MPEG_2_TS/LINKTYPE_MPEG_2_TS for MPEG-2 transport streams. + [PATCH] Fix AIX-3.5 crash with read failure during stress + AIX fixes. + Introduce --disable-shared configure option. + Added initial support for canusb devices. + Include the pcap(3PCAP) additions as 1.2.1 changes. + many updates to documentation: pcap.3pcap.in + Improve 'inbound'/'outbound' capture filters under Linux. + Note the cleanup of handling of new DLT_/LINKTYPE_ values. + On Lion, don't build for PPC. + For mac80211 devices we need to clean up monitor mode on exit. + +Friday December 9, 2011. guy@alum.mit.edu. +Summary for 1.2.1 libpcap release + Update README file. + Fix typoes in README.linux file. + Clean up some compiler warnings. + Fix Linux compile problems and tests for ethtool.h. + Treat Debian/kFreeBSD and GNU/Hurd as systems with GNU + toolchains. + Support 802.1 QinQ as a form of VLAN in filters. + Treat "carp" as equivalent to "vrrp" in filters. + Fix code generated for "ip6 protochain". + Add some new link-layer header types. + Support capturing NetFilter log messages on Linux. + Clean up some error messages. + Turn off monitor mode on exit for mac80211 interfaces on Linux. + Fix problems turning monitor mode on for non-mac80211 interfaces + on Linux. + Properly fail if /sys/class/net or /proc/net/dev exist but can't + be opened. + Fail if pcap_activate() is called on an already-activated + pcap_t, and add a test program for that. + Fix filtering in pcap-ng files. + Don't build for PowerPC on Mac OS X Lion. + Simplify handling of new DLT_/LINKTYPE_ values. + Expand pcap(3PCAP) man page. + +Sunday July 24, 2011. mcr@sandelman.ca. +Summary for 1.2 libpcap release + All of the changes listed below for 1.1.1 and 1.1.2. + Changes to error handling for pcap_findalldevs(). + Fix the calculation of the frame size in memory-mapped captures. + Add a link-layer header type for STANAG 5066 D_PDUs. + Add a link-layer type for a variant of 3GPP TS 27.010. + Noted real nature of LINKTYPE_ARCNET. + Add a link-layer type for DVB-CI. + Fix configure-script discovery of VLAN acceleration support. + see http://netoptimizer.blogspot.com/2010/09/tcpdump-vs-vlan-tags.html + Linux, HP-UX, AIX, NetBSD and OpenBSD compilation/conflict fixes. + Protect against including AIX 5.x's having been included. + Add DLT_DBUS, for raw D-Bus messages. + Treat either EPERM or EACCES as "no soup for you". + Changes to permissions on DLPI systems. + Add DLT_IEEE802_15_4_NOFCS for 802.15.4 interfaces. + +Fri. August 6, 2010. guy@alum.mit.edu. +Summary for 1.1.2 libpcap release + Return DLT_ values, not raw LINKTYPE_ values from + pcap_datalink() when reading pcap-ng files + Add support for "wlan ra" and "wlan ta", to check the RA and TA + of WLAN frames that have them + Don't crash if "wlan addr{1,2,3,4}" are used without 802.11 + headers + Do filtering on USB and Bluetooth capturing + On FreeBSD/SPARC64, use -fPIC - it's apparently necessary + Check for valid port numbers (fit in a 16-bit unsigned field) in + "port" filters + Reject attempts to put savefiles into non-blocking mode + Check for "no such device" for the "get the media types" ioctl + in *BSD + Improve error messages from bpf_open(), and let it do the error + handling + Return more specific errors from pcap_can_set_rfmon(); fix + documentation + Update description fetching code for FreeBSD, fix code for + OpenBSD + Ignore /sys/net/dev files if we get ENODEV for them, not just + ENXIO; fixes handling of bonding devices on Linux + Fix check for a constant 0 argument to BPF_DIV + Use the right version of ar when cross-building + Free any filter set on a savefile when the savefile is closed + Include the CFLAGS setting when configure was run in the + compiler flags + Add support for 802.15.4 interfaces on Linux + +Thu. April 1, 2010. guy@alum.mit.edu. +Summary for 1.1.1 libpcap release + Update CHANGES to reflect more of the changes in 1.1.0. + Fix build on RHEL5. + Fix shared library build on AIX. + +Thu. March 11, 2010. ken@netfunctional.ca/guy@alum.mit.edu. +Summary for 1.1.0 libpcap release + Add SocketCAN capture support + Add Myricom SNF API support + Update Endace DAG and ERF support + Add support for shared libraries on Solaris, HP-UX, and AIX + Build, install, and un-install shared libraries by default; + don't build/install shared libraries on platforms we don't support + Fix building from a directory other than the source directory + Fix compiler warnings and builds on some platforms + Update config.guess and config.sub + Support monitor mode on mac80211 devices on Linux + Fix USB memory-mapped capturing on Linux; it requires a new DLT_ + value + On Linux, scan /sys/class/net for devices if we have it; scan + it, or /proc/net/dev if we don't have /sys/class/net, even if + we have getifaddrs(), as it'll find interfaces with no + addresses + Add limited support for reading pcap-ng files + Fix BPF driver-loading error handling on AIX + Support getting the full-length interface description on FreeBSD + In the lexical analyzer, free up any addrinfo structure we got back + from getaddrinfo(). + Add support for BPF and libdlpi in OpenSolaris (and SXCE) + Hyphenate "link-layer" everywhere + Add /sys/kernel/debug/usb/usbmon to the list of usbmon locations + In pcap_read_linux_mmap(), if there are no frames available, call + poll() even if we're in non-blocking mode, so we pick up + errors, and check for the errors in question. + Note that poll() works on BPF devices is Snow Leopard + If an ENXIO or ENETDOWN is received, it may mean the device has + gone away. Deal with it. + For BPF, raise the default capture buffer size to from 32k to 512k + Support ps_ifdrop on Linux + Added a bunch of #ifdef directives to make wpcap.dll (WinPcap) compile + under cygwin. + Changes to Linux mmapped captures. + Fix bug where create_ring would fail for particular snaplen and + buffer size combinations + Update pcap-config so that it handles libpcap requiring + additional libraries + Add workaround for threadsafeness on Windows + Add missing mapping for DLT_ENC <-> LINKTYPE_ENC + DLT: Add DLT_CAN_SOCKETCAN + DLT: Add Solaris ipnet + Don't check for DLT_IPNET if it's not defined + Add link-layer types for Fibre Channel FC-2 + Add link-layer types for Wireless HART + Add link-layer types for AOS + Add link-layer types for DECT + Autoconf fixes (AIX, HP-UX, OSF/1, Tru64 cleanups) + Install headers unconditionally, and include vlan.h/bluetooth.h if + enabled + Autoconf fixes+cleanup + Support enabling/disabling bluetooth (--{en,dis}able-bluetooth) + Support disabling SITA support (--without-sita) + Return -1 on failure to create packet ring (if supported but + creation failed) + Fix handling of 'any' device, so that it can be opened, and no longer + attempt to open it in Monitor mode + Add support for snapshot length for USB Memory-Mapped Interface + Fix configure and build on recent Linux kernels + Fix memory-mapped Linux capture to support pcap_next() and + pcap_next_ex() + Fixes for Linux USB capture + DLT: Add DLT_LINUX_EVDEV + DLT: Add DLT_GSMTAP_UM + DLT: Add DLT_GSMTAP_ABIS + +Mon. October 27, 2008. ken@netfunctional.ca. Summary for 1.0.0 libpcap release + Compile with IPv6 support by default + Compile with large file support on by default + Add pcap-config script, which deals with -I/-L flags for compiling + DLT: Add IPMB + DLT: Add LAPD + DLT: Add AX25 (AX.25 w/KISS header) + DLT: Add JUNIPER_ST + 802.15.4 support + Variable length 802.11 header support + X2E data type support + SITA ACN Interface support - see README.sita + Support for memory-mapped capture on Linux + Support for zerocopy BPF on platforms that support it + Support for setting buffer size when opening devices + Support for setting monitor mode when opening 802.11 devices + Better support for dealing with VLAN tagging/stripping on Linux + Fix dynamic library support on OSX + Return PCAP_ERROR_IFACE_NOT_UP if the interface isn't 'UP', so applications + can print better diagnostic information + Return PCAP_ERROR_PERM_DENIED if we don't have permission to open a device, so + applications can tell the user they need to go play with permissions + On Linux, ignore ENETDOWN so we can continue to capture packets if the + interface goes down and comes back up again. + On Linux, support new tpacket frame headers (2.6.27+) + On Mac OS X, add scripts for changing permissions on /dev/bpf* and launchd plist + On Solaris, support 'passive mode' on systems that support it + Fixes to autoconf and general build environment + Man page reorganization + cleanup + Autogenerate VERSION numbers better + +Mon. September 10, 2007. ken@xelerance.com. Summary for 0.9.8 libpcap release + Change build process to put public libpcap headers into pcap subir + DLT: Add value for IPMI IPMB packets + DLT: Add value for u10 Networks boards + Require for pf definitions - allows reading of pflog formatted + libpcap files on an OS other than where the file was generated + +Wed. April 25, 2007. ken@xelerance.com. Summary for 0.9.6 libpcap release + + Put the public libpcap headers into a pcap subdirectory in both the + source directory and the target include directory, and have include + files at the top-level directory to include those headers, for + backwards compatibility. + Add Bluetooth support + Add USB capturing support on Linux + Add support for the binary USB sniffing interface in Linux + Add support for new FreeBSD BIOCSDIRECTION ioctl + Add additional filter operations for 802.11 frame types + Add support for filtering on MTP2 frame types + Propagate some changes from the main branch, so the x.9 branch has + all the DLT_ and LINKTYPE_ values that the main branch does + Reserved a DLT_ and SAVEFILE_ value for PPI (Per Packet Info) + encapsulated packets + Add LINKTYPE_ for IEEE 802.15.4, with address fields padded as done + by Linux drivers + Add LINKTYPE_ value corresponding to DLT_IEEE802_16_MAC_CPS. + Add DLT for IEEE 802.16 (WiMAX) MAC Common Part Sublayer + Add DLT for Bluetooth HCI UART transport layer + When building a shared library, build with "-fPIC" on Linux to support x86_64 + Link with "$(CC) -shared" rather than "ld -shared" when building a + ".so" shared library + Add support for autoconf 2.60 + Fixes to discard unread packets when changing filters + Changes to handle name changes in the DAG library resulting from + switching to libtool. + Add support for new DAG ERF types. + Add an explicit "-ldag" when building the shared library, so the DAG + library dependency is explicit. + Mac OSX fixes for dealing with "wlt" devices + Fixes in add_or_find_if() & pcap_findalldevs() to optimize generating + device lists + Fixed a bug in pcap_open_live(). The return value of PacketSetHwFilter + was not checked. + +Tue. September 19, 2006. ken@xelerance.com. Summary for 0.9.5 libpcap release + + Support for LAPD frames with vISDN + Support for ERF on channelized T1/E1 cards via DAG API + Fix capitalization that caused issues crossc compiling on Linux + Better failure detection on PacketGetAdapterNames() + Fixes for MPLS packet generation (link layer) + OP_PACKET now matches the beginning of the packet, instead of + beginning+link-layer + Add DLT/LINKTYPE for carrying FRF.16 Multi-link Frame Relay + Fix allocation of buffer for list of link-layer types + Added a new DLT and LINKTYPE value for ARINC 653 Interpartition Communcation Messages + Fixed a typo in a DLT value: it should start with DLT_ and not LINKTYPE_ + Redefined DLT_CAN20B and LINKTYPE_CAN20B as #190 (as this is the right value for CAN). + Added definition for DLT_A429 and LINKTYPE_A429 as #184. + Added a new DLT and LINKTYPE value for CAN v2.0B frames. + Add support for DLT_JUNIPER_VP. + Don't double-count received packets on Linux systems that + support the PACKET_STATISTICS getsockopt() argument on + PF_PACKET sockets. + Add support for DLT_IEEE802_11 and DLT_IEEE802_11_RADIO link + layers in Windows + Add support to build libpcap.lib and wpcap.dll under Cygnus and + MingW32. + +Mon. September 5, 2005. ken@xelerance.com. Summary for 0.9.4 libpcap release + + Support for radiotap on Linux (Mike Kershaw) + Fixes for HP-UX + Support for additional Juniper link-layer types + Fixes for filters on MPLS-encapsulated packets + "vlan" filter fixed + "pppoed" and "pppoes" filters added; the latter modifies later + parts of the filter expression to look at the PPP headers and + headers in the PPP payload + +Tue. July 5, 2005. ken@xelerance.com. Summary for 0.9.3 libpcap release + + Fixes for compiling on nearly every platform, + including improved 64bit support + MSDOS Support + Add support for sending packets + OpenBSD pf format support + IrDA capture (Linux only) + +Tue. March 30, 2004. mcr@sandelman.ottawa.on.ca. Summary for 3.8.3 release + + Fixed minor problem in gencode.c that would appear on 64-bit + platforms. + Version number is now sane. + +Mon. March 29, 2004. mcr@sandelman.ottawa.on.ca. Summary for 3.8.2 release + + updates for autoconf 2.5 + fixes for ppp interfaces for freebsd 4.1 + pcap gencode can generate code for 802.11, IEEE1394, and pflog. + +Wed. November 12, 2003. mcr@sandelman.ottawa.on.ca. Summary for 0.8 release + + added pcap_findalldevs() + Win32 patches from NetGroup, Politecnico di Torino (Italy) + OpenBSD pf, DLT_PFLOG added + Many changes to ATM support. + lookup pcap_lookupnet() + Added DLT_ARCNET_LINUX, DLT_ENC, DLT_IEEE802_11_RADIO, DLT_SUNATM, + DLT_IP_OVER_FC, DLT_FRELAY, others. + Sigh. More AIX wonderfulness. + Document updates. + Changes to API: pcap_next_ex(), pcap_breakloop(), pcap_dump_flush(), + pcap_list_datalinks(), pcap_set_datalink(), + pcap_lib_version(), pcap_datalink_val_to_name(), + pcap_datalink_name_to_val(), new error returns. + +Tuesday, February 25, 2003. fenner@research.att.com. 0.7.2 release + + Support link types that use 802.2 always, never, and sometimes. + Don't decrease the size of the BPF buffer from the default. + Support frame relay. + Handle 32-bit timestamps in DLPI, and pass the right buffer size. + Handle Linux systems with modern kernel but without + SOL_PACKET in the userland headers. + Linux support for ARPHRD_RAWHDLC. + Handle 32-bit timestamps in snoop. + Support eg (Octane/O2xxx/O3xxx Gigabit) devices. + Add new reserved DLT types. + +Monday October 23, 2001. mcr@sandelman.ottawa.on.ca. Summary for 0.7 release + + Added pcap_findalldevs() call to get list of interfaces in a MI way. + + pcap_stats() has been documented as to what its counters mean on + each platform. + +Tuesday January 9, 2001. guy@alum.mit.edu. Summary for 0.6 release + + New Linux libpcap implementation, which, in 2.2 and later + kernels, uses PF_PACKET sockets and supports kernel packet + filtering (if compiled into the kernel), and supports the "any" + device for capturing on all interfaces. Cleans up promiscuous + mode better on pre-2.2 kernels, and has various other fixes + (handles 2.4 ARPHRD_IEEE802_TR, handles ISDN devices better, + doesn't show duplicate packets on loopback interface, etc.). + + Fixed HP-UX libpcap implementation to correctly get the PPA for + an interface, to allow interfaces to be opened by interface name. + + libpcap savefiles have system-independent link-layer type values + in the header, rather than sometimes platform-dependent DLT_ + values, to make it easier to exchange capture files between + different OSes. + + Non-standard capture files produced by some Linux tcpdumps, e.g. + the one from Red Hat Linux 6.2 and later, can now be read. + + Updated autoconf stock files. + + Filter expressions can filter on VLAN IDs and various OSI + protocols, and work on Token Ring (with non-source-routed + packets). + + "pcap_open_dead()" added to allow compiling filter expressions + to pcap code without opening a capture device or capture file. + + Header files fixed to allow use in C++ programs. + + Removed dependancy on native headers for packet layout. + Removed Linux specific headers that were shipped. + + Security fixes: Strcpy replaced with strlcpy, sprintf replaced + with snprintf. + + Fixed bug that could cause subsequent "pcap_compile()"s to fail + erroneously after one compile failed. + + Assorted other bug fixes. + + README.aix and README.linux files added to describe + platform-specific issues. + + "getifaddrs()" rather than SIOCGIFCONF used, if available. + +v0.5 Sat Jun 10 11:09:15 PDT 2000 + +itojun@iijlab.net +- Brought in KAME IPv6/IPsec bpf compiler. +- Fixes for NetBSD. +- Support added for OpenBSD DLT_LOOP and BSD/OS DLT_C_HDLC (Cisco HDLC), + and changes to work around different BSDs having different DLT_ types + with the same numeric value. + +Assar Westerlund +- Building outside the source code tree fixed. +- Changed to write out time stamps with 32-bit seconds and microseconds + fields, regardless of whether those fields are 32 bits or 64 bits in + the OS's native "struct timeval". +- Changed "pcap_lookupdev()" to dynamically grow the buffer into which + the list of interfaces is read as necessary in order to hold the + entire list. + +Greg Troxel +- Added a new "pcap_compile_nopcap()", which lets you compile a filter + expression into a BPF program without having an open live capture or + capture file. + +v0.4 Sat Jul 25 12:40:09 PDT 1998 + +- Fix endian problem with DLT_NULL devices. From FreeBSD via Bill + Fenner (fenner@parc.xerox.com) + +- Fix alignment problem with FDDI under DLPI. This was causing core + dumps under Solaris. + +- Added configure options to disable flex and bison. Resulted from a + bug report by barnett@grymoire.crd.ge.com (Bruce Barnett). Also added + options to disable gcc and to force a particular packet capture type. + +- Added support for Fore ATM interfaces (qaa and fa) under IRIX. Thanks + to John Hawkinson (jhawk@mit.edu) + +- Change Linux PPP and SLIP to use DLT_RAW since the kernel does not + supply any "link layer" data. + +- Change Linux to use SIOCGIFHWADDR ioctl to determine link layer type. + Thanks to Thomas Sailer (sailer@ife.ee.ethz.ch) + +- Change IRIX PPP to use DLT_RAW since the kernel does not supply any + "link layer" data. + +- Modified to support the new BSD/OS 2.1 PPP and SLIP link layer header + formats. + +- Added some new SGI snoop interface types. Thanks to Steve Alexander + (sca@refugee.engr.sgi.com) + +- Fixes for HP-UX 10.20 (which is similar to HP-UX 9). Thanks to + Richard Allen (ra@hp.is) and Steinar Haug (sthaug@nethelp.no) + +- Fddi supports broadcast as reported by Jeff Macdonald + (jeff@iacnet.com). Also correct ieee802 and arcnet. + +- Determine Linux pcap buffer size at run time or else it might not be + big enough for some interface types (e.g. FDDI). Thanks to Jes + Sorensen (Jes.Sorensen@cern.ch) + +- Fix some linux alignment problems. + +- Document promisc argument to pcap_open_live(). Reported by Ian Marsh + (ianm@sics.se) + +- Support Metricom radio packets under Linux. Thanks to Kevin Lai + (laik@gunpowder.stanford.edu) + +- Bind to interface name under Linux to avoid packets from multiple + interfaces on multi-homed hosts. Thanks to Kevin Lai + (laik@gunpowder.stanford.edu) + +- Change L_SET to SEEK_SET for HP-UX. Thanks to Roland Roberts + (rroberts@muller.com) + +- Fixed an uninitialized memory reference found by Kent Vander Velden + (graphix@iastate.edu) + +- Fixed lex pattern for IDs to allow leading digits. As reported by + Theo de Raadt (deraadt@cvs.openbsd.org) + +- Fixed Linux include file problems when using GNU libc. + +- Ifdef ARPHRD_FDDI since not all versions of the Linux kernel have it. + Reported reported by Eric Jacksch (jacksch@tenebris.ca) + +- Fixed bug in pcap_dispatch() that kept it from returning on packet + timeouts. + +- Changed ISLOOPBACK() macro when IFF_LOOPBACK isn't available to check + for "lo" followed by an eos or digit (newer versions of Linux + apparently call the loopback "lo" instead of "lo0"). + +- Fixed Linux networking include files to use ints instead of longs to + avoid problems with 64 bit longs on the alpha. Thanks to Cristian + Gafton (gafton@redhat.com) + +v0.3 Sat Nov 30 20:56:27 PST 1996 + +- Added Linux support. + +- Fixed savefile bugs. + +- Solaris x86 fix from Tim Rylance (t.rylance@elsevier.nl) + +- Add support for bpf kernel port filters. + +- Remove duplicate atalk protocol table entry. Thanks to Christian + Hopps (chopps@water.emich.edu) + +- Fixed pcap_lookupdev() to ignore nonexistent devices. This was + reported to happen under BSD/OS by David Vincenzetti + (vince@cryptonet.it) + +- Avoid solaris compiler warnings. Thanks to Bruce Barnett + (barnett@grymoire.crd.ge.com) + +v0.2.1 Sun Jul 14 03:02:26 PDT 1996 + +- Fixes for HP-UX 10. Thanks in part to to Thomas Wolfram + (wolf@prz.tu-berlin.de) and Rick Jones (raj@hpisrdq.cup.hp.com) + +- Added support for SINIX. Thanks to Andrej Borsenkow + (borsenkow.msk@sni.de) + +- Fixes for AIX (although this system is not yet supported). Thanks to + John Hawkinson (jhawk@mit.edu) + +- Use autoconf's idea of the top level directory in install targets. + Thanks to John Hawkinson. + +- Add missing autoconf packet capture result message. Thanks to Bill + Fenner (fenner@parc.xerox.com) + +- Fixed padding problems in the pf module. + +- Fixed some more alignment problems on the alpha. + +- Added explicit netmask support. Thanks to Steve Nuchia + (steve@research.oknet.com) + +- Fixed to handle raw ip addresses such as 0.0.0.1 without "left + justifing" + +- Add "sca" keyword (for DEC cluster services) as suggested by Terry + Kennedy (terry@spcvxa.spc.edu) + +- Add "atalk" keyword as suggested by John Hawkinson. + +- Add "igrp" keyword. + +- Fixed HID definition in grammar.y to be a string, not a value. + +- Use $CC when checking gcc version. Thanks to Carl Lindberg + (carl_lindberg@blacksmith.com) + +- Removed obsolete reference to pcap_immediate() from the man page. + Michael Stolarchuk (mts@terminator.rs.itd.umich.edu) + +- DLT_NULL has a 4 byte family header. Thanks to Jeffrey Honig + (jch@bsdi.com) + +v0.2 Sun Jun 23 02:28:42 PDT 1996 + +- Add support for HP-UX. Resulted from code contributed by Tom Murray + (tmurray@hpindck.cup.hp.com) and Philippe-Andri Prindeville + (philipp@res.enst.fr) + +- Update INSTALL with a reminder to install include files. Thanks to + Mark Andrews (mandrews@aw.sgi.com) + +- Fix bpf compiler alignment bug on the alpha. + +- Use autoconf to detect architectures that can't handle misaligned + accesses. + +- Added loopback support for snoop. Resulted from report Steve + Alexander (sca@engr.sgi.com) + +v0.1 Fri Apr 28 18:11:03 PDT 1995 + +- Fixed compiler and optimizer bugs. The BPF filter engine uses unsigned + comparison operators, while the code generator and optimizer assumed + signed semantics in several places. Thanks to Charlie Slater + (cslater@imatek.com) for pointing this out. + +- Removed FDDI ifdef's, they aren't really needed. Resulted from report + by Gary Veum (veum@boa.gsfc.nasa.gov). + +- Add pcap-null.c which allows offline use of libpcap on systems that + don't support live package capture. This feature resulting from a + request from Jan van Oorschot (j.p.m.voorschot@et.tudelft.nl). + +- Make bpf_compile() reentrant. Fix thanks to Pascal Hennequin + (Pascal.Hennequin@hugo.int-evry.fr). + +- Port to GNU autoconf. + +- Fix pcap-dlpi.c to work with isdn. Resulted from report by Flemming + Johansen (fsj@csd.cri.dk). + +- Handle multi-digit interface unit numbers (aka ppa's) under dlpi. + Resulted from report by Daniel Ehrlich (ehrlich@cse.psu.edu). + +- Fix pcap-dlpi.c to work in non-promiscuous mode. Resulted from report + by Jeff Murphy (jcmurphy@acsu.buffalo.edu). + +- Add support for "long jumps". Thanks to Jeffrey Mogul + (mogul@pa.dec.com). + +- Fix minor problems when compiling with BDEBUG as noticed by Scott + Bertilson (scott@unet.umn.edu). + +- Declare sys_errlist "const char *const" to avoid problems under + FreeBSD. Resulted from report by jher@eden.com. + +v0.0.6 Fri Apr 28 04:07:13 PDT 1995 + +- Add missing variable declaration missing from 0.0.6 + +v0.0.5 Fri Apr 28 00:22:21 PDT 1995 + +- Workaround for problems when pcap_read() returns 0 due to the timeout + expiring. + +v0.0.4 Thu Apr 20 20:41:48 PDT 1995 + +- Change configuration to not use gcc v2 flags with gcc v1. + +- Fixed a bug in pcap_next(); if pcap_dispatch() returns 0, pcap_next() + should also return 0. Thanks to Richard Stevens (rstevens@noao.edu). + +- Fixed configure to test for snoop before dlpi to avoid problems under + IRIX 5. Thanks to J. Eric Townsend (jet@abulafia.genmagic.com). + +- Hack around deficiency in Ultrix's make. + +- Fix two bugs related to the Solaris pre-5.3.2 bufmod bug; handle + savefiles that have more than snapshot bytes of data in them (so we + can read old savefiles) and avoid writing such files. + +- Added checkioctl which is used with gcc to check that the + "fixincludes" script has been run. + +v0.0.3 Tue Oct 18 18:13:46 PDT 1994 + +- Fixed configure to test for snoop before dlpi to avoid problems under + IRIX 5. Thanks to J. Eric Townsend (jet@abulafia.genmagic.com). + +v0.0.2 Wed Oct 12 20:56:37 PDT 1994 + +- Implement timeout in the dlpi pcap_open_live(). Thanks to Richard + Stevens. + +- Determine pcap link type from dlpi media type. Resulted from report + by Mahesh Jethanandani (mahesh@npix.com). + +v0.0.1 Fri Jun 24 14:50:57 PDT 1994 + +- Fixed bug in nit_setflags() in pcap-snit.c. The streams ioctl timeout + wasn't being initialized sometimes resulting in an "NIOCSFLAGS: + Invalid argument" error under OSF/1. Reported by Matt Day + (mday@artisoft.com) and Danny Mitzel (dmitzel@whitney.hitc.com). + +- Turn on FDDI support by default. + +v0.0 Mon Jun 20 19:20:16 PDT 1994 + +- Initial release. + +- Fixed bug with greater/less keywords, reported by Mark Andrews + (mandrews@alias.com). + +- Fix bug where '|' was defined as BPF_AND instead of BPF_OR, reported + by Elan Amir (elan@leeb.cs.berkeley.edu). + +- Machines with little-endian byte ordering are supported thanks to + Jeff Mogul. + +- Add hack for version 2.3 savefiles which don't have caplen and len + swapped thanks to Vern Paxson. + +- Added "&&" and "||" aliases for "and" and "or" thanks to Vern Paxson. + +- Added length, inbound and outbound keywords. diff --git a/libpcap-1.8.1/CMakeLists.txt b/libpcap-1.8.1/CMakeLists.txt new file mode 100644 index 00000000..0ed8b612 --- /dev/null +++ b/libpcap-1.8.1/CMakeLists.txt @@ -0,0 +1,520 @@ +cmake_minimum_required( VERSION 2.8.8 ) + +project( pcap ) +# +# Call the library "wpcap" on Windows, for backwards compatibility. +# +if( WIN32 ) + set( LIBRARY_NAME wpcap ) +else() + set( LIBRARY_NAME pcap ) +endif() + +################################################################### +# Parameters +################################################################### + +option (INET6 "Enable IPv6" ON) +if( MSVC ) + option (USE_STATIC_RT "Use static Runtime" ON) +endif( MSVC ) +option (BUILD_SHARED_LIBS "Build shared libraries" ON) +if( WIN32 ) + set(PACKET_DLL_DIR "" CACHE PATH "Path to directory with include and lib subdirectories for packet.dll") +endif( WIN32 ) + +# +# XXX - this should be an option, defaulting to "yes" for Windows and to +# "no", for now, on UN*X. +# +if( WIN32 ) + set( HAVE_REMOTE 1 ) +endif( WIN32 ) + +###################################### +# Project settings +###################################### + +add_definitions( -DHAVE_CONFIG_H ) + +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${pcap_SOURCE_DIR} +) + +if( WIN32 ) + if( NOT "${PACKET_DLL_DIR}" STREQUAL "" ) + include_directories("${PACKET_DLL_DIR}/Include") + if( CMAKE_CL_64 ) + link_directories("${PACKET_DLL_DIR}/Lib/x64") + else( CMAKE_CL_64 ) + link_directories("${PACKET_DLL_DIR}/Lib") + endif( CMAKE_CL_64 ) + endif() + include_directories( + ../Common/ + Win32/Include + ) +endif( WIN32) + +add_definitions( -DBUILDING_PCAP ) + +if( MSVC ) + add_definitions( -D__STDC__ ) + add_definitions( -D_CRT_SECURE_NO_WARNINGS ) + add_definitions( "-D_U_=" ) +elseif( CMAKE_COMPILER_IS_GNUCXX ) + add_definitions( "-D_U_=__attribute__((unused))" ) +else(MSVC) + add_definitions( "-D_U_=" ) +endif( MSVC ) + +if( MSVC ) + if (USE_STATIC_RT) + MESSAGE( STATUS "Use STATIC runtime" ) + set(NAME_RT MT) + set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT") + set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT") + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") + set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") + + set (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT") + set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT") + set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd") + else (USE_STATIC_RT) + MESSAGE( STATUS "Use DYNAMIC runtime" ) + set(NAME_RT MD) + set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MD") + set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD") + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") + set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") + + set (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MD") + set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MD") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD") + set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd") + endif (USE_STATIC_RT) +endif( MSVC ) + +################################################################### +# Detect available platform features +################################################################### + +include(CheckIncludeFile) +include(CheckFunctionExists) +include(CheckStructHasMember) +include(CheckTypeSize) + +# +# Header files. +# +check_include_file( inttypes.h HAVE_INTTYPES_H ) +check_include_file( stdint.h HAVE_STDINT_H ) +check_include_file( unistd.h HAVE_UNISTD_H ) +if( NOT HAVE_UNISTD_H ) + add_definitions( -DYY_NO_UNISTD_H ) +endif( NOT HAVE_UNISTD_H ) +check_include_file( bitypes.h HAVE_SYS_BITYPES_H ) +check_include_file( limits.h HAVE_LIMITS_H ) + +# +# Functions. +# +check_function_exists( strerror HAVE_STRERROR ) +check_function_exists( strlcpy HAVE_STRLCPY ) +check_function_exists( snprintf HAVE_SNPRINTF ) +check_function_exists( vsnprintf HAVE_VSNPRINTF ) +check_function_exists( strtok_r HAVE_STRTOK_R ) + +if (WIN32) + # + # Check for Windows-only functions, such as packet.dll functions. + # + check_function_exists( PacketIsLoopbackAdapter HAVE_PACKET_IS_LOOPBACK_ADAPTER ) +endif() + +# +# Data types. +# +# XXX - there's no check_struct() macro that's like check_struct_has_member() +# except that it only checks for the existence of the structure type, +# so we use check_struct_has_member() and look for ss_family. +# +check_struct_has_member("struct sockaddr_storage" ss_family sys/socket.h HAVE_SOCKADDR_STORAGE) +set(CMAKE_EXTRA_INCLUDE_FILES unistd.h sys/socket.h) +check_type_size("socklen_t" SOCKLEN_T) +set(CMAKE_EXTRA_INCLUDE_FILES unistd.h) + +# +# Structure fields. +# +check_struct_has_member("struct sockaddr" sa_len sys/socket.h HAVE_SOCKADDR_SA_LEN ) + +if( INET6 ) + MESSAGE( STATUS "Use IPv6" ) +endif( INET6 ) + +if( WIN32 ) + add_definitions( -DHAVE_ADDRINFO ) +endif( WIN32 ) + +###################################### +# External dependencies +###################################### + +###################################### +# Input files +###################################### + +set(PROJECT_SOURCE_LIST_C + bpf_dump.c + bpf_image.c + etherent.c + fad-helpers.c + gencode.c + inet.c + nametoaddr.c + optimize.c + pcap-common.c + pcap.c + savefile.c + sf-pcap-ng.c + sf-pcap.c + bpf/net/bpf_filter.c +) + +if( WIN32 ) + set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} missing/win_snprintf.c ) +else() + if( NOT HAVE_SNPRINTF ) + set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} missing/snprintf.c ) + endif( NOT HAVE_SNPRINTF ) + if( NOT HAVE_STRTOK_R ) + set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} missing/strtok_r.c ) + endif( NOT HAVE_STRTOK_R ) +endif( WIN32 ) + +if( HAVE_REMOTE ) + set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} + pcap-new.c pcap-rpcap.c sockutils.c) +endif( HAVE_REMOTE ) + +# +# Determine the main pcap-XXX.c file to use. +# +if( WIN32 ) + # + # WinPcap. + # + set( PCAP_TYPE win32 ) +else() + # + # UN*X - figure out what type of packet capture mechanism we + # have. + # + if( EXISTS /dev/bpf ) + # + # Cloning BPF device. + # + set( PCAP_TYPE bpf ) + AC_DEFINE(HAVE_CLONING_BPF,1,[define if you have a cloning BPF device]) + elseif( EXISTS /dev/bpf0 ) + set( PCAP_TYPE bpf ) + + # + # XXX - many more BPF checks. + # + elseif( EXISTS /usr/include/net/pfilt.h ) + # + # DEC OSF/1, Digital UNIX, Tru64 UNIX + # + set( PCAP_TYPE pf ) + elseif( EXISTS /dev/enet ) + set( PCAP_TYPE enet ) + elseif( EXISTS /dev/nit ) + set( PCAP_TYPE snit ) + elseif( EXISTS /usr/include/sys/net/nit.h ) + set( PCAP_TYPE nit ) + elseif( EXISTS /usr/include/linux/socket.h ) + set( PCAP_TYPE linux ) + + # + # Do we have the wireless extensions? + # + check_include_file( linux/wireless.h HAVE_LINUX_WIRELESS_H ) + + # + # XXX - many more Linux checks. + # + elseif( EXISTS /usr/include/net/raw.h ) + set( PCAP_TYPE snoop ) + elseif( EXISTS /usr/include/odmi.h ) + # + # On AIX, the BPF devices might not yet be present - they're + # created the first time libpcap runs after booting. + # We check for odmi.h instead. + # + set( PCAP_TYPE bpf ) + elseif( /usr/include/sys/dlpi.h ) + set( PCAP_TYPE dlpi ) + + # + # XXX - many more DLPI checks. + # + else() + set( PCAP_TYPE null ) + endif() +endif( WIN32 ) +message(STATUS "Packet capture mechanism type: ${PCAP_TYPE}") +set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} pcap-${PCAP_TYPE}.c) + +# +# Now figure out how we get a list of interfaces and addresses, +# if we support capturing. Don't bother if we don't support +# capturing. +# +if( NOT WIN32 ) + # + # UN*X - figure out what type of interface list mechanism we + # have. + # + if( ${PCAP_TYPE} STREQUAL "null" ) + # + # We can't capture, so we can't open any capture + # devices, so we won't return any interfaces. + # + set( FINDALLDEVS_TYPE null ) + else() + check_function_exists( getifaddrs HAVE_GETIFADDRS ) + if( ${HAVE_GETIFADDRS} ) + # + # We have "getifaddrs()"; make sure we have + # as well, just in case some platform is really weird. + # + check_include_file( ifaddrs.h HAVE_IFADDRS_H ) + if( ${HAVE_IFADDRS_H} ) + # + # We have the header, so we use "getifaddrs()" to + # get the list of interfaces. + # + set( FINDALLDEVS_TYPE getad ) + else() + # + # We don't have the header - give up. + # XXX - we could also fall back on some other + # mechanism, but, for now, this'll catch this + # problem so that we can at least try to figure + # out something to do on systems with "getifaddrs()" + # but without "ifaddrs.h", if there is something + # we can do on those systems. + # + message(FATAL_ERROR "Your system has getifaddrs() but doesn't have a usable ." ) + endif() + else() + # + # Well, we don't have "getifaddrs()", so we have to use + # some other mechanism; determine what that mechanism is. + # + # The first thing we use is the type of capture mechanism, + # which is somewhat of a proxy for the OS we're using. + # + if( ${PCAP_TYPE} STREQUAL "dlpi" OR ${PCAP_TYPE} STREQUAL "libdlpi" ) + # + # This might be Solaris 8 or later, with + # SIOCGLIFCONF, or it might be some other OS + # or some older version of Solaris, with + # just SIOCGIFCONF. + # + try_compile( HAVE_SIOCGLIFCONF ${CMAKE_CURRENT_BINARY_DIR} "${pcap_SOURCE_DIR}/config/have_siocglifconf.c" ) + message( STATUS "HAVE_SIOCGLIFCONF = ${HAVE_SIOCGLIFCONF}" ) + if( HAVE_SIOCGLIFCONF ) + set( FINDALLDEVS_TYPE glifc ) + else() + set( FINDALLDEVS_TYPE gifc ) + endif() + else() + # + # Assume we just have SIOCGIFCONF. + # (XXX - on at least later Linux kernels, there's + # another mechanism, and we should be using that + # instead.) + # + set( FINDALLDEVS_TYPE gifc ) + endif() + endif() + endif() + message(STATUS "Find-interfaces mechanism type: ${FINDALLDEVS_TYPE}") + set( PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} fad-${FINDALLDEVS_TYPE}.c ) +endif() + +file(GLOB PROJECT_SOURCE_LIST_CORE_H + *.h + pcap/*.h +) +set( PROJECT_SOURCE_LIST_H ${PROJECT_SOURCE_LIST_H} ${PROJECT_SOURCE_LIST_CORE_H} ) + +if( WIN32 ) + file(GLOB PROJECT_SOURCE_LIST_WIN32_H + Win32/Include/*.h + ) + set( PROJECT_SOURCE_LIST_H ${PROJECT_SOURCE_LIST_H} ${PROJECT_SOURCE_LIST_WIN32_H} ) +endif( WIN32 ) + +# +# {Flex} and YACC/Berkeley YACC/Bison. +# From a mail message to the CMake mailing list by Andy Cedilnik of +# Kitware. +# + +# +# Try to find Flex, a Windows version of Flex, or Lex. +# +find_program(LEX_EXECUTABLE NAMES flex win_flex lex) +if( ${LEX_EXECUTABLE} STREQUAL "LEX_EXECUTABLE-NOTFOUND" ) + message(FATAL_ERROR "Neither flex nor win_flex nor lex was found." ) +endif() +message(STATUS "Lexical analyzer generator: ${LEX_EXECUTABLE}") + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/scanner.c ${CMAKE_CURRENT_BINARY_DIR}/scanner.h + SOURCE ${pcap_SOURCE_DIR}/scanner.l + COMMAND ${LEX_EXECUTABLE} -P pcap_ --header-file=scanner.h --nounput -o${CMAKE_CURRENT_BINARY_DIR}/scanner.c ${pcap_SOURCE_DIR}/scanner.l + DEPENDS ${pcap_SOURCE_DIR}/scanner.l +) + +# +# Since scanner.c does not exist yet when cmake is run, mark +# it as generated. +# +# Since scanner.c includes grammar.h, mark that as a dependency. +# +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/scanner.c PROPERTIES + GENERATED TRUE + OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/scanner.h +) + +# +# Add scanner.c to the list of sources. +# +#set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} ${CMAKE_CURRENT_BINARY_DIR}/scanner.c) + +# +# Try to find YACC or Bison. +# +find_program(YACC_EXECUTABLE NAMES bison win_bison byacc yacc) +if( ${YACC_EXECUTABLE} STREQUAL "YACC_EXECUTABLE-NOTFOUND" ) + message(FATAL_ERROR "Neither bison nor win_bison nor byacc nor yacc was found." ) +endif() +message(STATUS "Parser generator: ${YACC_EXECUTABLE}") + +# +# Create custom command for the scanner. +# Find out whether it's Bison or notby looking at the last component +# of the path (without a .exe extension, if this is Windows). +# +get_filename_component(YACC_NAME ${YACC_EXECUTABLE} NAME_WE) +if( "${YACC_NAME}" STREQUAL "bison" OR "${YACC_NAME}" STREQUAL "win_bison" ) + set( YACC_COMPATIBILITY_FLAG "-y" ) +endif() +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/grammar.c ${CMAKE_CURRENT_BINARY_DIR}/grammar.h + SOURCE ${pcap_SOURCE_DIR}/grammar.y + COMMAND ${YACC_EXECUTABLE} ${YACC_COMPATIBILITY_FLAG} -p pcap_ -o ${CMAKE_CURRENT_BINARY_DIR}/grammar.c -d ${pcap_SOURCE_DIR}/grammar.y + DEPENDS ${pcap_SOURCE_DIR}/grammar.y +) + +# +# Since grammar.c does not exists yet when cmake is run, mark +# it as generated. +# +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/grammar.c PROPERTIES + GENERATED TRUE +) + +# +# Add grammar.c to the list of sources. +# +#set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} ${CMAKE_CURRENT_BINARY_DIR}/grammar.c) + +if( WIN32 ) + # + # CMake does not love Windows. + # + file(TO_NATIVE_PATH "${pcap_SOURCE_DIR}/GenVersion.bat" GenVersion_path) + file(TO_NATIVE_PATH "${pcap_SOURCE_DIR}/VERSION" VERSION_path) + file(TO_NATIVE_PATH "${pcap_SOURCE_DIR}/pcap_version.h.in" version_h_in_path) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h" version_h_path) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h + SOURCE ${pcap_SOURCE_DIR}/VERSION ${pcap_SOURCE_DIR}/pcap_version.h.in + COMMAND ${GenVersion_path} ${VERSION_path} ${version_h_in_path} ${version_h_path} + DEPENDS ${pcap_SOURCE_DIR}/VERSION ${pcap_SOURCE_DIR}/pcap_version.h.in + ) +else( WIN32 ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.c + SOURCE ${pcap_SOURCE_DIR}/VERSION + COMMAND ${pcap_SOURCE_DIR}/gen_version_c.sh ${pcap_SOURCE_DIR}/VERSION ${CMAKE_CURRENT_BINARY_DIR}/version.c + DEPENDS ${pcap_SOURCE_DIR}/VERSION + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h + SOURCE ${pcap_SOURCE_DIR}/VERSION + COMMAND ${pcap_SOURCE_DIR}/gen_version_header.sh ${pcap_SOURCE_DIR}/VERSION ${pcap_SOURCE_DIR}/pcap_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h + DEPENDS ${pcap_SOURCE_DIR}/VERSION + ) + + # + # Since version.c does not exists yet when cmake is run, mark + # it as generated. + # + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/version.c PROPERTIES + GENERATED TRUE + ) + + # + # Add version.c to the list of sources. + # + set(PROJECT_SOURCE_LIST_C ${PROJECT_SOURCE_LIST_C} ${CMAKE_CURRENT_BINARY_DIR}/version.c) +endif( WIN32 ) + +# +# Since pcap_version.h does not exists yet when cmake is run, mark +# it as generated. +# +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h PROPERTIES + GENERATED TRUE +) + +# +# Add pcap_version.h to the list of headers. +# +set(PROJECT_SOURCE_LIST_H ${PROJECT_SOURCE_LIST_H} ${CMAKE_CURRENT_BINARY_DIR}/pcap_version.h) + +source_group("Source Files" FILES ${PROJECT_SOURCE_LIST_C}) +source_group("Header Files" FILES ${PROJECT_SOURCE_LIST_H}) + +###################################### +# Register targets +###################################### + +add_library(${LIBRARY_NAME} + ${PROJECT_SOURCE_LIST_C} + ${CMAKE_CURRENT_BINARY_DIR}/grammar.c + ${CMAKE_CURRENT_BINARY_DIR}/scanner.c + ${PROJECT_SOURCE_LIST_H} +) + +if( WIN32 ) + target_link_libraries ( ${LIBRARY_NAME} + packet + ws2_32 + ) +endif( WIN32 ) + +###################################### +# Write out the config.h file +###################################### + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) diff --git a/libpcap-1.8.1/CREDITS b/libpcap-1.8.1/CREDITS new file mode 100644 index 00000000..b40152f5 --- /dev/null +++ b/libpcap-1.8.1/CREDITS @@ -0,0 +1,180 @@ +This file lists people who have contributed to libpcap: + +The current maintainers: + Bill Fenner + Denis Ovsienko + Fulvio Risso + Guy Harris + Hannes Gredler + Michael Richardson + Francois-Xavier Le Bail + +Additional people who have contributed patches: + + Akos Vandra + Alan Bawden + Albert Chin + Alexander 'Leo' Bergolth + Alexey Kuznetsov + Alon Bar-Lev + Andres Perera + Andrew Brown + + Ani Sinha + Antti Kantee + Arien Vijn + Arkadiusz Miskiewicz + Armando L. Caro Jr. + Assar Westerlund + Bill Parker + Brent Cook + Brian Ginsbach + Charles M. Hannum + Chris G. Demetriou + Chris Lightfoot + Chris Maynard + Chris Pepper + Christian Bell + Christian Peron + Christian Svensson + Daniele Orlandi + Darren Lim + Darren Reed + David Clark + David Kaelbling + David Ward + David Young + Dean Gaudet + dhruv + Don Ebright + Dug Song + Dustin Spicuzza + dzejarczech + Edward Sheldrake + Eric Anderson + Erik de Castro Lopo + Felix Obenhuber + Florent Drouin + Franz Schaefer + frederich + Fulko Hew + Fumiyuki Shimizu + Gabor Tatarka + Garrett Cooper + George Neville-Neil + Gianluca Varenni + Gilbert Hoyek + Gisle Vanem + Graeme Hewson + Gregor Maier + Greg Stark + Greg Troxel + Guillaume Pelat + Gustavo Zacarias + Hagen Paul Pfeifer + Henri Doreau + Hyung Sik Yoon + Igor Khristophorov + Jakub Zawadzki + Jan-Philip Velders + Jason R. Thorpe + Javier Achirica + Jean-Louis Charton + Jean Tourrilhes + Jefferson Ogata + Jesper Dangaard Brouer + Jesper Peterson + Jesse Gross + Jiri Slaby + Joerg Mayer + John Bankier + Jon Lindgren + Jon Smirl + Jorge Boncompte [DTI2] + Juergen Schoenwaelder + Julien Moutinho + Jung-uk Kim + Kazushi Sugyo + Klaus Klein + Koryn Grant + Kris Katterjohn + Krzysztof Halasa + Lorenzo Cavallaro + Loris Degioanni + Love Hörnquist-Åstrand + Luis MartinGarcia + Maciej W. Rozycki + Mansour Behabadi + Marcus Felipe Pereira + Mark C. Brown + Mark Johnston + Mark Pizzolato + Markus Mayer + Martin Husemann + Márton Németh + Matthew Luckie + Max Laier + Michal Labedzki + Michal Sekletar + Mike Frysinger + Mike Kershaw + Mike Wiacek + Miroslav Lichvar + Monroe Williams + Nicolas Dade + Niko Delarich + N. Leiten + + Octavian Cerna + Olaf Kirch + Ollie Wild + Onno van der Linden + Paolo Abeni + Patrick Marie + Patrick McHardy + Paul Mundt + Pavel Kankovsky + Pawel Pokrywka + Peter Fales + Peter Jeremy + Peter Volkov + Phil Wood + Rafal Maszkowski + + Richard Stearn + Rick Jones + Robert Edmonds + Roberto Mariani + Romain Francoise + Sagun Shakya + Scott Barron + Scott Gifford + Scott Mcmillan + Sebastian Krahmer + Sebastien Roy + Sepherosa Ziehau + Shaun Clowes + Solomon Peachy + Stefan Hudson + Stephen Donnelly + Takashi Yamamoto + Tanaka Shin-ya + Tobias Poschwatta + Tony Li + Torsten Landschoff + Uns Lider + Uwe Girlich + Wesley Shields + Xianjie Zhang + Xin Li + Yen Yen Lim + Yoann Vandoorselaere + Yvan Vanhullebus + +The original LBL crew: + Steve McCanne + Craig Leres + Van Jacobson + +Past maintainers: + Jun-ichiro itojun Hagino Also see: http://www.wide.ad.jp/itojun-award/ diff --git a/libpcap-1.8.1/ChmodBPF/ChmodBPF b/libpcap-1.8.1/ChmodBPF/ChmodBPF new file mode 100755 index 00000000..ee371218 --- /dev/null +++ b/libpcap-1.8.1/ChmodBPF/ChmodBPF @@ -0,0 +1,33 @@ +#! /bin/sh + +. /etc/rc.common + +StartService () +{ + # + # Unfortunately, Mac OS X's devfs is based on the old FreeBSD + # one, not the current one, so there's no way to configure it + # to create BPF devices with particular owners or groups. + # This startup item will make it owned by the admin group, + # with permissions rw-rw----, so that anybody in the admin + # group can use programs that capture or send raw packets. + # + # Change this as appropriate for your site, e.g. to make + # it owned by a particular user without changing the permissions, + # so only that user and the super-user can capture or send raw + # packets, or give it the permissions rw-r-----, so that + # only the super-user can send raw packets but anybody in the + # admin group can capture packets. + # + chgrp admin /dev/bpf* + chmod g+rw /dev/bpf* +} + +StopService () +{ + return 0; +} + +RestartService () { StartService; } + +RunService "$1" diff --git a/libpcap-1.8.1/ChmodBPF/StartupParameters.plist b/libpcap-1.8.1/ChmodBPF/StartupParameters.plist new file mode 100644 index 00000000..cba21664 --- /dev/null +++ b/libpcap-1.8.1/ChmodBPF/StartupParameters.plist @@ -0,0 +1,4 @@ +{ + Description = "Change BPF permissions"; + Provides = ("ChmodBPF"); +} diff --git a/libpcap-1.8.1/GenVersion.bat b/libpcap-1.8.1/GenVersion.bat new file mode 100644 index 00000000..babf3737 --- /dev/null +++ b/libpcap-1.8.1/GenVersion.bat @@ -0,0 +1,23 @@ +REM +REM Automatically generate pcap_version.h based on pcap_version.h.in +REM for Windows +REM The version string comes from VERSION +REM @echo off +REM + +setlocal enableextensions disabledelayedexpansion + +set "search=%%%%LIBPCAP_VERSION%%%%" +set /p replace=<%1 + +if exist %3 del %3 2>nul + +for /f "delims=" %%i in ('type %2' ) do ( + set "line=%%i" + setlocal enabledelayedexpansion + set "line=!line:%search%=%replace%!" + >>%3 echo(!line! + endlocal +) + +echo pcap_version.h generated diff --git a/libpcap-1.8.1/INSTALL.txt b/libpcap-1.8.1/INSTALL.txt new file mode 100644 index 00000000..f305aa2b --- /dev/null +++ b/libpcap-1.8.1/INSTALL.txt @@ -0,0 +1,374 @@ +To build libpcap, run "./configure" (a shell script). The configure +script will determine your system attributes and generate an +appropriate Makefile from Makefile.in. Next run "make". If everything +goes well you can su to root and run "make install". However, you need +not install libpcap if you just want to build tcpdump; just make sure +the tcpdump and libpcap directory trees have the same parent +directory. + +If configure says: + + configure: warning: cannot determine packet capture interface + configure: warning: (see INSTALL for more info) + +then your system either does not support packet capture or your system +does support packet capture but libpcap does not support that +particular type. (If you have HP-UX, see below.) If your system uses a +packet capture not supported by libpcap, please send us patches; don't +forget to include an autoconf fragment suitable for use in +configure.ac. + +It is possible to override the default packet capture type, although +the circumstance where this works are limited. For example if you have +installed bpf under SunOS 4 and wish to build a snit libpcap: + + ./configure --with-pcap=snit + +Another example is to force a supported packet capture type in the case +where the configure scripts fails to detect it. + +You will need an ANSI C compiler to build libpcap. The configure script +will abort if your compiler is not ANSI compliant. If this happens, use +the generally available GNU C compiler (GCC). + +You will need either Flex 2.5.31 or later, or a version of Lex +compatible with it (if any exist), to build libpcap. The configure +script will abort if there isn't any such program. If you have an older +version of Flex, or don't have a compatible version of Lex, the current +version of flex is available at flex.sourceforge.net. + +You will need either Bison, Berkeley YACC, or a version of YACC +compatible with them (if any exist), to build libpcap. The configure +script will abort if there isn't any such program. If you don't have +any such program, the current version of Bison can be found at +http://ftp.gnu.org/gnu/bison/ and the current version of Berkeley YACC +can be found at http://invisible-island.net/byacc/. + +Sometimes the stock C compiler does not interact well with Flex and +Bison. The list of problems includes undefined references for alloca. +You can get around this by installing GCC. + +If you use Solaris, there is a bug with bufmod(7) that is fixed in +Solaris 2.3.2 (aka SunOS 5.3.2). Setting a snapshot length with the +broken bufmod(7) results in data be truncated from the FRONT of the +packet instead of the end. The work around is to not set a snapshot +length but this results in performance problems since the entire packet +is copied to user space. If you must run an older version of Solaris, +there is a patch available from Sun; ask for bugid 1149065. After +installing the patch, use "setenv BUFMOD_FIXED" to enable use of +bufmod(7). However, we recommend you run a more current release of +Solaris. + +If you use the SPARCompiler, you must be careful to not use the +/usr/ucb/cc interface. If you do, you will get bogus warnings and +perhaps errors. Either make sure your path has /opt/SUNWspro/bin +before /usr/ucb or else: + + setenv CC /opt/SUNWspro/bin/cc + +before running configure. (You might have to do a "make distclean" +if you already ran configure once). + +Also note that "make depend" won't work; while all of the known +universe uses -M, the SPARCompiler uses -xM to generate makefile +dependencies. + +If you are trying to do packet capture with a FORE ATM card, you may or +may not be able to. They usually only release their driver in object +code so unless their driver supports packet capture, there's not much +libpcap can do. + +If you get an error like: + + tcpdump: recv_ack: bind error 0x??? + +when using DLPI, look for the DL_ERROR_ACK error return values, usually +in /usr/include/sys/dlpi.h, and find the corresponding value. + +Under {DEC OSF/1, Digital UNIX, Tru64 UNIX}, packet capture must be +enabled before it can be used. For instructions on how to enable packet +filter support, see: + + ftp://ftp.digital.com/pub/Digital/dec-faq/Digital-UNIX + +Look for the "How do I configure the Berkeley Packet Filter and capture +tcpdump traces?" item. + +Once you enable packet filter support, your OSF system will support bpf +natively. + +Under Ultrix, packet capture must be enabled before it can be used. For +instructions on how to enable packet filter support, see: + + ftp://ftp.digital.com/pub/Digital/dec-faq/ultrix + +If you use HP-UX, you must have at least version 9 and either the +version of cc that supports ANSI C (cc -Aa) or else use the GNU C +compiler. You must also buy the optional streams package. If you don't +have: + + /usr/include/sys/dlpi.h + /usr/include/sys/dlpi_ext.h + +then you don't have the streams package. In addition, we believe you +need to install the "9.X LAN and DLPI drivers cumulative" patch +(PHNE_6855) to make the version 9 DLPI work with libpcap. + +The DLPI streams package is standard starting with HP-UX 10. + +The HP implementation of DLPI is a little bit eccentric. Unlike +Solaris, you must attach /dev/dlpi instead of the specific /dev/* +network pseudo device entry in order to capture packets. The PPA is +based on the ifnet "index" number. Under HP-UX 9, it is necessary to +read /dev/kmem and the kernel symbol file (/hp-ux). Under HP-UX 10, +DLPI can provide information for determining the PPA. It does not seem +to be possible to trace the loopback interface. Unlike other DLPI +implementations, PHYS implies MULTI and SAP and you get an error if you +try to enable more than one promiscuous mode at a time. + +It is impossible to capture outbound packets on HP-UX 9. To do so on +HP-UX 10, you will, apparently, need a late "LAN products cumulative +patch" (at one point, it was claimed that this would be PHNE_18173 for +s700/10.20; at another point, it was claimed that the required patches +were PHNE_20892, PHNE_20725 and PHCO_10947, or newer patches), and to do +so on HP-UX 11 you will, apparently, need the latest lancommon/DLPI +patches and the latest driver patch for the interface(s) in use on HP-UX +11 (at one point, it was claimed that patches PHNE_19766, PHNE_19826, +PHNE_20008, and PHNE_20735 did the trick). + +Furthermore, on HP-UX 10, you will need to turn on a kernel switch by +doing + + echo 'lanc_outbound_promisc_flag/W 1' | adb -w /stand/vmunix /dev/mem + +You would have to arrange that this happen on reboots; the right way to +do that would probably be to put it into an executable script file +"/sbin/init.d/outbound_promisc" and making +"/sbin/rc2.d/S350outbound_promisc" a symbolic link to that script. + +Finally, testing shows that there can't be more than one simultaneous +DLPI user per network interface. + +If you use Linux, this version of libpcap is known to compile and run +under Red Hat 4.0 with the 2.0.25 kernel. It may work with earlier 2.X +versions but is guaranteed not to work with 1.X kernels. Running more +than one libpcap program at a time, on a system with a 2.0.X kernel, can +cause problems since promiscuous mode is implemented by twiddling the +interface flags from the libpcap application; the packet capture +mechanism in the 2.2 and later kernels doesn't have this problem. Also, +packet timestamps aren't very good. This appears to be due to haphazard +handling of the timestamp in the kernel. + +Note well: there is rumoured to be a version of tcpdump floating around +called 3.0.3 that includes libpcap and is supposed to support Linux. +You should be advised that neither the Network Research Group at LBNL +nor the Tcpdump Group ever generated a release with this version number. +The LBNL Network Research Group notes with interest that a standard +cracker trick to get people to install trojans is to distribute bogus +packages that have a version number higher than the current release. +They also noted with annoyance that 90% of the Linux related bug reports +they got are due to changes made to unofficial versions of their page. +If you are having trouble but aren't using a version that came from +tcpdump.org, please try that before submitting a bug report! + +On Linux, libpcap will not work if the kernel does not have the packet +socket option enabled; see the README.linux file for information about +this. + +If you use AIX, you may not be able to build libpcap from this release. +We do not have an AIX system in house so it's impossible for us to test +AIX patches submitted to us. We are told that you must link against +/lib/pse.exp, that you must use AIX cc or a GNU C compiler newer than +2.7.2, and that you may need to run strload before running a libpcap +application. + +Read the README.aix file for information on installing libpcap and +configuring your system to be able to support libpcap. + +If you use NeXTSTEP, you will not be able to build libpcap from this +release. + +If you use SINIX, you should be able to build libpcap from this +release. It is known to compile and run on SINIX-Y/N 5.42 with the C-DS +V1.0 or V1.1 compiler. But note that in some releases of SINIX, yacc +emits incorrect code; if grammar.y fails to compile, change every +occurence of: + + #ifdef YYDEBUG + +to: + #if YYDEBUG + +Another workaround is to use flex and bison. + +If you use SCO, you might have trouble building libpcap from this +release. We do not have a machine running SCO and have not had reports +of anyone successfully building on it; the current release of libpcap +does not compile on SCO OpenServer 5. Although SCO apparently supports +DLPI to some extent, the DLPI in OpenServer 5 is very non-standard, and +it appears that completely new code would need to be written to capture +network traffic. SCO do not appear to provide tcpdump binaries for +OpenServer 5 or OpenServer 6 as part of SCO Skunkware: + + http://www.sco.com/skunkware/ + +If you use UnixWare, you might be able to build libpcap from this +release, or you might not. We do not have a machine running UnixWare, +so we have not tested it; however, SCO provide packages for libpcap +0.6.2 and tcpdump 3.7.1 in the UnixWare 7/Open UNIX 8 part of SCO +Skunkware, and the source package for libpcap 0.6.2 is not changed from +the libpcap 0.6.2 source release, so this release of libpcap might also +build without changes on UnixWare 7. + +If linking tcpdump fails with "Undefined: _alloca" when using bison on +a Sun4, your version of Bison is broken. In any case version 1.16 or +higher is recommended (1.14 is known to cause problems 1.16 is known to +work). Either pick up a current version from: + + http://ftp.gnu.org/gnu/bison/ + +or hack around it by inserting the lines: + + #ifdef __GNUC__ + #define alloca __builtin_alloca + #else + #ifdef sparc + #include + #else + char *alloca (); + #endif + #endif + +right after the (100 line!) GNU license comment in bison.simple, remove +grammar.[co] and fire up make again. + +If you use SunOS 4, your kernel must support streams NIT. If you run a +libpcap program and it dies with: + + /dev/nit: No such device + +You must add streams NIT support to your kernel configuration, run +config and boot the new kernel. + +If you are running a version of SunOS earlier than 4.1, you will need +to replace the Sun supplied /sys/sun{3,4,4c}/OBJ/nit_if.o with the +appropriate version from this distribution's SUNOS4 subdirectory and +build a new kernel: + + nit_if.o.sun3-sunos4 (any flavor of sun3) + nit_if.o.sun4c-sunos4.0.3c (SS1, SS1+, IPC, SLC, etc.) + nit_if.o.sun4-sunos4 (Sun4's not covered by + nit_if.o.sun4c-sunos4.0.3c) + +These nit replacements fix a bug that makes nit essentially unusable in +pre-SunOS 4.1. In addition, our sun4c-sunos4.0.3c nit gives you +timestamps to the resolution of the SS-1 clock (1 us) rather than the +lousy 20ms timestamps Sun gives you (tcpdump will print out the full +timestamp resolution if it finds it's running on a SS-1). + +FILES +----- +CHANGES - description of differences between releases +ChmodBPF/* - Mac OS X startup item to set ownership and permissions + on /dev/bpf* +CMakeLists.txt - CMake file +CREDITS - people that have helped libpcap along +INSTALL.txt - this file +LICENSE - the license under which tcpdump is distributed +Makefile.in - compilation rules (input to the configure script) +README - description of distribution +README.aix - notes on using libpcap on AIX +README.dag - notes on using libpcap to capture on Endace DAG devices +README.hpux - notes on using libpcap on HP-UX +README.linux - notes on using libpcap on Linux +README.macosx - notes on using libpcap on Mac OS X +README.septel - notes on using libpcap to capture on Intel/Septel devices +README.sita - notes on using libpcap to capture on SITA devices +README.tru64 - notes on using libpcap on Digital/Tru64 UNIX +README.Win32 - notes on using libpcap on Win32 systems (with WinPcap) +SUNOS4 - pre-SunOS 4.1 replacement kernel nit modules +VERSION - version of this release +acconfig.h - support for post-2.13 autoconf +aclocal.m4 - autoconf macros +arcnet.h - ARCNET definitions +atmuni31.h - ATM Q.2931 definitions +bpf/net - copy of bpf_filter.c +bpf_dump.c - BPF program printing routines +bpf_filter.c - symlink to bpf/net/bpf_filter.c +bpf_image.c - BPF disassembly routine +config.guess - autoconf support +config.h.in - autoconf input +config.sub - autoconf support +configure - configure script (run this first) +configure.ac - configure script source +dlpisubs.c - DLPI-related functions for pcap-dlpi.c and pcap-libdlpi.c +dlpisubs.h - DLPI-related function declarations +etherent.c - /etc/ethers support routines +ethertype.h - Ethernet protocol types and names definitions +fad-getad.c - pcap_findalldevs() for systems with getifaddrs() +fad-gifc.c - pcap_findalldevs() for systems with only SIOCGIFLIST +fad-glifc.c - pcap_findalldevs() for systems with SIOCGLIFCONF +filtertest.c - test program for BPF compiler +findalldevstest.c - test program for pcap_findalldevs() +gencode.c - BPF code generation routines +gencode.h - BPF code generation definitions +grammar.y - filter string grammar +ieee80211.h - 802.11 definitions +inet.c - network routines +install-sh - BSD style install script +lbl/os-*.h - OS-dependent defines and prototypes +llc.h - 802.2 LLC SAP definitions +missing/* - replacements for missing library functions +mkdep - construct Makefile dependency list +msdos/* - drivers for MS-DOS capture support +nametoaddr.c - hostname to address routines +nlpid.h - OSI network layer protocol identifier definitions +net - symlink to bpf/net +optimize.c - BPF optimization routines +pcap/bluetooth.h - public definition of DLT_BLUETOOTH_HCI_H4_WITH_PHDR header +pcap/bpf.h - BPF definitions +pcap/namedb.h - public libpcap name database definitions +pcap/pcap.h - public libpcap definitions +pcap/sll.h - public definition of DLT_LINUX_SLL header +pcap/usb.h - public definition of DLT_USB header +pcap-bpf.c - BSD Packet Filter support +pcap-bpf.h - header for backwards compatibility +pcap-bt-linux.c - Bluetooth capture support for Linux +pcap-bt-linux.h - Bluetooth capture support for Linux +pcap-dag.c - Endace DAG device capture support +pcap-dag.h - Endace DAG device capture support +pcap-dlpi.c - Data Link Provider Interface support +pcap-dos.c - MS-DOS capture support +pcap-dos.h - headers for MS-DOS capture support +pcap-enet.c - enet support +pcap-int.h - internal libpcap definitions +pcap-libdlpi.c - Data Link Provider Interface support for systems with libdlpi +pcap-linux.c - Linux packet socket support +pcap-namedb.h - header for backwards compatibility +pcap-nit.c - SunOS Network Interface Tap support +pcap-nit.h - SunOS Network Interface Tap definitions +pcap-null.c - dummy monitor support (allows offline use of libpcap) +pcap-pf.c - Ultrix and Digital/Tru64 UNIX Packet Filter support +pcap-pf.h - Ultrix and Digital/Tru64 UNIX Packet Filter definitions +pcap-septel.c - Intel/Septel device capture support +pcap-septel.h - Intel/Septel device capture support +pcap-sita.c - SITA device capture support +pcap-sita.h - SITA device capture support +pcap-sita.html - SITA device capture documentation +pcap-stdinc.h - includes and #defines for compiling on Win32 systems +pcap-snit.c - SunOS 4.x STREAMS-based Network Interface Tap support +pcap-snoop.c - IRIX Snoop network monitoring support +pcap-usb-linux.c - USB capture support for Linux +pcap-usb-linux.h - USB capture support for Linux +pcap-win32.c - WinPcap capture support +pcap.3pcap - manual entry for the library +pcap.c - pcap utility routines +pcap.h - header for backwards compatibility +pcap_*.3pcap - manual entries for library functions +pcap-filter.4 - manual entry for filter syntax +pcap-linktype.4 - manual entry for link-layer header types +ppp.h - Point to Point Protocol definitions +savefile.c - offline support +scanner.l - filter string scanner +sunatmpos.h - definitions for SunATM capturing +Win32 - headers and routines for building on Win32 systems diff --git a/libpcap-1.8.1/LICENSE b/libpcap-1.8.1/LICENSE new file mode 100644 index 00000000..a10474d5 --- /dev/null +++ b/libpcap-1.8.1/LICENSE @@ -0,0 +1,19 @@ +License: BSD + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. diff --git a/libpcap-1.8.1/Makefile b/libpcap-1.8.1/Makefile new file mode 100644 index 00000000..73e5793e --- /dev/null +++ b/libpcap-1.8.1/Makefile @@ -0,0 +1,752 @@ +# Copyright (c) 1993, 1994, 1995, 1996 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that: (1) source code distributions +# retain the above copyright notice and this paragraph in its entirety, (2) +# distributions including binary code include the above copyright notice and +# this paragraph in its entirety in the documentation or other materials +# provided with the distribution, and (3) all advertising materials mentioning +# features or use of this software display the following acknowledgement: +# ``This product includes software developed by the University of California, +# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +# the University nor the names of its contributors may be used to endorse +# or promote products derived from this software without specific prior +# written permission. +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +# +# Various configurable paths (remember to edit Makefile.in, not Makefile) +# + +# Top level hierarchy +prefix = /usr/local +exec_prefix = ${prefix} +datarootdir = ${prefix}/share +# Pathname of directory to install the configure program +bindir = ${exec_prefix}/bin +# Pathname of directory to install the include files +includedir = ${prefix}/include +# Pathname of directory to install the library +libdir = ${exec_prefix}/lib +# Pathname of directory to install the man pages +mandir = ${datarootdir}/man + +# VPATH +srcdir = . + + +# +# You shouldn't need to edit anything below. +# + +LD = /usr/bin/ld +CC = arm-linux-gnueabi-gcc +AR = ar +LN_S = ln -s +MKDEP = +CCOPT = -fvisibility=hidden -fpic +INCLS = -I. +DEFS = -DBUILDING_PCAP -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" +ADDLOBJS = +ADDLARCHIVEOBJS = +LIBS = +CROSSFLAGS= +CFLAGS = -g -O2 ${CROSSFLAGS} +LDFLAGS = ${CROSSFLAGS} +DYEXT = so +V_RPATH_OPT = -Wl,-rpath, +DEPENDENCY_CFLAG = +PROG=libpcap + +# Standard CFLAGS +FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS) + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +RANLIB = ranlib + +LEX = flex +YACC = bison -y + +# Explicitly define compilation rule since SunOS 4's make doesn't like gcc. +# Also, gcc does not remove the .o before forking 'as', which can be a +# problem if you don't own the file but can write to the directory. +.c.o: + @rm -f $@ + $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c + +PSRC = pcap-linux.c pcap-usb-linux.c pcap-bt-linux.c pcap-bt-monitor-linux.c pcap-netfilter-linux.c +FSRC = fad-getad.c +SSRC = +CSRC = pcap.c inet.c fad-helpers.c gencode.c optimize.c nametoaddr.c \ + etherent.c savefile.c sf-pcap.c sf-pcap-ng.c pcap-common.c \ + bpf_image.c bpf_dump.c +GENSRC = scanner.c grammar.c bpf_filter.c version.c +LIBOBJS = + +SRC = $(PSRC) $(FSRC) $(CSRC) $(SSRC) $(GENSRC) + +# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot +# hack the extra indirection +OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS) +PUBHDR = \ + pcap.h \ + pcap-bpf.h \ + pcap-namedb.h \ + pcap/bpf.h \ + pcap/bluetooth.h \ + pcap/can_socketcan.h \ + pcap/dlt.h \ + pcap/export-defs.h \ + pcap/ipnet.h \ + pcap/namedb.h \ + pcap/nflog.h \ + pcap/pcap.h \ + pcap/sll.h \ + pcap/vlan.h \ + pcap/usb.h + +HDR = $(PUBHDR) \ + arcnet.h \ + atmuni31.h \ + ethertype.h \ + extract.h \ + gencode.h \ + ieee80211.h \ + llc.h \ + nametoaddr.h \ + nlpid.h \ + pcap-common.h \ + pcap-int.h \ + pcap-stdinc.h \ + portability.h \ + ppp.h \ + sf-pcap.h \ + sf-pcap-ng.h \ + sunatmpos.h + +TESTS = \ + \ + capturetest \ + can_set_rfmon_test \ + filtertest \ + findalldevstest \ + opentest \ + reactivatetest \ + selpolltest + +TESTS_SRC = \ + tests/valgrindtest.c \ + tests/capturetest.c \ + tests/can_set_rfmon_test.c \ + tests/filtertest.c \ + tests/findalldevstest.c \ + tests/opentest.c \ + tests/reactivatetest.c \ + tests/selpolltest.c + +GENHDR = \ + scanner.h grammar.h pcap_version.h + +TAGFILES = \ + $(SRC) $(HDR) + +CLEANFILES = $(OBJ) libpcap.* $(TESTS) \ + $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \ + lex.yy.c pcap-config + +MAN1 = pcap-config.1 + +MAN3PCAP_EXPAND = \ + pcap.3pcap.in \ + pcap_compile.3pcap.in \ + pcap_datalink.3pcap.in \ + pcap_dump_open.3pcap.in \ + pcap_get_tstamp_precision.3pcap.in \ + pcap_list_datalinks.3pcap.in \ + pcap_list_tstamp_types.3pcap.in \ + pcap_open_dead.3pcap.in \ + pcap_open_offline.3pcap.in \ + pcap_set_tstamp_precision.3pcap.in \ + pcap_set_tstamp_type.3pcap.in + +MAN3PCAP_NOEXPAND = \ + pcap_activate.3pcap \ + pcap_breakloop.3pcap \ + pcap_can_set_rfmon.3pcap \ + pcap_close.3pcap \ + pcap_create.3pcap \ + pcap_datalink_name_to_val.3pcap \ + pcap_datalink_val_to_name.3pcap \ + pcap_dump.3pcap \ + pcap_dump_close.3pcap \ + pcap_dump_file.3pcap \ + pcap_dump_flush.3pcap \ + pcap_dump_ftell.3pcap \ + pcap_file.3pcap \ + pcap_fileno.3pcap \ + pcap_findalldevs.3pcap \ + pcap_freecode.3pcap \ + pcap_get_selectable_fd.3pcap \ + pcap_geterr.3pcap \ + pcap_inject.3pcap \ + pcap_is_swapped.3pcap \ + pcap_lib_version.3pcap \ + pcap_lookupdev.3pcap \ + pcap_lookupnet.3pcap \ + pcap_loop.3pcap \ + pcap_major_version.3pcap \ + pcap_next_ex.3pcap \ + pcap_offline_filter.3pcap \ + pcap_open_live.3pcap \ + pcap_set_buffer_size.3pcap \ + pcap_set_datalink.3pcap \ + pcap_set_immediate_mode.3pcap \ + pcap_set_promisc.3pcap \ + pcap_set_rfmon.3pcap \ + pcap_set_snaplen.3pcap \ + pcap_set_timeout.3pcap \ + pcap_setdirection.3pcap \ + pcap_setfilter.3pcap \ + pcap_setnonblock.3pcap \ + pcap_snapshot.3pcap \ + pcap_stats.3pcap \ + pcap_statustostr.3pcap \ + pcap_strerror.3pcap \ + pcap_tstamp_type_name_to_val.3pcap \ + pcap_tstamp_type_val_to_name.3pcap + +MAN3PCAP = $(MAN3PCAP_NOEXPAND) $(MAN3PCAP_EXPAND:.in=) + +MANFILE = \ + pcap-savefile.manfile.in + +MANMISC = \ + pcap-filter.manmisc.in \ + pcap-linktype.manmisc.in \ + pcap-tstamp.manmisc.in + +EXTRA_DIST = \ + $(TESTS_SRC) \ + CHANGES \ + ChmodBPF/ChmodBPF \ + ChmodBPF/StartupParameters.plist \ + CREDITS \ + CMakeLists.txt \ + GenVersion.bat \ + INSTALL.txt \ + LICENSE \ + Makefile.in \ + Makefile-devel-adds \ + README \ + README.aix \ + README.dag \ + README.hpux \ + README.linux \ + README.macosx \ + README.septel \ + README.sita \ + README.tru64 \ + README.Win32 \ + SUNOS4/nit_if.o.sparc \ + SUNOS4/nit_if.o.sun3 \ + SUNOS4/nit_if.o.sun4c.4.0.3c \ + TODO \ + VERSION \ + aclocal.m4 \ + bpf/net/bpf_filter.c \ + chmod_bpf \ + cmakeconfig.h.in \ + cmake/preconfigure.cmake \ + config/have_siocglifconf.c \ + config.guess \ + config.h.in \ + config.sub \ + configure \ + configure.ac \ + dlpisubs.c \ + dlpisubs.h \ + fad-getad.c \ + fad-gifc.c \ + fad-glifc.c \ + fad-helpers.c \ + gen_version_c.sh \ + gen_version_header.sh \ + grammar.y \ + install-sh \ + lbl/os-aix4.h \ + lbl/os-aix7.h \ + lbl/os-hpux11.h \ + lbl/os-osf4.h \ + lbl/os-osf5.h \ + lbl/os-solaris2.h \ + lbl/os-sunos4.h \ + lbl/os-ultrix4.h \ + missing/getopt.c \ + missing/getopt.h \ + missing/snprintf.c \ + missing/strtok_r.c \ + missing/win_snprintf.c \ + mkdep \ + msdos/bin2c.c \ + msdos/common.dj \ + msdos/makefile \ + msdos/makefile.dj \ + msdos/makefile.wc \ + msdos/ndis2.c \ + msdos/ndis2.h \ + msdos/ndis_0.asm \ + msdos/pkt_rx0.asm \ + msdos/pkt_rx1.s \ + msdos/pktdrvr.c \ + msdos/pktdrvr.h \ + msdos/readme.dos \ + org.tcpdump.chmod_bpf.plist \ + pcap-bpf.c \ + pcap-bt-linux.c \ + pcap-bt-linux.h \ + pcap-bt-monitor-linux.c \ + pcap-bt-monitor-linux.h \ + pcap-config.in \ + pcap-dag.c \ + pcap-dag.h \ + pcap-dbus.c \ + pcap-dbus.h \ + pcap-dlpi.c \ + pcap-dos.c \ + pcap-dos.h \ + pcap-enet.c \ + pcap-int.h \ + pcap-libdlpi.c \ + pcap-linux.c \ + pcap-namedb.h \ + pcap-new.c \ + pcap-netfilter-linux.c \ + pcap-netfilter-linux.h \ + pcap-nit.c \ + pcap-null.c \ + pcap-pf.c \ + pcap-rpcap.c \ + pcap-rpcap.h \ + pcap-septel.c \ + pcap-septel.h \ + pcap-sita.h \ + pcap-sita.c \ + pcap-sita.html \ + pcap-snf.c \ + pcap-snf.h \ + pcap-snit.c \ + pcap-snoop.c \ + pcap-tc.c \ + pcap-tc.h \ + pcap-usb-linux.c \ + pcap-usb-linux.h \ + pcap-win32.c \ + remote-ext.h \ + sockutils.c \ + sockutils.h \ + scanner.l \ + tests/CMakeLists.txt \ + pcap_version.h.in \ + Win32/Include/Gnuc.h \ + Win32/Include/net/if.h \ + Win32/Prj/wpcap.sln \ + Win32/Prj/wpcap.vcxproj \ + Win32/Prj/wpcap.vcxproj.filters + +all: libpcap.a shared pcap-config + +libpcap.a: $(OBJ) + @rm -f $@ + $(AR) rc $@ $(OBJ) $(ADDLARCHIVEOBJS) + $(RANLIB) $@ + +shared: libpcap.$(DYEXT) + +libpcap.so: $(OBJ) + @rm -f $@ + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + $(CC) -shared -Wl,-soname,$@.$$MAJOR_VER $(LDFLAGS) \ + -o $@.$$VER $(OBJ) $(ADDLOBJS) $(LIBS) + +# +# The following rule succeeds, but the result is untested. +# +# In Mac OS X, the libpcap dylib has the name "libpcap.A.dylib", with +# its full path as the install_name, and with the compatibility and +# current version both set to 1. The compatibility version is set to +# 1 so that programs built with a newer version of the library will run +# against older versions; multi-platform software probably will fail if +# it uses APIs added in the newer version, but Mac OS X-specific software +# will use weak linking and check at run time whether those APIs are +# available. +# +# We also use "A" as the major version, and 1 as the compatibility version, +# but set the current version to the value in VERSION, with any non-numeric +# stuff stripped off (the compatibility and current version must be of the +# form X[.Y[.Z]], with Y and Z possibly absent, and with all components +# numeric). +# +libpcap.dylib: $(OBJ) + rm -f libpcap*.dylib + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + COMPAT_VER=1; \ + CURRENT_VER=`sed 's/[^0-9.].*$$//' $(srcdir)/VERSION`; \ + $(CC) -dynamiclib -undefined error $(LDFLAGS) \ + -o libpcap.$$VER.dylib $(OBJ) $(ADDLOBJS) $(LIBS) \ + -install_name $(libdir)/libpcap.$$MAJOR_VER.dylib \ + -compatibility_version $$COMPAT_VER \ + -current_version $$CURRENT_VER + +# +# The HP-UX linker manual says that the convention for a versioned library +# is libXXX.{number}, not libXXX.sl.{number}. That appears to be the case +# on at least one HP-UX 11.00 system; libXXX.sl is a symlink to +# libXXX.{number}. +# +# The manual also says "library-level versioning" (think "sonames") was +# added in HP-UX 10.0. +# +# XXX - this assumes we're using the HP linker, rather than the GNU +# linker, even with GCC. +# +libpcap.sl: $(OBJ) + @MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f libpcap.$$MAJOR_VER + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + ld -b $(LDFLAGS) -o libpcap.$$MAJOR_VER +h libpcap.$$MAJOR_VER \ + $(OBJ) $(ADDLOBJS) $(LIBS) + +# +# AIX is different from everybody else. A shared library is an archive +# library with one or more shared-object components. We still build a +# normal static archive library on AIX, for the benefit of the traditional +# scheme of building libpcap and tcpdump in subdirectories of the +# same directory, with tcpdump statically linked with the libpcap +# in question, but we also build a shared library as "libpcap.shareda" +# and install *it*, rather than the static library, as "libpcap.a". +# +libpcap.shareda: $(OBJ) + @rm -f $@ shr.o + $(CC) -shared -o shr.o $(OBJ) $(ADDLOBJS) $(LDFLAGS) $(LIBS) + $(AR) rc $@ shr.o + +# +# For platforms that don't support shared libraries (or on which we +# don't support shared libraries). +# +libpcap.none: + +scanner.c: $(srcdir)/scanner.l + $(LEX) -P pcap_ --header-file=scanner.h --nounput -o scanner.c $< +scanner.h: scanner.c +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f scanner.c; \ + $(MAKE) $(MAKEFLAGS) scanner.c; \ + fi + +scanner.o: scanner.c grammar.h + $(CC) $(FULL_CFLAGS) -c scanner.c + +pcap.o: pcap_version.h + +grammar.c: $(srcdir)/grammar.y + $(YACC) -p pcap_ -o grammar.c -d $< +grammar.h: grammar.c +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f grammar.c; \ + $(MAKE) $(MAKEFLAGS) grammar.c; \ + fi + +grammar.o: grammar.c + $(CC) $(FULL_CFLAGS) -c grammar.c + +gencode.o: $(srcdir)/gencode.c grammar.h scanner.h + $(CC) $(FULL_CFLAGS) -c $(srcdir)/gencode.c + +version.o: version.c + $(CC) $(FULL_CFLAGS) -c version.c + +snprintf.o: $(srcdir)/missing/snprintf.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c + +strtok_r.o: $(srcdir)/missing/strtok_r.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strtok_r.c + +version.c: $(srcdir)/VERSION $(srcdir)/gen_version_c.sh + # + # Older programs import this if they want to show the + # libpcap version number, rather than calling + # pcap_lib_version(), so we need to export it. + # + @rm -f $@ + $(srcdir)/gen_version_c.sh $(srcdir)/VERSION $@ + +pcap_version.h: $(srcdir)/VERSION $(srcdir)/pcap_version.h.in $(srcdir)/gen_version_header.sh + @rm -f $@ + $(srcdir)/gen_version_header.sh $(srcdir)/VERSION $(srcdir)/pcap_version.h.in $@ + +bpf_filter.c: $(srcdir)/bpf/net/bpf_filter.c + rm -f bpf_filter.c + ln -s $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c + +bpf_filter.o: bpf_filter.c + $(CC) $(FULL_CFLAGS) -c bpf_filter.c + +# +# Generate the pcap-config script. +# +# Some Makes, e.g. AIX Make and Solaris Make, can't handle "--file=$@.tmp:$<"; +# for example, the Solaris 9 make man page says +# +# Because make assigns $< and $* as it would for implicit rules +# (according to the suffixes list and the directory contents), +# they may be unreliable when used within explicit target entries. +# +# and this is an explicit target entry. +# +# Therefore, instead of using $<, we explicitly put in $(srcdir)/pcap-config.in. +# +pcap-config: $(srcdir)/pcap-config.in ./config.status + @rm -f $@ $@.tmp + ./config.status --file=$@.tmp:$(srcdir)/pcap-config.in + mv $@.tmp $@ + chmod a+x $@ + +# +# Test programs - not built by default, and not installed. +# +tests: $(TESTS) + +capturetest: tests/capturetest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o capturetest $(srcdir)/tests/capturetest.c libpcap.a $(LIBS) + +can_set_rfmon_test: tests/can_set_rfmon_test.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o can_set_rfmon_test $(srcdir)/tests/can_set_rfmon_test.c libpcap.a $(LIBS) + +filtertest: tests/filtertest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o filtertest $(srcdir)/tests/filtertest.c libpcap.a $(LIBS) + +findalldevstest: tests/findalldevstest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o findalldevstest $(srcdir)/tests/findalldevstest.c libpcap.a $(LIBS) + +opentest: tests/opentest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o opentest $(srcdir)/tests/opentest.c libpcap.a $(LIBS) + +reactivatetest: tests/reactivatetest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o reactivatetest $(srcdir)/tests/reactivatetest.c libpcap.a $(LIBS) + +selpolltest: tests/selpolltest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o selpolltest $(srcdir)/tests/selpolltest.c libpcap.a $(LIBS) + +valgrindtest: tests/valgrindtest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o valgrindtest $(srcdir)/tests/valgrindtest.c libpcap.a $(LIBS) + +install: install-shared install-archive pcap-config + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + [ -d $(DESTDIR)$(includedir) ] || \ + (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir)) + [ -d $(DESTDIR)$(includedir)/pcap ] || \ + (mkdir -p $(DESTDIR)$(includedir)/pcap; chmod 755 $(DESTDIR)$(includedir)/pcap) + [ -d $(DESTDIR)$(mandir)/man1 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man1; chmod 755 $(DESTDIR)$(mandir)/man1) + [ -d $(DESTDIR)$(mandir)/man3 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man3; chmod 755 $(DESTDIR)$(mandir)/man3) + [ -d $(DESTDIR)$(mandir)/man5 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man5; chmod 755 $(DESTDIR)$(mandir)/man5) + [ -d $(DESTDIR)$(mandir)/man7 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man7; chmod 755 $(DESTDIR)$(mandir)/man7) + for i in $(PUBHDR); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(includedir)/$$i; done + [ -d $(DESTDIR)$(bindir) ] || \ + (mkdir -p $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) + $(INSTALL_PROGRAM) pcap-config $(DESTDIR)$(bindir)/pcap-config + for i in $(MAN1); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(mandir)/man1/$$i; done + for i in $(MAN3PCAP_NOEXPAND); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(mandir)/man3/$$i; done + for i in $(MAN3PCAP_EXPAND:.in=); do \ + $(INSTALL_DATA) $$i \ + $(DESTDIR)$(mandir)/man3/$$i; done + (cd $(DESTDIR)$(mandir)/man3 && \ + rm -f pcap_datalink_val_to_description.3pcap && \ + $(LN_S) pcap_datalink_val_to_name.3pcap \ + pcap_datalink_val_to_description.3pcap && \ + rm -f pcap_dump_fopen.3pcap && \ + $(LN_S) pcap_dump_open.3pcap pcap_dump_fopen.3pcap && \ + rm -f pcap_freealldevs.3pcap && \ + $(LN_S) pcap_findalldevs.3pcap pcap_freealldevs.3pcap && \ + rm -f pcap_perror.3pcap && \ + $(LN_S) pcap_geterr.3pcap pcap_perror.3pcap && \ + rm -f pcap_sendpacket.3pcap && \ + $(LN_S) pcap_inject.3pcap pcap_sendpacket.3pcap && \ + rm -f pcap_free_datalinks.3pcap && \ + $(LN_S) pcap_list_datalinks.3pcap pcap_free_datalinks.3pcap && \ + rm -f pcap_free_tstamp_types.3pcap && \ + $(LN_S) pcap_list_tstamp_types.3pcap pcap_free_tstamp_types.3pcap && \ + rm -f pcap_dispatch.3pcap && \ + $(LN_S) pcap_loop.3pcap pcap_dispatch.3pcap && \ + rm -f pcap_minor_version.3pcap && \ + $(LN_S) pcap_major_version.3pcap pcap_minor_version.3pcap && \ + rm -f pcap_next.3pcap && \ + $(LN_S) pcap_next_ex.3pcap pcap_next.3pcap && \ + rm -f pcap_open_dead_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_dead.3pcap \ + pcap_open_dead_with_tstamp_precision.3pcap && \ + rm -f pcap_open_offline_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_open_offline_with_tstamp_precision.3pcap && \ + rm -f pcap_fopen_offline.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_fopen_offline.3pcap && \ + rm -f pcap_fopen_offline_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_fopen_offline_with_tstamp_precision.3pcap && \ + rm -f pcap_tstamp_type_val_to_description.3pcap && \ + $(LN_S) pcap_tstamp_type_val_to_name.3pcap pcap_tstamp_type_val_to_description.3pcap && \ + rm -f pcap_getnonblock.3pcap && \ + $(LN_S) pcap_setnonblock.3pcap pcap_getnonblock.3pcap) + for i in $(MANFILE); do \ + $(INSTALL_DATA) `echo $$i | sed 's/.manfile.in/.manfile/'` \ + $(DESTDIR)$(mandir)/man5/`echo $$i | sed 's/.manfile.in/.5/'`; done + for i in $(MANMISC); do \ + $(INSTALL_DATA) `echo $$i | sed 's/.manmisc.in/.manmisc/'` \ + $(DESTDIR)$(mandir)/man7/`echo $$i | sed 's/.manmisc.in/.7/'`; done + +install-shared: install-shared-$(DYEXT) +install-shared-so: libpcap.so + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + $(INSTALL_PROGRAM) libpcap.so.$$VER $(DESTDIR)$(libdir)/libpcap.so.$$VER; \ + ln -sf libpcap.so.$$VER $(DESTDIR)$(libdir)/libpcap.so.$$MAJOR_VER; \ + ln -sf libpcap.so.$$MAJOR_VER $(DESTDIR)$(libdir)/libpcap.so +install-shared-dylib: libpcap.dylib + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + $(INSTALL_PROGRAM) libpcap.$$VER.dylib $(DESTDIR)$(libdir)/libpcap.$$VER.dylib; \ + ln -sf libpcap.$$VER.dylib $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER.dylib; \ + ln -sf libpcap.$$MAJOR_VER.dylib $(DESTDIR)$(libdir)/libpcap.dylib +install-shared-sl: libpcap.sl + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + $(INSTALL_PROGRAM) libpcap.$$MAJOR_VER $(DESTDIR)$(libdir) + ln -sf libpcap.$$MAJOR_VER $(DESTDIR)$(libdir)/libpcap.sl +install-shared-shareda: libpcap.shareda + # + # AIX shared libraries are weird. They're archive libraries + # with one or more shared object components. + # + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + $(INSTALL_PROGRAM) libpcap.shareda $(DESTDIR)$(libdir)/libpcap.a +install-shared-none: + +install-archive: install-archive-$(DYEXT) +install-archive-so install-archive-dylib install-archive-sl install-archive-none: libpcap.a + # + # Most platforms have separate suffixes for shared and + # archive libraries, so we install both. + # + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a + $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a +install-archive-shareda: + # + # AIX, however, doesn't, so we don't install the archive + # library on AIX. + # + +uninstall: uninstall-shared + rm -f $(DESTDIR)$(libdir)/libpcap.a + for i in $(PUBHDR); do \ + rm -f $(DESTDIR)$(includedir)/$$i; done + -rmdir $(DESTDIR)$(includedir)/pcap + rm -f $(DESTDIR)/$(bindir)/pcap-config + for i in $(MAN1); do \ + rm -f $(DESTDIR)$(mandir)/man1/$$i; done + for i in $(MAN3PCAP); do \ + rm -f $(DESTDIR)$(mandir)/man3/$$i; done + rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_open_dead_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_open_offline_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_tstamp_type_val_to_description.3pcap + for i in $(MANFILE); do \ + rm -f $(DESTDIR)$(mandir)/man5/`echo $$i | sed 's/.manfile.in/.5/'`; done + for i in $(MANMISC); do \ + rm -f $(DESTDIR)$(mandir)/man7/`echo $$i | sed 's/.manmisc.in/.7/'`; done + +uninstall-shared: uninstall-shared-$(DYEXT) +uninstall-shared-so: + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so.$$VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so.$$MAJOR_VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so +uninstall-shared-dylib: + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$VER.dylib; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER.dylib; \ + rm -f $(DESTDIR)$(libdir)/libpcap.dylib +uninstall-shared-sl: + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.sl +uninstall-shared-shareda: + rm -f $(DESTDIR)$(libdir)/libpcap.a +uninstall-shared-none: + +clean: + rm -f $(CLEANFILES) + +distclean: clean + rm -f Makefile config.cache config.log config.status \ + config.h gnuc.h net os-proto.h bpf_filter.c pcap-config \ + stamp-h stamp-h.in + rm -f $(MAN3PCAP_EXPAND:.in=) $(MANFILE:.in=) $(MANMISC:.in=) + rm -rf autom4te.cache + +extags: $(TAGFILES) + ctags $(TAGFILES) + +tags: $(TAGFILES) + ctags -wtd $(TAGFILES) + +releasetar: + @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \ + mkdir $$name; \ + tar cf - $(CSRC) $(HDR) $(MAN1) $(MAN3PCAP_EXPAND) \ + $(MAN3PCAP_NOEXPAND) $(MANFILE) $(MANMISC) $(EXTRA_DIST) | \ + (cd $$name; tar xf -); \ + tar -c -z -f $$name.tar.gz $$name; \ + rm -rf $$name + +depend: $(GENSRC) $(GENHDR) bpf_filter.c + $(MKDEP) -c $(CC) -m $(CFLAGS) $(DEPENDENCY_CFLAG) $(DEFS) $(INCLS) $(SRC) diff --git a/libpcap-1.8.1/Makefile-devel-adds b/libpcap-1.8.1/Makefile-devel-adds new file mode 100644 index 00000000..fea63bbc --- /dev/null +++ b/libpcap-1.8.1/Makefile-devel-adds @@ -0,0 +1,22 @@ +# +# Auto-regenerate configure script or Makefile when things change. +# From autoconf.info . Works best with GNU Make. +# +${srcdir}/configure: configure.ac aclocal.m4 + cd ${srcdir} && autoconf + +# autoheader might not change config.h.in, so touch a stamp file. +${srcdir}/config.h.in: ${srcdir}/stamp-h.in +${srcdir}/stamp-h.in: configure.ac aclocal.m4 + cd ${srcdir} && autoheader + echo timestamp > ${srcdir}/stamp-h.in + +config.h: stamp-h +stamp-h: ${srcdir}/config.h.in config.status + ./config.status + +Makefile: Makefile.in config.status + ./config.status + +config.status: ${srcdir}/configure + ./config.status --recheck diff --git a/libpcap-1.8.1/Makefile.in b/libpcap-1.8.1/Makefile.in new file mode 100644 index 00000000..e71d973c --- /dev/null +++ b/libpcap-1.8.1/Makefile.in @@ -0,0 +1,752 @@ +# Copyright (c) 1993, 1994, 1995, 1996 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that: (1) source code distributions +# retain the above copyright notice and this paragraph in its entirety, (2) +# distributions including binary code include the above copyright notice and +# this paragraph in its entirety in the documentation or other materials +# provided with the distribution, and (3) all advertising materials mentioning +# features or use of this software display the following acknowledgement: +# ``This product includes software developed by the University of California, +# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +# the University nor the names of its contributors may be used to endorse +# or promote products derived from this software without specific prior +# written permission. +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +# +# Various configurable paths (remember to edit Makefile.in, not Makefile) +# + +# Top level hierarchy +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +# Pathname of directory to install the configure program +bindir = @bindir@ +# Pathname of directory to install the include files +includedir = @includedir@ +# Pathname of directory to install the library +libdir = @libdir@ +# Pathname of directory to install the man pages +mandir = @mandir@ + +# VPATH +srcdir = @srcdir@ +VPATH = @srcdir@ + +# +# You shouldn't need to edit anything below. +# + +LD = /usr/bin/ld +CC = @CC@ +AR = @AR@ +LN_S = @LN_S@ +MKDEP = @MKDEP@ +CCOPT = @V_CCOPT@ +INCLS = -I. @V_INCLS@ +DEFS = -DBUILDING_PCAP @DEFS@ @V_DEFS@ +ADDLOBJS = @ADDLOBJS@ +ADDLARCHIVEOBJS = @ADDLARCHIVEOBJS@ +LIBS = @LIBS@ +CROSSFLAGS= +CFLAGS = @CFLAGS@ ${CROSSFLAGS} +LDFLAGS = @LDFLAGS@ ${CROSSFLAGS} +DYEXT = @DYEXT@ +V_RPATH_OPT = @V_RPATH_OPT@ +DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@ +PROG=libpcap + +# Standard CFLAGS +FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS) + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +RANLIB = @RANLIB@ + +LEX = @LEX@ +YACC = @YACC@ + +# Explicitly define compilation rule since SunOS 4's make doesn't like gcc. +# Also, gcc does not remove the .o before forking 'as', which can be a +# problem if you don't own the file but can write to the directory. +.c.o: + @rm -f $@ + $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c + +PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @BT_MONITOR_SRC@ @NETFILTER_SRC@ @DBUS_SRC@ +FSRC = @V_FINDALLDEVS@ +SSRC = @SSRC@ +CSRC = pcap.c inet.c fad-helpers.c gencode.c optimize.c nametoaddr.c \ + etherent.c savefile.c sf-pcap.c sf-pcap-ng.c pcap-common.c \ + bpf_image.c bpf_dump.c +GENSRC = scanner.c grammar.c bpf_filter.c version.c +LIBOBJS = @LIBOBJS@ + +SRC = $(PSRC) $(FSRC) $(CSRC) $(SSRC) $(GENSRC) + +# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot +# hack the extra indirection +OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS) +PUBHDR = \ + pcap.h \ + pcap-bpf.h \ + pcap-namedb.h \ + pcap/bpf.h \ + pcap/bluetooth.h \ + pcap/can_socketcan.h \ + pcap/dlt.h \ + pcap/export-defs.h \ + pcap/ipnet.h \ + pcap/namedb.h \ + pcap/nflog.h \ + pcap/pcap.h \ + pcap/sll.h \ + pcap/vlan.h \ + pcap/usb.h + +HDR = $(PUBHDR) \ + arcnet.h \ + atmuni31.h \ + ethertype.h \ + extract.h \ + gencode.h \ + ieee80211.h \ + llc.h \ + nametoaddr.h \ + nlpid.h \ + pcap-common.h \ + pcap-int.h \ + pcap-stdinc.h \ + portability.h \ + ppp.h \ + sf-pcap.h \ + sf-pcap-ng.h \ + sunatmpos.h + +TESTS = \ + @VALGRINDTEST@ \ + capturetest \ + can_set_rfmon_test \ + filtertest \ + findalldevstest \ + opentest \ + reactivatetest \ + selpolltest + +TESTS_SRC = \ + tests/valgrindtest.c \ + tests/capturetest.c \ + tests/can_set_rfmon_test.c \ + tests/filtertest.c \ + tests/findalldevstest.c \ + tests/opentest.c \ + tests/reactivatetest.c \ + tests/selpolltest.c + +GENHDR = \ + scanner.h grammar.h pcap_version.h + +TAGFILES = \ + $(SRC) $(HDR) + +CLEANFILES = $(OBJ) libpcap.* $(TESTS) \ + $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \ + lex.yy.c pcap-config + +MAN1 = pcap-config.1 + +MAN3PCAP_EXPAND = \ + pcap.3pcap.in \ + pcap_compile.3pcap.in \ + pcap_datalink.3pcap.in \ + pcap_dump_open.3pcap.in \ + pcap_get_tstamp_precision.3pcap.in \ + pcap_list_datalinks.3pcap.in \ + pcap_list_tstamp_types.3pcap.in \ + pcap_open_dead.3pcap.in \ + pcap_open_offline.3pcap.in \ + pcap_set_tstamp_precision.3pcap.in \ + pcap_set_tstamp_type.3pcap.in + +MAN3PCAP_NOEXPAND = \ + pcap_activate.3pcap \ + pcap_breakloop.3pcap \ + pcap_can_set_rfmon.3pcap \ + pcap_close.3pcap \ + pcap_create.3pcap \ + pcap_datalink_name_to_val.3pcap \ + pcap_datalink_val_to_name.3pcap \ + pcap_dump.3pcap \ + pcap_dump_close.3pcap \ + pcap_dump_file.3pcap \ + pcap_dump_flush.3pcap \ + pcap_dump_ftell.3pcap \ + pcap_file.3pcap \ + pcap_fileno.3pcap \ + pcap_findalldevs.3pcap \ + pcap_freecode.3pcap \ + pcap_get_selectable_fd.3pcap \ + pcap_geterr.3pcap \ + pcap_inject.3pcap \ + pcap_is_swapped.3pcap \ + pcap_lib_version.3pcap \ + pcap_lookupdev.3pcap \ + pcap_lookupnet.3pcap \ + pcap_loop.3pcap \ + pcap_major_version.3pcap \ + pcap_next_ex.3pcap \ + pcap_offline_filter.3pcap \ + pcap_open_live.3pcap \ + pcap_set_buffer_size.3pcap \ + pcap_set_datalink.3pcap \ + pcap_set_immediate_mode.3pcap \ + pcap_set_promisc.3pcap \ + pcap_set_rfmon.3pcap \ + pcap_set_snaplen.3pcap \ + pcap_set_timeout.3pcap \ + pcap_setdirection.3pcap \ + pcap_setfilter.3pcap \ + pcap_setnonblock.3pcap \ + pcap_snapshot.3pcap \ + pcap_stats.3pcap \ + pcap_statustostr.3pcap \ + pcap_strerror.3pcap \ + pcap_tstamp_type_name_to_val.3pcap \ + pcap_tstamp_type_val_to_name.3pcap + +MAN3PCAP = $(MAN3PCAP_NOEXPAND) $(MAN3PCAP_EXPAND:.in=) + +MANFILE = \ + pcap-savefile.manfile.in + +MANMISC = \ + pcap-filter.manmisc.in \ + pcap-linktype.manmisc.in \ + pcap-tstamp.manmisc.in + +EXTRA_DIST = \ + $(TESTS_SRC) \ + CHANGES \ + ChmodBPF/ChmodBPF \ + ChmodBPF/StartupParameters.plist \ + CREDITS \ + CMakeLists.txt \ + GenVersion.bat \ + INSTALL.txt \ + LICENSE \ + Makefile.in \ + Makefile-devel-adds \ + README \ + README.aix \ + README.dag \ + README.hpux \ + README.linux \ + README.macosx \ + README.septel \ + README.sita \ + README.tru64 \ + README.Win32 \ + SUNOS4/nit_if.o.sparc \ + SUNOS4/nit_if.o.sun3 \ + SUNOS4/nit_if.o.sun4c.4.0.3c \ + TODO \ + VERSION \ + aclocal.m4 \ + bpf/net/bpf_filter.c \ + chmod_bpf \ + cmakeconfig.h.in \ + cmake/preconfigure.cmake \ + config/have_siocglifconf.c \ + config.guess \ + config.h.in \ + config.sub \ + configure \ + configure.ac \ + dlpisubs.c \ + dlpisubs.h \ + fad-getad.c \ + fad-gifc.c \ + fad-glifc.c \ + fad-helpers.c \ + gen_version_c.sh \ + gen_version_header.sh \ + grammar.y \ + install-sh \ + lbl/os-aix4.h \ + lbl/os-aix7.h \ + lbl/os-hpux11.h \ + lbl/os-osf4.h \ + lbl/os-osf5.h \ + lbl/os-solaris2.h \ + lbl/os-sunos4.h \ + lbl/os-ultrix4.h \ + missing/getopt.c \ + missing/getopt.h \ + missing/snprintf.c \ + missing/strtok_r.c \ + missing/win_snprintf.c \ + mkdep \ + msdos/bin2c.c \ + msdos/common.dj \ + msdos/makefile \ + msdos/makefile.dj \ + msdos/makefile.wc \ + msdos/ndis2.c \ + msdos/ndis2.h \ + msdos/ndis_0.asm \ + msdos/pkt_rx0.asm \ + msdos/pkt_rx1.s \ + msdos/pktdrvr.c \ + msdos/pktdrvr.h \ + msdos/readme.dos \ + org.tcpdump.chmod_bpf.plist \ + pcap-bpf.c \ + pcap-bt-linux.c \ + pcap-bt-linux.h \ + pcap-bt-monitor-linux.c \ + pcap-bt-monitor-linux.h \ + pcap-config.in \ + pcap-dag.c \ + pcap-dag.h \ + pcap-dbus.c \ + pcap-dbus.h \ + pcap-dlpi.c \ + pcap-dos.c \ + pcap-dos.h \ + pcap-enet.c \ + pcap-int.h \ + pcap-libdlpi.c \ + pcap-linux.c \ + pcap-namedb.h \ + pcap-new.c \ + pcap-netfilter-linux.c \ + pcap-netfilter-linux.h \ + pcap-nit.c \ + pcap-null.c \ + pcap-pf.c \ + pcap-rpcap.c \ + pcap-rpcap.h \ + pcap-septel.c \ + pcap-septel.h \ + pcap-sita.h \ + pcap-sita.c \ + pcap-sita.html \ + pcap-snf.c \ + pcap-snf.h \ + pcap-snit.c \ + pcap-snoop.c \ + pcap-tc.c \ + pcap-tc.h \ + pcap-usb-linux.c \ + pcap-usb-linux.h \ + pcap-win32.c \ + remote-ext.h \ + sockutils.c \ + sockutils.h \ + scanner.l \ + tests/CMakeLists.txt \ + pcap_version.h.in \ + Win32/Include/Gnuc.h \ + Win32/Include/net/if.h \ + Win32/Prj/wpcap.sln \ + Win32/Prj/wpcap.vcxproj \ + Win32/Prj/wpcap.vcxproj.filters + +all: libpcap.a shared pcap-config + +libpcap.a: $(OBJ) + @rm -f $@ + $(AR) rc $@ $(OBJ) $(ADDLARCHIVEOBJS) + $(RANLIB) $@ + +shared: libpcap.$(DYEXT) + +libpcap.so: $(OBJ) + @rm -f $@ + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + @V_SHLIB_CMD@ @V_SHLIB_OPT@ @V_SONAME_OPT@$@.$$MAJOR_VER $(LDFLAGS) \ + -o $@.$$VER $(OBJ) $(ADDLOBJS) $(LIBS) + +# +# The following rule succeeds, but the result is untested. +# +# In Mac OS X, the libpcap dylib has the name "libpcap.A.dylib", with +# its full path as the install_name, and with the compatibility and +# current version both set to 1. The compatibility version is set to +# 1 so that programs built with a newer version of the library will run +# against older versions; multi-platform software probably will fail if +# it uses APIs added in the newer version, but Mac OS X-specific software +# will use weak linking and check at run time whether those APIs are +# available. +# +# We also use "A" as the major version, and 1 as the compatibility version, +# but set the current version to the value in VERSION, with any non-numeric +# stuff stripped off (the compatibility and current version must be of the +# form X[.Y[.Z]], with Y and Z possibly absent, and with all components +# numeric). +# +libpcap.dylib: $(OBJ) + rm -f libpcap*.dylib + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + COMPAT_VER=1; \ + CURRENT_VER=`sed 's/[^0-9.].*$$//' $(srcdir)/VERSION`; \ + $(CC) -dynamiclib -undefined error $(LDFLAGS) \ + -o libpcap.$$VER.dylib $(OBJ) $(ADDLOBJS) $(LIBS) \ + -install_name $(libdir)/libpcap.$$MAJOR_VER.dylib \ + -compatibility_version $$COMPAT_VER \ + -current_version $$CURRENT_VER + +# +# The HP-UX linker manual says that the convention for a versioned library +# is libXXX.{number}, not libXXX.sl.{number}. That appears to be the case +# on at least one HP-UX 11.00 system; libXXX.sl is a symlink to +# libXXX.{number}. +# +# The manual also says "library-level versioning" (think "sonames") was +# added in HP-UX 10.0. +# +# XXX - this assumes we're using the HP linker, rather than the GNU +# linker, even with GCC. +# +libpcap.sl: $(OBJ) + @MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f libpcap.$$MAJOR_VER + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + ld -b $(LDFLAGS) -o libpcap.$$MAJOR_VER +h libpcap.$$MAJOR_VER \ + $(OBJ) $(ADDLOBJS) $(LIBS) + +# +# AIX is different from everybody else. A shared library is an archive +# library with one or more shared-object components. We still build a +# normal static archive library on AIX, for the benefit of the traditional +# scheme of building libpcap and tcpdump in subdirectories of the +# same directory, with tcpdump statically linked with the libpcap +# in question, but we also build a shared library as "libpcap.shareda" +# and install *it*, rather than the static library, as "libpcap.a". +# +libpcap.shareda: $(OBJ) + @rm -f $@ shr.o + $(CC) @V_SHLIB_OPT@ -o shr.o $(OBJ) $(ADDLOBJS) $(LDFLAGS) $(LIBS) + $(AR) rc $@ shr.o + +# +# For platforms that don't support shared libraries (or on which we +# don't support shared libraries). +# +libpcap.none: + +scanner.c: $(srcdir)/scanner.l + $(LEX) -P pcap_ --header-file=scanner.h --nounput -o scanner.c $< +scanner.h: scanner.c +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f scanner.c; \ + $(MAKE) $(MAKEFLAGS) scanner.c; \ + fi + +scanner.o: scanner.c grammar.h + $(CC) $(FULL_CFLAGS) -c scanner.c + +pcap.o: pcap_version.h + +grammar.c: $(srcdir)/grammar.y + $(YACC) -p pcap_ -o grammar.c -d $< +grammar.h: grammar.c +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f grammar.c; \ + $(MAKE) $(MAKEFLAGS) grammar.c; \ + fi + +grammar.o: grammar.c + $(CC) $(FULL_CFLAGS) -c grammar.c + +gencode.o: $(srcdir)/gencode.c grammar.h scanner.h + $(CC) $(FULL_CFLAGS) -c $(srcdir)/gencode.c + +version.o: version.c + $(CC) $(FULL_CFLAGS) -c version.c + +snprintf.o: $(srcdir)/missing/snprintf.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c + +strtok_r.o: $(srcdir)/missing/strtok_r.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strtok_r.c + +version.c: $(srcdir)/VERSION $(srcdir)/gen_version_c.sh + # + # Older programs import this if they want to show the + # libpcap version number, rather than calling + # pcap_lib_version(), so we need to export it. + # + @rm -f $@ + $(srcdir)/gen_version_c.sh $(srcdir)/VERSION $@ + +pcap_version.h: $(srcdir)/VERSION $(srcdir)/pcap_version.h.in $(srcdir)/gen_version_header.sh + @rm -f $@ + $(srcdir)/gen_version_header.sh $(srcdir)/VERSION $(srcdir)/pcap_version.h.in $@ + +bpf_filter.c: $(srcdir)/bpf/net/bpf_filter.c + rm -f bpf_filter.c + ln -s $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c + +bpf_filter.o: bpf_filter.c + $(CC) $(FULL_CFLAGS) -c bpf_filter.c + +# +# Generate the pcap-config script. +# +# Some Makes, e.g. AIX Make and Solaris Make, can't handle "--file=$@.tmp:$<"; +# for example, the Solaris 9 make man page says +# +# Because make assigns $< and $* as it would for implicit rules +# (according to the suffixes list and the directory contents), +# they may be unreliable when used within explicit target entries. +# +# and this is an explicit target entry. +# +# Therefore, instead of using $<, we explicitly put in $(srcdir)/pcap-config.in. +# +pcap-config: $(srcdir)/pcap-config.in ./config.status + @rm -f $@ $@.tmp + ./config.status --file=$@.tmp:$(srcdir)/pcap-config.in + mv $@.tmp $@ + chmod a+x $@ + +# +# Test programs - not built by default, and not installed. +# +tests: $(TESTS) + +capturetest: tests/capturetest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o capturetest $(srcdir)/tests/capturetest.c libpcap.a $(LIBS) + +can_set_rfmon_test: tests/can_set_rfmon_test.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o can_set_rfmon_test $(srcdir)/tests/can_set_rfmon_test.c libpcap.a $(LIBS) + +filtertest: tests/filtertest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o filtertest $(srcdir)/tests/filtertest.c libpcap.a $(LIBS) + +findalldevstest: tests/findalldevstest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o findalldevstest $(srcdir)/tests/findalldevstest.c libpcap.a $(LIBS) + +opentest: tests/opentest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o opentest $(srcdir)/tests/opentest.c libpcap.a $(LIBS) + +reactivatetest: tests/reactivatetest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o reactivatetest $(srcdir)/tests/reactivatetest.c libpcap.a $(LIBS) + +selpolltest: tests/selpolltest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o selpolltest $(srcdir)/tests/selpolltest.c libpcap.a $(LIBS) + +valgrindtest: tests/valgrindtest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o valgrindtest $(srcdir)/tests/valgrindtest.c libpcap.a $(LIBS) + +install: install-shared install-archive pcap-config + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + [ -d $(DESTDIR)$(includedir) ] || \ + (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir)) + [ -d $(DESTDIR)$(includedir)/pcap ] || \ + (mkdir -p $(DESTDIR)$(includedir)/pcap; chmod 755 $(DESTDIR)$(includedir)/pcap) + [ -d $(DESTDIR)$(mandir)/man1 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man1; chmod 755 $(DESTDIR)$(mandir)/man1) + [ -d $(DESTDIR)$(mandir)/man3 ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man3; chmod 755 $(DESTDIR)$(mandir)/man3) + [ -d $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@ ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@; chmod 755 $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@) + [ -d $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@ ] || \ + (mkdir -p $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@; chmod 755 $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@) + for i in $(PUBHDR); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(includedir)/$$i; done + [ -d $(DESTDIR)$(bindir) ] || \ + (mkdir -p $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) + $(INSTALL_PROGRAM) pcap-config $(DESTDIR)$(bindir)/pcap-config + for i in $(MAN1); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(mandir)/man1/$$i; done + for i in $(MAN3PCAP_NOEXPAND); do \ + $(INSTALL_DATA) $(srcdir)/$$i \ + $(DESTDIR)$(mandir)/man3/$$i; done + for i in $(MAN3PCAP_EXPAND:.in=); do \ + $(INSTALL_DATA) $$i \ + $(DESTDIR)$(mandir)/man3/$$i; done + (cd $(DESTDIR)$(mandir)/man3 && \ + rm -f pcap_datalink_val_to_description.3pcap && \ + $(LN_S) pcap_datalink_val_to_name.3pcap \ + pcap_datalink_val_to_description.3pcap && \ + rm -f pcap_dump_fopen.3pcap && \ + $(LN_S) pcap_dump_open.3pcap pcap_dump_fopen.3pcap && \ + rm -f pcap_freealldevs.3pcap && \ + $(LN_S) pcap_findalldevs.3pcap pcap_freealldevs.3pcap && \ + rm -f pcap_perror.3pcap && \ + $(LN_S) pcap_geterr.3pcap pcap_perror.3pcap && \ + rm -f pcap_sendpacket.3pcap && \ + $(LN_S) pcap_inject.3pcap pcap_sendpacket.3pcap && \ + rm -f pcap_free_datalinks.3pcap && \ + $(LN_S) pcap_list_datalinks.3pcap pcap_free_datalinks.3pcap && \ + rm -f pcap_free_tstamp_types.3pcap && \ + $(LN_S) pcap_list_tstamp_types.3pcap pcap_free_tstamp_types.3pcap && \ + rm -f pcap_dispatch.3pcap && \ + $(LN_S) pcap_loop.3pcap pcap_dispatch.3pcap && \ + rm -f pcap_minor_version.3pcap && \ + $(LN_S) pcap_major_version.3pcap pcap_minor_version.3pcap && \ + rm -f pcap_next.3pcap && \ + $(LN_S) pcap_next_ex.3pcap pcap_next.3pcap && \ + rm -f pcap_open_dead_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_dead.3pcap \ + pcap_open_dead_with_tstamp_precision.3pcap && \ + rm -f pcap_open_offline_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_open_offline_with_tstamp_precision.3pcap && \ + rm -f pcap_fopen_offline.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_fopen_offline.3pcap && \ + rm -f pcap_fopen_offline_with_tstamp_precision.3pcap && \ + $(LN_S) pcap_open_offline.3pcap pcap_fopen_offline_with_tstamp_precision.3pcap && \ + rm -f pcap_tstamp_type_val_to_description.3pcap && \ + $(LN_S) pcap_tstamp_type_val_to_name.3pcap pcap_tstamp_type_val_to_description.3pcap && \ + rm -f pcap_getnonblock.3pcap && \ + $(LN_S) pcap_setnonblock.3pcap pcap_getnonblock.3pcap) + for i in $(MANFILE); do \ + $(INSTALL_DATA) `echo $$i | sed 's/.manfile.in/.manfile/'` \ + $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@/`echo $$i | sed 's/.manfile.in/.@MAN_FILE_FORMATS@/'`; done + for i in $(MANMISC); do \ + $(INSTALL_DATA) `echo $$i | sed 's/.manmisc.in/.manmisc/'` \ + $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done + +install-shared: install-shared-$(DYEXT) +install-shared-so: libpcap.so + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + $(INSTALL_PROGRAM) libpcap.so.$$VER $(DESTDIR)$(libdir)/libpcap.so.$$VER; \ + ln -sf libpcap.so.$$VER $(DESTDIR)$(libdir)/libpcap.so.$$MAJOR_VER; \ + ln -sf libpcap.so.$$MAJOR_VER $(DESTDIR)$(libdir)/libpcap.so +install-shared-dylib: libpcap.dylib + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + $(INSTALL_PROGRAM) libpcap.$$VER.dylib $(DESTDIR)$(libdir)/libpcap.$$VER.dylib; \ + ln -sf libpcap.$$VER.dylib $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER.dylib; \ + ln -sf libpcap.$$MAJOR_VER.dylib $(DESTDIR)$(libdir)/libpcap.dylib +install-shared-sl: libpcap.sl + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + $(INSTALL_PROGRAM) libpcap.$$MAJOR_VER $(DESTDIR)$(libdir) + ln -sf libpcap.$$MAJOR_VER $(DESTDIR)$(libdir)/libpcap.sl +install-shared-shareda: libpcap.shareda + # + # AIX shared libraries are weird. They're archive libraries + # with one or more shared object components. + # + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + $(INSTALL_PROGRAM) libpcap.shareda $(DESTDIR)$(libdir)/libpcap.a +install-shared-none: + +install-archive: install-archive-$(DYEXT) +install-archive-so install-archive-dylib install-archive-sl install-archive-none: libpcap.a + # + # Most platforms have separate suffixes for shared and + # archive libraries, so we install both. + # + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a + $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a +install-archive-shareda: + # + # AIX, however, doesn't, so we don't install the archive + # library on AIX. + # + +uninstall: uninstall-shared + rm -f $(DESTDIR)$(libdir)/libpcap.a + for i in $(PUBHDR); do \ + rm -f $(DESTDIR)$(includedir)/$$i; done + -rmdir $(DESTDIR)$(includedir)/pcap + rm -f $(DESTDIR)/$(bindir)/pcap-config + for i in $(MAN1); do \ + rm -f $(DESTDIR)$(mandir)/man1/$$i; done + for i in $(MAN3PCAP); do \ + rm -f $(DESTDIR)$(mandir)/man3/$$i; done + rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_open_dead_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_open_offline_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline_with_tstamp_precision.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_tstamp_type_val_to_description.3pcap + for i in $(MANFILE); do \ + rm -f $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@/`echo $$i | sed 's/.manfile.in/.@MAN_FILE_FORMATS@/'`; done + for i in $(MANMISC); do \ + rm -f $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done + +uninstall-shared: uninstall-shared-$(DYEXT) +uninstall-shared-so: + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so.$$VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so.$$MAJOR_VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.so +uninstall-shared-dylib: + VER=`cat $(srcdir)/VERSION`; \ + MAJOR_VER=A; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$VER.dylib; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER.dylib; \ + rm -f $(DESTDIR)$(libdir)/libpcap.dylib +uninstall-shared-sl: + MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' $(srcdir)/VERSION`; \ + rm -f $(DESTDIR)$(libdir)/libpcap.$$MAJOR_VER; \ + rm -f $(DESTDIR)$(libdir)/libpcap.sl +uninstall-shared-shareda: + rm -f $(DESTDIR)$(libdir)/libpcap.a +uninstall-shared-none: + +clean: + rm -f $(CLEANFILES) + +distclean: clean + rm -f Makefile config.cache config.log config.status \ + config.h gnuc.h net os-proto.h bpf_filter.c pcap-config \ + stamp-h stamp-h.in + rm -f $(MAN3PCAP_EXPAND:.in=) $(MANFILE:.in=) $(MANMISC:.in=) + rm -rf autom4te.cache + +extags: $(TAGFILES) + ctags $(TAGFILES) + +tags: $(TAGFILES) + ctags -wtd $(TAGFILES) + +releasetar: + @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \ + mkdir $$name; \ + tar cf - $(CSRC) $(HDR) $(MAN1) $(MAN3PCAP_EXPAND) \ + $(MAN3PCAP_NOEXPAND) $(MANFILE) $(MANMISC) $(EXTRA_DIST) | \ + (cd $$name; tar xf -); \ + tar -c -z -f $$name.tar.gz $$name; \ + rm -rf $$name + +depend: $(GENSRC) $(GENHDR) bpf_filter.c + $(MKDEP) -c $(CC) -m $(CFLAGS) $(DEPENDENCY_CFLAG) $(DEFS) $(INCLS) $(SRC) diff --git a/libpcap-1.8.1/README b/libpcap-1.8.1/README new file mode 100644 index 00000000..9f65948d --- /dev/null +++ b/libpcap-1.8.1/README @@ -0,0 +1,106 @@ +LIBPCAP 1.x.y + +www.tcpdump.org + +Please send inquiries/comments/reports to: + tcpdump-workers@lists.tcpdump.org + +Anonymous Git is available via: + git clone git://bpf.tcpdump.org/libpcap + +Please submit patches by forking the branch on GitHub at + + http://github.com/the-tcpdump-group/libpcap/tree/master + +and issuing a pull request. + +formerly from Lawrence Berkeley National Laboratory + Network Research Group + ftp://ftp.ee.lbl.gov/old/libpcap-0.4a7.tar.Z + +This directory contains source code for libpcap, a system-independent +interface for user-level packet capture. libpcap provides a portable +framework for low-level network monitoring. Applications include +network statistics collection, security monitoring, network debugging, +etc. Since almost every system vendor provides a different interface +for packet capture, and since we've developed several tools that +require this functionality, we've created this system-independent API +to ease in porting and to alleviate the need for several +system-dependent packet capture modules in each application. + +For some platforms there are README.{system} files that discuss issues +with the OS's interface for packet capture on those platforms, such as +how to enable support for that interface in the OS, if it's not built in +by default. + +The libpcap interface supports a filtering mechanism based on the +architecture in the BSD packet filter. BPF is described in the 1993 +Winter Usenix paper ``The BSD Packet Filter: A New Architecture for +User-level Packet Capture''. A compressed PostScript version can be +found at + + ftp://ftp.ee.lbl.gov/papers/bpf-usenix93.ps.Z + +or + + http://www.tcpdump.org/papers/bpf-usenix93.ps.Z + +and a gzipped version can be found at + + http://www.tcpdump.org/papers/bpf-usenix93.ps.gz + +A PDF version can be found at + + http://www.tcpdump.org/papers/bpf-usenix93.pdf + +Although most packet capture interfaces support in-kernel filtering, +libpcap utilizes in-kernel filtering only for the BPF interface. +On systems that don't have BPF, all packets are read into user-space +and the BPF filters are evaluated in the libpcap library, incurring +added overhead (especially, for selective filters). Ideally, libpcap +would translate BPF filters into a filter program that is compatible +with the underlying kernel subsystem, but this is not yet implemented. + +BPF is standard in 4.4BSD, BSD/OS, NetBSD, FreeBSD, OpenBSD, DragonFly +BSD, and Mac OS X; an older, modified and undocumented version is +standard in AIX. {DEC OSF/1, Digital UNIX, Tru64 UNIX} uses the +packetfilter interface but has been extended to accept BPF filters +(which libpcap utilizes). Also, you can add BPF filter support to +Ultrix using the kernel source and/or object patches available in: + + http://www.tcpdump.org/other/bpfext42.tar.Z + +Linux, in the 2.2 kernel and later kernels, has a "Socket Filter" +mechanism that accepts BPF filters; see the README.linux file for +information on configuring that option. + +Note to Linux distributions and *BSD systems that include libpcap: + +There's now a rule to make a shared library, which should work on Linux +and *BSD, among other platforms. + +It sets the soname of the library to "libpcap.so.1"; this is what it +should be, *NOT* libpcap.so.1.x or libpcap.so.1.x.y or something such as +that. + +We've been maintaining binary compatibility between libpcap releases for +quite a while; there's no reason to tie a binary linked with libpcap to +a particular release of libpcap. + +Problems, bugs, questions, desirable enhancements, etc. should be sent +to the address "tcpdump-workers@lists.tcpdump.org". Bugs, support +requests, and feature requests may also be submitted on the GitHub issue +tracker for libpcap at + + https://github.com/the-tcpdump-group/libpcap/issues + +Source code contributions, etc. should be sent to the email address +above or submitted by forking the branch on GitHub at + + http://github.com/the-tcpdump-group/libpcap/tree/master + +and issuing a pull request. + +Current versions can be found at www.tcpdump.org. + + - The TCPdump team diff --git a/libpcap-1.8.1/README.Win32 b/libpcap-1.8.1/README.Win32 new file mode 100644 index 00000000..0a42dab9 --- /dev/null +++ b/libpcap-1.8.1/README.Win32 @@ -0,0 +1,46 @@ +Under Win32, libpcap is integrated in the WinPcap packet capture system. +WinPcap provides a framework that allows libpcap to capture the packets +under Windows 95, Windows 98, Windows ME, Windows NT 4, Windows 2000 +and Windows XP. +WinPcap binaries and source code can be found at http://winpcap.polito.it: +they include also a developer's pack with all the necessary to compile +libpcap-based applications under Windows. + +How to compile libpcap with Visual Studio +----------------------------------------- + +In order to compile libpcap you will need: + +- version 6 (or higher) of Microsoft Visual Studio +- The November 2001 (or later) edition of Microsoft Platform +Software Development Kit (SDK), that contains some necessary includes +for IPv6 support. You can download it from http://www.microsoft.com/sdk +- the latest WinPcap sources from http://winpcap.polito.it/install + +The WinPcap source code already contains a recent (usually the latest +stable) version of libpcap. If you need to compile a different one, +simply download it from www.tcpdump.org and copy the sources in the +winpcap\wpcap\libpcap folder of the WinPcap distribution. If you want to +compile a libpcap source retrieved from the tcpdump.org Git, you will +have to create the scanner and the grammar by hand (with lex and yacc) +or with the cygnus makefile, since The Visual Studio project is not able +to build them. + +Open the project file winpcap\wpcap\prj\wpcap.dsw with Visual Studio and +build wpcap.dll. wpcap.lib, the library file to link with the applications, +will be generated in winpcap\wpcap\lib\. wpcap.dll will be generated in +winpcap\wpcap\prj\release or winpcap\wpcap\prj\debug depending on the type +of binary that is being created. + +How to compile libpcap with Cygnus +---------------------------------- + +To build wpcap.dll, cd to the directory WPCAP/PRJ of the WinPcap source code +distribution and type "make". libwpcap.a, the library file to link with the +applications, will be generated in winpcap\wpcap\lib\. wpcap.dll will be +generated in winpcap\wpcap\prj. + +Remember, you CANNOT use the MSVC-generated .lib files with gcc, use +libwpcap.a instead. + +"make install" installs wpcap.dll in the Windows system folder. diff --git a/libpcap-1.8.1/README.aix b/libpcap-1.8.1/README.aix new file mode 100644 index 00000000..92e513ff --- /dev/null +++ b/libpcap-1.8.1/README.aix @@ -0,0 +1,88 @@ +Using BPF: + +(1) AIX 4.x's version of BPF is undocumented and somewhat unstandard; the + current BPF support code includes changes that should work around + that; it appears to compile and work on at least one AIX 4.3.3 + machine. + + Note that the BPF driver and the "/dev/bpf" devices might not exist + on your machine; AIX's tcpdump loads the driver and creates the + devices if they don't already exist. Our libpcap should do the + same, and the configure script should detect that it's on an AIX + system and choose BPF even if the devices aren't there. + + Also note that tcpdump _binary_ compiled on AIX 4 may have a problem + doing the initial loading of the BPF driver if copied to AIX 5 and + run there (GH #52). tcpdump binary natively compiled on AIX 5 should + not have this issue. + +(2) If libpcap doesn't compile on your machine when configured to use + BPF, or if the workarounds fail to make it work correctly, you + should send to tcpdump-workers@lists.tcpdump.org a detailed bug + report (if the compile fails, send us the compile error messages; + if it compiles but fails to work correctly, send us as detailed as + possible a description of the symptoms, including indications of the + network link-layer type being wrong or time stamps being wrong). + + If you fix the problems yourself, please submit a patch by forking + the branch at + + https://github.com/the-tcpdump-group/libpcap/issues + + and issuing a pull request, so we can incorporate the fixes into the + next release. + + If you don't fix the problems yourself, you can, as a workaround, + make libpcap use DLPI instead of BPF. + + This can be done by specifying the flag: + + --with-pcap=dlpi + + to the "configure" script for libpcap. + +If you use DLPI: + +(1) It is a good idea to have the latest version of the DLPI driver on + your system, since certain versions may be buggy and cause your AIX + system to crash. DLPI is included in the fileset bos.rte.tty. I + found that the DLPI driver that came with AIX 4.3.2 was buggy, and + had to upgrade to bos.rte.tty 4.3.2.4: + + lslpp -l bos.rte.tty + + bos.rte.tty 4.3.2.4 COMMITTED Base TTY Support and Commands + + Updates for AIX filesets can be obtained from: + ftp://service.software.ibm.com/aix/fixes/ + + These updates can be installed with the smit program. + +(2) After compiling libpcap, you need to make sure that the DLPI driver + is loaded. Type: + + strload -q -d dlpi + + If the result is: + + dlpi: yes + + then the DLPI driver is loaded correctly. + + If it is: + + dlpi: no + + Then you need to type: + + strload -f /etc/dlpi.conf + + Check again with strload -q -d dlpi that the dlpi driver is loaded. + + Alternatively, you can uncomment the lines for DLPI in + /etc/pse.conf and reboot the machine; this way DLPI will always + be loaded when you boot your system. + +(3) There appears to be a problem in the DLPI code in some versions of + AIX, causing a warning about DL_PROMISC_MULTI failing; this might + be responsible for DLPI not being able to capture outgoing packets. diff --git a/libpcap-1.8.1/README.dag b/libpcap-1.8.1/README.dag new file mode 100644 index 00000000..accae7c3 --- /dev/null +++ b/libpcap-1.8.1/README.dag @@ -0,0 +1,122 @@ + +The following instructions apply if you have a Linux or FreeBSD platform and +want libpcap to support the DAG range of passive network monitoring cards from +Endace (http://www.endace.com, see below for further contact details). + +1) Install and build the DAG software distribution by following the +instructions supplied with that package. Current Endace customers can download +the DAG software distibution from https://www.endace.com + +2) Configure libcap. To allow the 'configure' script to locate the DAG +software distribution use the '--with-dag' option: + + ./configure --with-dag=DIR + +Where DIR is the root of the DAG software distribution, for example +/var/src/dag. If the DAG software is correctly detected 'configure' will +report: + + checking whether we have DAG API... yes + +If 'configure' reports that there is no DAG API, the directory may have been +incorrectly specified or the DAG software was not built before configuring +libpcap. + +See also the libpcap INSTALL.txt file for further libpcap configuration +options. + +Building libpcap at this stage will include support for both the native packet +capture stream (linux or bpf) and for capturing from DAG cards. To build +libpcap with only DAG support specify the capture type as 'dag' when +configuring libpcap: + + ./configure --with-dag=DIR --with-pcap=dag + +Applications built with libpcap configured in this way will only detect DAG +cards and will not capture from the native OS packet stream. + +---------------------------------------------------------------------- + +Libpcap when built for DAG cards against dag-2.5.1 or later releases: + +Timeouts are supported. pcap_dispatch() will return after to_ms milliseconds +regardless of how many packets are received. If to_ms is zero pcap_dispatch() +will block waiting for data indefinitely. + +pcap_dispatch() will block on and process a minimum of 64kB of data (before +filtering) for efficiency. This can introduce high latencies on quiet +interfaces unless a timeout value is set. The timeout expiring will override +the 64kB minimum causing pcap_dispatch() to process any available data and +return. + +pcap_setnonblock is supported. When nonblock is set, pcap_dispatch() will +check once for available data, process any data available up to count, then +return immediately. + +pcap_findalldevs() is supported, e.g. dag0, dag1... + +Some DAG cards can provide more than one 'stream' of received data. +This can be data from different physical ports, or separated by filtering +or load balancing mechanisms. Receive streams have even numbers, e.g. +dag0:0, dag0:2 etc. Specifying transmit streams for capture is not supported. + +pcap_setfilter() is supported, BPF programs run in userspace. + +pcap_setdirection() is not supported. Only received traffic is captured. +DAG cards normally do not have IP or link layer addresses assigned as +they are used to passively monitor links. + +pcap_breakloop() is supported. + +pcap_datalink() and pcap_list_datalinks() are supported. The DAG card does +not attempt to set the correct datalink type automatically where more than +one type is possible. + +pcap_stats() is supported. ps_drop is the number of packets dropped due to +RX stream buffer overflow, this count is before filters are applied (it will +include packets that would have been dropped by the filter). The RX stream +buffer size is user configurable outside libpcap, typically 16-512MB. + +pcap_get_selectable_fd() is not supported, as DAG cards do not support +poll/select methods. + +pcap_inject() and pcap_sendpacket() are not supported. + +Some DAG cards now support capturing to multiple virtual interfaces, called +streams. Capture streams have even numbers. These are available via libpcap +as separate interfaces, e.g. dag0:0, dag0:2, dag0:4 etc. dag0:0 is the same +as dag0. These are visible via pcap_findalldevs(). + +libpcap now does NOT set the card's hardware snaplen (slen). This must now be +set using the appropriate DAG coniguration program, e.g. dagthree, dagfour, +dagsix, dagconfig. This is because the snaplen is currently shared between +all of the streams. In future this may change if per-stream slen is +implemented. + +DAG cards by default capture entire packets including the L2 +CRC/FCS. If the card is not configured to discard the CRC/FCS, this +can confuse applications that use libpcap if they're not prepared for +packets to have an FCS. + +Libpcap now reads the environment variable ERF_FCS_BITS to determine +how many bits of CRC/FCS to strip from the end of the captured +frame. This defaults to 32 for use with Ethernet. If the card is +configured to strip the CRC/FCS, then set ERF_FCS_BITS=0. If used with +a HDLC/PoS/PPP/Frame Relay link with 16 bit CRC/FCS, then set +ERF_FCS_BITS=16. + +If you wish to create a pcap file that DOES contain the Ethernet FCS, +specify the environment variable ERF_DONT_STRIP_FCS. This will cause +the existing FCS to be captured into the pcap file. Note some +applications may incorrectly report capture errors or oversize packets +when reading these files. + +---------------------------------------------------------------------- + +Please submit bug reports via . + +Please also visit our Web site at: + + http://www.endace.com/ + +For more information about Endace DAG cards contact . diff --git a/libpcap-1.8.1/README.hpux b/libpcap-1.8.1/README.hpux new file mode 100644 index 00000000..65ecff97 --- /dev/null +++ b/libpcap-1.8.1/README.hpux @@ -0,0 +1,254 @@ +For HP-UX 11i (11.11) and later, there are no known issues with +promiscuous mode under HP-UX. If you are using a earlier version of +HP-UX and cannot upgrade, please continue reading. + +HP-UX patches to fix packet capture problems + +Note that packet-capture programs such as tcpdump may, on HP-UX, not be +able to see packets sent from the machine on which they're running. +Some articles on groups.google.com discussing this are: + + http://groups.google.com/groups?selm=82ld3v%2480i%241%40mamenchi.zrz.TU-Berlin.DE + +which says: + + Newsgroups: comp.sys.hp.hpux + Subject: Re: Did someone made tcpdump working on 10.20 ? + Date: 12/08/1999 + From: Lutz Jaenicke + + In article <82ks5i$5vc$1@news1.dti.ne.jp>, mtsat + wrote: + >Hello, + > + >I downloaded and compiled tcpdump3.4 a couple of week ago. I tried to use + >it, but I can only see incoming data, never outgoing. + >Someone (raj) explained me that a patch was missing, and that this patch + >must me "patched" (poked) in order to see outbound data in promiscuous mode. + >Many things to do .... So the question is : did someone has already this + >"ready to use" PHNE_**** patch ? + + Two things: + 1. You do need a late "LAN products cumulative patch" (e.g. PHNE_18173 + for s700/10.20). + 2. You must use +echo 'lanc_outbound_promisc_flag/W1' | /usr/bin/adb -w /stand/vmunix /dev/kmem + You can insert this e.g. into /sbin/init.d/lan + + Best regards, + Lutz + +and + + http://groups.google.com/groups?selm=88cf4t%24p03%241%40web1.cup.hp.com + +which says: + + Newsgroups: comp.sys.hp.hpux + Subject: Re: tcpdump only shows incoming packets + Date: 02/15/2000 + From: Rick Jones + + Harald Skotnes wrote: + > I am running HPUX 11.0 on a C200 hanging on a 100Mb switch. I have + > compiled libpcap-0.4 an tcpdump-3.4 and it seems to work. But at a + > closer look I only get to see the incoming packets not the + > outgoing. I have tried tcpflow-0.12 which also uses libpcap and the + > same thing happens. Could someone please give me a hint on how to + > get this right? + + Search/Read the archives ?-) + + What you are seeing is expected, un-patched, behaviour for an HP-UX + system. On 11.00, you need to install the latest lancommon/DLPI + patches, and then the latest driver patch for the interface(s) in use. + At that point, a miracle happens and you should start seeing outbound + traffic. + +[That article also mentions the patch that appears below.] + +and + + http://groups.google.com/groups?selm=38AA973E.96BE7DF7%40cc.uit.no + +which says: + + Newsgroups: comp.sys.hp.hpux + Subject: Re: tcpdump only shows incoming packets + Date: 02/16/2000 + From: Harald Skotnes + + Rick Jones wrote: + + ... + + > What you are seeing is expected, un-patched, behaviour for an HP-UX + > system. On 11.00, you need to install the latest lancommon/DLPI + > patches, and then the latest driver patch for the interface(s) in + > use. At that point, a miracle happens and you should start seeing + > outbound traffic. + + Thanks a lot. I have this problem on several machines running HPUX + 10.20 and 11.00. The machines where patched up before y2k so did not + know what to think. Anyway I have now installed PHNE_19766, + PHNE_19826, PHNE_20008, PHNE_20735 on the C200 and now I can see the + outbound traffic too. Thanks again. + +(although those patches may not be the ones to install - there may be +later patches). + +And another message to tcpdump-workers@tcpdump.org, from Rick Jones: + + Date: Mon, 29 Apr 2002 15:59:55 -0700 + From: Rick Jones + To: tcpdump-workers@tcpdump.org + Subject: Re: [tcpdump-workers] I Can't Capture the Outbound Traffic + + ... + + http://itrc.hp.com/ would be one place to start in a search for the most + up-to-date patches for DLPI and the lan driver(s) used on your system (I + cannot guess because 9000/800 is too generic - one hs to use the "model" + command these days and/or an ioscan command (see manpage) to guess what + the drivers (btlan[3456], gelan, etc) might be involved in addition to + DLPI. + + Another option is to upgrade to 11i as outbound promiscuous mode support + is there in the base OS, no patches required. + +Another posting: + + http://groups.google.com/groups?selm=7d6gvn%24b3%241%40ocean.cup.hp.com + +indicates that you need to install the optional STREAMS product to do +captures on HP-UX 9.x: + + Newsgroups: comp.sys.hp.hpux + Subject: Re: tcpdump HP/UX 9.x + Date: 03/22/1999 + From: Rick Jones + + Dave Barr (barr@cis.ohio-state.edu) wrote: + : Has anyone ported tcpdump (or something similar) to HP/UX 9.x? + + I'm reasonably confident that any port of tcpdump to 9.X would require + the (then optional) STREAMS product. This would bring DLPI, which is + what one uses to access interfaces in promiscuous mode. + + I'm not sure that HP even sells the 9.X STREAMS product any longer, + since HP-UX 9.X is off the pricelist (well, maybe 9.10 for the old 68K + devices). + + Your best bet is to be up on 10.20 or better if that is at all + possible. If your hardware is supported by it, I'd go with HP-UX 11. + If you want to see the system's own outbound traffic, you'll never get + that functionality on 9.X, but it might happen at some point for 10.20 + and 11.X. + + rick jones + +(as per other messages cited here, the ability to see the system's own +outbound traffic did happen). + +Rick Jones reports that HP-UX 11i needs no patches for outbound +promiscuous mode support. + +An additional note, from Jost Martin, for HP-UX 10.20: + + Q: How do I get ethereral on HPUX to capture the _outgoing_ packets + of an interface + A: You need to get PHNE_20892,PHNE_20725 and PHCO_10947 (or + newer, this is as of 4.4.00) and its dependencies. Then you can + enable the feature as descibed below: + + Patch Name: PHNE_20892 + Patch Description: s700 10.20 PCI 100Base-T cumulative patch + To trace the outbound packets, please do the following + to turn on a global promiscuous switch before running + the promiscuous applications like snoop or tcpdump: + + adb -w /stand/vmunix /dev/mem + lanc_outbound_promisc_flag/W 1 + (adb will echo the result showing that the flag has + been changed) + $quit + (Thanks for this part to HP-support, Ratingen) + + The attached hack does this and some security-related stuff + (thanks to hildeb@www.stahl.bau.tu-bs.de (Ralf Hildebrandt) who + posted the security-part some time ago) + + <> + + (Don't switch IP-forwarding off, if you need it !) + Install the hack as /sbin/init.d/hacl_ip_stack (adjust + permissions !) and make a sequencing-symlink + /sbin/rc2.d/S350hack_ip_stack pointing to this script. + Now all this is done on every reboot. + +According to Rick Jones, the global promiscuous switch also has to be +turned on for HP-UX 11.00, but not for 11i - and, in fact, the switch +doesn't even exist on 11i. + +Here's the "hack_ip_stack" script: + +-----------------------------------Cut Here------------------------------------- +#!/sbin/sh +# +# nettune: hack kernel parms for safety + +OKAY=0 +ERROR=-1 + +# /usr/contrib/bin fuer nettune auf Pfad +PATH=/sbin:/usr/sbin:/usr/bin:/usr/contrib/bin +export PATH + + +########## +# main # +########## + +case $1 in + start_msg) + print "Tune IP-Stack for security" + exit $OKAY + ;; + + stop_msg) + print "This action is not applicable" + exit $OKAY + ;; + + stop) + exit $OKAY + ;; + + start) + ;; # fall through + + *) + print "USAGE: $0 {start_msg | stop_msg | start | stop}" >&2 + exit $ERROR + ;; + esac + +########### +# start # +########### + +# +# tcp-Sequence-Numbers nicht mehr inkrementieren sondern random +# Syn-Flood-Protection an +# ip_forwarding aus +# Source-Routing aus +# Ausgehende Packets an ethereal/tcpdump etc. + +/usr/contrib/bin/nettune -s tcp_random_seq 2 || exit $ERROR +/usr/contrib/bin/nettune -s hp_syn_protect 1 || exit $ERROR +/usr/contrib/bin/nettune -s ip_forwarding 0 || exit $ERROR +echo 'ip_block_source_routed/W1' | /usr/bin/adb -w /stand/vmunix /dev/kmem || exit $ERROR +echo 'lanc_outbound_promisc_flag/W 1' | adb -w /stand/vmunix /dev/mem || exit $ERROR + +exit $OKAY +-----------------------------------Cut Here------------------------------------- diff --git a/libpcap-1.8.1/README.linux b/libpcap-1.8.1/README.linux new file mode 100644 index 00000000..ffcb9288 --- /dev/null +++ b/libpcap-1.8.1/README.linux @@ -0,0 +1,108 @@ +In order for libpcap to be able to capture packets on a Linux system, +the "packet" protocol must be supported by your kernel. If it is not, +you may get error messages such as + + modprobe: can't locate module net-pf-17 + +in "/var/adm/messages", or may get messages such as + + socket: Address family not supported by protocol + +from applications using libpcap. + +You must configure the kernel with the CONFIG_PACKET option for this +protocol; the following note is from the Linux "Configure.help" file for +the 2.0[.x] kernel: + + Packet socket + CONFIG_PACKET + The Packet protocol is used by applications which communicate + directly with network devices without an intermediate network + protocol implemented in the kernel, e.g. tcpdump. If you want them + to work, choose Y. + + This driver is also available as a module called af_packet.o ( = + code which can be inserted in and removed from the running kernel + whenever you want). If you want to compile it as a module, say M + here and read Documentation/modules.txt; if you use modprobe or + kmod, you may also want to add "alias net-pf-17 af_packet" to + /etc/modules.conf. + +and the note for the 2.2[.x] kernel says: + + Packet socket + CONFIG_PACKET + The Packet protocol is used by applications which communicate + directly with network devices without an intermediate network + protocol implemented in the kernel, e.g. tcpdump. If you want them + to work, choose Y. This driver is also available as a module called + af_packet.o ( = code which can be inserted in and removed from the + running kernel whenever you want). If you want to compile it as a + module, say M here and read Documentation/modules.txt. You will + need to add 'alias net-pf-17 af_packet' to your /etc/conf.modules + file for the module version to function automatically. If unsure, + say Y. + +In addition, there is an option that, in 2.2 and later kernels, will +allow packet capture filters specified to programs such as tcpdump to be +executed in the kernel, so that packets that don't pass the filter won't +be copied from the kernel to the program, rather than having all packets +copied to the program and libpcap doing the filtering in user mode. + +Copying packets from the kernel to the program consumes a significant +amount of CPU, so filtering in the kernel can reduce the overhead of +capturing packets if a filter has been specified that discards a +significant number of packets. (If no filter is specified, it makes no +difference whether the filtering isn't performed in the kernel or isn't +performed in user mode. :-)) + +The option for this is the CONFIG_FILTER option; the "Configure.help" +file says: + + Socket filtering + CONFIG_FILTER + The Linux Socket Filter is derived from the Berkeley Packet Filter. + If you say Y here, user-space programs can attach a filter to any + socket and thereby tell the kernel that it should allow or disallow + certain types of data to get through the socket. Linux Socket + Filtering works on all socket types except TCP for now. See the text + file linux/Documentation/networking/filter.txt for more information. + If unsure, say N. + +Note that, by default, libpcap will, if libnl is present, build with it; +it uses libnl to support monitor mode on mac80211 devices. There is a +configuration option to disable building with libnl, but, if that option +is chosen, the monitor-mode APIs (as used by tcpdump's "-I" flag, and as +will probably be used by other applications in the future) won't work +properly on mac80211 devices. + +Linux's run-time linker allows shared libraries to be linked with other +shared libraries, which means that if an older version of a shared +library doesn't require routines from some other shared library, and a +later version of the shared library does require those routines, the +later version of the shared library can be linked with that other shared +library and, if it's otherwise binary-compatible with the older version, +can replace that older version without breaking applications built with +the older version, and without breaking configure scripts or the build +procedure for applications whose configure script doesn't use the +pcap-config script if they build with the shared library. (The build +procedure for applications whose configure scripts use the pcap-config +script if present will not break even if they build with the static +library.) + +Statistics: +Statistics reported by pcap are platform specific. The statistics +reported by pcap_stats on Linux are as follows: + +2.2.x +===== +ps_recv Number of packets that were accepted by the pcap filter +ps_drop Always 0, this statistic is not gatherd on this platform + +2.4.x +===== +ps_recv Number of packets that were accepted by the pcap filter +ps_drop Number of packets that had passed filtering but were not + passed on to pcap due to things like buffer shortage, etc. + This is useful because these are packets you are interested in + but won't be reported by, for example, tcpdump output. diff --git a/libpcap-1.8.1/README.macosx b/libpcap-1.8.1/README.macosx new file mode 100644 index 00000000..3dc92117 --- /dev/null +++ b/libpcap-1.8.1/README.macosx @@ -0,0 +1,74 @@ +As with other systems using BPF, Mac OS X allows users with read access +to the BPF devices to capture packets with libpcap and allows users with +write access to the BPF devices to send packets with libpcap. + +On some systems that use BPF, the BPF devices live on the root file +system, and the permissions and/or ownership on those devices can be +changed to give users other than root permission to read or write those +devices. + +On newer versions of FreeBSD, the BPF devices live on devfs, and devfs +can be configured to set the permissions and/or ownership of those +devices to give users other than root permission to read or write those +devices. + +On Mac OS X, the BPF devices live on devfs, but the OS X version of +devfs is based on an older (non-default) FreeBSD devfs, and that version +of devfs cannot be configured to set the permissions and/or ownership of +those devices. + +Therefore, we supply: + + a "startup item" for older versions of Mac OS X; + + a launchd daemon for Tiger and later versions of Mac OS X; + +Both of them will change the ownership of the BPF devices so that the +"admin" group owns them, and will change the permission of the BPF +devices to rw-rw----, so that all users in the "admin" group - i.e., all +users with "Allow user to administer this computer" turned on - have +both read and write access to them. + +The startup item is in the ChmodBPF directory in the source tree. A +/Library/StartupItems directory should be created if it doesn't already +exist, and the ChmodBPF directory should be copied to the +/Library/StartupItems directory (copy the entire directory, so that +there's a /Library/StartupItems/ChmodBPF directory, containing all the +files in the source tree's ChmodBPF directory; don't copy the individual +items in that directory to /Library/StartupItems). The ChmodBPF +directory, and all files under it, must be owned by root. Installing +the files won't immediately cause the startup item to be executed; it +will be executed on the next reboot. To change the permissions before +the reboot, run + + sudo SystemStarter start ChmodBPF + +The launchd daemon is the chmod_bpf script, plus the +org.tcpdump.chmod_bpf.plist launchd plist file. chmod_bpf should be +installed in /usr/local/bin/chmod_bpf, and org.tcpdump.chmod_bpf.plist +should be installed in /Library/LaunchDaemons. chmod_bpf, and +org.tcpdump.chmod_bpf.plist, must be owned by root. Installing the +script and plist file won't immediately cause the script to be executed; +it will be executed on the next reboot. To change the permissions +before the reboot, run + + sudo /usr/local/bin/chmod_bpf + +or + + sudo launchctl load /Library/LaunchDaemons/org.tcpdump.chmod_bpf.plist + +If you want to give a particular user permission to access the BPF +devices, rather than giving all administrative users permission to +access them, you can have the ChmodBPF/ChmodBPF script change the +ownership of /dev/bpf* without changing the permissions. If you want to +give a particular user permission to read and write the BPF devices and +give the administrative users permission to read but not write the BPF +devices, you can have the script change the owner to that user, the +group to "admin", and the permissions to rw-r-----. Other possibilities +are left as an exercise for the reader. + +(NOTE: due to a bug in Snow Leopard, if you change the permissions not +to grant write permission to everybody who should be allowed to capture +traffic, non-root users who cannot open the BPF devices for writing will +not be able to capture outgoing packets.) diff --git a/libpcap-1.8.1/README.septel b/libpcap-1.8.1/README.septel new file mode 100644 index 00000000..483de6a7 --- /dev/null +++ b/libpcap-1.8.1/README.septel @@ -0,0 +1,50 @@ +The following instructions apply if you have a Linux platform and want +libpcap to support the Septel range of passive network monitoring cards +from Intel (http://www.intel.com) + +1) Install and build the Septel software distribution by following the +instructions supplied with that package. + +2) Configure libcap. To allow the 'configure' script to locate the Septel +software distribution use the '--with-septel' option: + + ./configure --with-septel=DIR + +where DIR is the root of the Septel software distribution, for example +/var/src/septel. + +By default (if you write only ./configure --with-septel) it takes +./../septel as argument for DIR. + +If the Septel software is correctly detected 'configure' will +report: + + checking whether we have Septel API... yes + +If 'configure' reports that there is no Septel API, the directory may have been +incorrectly specified or the Septel software was not built before configuring +libpcap. + +See also the libpcap INSTALL.txt file for further libpcap configuration +options. + +Building libpcap at this stage will include support for both the native +packet capture stream and for capturing from Septel cards. To build +libpcap with only Septel support specify the capture type as 'septel' +when configuring libpcap: + + ./configure --with-septel=DIR --with-pcap=septel + +Applications built with libpcap configured in this way will only detect Septel +cards and will not capture from the native OS packet stream. + +Note: As mentioned in pcap-septel.c we should first edit the system.txt +file to change the user part example (UPE) module id to 0xdd instead of +0x2d for technical reason. So this change in system.txt is crutial and +things will go wrong if it's not done. System.txt along with config.txt +are configuration files that are edited by the user before running the +gctload program that uses these files for initialising modules and +configuring parameters. + +---------------------------------------------------------------------- +for more information please contact me : gil_hoyek@hotmail.com diff --git a/libpcap-1.8.1/README.sita b/libpcap-1.8.1/README.sita new file mode 100644 index 00000000..014d51d9 --- /dev/null +++ b/libpcap-1.8.1/README.sita @@ -0,0 +1,64 @@ +The following instructions apply if you have a Linux platform and want +libpcap to support the 'ACN' WAN/LAN router product from from SITA +(http://www.sita.aero) + +This might also work on non-Linux Unix-compatible platforms, but that +has not been tested. + +See also the libpcap INSTALL.txt file for further libpcap configuration +options. + +These additions/extensions have been made to PCAP to allow it to +capture packets from a SITA ACN device (and potentially others). + +To enable its support you need to ensure that the distribution has +a correct configure.ac file; that can be created if neccessay by +using the normal autoconf procedure of: + +aclocal +autoconf +autoheader +automake + +Then run configure with the 'sita' option: + +./configure --with-sita + +Applications built with libpcap configured in this way will only detect SITA +ACN interfaces and will not capture from the native OS packet stream. + +The SITA extension provides a remote datascope operation for capturing +both WAN and LAN protocols. It effectively splits the operation of +PCAP into two halves. The top layer performs the majority of the +work, but interfaces via a TCP session to remote agents that +provide the lower layer functionality of actual sniffing and +filtering. More detailed information regarding the functions and +inter-device protocol and naming conventions are described in detail +in 'pcap-sita.html'. + +pcap_findalldevs() reads the local system's /etc/hosts file looking +for host names that match the format of IOP type devices. ie. aaa_I_x_y +and then queries each associated IP address for a list of its WAN and +LAN devices. The local system the aggregates the lists obtained from +each IOP, sorts it, and provides it (to Wireshark et.al) as the +list of monitorable interfaces. + +Once a valid interface has been selected, pcap_open() is called +which opens a TCP session (to a well known port) on the target IOP +and tells it to start monitoring. + +All captured packets are then forwarded across that TCP session +back to the local 'top layer' for forwarding to the actual +sniffing program (wireshark...) + +Note that the DLT_SITA link-layer type includes a proprietary header +that is documented as part of the SITA dissector of Wireshark and is +also described in 'pcap-sita.html' for posterity sake. + +That header provides: +- Packet direction (in/out) (1 octet) +- Link layer hardware signal status (1 octet) +- Transmit/Receive error status (2 octets) +- Encapsulated WAN protocol ID (1 octet) + + diff --git a/libpcap-1.8.1/README.tru64 b/libpcap-1.8.1/README.tru64 new file mode 100644 index 00000000..2420d9e1 --- /dev/null +++ b/libpcap-1.8.1/README.tru64 @@ -0,0 +1,49 @@ +The following instructions are applicable to Tru64 UNIX +(formerly Digital UNIX (formerly DEC OSF/1)) version 4.0, and +probably to later versions as well; at least some options apply to +Digital UNIX 3.2 - perhaps all do. + +In order to use kernel packet filtering on this system, you have +to configure it in such a way: + +Kernel configuration +-------------------- + +The packet filtering kernel option must be enabled at kernel +installation. If it was not the case, you can rebuild the kernel with +"doconfig -c" after adding the following line in the kernel +configuration file (/sys/conf/): + + option PACKETFILTER + +or use "doconfig" without any arguments to add the packet filter driver +option via the kernel option menu (see the system administration +documentation for information on how to do this). + +Device configuration +-------------------- + +Devices used for packet filtering must be created thanks to +the following command (executed in the /dev directory): + + ./MAKEDEV pfilt + +Interface configuration +----------------------- + +In order to capture all packets on a network, you may want to allow +applications to put the interface on that network into "local copy" +mode, so that tcpdump can see packets sent by the host on which it's +running as well as packets received by that host, and to put the +interface into "promiscuous" mode, so that tcpdump can see packets on +the network segment not sent to the host on which it's running, by using +the pfconfig(1) command: + + pfconfig +c +p + +or allow application to put any interface into "local copy" or +"promiscuous" mode by using the command: + + pfconfig +c +p -a + +Note: all instructions given require root privileges. diff --git a/libpcap-1.8.1/SUNOS4/nit_if.o.sparc b/libpcap-1.8.1/SUNOS4/nit_if.o.sparc new file mode 100644 index 0000000000000000000000000000000000000000..d05073eac7666b6a880f01c53c7077581fc9fac9 GIT binary patch literal 5212 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 literal 0 HcmV?d00001 diff --git a/libpcap-1.8.1/SUNOS4/nit_if.o.sun3 b/libpcap-1.8.1/SUNOS4/nit_if.o.sun3 new file mode 100644 index 0000000000000000000000000000000000000000..c393fc6ec79182d5146b988eaece342d257e893c GIT binary patch literal 4267 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 does not depend on on most other systems. This + * helps userland compatability. (struct timeval ifi_lastchange) + */ +#ifndef KERNEL +#include +#endif + +/* + * Structure describing information about an interface + * which may be of interest to management entities. + */ +struct if_data { + /* generic interface information */ + u_char ifi_type; /* ethernet, tokenring, etc */ + u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */ + u_char ifi_addrlen; /* media address length */ + u_char ifi_hdrlen; /* media header length */ + u_char ifi_recvquota; /* polling quota for receive intrs */ + u_char ifi_xmitquota; /* polling quota for xmit intrs */ + u_long ifi_mtu; /* maximum transmission unit */ + u_long ifi_metric; /* routing metric (external only) */ + u_long ifi_baudrate; /* linespeed */ + /* volatile statistics */ + u_long ifi_ipackets; /* packets received on interface */ + u_long ifi_ierrors; /* input errors on interface */ + u_long ifi_opackets; /* packets sent on interface */ + u_long ifi_oerrors; /* output errors on interface */ + u_long ifi_collisions; /* collisions on csma interfaces */ + u_long ifi_ibytes; /* total number of octets received */ + u_long ifi_obytes; /* total number of octets sent */ + u_long ifi_imcasts; /* packets received via multicast */ + u_long ifi_omcasts; /* packets sent via multicast */ + u_long ifi_iqdrops; /* dropped on input, this interface */ + u_long ifi_noproto; /* destined for unsupported protocol */ + u_long ifi_recvtiming; /* usec spent receiving when timing */ + u_long ifi_xmittiming; /* usec spent xmitting when timing */ + struct timeval ifi_lastchange; /* time of last administrative change */ +}; + +/* ws2tcpip.h has interface flags: IFF_* */ +#if 0 +#define IFF_UP 0x1 /* interface is up */ +#define IFF_BROADCAST 0x2 /* broadcast address valid */ +#define IFF_DEBUG 0x4 /* turn on debugging */ +#define IFF_LOOPBACK 0x8 /* is a loopback net */ +#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */ +/*#define IFF_NOTRAILERS 0x20 * obsolete: avoid use of trailers */ +#define IFF_RUNNING 0x40 /* resources allocated */ +#define IFF_NOARP 0x80 /* no address resolution protocol */ +#define IFF_PROMISC 0x100 /* receive all packets */ +#define IFF_ALLMULTI 0x200 /* receive all multicast packets */ +#define IFF_OACTIVE 0x400 /* transmission in progress */ +#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */ +#define IFF_LINK0 0x1000 /* per link layer defined bit */ +#define IFF_LINK1 0x2000 /* per link layer defined bit */ +#define IFF_LINK2 0x4000 /* per link layer defined bit */ +#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */ +#define IFF_MULTICAST 0x8000 /* supports multicast */ +#endif /* 0 */ + +/* flags set internally only: */ +#define IFF_CANTCHANGE \ + (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\ + IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI) + +#define IFQ_MAXLEN 50 +#define IFNET_SLOWHZ 1 /* granularity is 1 second */ + +/* + * Message format for use in obtaining information about interfaces + * from getkerninfo and the routing socket + */ +struct if_msghdr { + u_short ifm_msglen; /* to skip over non-understood messages */ + u_char ifm_version; /* future binary compatability */ + u_char ifm_type; /* message type */ + int ifm_addrs; /* like rtm_addrs */ + int ifm_flags; /* value of if_flags */ + u_short ifm_index; /* index for associated ifp */ + struct if_data ifm_data;/* statistics and other data about if */ +}; + +/* + * Message format for use in obtaining information about interface addresses + * from getkerninfo and the routing socket + */ +struct ifa_msghdr { + u_short ifam_msglen; /* to skip over non-understood messages */ + u_char ifam_version; /* future binary compatability */ + u_char ifam_type; /* message type */ + int ifam_addrs; /* like rtm_addrs */ + int ifam_flags; /* value of ifa_flags */ + u_short ifam_index; /* index for associated ifp */ + int ifam_metric; /* value of ifa_metric */ +}; + +/* + * Message format for use in obtaining information about multicast addresses + * from the routing socket + */ +struct ifma_msghdr { + u_short ifmam_msglen; /* to skip over non-understood messages */ + u_char ifmam_version; /* future binary compatability */ + u_char ifmam_type; /* message type */ + int ifmam_addrs; /* like rtm_addrs */ + int ifmam_flags; /* value of ifa_flags */ + u_short ifmam_index; /* index for associated ifp */ +}; + +/* + * Interface request structure used for socket + * ioctl's. All interface ioctl's must have parameter + * definitions which begin with ifr_name. The + * remainder may be interface specific. + */ +struct ifreq { +#define IFNAMSIZ 16 + char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ + union { + struct sockaddr ifru_addr; + struct sockaddr ifru_dstaddr; + struct sockaddr ifru_broadaddr; + short ifru_flags; + int ifru_metric; + int ifru_mtu; + int ifru_phys; + int ifru_media; + caddr_t ifru_data; + } ifr_ifru; +#define ifr_addr ifr_ifru.ifru_addr /* address */ +#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ +#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ +#define ifr_flags ifr_ifru.ifru_flags /* flags */ +#define ifr_metric ifr_ifru.ifru_metric /* metric */ +#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ +#define ifr_phys ifr_ifru.ifru_phys /* physical wire */ +#define ifr_media ifr_ifru.ifru_media /* physical media */ +#define ifr_data ifr_ifru.ifru_data /* for use by interface */ +}; + +#define _SIZEOF_ADDR_IFREQ(ifr) \ + ((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \ + (sizeof(struct ifreq) - sizeof(struct sockaddr) + \ + (ifr).ifr_addr.sa_len) : sizeof(struct ifreq)) + +struct ifaliasreq { + char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ + struct sockaddr ifra_addr; + struct sockaddr ifra_broadaddr; + struct sockaddr ifra_mask; +}; + +struct ifmediareq { + char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */ + int ifm_current; /* current media options */ + int ifm_mask; /* don't care mask */ + int ifm_status; /* media status */ + int ifm_active; /* active options */ + int ifm_count; /* # entries in ifm_ulist array */ + int *ifm_ulist; /* media words */ +}; +/* + * Structure used in SIOCGIFCONF request. + * Used to retrieve interface configuration + * for machine (useful for programs which + * must know all networks accessible). + */ +struct ifconf { + int ifc_len; /* size of associated buffer */ + union { + caddr_t ifcu_buf; + struct ifreq *ifcu_req; + } ifc_ifcu; +#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ +#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ +}; + +#ifdef KERNEL +#ifdef MALLOC_DECLARE +MALLOC_DECLARE(M_IFADDR); +MALLOC_DECLARE(M_IFMADDR); +#endif +#endif + +/* XXX - this should go away soon */ +#ifdef KERNEL +#include +#endif + +#endif /* !_NET_IF_H_ */ diff --git a/libpcap-1.8.1/Win32/Prj/wpcap.sln b/libpcap-1.8.1/Win32/Prj/wpcap.sln new file mode 100644 index 00000000..5a9fce98 --- /dev/null +++ b/libpcap-1.8.1/Win32/Prj/wpcap.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wpcap", "wpcap.vcxproj", "{8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Debug|Win32.ActiveCfg = Debug|Win32 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Debug|Win32.Build.0 = Debug|Win32 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Debug|x64.ActiveCfg = Debug|x64 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Debug|x64.Build.0 = Debug|x64 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Release|Win32.ActiveCfg = Release|Win32 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Release|Win32.Build.0 = Release|Win32 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Release|x64.ActiveCfg = Release|x64 + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj b/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj new file mode 100644 index 00000000..c923357a --- /dev/null +++ b/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj @@ -0,0 +1,234 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + + {8E92D840-6A36-452A-A13C-6E1BA5A2C5A9} + + + + DynamicLibrary + v120 + false + MultiByte + + + DynamicLibrary + v120 + false + MultiByte + + + DynamicLibrary + v120 + false + MultiByte + true + + + DynamicLibrary + v120 + false + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + .\Release\ + .\Release\ + false + ../../../;$(IncludePath) + + + false + ../../../;$(IncludePath) + + + .\Debug\ + .\Debug\ + true + ../../../;$(IncludePath) + + + true + ../../../;$(IncludePath) + + + + MultiThreaded + Default + true + true + MaxSpeed + true + Level3 + ../../;../../lbl/;../../bpf/;../include/;../../../../common;../../../../dag/include;../../../../dag/drv/windows;../../../Win32-Extensions;./;Win32-Extensions;%(AdditionalIncludeDirectories) + HAVE_VERSION_H;__STDC_VERSION__=199901L;HAVE_PACKET_IS_LOOPBACK_ADAPTER;NDEBUG;YY_NEVER_INTERACTIVE;_USRDLL;BUILDING_PCAP;HAVE_STRERROR;__STDC__;INET6;_WINDOWS;HAVE_ADDRINFO;HAVE_REMOTE;WIN32;_U_=;YY_NO_UNISTD_H;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + + + ws2_32.lib;..\..\..\..\packetWin7\Dll\Project\Release No NetMon and AirPcap\Packet.lib;%(AdditionalDependencies) + + + call ..\..\GenVersion.bat ..\..\VERSION ..\..\pcap_version.h.in ..\..\pcap_version.h +win_flex -Ppcap_ -7 --outfile=..\..\scanner.c --header-file=..\..\scanner.h ..\..\scanner.l +win_bison -ppcap_ --yacc --output=..\..\grammar.c --defines ..\..\grammar.y + + + + + MultiThreaded + Default + true + true + MaxSpeed + true + Level3 + ../../;../../lbl/;../../bpf/;../include/;../../../../common;../../../../dag/include;../../../../dag/drv/windows;../../../Win32-Extensions;./;Win32-Extensions;%(AdditionalIncludeDirectories) + HAVE_VERSION_H;__STDC_VERSION__=199901L;HAVE_PACKET_IS_LOOPBACK_ADAPTER;NDEBUG;YY_NEVER_INTERACTIVE;_USRDLL;BUILDING_PCAP;HAVE_STRERROR;__STDC__;INET6;_WINDOWS;HAVE_ADDRINFO;HAVE_REMOTE;WIN32;_U_=;YY_NO_UNISTD_H;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + + + ws2_32.lib;..\..\..\..\packetWin7\Dll\Project\x64\Release No NetMon and AirPcap\Packet.lib;%(AdditionalDependencies) + + + call ..\..\GenVersion.bat ..\..\VERSION ..\..\pcap_version.h.in ..\..\pcap_version.h +win_flex -Ppcap_ -7 --outfile=..\..\scanner.c --header-file=..\..\scanner.h ..\..\scanner.l +win_bison -ppcap_ --yacc --output=..\..\grammar.c --defines ..\..\grammar.y + + + + + MultiThreadedDebug + Default + false + Disabled + true + Level3 + true + EditAndContinue + ../../;../../lbl/;../../bpf/;../include/;../../../../common;../../../../dag/include;../../../../dag/drv/windows;../../../Win32-Extensions;./;Win32-Extensions;%(AdditionalIncludeDirectories) + HAVE_VERSION_H;__STDC_VERSION__=199901L;HAVE_PACKET_IS_LOOPBACK_ADAPTER;_DEBUG;YY_NEVER_INTERACTIVE;_USRDLL;BUILDING_PCAP;HAVE_STRERROR;__STDC__;INET6;_WINDOWS;HAVE_ADDRINFO;HAVE_REMOTE;WIN32;_U_=;YY_NO_UNISTD_H;%(PreprocessorDefinitions) + EnableFastChecks + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + + + ws2_32.lib;..\..\..\..\packetWin7\Dll\Project\Release No NetMon and AirPcap\Packet.lib;%(AdditionalDependencies) + + + call ..\..\GenVersion.bat ..\..\VERSION ..\..\pcap_version.h.in ..\..\pcap_version.h +win_flex -Ppcap_ -7 --outfile=..\..\scanner.c --header-file=..\..\scanner.h ..\..\scanner.l +win_bison -ppcap_ --yacc --output=..\..\grammar.c --defines ..\..\grammar.y + + + + + MultiThreadedDebug + Default + false + Disabled + true + Level3 + ProgramDatabase + ../../;../../lbl/;../../bpf/;../include/;../../../../common;../../../../dag/include;../../../../dag/drv/windows;../../../Win32-Extensions;./;Win32-Extensions;%(AdditionalIncludeDirectories) + HAVE_VERSION_H;__STDC_VERSION__=199901L;HAVE_PACKET_IS_LOOPBACK_ADAPTER;_DEBUG;YY_NEVER_INTERACTIVE;_USRDLL;BUILDING_PCAP;HAVE_STRERROR;__STDC__;INET6;_WINDOWS;HAVE_ADDRINFO;HAVE_REMOTE;WIN32;_U_=;YY_NO_UNISTD_H;%(PreprocessorDefinitions) + EnableFastChecks + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + + + ws2_32.lib;..\..\..\..\packetWin7\Dll\Project\x64\Release No NetMon and AirPcap\Packet.lib;%(AdditionalDependencies) + + + call ..\..\GenVersion.bat ..\..\VERSION ..\..\pcap_version.h.in ..\..\pcap_version.h +win_flex -Ppcap_ -7 --outfile=..\..\scanner.c --header-file=..\..\scanner.h ..\..\scanner.l +win_bison -ppcap_ --yacc --output=..\..\grammar.c --defines ..\..\grammar.y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj.filters b/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj.filters new file mode 100644 index 00000000..72f1492c --- /dev/null +++ b/libpcap-1.8.1/Win32/Prj/wpcap.vcxproj.filters @@ -0,0 +1,107 @@ + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + {c51dce5e-0da9-4e33-a235-d5c76c76485c} + + + {5ec9fd4b-10b5-4527-b249-56b53d844fb1} + + + {c90886f0-8973-436b-a7a1-b9e881544f9a} + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + diff --git a/libpcap-1.8.1/aclocal.m4 b/libpcap-1.8.1/aclocal.m4 new file mode 100644 index 00000000..83f5761f --- /dev/null +++ b/libpcap-1.8.1/aclocal.m4 @@ -0,0 +1,1253 @@ +dnl Copyright (c) 1995, 1996, 1997, 1998 +dnl The Regents of the University of California. All rights reserved. +dnl +dnl Redistribution and use in source and binary forms, with or without +dnl modification, are permitted provided that: (1) source code distributions +dnl retain the above copyright notice and this paragraph in its entirety, (2) +dnl distributions including binary code include the above copyright notice and +dnl this paragraph in its entirety in the documentation or other materials +dnl provided with the distribution, and (3) all advertising materials mentioning +dnl features or use of this software display the following acknowledgement: +dnl ``This product includes software developed by the University of California, +dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +dnl the University nor the names of its contributors may be used to endorse +dnl or promote products derived from this software without specific prior +dnl written permission. +dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +dnl +dnl LBL autoconf macros +dnl + +dnl +dnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC. +dnl +dnl It appears that newer versions of autoconf (2.64 and later) will, +dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the +dnl beginning of the macro, even if the macro itself calls AC_PROG_CC. +dnl See the "Prerequisite Macros" and "Expanded Before Required" sections +dnl in the Autoconf documentation. +dnl +dnl This causes a steaming heap of fail in our case, as we were, in +dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC, +dnl calling AC_PROG_CC, and then doing the tests we now do in +dnl AC_LBL_C_INIT. Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC, +dnl and AC_LBL_C_INIT at the top level. +dnl +AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC, +[ + AC_BEFORE([$0], [AC_LBL_C_INIT]) + AC_BEFORE([$0], [AC_PROG_CC]) + AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) + AC_BEFORE([$0], [AC_LBL_DEVEL]) + AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) + $1="" + if test "${srcdir}" != "." ; then + $1="-I\$(srcdir)" + fi + if test "${CFLAGS+set}" = set; then + LBL_CFLAGS="$CFLAGS" + fi + if test -z "$CC" ; then + case "$host_os" in + + bsdi*) + AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) + if test $SHLICC2 = yes ; then + CC=shlicc2 + export CC + fi + ;; + esac + fi + if test -z "$CC" -a "$with_gcc" = no ; then + CC=cc + export CC + fi +]) + +dnl +dnl Determine which compiler we're using (cc or gcc) +dnl If using gcc, determine the version number +dnl If using cc: +dnl require that it support ansi prototypes +dnl use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to +dnl do that ourselves for gcc) +dnl add -g flags, as appropriate +dnl explicitly specify /usr/local/include +dnl +dnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler +dnl that defines __GNUC__, which means clang, for example, counts as "gcc". +dnl +dnl usage: +dnl +dnl AC_LBL_C_INIT(copt, incls) +dnl +dnl results: +dnl +dnl $1 (copt set) +dnl $2 (incls set) +dnl CC +dnl LDFLAGS +dnl LBL_CFLAGS +dnl +AC_DEFUN(AC_LBL_C_INIT, +[ + AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) + AC_BEFORE([$0], [AC_LBL_DEVEL]) + AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT]) + if test "$GCC" = yes ; then + # + # -Werror forces warnings to be errors. + # + ac_lbl_cc_force_warning_errors=-Werror + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden) + else + $2="$$2 -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + + case "$host_os" in + + darwin*) + # + # This is assumed either to be GCC or clang, both + # of which use -Werror to force warnings to be errors. + # + ac_lbl_cc_force_warning_errors=-Werror + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden) + ;; + + hpux*) + # + # HP C, which is what we presume we're using, doesn't + # exit with a non-zero exit status if we hand it an + # invalid -W flag, can't be forced to do so even with + # +We, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + ;; + + irix*) + # + # MIPS C, which is what we presume we're using, doesn't + # necessarily exit with a non-zero exit status if we + # hand it an invalid -W flag, can't be forced to do + # so, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + # + # It also, apparently, defaults to "char" being + # unsigned, unlike most other C implementations; + # I suppose we could say "signed char" whenever + # we want to guarantee a signed "char", but let's + # just force signed chars. + # + # -xansi is normally the default, but the + # configure script was setting it; perhaps -cckr + # was the default in the Old Days. (Then again, + # that would probably be for backwards compatibility + # in the days when ANSI C was Shiny and New, i.e. + # 1989 and the early '90's, so maybe we can just + # drop support for those compilers.) + # + # -g is equivalent to -g2, which turns off + # optimization; we choose -g3, which generates + # debugging information but doesn't turn off + # optimization (even if the optimization would + # cause inaccuracies in debugging). + # + $1="$$1 -xansi -signed -g3" + ;; + + osf*) + # + # Presumed to be DEC OSF/1, Digital UNIX, or + # Tru64 UNIX. + # + # The DEC C compiler, which is what we presume we're + # using, doesn't exit with a non-zero exit status if we + # hand it an invalid -W flag, can't be forced to do + # so, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + # + # -g is equivalent to -g2, which turns off + # optimization; we choose -g3, which generates + # debugging information but doesn't turn off + # optimization (even if the optimization would + # cause inaccuracies in debugging). + # + $1="$$1 -g3" + ;; + + solaris*) + # + # Assumed to be Sun C, which requires -errwarn to force + # warnings to be treated as errors. + # + ac_lbl_cc_force_warning_errors=-errwarn + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + AC_LBL_CHECK_COMPILER_OPT($1, -xldscope=hidden) + ;; + + ultrix*) + AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) + AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, + AC_TRY_COMPILE( + [#include ], + [struct a { int b; }; + void c(const struct a *)], + ac_cv_lbl_cc_const_proto=yes, + ac_cv_lbl_cc_const_proto=no)) + AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) + if test $ac_cv_lbl_cc_const_proto = no ; then + AC_DEFINE(const,[], + [to handle Ultrix compilers that don't support const in prototypes]) + fi + ;; + esac + $1="$$1 -O" + fi +]) + +dnl +dnl Check whether, if you pass an unknown warning option to the +dnl compiler, it fails or just prints a warning message and succeeds. +dnl Set ac_lbl_unknown_warning_option_error to the appropriate flag +dnl to force an error if it would otherwise just print a warning message +dnl and succeed. +dnl +AC_DEFUN(AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR, + [ + AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option]) + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy" + AC_TRY_COMPILE( + [], + [return 0], + [ + AC_MSG_RESULT([no]) + # + # We're assuming this is clang, where + # -Werror=unknown-warning-option is the appropriate + # option to force the compiler to fail. + # + ac_lbl_unknown_warning_option_error="-Werror=unknown-warning-option" + ], + [ + AC_MSG_RESULT([yes]) + ]) + CFLAGS="$save_CFLAGS" + ]) + +dnl +dnl Check whether the compiler option specified as the second argument +dnl is supported by the compiler and, if so, add it to the macro +dnl specified as the first argument +dnl +AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT, + [ + AC_MSG_CHECKING([whether the compiler supports the $2 option]) + save_CFLAGS="$CFLAGS" + if expr "x$2" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error $2" + elif expr "x$2" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror $2" + elif expr "x$2" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror $2" + else + CFLAGS="$CFLAGS $2" + fi + AC_TRY_COMPILE( + [], + [return 0], + [ + AC_MSG_RESULT([yes]) + CFLAGS="$save_CFLAGS" + $1="$$1 $2" + ], + [ + AC_MSG_RESULT([no]) + CFLAGS="$save_CFLAGS" + ]) + ]) + +dnl +dnl Check whether the compiler supports an option to generate +dnl Makefile-style dependency lines +dnl +dnl GCC uses -M for this. Non-GCC compilers that support this +dnl use a variety of flags, including but not limited to -M. +dnl +dnl We test whether the flag in question is supported, as older +dnl versions of compilers might not support it. +dnl +dnl We don't try all the possible flags, just in case some flag means +dnl "generate dependencies" on one compiler but means something else +dnl on another compiler. +dnl +dnl Most compilers that support this send the output to the standard +dnl output by default. IBM's XLC, however, supports -M but sends +dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout +dnl to work around that, so we don't bother with XLC. +dnl +AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT, + [ + AC_MSG_CHECKING([whether the compiler supports generating dependencies]) + if test "$GCC" = yes ; then + # + # GCC, or a compiler deemed to be GCC by AC_PROG_CC (even + # though it's not); we assume that, in this case, the flag + # would be -M. + # + ac_lbl_dependency_flag="-M" + else + # + # Not GCC or a compiler deemed to be GCC; what platform is + # this? (We're assuming that if the compiler isn't GCC + # it's the compiler from the vendor of the OS; that won't + # necessarily be true for x86 platforms, where it might be + # the Intel C compiler.) + # + case "$host_os" in + + irix*|osf*|darwin*) + # + # MIPS C for IRIX, DEC C, and clang all use -M. + # + ac_lbl_dependency_flag="-M" + ;; + + solaris*) + # + # Sun C uses -xM. + # + ac_lbl_dependency_flag="-xM" + ;; + + hpux*) + # + # HP's older C compilers don't support this. + # HP's newer C compilers support this with + # either +M or +Make; the older compilers + # interpret +M as something completely + # different, so we use +Make so we don't + # think it works with the older compilers. + # + ac_lbl_dependency_flag="+Make" + ;; + + *) + # + # Not one of the above; assume no support for + # generating dependencies. + # + ac_lbl_dependency_flag="" + ;; + esac + fi + + # + # Is ac_lbl_dependency_flag defined and, if so, does the compiler + # complain about it? + # + # Note: clang doesn't seem to exit with an error status when handed + # an unknown non-warning error, even if you pass it + # -Werror=unknown-warning-option. However, it always supports + # -M, so the fact that this test always succeeds with clang + # isn't an issue. + # + if test ! -z "$ac_lbl_dependency_flag"; then + AC_LANG_CONFTEST( + [AC_LANG_SOURCE([[int main(void) { return 0; }]])]) + echo "$CC" $ac_lbl_dependency_flag conftest.c >&5 + if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then + AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag]) + DEPENDENCY_CFLAG="$ac_lbl_dependency_flag" + MKDEP='${srcdir}/mkdep' + else + AC_MSG_RESULT([no]) + # + # We can't run mkdep, so have "make depend" do + # nothing. + # + MKDEP=: + fi + rm -rf conftest* + else + AC_MSG_RESULT([no]) + # + # We can't run mkdep, so have "make depend" do + # nothing. + # + MKDEP=: + fi + AC_SUBST(DEPENDENCY_CFLAG) + AC_SUBST(MKDEP) + ]) + +dnl +dnl Determine what options are needed to build a shared library +dnl +dnl usage: +dnl +dnl AC_LBL_SHLIBS_INIT +dnl +dnl results: +dnl +dnl V_CCOPT (modified to build position-independent code) +dnl V_SHLIB_CMD +dnl V_SHLIB_OPT +dnl V_SONAME_OPT +dnl V_RPATH_OPT +dnl +AC_DEFUN(AC_LBL_SHLIBS_INIT, + [AC_PREREQ(2.50) + if test "$GCC" = yes ; then + # + # On platforms where we build a shared library: + # + # add options to generate position-independent code, + # if necessary (it's the default in AIX and Darwin/OS X); + # + # define option to set the soname of the shared library, + # if the OS supports that; + # + # add options to specify, at link time, a directory to + # add to the run-time search path, if that's necessary. + # + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + case "$host_os" in + + aix*) + ;; + + freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*) + # + # Platforms where the linker is the GNU linker + # or accepts command-line arguments like + # those the GNU linker accepts. + # + # Some instruction sets require -fPIC on some + # operating systems. Check for them. If you + # have a combination that requires it, add it + # here. + # + PIC_OPT=-fpic + case "$host_cpu" in + + sparc64*) + case "$host_os" in + + freebsd*|openbsd*) + PIC_OPT=-fPIC + ;; + esac + ;; + esac + V_CCOPT="$V_CCOPT $PIC_OPT" + V_SONAME_OPT="-Wl,-soname," + V_RPATH_OPT="-Wl,-rpath," + ;; + + hpux*) + V_CCOPT="$V_CCOPT -fpic" + # + # XXX - this assumes GCC is using the HP linker, + # rather than the GNU linker, and that the "+h" + # option is used on all HP-UX platforms, both .sl + # and .so. + # + V_SONAME_OPT="-Wl,+h," + # + # By default, directories specifed with -L + # are added to the run-time search path, so + # we don't add them in pcap-config. + # + ;; + + solaris*) + V_CCOPT="$V_CCOPT -fpic" + # + # XXX - this assumes GCC is using the Sun linker, + # rather than the GNU linker. + # + V_SONAME_OPT="-Wl,-h," + V_RPATH_OPT="-Wl,-R," + ;; + esac + else + # + # Set the appropriate compiler flags and, on platforms + # where we build a shared library: + # + # add options to generate position-independent code, + # if necessary (it's the default in Darwin/OS X); + # + # if we generate ".so" shared libraries, define the + # appropriate options for building the shared library; + # + # add options to specify, at link time, a directory to + # add to the run-time search path, if that's necessary. + # + # Note: spaces after V_SONAME_OPT are significant; on + # some platforms the soname is passed with a GCC-like + # "-Wl,-soname,{soname}" option, with the soname part + # of the option, while on other platforms the C compiler + # driver takes it as a regular option with the soname + # following the option. The same applies to V_RPATH_OPT. + # + case "$host_os" in + + aix*) + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-G -bnoentry -bexpall" + ;; + + freebsd*|netbsd*|openbsd*|dragonfly*|linux*) + # + # "cc" is GCC. + # + V_CCOPT="$V_CCOPT -fpic" + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + V_SONAME_OPT="-Wl,-soname," + V_RPATH_OPT="-Wl,-rpath," + ;; + + hpux*) + V_CCOPT="$V_CCOPT +z" + V_SHLIB_CMD="\$(LD)" + V_SHLIB_OPT="-b" + V_SONAME_OPT="+h " + # + # By default, directories specifed with -L + # are added to the run-time search path, so + # we don't add them in pcap-config. + # + ;; + + osf*) + # + # Presumed to be DEC OSF/1, Digital UNIX, or + # Tru64 UNIX. + # + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + V_SONAME_OPT="-soname " + V_RPATH_OPT="-rpath " + ;; + + solaris*) + V_CCOPT="$V_CCOPT -Kpic" + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-G" + V_SONAME_OPT="-h " + V_RPATH_OPT="-R" + ;; + esac + fi +]) + +# +# Try compiling a sample of the type of code that appears in +# gencode.c with "inline", "__inline__", and "__inline". +# +# Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough, +# as it just tests whether a function returning "int" can be inlined; +# at least some versions of HP's C compiler can inline that, but can't +# inline a function that returns a struct pointer. +# +# Make sure we use the V_CCOPT flags, because some of those might +# disable inlining. +# +AC_DEFUN(AC_LBL_C_INLINE, + [AC_MSG_CHECKING(for inline) + save_CFLAGS="$CFLAGS" + CFLAGS="$V_CCOPT" + AC_CACHE_VAL(ac_cv_lbl_inline, [ + ac_cv_lbl_inline="" + ac_lbl_cc_inline=no + for ac_lbl_inline in inline __inline__ __inline + do + AC_TRY_COMPILE( + [#define inline $ac_lbl_inline + static inline struct iltest *foo(void); + struct iltest { + int iltest1; + int iltest2; + }; + + static inline struct iltest * + foo() + { + static struct iltest xxx; + + return &xxx; + }],,ac_lbl_cc_inline=yes,) + if test "$ac_lbl_cc_inline" = yes ; then + break; + fi + done + if test "$ac_lbl_cc_inline" = yes ; then + ac_cv_lbl_inline=$ac_lbl_inline + fi]) + CFLAGS="$save_CFLAGS" + if test ! -z "$ac_cv_lbl_inline" ; then + AC_MSG_RESULT($ac_cv_lbl_inline) + else + AC_MSG_RESULT(no) + fi + AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])]) + +dnl +dnl If using gcc, make sure we have ANSI ioctl definitions +dnl +dnl usage: +dnl +dnl AC_LBL_FIXINCLUDES +dnl +AC_DEFUN(AC_LBL_FIXINCLUDES, + [if test "$GCC" = yes ; then + AC_MSG_CHECKING(for ANSI ioctl definitions) + AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, + AC_TRY_COMPILE( + [/* + * This generates a "duplicate case value" when fixincludes + * has not be run. + */ +# include +# include +# include +# ifdef HAVE_SYS_IOCCOM_H +# include +# endif], + [switch (0) { + case _IO('A', 1):; + case _IO('B', 1):; + }], + ac_cv_lbl_gcc_fixincludes=yes, + ac_cv_lbl_gcc_fixincludes=no)) + AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) + if test $ac_cv_lbl_gcc_fixincludes = no ; then + # Don't cache failure + unset ac_cv_lbl_gcc_fixincludes + AC_MSG_ERROR(see the INSTALL for more info) + fi + fi]) + +dnl +dnl Checks to see if union wait is used with WEXITSTATUS() +dnl +dnl usage: +dnl +dnl AC_LBL_UNION_WAIT +dnl +dnl results: +dnl +dnl DECLWAITSTATUS (defined) +dnl +AC_DEFUN(AC_LBL_UNION_WAIT, + [AC_MSG_CHECKING(if union wait is used) + AC_CACHE_VAL(ac_cv_lbl_union_wait, + AC_TRY_COMPILE([ +# include +# include ], + [int status; + u_int i = WEXITSTATUS(status); + u_int j = waitpid(0, &status, 0);], + ac_cv_lbl_union_wait=no, + ac_cv_lbl_union_wait=yes)) + AC_MSG_RESULT($ac_cv_lbl_union_wait) + if test $ac_cv_lbl_union_wait = yes ; then + AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait]) + else + AC_DEFINE(DECLWAITSTATUS,int,[type for wait]) + fi]) + +dnl +dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member +dnl +dnl usage: +dnl +dnl AC_LBL_SOCKADDR_SA_LEN +dnl +dnl results: +dnl +dnl HAVE_SOCKADDR_SA_LEN (defined) +dnl +AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, + [AC_MSG_CHECKING(if sockaddr struct has the sa_len member) + AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, + AC_TRY_COMPILE([ +# include +# include ], + [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], + ac_cv_lbl_sockaddr_has_sa_len=yes, + ac_cv_lbl_sockaddr_has_sa_len=no)) + AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) + if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then + AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member]) + fi]) + +dnl +dnl Checks to see if there's a sockaddr_storage structure +dnl +dnl usage: +dnl +dnl AC_LBL_SOCKADDR_STORAGE +dnl +dnl results: +dnl +dnl HAVE_SOCKADDR_STORAGE (defined) +dnl +AC_DEFUN(AC_LBL_SOCKADDR_STORAGE, + [AC_MSG_CHECKING(if sockaddr_storage struct exists) + AC_CACHE_VAL(ac_cv_lbl_has_sockaddr_storage, + AC_TRY_COMPILE([ +# include +# include ], + [u_int i = sizeof (struct sockaddr_storage)], + ac_cv_lbl_has_sockaddr_storage=yes, + ac_cv_lbl_has_sockaddr_storage=no)) + AC_MSG_RESULT($ac_cv_lbl_has_sockaddr_storage) + if test $ac_cv_lbl_has_sockaddr_storage = yes ; then + AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[if struct sockaddr_storage exists]) + fi]) + +dnl +dnl Checks to see if the dl_hp_ppa_info_t struct has the HP-UX 11.00 +dnl dl_module_id_1 member +dnl +dnl usage: +dnl +dnl AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1 +dnl +dnl results: +dnl +dnl HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 (defined) +dnl +dnl NOTE: any compile failure means we conclude that it doesn't have +dnl that member, so if we don't have DLPI, don't have a +dnl header, or have one that doesn't declare a dl_hp_ppa_info_t type, +dnl we conclude it doesn't have that member (which is OK, as either we +dnl won't be using code that would use that member, or we wouldn't +dnl compile in any case). +dnl +AC_DEFUN(AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1, + [AC_MSG_CHECKING(if dl_hp_ppa_info_t struct has dl_module_id_1 member) + AC_CACHE_VAL(ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1, + AC_TRY_COMPILE([ +# include +# include +# include ], + [u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1)], + ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes, + ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no)) + AC_MSG_RESULT($ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1) + if test $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1 = yes ; then + AC_DEFINE(HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1,1,[if ppa_info_t_dl_module_id exists]) + fi]) + +dnl +dnl Checks to see if -R is used +dnl +dnl usage: +dnl +dnl AC_LBL_HAVE_RUN_PATH +dnl +dnl results: +dnl +dnl ac_cv_lbl_have_run_path (yes or no) +dnl +AC_DEFUN(AC_LBL_HAVE_RUN_PATH, + [AC_MSG_CHECKING(for ${CC-cc} -R) + AC_CACHE_VAL(ac_cv_lbl_have_run_path, + [echo 'main(){}' > conftest.c + ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 + if test ! -s conftest.out ; then + ac_cv_lbl_have_run_path=yes + else + ac_cv_lbl_have_run_path=no + fi + rm -f -r conftest*]) + AC_MSG_RESULT($ac_cv_lbl_have_run_path) + ]) + +dnl +dnl Checks to see if unaligned memory accesses fail +dnl +dnl usage: +dnl +dnl AC_LBL_UNALIGNED_ACCESS +dnl +dnl results: +dnl +dnl LBL_ALIGN (DEFINED) +dnl +AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, + [AC_MSG_CHECKING(if unaligned accesses fail) + AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, + [case "$host_cpu" in + + # + # These are CPU types where: + # + # the CPU faults on an unaligned access, but at least some + # OSes that support that CPU catch the fault and simulate + # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - + # the simulation is slow, so we don't want to use it; + # + # the CPU, I infer (from the old + # + # XXX: should also check that they don't do weird things (like on arm) + # + # comment) doesn't fault on unaligned accesses, but doesn't + # do a normal unaligned fetch, either (e.g., presumably, ARM); + # + # for whatever reason, the test program doesn't work + # (this has been claimed to be the case for several of those + # CPUs - I don't know what the problem is; the problem + # was reported as "the test program dumps core" for SuperH, + # but that's what the test program is *supposed* to do - + # it dumps core before it writes anything, so the test + # for an empty output file should find an empty output + # file and conclude that unaligned accesses don't work). + # + # This run-time test won't work if you're cross-compiling, so + # in order to support cross-compiling for a particular CPU, + # we have to wire in the list of CPU types anyway, as far as + # I know, so perhaps we should just have a set of CPUs on + # which we know it doesn't work, a set of CPUs on which we + # know it does work, and have the script just fail on other + # cpu types and update it when such a failure occurs. + # + alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1) + ac_cv_lbl_unaligned_fail=yes + ;; + + *) + cat >conftest.c < +# include +# include + unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; + main() { + unsigned int i; + pid_t pid; + int status; + /* avoid "core dumped" message */ + pid = fork(); + if (pid < 0) + exit(2); + if (pid > 0) { + /* parent */ + pid = waitpid(pid, &status, 0); + if (pid < 0) + exit(3); + exit(!WIFEXITED(status)); + } + /* child */ + i = *(unsigned int *)&a[[1]]; + printf("%d\n", i); + exit(0); + } +EOF + ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ + conftest.c $LIBS >/dev/null 2>&1 + if test ! -x conftest ; then + dnl failed to compile for some reason + ac_cv_lbl_unaligned_fail=yes + else + ./conftest >conftest.out + if test ! -s conftest.out ; then + ac_cv_lbl_unaligned_fail=yes + else + ac_cv_lbl_unaligned_fail=no + fi + fi + rm -f -r conftest* core core.conftest + ;; + esac]) + AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) + if test $ac_cv_lbl_unaligned_fail = yes ; then + AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails]) + fi]) + +dnl +dnl If the file .devel exists: +dnl Add some warning flags if the compiler supports them +dnl If an os prototype include exists, symlink os-proto.h to it +dnl +dnl usage: +dnl +dnl AC_LBL_DEVEL(copt) +dnl +dnl results: +dnl +dnl $1 (copt appended) +dnl HAVE_OS_PROTO_H (defined) +dnl os-proto.h (symlinked) +dnl +AC_DEFUN(AC_LBL_DEVEL, + [rm -f os-proto.h + if test "${LBL_CFLAGS+set}" = set; then + $1="$$1 ${LBL_CFLAGS}" + fi + if test -f .devel ; then + # + # Skip all the warning option stuff on some compilers. + # + if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then + AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR() + AC_LBL_CHECK_COMPILER_OPT($1, -Wall) + AC_LBL_CHECK_COMPILER_OPT($1, -Wsign-compare) + AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes) + AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes) + AC_LBL_CHECK_COMPILER_OPT($1, -Wshadow) + AC_LBL_CHECK_COMPILER_OPT($1, -Wdeclaration-after-statement) + AC_LBL_CHECK_COMPILER_OPT($1, -Wused-but-marked-unused) + fi + AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT() + # + # We used to set -n32 for IRIX 6 when not using GCC (presumed + # to mean that we're using MIPS C or MIPSpro C); it specified + # the "new" faster 32-bit ABI, introduced in IRIX 6.2. I'm + # not sure why that would be something to do *only* with a + # .devel file; why should the ABI for which we produce code + # depend on .devel? + # + os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` + name="lbl/os-$os.h" + if test -f $name ; then + ln -s $name os-proto.h + AC_DEFINE(HAVE_OS_PROTO_H, 1, + [if there's an os_proto.h for this platform, to use additional prototypes]) + else + AC_MSG_WARN(can't find $name) + fi + fi]) + +dnl +dnl Improved version of AC_CHECK_LIB +dnl +dnl Thanks to John Hawkinson (jhawk@mit.edu) +dnl +dnl usage: +dnl +dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, +dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) +dnl +dnl results: +dnl +dnl LIBS +dnl +dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS" +dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more. +dnl We keep it around for reference purposes in case it's ever +dnl useful in the future. +dnl + +define(AC_LBL_CHECK_LIB, +[AC_MSG_CHECKING([for $2 in -l$1]) +dnl Use a cache variable name containing the library, function +dnl name, and extra libraries to link with, because the test really is +dnl for library $1 defining function $2, when linked with potinal +dnl library $5, not just for library $1. Separate tests with the same +dnl $1 and different $2's or $5's may have different results. +ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` +AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, +[ac_save_LIBS="$LIBS" +LIBS="-l$1 $5 $LIBS" +AC_TRY_LINK(dnl +ifelse([$2], [main], , dnl Avoid conflicting decl of main. +[/* Override any gcc2 internal prototype to avoid an error. */ +]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus +extern "C" +#endif +])dnl +[/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $2(); +]), + [$2()], + eval "ac_cv_lbl_lib_$ac_lib_var=yes", + eval "ac_cv_lbl_lib_$ac_lib_var=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then + AC_MSG_RESULT(yes) + ifelse([$3], , +[changequote(, )dnl + ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` +changequote([, ])dnl + AC_DEFINE_UNQUOTED($ac_tr_lib) + LIBS="-l$1 $LIBS" +], [$3]) +else + AC_MSG_RESULT(no) +ifelse([$4], , , [$4 +])dnl +fi +]) + +dnl +dnl AC_LBL_LIBRARY_NET +dnl +dnl This test is for network applications that need socket() and +dnl gethostbyname() -ish functions. Under Solaris, those applications +dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link +dnl with "-lnsl" but should *not* link with "-lsocket" because +dnl libsocket.a breaks a number of things (for instance: +dnl gethostbyname() under IRIX 5.2, and snoop sockets under most +dnl versions of IRIX). +dnl +dnl Unfortunately, many application developers are not aware of this, +dnl and mistakenly write tests that cause -lsocket to be used under +dnl IRIX. It is also easy to write tests that cause -lnsl to be used +dnl under operating systems where neither are necessary (or useful), +dnl such as SunOS 4.1.4, which uses -lnsl for TLI. +dnl +dnl This test exists so that every application developer does not test +dnl this in a different, and subtly broken fashion. + +dnl It has been argued that this test should be broken up into two +dnl seperate tests, one for the resolver libraries, and one for the +dnl libraries necessary for using Sockets API. Unfortunately, the two +dnl are carefully intertwined and allowing the autoconf user to use +dnl them independantly potentially results in unfortunate ordering +dnl dependancies -- as such, such component macros would have to +dnl carefully use indirection and be aware if the other components were +dnl executed. Since other autoconf macros do not go to this trouble, +dnl and almost no applications use sockets without the resolver, this +dnl complexity has not been implemented. +dnl +dnl The check for libresolv is in case you are attempting to link +dnl statically and happen to have a libresolv.a lying around (and no +dnl libnsl.a). +dnl +AC_DEFUN(AC_LBL_LIBRARY_NET, [ + # Most operating systems have gethostbyname() in the default searched + # libraries (i.e. libc): + # Some OSes (eg. Solaris) place it in libnsl + # Some strange OSes (SINIX) have it in libsocket: + AC_SEARCH_LIBS(gethostbyname, nsl socket resolv) + # Unfortunately libsocket sometimes depends on libnsl and + # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. + if test "$ac_cv_search_gethostbyname" = "no" + then + AC_CHECK_LIB(socket, gethostbyname, + LIBS="-lsocket -lnsl $LIBS", , -lnsl) + fi + AC_SEARCH_LIBS(socket, socket, , + AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)) + # DLPI needs putmsg under HPUX so test for -lstr while we're at it + AC_SEARCH_LIBS(putmsg, str) + ]) + +dnl +dnl Test for __attribute__ +dnl + +AC_DEFUN(AC_C___ATTRIBUTE__, [ +AC_MSG_CHECKING(for __attribute__) +AC_CACHE_VAL(ac_cv___attribute__, [ +AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ +#include + +static void foo(void) __attribute__ ((noreturn)); + +static void +foo(void) +{ + exit(1); +} + +int +main(int argc, char **argv) +{ + foo(); +} + ]])], +ac_cv___attribute__=yes, +ac_cv___attribute__=no)]) +if test "$ac_cv___attribute__" = "yes"; then + AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__]) +else + # + # We can't use __attribute__, so we can't use __attribute__((unused)), + # so we define _U_ to an empty string. + # + V_DEFS="$V_DEFS -D_U_=\"\"" +fi +AC_MSG_RESULT($ac_cv___attribute__) +]) + +dnl +dnl Test whether __attribute__((unused)) can be used without warnings +dnl + +AC_DEFUN(AC_C___ATTRIBUTE___UNUSED, [ +AC_MSG_CHECKING([whether __attribute__((unused)) can be used without warnings]) +AC_CACHE_VAL(ac_cv___attribute___unused, [ +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" +AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ +#include +#include + +int +main(int argc __attribute((unused)), char **argv __attribute((unused))) +{ + printf("Hello, world!\n"); + return 0; +} + ]])], +ac_cv___attribute___unused=yes, +ac_cv___attribute___unused=no)]) +CFLAGS="$save_CFLAGS" +if test "$ac_cv___attribute___unused" = "yes"; then + V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" +else + V_DEFS="$V_DEFS -D_U_=\"\"" +fi +AC_MSG_RESULT($ac_cv___attribute___unused) +]) + +dnl +dnl Test whether __attribute__((format)) can be used without warnings +dnl + +AC_DEFUN(AC_C___ATTRIBUTE___FORMAT, [ +AC_MSG_CHECKING([whether __attribute__((format)) can be used without warnings]) +AC_CACHE_VAL(ac_cv___attribute___format, [ +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" +AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ +#include + +extern int foo(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +int +main(int argc, char **argv) +{ + foo("%s", "test"); +} + ]])], +ac_cv___attribute___format=yes, +ac_cv___attribute___format=no)]) +CFLAGS="$save_CFLAGS" +if test "$ac_cv___attribute___format" = "yes"; then + AC_DEFINE(__ATTRIBUTE___FORMAT_OK, 1, + [define if your compiler allows __attribute__((format)) without a warning]) +fi +AC_MSG_RESULT($ac_cv___attribute___format) +]) + +dnl +dnl Checks to see if tpacket_stats is defined in linux/if_packet.h +dnl If so then pcap-linux.c can use this to report proper statistics. +dnl +dnl -Scott Barron +dnl +AC_DEFUN(AC_LBL_TPACKET_STATS, + [AC_MSG_CHECKING(if if_packet.h has tpacket_stats defined) + AC_CACHE_VAL(ac_cv_lbl_tpacket_stats, + AC_TRY_COMPILE([ +# include ], + [struct tpacket_stats stats], + ac_cv_lbl_tpacket_stats=yes, + ac_cv_lbl_tpacket_stats=no)) + AC_MSG_RESULT($ac_cv_lbl_tpacket_stats) + if test $ac_cv_lbl_tpacket_stats = yes; then + AC_DEFINE(HAVE_TPACKET_STATS,1,[if if_packet.h has tpacket_stats defined]) + fi]) + +dnl +dnl Checks to see if the tpacket_auxdata struct has a tp_vlan_tci member. +dnl +dnl usage: +dnl +dnl AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI +dnl +dnl results: +dnl +dnl HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI (defined) +dnl +dnl NOTE: any compile failure means we conclude that it doesn't have +dnl that member, so if we don't have tpacket_auxdata, we conclude it +dnl doesn't have that member (which is OK, as either we won't be using +dnl code that would use that member, or we wouldn't compile in any case). +dnl +AC_DEFUN(AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI, + [AC_MSG_CHECKING(if tpacket_auxdata struct has tp_vlan_tci member) + AC_CACHE_VAL(ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci, + AC_TRY_COMPILE([ +# include +# include ], + [u_int i = sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci)], + ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=yes, + ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=no)) + AC_MSG_RESULT($ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci) + if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci = yes ; then + HAVE_LINUX_TPACKET_AUXDATA=tp_vlan_tci + AC_SUBST(HAVE_LINUX_TPACKET_AUXDATA) + AC_DEFINE(HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI,1,[if tp_vlan_tci exists]) + fi]) + +dnl +dnl Checks to see if Solaris has the dl_passive_req_t struct defined +dnl in . +dnl +dnl usage: +dnl +dnl AC_LBL_DL_PASSIVE_REQ_T +dnl +dnl results: +dnl +dnl HAVE_DLPI_PASSIVE (defined) +dnl +AC_DEFUN(AC_LBL_DL_PASSIVE_REQ_T, + [AC_MSG_CHECKING(if dl_passive_req_t struct exists) + AC_CACHE_VAL(ac_cv_lbl_has_dl_passive_req_t, + AC_TRY_COMPILE([ +# include +# include ], + [u_int i = sizeof(dl_passive_req_t)], + ac_cv_lbl_has_dl_passive_req_t=yes, + ac_cv_lbl_has_dl_passive_req_t=no)) + AC_MSG_RESULT($ac_cv_lbl_has_dl_passive_req_t) + if test $ac_cv_lbl_has_dl_passive_req_t = yes ; then + AC_DEFINE(HAVE_DLPI_PASSIVE,1,[if passive_req_t primitive + exists]) + fi]) diff --git a/libpcap-1.8.1/arcnet.h b/libpcap-1.8.1/arcnet.h new file mode 100644 index 00000000..58690985 --- /dev/null +++ b/libpcap-1.8.1/arcnet.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1982, 1986, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * from: NetBSD: if_arc.h,v 1.13 1999/11/19 20:41:19 thorpej Exp + */ + +/* RFC 1051 */ +#define ARCTYPE_IP_OLD 240 /* IP protocol */ +#define ARCTYPE_ARP_OLD 241 /* address resolution protocol */ + +/* RFC 1201 */ +#define ARCTYPE_IP 212 /* IP protocol */ +#define ARCTYPE_ARP 213 /* address resolution protocol */ +#define ARCTYPE_REVARP 214 /* reverse addr resolution protocol */ + +#define ARCTYPE_ATALK 221 /* Appletalk */ +#define ARCTYPE_BANIAN 247 /* Banyan Vines */ +#define ARCTYPE_IPX 250 /* Novell IPX */ + +#define ARCTYPE_INET6 0xc4 /* IPng */ +#define ARCTYPE_DIAGNOSE 0x80 /* as per ANSI/ATA 878.1 */ diff --git a/libpcap-1.8.1/atmuni31.h b/libpcap-1.8.1/atmuni31.h new file mode 100644 index 00000000..0f854300 --- /dev/null +++ b/libpcap-1.8.1/atmuni31.h @@ -0,0 +1,85 @@ +/* + * Copyright (c) 1997 Yen Yen Lim and North Dakota State University + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Yen Yen Lim and + North Dakota State University + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* Based on UNI3.1 standard by ATM Forum */ + +/* ATM traffic types based on VPI=0 and (the following VCI */ +#define VCI_PPC 0x05 /* Point-to-point signal msg */ +#define VCI_BCC 0x02 /* Broadcast signal msg */ +#define VCI_OAMF4SC 0x03 /* Segment OAM F4 flow cell */ +#define VCI_OAMF4EC 0x04 /* End-to-end OAM F4 flow cell */ +#define VCI_METAC 0x01 /* Meta signal msg */ +#define VCI_ILMIC 0x10 /* ILMI msg */ + +/* Q.2931 signalling messages */ +#define CALL_PROCEED 0x02 /* call proceeding */ +#define CONNECT 0x07 /* connect */ +#define CONNECT_ACK 0x0f /* connect_ack */ +#define SETUP 0x05 /* setup */ +#define RELEASE 0x4d /* release */ +#define RELEASE_DONE 0x5a /* release_done */ +#define RESTART 0x46 /* restart */ +#define RESTART_ACK 0x4e /* restart ack */ +#define STATUS 0x7d /* status */ +#define STATUS_ENQ 0x75 /* status ack */ +#define ADD_PARTY 0x80 /* add party */ +#define ADD_PARTY_ACK 0x81 /* add party ack */ +#define ADD_PARTY_REJ 0x82 /* add party rej */ +#define DROP_PARTY 0x83 /* drop party */ +#define DROP_PARTY_ACK 0x84 /* drop party ack */ + +/* Information Element Parameters in the signalling messages */ +#define CAUSE 0x08 /* cause */ +#define ENDPT_REF 0x54 /* endpoint reference */ +#define AAL_PARA 0x58 /* ATM adaptation layer parameters */ +#define TRAFF_DESCRIP 0x59 /* atm traffic descriptors */ +#define CONNECT_ID 0x5a /* connection identifier */ +#define QOS_PARA 0x5c /* quality of service parameters */ +#define B_HIGHER 0x5d /* broadband higher layer information */ +#define B_BEARER 0x5e /* broadband bearer capability */ +#define B_LOWER 0x5f /* broadband lower information */ +#define CALLING_PARTY 0x6c /* calling party number */ +#define CALLED_PARTY 0x70 /* called party nmber */ + +#define Q2931 0x09 + +/* Q.2931 signalling general messages format */ +#define PROTO_POS 0 /* offset of protocol discriminator */ +#define CALL_REF_POS 2 /* offset of call reference value */ +#define MSG_TYPE_POS 5 /* offset of message type */ +#define MSG_LEN_POS 7 /* offset of mesage length */ +#define IE_BEGIN_POS 9 /* offset of first information element */ + +/* format of signalling messages */ +#define TYPE_POS 0 +#define LEN_POS 2 +#define FIELD_BEGIN_POS 4 diff --git a/libpcap-1.8.1/bpf/net/bpf_filter.c b/libpcap-1.8.1/bpf/net/bpf_filter.c new file mode 100644 index 00000000..01a1b64e --- /dev/null +++ b/libpcap-1.8.1/bpf/net/bpf_filter.c @@ -0,0 +1,766 @@ +/*- + * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from the Stanford/CMU enet packet filter, + * (net/enet.c) distributed as part of 4.3BSD, and code contributed + * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence + * Berkeley Laboratory. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)bpf.c 7.5 (Berkeley) 7/15/91 + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef _WIN32 + +#include + +#else /* _WIN32 */ + +#if HAVE_INTTYPES_H +#include +#elif HAVE_STDINT_H +#include +#endif +#ifdef HAVE_SYS_BITYPES_H +#include +#endif + +#include +#include +#include + +#define SOLARIS (defined(sun) && (defined(__SVR4) || defined(__svr4__))) +#if defined(__hpux) || SOLARIS +# include +# include +# define mbuf msgb +# define m_next b_cont +# define MLEN(m) ((m)->b_wptr - (m)->b_rptr) +# define mtod(m,t) ((t)(m)->b_rptr) +#else /* defined(__hpux) || SOLARIS */ +# define MLEN(m) ((m)->m_len) +#endif /* defined(__hpux) || SOLARIS */ + +#endif /* _WIN32 */ + +#include + +#if !defined(KERNEL) && !defined(_KERNEL) +#include +#endif + +#define int32 bpf_int32 +#define u_int32 bpf_u_int32 + +#ifndef LBL_ALIGN +/* + * XXX - IA-64? If not, this probably won't work on Win64 IA-64 + * systems, unless LBL_ALIGN is defined elsewhere for them. + * XXX - SuperH? If not, this probably won't work on WinCE SuperH + * systems, unless LBL_ALIGN is defined elsewhere for them. + */ +#if defined(sparc) || defined(__sparc__) || defined(mips) || \ + defined(ibm032) || defined(__alpha) || defined(__hpux) || \ + defined(__arm__) +#define LBL_ALIGN +#endif +#endif + +#ifndef LBL_ALIGN +#ifndef _WIN32 +#include +#endif + +#define EXTRACT_SHORT(p) ((u_short)ntohs(*(u_short *)p)) +#define EXTRACT_LONG(p) (ntohl(*(u_int32 *)p)) +#else +#define EXTRACT_SHORT(p)\ + ((u_short)\ + ((u_short)*((u_char *)p+0)<<8|\ + (u_short)*((u_char *)p+1)<<0)) +#define EXTRACT_LONG(p)\ + ((u_int32)*((u_char *)p+0)<<24|\ + (u_int32)*((u_char *)p+1)<<16|\ + (u_int32)*((u_char *)p+2)<<8|\ + (u_int32)*((u_char *)p+3)<<0) +#endif + +#if defined(KERNEL) || defined(_KERNEL) +# if !defined(__hpux) && !SOLARIS +#include +# endif +#define MINDEX(len, _m, _k) \ +{ \ + len = MLEN(m); \ + while ((_k) >= len) { \ + (_k) -= len; \ + (_m) = (_m)->m_next; \ + if ((_m) == 0) \ + return 0; \ + len = MLEN(m); \ + } \ +} + +static int +m_xword(m, k, err) + register struct mbuf *m; + register int k, *err; +{ + register int len; + register u_char *cp, *np; + register struct mbuf *m0; + + MINDEX(len, m, k); + cp = mtod(m, u_char *) + k; + if (len - k >= 4) { + *err = 0; + return EXTRACT_LONG(cp); + } + m0 = m->m_next; + if (m0 == 0 || MLEN(m0) + len - k < 4) + goto bad; + *err = 0; + np = mtod(m0, u_char *); + switch (len - k) { + + case 1: + return (cp[0] << 24) | (np[0] << 16) | (np[1] << 8) | np[2]; + + case 2: + return (cp[0] << 24) | (cp[1] << 16) | (np[0] << 8) | np[1]; + + default: + return (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | np[0]; + } + bad: + *err = 1; + return 0; +} + +static int +m_xhalf(m, k, err) + register struct mbuf *m; + register int k, *err; +{ + register int len; + register u_char *cp; + register struct mbuf *m0; + + MINDEX(len, m, k); + cp = mtod(m, u_char *) + k; + if (len - k >= 2) { + *err = 0; + return EXTRACT_SHORT(cp); + } + m0 = m->m_next; + if (m0 == 0) + goto bad; + *err = 0; + return (cp[0] << 8) | mtod(m0, u_char *)[0]; + bad: + *err = 1; + return 0; +} +#endif + +#ifdef __linux__ +#include +#include +#include +#endif + +enum { + BPF_S_ANC_NONE, + BPF_S_ANC_VLAN_TAG, + BPF_S_ANC_VLAN_TAG_PRESENT, +}; + +/* + * Execute the filter program starting at pc on the packet p + * wirelen is the length of the original packet + * buflen is the amount of data present + * aux_data is auxiliary data, currently used only when interpreting + * filters intended for the Linux kernel in cases where the kernel + * rejects the filter; it contains VLAN tag information + * For the kernel, p is assumed to be a pointer to an mbuf if buflen is 0, + * in all other cases, p is a pointer to a buffer and buflen is its size. + * + * Thanks to Ani Sinha for providing initial implementation + */ +u_int +bpf_filter_with_aux_data(pc, p, wirelen, buflen, aux_data) + register const struct bpf_insn *pc; + register const u_char *p; + u_int wirelen; + register u_int buflen; + register const struct bpf_aux_data *aux_data; +{ + register u_int32 A, X; + register bpf_u_int32 k; + u_int32 mem[BPF_MEMWORDS]; +#if defined(KERNEL) || defined(_KERNEL) + struct mbuf *m, *n; + int merr, len; + + if (buflen == 0) { + m = (struct mbuf *)p; + p = mtod(m, u_char *); + buflen = MLEN(m); + } else + m = NULL; +#endif + + if (pc == 0) + /* + * No filter means accept all. + */ + return (u_int)-1; + A = 0; + X = 0; + --pc; + while (1) { + ++pc; + switch (pc->code) { + + default: +#if defined(KERNEL) || defined(_KERNEL) + return 0; +#else + abort(); +#endif + case BPF_RET|BPF_K: + return (u_int)pc->k; + + case BPF_RET|BPF_A: + return (u_int)A; + + case BPF_LD|BPF_W|BPF_ABS: + k = pc->k; + if (k > buflen || sizeof(int32_t) > buflen - k) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + A = m_xword(m, k, &merr); + if (merr != 0) + return 0; + continue; +#else + return 0; +#endif + } + A = EXTRACT_LONG(&p[k]); + continue; + + case BPF_LD|BPF_H|BPF_ABS: + k = pc->k; + if (k > buflen || sizeof(int16_t) > buflen - k) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + A = m_xhalf(m, k, &merr); + if (merr != 0) + return 0; + continue; +#else + return 0; +#endif + } + A = EXTRACT_SHORT(&p[k]); + continue; + + case BPF_LD|BPF_B|BPF_ABS: + { +#if defined(SKF_AD_VLAN_TAG) && defined(SKF_AD_VLAN_TAG_PRESENT) + int code = BPF_S_ANC_NONE; +#define ANCILLARY(CODE) case SKF_AD_OFF + SKF_AD_##CODE: \ + code = BPF_S_ANC_##CODE; \ + if (!aux_data) \ + return 0; \ + break; + + switch (pc->k) { + ANCILLARY(VLAN_TAG); + ANCILLARY(VLAN_TAG_PRESENT); + default : +#endif + k = pc->k; + if (k >= buflen) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + n = m; + MINDEX(len, n, k); + A = mtod(n, u_char *)[k]; + continue; +#else + return 0; +#endif + } + A = p[k]; +#if defined(SKF_AD_VLAN_TAG) && defined(SKF_AD_VLAN_TAG_PRESENT) + } + switch (code) { + case BPF_S_ANC_VLAN_TAG: + if (aux_data) + A = aux_data->vlan_tag; + break; + + case BPF_S_ANC_VLAN_TAG_PRESENT: + if (aux_data) + A = aux_data->vlan_tag_present; + break; + } +#endif + continue; + } + case BPF_LD|BPF_W|BPF_LEN: + A = wirelen; + continue; + + case BPF_LDX|BPF_W|BPF_LEN: + X = wirelen; + continue; + + case BPF_LD|BPF_W|BPF_IND: + k = X + pc->k; + if (pc->k > buflen || X > buflen - pc->k || + sizeof(int32_t) > buflen - k) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + A = m_xword(m, k, &merr); + if (merr != 0) + return 0; + continue; +#else + return 0; +#endif + } + A = EXTRACT_LONG(&p[k]); + continue; + + case BPF_LD|BPF_H|BPF_IND: + k = X + pc->k; + if (X > buflen || pc->k > buflen - X || + sizeof(int16_t) > buflen - k) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + A = m_xhalf(m, k, &merr); + if (merr != 0) + return 0; + continue; +#else + return 0; +#endif + } + A = EXTRACT_SHORT(&p[k]); + continue; + + case BPF_LD|BPF_B|BPF_IND: + k = X + pc->k; + if (pc->k >= buflen || X >= buflen - pc->k) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + n = m; + MINDEX(len, n, k); + A = mtod(n, u_char *)[k]; + continue; +#else + return 0; +#endif + } + A = p[k]; + continue; + + case BPF_LDX|BPF_MSH|BPF_B: + k = pc->k; + if (k >= buflen) { +#if defined(KERNEL) || defined(_KERNEL) + if (m == NULL) + return 0; + n = m; + MINDEX(len, n, k); + X = (mtod(n, char *)[k] & 0xf) << 2; + continue; +#else + return 0; +#endif + } + X = (p[pc->k] & 0xf) << 2; + continue; + + case BPF_LD|BPF_IMM: + A = pc->k; + continue; + + case BPF_LDX|BPF_IMM: + X = pc->k; + continue; + + case BPF_LD|BPF_MEM: + A = mem[pc->k]; + continue; + + case BPF_LDX|BPF_MEM: + X = mem[pc->k]; + continue; + + case BPF_ST: + mem[pc->k] = A; + continue; + + case BPF_STX: + mem[pc->k] = X; + continue; + + case BPF_JMP|BPF_JA: +#if defined(KERNEL) || defined(_KERNEL) + /* + * No backward jumps allowed. + */ + pc += pc->k; +#else + /* + * XXX - we currently implement "ip6 protochain" + * with backward jumps, so sign-extend pc->k. + */ + pc += (bpf_int32)pc->k; +#endif + continue; + + case BPF_JMP|BPF_JGT|BPF_K: + pc += (A > pc->k) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JGE|BPF_K: + pc += (A >= pc->k) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JEQ|BPF_K: + pc += (A == pc->k) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JSET|BPF_K: + pc += (A & pc->k) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JGT|BPF_X: + pc += (A > X) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JGE|BPF_X: + pc += (A >= X) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JEQ|BPF_X: + pc += (A == X) ? pc->jt : pc->jf; + continue; + + case BPF_JMP|BPF_JSET|BPF_X: + pc += (A & X) ? pc->jt : pc->jf; + continue; + + case BPF_ALU|BPF_ADD|BPF_X: + A += X; + continue; + + case BPF_ALU|BPF_SUB|BPF_X: + A -= X; + continue; + + case BPF_ALU|BPF_MUL|BPF_X: + A *= X; + continue; + + case BPF_ALU|BPF_DIV|BPF_X: + if (X == 0) + return 0; + A /= X; + continue; + + case BPF_ALU|BPF_MOD|BPF_X: + if (X == 0) + return 0; + A %= X; + continue; + + case BPF_ALU|BPF_AND|BPF_X: + A &= X; + continue; + + case BPF_ALU|BPF_OR|BPF_X: + A |= X; + continue; + + case BPF_ALU|BPF_XOR|BPF_X: + A ^= X; + continue; + + case BPF_ALU|BPF_LSH|BPF_X: + A <<= X; + continue; + + case BPF_ALU|BPF_RSH|BPF_X: + A >>= X; + continue; + + case BPF_ALU|BPF_ADD|BPF_K: + A += pc->k; + continue; + + case BPF_ALU|BPF_SUB|BPF_K: + A -= pc->k; + continue; + + case BPF_ALU|BPF_MUL|BPF_K: + A *= pc->k; + continue; + + case BPF_ALU|BPF_DIV|BPF_K: + A /= pc->k; + continue; + + case BPF_ALU|BPF_MOD|BPF_K: + A %= pc->k; + continue; + + case BPF_ALU|BPF_AND|BPF_K: + A &= pc->k; + continue; + + case BPF_ALU|BPF_OR|BPF_K: + A |= pc->k; + continue; + + case BPF_ALU|BPF_XOR|BPF_K: + A ^= pc->k; + continue; + + case BPF_ALU|BPF_LSH|BPF_K: + A <<= pc->k; + continue; + + case BPF_ALU|BPF_RSH|BPF_K: + A >>= pc->k; + continue; + + case BPF_ALU|BPF_NEG: + /* + * Most BPF arithmetic is unsigned, but negation + * can't be unsigned; throw some casts to + * specify what we're trying to do. + */ + A = (u_int32)(-(int32)A); + continue; + + case BPF_MISC|BPF_TAX: + X = A; + continue; + + case BPF_MISC|BPF_TXA: + A = X; + continue; + } + } +} + +u_int +bpf_filter(pc, p, wirelen, buflen) + register const struct bpf_insn *pc; + register const u_char *p; + u_int wirelen; + register u_int buflen; +{ + return bpf_filter_with_aux_data(pc, p, wirelen, buflen, NULL); +} + + +/* + * Return true if the 'fcode' is a valid filter program. + * The constraints are that each jump be forward and to a valid + * code, that memory accesses are within valid ranges (to the + * extent that this can be checked statically; loads of packet + * data have to be, and are, also checked at run time), and that + * the code terminates with either an accept or reject. + * + * The kernel needs to be able to verify an application's filter code. + * Otherwise, a bogus program could easily crash the system. + */ +int +bpf_validate(f, len) + const struct bpf_insn *f; + int len; +{ + u_int i, from; + const struct bpf_insn *p; + + if (len < 1) + return 0; + /* + * There's no maximum program length in userland. + */ +#if defined(KERNEL) || defined(_KERNEL) + if (len > BPF_MAXINSNS) + return 0; +#endif + + for (i = 0; i < (u_int)len; ++i) { + p = &f[i]; + switch (BPF_CLASS(p->code)) { + /* + * Check that memory operations use valid addresses. + */ + case BPF_LD: + case BPF_LDX: + switch (BPF_MODE(p->code)) { + case BPF_IMM: + break; + case BPF_ABS: + case BPF_IND: + case BPF_MSH: + /* + * There's no maximum packet data size + * in userland. The runtime packet length + * check suffices. + */ +#if defined(KERNEL) || defined(_KERNEL) + /* + * More strict check with actual packet length + * is done runtime. + */ + if (p->k >= bpf_maxbufsize) + return 0; +#endif + break; + case BPF_MEM: + if (p->k >= BPF_MEMWORDS) + return 0; + break; + case BPF_LEN: + break; + default: + return 0; + } + break; + case BPF_ST: + case BPF_STX: + if (p->k >= BPF_MEMWORDS) + return 0; + break; + case BPF_ALU: + switch (BPF_OP(p->code)) { + case BPF_ADD: + case BPF_SUB: + case BPF_MUL: + case BPF_OR: + case BPF_AND: + case BPF_XOR: + case BPF_LSH: + case BPF_RSH: + case BPF_NEG: + break; + case BPF_DIV: + case BPF_MOD: + /* + * Check for constant division or modulus + * by 0. + */ + if (BPF_SRC(p->code) == BPF_K && p->k == 0) + return 0; + break; + default: + return 0; + } + break; + case BPF_JMP: + /* + * Check that jumps are within the code block, + * and that unconditional branches don't go + * backwards as a result of an overflow. + * Unconditional branches have a 32-bit offset, + * so they could overflow; we check to make + * sure they don't. Conditional branches have + * an 8-bit offset, and the from address is <= + * BPF_MAXINSNS, and we assume that BPF_MAXINSNS + * is sufficiently small that adding 255 to it + * won't overflow. + * + * We know that len is <= BPF_MAXINSNS, and we + * assume that BPF_MAXINSNS is < the maximum size + * of a u_int, so that i + 1 doesn't overflow. + * + * For userland, we don't know that the from + * or len are <= BPF_MAXINSNS, but we know that + * from <= len, and, except on a 64-bit system, + * it's unlikely that len, if it truly reflects + * the size of the program we've been handed, + * will be anywhere near the maximum size of + * a u_int. We also don't check for backward + * branches, as we currently support them in + * userland for the protochain operation. + */ + from = i + 1; + switch (BPF_OP(p->code)) { + case BPF_JA: +#if defined(KERNEL) || defined(_KERNEL) + if (from + p->k < from || from + p->k >= len) +#else + if (from + p->k >= (u_int)len) +#endif + return 0; + break; + case BPF_JEQ: + case BPF_JGT: + case BPF_JGE: + case BPF_JSET: + if (from + p->jt >= (u_int)len || from + p->jf >= (u_int)len) + return 0; + break; + default: + return 0; + } + break; + case BPF_RET: + break; + case BPF_MISC: + break; + default: + return 0; + } + } + return BPF_CLASS(f[len - 1].code) == BPF_RET; +} diff --git a/libpcap-1.8.1/bpf_dump.c b/libpcap-1.8.1/bpf_dump.c new file mode 100644 index 00000000..d5ab61e5 --- /dev/null +++ b/libpcap-1.8.1/bpf_dump.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 1992, 1993, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +void +bpf_dump(const struct bpf_program *p, int option) +{ + const struct bpf_insn *insn; + int i; + int n = p->bf_len; + + insn = p->bf_insns; + if (option > 2) { + printf("%d\n", n); + for (i = 0; i < n; ++insn, ++i) { + printf("%u %u %u %u\n", insn->code, + insn->jt, insn->jf, insn->k); + } + return ; + } + if (option > 1) { + for (i = 0; i < n; ++insn, ++i) + printf("{ 0x%x, %d, %d, 0x%08x },\n", + insn->code, insn->jt, insn->jf, insn->k); + return; + } + for (i = 0; i < n; ++insn, ++i) { +#ifdef BDEBUG + extern int bids[]; + if (bids[i] > 0) + printf("[%02d]", bids[i] - 1); + else + printf(" -- "); +#endif + puts(bpf_image(insn, i)); + } +} diff --git a/libpcap-1.8.1/bpf_dump.o b/libpcap-1.8.1/bpf_dump.o new file mode 100644 index 0000000000000000000000000000000000000000..57c72a5d60190b4c56bca2cf4b0686df791791f5 GIT binary patch literal 7304 zcmb_gd5l!`9sm8_dvom$%d)$`E-W~Upo=myyX$g@A}c5g#mXXhMIGjNvpX_ZXWp!U zT3SV0tp_BHns_W#V@%Z;O%IH=9@R8$v^8o{H6|*AMB`D>CSKL;=kt5N$3C!${iDCk z@AvuMzx$ZC^UU>Yq?E!-QuK;RPKdpoN)s4V&?~w`r}$(j{=OlG4@6%+XTR96`=B+n z``|nw{@NkLEFm@@Xcgj3v1RXpx2od@!$Z6FhpM-}W3_f14EAk0xG%QpU90uxgMrpf z2j!OQ_Y2Tc>^%@_-TUsh6B8c<#pZYE^XbIItmw-(@Bic{e|V2E5${i5O-#HQgq{^lo zC<3puVc`oAFC1Lj28irO5j?pHv55Q)j=|-mEfKUn0yfdch#^YoqJMx7|CmLncn)1p z1|2FXi_jsGX7g4N z`g9IV;k^+Mv{;67hRq&WIk*(Csn< zW=*sgWw=9L0NGj5Lp1A@BVf*sZXnYm?}fpJ=xy{_C?5fHVf1b?Cn)BU=>23)RLqv> zLu3{yCKr92OhWF5&uDal(UPid#pn~%^ve>UDyCdyfV(Z6hD9`d7dsiTX>d155&0cG z?_qbX$lpod%ie}Db+aG~TDL*g!llV(PvyF!lvAmsS9{XqMe81zPK&a-QzYfnmY@iq z>eB1r7ha+0p!F1(&;!smv1lv8G4gA+p)COS$U};J4t(TcMLq(9rde!Q%fpa6!x*P9>8}-hi`VRve<|pqtI3YB`v0xk2`K%VC2Xe-1r(@O04QxF*%)5t$PlwmqS>Aj~^V)VqoiCc3PlFz7Nt0n5R#PEG8wj)t9VZCbB4$f- zGkqo4$dto@mchDdsWNJYH0*|_G^&jPYum|A@hZo%kaBH1<4o;=V-m{Nb_6`N3#)L@ zjSQ!iT@gTM0=x?WH_6^ra3}`{}$IqVNPJkF30B1yf26 zpWxOxwo}!~iXivK%Mg9zS3z`>D<<55Yzml@U|(Ur5AZTF&57^1Vgehc%t^3WFbAbl zD@s?iSxZzK*`S~>I{=5rj1{pK$WczpSsNomZu#ZxFLpZ;#cuN6P2_r!mmv=!pMksq zne}?~Od^W=4| z2omyf7I1KN39Va`H>c*!v2~P|m1>)cx5T9rW>X$@oQP27(>w10`K&mqz9Fx^XM|Vb z(040*MtC(oy)$pl$QwG1Q$?d(FN~D! zT#Rpa&S$k&8L6d9J`-xR5h|~VJC0q$w8hIKNz5{5Fy5b7mgpC$d;#sQO!m|+=iItkZ7N?(kJJyhow`)EQA=ej z#YPFEkor*rg9AG>n*)c@*(y?%Vvgfix1rF;)wZKjc88^uu5GnzYQ2`l5d-kuA>j<_;c0{~XwcsQ!y zG_Z&<)cqU~sS*Z~4XZSuLe+W(3+0rkHn7z>LyZ)=dJ>F5sR_Z{b8YyW$C1)nWv+s; zD!r)KCG2wF20rVDn`5i{`(sNJ1Bt#^9AlInU4esVY_S6_U#z5^I8L4w^-7)sr&y2Y z3hAPqbyna|ip57_@pA`a@%&h!j%{2lINMi@7O>sRkW~v=lyxVa-5SUGa^O^{#p_ND z%TRC>_5Mcx)zs7{XGL{TEq1j+D^;gZ!NiX_=}gh~X4f}T7`T)gC7w&d9UhFC+B*$* z*9c77Hm(`0jU|KrU8eR1gQ@9Kt1Xo;(X^V*VXYE4?tqhA7<6H=NHxlhx(%(n-voDr zz+C6*4%eQ$gwg*-)m;XhJk>3wao3bvy*t17Z?t;#@>uWYOrz{HlIsiQbgkk}PJBs2 z3HukiJWs$V@&po2ysKL9BwR$HPQ0sDwRG$XTxVTx{>->Vp3xGkHnnuDYQ9jFwU!QX z`a&3|d9?_649LLZO(JN9Wkj}F9df#yX?DskIm?)<&RZ|Ci@dD7WQju)9!)fPG5C_{ z-noY*CawaueKJWg6%4O(H%ZY3f)}`(0s;?3Uka%A$mGrJz1>_B6ZZ<^O{SyuxNLmM z#J@a$GDXDCqV;%2`;sZ9_&D|#4}D)U1s^7p$wY71o=GWQu)bvCKb$|AVw#^t{OO`c zOE|A>7~d0o7L2>}DE{=L_`}-+*Y^Chn4c4g^{WS1^s(qatmoREJXU#DxL1ohiSVx+ zal7%~VHXi!y7TG3t;!`nf`uyW)L3?Jv;z$CM$#OWFl0^gkQ zpNt6Qaaw+oM!vadf2KzMn+I?8jBitX#AoxAtc#p>WH15;*oW_?lzOM0r z#*a0ArBQv_LVM<-ziih+jf*v&uJJsLDUG*lyiX(lZPWirjepkos>Zi9exQ-xWN2?< z?1)n}c57Uyaf!y&8aHUXRO96uuh6(l;~tIoXnaWHK8-JEd`08i8b8$drN$uMer#Wd z#@QPAv54}MG_KV6V~zYyMg6TB@6`Bvjr>MJ{Yx5O*T}DClz*$y!lA+SHJgZS8zVx0 zg65N&KUwo@G@hsN5+eM!5V7$pTJC81EgFBN z@jUUf=~}uxVk4Yu?{SmS@Q=v$w5Ut))mgIfYD|>z#7N*lgC_>ATz}9!p0;p0ed9Ta zwBytY89v0&&;K>?Zp1LDvx`21$o~I=m^zhk462)B$YsTAIMzweK&C(Kc+)J#6i5k3A7G+JB#2A8hC|fXu{rNtaY5>!p6RMkPdXC4`q@y?BW>Oe>Lj0}dfGbzpIf zq7m!|*N@kab3uDPAjKO{zTp#iWcnz($I+=KtT``vc9%lnulFik`dp8!mvXP(DrnCK zq<9MJJVrt%Psg+0AMcll$92zmywSaQJ3)IsAjMmVH$*}wPsh8$qp9jf5Ps$LlBc^F z0)M^tqh8J<>*Y(qtM_iu^x^z5_2OP^qEaX7m><;W*$v=c*; lRrAbvoFCTdt$C2*CRDbDgic;OcF%A36aww{jDViqe*mIdXej^y literal 0 HcmV?d00001 diff --git a/libpcap-1.8.1/bpf_filter.c b/libpcap-1.8.1/bpf_filter.c new file mode 120000 index 00000000..0605488a --- /dev/null +++ b/libpcap-1.8.1/bpf_filter.c @@ -0,0 +1 @@ +./bpf/net/bpf_filter.c \ No newline at end of file diff --git a/libpcap-1.8.1/bpf_filter.o b/libpcap-1.8.1/bpf_filter.o new file mode 100644 index 0000000000000000000000000000000000000000..94bf7f30161bd81ee08edf752d0d75c63ae4d7cc GIT binary patch literal 10920 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 literal 0 HcmV?d00001 diff --git a/libpcap-1.8.1/bpf_image.c b/libpcap-1.8.1/bpf_image.c new file mode 100644 index 00000000..01ec536d --- /dev/null +++ b/libpcap-1.8.1/bpf_image.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 1990, 1991, 1992, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef _WIN32 +#include +#else /* _WIN32 */ +#if HAVE_INTTYPES_H +#include +#elif HAVE_STDINT_H +#include +#endif +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +#include +#endif /* _WIN32 */ + +#include +#include + +#include "pcap-int.h" + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +char * +bpf_image(p, n) + const struct bpf_insn *p; + int n; +{ + int v; + const char *fmt, *op; + static char image[256]; + char operand[64]; + + v = p->k; + switch (p->code) { + + default: + op = "unimp"; + fmt = "0x%x"; + v = p->code; + break; + + case BPF_RET|BPF_K: + op = "ret"; + fmt = "#%d"; + break; + + case BPF_RET|BPF_A: + op = "ret"; + fmt = ""; + break; + + case BPF_LD|BPF_W|BPF_ABS: + op = "ld"; + fmt = "[%d]"; + break; + + case BPF_LD|BPF_H|BPF_ABS: + op = "ldh"; + fmt = "[%d]"; + break; + + case BPF_LD|BPF_B|BPF_ABS: + op = "ldb"; + fmt = "[%d]"; + break; + + case BPF_LD|BPF_W|BPF_LEN: + op = "ld"; + fmt = "#pktlen"; + break; + + case BPF_LD|BPF_W|BPF_IND: + op = "ld"; + fmt = "[x + %d]"; + break; + + case BPF_LD|BPF_H|BPF_IND: + op = "ldh"; + fmt = "[x + %d]"; + break; + + case BPF_LD|BPF_B|BPF_IND: + op = "ldb"; + fmt = "[x + %d]"; + break; + + case BPF_LD|BPF_IMM: + op = "ld"; + fmt = "#0x%x"; + break; + + case BPF_LDX|BPF_IMM: + op = "ldx"; + fmt = "#0x%x"; + break; + + case BPF_LDX|BPF_MSH|BPF_B: + op = "ldxb"; + fmt = "4*([%d]&0xf)"; + break; + + case BPF_LD|BPF_MEM: + op = "ld"; + fmt = "M[%d]"; + break; + + case BPF_LDX|BPF_MEM: + op = "ldx"; + fmt = "M[%d]"; + break; + + case BPF_ST: + op = "st"; + fmt = "M[%d]"; + break; + + case BPF_STX: + op = "stx"; + fmt = "M[%d]"; + break; + + case BPF_JMP|BPF_JA: + op = "ja"; + fmt = "%d"; + v = n + 1 + p->k; + break; + + case BPF_JMP|BPF_JGT|BPF_K: + op = "jgt"; + fmt = "#0x%x"; + break; + + case BPF_JMP|BPF_JGE|BPF_K: + op = "jge"; + fmt = "#0x%x"; + break; + + case BPF_JMP|BPF_JEQ|BPF_K: + op = "jeq"; + fmt = "#0x%x"; + break; + + case BPF_JMP|BPF_JSET|BPF_K: + op = "jset"; + fmt = "#0x%x"; + break; + + case BPF_JMP|BPF_JGT|BPF_X: + op = "jgt"; + fmt = "x"; + break; + + case BPF_JMP|BPF_JGE|BPF_X: + op = "jge"; + fmt = "x"; + break; + + case BPF_JMP|BPF_JEQ|BPF_X: + op = "jeq"; + fmt = "x"; + break; + + case BPF_JMP|BPF_JSET|BPF_X: + op = "jset"; + fmt = "x"; + break; + + case BPF_ALU|BPF_ADD|BPF_X: + op = "add"; + fmt = "x"; + break; + + case BPF_ALU|BPF_SUB|BPF_X: + op = "sub"; + fmt = "x"; + break; + + case BPF_ALU|BPF_MUL|BPF_X: + op = "mul"; + fmt = "x"; + break; + + case BPF_ALU|BPF_DIV|BPF_X: + op = "div"; + fmt = "x"; + break; + + case BPF_ALU|BPF_MOD|BPF_X: + op = "mod"; + fmt = "x"; + break; + + case BPF_ALU|BPF_AND|BPF_X: + op = "and"; + fmt = "x"; + break; + + case BPF_ALU|BPF_OR|BPF_X: + op = "or"; + fmt = "x"; + break; + + case BPF_ALU|BPF_XOR|BPF_X: + op = "xor"; + fmt = "x"; + break; + + case BPF_ALU|BPF_LSH|BPF_X: + op = "lsh"; + fmt = "x"; + break; + + case BPF_ALU|BPF_RSH|BPF_X: + op = "rsh"; + fmt = "x"; + break; + + case BPF_ALU|BPF_ADD|BPF_K: + op = "add"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_SUB|BPF_K: + op = "sub"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_MUL|BPF_K: + op = "mul"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_DIV|BPF_K: + op = "div"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_MOD|BPF_K: + op = "mod"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_AND|BPF_K: + op = "and"; + fmt = "#0x%x"; + break; + + case BPF_ALU|BPF_OR|BPF_K: + op = "or"; + fmt = "#0x%x"; + break; + + case BPF_ALU|BPF_XOR|BPF_K: + op = "xor"; + fmt = "#0x%x"; + break; + + case BPF_ALU|BPF_LSH|BPF_K: + op = "lsh"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_RSH|BPF_K: + op = "rsh"; + fmt = "#%d"; + break; + + case BPF_ALU|BPF_NEG: + op = "neg"; + fmt = ""; + break; + + case BPF_MISC|BPF_TAX: + op = "tax"; + fmt = ""; + break; + + case BPF_MISC|BPF_TXA: + op = "txa"; + fmt = ""; + break; + } + (void)pcap_snprintf(operand, sizeof operand, fmt, v); + if (BPF_CLASS(p->code) == BPF_JMP && BPF_OP(p->code) != BPF_JA) { + (void)pcap_snprintf(image, sizeof image, + "(%03d) %-8s %-16s jt %d\tjf %d", + n, op, operand, n + 1 + p->jt, n + 1 + p->jf); + } else { + (void)pcap_snprintf(image, sizeof image, + "(%03d) %-8s %s", + n, op, operand); + } + return image; +} diff --git a/libpcap-1.8.1/bpf_image.o b/libpcap-1.8.1/bpf_image.o new file mode 100644 index 0000000000000000000000000000000000000000..3b1d305f3748ea72ecf4684f77f3bb024279eb1a GIT binary patch literal 13460 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 header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* if libdlpi exists */ +#cmakedefine HAVE_LIBDLPI 1 + +/* if libnl exists */ +#cmakedefine HAVE_LIBNL 1 + +/* if libnl exists and is version 2.x */ +#cmakedefine HAVE_LIBNL_2_x 1 + +/* if libnl exists and is version 3.x */ +#cmakedefine HAVE_LIBNL_3_x 1 + +/* libnl has NLE_FAILURE */ +#cmakedefine HAVE_LIBNL_NLE 1 + +/* libnl has new-style socket api */ +#cmakedefine HAVE_LIBNL_SOCKETS 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_COMPILER_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_ETHTOOL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_IF_BONDING_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_IF_PACKET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_NET_TSTAMP_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_SOCKIOS_H 1 + +/* if tp_vlan_tci exists */ +#cmakedefine HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_USBDEVICE_FS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_WIRELESS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_ETHER_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_IF_ETHER_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETPACKET_IF_PACKET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETPACKET_PACKET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NET_IF_MEDIA_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NET_PFVAR_H 1 + +/* if there's an os_proto.h for this platform, to use additional prototypes */ +#cmakedefine HAVE_OS_PROTO_H 1 + +/* Define to 1 if remote packet capture is to be supported */ +#cmakedefine HAVE_REMOTE 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_PATHS_H 1 + +/* define if net/pfvar.h defines PF_NAT through PF_NORDR */ +#cmakedefine HAVE_PF_NAT_THROUGH_PF_NORDR 1 + +/* define if you have the Septel API */ +#cmakedefine HAVE_SEPTEL_API 1 + +/* define if you have the Myricom SNF API */ +#cmakedefine HAVE_SNF_API 1 + +/* Define to 1 if you have the `snprintf' function. */ +#cmakedefine HAVE_SNPRINTF 1 + +/* if struct sockaddr has the sa_len member */ +#cmakedefine HAVE_SOCKADDR_SA_LEN 1 + +/* if struct sockaddr_storage exists */ +#cmakedefine HAVE_SOCKADDR_STORAGE 1 + +/* define if socklen_t is defined */ +#cmakedefine HAVE_SOCKLEN_T 1 + +/* On solaris */ +#cmakedefine HAVE_SOLARIS 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strerror' function. */ +#cmakedefine HAVE_STRERROR 1 + +/* Define to 1 if you have the `strlcpy' function. */ +#cmakedefine HAVE_STRLCPY 1 + +/* Define to 1 if the system has the type `struct BPF_TIMEVAL'. */ +#cmakedefine HAVE_STRUCT_BPF_TIMEVAL 1 + +/* Define to 1 if the system has the type `struct ether_addr'. */ +#cmakedefine HAVE_STRUCT_ETHER_ADDR 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_BITYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_BUFMOD_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_DLPI_EXT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_IOCCOM_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOCKIO_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H 1 + +/* define if you have the TurboCap API */ +#cmakedefine HAVE_TC_API 1 + +/* if if_packet.h has tpacket_stats defined */ +#cmakedefine HAVE_TPACKET_STATS 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H 1 + +/* if struct usbdevfs_ctrltransfer has bRequestType */ +#cmakedefine HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1 + +/* Define to 1 if you have the `vsnprintf' function. */ +#cmakedefine HAVE_VSNPRINTF 1 + +/* Define to 1 if you have the `PacketIsLoopbackAdapter' function. */ +#cmakedefine HAVE_PACKET_IS_LOOPBACK_ADAPTER 1 + +/* define if the system supports zerocopy BPF */ +#cmakedefine HAVE_ZEROCOPY_BPF 1 + +/* define if your compiler has __attribute__ */ +#cmakedefine HAVE___ATTRIBUTE__ 1 + +/* IPv6 */ +#cmakedefine INET6 1 + +/* if unaligned access fails */ +#cmakedefine LBL_ALIGN 1 + +/* path for device for USB sniffing */ +#cmakedefine LINUX_USB_MON_DEV 1 + +/* if we need a pcap_parse wrapper around yyparse */ +#cmakedefine NEED_YYPARSE_WRAPPER 1 + +/* Define to 1 if netinet/ether.h declares `ether_hostton' */ +#cmakedefine NETINET_ETHER_H_DECLARES_ETHER_HOSTTON 1 + +/* Define to 1 if netinet/if_ether.h declares `ether_hostton' */ +#cmakedefine NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON 1 + +/* do not use protochain */ +#cmakedefine NO_PROTOCHAIN 1 + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT 1 + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME 1 + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING 1 + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME 1 + +/* Define to the home page for this package. */ +#cmakedefine PACKAGE_URL 1 + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION 1 + +/* /dev/dlpi directory */ +#cmakedefine PCAP_DEV_PREFIX 1 + +/* target host supports Bluetooth sniffing */ +#cmakedefine PCAP_SUPPORT_BT 1 + +/* target host supports Bluetooth Monitor */ +#cmakedefine PCAP_SUPPORT_BT_MONITOR 1 + +/* support D-Bus sniffing */ +#cmakedefine PCAP_SUPPORT_DBUS 1 + +/* target host supports netfilter sniffing */ +#cmakedefine PCAP_SUPPORT_NETFILTER 1 + +/* use Linux packet ring capture if available */ +#cmakedefine PCAP_SUPPORT_PACKET_RING 1 + +/* target host supports USB sniffing */ +#cmakedefine PCAP_SUPPORT_USB 1 + +/* include ACN support */ +#cmakedefine SITA 1 + +/* if struct sockaddr_hci has hci_channel member */ +#cmakedefine SOCKADDR_HCI_HAS_HCI_CHANNEL 1 + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS 1 + +/* Enable parser debugging */ +#cmakedefine YYDEBUG 1 + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#cmakedefine _FILE_OFFSET_BITS 1 + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#cmakedefine _LARGEFILE_SOURCE 1 + +/* Define for large files, on AIX-style hosts. */ +#cmakedefine _LARGE_FILES 1 + +/* define on AIX to get certain functions */ +#cmakedefine _SUN 1 + +/* define if your compiler allows __attribute__((format)) without a warning */ +#cmakedefine __ATTRIBUTE___FORMAT_OK 1 + +#if 0 +/* to handle Ultrix compilers that don't support const in prototypes */ +#cmakedefine const 1 + +/* Define as token for inline if inlining supported */ +#cmakedefine inline 1 + +/* Define to `short' if int16_t not defined. */ +#cmakedefine int16_t 1 + +/* Define to `int' if int32_t not defined. */ +#cmakedefine int32_t 1 + +/* Define to `long long' if int64_t not defined. */ +#cmakedefine int64_t 1 + +/* Define to `signed char' if int8_t not defined. */ +#cmakedefine int8_t 1 + +/* on sinix */ +#cmakedefine sinix 1 + +/* Define to `unsigned short' if u_int16_t not defined. */ +#cmakedefine u_int16_t 1 + +/* Define to `unsigned int' if u_int32_t not defined. */ +#cmakedefine u_int32_t 1 + +/* Define to `unsigned long long' if u_int64_t not defined. */ +#cmakedefine u_int64_t 1 + +/* Define to `unsigned char' if u_int8_t not defined. */ +#cmakedefine u_int8_t 1 +#endif diff --git a/libpcap-1.8.1/config.guess b/libpcap-1.8.1/config.guess new file mode 100644 index 00000000..44290b83 --- /dev/null +++ b/libpcap-1.8.1/config.guess @@ -0,0 +1,1435 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-02-23' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libpcap-1.8.1/config.h b/libpcap-1.8.1/config.h new file mode 100644 index 00000000..a72c2342 --- /dev/null +++ b/libpcap-1.8.1/config.h @@ -0,0 +1,348 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Enable optimizer debugging */ +/* #undef BDEBUG */ + +/* define if you have a cloning BPF device */ +/* #undef HAVE_CLONING_BPF */ + +/* define if you have the DAG API */ +/* #undef HAVE_DAG_API */ + +/* define if you have dag_get_erf_types() */ +/* #undef HAVE_DAG_GET_ERF_TYPES */ + +/* define if you have dag_get_stream_erf_types() */ +/* #undef HAVE_DAG_GET_STREAM_ERF_TYPES */ + +/* define if you have streams capable DAG API */ +/* #undef HAVE_DAG_STREAMS_API */ + +/* define if you have vdag_set_device_info() */ +/* #undef HAVE_DAG_VDAG */ + +/* Define to 1 if you have the declaration of `ether_hostton', and to 0 if you + don't. */ +#define HAVE_DECL_ETHER_HOSTTON 1 + +/* define if you have a /dev/dlpi */ +/* #undef HAVE_DEV_DLPI */ + +/* if passive_req_t primitive exists */ +/* #undef HAVE_DLPI_PASSIVE */ + +/* Define to 1 if you have the `ether_hostton' function. */ +#define HAVE_ETHER_HOSTTON 1 + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#define HAVE_FSEEKO 1 + +/* on HP-UX 10.20 or later */ +/* #undef HAVE_HPUX10_20_OR_LATER */ + +/* on HP-UX 9.x */ +/* #undef HAVE_HPUX9 */ + +/* if ppa_info_t_dl_module_id exists */ +/* #undef HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* if libdlpi exists */ +/* #undef HAVE_LIBDLPI */ + +/* if libnl exists */ +/* #undef HAVE_LIBNL */ + +/* if libnl exists and is version 2.x */ +/* #undef HAVE_LIBNL_2_x */ + +/* if libnl exists and is version 3.x */ +/* #undef HAVE_LIBNL_3_x */ + +/* libnl has NLE_FAILURE */ +/* #undef HAVE_LIBNL_NLE */ + +/* libnl has new-style socket api */ +/* #undef HAVE_LIBNL_SOCKETS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LINUX_COMPILER_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_ETHTOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_IF_BONDING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_IF_PACKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_NET_TSTAMP_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_SOCKIOS_H 1 + +/* if tp_vlan_tci exists */ +#define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_USBDEVICE_FS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LINUX_WIRELESS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_ETHER_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IF_ETHER_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NETPACKET_IF_PACKET_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_NETPACKET_PACKET_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NET_IF_MEDIA_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NET_PFVAR_H */ + +/* if there's an os_proto.h for this platform, to use additional prototypes */ +/* #undef HAVE_OS_PROTO_H */ + +/* define if net/pfvar.h defines PF_NAT through PF_NORDR */ +/* #undef HAVE_PF_NAT_THROUGH_PF_NORDR */ + +/* define if you have the Septel API */ +/* #undef HAVE_SEPTEL_API */ + +/* define if you have the Myricom SNF API */ +/* #undef HAVE_SNF_API */ + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* if struct sockaddr has the sa_len member */ +/* #undef HAVE_SOCKADDR_SA_LEN */ + +/* if struct sockaddr_storage exists */ +#define HAVE_SOCKADDR_STORAGE 1 + +/* define if socklen_t is defined */ +#define HAVE_SOCKLEN_T 1 + +/* On solaris */ +/* #undef HAVE_SOLARIS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strlcpy' function. */ +/* #undef HAVE_STRLCPY */ + +/* Define to 1 if you have the `strtok_r' function. */ +#define HAVE_STRTOK_R 1 + +/* Define to 1 if the system has the type `struct BPF_TIMEVAL'. */ +/* #undef HAVE_STRUCT_BPF_TIMEVAL */ + +/* Define to 1 if the system has the type `struct ether_addr'. */ +/* #undef HAVE_STRUCT_ETHER_ADDR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_BITYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_BUFMOD_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_DLPI_EXT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOCCOM_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SOCKIO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* define if you have the TurboCap API */ +/* #undef HAVE_TC_API */ + +/* if if_packet.h has tpacket_stats defined */ +#define HAVE_TPACKET_STATS 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* if struct usbdevfs_ctrltransfer has bRequestType */ +#define HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1 + +/* Define to 1 if you have the `vsnprintf' function. */ +#define HAVE_VSNPRINTF 1 + +/* define if the system supports zerocopy BPF */ +/* #undef HAVE_ZEROCOPY_BPF */ + +/* define if your compiler has __attribute__ */ +#define HAVE___ATTRIBUTE__ 1 + +/* IPv6 */ +#define INET6 1 + +/* if unaligned access fails */ +#define LBL_ALIGN 1 + +/* path for device for USB sniffing */ +#define LINUX_USB_MON_DEV "/dev/usbmon" + +/* Define to 1 if netinet/ether.h declares `ether_hostton' */ +#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ + +/* Define to 1 if netinet/if_ether.h declares `ether_hostton' */ +/* #undef NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON */ + +/* do not use protochain */ +/* #undef NO_PROTOCHAIN */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* /dev/dlpi directory */ +/* #undef PCAP_DEV_PREFIX */ + +/* target host supports Bluetooth sniffing */ +#define PCAP_SUPPORT_BT 1 + +/* target host supports Bluetooth Monitor */ +#define PCAP_SUPPORT_BT_MONITOR /**/ + +/* support D-Bus sniffing */ +/* #undef PCAP_SUPPORT_DBUS */ + +/* target host supports netfilter sniffing */ +#define PCAP_SUPPORT_NETFILTER 1 + +/* use Linux packet ring capture if available */ +#define PCAP_SUPPORT_PACKET_RING 1 + +/* target host supports USB sniffing */ +#define PCAP_SUPPORT_USB 1 + +/* include ACN support */ +/* #undef SITA */ + +/* if struct sockaddr_hci has hci_channel member */ +#define SOCKADDR_HCI_HAS_HCI_CHANNEL /**/ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Enable parser debugging */ +/* #undef YYDEBUG */ + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +/* #undef YYTEXT_POINTER */ + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#define _FILE_OFFSET_BITS 64 + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +/* #undef _LARGEFILE_SOURCE */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* define on AIX to get certain functions */ +/* #undef _SUN */ + +/* define if your compiler allows __attribute__((format)) without a warning */ +#define __ATTRIBUTE___FORMAT_OK 1 + +/* to handle Ultrix compilers that don't support const in prototypes */ +/* #undef const */ + +/* Define as token for inline if inlining supported */ +#define inline inline + +/* Define to `short' if int16_t not defined. */ +/* #undef int16_t */ + +/* Define to `int' if int32_t not defined. */ +/* #undef int32_t */ + +/* Define to `long long' if int64_t not defined. */ +/* #undef int64_t */ + +/* Define to `signed char' if int8_t not defined. */ +/* #undef int8_t */ + +/* on sinix */ +/* #undef sinix */ + +/* Define to `unsigned short' if u_int16_t not defined. */ +/* #undef u_int16_t */ + +/* Define to `unsigned int' if u_int32_t not defined. */ +/* #undef u_int32_t */ + +/* Define to `unsigned long long' if u_int64_t not defined. */ +/* #undef u_int64_t */ + +/* Define to `unsigned char' if u_int8_t not defined. */ +/* #undef u_int8_t */ diff --git a/libpcap-1.8.1/config.h.in b/libpcap-1.8.1/config.h.in new file mode 100644 index 00000000..e85b2a3f --- /dev/null +++ b/libpcap-1.8.1/config.h.in @@ -0,0 +1,347 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Enable optimizer debugging */ +#undef BDEBUG + +/* define if you have a cloning BPF device */ +#undef HAVE_CLONING_BPF + +/* define if you have the DAG API */ +#undef HAVE_DAG_API + +/* define if you have dag_get_erf_types() */ +#undef HAVE_DAG_GET_ERF_TYPES + +/* define if you have dag_get_stream_erf_types() */ +#undef HAVE_DAG_GET_STREAM_ERF_TYPES + +/* define if you have streams capable DAG API */ +#undef HAVE_DAG_STREAMS_API + +/* define if you have vdag_set_device_info() */ +#undef HAVE_DAG_VDAG + +/* Define to 1 if you have the declaration of `ether_hostton', and to 0 if you + don't. */ +#undef HAVE_DECL_ETHER_HOSTTON + +/* define if you have a /dev/dlpi */ +#undef HAVE_DEV_DLPI + +/* if passive_req_t primitive exists */ +#undef HAVE_DLPI_PASSIVE + +/* Define to 1 if you have the `ether_hostton' function. */ +#undef HAVE_ETHER_HOSTTON + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* on HP-UX 10.20 or later */ +#undef HAVE_HPUX10_20_OR_LATER + +/* on HP-UX 9.x */ +#undef HAVE_HPUX9 + +/* if ppa_info_t_dl_module_id exists */ +#undef HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* if libdlpi exists */ +#undef HAVE_LIBDLPI + +/* if libnl exists */ +#undef HAVE_LIBNL + +/* if libnl exists and is version 2.x */ +#undef HAVE_LIBNL_2_x + +/* if libnl exists and is version 3.x */ +#undef HAVE_LIBNL_3_x + +/* libnl has NLE_FAILURE */ +#undef HAVE_LIBNL_NLE + +/* libnl has new-style socket api */ +#undef HAVE_LIBNL_SOCKETS + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_COMPILER_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_ETHTOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_IF_BONDING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_IF_PACKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_NET_TSTAMP_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_SOCKIOS_H + +/* if tp_vlan_tci exists */ +#undef HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_USBDEVICE_FS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_WIRELESS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_ETHER_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IF_ETHER_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETPACKET_IF_PACKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETPACKET_PACKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_MEDIA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_PFVAR_H + +/* if there's an os_proto.h for this platform, to use additional prototypes */ +#undef HAVE_OS_PROTO_H + +/* define if net/pfvar.h defines PF_NAT through PF_NORDR */ +#undef HAVE_PF_NAT_THROUGH_PF_NORDR + +/* define if you have the Septel API */ +#undef HAVE_SEPTEL_API + +/* define if you have the Myricom SNF API */ +#undef HAVE_SNF_API + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* if struct sockaddr has the sa_len member */ +#undef HAVE_SOCKADDR_SA_LEN + +/* if struct sockaddr_storage exists */ +#undef HAVE_SOCKADDR_STORAGE + +/* define if socklen_t is defined */ +#undef HAVE_SOCKLEN_T + +/* On solaris */ +#undef HAVE_SOLARIS + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strlcpy' function. */ +#undef HAVE_STRLCPY + +/* Define to 1 if you have the `strtok_r' function. */ +#undef HAVE_STRTOK_R + +/* Define to 1 if the system has the type `struct BPF_TIMEVAL'. */ +#undef HAVE_STRUCT_BPF_TIMEVAL + +/* Define to 1 if the system has the type `struct ether_addr'. */ +#undef HAVE_STRUCT_ETHER_ADDR + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_BITYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_BUFMOD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_DLPI_EXT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCCOM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* define if you have the TurboCap API */ +#undef HAVE_TC_API + +/* if if_packet.h has tpacket_stats defined */ +#undef HAVE_TPACKET_STATS + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* if struct usbdevfs_ctrltransfer has bRequestType */ +#undef HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* define if the system supports zerocopy BPF */ +#undef HAVE_ZEROCOPY_BPF + +/* define if your compiler has __attribute__ */ +#undef HAVE___ATTRIBUTE__ + +/* IPv6 */ +#undef INET6 + +/* if unaligned access fails */ +#undef LBL_ALIGN + +/* path for device for USB sniffing */ +#undef LINUX_USB_MON_DEV + +/* Define to 1 if netinet/ether.h declares `ether_hostton' */ +#undef NETINET_ETHER_H_DECLARES_ETHER_HOSTTON + +/* Define to 1 if netinet/if_ether.h declares `ether_hostton' */ +#undef NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON + +/* do not use protochain */ +#undef NO_PROTOCHAIN + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* /dev/dlpi directory */ +#undef PCAP_DEV_PREFIX + +/* target host supports Bluetooth sniffing */ +#undef PCAP_SUPPORT_BT + +/* target host supports Bluetooth Monitor */ +#undef PCAP_SUPPORT_BT_MONITOR + +/* support D-Bus sniffing */ +#undef PCAP_SUPPORT_DBUS + +/* target host supports netfilter sniffing */ +#undef PCAP_SUPPORT_NETFILTER + +/* use Linux packet ring capture if available */ +#undef PCAP_SUPPORT_PACKET_RING + +/* target host supports USB sniffing */ +#undef PCAP_SUPPORT_USB + +/* include ACN support */ +#undef SITA + +/* if struct sockaddr_hci has hci_channel member */ +#undef SOCKADDR_HCI_HAS_HCI_CHANNEL + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Enable parser debugging */ +#undef YYDEBUG + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#undef YYTEXT_POINTER + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* define on AIX to get certain functions */ +#undef _SUN + +/* define if your compiler allows __attribute__((format)) without a warning */ +#undef __ATTRIBUTE___FORMAT_OK + +/* to handle Ultrix compilers that don't support const in prototypes */ +#undef const + +/* Define as token for inline if inlining supported */ +#undef inline + +/* Define to `short' if int16_t not defined. */ +#undef int16_t + +/* Define to `int' if int32_t not defined. */ +#undef int32_t + +/* Define to `long long' if int64_t not defined. */ +#undef int64_t + +/* Define to `signed char' if int8_t not defined. */ +#undef int8_t + +/* on sinix */ +#undef sinix + +/* Define to `unsigned short' if u_int16_t not defined. */ +#undef u_int16_t + +/* Define to `unsigned int' if u_int32_t not defined. */ +#undef u_int32_t + +/* Define to `unsigned long long' if u_int64_t not defined. */ +#undef u_int64_t + +/* Define to `unsigned char' if u_int8_t not defined. */ +#undef u_int8_t diff --git a/libpcap-1.8.1/config.log b/libpcap-1.8.1/config.log new file mode 100644 index 00000000..7cedcf2d --- /dev/null +++ b/libpcap-1.8.1/config.log @@ -0,0 +1,10057 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure --host=arm-linux --with-pcap=linux + +## --------- ## +## Platform. ## +## --------- ## + +hostname = shiva +uname -m = x86_64 +uname -r = 4.13.0-25-generic +uname -s = Linux +uname -v = #29-Ubuntu SMP Mon Jan 8 21:14:41 UTC 2018 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/evilsocket/.rvm/gems/ruby-2.4.0/bin +PATH: /home/evilsocket/.rvm/gems/ruby-2.4.0@global/bin +PATH: /home/evilsocket/.rvm/rubies/ruby-2.4.0/bin +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/games +PATH: /snap/bin +PATH: /usr/lib/jvm/java-8-oracle/bin +PATH: /usr/lib/jvm/java-8-oracle/db/bin +PATH: /usr/lib/jvm/java-8-oracle/jre/bin +PATH: /home/evilsocket/.rvm/bin +PATH: /home/evilsocket/dotfiles/bin +PATH: /home/evilsocket/ida-7.0/ +PATH: /home/evilsocket/gocode/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2350: checking build system type +configure:2364: result: x86_64-unknown-linux-gnu +configure:2384: checking host system type +configure:2397: result: arm-unknown-linux-gnu +configure:2417: checking target system type +configure:2430: result: arm-unknown-linux-gnu +configure:2538: checking for arm-linux-gcc +configure:2565: result: arm-linux-gnueabi-gcc +configure:2834: checking for C compiler version +configure:2843: arm-linux-gnueabi-gcc --version >&5 +arm-linux-gnueabi-gcc (Ubuntu/Linaro 7.2.0-6ubuntu1) 7.2.0 +Copyright (C) 2017 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2854: $? = 0 +configure:2843: arm-linux-gnueabi-gcc -v >&5 +Using built-in specs. +COLLECT_GCC=arm-linux-gnueabi-gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/7/lto-wrapper +Target: arm-linux-gnueabi +Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.2.0-6ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --with-target-system-zlib --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv5t --with-float=soft --disable-werror --enable-multilib --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include +Thread model: posix +gcc version 7.2.0 (Ubuntu/Linaro 7.2.0-6ubuntu1) +configure:2854: $? = 0 +configure:2843: arm-linux-gnueabi-gcc -V >&5 +arm-linux-gnueabi-gcc: error: unrecognized command line option '-V' +arm-linux-gnueabi-gcc: fatal error: no input files +compilation terminated. +configure:2854: $? = 1 +configure:2843: arm-linux-gnueabi-gcc -qversion >&5 +arm-linux-gnueabi-gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +arm-linux-gnueabi-gcc: fatal error: no input files +compilation terminated. +configure:2854: $? = 1 +configure:2874: checking whether the C compiler works +configure:2896: arm-linux-gnueabi-gcc conftest.c >&5 +configure:2900: $? = 0 +configure:2948: result: yes +configure:2951: checking for C compiler default output file name +configure:2953: result: a.out +configure:2959: checking for suffix of executables +configure:2966: arm-linux-gnueabi-gcc -o conftest conftest.c >&5 +configure:2970: $? = 0 +configure:2992: result: +configure:3014: checking whether we are cross compiling +configure:3022: arm-linux-gnueabi-gcc -o conftest conftest.c >&5 +configure:3026: $? = 0 +configure:3033: ./conftest +./configure: line 3035: ./conftest: cannot execute binary file: Exec format error +configure:3037: $? = 126 +configure:3052: result: yes +configure:3057: checking for suffix of object files +configure:3079: arm-linux-gnueabi-gcc -c conftest.c >&5 +configure:3083: $? = 0 +configure:3104: result: o +configure:3108: checking whether we are using the GNU C compiler +configure:3127: arm-linux-gnueabi-gcc -c conftest.c >&5 +configure:3127: $? = 0 +configure:3136: result: yes +configure:3145: checking whether arm-linux-gnueabi-gcc accepts -g +configure:3165: arm-linux-gnueabi-gcc -c -g conftest.c >&5 +configure:3165: $? = 0 +configure:3206: result: yes +configure:3223: checking for arm-linux-gnueabi-gcc option to accept ISO C89 +configure:3286: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:3286: $? = 0 +configure:3299: result: none needed +configure:3336: checking whether the compiler supports the -fvisibility=hidden option +configure:3362: arm-linux-gnueabi-gcc -c -g -O2 -Werror -fvisibility=hidden conftest.c >&5 +configure:3362: $? = 0 +configure:3364: result: yes +configure:3749: checking for inline +configure:3785: arm-linux-gnueabi-gcc -c -fvisibility=hidden -fpic conftest.c >&5 +configure:3785: $? = 0 +configure:3800: result: inline +configure:3812: checking for __attribute__ +configure:3839: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:3839: $? = 0 +configure:3858: result: yes +configure:3863: checking whether __attribute__((unused)) can be used without warnings +configure:3886: arm-linux-gnueabi-gcc -c -g -O2 -Werror conftest.c >&5 +configure:3886: $? = 0 +configure:3900: result: yes +configure:3904: checking whether __attribute__((format)) can be used without warnings +configure:3928: arm-linux-gnueabi-gcc -c -g -O2 -Werror conftest.c >&5 +configure:3928: $? = 0 +configure:3942: result: yes +configure:3952: checking how to run the C preprocessor +configure:3983: arm-linux-gnueabi-gcc -E conftest.c +configure:3983: $? = 0 +configure:3997: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:12:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:3997: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| /* end confdefs.h. */ +| #include +configure:4022: result: arm-linux-gnueabi-gcc -E +configure:4042: arm-linux-gnueabi-gcc -E conftest.c +configure:4042: $? = 0 +configure:4056: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:12:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4056: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| /* end confdefs.h. */ +| #include +configure:4085: checking for grep that handles long lines and -e +configure:4143: result: /bin/grep +configure:4148: checking for egrep +configure:4210: result: /bin/grep -E +configure:4215: checking for ANSI C header files +configure:4235: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4235: $? = 0 +configure:4319: result: yes +configure:4332: checking for sys/types.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for sys/stat.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for stdlib.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for string.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for memory.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for strings.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for inttypes.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for stdint.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4332: checking for unistd.h +configure:4332: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4332: $? = 0 +configure:4332: result: yes +configure:4346: checking sys/bitypes.h usability +configure:4346: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4346: $? = 0 +configure:4346: result: yes +configure:4346: checking sys/bitypes.h presence +configure:4346: arm-linux-gnueabi-gcc -E conftest.c +configure:4346: $? = 0 +configure:4346: result: yes +configure:4346: checking for sys/bitypes.h +configure:4346: result: yes +configure:4357: checking for int8_t +configure:4357: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4357: $? = 0 +configure:4357: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:21: error: expected expression before ')' token + if (sizeof ((int8_t))) + ^ +configure:4357: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((int8_t))) +| return 0; +| ; +| return 0; +| } +configure:4357: result: yes +configure:4370: checking for u_int8_t +configure:4370: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4370: $? = 0 +configure:4370: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:23: error: expected expression before ')' token + if (sizeof ((u_int8_t))) + ^ +configure:4370: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((u_int8_t))) +| return 0; +| ; +| return 0; +| } +configure:4370: result: yes +configure:4383: checking for int16_t +configure:4383: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4383: $? = 0 +configure:4383: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:59:22: error: expected expression before ')' token + if (sizeof ((int16_t))) + ^ +configure:4383: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((int16_t))) +| return 0; +| ; +| return 0; +| } +configure:4383: result: yes +configure:4396: checking for u_int16_t +configure:4396: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4396: $? = 0 +configure:4396: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:24: error: expected expression before ')' token + if (sizeof ((u_int16_t))) + ^ +configure:4396: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((u_int16_t))) +| return 0; +| ; +| return 0; +| } +configure:4396: result: yes +configure:4409: checking for int32_t +configure:4409: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4409: $? = 0 +configure:4409: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:22: error: expected expression before ')' token + if (sizeof ((int32_t))) + ^ +configure:4409: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((int32_t))) +| return 0; +| ; +| return 0; +| } +configure:4409: result: yes +configure:4422: checking for u_int32_t +configure:4422: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4422: $? = 0 +configure:4422: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:24: error: expected expression before ')' token + if (sizeof ((u_int32_t))) + ^ +configure:4422: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((u_int32_t))) +| return 0; +| ; +| return 0; +| } +configure:4422: result: yes +configure:4435: checking for int64_t +configure:4435: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4435: $? = 0 +configure:4435: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:22: error: expected expression before ')' token + if (sizeof ((int64_t))) + ^ +configure:4435: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((int64_t))) +| return 0; +| ; +| return 0; +| } +configure:4435: result: yes +configure:4448: checking for u_int64_t +configure:4448: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4448: $? = 0 +configure:4448: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:63:24: error: expected expression before ')' token + if (sizeof ((u_int64_t))) + ^ +configure:4448: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #ifdef HAVE_SYS_BITYPES_H +| #include +| #endif +| +| int +| main () +| { +| if (sizeof ((u_int64_t))) +| return 0; +| ; +| return 0; +| } +configure:4448: result: yes +configure:4472: checking for special C compiler options needed for large files +configure:4517: result: no +configure:4523: checking for _FILE_OFFSET_BITS value needed for large files +configure:4548: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:28:33: warning: left shift count >= width of type [-Wshift-count-overflow] + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + ^ +conftest.c:29:23: note: in expansion of macro 'LARGE_OFF_T' + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + ^~~~~~~~~~~ +conftest.c:28:57: warning: left shift count >= width of type [-Wshift-count-overflow] + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + ^ +conftest.c:29:23: note: in expansion of macro 'LARGE_OFF_T' + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + ^~~~~~~~~~~ +conftest.c:28:33: warning: left shift count >= width of type [-Wshift-count-overflow] + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + ^ +conftest.c:30:13: note: in expansion of macro 'LARGE_OFF_T' + && LARGE_OFF_T % 2147483647 == 1) + ^~~~~~~~~~~ +conftest.c:28:57: warning: left shift count >= width of type [-Wshift-count-overflow] + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + ^ +conftest.c:30:13: note: in expansion of macro 'LARGE_OFF_T' + && LARGE_OFF_T % 2147483647 == 1) + ^~~~~~~~~~~ +conftest.c:29:7: error: variably modified 'off_t_is_large' at file scope + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + ^~~~~~~~~~~~~~ +configure:4548: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| /* end confdefs.h. */ +| #include +| /* Check that off_t can represent 2**63 - 1 correctly. +| We can't simply define LARGE_OFF_T to be 9223372036854775807, +| since some C++ compilers masquerading as C compilers +| incorrectly reject 9223372036854775807. */ +| #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +| int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +| && LARGE_OFF_T % 2147483647 == 1) +| ? 1 : -1]; +| int +| main () +| { +| +| ; +| return 0; +| } +configure:4572: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4572: $? = 0 +configure:4580: result: 64 +configure:4665: checking for _LARGEFILE_SOURCE value needed for large files +configure:4684: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:4684: $? = 0 +configure:4712: result: no +configure:4737: checking sys/ioccom.h usability +configure:4737: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:58:10: fatal error: sys/ioccom.h: No such file or directory + #include + ^~~~~~~~~~~~~~ +compilation terminated. +configure:4737: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:4737: result: no +configure:4737: checking sys/ioccom.h presence +configure:4737: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:25:10: fatal error: sys/ioccom.h: No such file or directory + #include + ^~~~~~~~~~~~~~ +compilation terminated. +configure:4737: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| /* end confdefs.h. */ +| #include +configure:4737: result: no +configure:4737: checking for sys/ioccom.h +configure:4737: result: no +configure:4737: checking sys/select.h usability +configure:4737: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4737: $? = 0 +configure:4737: result: yes +configure:4737: checking sys/select.h presence +configure:4737: arm-linux-gnueabi-gcc -E conftest.c +configure:4737: $? = 0 +configure:4737: result: yes +configure:4737: checking for sys/select.h +configure:4737: result: yes +configure:4737: checking sys/sockio.h usability +configure:4737: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:59:10: fatal error: sys/sockio.h: No such file or directory + #include + ^~~~~~~~~~~~~~ +compilation terminated. +configure:4737: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:4737: result: no +configure:4737: checking sys/sockio.h presence +configure:4737: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:26:10: fatal error: sys/sockio.h: No such file or directory + #include + ^~~~~~~~~~~~~~ +compilation terminated. +configure:4737: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| /* end confdefs.h. */ +| #include +configure:4737: result: no +configure:4737: checking for sys/sockio.h +configure:4737: result: no +configure:4737: checking limits.h usability +configure:4737: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4737: $? = 0 +configure:4737: result: yes +configure:4737: checking limits.h presence +configure:4737: arm-linux-gnueabi-gcc -E conftest.c +configure:4737: $? = 0 +configure:4737: result: yes +configure:4737: checking for limits.h +configure:4737: result: yes +configure:4749: checking linux/types.h usability +configure:4749: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4749: $? = 0 +configure:4749: result: yes +configure:4749: checking linux/types.h presence +configure:4749: arm-linux-gnueabi-gcc -E conftest.c +configure:4749: $? = 0 +configure:4749: result: yes +configure:4749: checking for linux/types.h +configure:4749: result: yes +configure:4762: checking linux/if_packet.h usability +configure:4762: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4762: $? = 0 +configure:4762: result: yes +configure:4762: checking linux/if_packet.h presence +configure:4762: arm-linux-gnueabi-gcc -E conftest.c +configure:4762: $? = 0 +configure:4762: result: yes +configure:4762: checking for linux/if_packet.h +configure:4762: result: yes +configure:4762: checking netpacket/packet.h usability +configure:4762: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4762: $? = 0 +configure:4762: result: yes +configure:4762: checking netpacket/packet.h presence +configure:4762: arm-linux-gnueabi-gcc -E conftest.c +configure:4762: $? = 0 +configure:4762: result: yes +configure:4762: checking for netpacket/packet.h +configure:4762: result: yes +configure:4762: checking netpacket/if_packet.h usability +configure:4762: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:63:10: fatal error: netpacket/if_packet.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4762: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:4762: result: no +configure:4762: checking netpacket/if_packet.h presence +configure:4762: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:30:10: fatal error: netpacket/if_packet.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4762: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| /* end confdefs.h. */ +| #include +configure:4762: result: no +configure:4762: checking for netpacket/if_packet.h +configure:4762: result: no +configure:4774: checking for net/pfvar.h +configure:4774: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:34:10: fatal error: net/pfvar.h: No such file or directory + #include + ^~~~~~~~~~~~~ +compilation terminated. +configure:4774: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| /* end confdefs.h. */ +| #include +| #include +| #include +| +| #include +configure:4774: result: no +configure:4823: checking for netinet/if_ether.h +configure:4823: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4823: $? = 0 +configure:4823: result: yes +configure:4871: checking for linux/sockios.h +configure:4871: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4871: $? = 0 +configure:4871: result: yes +configure:4871: checking for linux/if_bonding.h +configure:4871: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4871: $? = 0 +configure:4871: result: yes +configure:4889: checking for ANSI ioctl definitions +configure:4917: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:4917: $? = 0 +configure:4925: result: yes +configure:4937: checking for strerror +configure:4937: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:4937: $? = 0 +configure:4937: result: yes +configure:4937: checking for strlcpy +configure:4937: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccd8Grhm.o: In function `main': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/conftest.c:68: undefined reference to `strlcpy' +collect2: error: ld returned 1 exit status +configure:4937: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| /* end confdefs.h. */ +| /* Define strlcpy to an innocuous variant, in case declares strlcpy. +| For example, HP-UX 11i declares gettimeofday. */ +| #define strlcpy innocuous_strlcpy +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char strlcpy (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef strlcpy +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char strlcpy (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined __stub_strlcpy || defined __stub___strlcpy +| choke me +| #endif +| +| int +| main () +| { +| return strlcpy (); +| ; +| return 0; +| } +configure:4937: result: no +configure:4951: checking for vsnprintf +configure:4951: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:57:6: warning: conflicting types for built-in function 'vsnprintf' [-Wbuiltin-declaration-mismatch] + char vsnprintf (); + ^~~~~~~~~ +configure:4951: $? = 0 +configure:4951: result: yes +configure:4951: checking for snprintf +configure:4951: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:58:6: warning: conflicting types for built-in function 'snprintf' [-Wbuiltin-declaration-mismatch] + char snprintf (); + ^~~~~~~~ +configure:4951: $? = 0 +configure:4951: result: yes +configure:4974: checking for strtok_r +configure:4974: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:4974: $? = 0 +configure:4974: result: yes +configure:5003: checking for library containing gethostbyname +configure:5034: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:5034: $? = 0 +configure:5051: result: none required +configure:5104: checking for library containing socket +configure:5135: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:5135: $? = 0 +configure:5152: result: none required +configure:5202: checking for library containing putmsg +configure:5233: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccDw6E7G.o: In function `main': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/conftest.c:48: warning: putmsg is not implemented and will always fail +configure:5233: $? = 0 +configure:5250: result: none required +configure:5273: checking for ether_hostton +configure:5273: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:5273: $? = 0 +configure:5273: result: yes +configure:5290: checking whether ether_hostton is declared +configure:5290: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:56:10: error: 'ether_hostton' undeclared (first use in this function); did you mean 'ether_header'? + (void) ether_hostton; + ^~~~~~~~~~~~~ + ether_header +conftest.c:56:10: note: each undeclared identifier is reported only once for each function it appears in +configure:5290: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| /* end confdefs.h. */ +| +| #include +| #include +| #include +| #include +| struct mbuf; +| struct rtentry; +| #include +| #include +| +| +| int +| main () +| { +| #ifndef ether_hostton +| #ifdef __cplusplus +| (void) ether_hostton; +| #else +| (void) ether_hostton; +| #endif +| #endif +| +| ; +| return 0; +| } +configure:5290: result: no +configure:5319: checking netinet/ether.h usability +configure:5319: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:5319: $? = 0 +configure:5319: result: yes +configure:5319: checking netinet/ether.h presence +configure:5319: arm-linux-gnueabi-gcc -E conftest.c +configure:5319: $? = 0 +configure:5319: result: yes +configure:5319: checking for netinet/ether.h +configure:5319: result: yes +configure:5337: checking whether ether_hostton is declared +configure:5337: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:5337: $? = 0 +configure:5337: result: yes +configure:5389: checking if --disable-protochain option is specified +configure:5407: result: enabled +configure:5445: checking packet capture type +configure:5510: result: linux +configure:5718: checking for linux/wireless.h +configure:5718: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:5718: $? = 0 +configure:5718: result: yes +configure:5757: checking for nl_socket_alloc in -lnl-3 +configure:5782: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c -lnl-3 -Ilinux/include -Llinux/lib/.libs -lnl-genl-3 -lnl-3 >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lnl-3 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lnl-genl-3 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lnl-3 +collect2: error: ld returned 1 exit status +configure:5782: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char nl_socket_alloc (); +| int +| main () +| { +| return nl_socket_alloc (); +| ; +| return 0; +| } +configure:5791: result: no +configure:5821: checking for nl_socket_alloc in -lnl +configure:5846: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c -lnl >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lnl +collect2: error: ld returned 1 exit status +configure:5846: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char nl_socket_alloc (); +| int +| main () +| { +| return nl_socket_alloc (); +| ; +| return 0; +| } +configure:5855: result: no +configure:5885: checking for nl_handle_alloc in -lnl +configure:5910: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c -lnl >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lnl +collect2: error: ld returned 1 exit status +configure:5910: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char nl_handle_alloc (); +| int +| main () +| { +| return nl_handle_alloc (); +| ; +| return 0; +| } +configure:5919: result: no +configure:5948: checking for linux/ethtool.h +configure:5948: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:5948: $? = 0 +configure:5948: result: yes +configure:5962: checking if if_packet.h has tpacket_stats defined +configure:5979: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:5979: $? = 0 +configure:5987: result: yes +configure:5994: checking if tpacket_auxdata struct has tp_vlan_tci member +configure:6012: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:6012: $? = 0 +configure:6020: result: yes +configure:6138: checking for getifaddrs +configure:6138: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:6138: $? = 0 +configure:6138: result: yes +configure:6145: checking ifaddrs.h usability +configure:6145: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:6145: $? = 0 +configure:6145: result: yes +configure:6145: checking ifaddrs.h presence +configure:6145: arm-linux-gnueabi-gcc -E conftest.c +configure:6145: $? = 0 +configure:6145: result: yes +configure:6145: checking for ifaddrs.h +configure:6145: result: yes +configure:6243: checking for socklen_t +configure:6259: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:6259: $? = 0 +configure:6270: result: yes +configure:6281: checking for getaddrinfo +configure:6281: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +configure:6281: $? = 0 +configure:6281: result: yes +configure:6301: checking whether to build optimizer debugging code +configure:6313: result: no +configure:6316: checking whether to build parser debugging code +configure:6328: result: no +configure:6395: checking whether we have DAG API headers +configure:6626: result: no +configure:6681: checking whether we have Septel API headers +configure:6712: result: no +configure:6792: checking whether we have Myricom Sniffer API +configure:6874: result: no +configure:6927: checking whether TurboCap is supported +configure:6955: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:48:15: fatal error: TcApi.h: No such file or directory + #include + ^~~~~~~~~ +compilation terminated. +configure:6955: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| #include +| +| int +| main () +| { +| +| TC_INSTANCE a; TC_PORT b; TC_BOARD c; +| TC_INSTANCE i; +| (void)TcInstanceCreateByName("foo", &i); +| +| ; +| return 0; +| } +configure:6973: result: no +configure:6990: checking for flex +configure:7006: found /usr/bin/flex +configure:7017: result: flex +configure:7055: flex conftest.l +configure:7059: $? = 0 +configure:7061: checking lex output file root +configure:7075: result: lex.yy +configure:7080: checking lex library +configure:7094: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccPeSmGe.o: In function `input': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/lex.yy.c:1185: undefined reference to `yywrap' +/tmp/ccPeSmGe.o: In function `yylex': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/lex.yy.c:879: undefined reference to `yywrap' +/tmp/ccPeSmGe.o: In function `main': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/conftest.l:18: undefined reference to `yywrap' +collect2: error: ld returned 1 exit status +configure:7094: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| #line 3 "lex.yy.c" +| +| #define YY_INT_ALIGNED short int +| +| /* A lexical scanner generated by flex */ +| +| #define FLEX_SCANNER +| #define YY_FLEX_MAJOR_VERSION 2 +| #define YY_FLEX_MINOR_VERSION 6 +| #define YY_FLEX_SUBMINOR_VERSION 1 +| #if YY_FLEX_SUBMINOR_VERSION > 0 +| #define FLEX_BETA +| #endif +| +| /* First, we deal with platform-specific or compiler-specific issues. */ +| +| /* begin standard C headers. */ +| #include +| #include +| #include +| #include +| +| /* end standard C headers. */ +| +| /* flex integer type definitions */ +| +| #ifndef FLEXINT_H +| #define FLEXINT_H +| +| /* C99 systems have . Non-C99 systems may or may not. */ +| +| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +| +| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, +| * if you want the limit (max/min) macros for int types. +| */ +| #ifndef __STDC_LIMIT_MACROS +| #define __STDC_LIMIT_MACROS 1 +| #endif +| +| #include +| typedef int8_t flex_int8_t; +| typedef uint8_t flex_uint8_t; +| typedef int16_t flex_int16_t; +| typedef uint16_t flex_uint16_t; +| typedef int32_t flex_int32_t; +| typedef uint32_t flex_uint32_t; +| #else +| typedef signed char flex_int8_t; +| typedef short int flex_int16_t; +| typedef int flex_int32_t; +| typedef unsigned char flex_uint8_t; +| typedef unsigned short int flex_uint16_t; +| typedef unsigned int flex_uint32_t; +| +| /* Limits of integral types. */ +| #ifndef INT8_MIN +| #define INT8_MIN (-128) +| #endif +| #ifndef INT16_MIN +| #define INT16_MIN (-32767-1) +| #endif +| #ifndef INT32_MIN +| #define INT32_MIN (-2147483647-1) +| #endif +| #ifndef INT8_MAX +| #define INT8_MAX (127) +| #endif +| #ifndef INT16_MAX +| #define INT16_MAX (32767) +| #endif +| #ifndef INT32_MAX +| #define INT32_MAX (2147483647) +| #endif +| #ifndef UINT8_MAX +| #define UINT8_MAX (255U) +| #endif +| #ifndef UINT16_MAX +| #define UINT16_MAX (65535U) +| #endif +| #ifndef UINT32_MAX +| #define UINT32_MAX (4294967295U) +| #endif +| +| #endif /* ! C99 */ +| +| #endif /* ! FLEXINT_H */ +| +| /* TODO: this is always defined, so inline it */ +| #define yyconst const +| +| #if defined(__GNUC__) && __GNUC__ >= 3 +| #define yynoreturn __attribute__((__noreturn__)) +| #else +| #define yynoreturn +| #endif +| +| /* Returned upon end-of-file. */ +| #define YY_NULL 0 +| +| /* Promotes a possibly negative, possibly signed char to an unsigned +| * integer for use as an array index. If the signed char is negative, +| * we want to instead treat it as an 8-bit unsigned char, hence the +| * double cast. +| */ +| #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +| +| /* Enter a start condition. This macro really ought to take a parameter, +| * but we do it the disgusting crufty way forced on us by the ()-less +| * definition of BEGIN. +| */ +| #define BEGIN (yy_start) = 1 + 2 * +| +| /* Translate the current start state into a value that can be later handed +| * to BEGIN to return to the state. The YYSTATE alias is for lex +| * compatibility. +| */ +| #define YY_START (((yy_start) - 1) / 2) +| #define YYSTATE YY_START +| +| /* Action number for EOF rule of a given start state. */ +| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +| +| /* Special action meaning "start processing a new file". */ +| #define YY_NEW_FILE yyrestart(yyin ) +| +| #define YY_END_OF_BUFFER_CHAR 0 +| +| /* Size of default input buffer. */ +| #ifndef YY_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k. +| * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. +| * Ditto for the __ia64__ case accordingly. +| */ +| #define YY_BUF_SIZE 32768 +| #else +| #define YY_BUF_SIZE 16384 +| #endif /* __ia64__ */ +| #endif +| +| /* The state buf must be large enough to hold one state per character in the main buffer. +| */ +| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +| +| #ifndef YY_TYPEDEF_YY_BUFFER_STATE +| #define YY_TYPEDEF_YY_BUFFER_STATE +| typedef struct yy_buffer_state *YY_BUFFER_STATE; +| #endif +| +| #ifndef YY_TYPEDEF_YY_SIZE_T +| #define YY_TYPEDEF_YY_SIZE_T +| typedef size_t yy_size_t; +| #endif +| +| extern int yyleng; +| +| extern FILE *yyin, *yyout; +| +| #define EOB_ACT_CONTINUE_SCAN 0 +| #define EOB_ACT_END_OF_FILE 1 +| #define EOB_ACT_LAST_MATCH 2 +| +| #define YY_LESS_LINENO(n) +| #define YY_LINENO_REWIND_TO(ptr) +| +| /* Return all but the first "n" matched characters back to the input stream. */ +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| *yy_cp = (yy_hold_char); \ +| YY_RESTORE_YY_MORE_OFFSET \ +| (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ +| YY_DO_BEFORE_ACTION; /* set up yytext again */ \ +| } \ +| while ( 0 ) +| +| #define unput(c) yyunput( c, (yytext_ptr) ) +| +| #ifndef YY_STRUCT_YY_BUFFER_STATE +| #define YY_STRUCT_YY_BUFFER_STATE +| struct yy_buffer_state +| { +| FILE *yy_input_file; +| +| char *yy_ch_buf; /* input buffer */ +| char *yy_buf_pos; /* current position in input buffer */ +| +| /* Size of input buffer in bytes, not including room for EOB +| * characters. +| */ +| int yy_buf_size; +| +| /* Number of characters read into yy_ch_buf, not including EOB +| * characters. +| */ +| int yy_n_chars; +| +| /* Whether we "own" the buffer - i.e., we know we created it, +| * and can realloc() it to grow it, and should free() it to +| * delete it. +| */ +| int yy_is_our_buffer; +| +| /* Whether this is an "interactive" input source; if so, and +| * if we're using stdio for input, then we want to use getc() +| * instead of fread(), to make sure we stop fetching input after +| * each newline. +| */ +| int yy_is_interactive; +| +| /* Whether we're considered to be at the beginning of a line. +| * If so, '^' rules will be active on the next match, otherwise +| * not. +| */ +| int yy_at_bol; +| +| int yy_bs_lineno; /**< The line count. */ +| int yy_bs_column; /**< The column count. */ +| +| /* Whether to try to fill the input buffer when we reach the +| * end of it. +| */ +| int yy_fill_buffer; +| +| int yy_buffer_status; +| +| #define YY_BUFFER_NEW 0 +| #define YY_BUFFER_NORMAL 1 +| /* When an EOF's been seen but there's still some text to process +| * then we mark the buffer as YY_EOF_PENDING, to indicate that we +| * shouldn't try reading from the input source any more. We might +| * still have a bunch of tokens to match, though, because of +| * possible backing-up. +| * +| * When we actually see the EOF, we change the status to "new" +| * (via yyrestart()), so that the user can continue scanning by +| * just pointing yyin at a new input file. +| */ +| #define YY_BUFFER_EOF_PENDING 2 +| +| }; +| #endif /* !YY_STRUCT_YY_BUFFER_STATE */ +| +| /* Stack of input buffers. */ +| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +| static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +| +| /* We provide macros for accessing buffer states in case in the +| * future we want to put the buffer states in a more general +| * "scanner state". +| * +| * Returns the top of the stack, or NULL. +| */ +| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ +| ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ +| : NULL) +| +| /* Same as previous macro, but useful when we know that the buffer stack is not +| * NULL or when we need an lvalue. For internal use only. +| */ +| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] +| +| /* yy_hold_char holds the character lost when yytext is formed. */ +| static char yy_hold_char; +| static int yy_n_chars; /* number of characters read into yy_ch_buf */ +| int yyleng; +| +| /* Points to current character in buffer. */ +| static char *yy_c_buf_p = NULL; +| static int yy_init = 0; /* whether we need to initialize */ +| static int yy_start = 0; /* start state number */ +| +| /* Flag which is used to allow yywrap()'s to do buffer switches +| * instead of setting up a fresh yyin. A bit of a hack ... +| */ +| static int yy_did_buffer_switch_on_eof; +| +| void yyrestart (FILE *input_file ); +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +| YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +| void yy_delete_buffer (YY_BUFFER_STATE b ); +| void yy_flush_buffer (YY_BUFFER_STATE b ); +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +| void yypop_buffer_state (void ); +| +| static void yyensure_buffer_stack (void ); +| static void yy_load_buffer_state (void ); +| static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +| +| #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +| +| YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +| YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +| YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +| +| void *yyalloc (yy_size_t ); +| void *yyrealloc (void *,yy_size_t ); +| void yyfree (void * ); +| +| #define yy_new_buffer yy_create_buffer +| +| #define yy_set_interactive(is_interactive) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){ \ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ +| } +| +| #define yy_set_bol(at_bol) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){\ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ +| } +| +| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +| +| /* Begin user sect3 */ +| +| typedef unsigned char YY_CHAR; +| +| FILE *yyin = NULL, *yyout = NULL; +| +| typedef int yy_state_type; +| +| extern int yylineno; +| +| int yylineno = 1; +| +| extern char *yytext; +| #ifdef yytext_ptr +| #undef yytext_ptr +| #endif +| #define yytext_ptr yytext +| +| static yy_state_type yy_get_previous_state (void ); +| static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +| static int yy_get_next_buffer (void ); +| static void yynoreturn yy_fatal_error (yyconst char* msg ); +| +| /* Done after the current pattern has been matched and before the +| * corresponding action - sets up yytext. +| */ +| #define YY_DO_BEFORE_ACTION \ +| (yytext_ptr) = yy_bp; \ +| (yytext_ptr) -= (yy_more_len); \ +| yyleng = (int) (yy_cp - (yytext_ptr)); \ +| (yy_hold_char) = *yy_cp; \ +| *yy_cp = '\0'; \ +| (yy_c_buf_p) = yy_cp; +| +| #define YY_NUM_RULES 8 +| #define YY_END_OF_BUFFER 9 +| /* This struct is not used in this scanner, +| but its presence is necessary. */ +| struct yy_trans_info +| { +| flex_int32_t yy_verify; +| flex_int32_t yy_nxt; +| }; +| static yyconst flex_int16_t yy_acclist[23] = +| { 0, +| 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, +| 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, +| 7, 8 +| } ; +| +| static yyconst flex_int16_t yy_accept[14] = +| { 0, +| 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, +| 20, 23, 23 +| } ; +| +| static yyconst YY_CHAR yy_ec[256] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, +| +| 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1 +| } ; +| +| static yyconst YY_CHAR yy_meta[9] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1 +| } ; +| +| static yyconst flex_uint16_t yy_base[13] = +| { 0, +| 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, +| 10, 10 +| } ; +| +| static yyconst flex_int16_t yy_def[13] = +| { 0, +| 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, +| 12, 0 +| } ; +| +| static yyconst flex_uint16_t yy_nxt[19] = +| { 0, +| 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| static yyconst flex_int16_t yy_chk[19] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| extern int yy_flex_debug; +| int yy_flex_debug = 0; +| +| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +| static char *yy_full_match; +| static int yy_lp; +| #define REJECT \ +| { \ +| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +| ++(yy_lp); \ +| goto find_rule; \ +| } +| +| static int yy_more_flag = 0; +| static int yy_more_len = 0; +| #define yymore() ((yy_more_flag) = 1) +| #define YY_MORE_ADJ (yy_more_len) +| #define YY_RESTORE_YY_MORE_OFFSET +| char *yytext; +| #line 1 "conftest.l" +| #line 469 "lex.yy.c" +| +| #define INITIAL 0 +| +| #ifndef YY_NO_UNISTD_H +| /* Special case for "unistd.h", since it is non-ANSI. We include it way +| * down here because we want the user's section 1 to have been scanned first. +| * The user has a chance to override it with an option. +| */ +| #include +| #endif +| +| #ifndef YY_EXTRA_TYPE +| #define YY_EXTRA_TYPE void * +| #endif +| +| static int yy_init_globals (void ); +| +| /* Accessor methods to globals. +| These are made visible to non-reentrant scanners for convenience. */ +| +| int yylex_destroy (void ); +| +| int yyget_debug (void ); +| +| void yyset_debug (int debug_flag ); +| +| YY_EXTRA_TYPE yyget_extra (void ); +| +| void yyset_extra (YY_EXTRA_TYPE user_defined ); +| +| FILE *yyget_in (void ); +| +| void yyset_in (FILE * _in_str ); +| +| FILE *yyget_out (void ); +| +| void yyset_out (FILE * _out_str ); +| +| int yyget_leng (void ); +| +| char *yyget_text (void ); +| +| int yyget_lineno (void ); +| +| void yyset_lineno (int _line_number ); +| +| /* Macros after this point can all be overridden by user definitions in +| * section 1. +| */ +| +| #ifndef YY_SKIP_YYWRAP +| #ifdef __cplusplus +| extern "C" int yywrap (void ); +| #else +| extern int yywrap (void ); +| #endif +| #endif +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c,char *buf_ptr ); +| +| #endif +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char *,yyconst char *,int ); +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * ); +| #endif +| +| #ifndef YY_NO_INPUT +| +| #ifdef __cplusplus +| static int yyinput (void ); +| #else +| static int input (void ); +| #endif +| +| #endif +| +| /* Amount of stuff to slurp up with each read. */ +| #ifndef YY_READ_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k */ +| #define YY_READ_BUF_SIZE 16384 +| #else +| #define YY_READ_BUF_SIZE 8192 +| #endif /* __ia64__ */ +| #endif +| +| /* Copy whatever the last rule matched to the standard output. */ +| #ifndef ECHO +| /* This used to be an fputs(), but since the string might contain NUL's, +| * we now use fwrite(). +| */ +| #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +| #endif +| +| /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +| * is returned in "result". +| */ +| #ifndef YY_INPUT +| #define YY_INPUT(buf,result,max_size) \ +| if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ +| { \ +| int c = '*'; \ +| size_t n; \ +| for ( n = 0; n < max_size && \ +| (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ +| buf[n] = (char) c; \ +| if ( c == '\n' ) \ +| buf[n++] = (char) c; \ +| if ( c == EOF && ferror( yyin ) ) \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| result = n; \ +| } \ +| else \ +| { \ +| errno=0; \ +| while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ +| { \ +| if( errno != EINTR) \ +| { \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| break; \ +| } \ +| errno=0; \ +| clearerr(yyin); \ +| } \ +| }\ +| \ +| +| #endif +| +| /* No semi-colon after return; correct usage is to write "yyterminate();" - +| * we don't want an extra ';' after the "return" because that will cause +| * some compilers to complain about unreachable statements. +| */ +| #ifndef yyterminate +| #define yyterminate() return YY_NULL +| #endif +| +| /* Number of entries by which start-condition stack grows. */ +| #ifndef YY_START_STACK_INCR +| #define YY_START_STACK_INCR 25 +| #endif +| +| /* Report a fatal error. */ +| #ifndef YY_FATAL_ERROR +| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +| #endif +| +| /* end tables serialization structures and prototypes */ +| +| /* Default declaration of generated scanner - a define so the user can +| * easily add parameters. +| */ +| #ifndef YY_DECL +| #define YY_DECL_IS_OURS 1 +| +| extern int yylex (void); +| +| #define YY_DECL int yylex (void) +| #endif /* !YY_DECL */ +| +| /* Code executed at the beginning of each rule, after yytext and yyleng +| * have been set up. +| */ +| #ifndef YY_USER_ACTION +| #define YY_USER_ACTION +| #endif +| +| /* Code executed at the end of each rule. */ +| #ifndef YY_BREAK +| #define YY_BREAK /*LINTED*/break; +| #endif +| +| #define YY_RULE_SETUP \ +| YY_USER_ACTION +| +| /** The main scanner function which does all the work. +| */ +| YY_DECL +| { +| yy_state_type yy_current_state; +| char *yy_cp, *yy_bp; +| int yy_act; +| +| if ( !(yy_init) ) +| { +| (yy_init) = 1; +| +| #ifdef YY_USER_INIT +| YY_USER_INIT; +| #endif +| +| /* Create the reject buffer large enough to save one state per allowed character. */ +| if ( ! (yy_state_buf) ) +| (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); +| if ( ! (yy_state_buf) ) +| YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); +| +| if ( ! (yy_start) ) +| (yy_start) = 1; /* first start state */ +| +| if ( ! yyin ) +| yyin = stdin; +| +| if ( ! yyout ) +| yyout = stdout; +| +| if ( ! YY_CURRENT_BUFFER ) { +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_load_buffer_state( ); +| } +| +| { +| #line 1 "conftest.l" +| +| #line 695 "lex.yy.c" +| +| while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ +| { +| (yy_more_len) = 0; +| if ( (yy_more_flag) ) +| { +| (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); +| (yy_more_flag) = 0; +| } +| yy_cp = (yy_c_buf_p); +| +| /* Support of yytext. */ +| *yy_cp = (yy_hold_char); +| +| /* yy_bp points to the position in yy_ch_buf of the start of +| * the current run. +| */ +| yy_bp = yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| yy_match: +| do +| { +| YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| ++yy_cp; +| } +| while ( yy_base[yy_current_state] != 10 ); +| +| yy_find_action: +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| find_rule: /* we branch to this label when backing up */ +| for ( ; ; ) /* until we find what rule we matched */ +| { +| if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) +| { +| yy_act = yy_acclist[(yy_lp)]; +| { +| (yy_full_match) = yy_cp; +| break; +| } +| } +| --yy_cp; +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| } +| +| YY_DO_BEFORE_ACTION; +| +| do_action: /* This label is used only to access EOF actions. */ +| +| switch ( yy_act ) +| { /* beginning of action switch */ +| case 1: +| YY_RULE_SETUP +| #line 2 "conftest.l" +| { ECHO; } +| YY_BREAK +| case 2: +| YY_RULE_SETUP +| #line 3 "conftest.l" +| { REJECT; } +| YY_BREAK +| case 3: +| YY_RULE_SETUP +| #line 4 "conftest.l" +| { yymore (); } +| YY_BREAK +| case 4: +| YY_RULE_SETUP +| #line 5 "conftest.l" +| { yyless (1); } +| YY_BREAK +| case 5: +| YY_RULE_SETUP +| #line 6 "conftest.l" +| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ +| yyless ((input () != 0)); } +| YY_BREAK +| case 6: +| YY_RULE_SETUP +| #line 8 "conftest.l" +| { unput (yytext[0]); } +| YY_BREAK +| case 7: +| YY_RULE_SETUP +| #line 9 "conftest.l" +| { BEGIN INITIAL; } +| YY_BREAK +| case 8: +| YY_RULE_SETUP +| #line 10 "conftest.l" +| ECHO; +| YY_BREAK +| #line 802 "lex.yy.c" +| case YY_STATE_EOF(INITIAL): +| yyterminate(); +| +| case YY_END_OF_BUFFER: +| { +| /* Amount of text matched not including the EOB char. */ +| int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; +| +| /* Undo the effects of YY_DO_BEFORE_ACTION. */ +| *yy_cp = (yy_hold_char); +| YY_RESTORE_YY_MORE_OFFSET +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) +| { +| /* We're scanning a new file or input source. It's +| * possible that this happened because the user +| * just pointed yyin at a new source and called +| * yylex(). If so, then we have to assure +| * consistency between YY_CURRENT_BUFFER and our +| * globals. Here is the right place to do so, because +| * this is the first action (other than possibly a +| * back-up) that will match for the new input source. +| */ +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; +| } +| +| /* Note that here we test for yy_c_buf_p "<=" to the position +| * of the first EOB in the buffer, since yy_c_buf_p will +| * already have been incremented past the NUL character +| * (since all states make transitions on EOB to the +| * end-of-buffer state). Contrast this with the test +| * in input(). +| */ +| if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| { /* This was really a NUL. */ +| yy_state_type yy_next_state; +| +| (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| /* Okay, we're now positioned to make the NUL +| * transition. We couldn't have +| * yy_get_previous_state() go ahead and do it +| * for us because it doesn't know how to deal +| * with the possibility of jamming (and we don't +| * want to build jamming into it because then it +| * will run more slowly). +| */ +| +| yy_next_state = yy_try_NUL_trans( yy_current_state ); +| +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| +| if ( yy_next_state ) +| { +| /* Consume the NUL. */ +| yy_cp = ++(yy_c_buf_p); +| yy_current_state = yy_next_state; +| goto yy_match; +| } +| +| else +| { +| yy_cp = (yy_c_buf_p); +| goto yy_find_action; +| } +| } +| +| else switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_END_OF_FILE: +| { +| (yy_did_buffer_switch_on_eof) = 0; +| +| if ( yywrap( ) ) +| { +| /* Note: because we've taken care in +| * yy_get_next_buffer() to have set up +| * yytext, we can now set up +| * yy_c_buf_p so that if some total +| * hoser (like flex itself) wants to +| * call the scanner after we return the +| * YY_NULL, it'll still work - another +| * YY_NULL will get returned. +| */ +| (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; +| +| yy_act = YY_STATE_EOF(YY_START); +| goto do_action; +| } +| +| else +| { +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| } +| break; +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = +| (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_match; +| +| case EOB_ACT_LAST_MATCH: +| (yy_c_buf_p) = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_find_action; +| } +| break; +| } +| +| default: +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--no action found" ); +| } /* end of action switch */ +| } /* end of scanning one token */ +| } /* end of user's declarations */ +| } /* end of yylex */ +| +| /* yy_get_next_buffer - try to read in a new buffer +| * +| * Returns a code representing an action: +| * EOB_ACT_LAST_MATCH - +| * EOB_ACT_CONTINUE_SCAN - continue scanning from current position +| * EOB_ACT_END_OF_FILE - end of file +| */ +| static int yy_get_next_buffer (void) +| { +| char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +| char *source = (yytext_ptr); +| int number_to_move, i; +| int ret_val; +| +| if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--end of buffer missed" ); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) +| { /* Don't try to fill the buffer, so this is an EOF. */ +| if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) +| { +| /* We matched a single character, the EOB, so +| * treat this as a final EOF. +| */ +| return EOB_ACT_END_OF_FILE; +| } +| +| else +| { +| /* We matched some text prior to the EOB, first +| * process it. +| */ +| return EOB_ACT_LAST_MATCH; +| } +| } +| +| /* Try to read more data. */ +| +| /* First move last chars to start of buffer. */ +| number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); +| +| for ( i = 0; i < number_to_move; ++i ) +| *(dest++) = *(source++); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) +| /* don't do the read, it's not guaranteed to return an EOF, +| * just force an EOF +| */ +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; +| +| else +| { +| int num_to_read = +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; +| +| while ( num_to_read <= 0 ) +| { /* Not enough room in the buffer - grow it. */ +| +| YY_FATAL_ERROR( +| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +| +| } +| +| if ( num_to_read > YY_READ_BUF_SIZE ) +| num_to_read = YY_READ_BUF_SIZE; +| +| /* Read in more data. */ +| YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +| (yy_n_chars), num_to_read ); +| +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| if ( (yy_n_chars) == 0 ) +| { +| if ( number_to_move == YY_MORE_ADJ ) +| { +| ret_val = EOB_ACT_END_OF_FILE; +| yyrestart(yyin ); +| } +| +| else +| { +| ret_val = EOB_ACT_LAST_MATCH; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = +| YY_BUFFER_EOF_PENDING; +| } +| } +| +| else +| ret_val = EOB_ACT_CONTINUE_SCAN; +| +| if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +| /* Extend the array by 50%, plus the number we really need. */ +| int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); +| if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +| } +| +| (yy_n_chars) += number_to_move; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +| +| (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; +| +| return ret_val; +| } +| +| /* yy_get_previous_state - get the state just before the EOB char was reached */ +| +| static yy_state_type yy_get_previous_state (void) +| { +| yy_state_type yy_current_state; +| char *yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) +| { +| YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| } +| +| return yy_current_state; +| } +| +| /* yy_try_NUL_trans - try to make a transition on the NUL character +| * +| * synopsis +| * next_state = yy_try_NUL_trans( current_state ); +| */ +| static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +| { +| int yy_is_jam; +| +| YY_CHAR yy_c = 1; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| yy_is_jam = (yy_current_state == 12); +| if ( ! yy_is_jam ) +| *(yy_state_ptr)++ = yy_current_state; +| +| return yy_is_jam ? 0 : yy_current_state; +| } +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c, char * yy_bp ) +| { +| char *yy_cp; +| +| yy_cp = (yy_c_buf_p); +| +| /* undo effects of setting up yytext */ +| *yy_cp = (yy_hold_char); +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| { /* need to shift things up to make room */ +| /* +2 for EOB chars. */ +| int number_to_move = (yy_n_chars) + 2; +| char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +| char *source = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; +| +| while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| *--dest = *--source; +| +| yy_cp += (int) (dest - source); +| yy_bp += (int) (dest - source); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = +| (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| YY_FATAL_ERROR( "flex scanner push-back overflow" ); +| } +| +| *--yy_cp = (char) c; +| +| (yytext_ptr) = yy_bp; +| (yy_hold_char) = *yy_cp; +| (yy_c_buf_p) = yy_cp; +| } +| +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput (void) +| #else +| static int input (void) +| #endif +| +| { +| int c; +| +| *(yy_c_buf_p) = (yy_hold_char); +| +| if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) +| { +| /* yy_c_buf_p now points to the character we want to return. +| * If this occurs *before* the EOB characters, then it's a +| * valid NUL; if not, then we've hit the end of the buffer. +| */ +| if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| /* This was really a NUL. */ +| *(yy_c_buf_p) = '\0'; +| +| else +| { /* need more input */ +| int offset = (yy_c_buf_p) - (yytext_ptr); +| ++(yy_c_buf_p); +| +| switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_LAST_MATCH: +| /* This happens because yy_g_n_b() +| * sees that we've accumulated a +| * token and flags that we need to +| * try matching the token before +| * proceeding. But for input(), +| * there's no matching to consider. +| * So convert the EOB_ACT_LAST_MATCH +| * to EOB_ACT_END_OF_FILE. +| */ +| +| /* Reset buffer status. */ +| yyrestart(yyin ); +| +| /*FALLTHROUGH*/ +| +| case EOB_ACT_END_OF_FILE: +| { +| if ( yywrap( ) ) +| return 0; +| +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| #ifdef __cplusplus +| return yyinput(); +| #else +| return input(); +| #endif +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = (yytext_ptr) + offset; +| break; +| } +| } +| } +| +| c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ +| *(yy_c_buf_p) = '\0'; /* preserve yytext */ +| (yy_hold_char) = *++(yy_c_buf_p); +| +| return c; +| } +| #endif /* ifndef YY_NO_INPUT */ +| +| /** Immediately switch to a different input stream. +| * @param input_file A readable stream. +| * +| * @note This function does not reset the start condition to @c INITIAL . +| */ +| void yyrestart (FILE * input_file ) +| { +| +| if ( ! YY_CURRENT_BUFFER ){ +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_init_buffer(YY_CURRENT_BUFFER,input_file ); +| yy_load_buffer_state( ); +| } +| +| /** Switch to a different input buffer. +| * @param new_buffer The new input buffer. +| * +| */ +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +| { +| +| /* TODO. We should be able to replace this entire function body +| * with +| * yypop_buffer_state(); +| * yypush_buffer_state(new_buffer); +| */ +| yyensure_buffer_stack (); +| if ( YY_CURRENT_BUFFER == new_buffer ) +| return; +| +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| yy_load_buffer_state( ); +| +| /* We don't actually know whether we did this switch during +| * EOF (yywrap()) processing, but the only time this flag +| * is looked at is after yywrap() is called, so it's safe +| * to go ahead and always set it. +| */ +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| static void yy_load_buffer_state (void) +| { +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +| yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +| (yy_hold_char) = *(yy_c_buf_p); +| } +| +| /** Allocate and initialize an input buffer state. +| * @param file A readable stream. +| * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. +| * +| * @return the allocated buffer state. +| */ +| YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +| { +| YY_BUFFER_STATE b; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_buf_size = (yy_size_t)size; +| +| /* yy_ch_buf has to be 2 characters longer than the size given because +| * we need to put in 2 end-of-buffer characters. +| */ +| b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); +| if ( ! b->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_is_our_buffer = 1; +| +| yy_init_buffer(b,file ); +| +| return b; +| } +| +| /** Destroy the buffer. +| * @param b a buffer created with yy_create_buffer() +| * +| */ +| void yy_delete_buffer (YY_BUFFER_STATE b ) +| { +| +| if ( ! b ) +| return; +| +| if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ +| YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; +| +| if ( b->yy_is_our_buffer ) +| yyfree((void *) b->yy_ch_buf ); +| +| yyfree((void *) b ); +| } +| +| /* Initializes or reinitializes a buffer. +| * This function is sometimes called more than once on the same buffer, +| * such as during a yyrestart() or at EOF. +| */ +| static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) +| +| { +| int oerrno = errno; +| +| yy_flush_buffer(b ); +| +| b->yy_input_file = file; +| b->yy_fill_buffer = 1; +| +| /* If b is the current buffer, then yy_init_buffer was _probably_ +| * called from yyrestart() or through yy_get_next_buffer. +| * In that case, we don't want to reset the lineno or column. +| */ +| if (b != YY_CURRENT_BUFFER){ +| b->yy_bs_lineno = 1; +| b->yy_bs_column = 0; +| } +| +| b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +| +| errno = oerrno; +| } +| +| /** Discard all buffered characters. On the next scan, YY_INPUT will be called. +| * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. +| * +| */ +| void yy_flush_buffer (YY_BUFFER_STATE b ) +| { +| if ( ! b ) +| return; +| +| b->yy_n_chars = 0; +| +| /* We always need two end-of-buffer characters. The first causes +| * a transition to the end-of-buffer state. The second causes +| * a jam in that state. +| */ +| b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; +| b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; +| +| b->yy_buf_pos = &b->yy_ch_buf[0]; +| +| b->yy_at_bol = 1; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| if ( b == YY_CURRENT_BUFFER ) +| yy_load_buffer_state( ); +| } +| +| /** Pushes the new state onto the stack. The new state becomes +| * the current state. This function will allocate the stack +| * if necessary. +| * @param new_buffer The new state. +| * +| */ +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +| { +| if (new_buffer == NULL) +| return; +| +| yyensure_buffer_stack(); +| +| /* This block is copied from yy_switch_to_buffer. */ +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| /* Only push if top exists. Otherwise, replace top. */ +| if (YY_CURRENT_BUFFER) +| (yy_buffer_stack_top)++; +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| +| /* copied from yy_switch_to_buffer. */ +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| /** Removes and deletes the top of the stack, if present. +| * The next element becomes the new top. +| * +| */ +| void yypop_buffer_state (void) +| { +| if (!YY_CURRENT_BUFFER) +| return; +| +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| if ((yy_buffer_stack_top) > 0) +| --(yy_buffer_stack_top); +| +| if (YY_CURRENT_BUFFER) { +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| } +| +| /* Allocates the stack if it does not exist. +| * Guarantees space for at least one push. +| */ +| static void yyensure_buffer_stack (void) +| { +| int num_to_alloc; +| +| if (!(yy_buffer_stack)) { +| +| /* First allocation is just for 2 elements, since we don't know if this +| * scanner will even need a stack. We use 2 instead of 1 to avoid an +| * immediate realloc on the next call. +| */ +| num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ +| (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc +| (num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); +| +| (yy_buffer_stack_max) = num_to_alloc; +| (yy_buffer_stack_top) = 0; +| return; +| } +| +| if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ +| +| /* Increase the buffer to prepare for a possible push. */ +| yy_size_t grow_size = 8 /* arbitrary grow size */; +| +| num_to_alloc = (yy_buffer_stack_max) + grow_size; +| (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc +| ((yy_buffer_stack), +| num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| /* zero only the new slots.*/ +| memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +| (yy_buffer_stack_max) = num_to_alloc; +| } +| } +| +| /** Setup the input buffer state to scan directly from a user-specified character buffer. +| * @param base the character buffer +| * @param size the size in bytes of the character buffer +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +| { +| YY_BUFFER_STATE b; +| +| if ( size < 2 || +| base[size-2] != YY_END_OF_BUFFER_CHAR || +| base[size-1] != YY_END_OF_BUFFER_CHAR ) +| /* They forgot to leave room for the EOB's. */ +| return NULL; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); +| +| b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ +| b->yy_buf_pos = b->yy_ch_buf = base; +| b->yy_is_our_buffer = 0; +| b->yy_input_file = NULL; +| b->yy_n_chars = b->yy_buf_size; +| b->yy_is_interactive = 0; +| b->yy_at_bol = 1; +| b->yy_fill_buffer = 0; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| yy_switch_to_buffer(b ); +| +| return b; +| } +| +| /** Setup the input buffer state to scan a string. The next call to yylex() will +| * scan from a @e copy of @a str. +| * @param yystr a NUL-terminated string to scan +| * +| * @return the newly allocated buffer state object. +| * @note If you want to scan bytes that may contain NUL values, then use +| * yy_scan_bytes() instead. +| */ +| YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +| { +| +| return yy_scan_bytes(yystr,(int) strlen(yystr) ); +| } +| +| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will +| * scan from a @e copy of @a bytes. +| * @param yybytes the byte buffer to scan +| * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +| { +| YY_BUFFER_STATE b; +| char *buf; +| yy_size_t n; +| int i; +| +| /* Get memory for full buffer, including space for trailing EOB's. */ +| n = (yy_size_t) (_yybytes_len + 2); +| buf = (char *) yyalloc(n ); +| if ( ! buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); +| +| for ( i = 0; i < _yybytes_len; ++i ) +| buf[i] = yybytes[i]; +| +| buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; +| +| b = yy_scan_buffer(buf,n ); +| if ( ! b ) +| YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); +| +| /* It's okay to grow etc. this buffer, and we should throw it +| * away when we're done. +| */ +| b->yy_is_our_buffer = 1; +| +| return b; +| } +| +| #ifndef YY_EXIT_FAILURE +| #define YY_EXIT_FAILURE 2 +| #endif +| +| static void yynoreturn yy_fatal_error (yyconst char* msg ) +| { +| (void) fprintf( stderr, "%s\n", msg ); +| exit( YY_EXIT_FAILURE ); +| } +| +| /* Redefine yyless() so it works in section 3 code. */ +| +| #undef yyless +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| yytext[yyleng] = (yy_hold_char); \ +| (yy_c_buf_p) = yytext + yyless_macro_arg; \ +| (yy_hold_char) = *(yy_c_buf_p); \ +| *(yy_c_buf_p) = '\0'; \ +| yyleng = yyless_macro_arg; \ +| } \ +| while ( 0 ) +| +| /* Accessor methods (get/set functions) to struct members. */ +| +| /** Get the current line number. +| * +| */ +| int yyget_lineno (void) +| { +| +| return yylineno; +| } +| +| /** Get the input stream. +| * +| */ +| FILE *yyget_in (void) +| { +| return yyin; +| } +| +| /** Get the output stream. +| * +| */ +| FILE *yyget_out (void) +| { +| return yyout; +| } +| +| /** Get the length of the current token. +| * +| */ +| int yyget_leng (void) +| { +| return yyleng; +| } +| +| /** Get the current token. +| * +| */ +| +| char *yyget_text (void) +| { +| return yytext; +| } +| +| /** Set the current line number. +| * @param _line_number line number +| * +| */ +| void yyset_lineno (int _line_number ) +| { +| +| yylineno = _line_number; +| } +| +| /** Set the input stream. This does not discard the current +| * input buffer. +| * @param _in_str A readable stream. +| * +| * @see yy_switch_to_buffer +| */ +| void yyset_in (FILE * _in_str ) +| { +| yyin = _in_str ; +| } +| +| void yyset_out (FILE * _out_str ) +| { +| yyout = _out_str ; +| } +| +| int yyget_debug (void) +| { +| return yy_flex_debug; +| } +| +| void yyset_debug (int _bdebug ) +| { +| yy_flex_debug = _bdebug ; +| } +| +| static int yy_init_globals (void) +| { +| /* Initialization is the same as for the non-reentrant scanner. +| * This function is called from yylex_destroy(), so don't allocate here. +| */ +| +| (yy_buffer_stack) = NULL; +| (yy_buffer_stack_top) = 0; +| (yy_buffer_stack_max) = 0; +| (yy_c_buf_p) = NULL; +| (yy_init) = 0; +| (yy_start) = 0; +| +| (yy_state_buf) = 0; +| (yy_state_ptr) = 0; +| (yy_full_match) = 0; +| (yy_lp) = 0; +| +| /* Defined in main.c */ +| #ifdef YY_STDINIT +| yyin = stdin; +| yyout = stdout; +| #else +| yyin = NULL; +| yyout = NULL; +| #endif +| +| /* For future reference: Set errno on error, since we are called by +| * yylex_init() +| */ +| return 0; +| } +| +| /* yylex_destroy is for both reentrant and non-reentrant scanners. */ +| int yylex_destroy (void) +| { +| +| /* Pop the buffer stack, destroying each element. */ +| while(YY_CURRENT_BUFFER){ +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| yypop_buffer_state(); +| } +| +| /* Destroy the stack itself. */ +| yyfree((yy_buffer_stack) ); +| (yy_buffer_stack) = NULL; +| +| yyfree ( (yy_state_buf) ); +| (yy_state_buf) = NULL; +| +| /* Reset the globals. This is important in a non-reentrant scanner so the next time +| * yylex() is called, initialization will occur. */ +| yy_init_globals( ); +| +| return 0; +| } +| +| /* +| * Internal utility routines. +| */ +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +| { +| +| int i; +| for ( i = 0; i < n; ++i ) +| s1[i] = s2[i]; +| } +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * s ) +| { +| int n; +| for ( n = 0; s[n]; ++n ) +| ; +| +| return n; +| } +| #endif +| +| void *yyalloc (yy_size_t size ) +| { +| return malloc(size); +| } +| +| void *yyrealloc (void * ptr, yy_size_t size ) +| { +| +| /* The cast to (char *) in the following accommodates both +| * implementations that use char* generic pointers, and those +| * that use void* generic pointers. It works with the latter +| * because both ANSI C and C++ allow castless assignment from +| * any pointer type to void*, and deal with argument conversions +| * as though doing an assignment. +| */ +| return realloc(ptr, size); +| } +| +| void yyfree (void * ptr ) +| { +| free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +| } +| +| #define YYTABLES_NAME "yytables" +| +| #line 10 "conftest.l" +| +| +| #ifdef YYTEXT_POINTER +| extern char *yytext; +| #endif +| int +| main (void) +| { +| return ! yylex () + ! yywrap (); +| } +configure:7094: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c -lfl >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lfl +collect2: error: ld returned 1 exit status +configure:7094: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| #line 3 "lex.yy.c" +| +| #define YY_INT_ALIGNED short int +| +| /* A lexical scanner generated by flex */ +| +| #define FLEX_SCANNER +| #define YY_FLEX_MAJOR_VERSION 2 +| #define YY_FLEX_MINOR_VERSION 6 +| #define YY_FLEX_SUBMINOR_VERSION 1 +| #if YY_FLEX_SUBMINOR_VERSION > 0 +| #define FLEX_BETA +| #endif +| +| /* First, we deal with platform-specific or compiler-specific issues. */ +| +| /* begin standard C headers. */ +| #include +| #include +| #include +| #include +| +| /* end standard C headers. */ +| +| /* flex integer type definitions */ +| +| #ifndef FLEXINT_H +| #define FLEXINT_H +| +| /* C99 systems have . Non-C99 systems may or may not. */ +| +| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +| +| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, +| * if you want the limit (max/min) macros for int types. +| */ +| #ifndef __STDC_LIMIT_MACROS +| #define __STDC_LIMIT_MACROS 1 +| #endif +| +| #include +| typedef int8_t flex_int8_t; +| typedef uint8_t flex_uint8_t; +| typedef int16_t flex_int16_t; +| typedef uint16_t flex_uint16_t; +| typedef int32_t flex_int32_t; +| typedef uint32_t flex_uint32_t; +| #else +| typedef signed char flex_int8_t; +| typedef short int flex_int16_t; +| typedef int flex_int32_t; +| typedef unsigned char flex_uint8_t; +| typedef unsigned short int flex_uint16_t; +| typedef unsigned int flex_uint32_t; +| +| /* Limits of integral types. */ +| #ifndef INT8_MIN +| #define INT8_MIN (-128) +| #endif +| #ifndef INT16_MIN +| #define INT16_MIN (-32767-1) +| #endif +| #ifndef INT32_MIN +| #define INT32_MIN (-2147483647-1) +| #endif +| #ifndef INT8_MAX +| #define INT8_MAX (127) +| #endif +| #ifndef INT16_MAX +| #define INT16_MAX (32767) +| #endif +| #ifndef INT32_MAX +| #define INT32_MAX (2147483647) +| #endif +| #ifndef UINT8_MAX +| #define UINT8_MAX (255U) +| #endif +| #ifndef UINT16_MAX +| #define UINT16_MAX (65535U) +| #endif +| #ifndef UINT32_MAX +| #define UINT32_MAX (4294967295U) +| #endif +| +| #endif /* ! C99 */ +| +| #endif /* ! FLEXINT_H */ +| +| /* TODO: this is always defined, so inline it */ +| #define yyconst const +| +| #if defined(__GNUC__) && __GNUC__ >= 3 +| #define yynoreturn __attribute__((__noreturn__)) +| #else +| #define yynoreturn +| #endif +| +| /* Returned upon end-of-file. */ +| #define YY_NULL 0 +| +| /* Promotes a possibly negative, possibly signed char to an unsigned +| * integer for use as an array index. If the signed char is negative, +| * we want to instead treat it as an 8-bit unsigned char, hence the +| * double cast. +| */ +| #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +| +| /* Enter a start condition. This macro really ought to take a parameter, +| * but we do it the disgusting crufty way forced on us by the ()-less +| * definition of BEGIN. +| */ +| #define BEGIN (yy_start) = 1 + 2 * +| +| /* Translate the current start state into a value that can be later handed +| * to BEGIN to return to the state. The YYSTATE alias is for lex +| * compatibility. +| */ +| #define YY_START (((yy_start) - 1) / 2) +| #define YYSTATE YY_START +| +| /* Action number for EOF rule of a given start state. */ +| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +| +| /* Special action meaning "start processing a new file". */ +| #define YY_NEW_FILE yyrestart(yyin ) +| +| #define YY_END_OF_BUFFER_CHAR 0 +| +| /* Size of default input buffer. */ +| #ifndef YY_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k. +| * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. +| * Ditto for the __ia64__ case accordingly. +| */ +| #define YY_BUF_SIZE 32768 +| #else +| #define YY_BUF_SIZE 16384 +| #endif /* __ia64__ */ +| #endif +| +| /* The state buf must be large enough to hold one state per character in the main buffer. +| */ +| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +| +| #ifndef YY_TYPEDEF_YY_BUFFER_STATE +| #define YY_TYPEDEF_YY_BUFFER_STATE +| typedef struct yy_buffer_state *YY_BUFFER_STATE; +| #endif +| +| #ifndef YY_TYPEDEF_YY_SIZE_T +| #define YY_TYPEDEF_YY_SIZE_T +| typedef size_t yy_size_t; +| #endif +| +| extern int yyleng; +| +| extern FILE *yyin, *yyout; +| +| #define EOB_ACT_CONTINUE_SCAN 0 +| #define EOB_ACT_END_OF_FILE 1 +| #define EOB_ACT_LAST_MATCH 2 +| +| #define YY_LESS_LINENO(n) +| #define YY_LINENO_REWIND_TO(ptr) +| +| /* Return all but the first "n" matched characters back to the input stream. */ +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| *yy_cp = (yy_hold_char); \ +| YY_RESTORE_YY_MORE_OFFSET \ +| (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ +| YY_DO_BEFORE_ACTION; /* set up yytext again */ \ +| } \ +| while ( 0 ) +| +| #define unput(c) yyunput( c, (yytext_ptr) ) +| +| #ifndef YY_STRUCT_YY_BUFFER_STATE +| #define YY_STRUCT_YY_BUFFER_STATE +| struct yy_buffer_state +| { +| FILE *yy_input_file; +| +| char *yy_ch_buf; /* input buffer */ +| char *yy_buf_pos; /* current position in input buffer */ +| +| /* Size of input buffer in bytes, not including room for EOB +| * characters. +| */ +| int yy_buf_size; +| +| /* Number of characters read into yy_ch_buf, not including EOB +| * characters. +| */ +| int yy_n_chars; +| +| /* Whether we "own" the buffer - i.e., we know we created it, +| * and can realloc() it to grow it, and should free() it to +| * delete it. +| */ +| int yy_is_our_buffer; +| +| /* Whether this is an "interactive" input source; if so, and +| * if we're using stdio for input, then we want to use getc() +| * instead of fread(), to make sure we stop fetching input after +| * each newline. +| */ +| int yy_is_interactive; +| +| /* Whether we're considered to be at the beginning of a line. +| * If so, '^' rules will be active on the next match, otherwise +| * not. +| */ +| int yy_at_bol; +| +| int yy_bs_lineno; /**< The line count. */ +| int yy_bs_column; /**< The column count. */ +| +| /* Whether to try to fill the input buffer when we reach the +| * end of it. +| */ +| int yy_fill_buffer; +| +| int yy_buffer_status; +| +| #define YY_BUFFER_NEW 0 +| #define YY_BUFFER_NORMAL 1 +| /* When an EOF's been seen but there's still some text to process +| * then we mark the buffer as YY_EOF_PENDING, to indicate that we +| * shouldn't try reading from the input source any more. We might +| * still have a bunch of tokens to match, though, because of +| * possible backing-up. +| * +| * When we actually see the EOF, we change the status to "new" +| * (via yyrestart()), so that the user can continue scanning by +| * just pointing yyin at a new input file. +| */ +| #define YY_BUFFER_EOF_PENDING 2 +| +| }; +| #endif /* !YY_STRUCT_YY_BUFFER_STATE */ +| +| /* Stack of input buffers. */ +| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +| static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +| +| /* We provide macros for accessing buffer states in case in the +| * future we want to put the buffer states in a more general +| * "scanner state". +| * +| * Returns the top of the stack, or NULL. +| */ +| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ +| ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ +| : NULL) +| +| /* Same as previous macro, but useful when we know that the buffer stack is not +| * NULL or when we need an lvalue. For internal use only. +| */ +| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] +| +| /* yy_hold_char holds the character lost when yytext is formed. */ +| static char yy_hold_char; +| static int yy_n_chars; /* number of characters read into yy_ch_buf */ +| int yyleng; +| +| /* Points to current character in buffer. */ +| static char *yy_c_buf_p = NULL; +| static int yy_init = 0; /* whether we need to initialize */ +| static int yy_start = 0; /* start state number */ +| +| /* Flag which is used to allow yywrap()'s to do buffer switches +| * instead of setting up a fresh yyin. A bit of a hack ... +| */ +| static int yy_did_buffer_switch_on_eof; +| +| void yyrestart (FILE *input_file ); +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +| YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +| void yy_delete_buffer (YY_BUFFER_STATE b ); +| void yy_flush_buffer (YY_BUFFER_STATE b ); +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +| void yypop_buffer_state (void ); +| +| static void yyensure_buffer_stack (void ); +| static void yy_load_buffer_state (void ); +| static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +| +| #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +| +| YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +| YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +| YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +| +| void *yyalloc (yy_size_t ); +| void *yyrealloc (void *,yy_size_t ); +| void yyfree (void * ); +| +| #define yy_new_buffer yy_create_buffer +| +| #define yy_set_interactive(is_interactive) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){ \ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ +| } +| +| #define yy_set_bol(at_bol) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){\ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ +| } +| +| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +| +| /* Begin user sect3 */ +| +| typedef unsigned char YY_CHAR; +| +| FILE *yyin = NULL, *yyout = NULL; +| +| typedef int yy_state_type; +| +| extern int yylineno; +| +| int yylineno = 1; +| +| extern char *yytext; +| #ifdef yytext_ptr +| #undef yytext_ptr +| #endif +| #define yytext_ptr yytext +| +| static yy_state_type yy_get_previous_state (void ); +| static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +| static int yy_get_next_buffer (void ); +| static void yynoreturn yy_fatal_error (yyconst char* msg ); +| +| /* Done after the current pattern has been matched and before the +| * corresponding action - sets up yytext. +| */ +| #define YY_DO_BEFORE_ACTION \ +| (yytext_ptr) = yy_bp; \ +| (yytext_ptr) -= (yy_more_len); \ +| yyleng = (int) (yy_cp - (yytext_ptr)); \ +| (yy_hold_char) = *yy_cp; \ +| *yy_cp = '\0'; \ +| (yy_c_buf_p) = yy_cp; +| +| #define YY_NUM_RULES 8 +| #define YY_END_OF_BUFFER 9 +| /* This struct is not used in this scanner, +| but its presence is necessary. */ +| struct yy_trans_info +| { +| flex_int32_t yy_verify; +| flex_int32_t yy_nxt; +| }; +| static yyconst flex_int16_t yy_acclist[23] = +| { 0, +| 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, +| 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, +| 7, 8 +| } ; +| +| static yyconst flex_int16_t yy_accept[14] = +| { 0, +| 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, +| 20, 23, 23 +| } ; +| +| static yyconst YY_CHAR yy_ec[256] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, +| +| 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1 +| } ; +| +| static yyconst YY_CHAR yy_meta[9] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1 +| } ; +| +| static yyconst flex_uint16_t yy_base[13] = +| { 0, +| 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, +| 10, 10 +| } ; +| +| static yyconst flex_int16_t yy_def[13] = +| { 0, +| 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, +| 12, 0 +| } ; +| +| static yyconst flex_uint16_t yy_nxt[19] = +| { 0, +| 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| static yyconst flex_int16_t yy_chk[19] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| extern int yy_flex_debug; +| int yy_flex_debug = 0; +| +| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +| static char *yy_full_match; +| static int yy_lp; +| #define REJECT \ +| { \ +| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +| ++(yy_lp); \ +| goto find_rule; \ +| } +| +| static int yy_more_flag = 0; +| static int yy_more_len = 0; +| #define yymore() ((yy_more_flag) = 1) +| #define YY_MORE_ADJ (yy_more_len) +| #define YY_RESTORE_YY_MORE_OFFSET +| char *yytext; +| #line 1 "conftest.l" +| #line 469 "lex.yy.c" +| +| #define INITIAL 0 +| +| #ifndef YY_NO_UNISTD_H +| /* Special case for "unistd.h", since it is non-ANSI. We include it way +| * down here because we want the user's section 1 to have been scanned first. +| * The user has a chance to override it with an option. +| */ +| #include +| #endif +| +| #ifndef YY_EXTRA_TYPE +| #define YY_EXTRA_TYPE void * +| #endif +| +| static int yy_init_globals (void ); +| +| /* Accessor methods to globals. +| These are made visible to non-reentrant scanners for convenience. */ +| +| int yylex_destroy (void ); +| +| int yyget_debug (void ); +| +| void yyset_debug (int debug_flag ); +| +| YY_EXTRA_TYPE yyget_extra (void ); +| +| void yyset_extra (YY_EXTRA_TYPE user_defined ); +| +| FILE *yyget_in (void ); +| +| void yyset_in (FILE * _in_str ); +| +| FILE *yyget_out (void ); +| +| void yyset_out (FILE * _out_str ); +| +| int yyget_leng (void ); +| +| char *yyget_text (void ); +| +| int yyget_lineno (void ); +| +| void yyset_lineno (int _line_number ); +| +| /* Macros after this point can all be overridden by user definitions in +| * section 1. +| */ +| +| #ifndef YY_SKIP_YYWRAP +| #ifdef __cplusplus +| extern "C" int yywrap (void ); +| #else +| extern int yywrap (void ); +| #endif +| #endif +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c,char *buf_ptr ); +| +| #endif +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char *,yyconst char *,int ); +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * ); +| #endif +| +| #ifndef YY_NO_INPUT +| +| #ifdef __cplusplus +| static int yyinput (void ); +| #else +| static int input (void ); +| #endif +| +| #endif +| +| /* Amount of stuff to slurp up with each read. */ +| #ifndef YY_READ_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k */ +| #define YY_READ_BUF_SIZE 16384 +| #else +| #define YY_READ_BUF_SIZE 8192 +| #endif /* __ia64__ */ +| #endif +| +| /* Copy whatever the last rule matched to the standard output. */ +| #ifndef ECHO +| /* This used to be an fputs(), but since the string might contain NUL's, +| * we now use fwrite(). +| */ +| #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +| #endif +| +| /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +| * is returned in "result". +| */ +| #ifndef YY_INPUT +| #define YY_INPUT(buf,result,max_size) \ +| if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ +| { \ +| int c = '*'; \ +| size_t n; \ +| for ( n = 0; n < max_size && \ +| (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ +| buf[n] = (char) c; \ +| if ( c == '\n' ) \ +| buf[n++] = (char) c; \ +| if ( c == EOF && ferror( yyin ) ) \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| result = n; \ +| } \ +| else \ +| { \ +| errno=0; \ +| while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ +| { \ +| if( errno != EINTR) \ +| { \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| break; \ +| } \ +| errno=0; \ +| clearerr(yyin); \ +| } \ +| }\ +| \ +| +| #endif +| +| /* No semi-colon after return; correct usage is to write "yyterminate();" - +| * we don't want an extra ';' after the "return" because that will cause +| * some compilers to complain about unreachable statements. +| */ +| #ifndef yyterminate +| #define yyterminate() return YY_NULL +| #endif +| +| /* Number of entries by which start-condition stack grows. */ +| #ifndef YY_START_STACK_INCR +| #define YY_START_STACK_INCR 25 +| #endif +| +| /* Report a fatal error. */ +| #ifndef YY_FATAL_ERROR +| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +| #endif +| +| /* end tables serialization structures and prototypes */ +| +| /* Default declaration of generated scanner - a define so the user can +| * easily add parameters. +| */ +| #ifndef YY_DECL +| #define YY_DECL_IS_OURS 1 +| +| extern int yylex (void); +| +| #define YY_DECL int yylex (void) +| #endif /* !YY_DECL */ +| +| /* Code executed at the beginning of each rule, after yytext and yyleng +| * have been set up. +| */ +| #ifndef YY_USER_ACTION +| #define YY_USER_ACTION +| #endif +| +| /* Code executed at the end of each rule. */ +| #ifndef YY_BREAK +| #define YY_BREAK /*LINTED*/break; +| #endif +| +| #define YY_RULE_SETUP \ +| YY_USER_ACTION +| +| /** The main scanner function which does all the work. +| */ +| YY_DECL +| { +| yy_state_type yy_current_state; +| char *yy_cp, *yy_bp; +| int yy_act; +| +| if ( !(yy_init) ) +| { +| (yy_init) = 1; +| +| #ifdef YY_USER_INIT +| YY_USER_INIT; +| #endif +| +| /* Create the reject buffer large enough to save one state per allowed character. */ +| if ( ! (yy_state_buf) ) +| (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); +| if ( ! (yy_state_buf) ) +| YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); +| +| if ( ! (yy_start) ) +| (yy_start) = 1; /* first start state */ +| +| if ( ! yyin ) +| yyin = stdin; +| +| if ( ! yyout ) +| yyout = stdout; +| +| if ( ! YY_CURRENT_BUFFER ) { +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_load_buffer_state( ); +| } +| +| { +| #line 1 "conftest.l" +| +| #line 695 "lex.yy.c" +| +| while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ +| { +| (yy_more_len) = 0; +| if ( (yy_more_flag) ) +| { +| (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); +| (yy_more_flag) = 0; +| } +| yy_cp = (yy_c_buf_p); +| +| /* Support of yytext. */ +| *yy_cp = (yy_hold_char); +| +| /* yy_bp points to the position in yy_ch_buf of the start of +| * the current run. +| */ +| yy_bp = yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| yy_match: +| do +| { +| YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| ++yy_cp; +| } +| while ( yy_base[yy_current_state] != 10 ); +| +| yy_find_action: +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| find_rule: /* we branch to this label when backing up */ +| for ( ; ; ) /* until we find what rule we matched */ +| { +| if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) +| { +| yy_act = yy_acclist[(yy_lp)]; +| { +| (yy_full_match) = yy_cp; +| break; +| } +| } +| --yy_cp; +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| } +| +| YY_DO_BEFORE_ACTION; +| +| do_action: /* This label is used only to access EOF actions. */ +| +| switch ( yy_act ) +| { /* beginning of action switch */ +| case 1: +| YY_RULE_SETUP +| #line 2 "conftest.l" +| { ECHO; } +| YY_BREAK +| case 2: +| YY_RULE_SETUP +| #line 3 "conftest.l" +| { REJECT; } +| YY_BREAK +| case 3: +| YY_RULE_SETUP +| #line 4 "conftest.l" +| { yymore (); } +| YY_BREAK +| case 4: +| YY_RULE_SETUP +| #line 5 "conftest.l" +| { yyless (1); } +| YY_BREAK +| case 5: +| YY_RULE_SETUP +| #line 6 "conftest.l" +| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ +| yyless ((input () != 0)); } +| YY_BREAK +| case 6: +| YY_RULE_SETUP +| #line 8 "conftest.l" +| { unput (yytext[0]); } +| YY_BREAK +| case 7: +| YY_RULE_SETUP +| #line 9 "conftest.l" +| { BEGIN INITIAL; } +| YY_BREAK +| case 8: +| YY_RULE_SETUP +| #line 10 "conftest.l" +| ECHO; +| YY_BREAK +| #line 802 "lex.yy.c" +| case YY_STATE_EOF(INITIAL): +| yyterminate(); +| +| case YY_END_OF_BUFFER: +| { +| /* Amount of text matched not including the EOB char. */ +| int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; +| +| /* Undo the effects of YY_DO_BEFORE_ACTION. */ +| *yy_cp = (yy_hold_char); +| YY_RESTORE_YY_MORE_OFFSET +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) +| { +| /* We're scanning a new file or input source. It's +| * possible that this happened because the user +| * just pointed yyin at a new source and called +| * yylex(). If so, then we have to assure +| * consistency between YY_CURRENT_BUFFER and our +| * globals. Here is the right place to do so, because +| * this is the first action (other than possibly a +| * back-up) that will match for the new input source. +| */ +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; +| } +| +| /* Note that here we test for yy_c_buf_p "<=" to the position +| * of the first EOB in the buffer, since yy_c_buf_p will +| * already have been incremented past the NUL character +| * (since all states make transitions on EOB to the +| * end-of-buffer state). Contrast this with the test +| * in input(). +| */ +| if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| { /* This was really a NUL. */ +| yy_state_type yy_next_state; +| +| (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| /* Okay, we're now positioned to make the NUL +| * transition. We couldn't have +| * yy_get_previous_state() go ahead and do it +| * for us because it doesn't know how to deal +| * with the possibility of jamming (and we don't +| * want to build jamming into it because then it +| * will run more slowly). +| */ +| +| yy_next_state = yy_try_NUL_trans( yy_current_state ); +| +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| +| if ( yy_next_state ) +| { +| /* Consume the NUL. */ +| yy_cp = ++(yy_c_buf_p); +| yy_current_state = yy_next_state; +| goto yy_match; +| } +| +| else +| { +| yy_cp = (yy_c_buf_p); +| goto yy_find_action; +| } +| } +| +| else switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_END_OF_FILE: +| { +| (yy_did_buffer_switch_on_eof) = 0; +| +| if ( yywrap( ) ) +| { +| /* Note: because we've taken care in +| * yy_get_next_buffer() to have set up +| * yytext, we can now set up +| * yy_c_buf_p so that if some total +| * hoser (like flex itself) wants to +| * call the scanner after we return the +| * YY_NULL, it'll still work - another +| * YY_NULL will get returned. +| */ +| (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; +| +| yy_act = YY_STATE_EOF(YY_START); +| goto do_action; +| } +| +| else +| { +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| } +| break; +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = +| (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_match; +| +| case EOB_ACT_LAST_MATCH: +| (yy_c_buf_p) = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_find_action; +| } +| break; +| } +| +| default: +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--no action found" ); +| } /* end of action switch */ +| } /* end of scanning one token */ +| } /* end of user's declarations */ +| } /* end of yylex */ +| +| /* yy_get_next_buffer - try to read in a new buffer +| * +| * Returns a code representing an action: +| * EOB_ACT_LAST_MATCH - +| * EOB_ACT_CONTINUE_SCAN - continue scanning from current position +| * EOB_ACT_END_OF_FILE - end of file +| */ +| static int yy_get_next_buffer (void) +| { +| char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +| char *source = (yytext_ptr); +| int number_to_move, i; +| int ret_val; +| +| if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--end of buffer missed" ); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) +| { /* Don't try to fill the buffer, so this is an EOF. */ +| if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) +| { +| /* We matched a single character, the EOB, so +| * treat this as a final EOF. +| */ +| return EOB_ACT_END_OF_FILE; +| } +| +| else +| { +| /* We matched some text prior to the EOB, first +| * process it. +| */ +| return EOB_ACT_LAST_MATCH; +| } +| } +| +| /* Try to read more data. */ +| +| /* First move last chars to start of buffer. */ +| number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); +| +| for ( i = 0; i < number_to_move; ++i ) +| *(dest++) = *(source++); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) +| /* don't do the read, it's not guaranteed to return an EOF, +| * just force an EOF +| */ +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; +| +| else +| { +| int num_to_read = +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; +| +| while ( num_to_read <= 0 ) +| { /* Not enough room in the buffer - grow it. */ +| +| YY_FATAL_ERROR( +| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +| +| } +| +| if ( num_to_read > YY_READ_BUF_SIZE ) +| num_to_read = YY_READ_BUF_SIZE; +| +| /* Read in more data. */ +| YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +| (yy_n_chars), num_to_read ); +| +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| if ( (yy_n_chars) == 0 ) +| { +| if ( number_to_move == YY_MORE_ADJ ) +| { +| ret_val = EOB_ACT_END_OF_FILE; +| yyrestart(yyin ); +| } +| +| else +| { +| ret_val = EOB_ACT_LAST_MATCH; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = +| YY_BUFFER_EOF_PENDING; +| } +| } +| +| else +| ret_val = EOB_ACT_CONTINUE_SCAN; +| +| if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +| /* Extend the array by 50%, plus the number we really need. */ +| int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); +| if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +| } +| +| (yy_n_chars) += number_to_move; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +| +| (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; +| +| return ret_val; +| } +| +| /* yy_get_previous_state - get the state just before the EOB char was reached */ +| +| static yy_state_type yy_get_previous_state (void) +| { +| yy_state_type yy_current_state; +| char *yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) +| { +| YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| } +| +| return yy_current_state; +| } +| +| /* yy_try_NUL_trans - try to make a transition on the NUL character +| * +| * synopsis +| * next_state = yy_try_NUL_trans( current_state ); +| */ +| static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +| { +| int yy_is_jam; +| +| YY_CHAR yy_c = 1; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| yy_is_jam = (yy_current_state == 12); +| if ( ! yy_is_jam ) +| *(yy_state_ptr)++ = yy_current_state; +| +| return yy_is_jam ? 0 : yy_current_state; +| } +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c, char * yy_bp ) +| { +| char *yy_cp; +| +| yy_cp = (yy_c_buf_p); +| +| /* undo effects of setting up yytext */ +| *yy_cp = (yy_hold_char); +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| { /* need to shift things up to make room */ +| /* +2 for EOB chars. */ +| int number_to_move = (yy_n_chars) + 2; +| char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +| char *source = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; +| +| while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| *--dest = *--source; +| +| yy_cp += (int) (dest - source); +| yy_bp += (int) (dest - source); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = +| (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| YY_FATAL_ERROR( "flex scanner push-back overflow" ); +| } +| +| *--yy_cp = (char) c; +| +| (yytext_ptr) = yy_bp; +| (yy_hold_char) = *yy_cp; +| (yy_c_buf_p) = yy_cp; +| } +| +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput (void) +| #else +| static int input (void) +| #endif +| +| { +| int c; +| +| *(yy_c_buf_p) = (yy_hold_char); +| +| if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) +| { +| /* yy_c_buf_p now points to the character we want to return. +| * If this occurs *before* the EOB characters, then it's a +| * valid NUL; if not, then we've hit the end of the buffer. +| */ +| if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| /* This was really a NUL. */ +| *(yy_c_buf_p) = '\0'; +| +| else +| { /* need more input */ +| int offset = (yy_c_buf_p) - (yytext_ptr); +| ++(yy_c_buf_p); +| +| switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_LAST_MATCH: +| /* This happens because yy_g_n_b() +| * sees that we've accumulated a +| * token and flags that we need to +| * try matching the token before +| * proceeding. But for input(), +| * there's no matching to consider. +| * So convert the EOB_ACT_LAST_MATCH +| * to EOB_ACT_END_OF_FILE. +| */ +| +| /* Reset buffer status. */ +| yyrestart(yyin ); +| +| /*FALLTHROUGH*/ +| +| case EOB_ACT_END_OF_FILE: +| { +| if ( yywrap( ) ) +| return 0; +| +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| #ifdef __cplusplus +| return yyinput(); +| #else +| return input(); +| #endif +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = (yytext_ptr) + offset; +| break; +| } +| } +| } +| +| c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ +| *(yy_c_buf_p) = '\0'; /* preserve yytext */ +| (yy_hold_char) = *++(yy_c_buf_p); +| +| return c; +| } +| #endif /* ifndef YY_NO_INPUT */ +| +| /** Immediately switch to a different input stream. +| * @param input_file A readable stream. +| * +| * @note This function does not reset the start condition to @c INITIAL . +| */ +| void yyrestart (FILE * input_file ) +| { +| +| if ( ! YY_CURRENT_BUFFER ){ +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_init_buffer(YY_CURRENT_BUFFER,input_file ); +| yy_load_buffer_state( ); +| } +| +| /** Switch to a different input buffer. +| * @param new_buffer The new input buffer. +| * +| */ +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +| { +| +| /* TODO. We should be able to replace this entire function body +| * with +| * yypop_buffer_state(); +| * yypush_buffer_state(new_buffer); +| */ +| yyensure_buffer_stack (); +| if ( YY_CURRENT_BUFFER == new_buffer ) +| return; +| +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| yy_load_buffer_state( ); +| +| /* We don't actually know whether we did this switch during +| * EOF (yywrap()) processing, but the only time this flag +| * is looked at is after yywrap() is called, so it's safe +| * to go ahead and always set it. +| */ +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| static void yy_load_buffer_state (void) +| { +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +| yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +| (yy_hold_char) = *(yy_c_buf_p); +| } +| +| /** Allocate and initialize an input buffer state. +| * @param file A readable stream. +| * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. +| * +| * @return the allocated buffer state. +| */ +| YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +| { +| YY_BUFFER_STATE b; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_buf_size = (yy_size_t)size; +| +| /* yy_ch_buf has to be 2 characters longer than the size given because +| * we need to put in 2 end-of-buffer characters. +| */ +| b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); +| if ( ! b->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_is_our_buffer = 1; +| +| yy_init_buffer(b,file ); +| +| return b; +| } +| +| /** Destroy the buffer. +| * @param b a buffer created with yy_create_buffer() +| * +| */ +| void yy_delete_buffer (YY_BUFFER_STATE b ) +| { +| +| if ( ! b ) +| return; +| +| if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ +| YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; +| +| if ( b->yy_is_our_buffer ) +| yyfree((void *) b->yy_ch_buf ); +| +| yyfree((void *) b ); +| } +| +| /* Initializes or reinitializes a buffer. +| * This function is sometimes called more than once on the same buffer, +| * such as during a yyrestart() or at EOF. +| */ +| static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) +| +| { +| int oerrno = errno; +| +| yy_flush_buffer(b ); +| +| b->yy_input_file = file; +| b->yy_fill_buffer = 1; +| +| /* If b is the current buffer, then yy_init_buffer was _probably_ +| * called from yyrestart() or through yy_get_next_buffer. +| * In that case, we don't want to reset the lineno or column. +| */ +| if (b != YY_CURRENT_BUFFER){ +| b->yy_bs_lineno = 1; +| b->yy_bs_column = 0; +| } +| +| b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +| +| errno = oerrno; +| } +| +| /** Discard all buffered characters. On the next scan, YY_INPUT will be called. +| * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. +| * +| */ +| void yy_flush_buffer (YY_BUFFER_STATE b ) +| { +| if ( ! b ) +| return; +| +| b->yy_n_chars = 0; +| +| /* We always need two end-of-buffer characters. The first causes +| * a transition to the end-of-buffer state. The second causes +| * a jam in that state. +| */ +| b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; +| b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; +| +| b->yy_buf_pos = &b->yy_ch_buf[0]; +| +| b->yy_at_bol = 1; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| if ( b == YY_CURRENT_BUFFER ) +| yy_load_buffer_state( ); +| } +| +| /** Pushes the new state onto the stack. The new state becomes +| * the current state. This function will allocate the stack +| * if necessary. +| * @param new_buffer The new state. +| * +| */ +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +| { +| if (new_buffer == NULL) +| return; +| +| yyensure_buffer_stack(); +| +| /* This block is copied from yy_switch_to_buffer. */ +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| /* Only push if top exists. Otherwise, replace top. */ +| if (YY_CURRENT_BUFFER) +| (yy_buffer_stack_top)++; +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| +| /* copied from yy_switch_to_buffer. */ +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| /** Removes and deletes the top of the stack, if present. +| * The next element becomes the new top. +| * +| */ +| void yypop_buffer_state (void) +| { +| if (!YY_CURRENT_BUFFER) +| return; +| +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| if ((yy_buffer_stack_top) > 0) +| --(yy_buffer_stack_top); +| +| if (YY_CURRENT_BUFFER) { +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| } +| +| /* Allocates the stack if it does not exist. +| * Guarantees space for at least one push. +| */ +| static void yyensure_buffer_stack (void) +| { +| int num_to_alloc; +| +| if (!(yy_buffer_stack)) { +| +| /* First allocation is just for 2 elements, since we don't know if this +| * scanner will even need a stack. We use 2 instead of 1 to avoid an +| * immediate realloc on the next call. +| */ +| num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ +| (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc +| (num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); +| +| (yy_buffer_stack_max) = num_to_alloc; +| (yy_buffer_stack_top) = 0; +| return; +| } +| +| if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ +| +| /* Increase the buffer to prepare for a possible push. */ +| yy_size_t grow_size = 8 /* arbitrary grow size */; +| +| num_to_alloc = (yy_buffer_stack_max) + grow_size; +| (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc +| ((yy_buffer_stack), +| num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| /* zero only the new slots.*/ +| memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +| (yy_buffer_stack_max) = num_to_alloc; +| } +| } +| +| /** Setup the input buffer state to scan directly from a user-specified character buffer. +| * @param base the character buffer +| * @param size the size in bytes of the character buffer +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +| { +| YY_BUFFER_STATE b; +| +| if ( size < 2 || +| base[size-2] != YY_END_OF_BUFFER_CHAR || +| base[size-1] != YY_END_OF_BUFFER_CHAR ) +| /* They forgot to leave room for the EOB's. */ +| return NULL; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); +| +| b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ +| b->yy_buf_pos = b->yy_ch_buf = base; +| b->yy_is_our_buffer = 0; +| b->yy_input_file = NULL; +| b->yy_n_chars = b->yy_buf_size; +| b->yy_is_interactive = 0; +| b->yy_at_bol = 1; +| b->yy_fill_buffer = 0; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| yy_switch_to_buffer(b ); +| +| return b; +| } +| +| /** Setup the input buffer state to scan a string. The next call to yylex() will +| * scan from a @e copy of @a str. +| * @param yystr a NUL-terminated string to scan +| * +| * @return the newly allocated buffer state object. +| * @note If you want to scan bytes that may contain NUL values, then use +| * yy_scan_bytes() instead. +| */ +| YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +| { +| +| return yy_scan_bytes(yystr,(int) strlen(yystr) ); +| } +| +| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will +| * scan from a @e copy of @a bytes. +| * @param yybytes the byte buffer to scan +| * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +| { +| YY_BUFFER_STATE b; +| char *buf; +| yy_size_t n; +| int i; +| +| /* Get memory for full buffer, including space for trailing EOB's. */ +| n = (yy_size_t) (_yybytes_len + 2); +| buf = (char *) yyalloc(n ); +| if ( ! buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); +| +| for ( i = 0; i < _yybytes_len; ++i ) +| buf[i] = yybytes[i]; +| +| buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; +| +| b = yy_scan_buffer(buf,n ); +| if ( ! b ) +| YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); +| +| /* It's okay to grow etc. this buffer, and we should throw it +| * away when we're done. +| */ +| b->yy_is_our_buffer = 1; +| +| return b; +| } +| +| #ifndef YY_EXIT_FAILURE +| #define YY_EXIT_FAILURE 2 +| #endif +| +| static void yynoreturn yy_fatal_error (yyconst char* msg ) +| { +| (void) fprintf( stderr, "%s\n", msg ); +| exit( YY_EXIT_FAILURE ); +| } +| +| /* Redefine yyless() so it works in section 3 code. */ +| +| #undef yyless +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| yytext[yyleng] = (yy_hold_char); \ +| (yy_c_buf_p) = yytext + yyless_macro_arg; \ +| (yy_hold_char) = *(yy_c_buf_p); \ +| *(yy_c_buf_p) = '\0'; \ +| yyleng = yyless_macro_arg; \ +| } \ +| while ( 0 ) +| +| /* Accessor methods (get/set functions) to struct members. */ +| +| /** Get the current line number. +| * +| */ +| int yyget_lineno (void) +| { +| +| return yylineno; +| } +| +| /** Get the input stream. +| * +| */ +| FILE *yyget_in (void) +| { +| return yyin; +| } +| +| /** Get the output stream. +| * +| */ +| FILE *yyget_out (void) +| { +| return yyout; +| } +| +| /** Get the length of the current token. +| * +| */ +| int yyget_leng (void) +| { +| return yyleng; +| } +| +| /** Get the current token. +| * +| */ +| +| char *yyget_text (void) +| { +| return yytext; +| } +| +| /** Set the current line number. +| * @param _line_number line number +| * +| */ +| void yyset_lineno (int _line_number ) +| { +| +| yylineno = _line_number; +| } +| +| /** Set the input stream. This does not discard the current +| * input buffer. +| * @param _in_str A readable stream. +| * +| * @see yy_switch_to_buffer +| */ +| void yyset_in (FILE * _in_str ) +| { +| yyin = _in_str ; +| } +| +| void yyset_out (FILE * _out_str ) +| { +| yyout = _out_str ; +| } +| +| int yyget_debug (void) +| { +| return yy_flex_debug; +| } +| +| void yyset_debug (int _bdebug ) +| { +| yy_flex_debug = _bdebug ; +| } +| +| static int yy_init_globals (void) +| { +| /* Initialization is the same as for the non-reentrant scanner. +| * This function is called from yylex_destroy(), so don't allocate here. +| */ +| +| (yy_buffer_stack) = NULL; +| (yy_buffer_stack_top) = 0; +| (yy_buffer_stack_max) = 0; +| (yy_c_buf_p) = NULL; +| (yy_init) = 0; +| (yy_start) = 0; +| +| (yy_state_buf) = 0; +| (yy_state_ptr) = 0; +| (yy_full_match) = 0; +| (yy_lp) = 0; +| +| /* Defined in main.c */ +| #ifdef YY_STDINIT +| yyin = stdin; +| yyout = stdout; +| #else +| yyin = NULL; +| yyout = NULL; +| #endif +| +| /* For future reference: Set errno on error, since we are called by +| * yylex_init() +| */ +| return 0; +| } +| +| /* yylex_destroy is for both reentrant and non-reentrant scanners. */ +| int yylex_destroy (void) +| { +| +| /* Pop the buffer stack, destroying each element. */ +| while(YY_CURRENT_BUFFER){ +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| yypop_buffer_state(); +| } +| +| /* Destroy the stack itself. */ +| yyfree((yy_buffer_stack) ); +| (yy_buffer_stack) = NULL; +| +| yyfree ( (yy_state_buf) ); +| (yy_state_buf) = NULL; +| +| /* Reset the globals. This is important in a non-reentrant scanner so the next time +| * yylex() is called, initialization will occur. */ +| yy_init_globals( ); +| +| return 0; +| } +| +| /* +| * Internal utility routines. +| */ +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +| { +| +| int i; +| for ( i = 0; i < n; ++i ) +| s1[i] = s2[i]; +| } +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * s ) +| { +| int n; +| for ( n = 0; s[n]; ++n ) +| ; +| +| return n; +| } +| #endif +| +| void *yyalloc (yy_size_t size ) +| { +| return malloc(size); +| } +| +| void *yyrealloc (void * ptr, yy_size_t size ) +| { +| +| /* The cast to (char *) in the following accommodates both +| * implementations that use char* generic pointers, and those +| * that use void* generic pointers. It works with the latter +| * because both ANSI C and C++ allow castless assignment from +| * any pointer type to void*, and deal with argument conversions +| * as though doing an assignment. +| */ +| return realloc(ptr, size); +| } +| +| void yyfree (void * ptr ) +| { +| free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +| } +| +| #define YYTABLES_NAME "yytables" +| +| #line 10 "conftest.l" +| +| +| #ifdef YYTEXT_POINTER +| extern char *yytext; +| #endif +| int +| main (void) +| { +| return ! yylex () + ! yywrap (); +| } +configure:7094: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c -ll >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -ll +collect2: error: ld returned 1 exit status +configure:7094: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| #line 3 "lex.yy.c" +| +| #define YY_INT_ALIGNED short int +| +| /* A lexical scanner generated by flex */ +| +| #define FLEX_SCANNER +| #define YY_FLEX_MAJOR_VERSION 2 +| #define YY_FLEX_MINOR_VERSION 6 +| #define YY_FLEX_SUBMINOR_VERSION 1 +| #if YY_FLEX_SUBMINOR_VERSION > 0 +| #define FLEX_BETA +| #endif +| +| /* First, we deal with platform-specific or compiler-specific issues. */ +| +| /* begin standard C headers. */ +| #include +| #include +| #include +| #include +| +| /* end standard C headers. */ +| +| /* flex integer type definitions */ +| +| #ifndef FLEXINT_H +| #define FLEXINT_H +| +| /* C99 systems have . Non-C99 systems may or may not. */ +| +| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +| +| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, +| * if you want the limit (max/min) macros for int types. +| */ +| #ifndef __STDC_LIMIT_MACROS +| #define __STDC_LIMIT_MACROS 1 +| #endif +| +| #include +| typedef int8_t flex_int8_t; +| typedef uint8_t flex_uint8_t; +| typedef int16_t flex_int16_t; +| typedef uint16_t flex_uint16_t; +| typedef int32_t flex_int32_t; +| typedef uint32_t flex_uint32_t; +| #else +| typedef signed char flex_int8_t; +| typedef short int flex_int16_t; +| typedef int flex_int32_t; +| typedef unsigned char flex_uint8_t; +| typedef unsigned short int flex_uint16_t; +| typedef unsigned int flex_uint32_t; +| +| /* Limits of integral types. */ +| #ifndef INT8_MIN +| #define INT8_MIN (-128) +| #endif +| #ifndef INT16_MIN +| #define INT16_MIN (-32767-1) +| #endif +| #ifndef INT32_MIN +| #define INT32_MIN (-2147483647-1) +| #endif +| #ifndef INT8_MAX +| #define INT8_MAX (127) +| #endif +| #ifndef INT16_MAX +| #define INT16_MAX (32767) +| #endif +| #ifndef INT32_MAX +| #define INT32_MAX (2147483647) +| #endif +| #ifndef UINT8_MAX +| #define UINT8_MAX (255U) +| #endif +| #ifndef UINT16_MAX +| #define UINT16_MAX (65535U) +| #endif +| #ifndef UINT32_MAX +| #define UINT32_MAX (4294967295U) +| #endif +| +| #endif /* ! C99 */ +| +| #endif /* ! FLEXINT_H */ +| +| /* TODO: this is always defined, so inline it */ +| #define yyconst const +| +| #if defined(__GNUC__) && __GNUC__ >= 3 +| #define yynoreturn __attribute__((__noreturn__)) +| #else +| #define yynoreturn +| #endif +| +| /* Returned upon end-of-file. */ +| #define YY_NULL 0 +| +| /* Promotes a possibly negative, possibly signed char to an unsigned +| * integer for use as an array index. If the signed char is negative, +| * we want to instead treat it as an 8-bit unsigned char, hence the +| * double cast. +| */ +| #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +| +| /* Enter a start condition. This macro really ought to take a parameter, +| * but we do it the disgusting crufty way forced on us by the ()-less +| * definition of BEGIN. +| */ +| #define BEGIN (yy_start) = 1 + 2 * +| +| /* Translate the current start state into a value that can be later handed +| * to BEGIN to return to the state. The YYSTATE alias is for lex +| * compatibility. +| */ +| #define YY_START (((yy_start) - 1) / 2) +| #define YYSTATE YY_START +| +| /* Action number for EOF rule of a given start state. */ +| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +| +| /* Special action meaning "start processing a new file". */ +| #define YY_NEW_FILE yyrestart(yyin ) +| +| #define YY_END_OF_BUFFER_CHAR 0 +| +| /* Size of default input buffer. */ +| #ifndef YY_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k. +| * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. +| * Ditto for the __ia64__ case accordingly. +| */ +| #define YY_BUF_SIZE 32768 +| #else +| #define YY_BUF_SIZE 16384 +| #endif /* __ia64__ */ +| #endif +| +| /* The state buf must be large enough to hold one state per character in the main buffer. +| */ +| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +| +| #ifndef YY_TYPEDEF_YY_BUFFER_STATE +| #define YY_TYPEDEF_YY_BUFFER_STATE +| typedef struct yy_buffer_state *YY_BUFFER_STATE; +| #endif +| +| #ifndef YY_TYPEDEF_YY_SIZE_T +| #define YY_TYPEDEF_YY_SIZE_T +| typedef size_t yy_size_t; +| #endif +| +| extern int yyleng; +| +| extern FILE *yyin, *yyout; +| +| #define EOB_ACT_CONTINUE_SCAN 0 +| #define EOB_ACT_END_OF_FILE 1 +| #define EOB_ACT_LAST_MATCH 2 +| +| #define YY_LESS_LINENO(n) +| #define YY_LINENO_REWIND_TO(ptr) +| +| /* Return all but the first "n" matched characters back to the input stream. */ +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| *yy_cp = (yy_hold_char); \ +| YY_RESTORE_YY_MORE_OFFSET \ +| (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ +| YY_DO_BEFORE_ACTION; /* set up yytext again */ \ +| } \ +| while ( 0 ) +| +| #define unput(c) yyunput( c, (yytext_ptr) ) +| +| #ifndef YY_STRUCT_YY_BUFFER_STATE +| #define YY_STRUCT_YY_BUFFER_STATE +| struct yy_buffer_state +| { +| FILE *yy_input_file; +| +| char *yy_ch_buf; /* input buffer */ +| char *yy_buf_pos; /* current position in input buffer */ +| +| /* Size of input buffer in bytes, not including room for EOB +| * characters. +| */ +| int yy_buf_size; +| +| /* Number of characters read into yy_ch_buf, not including EOB +| * characters. +| */ +| int yy_n_chars; +| +| /* Whether we "own" the buffer - i.e., we know we created it, +| * and can realloc() it to grow it, and should free() it to +| * delete it. +| */ +| int yy_is_our_buffer; +| +| /* Whether this is an "interactive" input source; if so, and +| * if we're using stdio for input, then we want to use getc() +| * instead of fread(), to make sure we stop fetching input after +| * each newline. +| */ +| int yy_is_interactive; +| +| /* Whether we're considered to be at the beginning of a line. +| * If so, '^' rules will be active on the next match, otherwise +| * not. +| */ +| int yy_at_bol; +| +| int yy_bs_lineno; /**< The line count. */ +| int yy_bs_column; /**< The column count. */ +| +| /* Whether to try to fill the input buffer when we reach the +| * end of it. +| */ +| int yy_fill_buffer; +| +| int yy_buffer_status; +| +| #define YY_BUFFER_NEW 0 +| #define YY_BUFFER_NORMAL 1 +| /* When an EOF's been seen but there's still some text to process +| * then we mark the buffer as YY_EOF_PENDING, to indicate that we +| * shouldn't try reading from the input source any more. We might +| * still have a bunch of tokens to match, though, because of +| * possible backing-up. +| * +| * When we actually see the EOF, we change the status to "new" +| * (via yyrestart()), so that the user can continue scanning by +| * just pointing yyin at a new input file. +| */ +| #define YY_BUFFER_EOF_PENDING 2 +| +| }; +| #endif /* !YY_STRUCT_YY_BUFFER_STATE */ +| +| /* Stack of input buffers. */ +| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +| static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +| +| /* We provide macros for accessing buffer states in case in the +| * future we want to put the buffer states in a more general +| * "scanner state". +| * +| * Returns the top of the stack, or NULL. +| */ +| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ +| ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ +| : NULL) +| +| /* Same as previous macro, but useful when we know that the buffer stack is not +| * NULL or when we need an lvalue. For internal use only. +| */ +| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] +| +| /* yy_hold_char holds the character lost when yytext is formed. */ +| static char yy_hold_char; +| static int yy_n_chars; /* number of characters read into yy_ch_buf */ +| int yyleng; +| +| /* Points to current character in buffer. */ +| static char *yy_c_buf_p = NULL; +| static int yy_init = 0; /* whether we need to initialize */ +| static int yy_start = 0; /* start state number */ +| +| /* Flag which is used to allow yywrap()'s to do buffer switches +| * instead of setting up a fresh yyin. A bit of a hack ... +| */ +| static int yy_did_buffer_switch_on_eof; +| +| void yyrestart (FILE *input_file ); +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +| YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +| void yy_delete_buffer (YY_BUFFER_STATE b ); +| void yy_flush_buffer (YY_BUFFER_STATE b ); +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +| void yypop_buffer_state (void ); +| +| static void yyensure_buffer_stack (void ); +| static void yy_load_buffer_state (void ); +| static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +| +| #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +| +| YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +| YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +| YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +| +| void *yyalloc (yy_size_t ); +| void *yyrealloc (void *,yy_size_t ); +| void yyfree (void * ); +| +| #define yy_new_buffer yy_create_buffer +| +| #define yy_set_interactive(is_interactive) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){ \ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ +| } +| +| #define yy_set_bol(at_bol) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){\ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ +| } +| +| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +| +| /* Begin user sect3 */ +| +| typedef unsigned char YY_CHAR; +| +| FILE *yyin = NULL, *yyout = NULL; +| +| typedef int yy_state_type; +| +| extern int yylineno; +| +| int yylineno = 1; +| +| extern char *yytext; +| #ifdef yytext_ptr +| #undef yytext_ptr +| #endif +| #define yytext_ptr yytext +| +| static yy_state_type yy_get_previous_state (void ); +| static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +| static int yy_get_next_buffer (void ); +| static void yynoreturn yy_fatal_error (yyconst char* msg ); +| +| /* Done after the current pattern has been matched and before the +| * corresponding action - sets up yytext. +| */ +| #define YY_DO_BEFORE_ACTION \ +| (yytext_ptr) = yy_bp; \ +| (yytext_ptr) -= (yy_more_len); \ +| yyleng = (int) (yy_cp - (yytext_ptr)); \ +| (yy_hold_char) = *yy_cp; \ +| *yy_cp = '\0'; \ +| (yy_c_buf_p) = yy_cp; +| +| #define YY_NUM_RULES 8 +| #define YY_END_OF_BUFFER 9 +| /* This struct is not used in this scanner, +| but its presence is necessary. */ +| struct yy_trans_info +| { +| flex_int32_t yy_verify; +| flex_int32_t yy_nxt; +| }; +| static yyconst flex_int16_t yy_acclist[23] = +| { 0, +| 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, +| 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, +| 7, 8 +| } ; +| +| static yyconst flex_int16_t yy_accept[14] = +| { 0, +| 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, +| 20, 23, 23 +| } ; +| +| static yyconst YY_CHAR yy_ec[256] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, +| +| 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1 +| } ; +| +| static yyconst YY_CHAR yy_meta[9] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1 +| } ; +| +| static yyconst flex_uint16_t yy_base[13] = +| { 0, +| 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, +| 10, 10 +| } ; +| +| static yyconst flex_int16_t yy_def[13] = +| { 0, +| 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, +| 12, 0 +| } ; +| +| static yyconst flex_uint16_t yy_nxt[19] = +| { 0, +| 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| static yyconst flex_int16_t yy_chk[19] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| extern int yy_flex_debug; +| int yy_flex_debug = 0; +| +| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +| static char *yy_full_match; +| static int yy_lp; +| #define REJECT \ +| { \ +| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +| ++(yy_lp); \ +| goto find_rule; \ +| } +| +| static int yy_more_flag = 0; +| static int yy_more_len = 0; +| #define yymore() ((yy_more_flag) = 1) +| #define YY_MORE_ADJ (yy_more_len) +| #define YY_RESTORE_YY_MORE_OFFSET +| char *yytext; +| #line 1 "conftest.l" +| #line 469 "lex.yy.c" +| +| #define INITIAL 0 +| +| #ifndef YY_NO_UNISTD_H +| /* Special case for "unistd.h", since it is non-ANSI. We include it way +| * down here because we want the user's section 1 to have been scanned first. +| * The user has a chance to override it with an option. +| */ +| #include +| #endif +| +| #ifndef YY_EXTRA_TYPE +| #define YY_EXTRA_TYPE void * +| #endif +| +| static int yy_init_globals (void ); +| +| /* Accessor methods to globals. +| These are made visible to non-reentrant scanners for convenience. */ +| +| int yylex_destroy (void ); +| +| int yyget_debug (void ); +| +| void yyset_debug (int debug_flag ); +| +| YY_EXTRA_TYPE yyget_extra (void ); +| +| void yyset_extra (YY_EXTRA_TYPE user_defined ); +| +| FILE *yyget_in (void ); +| +| void yyset_in (FILE * _in_str ); +| +| FILE *yyget_out (void ); +| +| void yyset_out (FILE * _out_str ); +| +| int yyget_leng (void ); +| +| char *yyget_text (void ); +| +| int yyget_lineno (void ); +| +| void yyset_lineno (int _line_number ); +| +| /* Macros after this point can all be overridden by user definitions in +| * section 1. +| */ +| +| #ifndef YY_SKIP_YYWRAP +| #ifdef __cplusplus +| extern "C" int yywrap (void ); +| #else +| extern int yywrap (void ); +| #endif +| #endif +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c,char *buf_ptr ); +| +| #endif +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char *,yyconst char *,int ); +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * ); +| #endif +| +| #ifndef YY_NO_INPUT +| +| #ifdef __cplusplus +| static int yyinput (void ); +| #else +| static int input (void ); +| #endif +| +| #endif +| +| /* Amount of stuff to slurp up with each read. */ +| #ifndef YY_READ_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k */ +| #define YY_READ_BUF_SIZE 16384 +| #else +| #define YY_READ_BUF_SIZE 8192 +| #endif /* __ia64__ */ +| #endif +| +| /* Copy whatever the last rule matched to the standard output. */ +| #ifndef ECHO +| /* This used to be an fputs(), but since the string might contain NUL's, +| * we now use fwrite(). +| */ +| #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +| #endif +| +| /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +| * is returned in "result". +| */ +| #ifndef YY_INPUT +| #define YY_INPUT(buf,result,max_size) \ +| if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ +| { \ +| int c = '*'; \ +| size_t n; \ +| for ( n = 0; n < max_size && \ +| (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ +| buf[n] = (char) c; \ +| if ( c == '\n' ) \ +| buf[n++] = (char) c; \ +| if ( c == EOF && ferror( yyin ) ) \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| result = n; \ +| } \ +| else \ +| { \ +| errno=0; \ +| while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ +| { \ +| if( errno != EINTR) \ +| { \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| break; \ +| } \ +| errno=0; \ +| clearerr(yyin); \ +| } \ +| }\ +| \ +| +| #endif +| +| /* No semi-colon after return; correct usage is to write "yyterminate();" - +| * we don't want an extra ';' after the "return" because that will cause +| * some compilers to complain about unreachable statements. +| */ +| #ifndef yyterminate +| #define yyterminate() return YY_NULL +| #endif +| +| /* Number of entries by which start-condition stack grows. */ +| #ifndef YY_START_STACK_INCR +| #define YY_START_STACK_INCR 25 +| #endif +| +| /* Report a fatal error. */ +| #ifndef YY_FATAL_ERROR +| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +| #endif +| +| /* end tables serialization structures and prototypes */ +| +| /* Default declaration of generated scanner - a define so the user can +| * easily add parameters. +| */ +| #ifndef YY_DECL +| #define YY_DECL_IS_OURS 1 +| +| extern int yylex (void); +| +| #define YY_DECL int yylex (void) +| #endif /* !YY_DECL */ +| +| /* Code executed at the beginning of each rule, after yytext and yyleng +| * have been set up. +| */ +| #ifndef YY_USER_ACTION +| #define YY_USER_ACTION +| #endif +| +| /* Code executed at the end of each rule. */ +| #ifndef YY_BREAK +| #define YY_BREAK /*LINTED*/break; +| #endif +| +| #define YY_RULE_SETUP \ +| YY_USER_ACTION +| +| /** The main scanner function which does all the work. +| */ +| YY_DECL +| { +| yy_state_type yy_current_state; +| char *yy_cp, *yy_bp; +| int yy_act; +| +| if ( !(yy_init) ) +| { +| (yy_init) = 1; +| +| #ifdef YY_USER_INIT +| YY_USER_INIT; +| #endif +| +| /* Create the reject buffer large enough to save one state per allowed character. */ +| if ( ! (yy_state_buf) ) +| (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); +| if ( ! (yy_state_buf) ) +| YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); +| +| if ( ! (yy_start) ) +| (yy_start) = 1; /* first start state */ +| +| if ( ! yyin ) +| yyin = stdin; +| +| if ( ! yyout ) +| yyout = stdout; +| +| if ( ! YY_CURRENT_BUFFER ) { +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_load_buffer_state( ); +| } +| +| { +| #line 1 "conftest.l" +| +| #line 695 "lex.yy.c" +| +| while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ +| { +| (yy_more_len) = 0; +| if ( (yy_more_flag) ) +| { +| (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); +| (yy_more_flag) = 0; +| } +| yy_cp = (yy_c_buf_p); +| +| /* Support of yytext. */ +| *yy_cp = (yy_hold_char); +| +| /* yy_bp points to the position in yy_ch_buf of the start of +| * the current run. +| */ +| yy_bp = yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| yy_match: +| do +| { +| YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| ++yy_cp; +| } +| while ( yy_base[yy_current_state] != 10 ); +| +| yy_find_action: +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| find_rule: /* we branch to this label when backing up */ +| for ( ; ; ) /* until we find what rule we matched */ +| { +| if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) +| { +| yy_act = yy_acclist[(yy_lp)]; +| { +| (yy_full_match) = yy_cp; +| break; +| } +| } +| --yy_cp; +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| } +| +| YY_DO_BEFORE_ACTION; +| +| do_action: /* This label is used only to access EOF actions. */ +| +| switch ( yy_act ) +| { /* beginning of action switch */ +| case 1: +| YY_RULE_SETUP +| #line 2 "conftest.l" +| { ECHO; } +| YY_BREAK +| case 2: +| YY_RULE_SETUP +| #line 3 "conftest.l" +| { REJECT; } +| YY_BREAK +| case 3: +| YY_RULE_SETUP +| #line 4 "conftest.l" +| { yymore (); } +| YY_BREAK +| case 4: +| YY_RULE_SETUP +| #line 5 "conftest.l" +| { yyless (1); } +| YY_BREAK +| case 5: +| YY_RULE_SETUP +| #line 6 "conftest.l" +| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ +| yyless ((input () != 0)); } +| YY_BREAK +| case 6: +| YY_RULE_SETUP +| #line 8 "conftest.l" +| { unput (yytext[0]); } +| YY_BREAK +| case 7: +| YY_RULE_SETUP +| #line 9 "conftest.l" +| { BEGIN INITIAL; } +| YY_BREAK +| case 8: +| YY_RULE_SETUP +| #line 10 "conftest.l" +| ECHO; +| YY_BREAK +| #line 802 "lex.yy.c" +| case YY_STATE_EOF(INITIAL): +| yyterminate(); +| +| case YY_END_OF_BUFFER: +| { +| /* Amount of text matched not including the EOB char. */ +| int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; +| +| /* Undo the effects of YY_DO_BEFORE_ACTION. */ +| *yy_cp = (yy_hold_char); +| YY_RESTORE_YY_MORE_OFFSET +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) +| { +| /* We're scanning a new file or input source. It's +| * possible that this happened because the user +| * just pointed yyin at a new source and called +| * yylex(). If so, then we have to assure +| * consistency between YY_CURRENT_BUFFER and our +| * globals. Here is the right place to do so, because +| * this is the first action (other than possibly a +| * back-up) that will match for the new input source. +| */ +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; +| } +| +| /* Note that here we test for yy_c_buf_p "<=" to the position +| * of the first EOB in the buffer, since yy_c_buf_p will +| * already have been incremented past the NUL character +| * (since all states make transitions on EOB to the +| * end-of-buffer state). Contrast this with the test +| * in input(). +| */ +| if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| { /* This was really a NUL. */ +| yy_state_type yy_next_state; +| +| (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| /* Okay, we're now positioned to make the NUL +| * transition. We couldn't have +| * yy_get_previous_state() go ahead and do it +| * for us because it doesn't know how to deal +| * with the possibility of jamming (and we don't +| * want to build jamming into it because then it +| * will run more slowly). +| */ +| +| yy_next_state = yy_try_NUL_trans( yy_current_state ); +| +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| +| if ( yy_next_state ) +| { +| /* Consume the NUL. */ +| yy_cp = ++(yy_c_buf_p); +| yy_current_state = yy_next_state; +| goto yy_match; +| } +| +| else +| { +| yy_cp = (yy_c_buf_p); +| goto yy_find_action; +| } +| } +| +| else switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_END_OF_FILE: +| { +| (yy_did_buffer_switch_on_eof) = 0; +| +| if ( yywrap( ) ) +| { +| /* Note: because we've taken care in +| * yy_get_next_buffer() to have set up +| * yytext, we can now set up +| * yy_c_buf_p so that if some total +| * hoser (like flex itself) wants to +| * call the scanner after we return the +| * YY_NULL, it'll still work - another +| * YY_NULL will get returned. +| */ +| (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; +| +| yy_act = YY_STATE_EOF(YY_START); +| goto do_action; +| } +| +| else +| { +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| } +| break; +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = +| (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_match; +| +| case EOB_ACT_LAST_MATCH: +| (yy_c_buf_p) = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_find_action; +| } +| break; +| } +| +| default: +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--no action found" ); +| } /* end of action switch */ +| } /* end of scanning one token */ +| } /* end of user's declarations */ +| } /* end of yylex */ +| +| /* yy_get_next_buffer - try to read in a new buffer +| * +| * Returns a code representing an action: +| * EOB_ACT_LAST_MATCH - +| * EOB_ACT_CONTINUE_SCAN - continue scanning from current position +| * EOB_ACT_END_OF_FILE - end of file +| */ +| static int yy_get_next_buffer (void) +| { +| char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +| char *source = (yytext_ptr); +| int number_to_move, i; +| int ret_val; +| +| if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--end of buffer missed" ); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) +| { /* Don't try to fill the buffer, so this is an EOF. */ +| if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) +| { +| /* We matched a single character, the EOB, so +| * treat this as a final EOF. +| */ +| return EOB_ACT_END_OF_FILE; +| } +| +| else +| { +| /* We matched some text prior to the EOB, first +| * process it. +| */ +| return EOB_ACT_LAST_MATCH; +| } +| } +| +| /* Try to read more data. */ +| +| /* First move last chars to start of buffer. */ +| number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); +| +| for ( i = 0; i < number_to_move; ++i ) +| *(dest++) = *(source++); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) +| /* don't do the read, it's not guaranteed to return an EOF, +| * just force an EOF +| */ +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; +| +| else +| { +| int num_to_read = +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; +| +| while ( num_to_read <= 0 ) +| { /* Not enough room in the buffer - grow it. */ +| +| YY_FATAL_ERROR( +| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +| +| } +| +| if ( num_to_read > YY_READ_BUF_SIZE ) +| num_to_read = YY_READ_BUF_SIZE; +| +| /* Read in more data. */ +| YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +| (yy_n_chars), num_to_read ); +| +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| if ( (yy_n_chars) == 0 ) +| { +| if ( number_to_move == YY_MORE_ADJ ) +| { +| ret_val = EOB_ACT_END_OF_FILE; +| yyrestart(yyin ); +| } +| +| else +| { +| ret_val = EOB_ACT_LAST_MATCH; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = +| YY_BUFFER_EOF_PENDING; +| } +| } +| +| else +| ret_val = EOB_ACT_CONTINUE_SCAN; +| +| if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +| /* Extend the array by 50%, plus the number we really need. */ +| int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); +| if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +| } +| +| (yy_n_chars) += number_to_move; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +| +| (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; +| +| return ret_val; +| } +| +| /* yy_get_previous_state - get the state just before the EOB char was reached */ +| +| static yy_state_type yy_get_previous_state (void) +| { +| yy_state_type yy_current_state; +| char *yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) +| { +| YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| } +| +| return yy_current_state; +| } +| +| /* yy_try_NUL_trans - try to make a transition on the NUL character +| * +| * synopsis +| * next_state = yy_try_NUL_trans( current_state ); +| */ +| static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +| { +| int yy_is_jam; +| +| YY_CHAR yy_c = 1; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| yy_is_jam = (yy_current_state == 12); +| if ( ! yy_is_jam ) +| *(yy_state_ptr)++ = yy_current_state; +| +| return yy_is_jam ? 0 : yy_current_state; +| } +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c, char * yy_bp ) +| { +| char *yy_cp; +| +| yy_cp = (yy_c_buf_p); +| +| /* undo effects of setting up yytext */ +| *yy_cp = (yy_hold_char); +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| { /* need to shift things up to make room */ +| /* +2 for EOB chars. */ +| int number_to_move = (yy_n_chars) + 2; +| char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +| char *source = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; +| +| while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| *--dest = *--source; +| +| yy_cp += (int) (dest - source); +| yy_bp += (int) (dest - source); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = +| (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| YY_FATAL_ERROR( "flex scanner push-back overflow" ); +| } +| +| *--yy_cp = (char) c; +| +| (yytext_ptr) = yy_bp; +| (yy_hold_char) = *yy_cp; +| (yy_c_buf_p) = yy_cp; +| } +| +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput (void) +| #else +| static int input (void) +| #endif +| +| { +| int c; +| +| *(yy_c_buf_p) = (yy_hold_char); +| +| if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) +| { +| /* yy_c_buf_p now points to the character we want to return. +| * If this occurs *before* the EOB characters, then it's a +| * valid NUL; if not, then we've hit the end of the buffer. +| */ +| if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| /* This was really a NUL. */ +| *(yy_c_buf_p) = '\0'; +| +| else +| { /* need more input */ +| int offset = (yy_c_buf_p) - (yytext_ptr); +| ++(yy_c_buf_p); +| +| switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_LAST_MATCH: +| /* This happens because yy_g_n_b() +| * sees that we've accumulated a +| * token and flags that we need to +| * try matching the token before +| * proceeding. But for input(), +| * there's no matching to consider. +| * So convert the EOB_ACT_LAST_MATCH +| * to EOB_ACT_END_OF_FILE. +| */ +| +| /* Reset buffer status. */ +| yyrestart(yyin ); +| +| /*FALLTHROUGH*/ +| +| case EOB_ACT_END_OF_FILE: +| { +| if ( yywrap( ) ) +| return 0; +| +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| #ifdef __cplusplus +| return yyinput(); +| #else +| return input(); +| #endif +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = (yytext_ptr) + offset; +| break; +| } +| } +| } +| +| c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ +| *(yy_c_buf_p) = '\0'; /* preserve yytext */ +| (yy_hold_char) = *++(yy_c_buf_p); +| +| return c; +| } +| #endif /* ifndef YY_NO_INPUT */ +| +| /** Immediately switch to a different input stream. +| * @param input_file A readable stream. +| * +| * @note This function does not reset the start condition to @c INITIAL . +| */ +| void yyrestart (FILE * input_file ) +| { +| +| if ( ! YY_CURRENT_BUFFER ){ +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_init_buffer(YY_CURRENT_BUFFER,input_file ); +| yy_load_buffer_state( ); +| } +| +| /** Switch to a different input buffer. +| * @param new_buffer The new input buffer. +| * +| */ +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +| { +| +| /* TODO. We should be able to replace this entire function body +| * with +| * yypop_buffer_state(); +| * yypush_buffer_state(new_buffer); +| */ +| yyensure_buffer_stack (); +| if ( YY_CURRENT_BUFFER == new_buffer ) +| return; +| +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| yy_load_buffer_state( ); +| +| /* We don't actually know whether we did this switch during +| * EOF (yywrap()) processing, but the only time this flag +| * is looked at is after yywrap() is called, so it's safe +| * to go ahead and always set it. +| */ +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| static void yy_load_buffer_state (void) +| { +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +| yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +| (yy_hold_char) = *(yy_c_buf_p); +| } +| +| /** Allocate and initialize an input buffer state. +| * @param file A readable stream. +| * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. +| * +| * @return the allocated buffer state. +| */ +| YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +| { +| YY_BUFFER_STATE b; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_buf_size = (yy_size_t)size; +| +| /* yy_ch_buf has to be 2 characters longer than the size given because +| * we need to put in 2 end-of-buffer characters. +| */ +| b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); +| if ( ! b->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_is_our_buffer = 1; +| +| yy_init_buffer(b,file ); +| +| return b; +| } +| +| /** Destroy the buffer. +| * @param b a buffer created with yy_create_buffer() +| * +| */ +| void yy_delete_buffer (YY_BUFFER_STATE b ) +| { +| +| if ( ! b ) +| return; +| +| if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ +| YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; +| +| if ( b->yy_is_our_buffer ) +| yyfree((void *) b->yy_ch_buf ); +| +| yyfree((void *) b ); +| } +| +| /* Initializes or reinitializes a buffer. +| * This function is sometimes called more than once on the same buffer, +| * such as during a yyrestart() or at EOF. +| */ +| static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) +| +| { +| int oerrno = errno; +| +| yy_flush_buffer(b ); +| +| b->yy_input_file = file; +| b->yy_fill_buffer = 1; +| +| /* If b is the current buffer, then yy_init_buffer was _probably_ +| * called from yyrestart() or through yy_get_next_buffer. +| * In that case, we don't want to reset the lineno or column. +| */ +| if (b != YY_CURRENT_BUFFER){ +| b->yy_bs_lineno = 1; +| b->yy_bs_column = 0; +| } +| +| b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +| +| errno = oerrno; +| } +| +| /** Discard all buffered characters. On the next scan, YY_INPUT will be called. +| * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. +| * +| */ +| void yy_flush_buffer (YY_BUFFER_STATE b ) +| { +| if ( ! b ) +| return; +| +| b->yy_n_chars = 0; +| +| /* We always need two end-of-buffer characters. The first causes +| * a transition to the end-of-buffer state. The second causes +| * a jam in that state. +| */ +| b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; +| b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; +| +| b->yy_buf_pos = &b->yy_ch_buf[0]; +| +| b->yy_at_bol = 1; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| if ( b == YY_CURRENT_BUFFER ) +| yy_load_buffer_state( ); +| } +| +| /** Pushes the new state onto the stack. The new state becomes +| * the current state. This function will allocate the stack +| * if necessary. +| * @param new_buffer The new state. +| * +| */ +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +| { +| if (new_buffer == NULL) +| return; +| +| yyensure_buffer_stack(); +| +| /* This block is copied from yy_switch_to_buffer. */ +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| /* Only push if top exists. Otherwise, replace top. */ +| if (YY_CURRENT_BUFFER) +| (yy_buffer_stack_top)++; +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| +| /* copied from yy_switch_to_buffer. */ +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| /** Removes and deletes the top of the stack, if present. +| * The next element becomes the new top. +| * +| */ +| void yypop_buffer_state (void) +| { +| if (!YY_CURRENT_BUFFER) +| return; +| +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| if ((yy_buffer_stack_top) > 0) +| --(yy_buffer_stack_top); +| +| if (YY_CURRENT_BUFFER) { +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| } +| +| /* Allocates the stack if it does not exist. +| * Guarantees space for at least one push. +| */ +| static void yyensure_buffer_stack (void) +| { +| int num_to_alloc; +| +| if (!(yy_buffer_stack)) { +| +| /* First allocation is just for 2 elements, since we don't know if this +| * scanner will even need a stack. We use 2 instead of 1 to avoid an +| * immediate realloc on the next call. +| */ +| num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ +| (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc +| (num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); +| +| (yy_buffer_stack_max) = num_to_alloc; +| (yy_buffer_stack_top) = 0; +| return; +| } +| +| if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ +| +| /* Increase the buffer to prepare for a possible push. */ +| yy_size_t grow_size = 8 /* arbitrary grow size */; +| +| num_to_alloc = (yy_buffer_stack_max) + grow_size; +| (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc +| ((yy_buffer_stack), +| num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| /* zero only the new slots.*/ +| memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +| (yy_buffer_stack_max) = num_to_alloc; +| } +| } +| +| /** Setup the input buffer state to scan directly from a user-specified character buffer. +| * @param base the character buffer +| * @param size the size in bytes of the character buffer +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +| { +| YY_BUFFER_STATE b; +| +| if ( size < 2 || +| base[size-2] != YY_END_OF_BUFFER_CHAR || +| base[size-1] != YY_END_OF_BUFFER_CHAR ) +| /* They forgot to leave room for the EOB's. */ +| return NULL; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); +| +| b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ +| b->yy_buf_pos = b->yy_ch_buf = base; +| b->yy_is_our_buffer = 0; +| b->yy_input_file = NULL; +| b->yy_n_chars = b->yy_buf_size; +| b->yy_is_interactive = 0; +| b->yy_at_bol = 1; +| b->yy_fill_buffer = 0; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| yy_switch_to_buffer(b ); +| +| return b; +| } +| +| /** Setup the input buffer state to scan a string. The next call to yylex() will +| * scan from a @e copy of @a str. +| * @param yystr a NUL-terminated string to scan +| * +| * @return the newly allocated buffer state object. +| * @note If you want to scan bytes that may contain NUL values, then use +| * yy_scan_bytes() instead. +| */ +| YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +| { +| +| return yy_scan_bytes(yystr,(int) strlen(yystr) ); +| } +| +| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will +| * scan from a @e copy of @a bytes. +| * @param yybytes the byte buffer to scan +| * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +| { +| YY_BUFFER_STATE b; +| char *buf; +| yy_size_t n; +| int i; +| +| /* Get memory for full buffer, including space for trailing EOB's. */ +| n = (yy_size_t) (_yybytes_len + 2); +| buf = (char *) yyalloc(n ); +| if ( ! buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); +| +| for ( i = 0; i < _yybytes_len; ++i ) +| buf[i] = yybytes[i]; +| +| buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; +| +| b = yy_scan_buffer(buf,n ); +| if ( ! b ) +| YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); +| +| /* It's okay to grow etc. this buffer, and we should throw it +| * away when we're done. +| */ +| b->yy_is_our_buffer = 1; +| +| return b; +| } +| +| #ifndef YY_EXIT_FAILURE +| #define YY_EXIT_FAILURE 2 +| #endif +| +| static void yynoreturn yy_fatal_error (yyconst char* msg ) +| { +| (void) fprintf( stderr, "%s\n", msg ); +| exit( YY_EXIT_FAILURE ); +| } +| +| /* Redefine yyless() so it works in section 3 code. */ +| +| #undef yyless +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| yytext[yyleng] = (yy_hold_char); \ +| (yy_c_buf_p) = yytext + yyless_macro_arg; \ +| (yy_hold_char) = *(yy_c_buf_p); \ +| *(yy_c_buf_p) = '\0'; \ +| yyleng = yyless_macro_arg; \ +| } \ +| while ( 0 ) +| +| /* Accessor methods (get/set functions) to struct members. */ +| +| /** Get the current line number. +| * +| */ +| int yyget_lineno (void) +| { +| +| return yylineno; +| } +| +| /** Get the input stream. +| * +| */ +| FILE *yyget_in (void) +| { +| return yyin; +| } +| +| /** Get the output stream. +| * +| */ +| FILE *yyget_out (void) +| { +| return yyout; +| } +| +| /** Get the length of the current token. +| * +| */ +| int yyget_leng (void) +| { +| return yyleng; +| } +| +| /** Get the current token. +| * +| */ +| +| char *yyget_text (void) +| { +| return yytext; +| } +| +| /** Set the current line number. +| * @param _line_number line number +| * +| */ +| void yyset_lineno (int _line_number ) +| { +| +| yylineno = _line_number; +| } +| +| /** Set the input stream. This does not discard the current +| * input buffer. +| * @param _in_str A readable stream. +| * +| * @see yy_switch_to_buffer +| */ +| void yyset_in (FILE * _in_str ) +| { +| yyin = _in_str ; +| } +| +| void yyset_out (FILE * _out_str ) +| { +| yyout = _out_str ; +| } +| +| int yyget_debug (void) +| { +| return yy_flex_debug; +| } +| +| void yyset_debug (int _bdebug ) +| { +| yy_flex_debug = _bdebug ; +| } +| +| static int yy_init_globals (void) +| { +| /* Initialization is the same as for the non-reentrant scanner. +| * This function is called from yylex_destroy(), so don't allocate here. +| */ +| +| (yy_buffer_stack) = NULL; +| (yy_buffer_stack_top) = 0; +| (yy_buffer_stack_max) = 0; +| (yy_c_buf_p) = NULL; +| (yy_init) = 0; +| (yy_start) = 0; +| +| (yy_state_buf) = 0; +| (yy_state_ptr) = 0; +| (yy_full_match) = 0; +| (yy_lp) = 0; +| +| /* Defined in main.c */ +| #ifdef YY_STDINIT +| yyin = stdin; +| yyout = stdout; +| #else +| yyin = NULL; +| yyout = NULL; +| #endif +| +| /* For future reference: Set errno on error, since we are called by +| * yylex_init() +| */ +| return 0; +| } +| +| /* yylex_destroy is for both reentrant and non-reentrant scanners. */ +| int yylex_destroy (void) +| { +| +| /* Pop the buffer stack, destroying each element. */ +| while(YY_CURRENT_BUFFER){ +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| yypop_buffer_state(); +| } +| +| /* Destroy the stack itself. */ +| yyfree((yy_buffer_stack) ); +| (yy_buffer_stack) = NULL; +| +| yyfree ( (yy_state_buf) ); +| (yy_state_buf) = NULL; +| +| /* Reset the globals. This is important in a non-reentrant scanner so the next time +| * yylex() is called, initialization will occur. */ +| yy_init_globals( ); +| +| return 0; +| } +| +| /* +| * Internal utility routines. +| */ +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +| { +| +| int i; +| for ( i = 0; i < n; ++i ) +| s1[i] = s2[i]; +| } +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * s ) +| { +| int n; +| for ( n = 0; s[n]; ++n ) +| ; +| +| return n; +| } +| #endif +| +| void *yyalloc (yy_size_t size ) +| { +| return malloc(size); +| } +| +| void *yyrealloc (void * ptr, yy_size_t size ) +| { +| +| /* The cast to (char *) in the following accommodates both +| * implementations that use char* generic pointers, and those +| * that use void* generic pointers. It works with the latter +| * because both ANSI C and C++ allow castless assignment from +| * any pointer type to void*, and deal with argument conversions +| * as though doing an assignment. +| */ +| return realloc(ptr, size); +| } +| +| void yyfree (void * ptr ) +| { +| free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +| } +| +| #define YYTABLES_NAME "yytables" +| +| #line 10 "conftest.l" +| +| +| #ifdef YYTEXT_POINTER +| extern char *yytext; +| #endif +| int +| main (void) +| { +| return ! yylex () + ! yywrap (); +| } +configure:7104: result: none needed +configure:7110: checking whether yytext is a pointer +configure:7127: arm-linux-gnueabi-gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccUsKBxS.o: In function `input': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/lex.yy.c:1185: undefined reference to `yywrap' +/tmp/ccUsKBxS.o: In function `yylex': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/lex.yy.c:879: undefined reference to `yywrap' +/tmp/ccUsKBxS.o: In function `main': +/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1/conftest.l:18: undefined reference to `yywrap' +collect2: error: ld returned 1 exit status +configure:7127: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| #define YYTEXT_POINTER 1 +| +| #line 3 "lex.yy.c" +| +| #define YY_INT_ALIGNED short int +| +| /* A lexical scanner generated by flex */ +| +| #define FLEX_SCANNER +| #define YY_FLEX_MAJOR_VERSION 2 +| #define YY_FLEX_MINOR_VERSION 6 +| #define YY_FLEX_SUBMINOR_VERSION 1 +| #if YY_FLEX_SUBMINOR_VERSION > 0 +| #define FLEX_BETA +| #endif +| +| /* First, we deal with platform-specific or compiler-specific issues. */ +| +| /* begin standard C headers. */ +| #include +| #include +| #include +| #include +| +| /* end standard C headers. */ +| +| /* flex integer type definitions */ +| +| #ifndef FLEXINT_H +| #define FLEXINT_H +| +| /* C99 systems have . Non-C99 systems may or may not. */ +| +| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +| +| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, +| * if you want the limit (max/min) macros for int types. +| */ +| #ifndef __STDC_LIMIT_MACROS +| #define __STDC_LIMIT_MACROS 1 +| #endif +| +| #include +| typedef int8_t flex_int8_t; +| typedef uint8_t flex_uint8_t; +| typedef int16_t flex_int16_t; +| typedef uint16_t flex_uint16_t; +| typedef int32_t flex_int32_t; +| typedef uint32_t flex_uint32_t; +| #else +| typedef signed char flex_int8_t; +| typedef short int flex_int16_t; +| typedef int flex_int32_t; +| typedef unsigned char flex_uint8_t; +| typedef unsigned short int flex_uint16_t; +| typedef unsigned int flex_uint32_t; +| +| /* Limits of integral types. */ +| #ifndef INT8_MIN +| #define INT8_MIN (-128) +| #endif +| #ifndef INT16_MIN +| #define INT16_MIN (-32767-1) +| #endif +| #ifndef INT32_MIN +| #define INT32_MIN (-2147483647-1) +| #endif +| #ifndef INT8_MAX +| #define INT8_MAX (127) +| #endif +| #ifndef INT16_MAX +| #define INT16_MAX (32767) +| #endif +| #ifndef INT32_MAX +| #define INT32_MAX (2147483647) +| #endif +| #ifndef UINT8_MAX +| #define UINT8_MAX (255U) +| #endif +| #ifndef UINT16_MAX +| #define UINT16_MAX (65535U) +| #endif +| #ifndef UINT32_MAX +| #define UINT32_MAX (4294967295U) +| #endif +| +| #endif /* ! C99 */ +| +| #endif /* ! FLEXINT_H */ +| +| /* TODO: this is always defined, so inline it */ +| #define yyconst const +| +| #if defined(__GNUC__) && __GNUC__ >= 3 +| #define yynoreturn __attribute__((__noreturn__)) +| #else +| #define yynoreturn +| #endif +| +| /* Returned upon end-of-file. */ +| #define YY_NULL 0 +| +| /* Promotes a possibly negative, possibly signed char to an unsigned +| * integer for use as an array index. If the signed char is negative, +| * we want to instead treat it as an 8-bit unsigned char, hence the +| * double cast. +| */ +| #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +| +| /* Enter a start condition. This macro really ought to take a parameter, +| * but we do it the disgusting crufty way forced on us by the ()-less +| * definition of BEGIN. +| */ +| #define BEGIN (yy_start) = 1 + 2 * +| +| /* Translate the current start state into a value that can be later handed +| * to BEGIN to return to the state. The YYSTATE alias is for lex +| * compatibility. +| */ +| #define YY_START (((yy_start) - 1) / 2) +| #define YYSTATE YY_START +| +| /* Action number for EOF rule of a given start state. */ +| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +| +| /* Special action meaning "start processing a new file". */ +| #define YY_NEW_FILE yyrestart(yyin ) +| +| #define YY_END_OF_BUFFER_CHAR 0 +| +| /* Size of default input buffer. */ +| #ifndef YY_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k. +| * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. +| * Ditto for the __ia64__ case accordingly. +| */ +| #define YY_BUF_SIZE 32768 +| #else +| #define YY_BUF_SIZE 16384 +| #endif /* __ia64__ */ +| #endif +| +| /* The state buf must be large enough to hold one state per character in the main buffer. +| */ +| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +| +| #ifndef YY_TYPEDEF_YY_BUFFER_STATE +| #define YY_TYPEDEF_YY_BUFFER_STATE +| typedef struct yy_buffer_state *YY_BUFFER_STATE; +| #endif +| +| #ifndef YY_TYPEDEF_YY_SIZE_T +| #define YY_TYPEDEF_YY_SIZE_T +| typedef size_t yy_size_t; +| #endif +| +| extern int yyleng; +| +| extern FILE *yyin, *yyout; +| +| #define EOB_ACT_CONTINUE_SCAN 0 +| #define EOB_ACT_END_OF_FILE 1 +| #define EOB_ACT_LAST_MATCH 2 +| +| #define YY_LESS_LINENO(n) +| #define YY_LINENO_REWIND_TO(ptr) +| +| /* Return all but the first "n" matched characters back to the input stream. */ +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| *yy_cp = (yy_hold_char); \ +| YY_RESTORE_YY_MORE_OFFSET \ +| (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ +| YY_DO_BEFORE_ACTION; /* set up yytext again */ \ +| } \ +| while ( 0 ) +| +| #define unput(c) yyunput( c, (yytext_ptr) ) +| +| #ifndef YY_STRUCT_YY_BUFFER_STATE +| #define YY_STRUCT_YY_BUFFER_STATE +| struct yy_buffer_state +| { +| FILE *yy_input_file; +| +| char *yy_ch_buf; /* input buffer */ +| char *yy_buf_pos; /* current position in input buffer */ +| +| /* Size of input buffer in bytes, not including room for EOB +| * characters. +| */ +| int yy_buf_size; +| +| /* Number of characters read into yy_ch_buf, not including EOB +| * characters. +| */ +| int yy_n_chars; +| +| /* Whether we "own" the buffer - i.e., we know we created it, +| * and can realloc() it to grow it, and should free() it to +| * delete it. +| */ +| int yy_is_our_buffer; +| +| /* Whether this is an "interactive" input source; if so, and +| * if we're using stdio for input, then we want to use getc() +| * instead of fread(), to make sure we stop fetching input after +| * each newline. +| */ +| int yy_is_interactive; +| +| /* Whether we're considered to be at the beginning of a line. +| * If so, '^' rules will be active on the next match, otherwise +| * not. +| */ +| int yy_at_bol; +| +| int yy_bs_lineno; /**< The line count. */ +| int yy_bs_column; /**< The column count. */ +| +| /* Whether to try to fill the input buffer when we reach the +| * end of it. +| */ +| int yy_fill_buffer; +| +| int yy_buffer_status; +| +| #define YY_BUFFER_NEW 0 +| #define YY_BUFFER_NORMAL 1 +| /* When an EOF's been seen but there's still some text to process +| * then we mark the buffer as YY_EOF_PENDING, to indicate that we +| * shouldn't try reading from the input source any more. We might +| * still have a bunch of tokens to match, though, because of +| * possible backing-up. +| * +| * When we actually see the EOF, we change the status to "new" +| * (via yyrestart()), so that the user can continue scanning by +| * just pointing yyin at a new input file. +| */ +| #define YY_BUFFER_EOF_PENDING 2 +| +| }; +| #endif /* !YY_STRUCT_YY_BUFFER_STATE */ +| +| /* Stack of input buffers. */ +| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +| static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +| +| /* We provide macros for accessing buffer states in case in the +| * future we want to put the buffer states in a more general +| * "scanner state". +| * +| * Returns the top of the stack, or NULL. +| */ +| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ +| ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ +| : NULL) +| +| /* Same as previous macro, but useful when we know that the buffer stack is not +| * NULL or when we need an lvalue. For internal use only. +| */ +| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] +| +| /* yy_hold_char holds the character lost when yytext is formed. */ +| static char yy_hold_char; +| static int yy_n_chars; /* number of characters read into yy_ch_buf */ +| int yyleng; +| +| /* Points to current character in buffer. */ +| static char *yy_c_buf_p = NULL; +| static int yy_init = 0; /* whether we need to initialize */ +| static int yy_start = 0; /* start state number */ +| +| /* Flag which is used to allow yywrap()'s to do buffer switches +| * instead of setting up a fresh yyin. A bit of a hack ... +| */ +| static int yy_did_buffer_switch_on_eof; +| +| void yyrestart (FILE *input_file ); +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +| YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +| void yy_delete_buffer (YY_BUFFER_STATE b ); +| void yy_flush_buffer (YY_BUFFER_STATE b ); +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +| void yypop_buffer_state (void ); +| +| static void yyensure_buffer_stack (void ); +| static void yy_load_buffer_state (void ); +| static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +| +| #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +| +| YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +| YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +| YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +| +| void *yyalloc (yy_size_t ); +| void *yyrealloc (void *,yy_size_t ); +| void yyfree (void * ); +| +| #define yy_new_buffer yy_create_buffer +| +| #define yy_set_interactive(is_interactive) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){ \ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ +| } +| +| #define yy_set_bol(at_bol) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){\ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer(yyin,YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ +| } +| +| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +| +| /* Begin user sect3 */ +| +| typedef unsigned char YY_CHAR; +| +| FILE *yyin = NULL, *yyout = NULL; +| +| typedef int yy_state_type; +| +| extern int yylineno; +| +| int yylineno = 1; +| +| extern char *yytext; +| #ifdef yytext_ptr +| #undef yytext_ptr +| #endif +| #define yytext_ptr yytext +| +| static yy_state_type yy_get_previous_state (void ); +| static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +| static int yy_get_next_buffer (void ); +| static void yynoreturn yy_fatal_error (yyconst char* msg ); +| +| /* Done after the current pattern has been matched and before the +| * corresponding action - sets up yytext. +| */ +| #define YY_DO_BEFORE_ACTION \ +| (yytext_ptr) = yy_bp; \ +| (yytext_ptr) -= (yy_more_len); \ +| yyleng = (int) (yy_cp - (yytext_ptr)); \ +| (yy_hold_char) = *yy_cp; \ +| *yy_cp = '\0'; \ +| (yy_c_buf_p) = yy_cp; +| +| #define YY_NUM_RULES 8 +| #define YY_END_OF_BUFFER 9 +| /* This struct is not used in this scanner, +| but its presence is necessary. */ +| struct yy_trans_info +| { +| flex_int32_t yy_verify; +| flex_int32_t yy_nxt; +| }; +| static yyconst flex_int16_t yy_acclist[23] = +| { 0, +| 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, +| 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, +| 7, 8 +| } ; +| +| static yyconst flex_int16_t yy_accept[14] = +| { 0, +| 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, +| 20, 23, 23 +| } ; +| +| static yyconst YY_CHAR yy_ec[256] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, +| +| 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1 +| } ; +| +| static yyconst YY_CHAR yy_meta[9] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1 +| } ; +| +| static yyconst flex_uint16_t yy_base[13] = +| { 0, +| 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, +| 10, 10 +| } ; +| +| static yyconst flex_int16_t yy_def[13] = +| { 0, +| 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, +| 12, 0 +| } ; +| +| static yyconst flex_uint16_t yy_nxt[19] = +| { 0, +| 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| static yyconst flex_int16_t yy_chk[19] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| extern int yy_flex_debug; +| int yy_flex_debug = 0; +| +| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +| static char *yy_full_match; +| static int yy_lp; +| #define REJECT \ +| { \ +| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +| ++(yy_lp); \ +| goto find_rule; \ +| } +| +| static int yy_more_flag = 0; +| static int yy_more_len = 0; +| #define yymore() ((yy_more_flag) = 1) +| #define YY_MORE_ADJ (yy_more_len) +| #define YY_RESTORE_YY_MORE_OFFSET +| char *yytext; +| #line 1 "conftest.l" +| #line 469 "lex.yy.c" +| +| #define INITIAL 0 +| +| #ifndef YY_NO_UNISTD_H +| /* Special case for "unistd.h", since it is non-ANSI. We include it way +| * down here because we want the user's section 1 to have been scanned first. +| * The user has a chance to override it with an option. +| */ +| #include +| #endif +| +| #ifndef YY_EXTRA_TYPE +| #define YY_EXTRA_TYPE void * +| #endif +| +| static int yy_init_globals (void ); +| +| /* Accessor methods to globals. +| These are made visible to non-reentrant scanners for convenience. */ +| +| int yylex_destroy (void ); +| +| int yyget_debug (void ); +| +| void yyset_debug (int debug_flag ); +| +| YY_EXTRA_TYPE yyget_extra (void ); +| +| void yyset_extra (YY_EXTRA_TYPE user_defined ); +| +| FILE *yyget_in (void ); +| +| void yyset_in (FILE * _in_str ); +| +| FILE *yyget_out (void ); +| +| void yyset_out (FILE * _out_str ); +| +| int yyget_leng (void ); +| +| char *yyget_text (void ); +| +| int yyget_lineno (void ); +| +| void yyset_lineno (int _line_number ); +| +| /* Macros after this point can all be overridden by user definitions in +| * section 1. +| */ +| +| #ifndef YY_SKIP_YYWRAP +| #ifdef __cplusplus +| extern "C" int yywrap (void ); +| #else +| extern int yywrap (void ); +| #endif +| #endif +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c,char *buf_ptr ); +| +| #endif +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char *,yyconst char *,int ); +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * ); +| #endif +| +| #ifndef YY_NO_INPUT +| +| #ifdef __cplusplus +| static int yyinput (void ); +| #else +| static int input (void ); +| #endif +| +| #endif +| +| /* Amount of stuff to slurp up with each read. */ +| #ifndef YY_READ_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k */ +| #define YY_READ_BUF_SIZE 16384 +| #else +| #define YY_READ_BUF_SIZE 8192 +| #endif /* __ia64__ */ +| #endif +| +| /* Copy whatever the last rule matched to the standard output. */ +| #ifndef ECHO +| /* This used to be an fputs(), but since the string might contain NUL's, +| * we now use fwrite(). +| */ +| #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +| #endif +| +| /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +| * is returned in "result". +| */ +| #ifndef YY_INPUT +| #define YY_INPUT(buf,result,max_size) \ +| if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ +| { \ +| int c = '*'; \ +| size_t n; \ +| for ( n = 0; n < max_size && \ +| (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ +| buf[n] = (char) c; \ +| if ( c == '\n' ) \ +| buf[n++] = (char) c; \ +| if ( c == EOF && ferror( yyin ) ) \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| result = n; \ +| } \ +| else \ +| { \ +| errno=0; \ +| while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ +| { \ +| if( errno != EINTR) \ +| { \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| break; \ +| } \ +| errno=0; \ +| clearerr(yyin); \ +| } \ +| }\ +| \ +| +| #endif +| +| /* No semi-colon after return; correct usage is to write "yyterminate();" - +| * we don't want an extra ';' after the "return" because that will cause +| * some compilers to complain about unreachable statements. +| */ +| #ifndef yyterminate +| #define yyterminate() return YY_NULL +| #endif +| +| /* Number of entries by which start-condition stack grows. */ +| #ifndef YY_START_STACK_INCR +| #define YY_START_STACK_INCR 25 +| #endif +| +| /* Report a fatal error. */ +| #ifndef YY_FATAL_ERROR +| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +| #endif +| +| /* end tables serialization structures and prototypes */ +| +| /* Default declaration of generated scanner - a define so the user can +| * easily add parameters. +| */ +| #ifndef YY_DECL +| #define YY_DECL_IS_OURS 1 +| +| extern int yylex (void); +| +| #define YY_DECL int yylex (void) +| #endif /* !YY_DECL */ +| +| /* Code executed at the beginning of each rule, after yytext and yyleng +| * have been set up. +| */ +| #ifndef YY_USER_ACTION +| #define YY_USER_ACTION +| #endif +| +| /* Code executed at the end of each rule. */ +| #ifndef YY_BREAK +| #define YY_BREAK /*LINTED*/break; +| #endif +| +| #define YY_RULE_SETUP \ +| YY_USER_ACTION +| +| /** The main scanner function which does all the work. +| */ +| YY_DECL +| { +| yy_state_type yy_current_state; +| char *yy_cp, *yy_bp; +| int yy_act; +| +| if ( !(yy_init) ) +| { +| (yy_init) = 1; +| +| #ifdef YY_USER_INIT +| YY_USER_INIT; +| #endif +| +| /* Create the reject buffer large enough to save one state per allowed character. */ +| if ( ! (yy_state_buf) ) +| (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); +| if ( ! (yy_state_buf) ) +| YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); +| +| if ( ! (yy_start) ) +| (yy_start) = 1; /* first start state */ +| +| if ( ! yyin ) +| yyin = stdin; +| +| if ( ! yyout ) +| yyout = stdout; +| +| if ( ! YY_CURRENT_BUFFER ) { +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_load_buffer_state( ); +| } +| +| { +| #line 1 "conftest.l" +| +| #line 695 "lex.yy.c" +| +| while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ +| { +| (yy_more_len) = 0; +| if ( (yy_more_flag) ) +| { +| (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); +| (yy_more_flag) = 0; +| } +| yy_cp = (yy_c_buf_p); +| +| /* Support of yytext. */ +| *yy_cp = (yy_hold_char); +| +| /* yy_bp points to the position in yy_ch_buf of the start of +| * the current run. +| */ +| yy_bp = yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| yy_match: +| do +| { +| YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| ++yy_cp; +| } +| while ( yy_base[yy_current_state] != 10 ); +| +| yy_find_action: +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| find_rule: /* we branch to this label when backing up */ +| for ( ; ; ) /* until we find what rule we matched */ +| { +| if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) +| { +| yy_act = yy_acclist[(yy_lp)]; +| { +| (yy_full_match) = yy_cp; +| break; +| } +| } +| --yy_cp; +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| } +| +| YY_DO_BEFORE_ACTION; +| +| do_action: /* This label is used only to access EOF actions. */ +| +| switch ( yy_act ) +| { /* beginning of action switch */ +| case 1: +| YY_RULE_SETUP +| #line 2 "conftest.l" +| { ECHO; } +| YY_BREAK +| case 2: +| YY_RULE_SETUP +| #line 3 "conftest.l" +| { REJECT; } +| YY_BREAK +| case 3: +| YY_RULE_SETUP +| #line 4 "conftest.l" +| { yymore (); } +| YY_BREAK +| case 4: +| YY_RULE_SETUP +| #line 5 "conftest.l" +| { yyless (1); } +| YY_BREAK +| case 5: +| YY_RULE_SETUP +| #line 6 "conftest.l" +| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ +| yyless ((input () != 0)); } +| YY_BREAK +| case 6: +| YY_RULE_SETUP +| #line 8 "conftest.l" +| { unput (yytext[0]); } +| YY_BREAK +| case 7: +| YY_RULE_SETUP +| #line 9 "conftest.l" +| { BEGIN INITIAL; } +| YY_BREAK +| case 8: +| YY_RULE_SETUP +| #line 10 "conftest.l" +| ECHO; +| YY_BREAK +| #line 802 "lex.yy.c" +| case YY_STATE_EOF(INITIAL): +| yyterminate(); +| +| case YY_END_OF_BUFFER: +| { +| /* Amount of text matched not including the EOB char. */ +| int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; +| +| /* Undo the effects of YY_DO_BEFORE_ACTION. */ +| *yy_cp = (yy_hold_char); +| YY_RESTORE_YY_MORE_OFFSET +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) +| { +| /* We're scanning a new file or input source. It's +| * possible that this happened because the user +| * just pointed yyin at a new source and called +| * yylex(). If so, then we have to assure +| * consistency between YY_CURRENT_BUFFER and our +| * globals. Here is the right place to do so, because +| * this is the first action (other than possibly a +| * back-up) that will match for the new input source. +| */ +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; +| } +| +| /* Note that here we test for yy_c_buf_p "<=" to the position +| * of the first EOB in the buffer, since yy_c_buf_p will +| * already have been incremented past the NUL character +| * (since all states make transitions on EOB to the +| * end-of-buffer state). Contrast this with the test +| * in input(). +| */ +| if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| { /* This was really a NUL. */ +| yy_state_type yy_next_state; +| +| (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| /* Okay, we're now positioned to make the NUL +| * transition. We couldn't have +| * yy_get_previous_state() go ahead and do it +| * for us because it doesn't know how to deal +| * with the possibility of jamming (and we don't +| * want to build jamming into it because then it +| * will run more slowly). +| */ +| +| yy_next_state = yy_try_NUL_trans( yy_current_state ); +| +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| +| if ( yy_next_state ) +| { +| /* Consume the NUL. */ +| yy_cp = ++(yy_c_buf_p); +| yy_current_state = yy_next_state; +| goto yy_match; +| } +| +| else +| { +| yy_cp = (yy_c_buf_p); +| goto yy_find_action; +| } +| } +| +| else switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_END_OF_FILE: +| { +| (yy_did_buffer_switch_on_eof) = 0; +| +| if ( yywrap( ) ) +| { +| /* Note: because we've taken care in +| * yy_get_next_buffer() to have set up +| * yytext, we can now set up +| * yy_c_buf_p so that if some total +| * hoser (like flex itself) wants to +| * call the scanner after we return the +| * YY_NULL, it'll still work - another +| * YY_NULL will get returned. +| */ +| (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; +| +| yy_act = YY_STATE_EOF(YY_START); +| goto do_action; +| } +| +| else +| { +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| } +| break; +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = +| (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_match; +| +| case EOB_ACT_LAST_MATCH: +| (yy_c_buf_p) = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_find_action; +| } +| break; +| } +| +| default: +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--no action found" ); +| } /* end of action switch */ +| } /* end of scanning one token */ +| } /* end of user's declarations */ +| } /* end of yylex */ +| +| /* yy_get_next_buffer - try to read in a new buffer +| * +| * Returns a code representing an action: +| * EOB_ACT_LAST_MATCH - +| * EOB_ACT_CONTINUE_SCAN - continue scanning from current position +| * EOB_ACT_END_OF_FILE - end of file +| */ +| static int yy_get_next_buffer (void) +| { +| char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +| char *source = (yytext_ptr); +| int number_to_move, i; +| int ret_val; +| +| if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--end of buffer missed" ); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) +| { /* Don't try to fill the buffer, so this is an EOF. */ +| if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) +| { +| /* We matched a single character, the EOB, so +| * treat this as a final EOF. +| */ +| return EOB_ACT_END_OF_FILE; +| } +| +| else +| { +| /* We matched some text prior to the EOB, first +| * process it. +| */ +| return EOB_ACT_LAST_MATCH; +| } +| } +| +| /* Try to read more data. */ +| +| /* First move last chars to start of buffer. */ +| number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); +| +| for ( i = 0; i < number_to_move; ++i ) +| *(dest++) = *(source++); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) +| /* don't do the read, it's not guaranteed to return an EOF, +| * just force an EOF +| */ +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; +| +| else +| { +| int num_to_read = +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; +| +| while ( num_to_read <= 0 ) +| { /* Not enough room in the buffer - grow it. */ +| +| YY_FATAL_ERROR( +| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +| +| } +| +| if ( num_to_read > YY_READ_BUF_SIZE ) +| num_to_read = YY_READ_BUF_SIZE; +| +| /* Read in more data. */ +| YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +| (yy_n_chars), num_to_read ); +| +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| if ( (yy_n_chars) == 0 ) +| { +| if ( number_to_move == YY_MORE_ADJ ) +| { +| ret_val = EOB_ACT_END_OF_FILE; +| yyrestart(yyin ); +| } +| +| else +| { +| ret_val = EOB_ACT_LAST_MATCH; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = +| YY_BUFFER_EOF_PENDING; +| } +| } +| +| else +| ret_val = EOB_ACT_CONTINUE_SCAN; +| +| if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +| /* Extend the array by 50%, plus the number we really need. */ +| int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); +| if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +| } +| +| (yy_n_chars) += number_to_move; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +| +| (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; +| +| return ret_val; +| } +| +| /* yy_get_previous_state - get the state just before the EOB char was reached */ +| +| static yy_state_type yy_get_previous_state (void) +| { +| yy_state_type yy_current_state; +| char *yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) +| { +| YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| } +| +| return yy_current_state; +| } +| +| /* yy_try_NUL_trans - try to make a transition on the NUL character +| * +| * synopsis +| * next_state = yy_try_NUL_trans( current_state ); +| */ +| static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +| { +| int yy_is_jam; +| +| YY_CHAR yy_c = 1; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[(unsigned int) yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; +| yy_is_jam = (yy_current_state == 12); +| if ( ! yy_is_jam ) +| *(yy_state_ptr)++ = yy_current_state; +| +| return yy_is_jam ? 0 : yy_current_state; +| } +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c, char * yy_bp ) +| { +| char *yy_cp; +| +| yy_cp = (yy_c_buf_p); +| +| /* undo effects of setting up yytext */ +| *yy_cp = (yy_hold_char); +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| { /* need to shift things up to make room */ +| /* +2 for EOB chars. */ +| int number_to_move = (yy_n_chars) + 2; +| char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +| char *source = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; +| +| while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| *--dest = *--source; +| +| yy_cp += (int) (dest - source); +| yy_bp += (int) (dest - source); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = +| (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| YY_FATAL_ERROR( "flex scanner push-back overflow" ); +| } +| +| *--yy_cp = (char) c; +| +| (yytext_ptr) = yy_bp; +| (yy_hold_char) = *yy_cp; +| (yy_c_buf_p) = yy_cp; +| } +| +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput (void) +| #else +| static int input (void) +| #endif +| +| { +| int c; +| +| *(yy_c_buf_p) = (yy_hold_char); +| +| if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) +| { +| /* yy_c_buf_p now points to the character we want to return. +| * If this occurs *before* the EOB characters, then it's a +| * valid NUL; if not, then we've hit the end of the buffer. +| */ +| if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| /* This was really a NUL. */ +| *(yy_c_buf_p) = '\0'; +| +| else +| { /* need more input */ +| int offset = (yy_c_buf_p) - (yytext_ptr); +| ++(yy_c_buf_p); +| +| switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_LAST_MATCH: +| /* This happens because yy_g_n_b() +| * sees that we've accumulated a +| * token and flags that we need to +| * try matching the token before +| * proceeding. But for input(), +| * there's no matching to consider. +| * So convert the EOB_ACT_LAST_MATCH +| * to EOB_ACT_END_OF_FILE. +| */ +| +| /* Reset buffer status. */ +| yyrestart(yyin ); +| +| /*FALLTHROUGH*/ +| +| case EOB_ACT_END_OF_FILE: +| { +| if ( yywrap( ) ) +| return 0; +| +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| #ifdef __cplusplus +| return yyinput(); +| #else +| return input(); +| #endif +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = (yytext_ptr) + offset; +| break; +| } +| } +| } +| +| c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ +| *(yy_c_buf_p) = '\0'; /* preserve yytext */ +| (yy_hold_char) = *++(yy_c_buf_p); +| +| return c; +| } +| #endif /* ifndef YY_NO_INPUT */ +| +| /** Immediately switch to a different input stream. +| * @param input_file A readable stream. +| * +| * @note This function does not reset the start condition to @c INITIAL . +| */ +| void yyrestart (FILE * input_file ) +| { +| +| if ( ! YY_CURRENT_BUFFER ){ +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer(yyin,YY_BUF_SIZE ); +| } +| +| yy_init_buffer(YY_CURRENT_BUFFER,input_file ); +| yy_load_buffer_state( ); +| } +| +| /** Switch to a different input buffer. +| * @param new_buffer The new input buffer. +| * +| */ +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +| { +| +| /* TODO. We should be able to replace this entire function body +| * with +| * yypop_buffer_state(); +| * yypush_buffer_state(new_buffer); +| */ +| yyensure_buffer_stack (); +| if ( YY_CURRENT_BUFFER == new_buffer ) +| return; +| +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| yy_load_buffer_state( ); +| +| /* We don't actually know whether we did this switch during +| * EOF (yywrap()) processing, but the only time this flag +| * is looked at is after yywrap() is called, so it's safe +| * to go ahead and always set it. +| */ +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| static void yy_load_buffer_state (void) +| { +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +| yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +| (yy_hold_char) = *(yy_c_buf_p); +| } +| +| /** Allocate and initialize an input buffer state. +| * @param file A readable stream. +| * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. +| * +| * @return the allocated buffer state. +| */ +| YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +| { +| YY_BUFFER_STATE b; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_buf_size = (yy_size_t)size; +| +| /* yy_ch_buf has to be 2 characters longer than the size given because +| * we need to put in 2 end-of-buffer characters. +| */ +| b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); +| if ( ! b->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_is_our_buffer = 1; +| +| yy_init_buffer(b,file ); +| +| return b; +| } +| +| /** Destroy the buffer. +| * @param b a buffer created with yy_create_buffer() +| * +| */ +| void yy_delete_buffer (YY_BUFFER_STATE b ) +| { +| +| if ( ! b ) +| return; +| +| if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ +| YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; +| +| if ( b->yy_is_our_buffer ) +| yyfree((void *) b->yy_ch_buf ); +| +| yyfree((void *) b ); +| } +| +| /* Initializes or reinitializes a buffer. +| * This function is sometimes called more than once on the same buffer, +| * such as during a yyrestart() or at EOF. +| */ +| static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) +| +| { +| int oerrno = errno; +| +| yy_flush_buffer(b ); +| +| b->yy_input_file = file; +| b->yy_fill_buffer = 1; +| +| /* If b is the current buffer, then yy_init_buffer was _probably_ +| * called from yyrestart() or through yy_get_next_buffer. +| * In that case, we don't want to reset the lineno or column. +| */ +| if (b != YY_CURRENT_BUFFER){ +| b->yy_bs_lineno = 1; +| b->yy_bs_column = 0; +| } +| +| b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +| +| errno = oerrno; +| } +| +| /** Discard all buffered characters. On the next scan, YY_INPUT will be called. +| * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. +| * +| */ +| void yy_flush_buffer (YY_BUFFER_STATE b ) +| { +| if ( ! b ) +| return; +| +| b->yy_n_chars = 0; +| +| /* We always need two end-of-buffer characters. The first causes +| * a transition to the end-of-buffer state. The second causes +| * a jam in that state. +| */ +| b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; +| b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; +| +| b->yy_buf_pos = &b->yy_ch_buf[0]; +| +| b->yy_at_bol = 1; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| if ( b == YY_CURRENT_BUFFER ) +| yy_load_buffer_state( ); +| } +| +| /** Pushes the new state onto the stack. The new state becomes +| * the current state. This function will allocate the stack +| * if necessary. +| * @param new_buffer The new state. +| * +| */ +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +| { +| if (new_buffer == NULL) +| return; +| +| yyensure_buffer_stack(); +| +| /* This block is copied from yy_switch_to_buffer. */ +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| /* Only push if top exists. Otherwise, replace top. */ +| if (YY_CURRENT_BUFFER) +| (yy_buffer_stack_top)++; +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| +| /* copied from yy_switch_to_buffer. */ +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| /** Removes and deletes the top of the stack, if present. +| * The next element becomes the new top. +| * +| */ +| void yypop_buffer_state (void) +| { +| if (!YY_CURRENT_BUFFER) +| return; +| +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| if ((yy_buffer_stack_top) > 0) +| --(yy_buffer_stack_top); +| +| if (YY_CURRENT_BUFFER) { +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| } +| +| /* Allocates the stack if it does not exist. +| * Guarantees space for at least one push. +| */ +| static void yyensure_buffer_stack (void) +| { +| int num_to_alloc; +| +| if (!(yy_buffer_stack)) { +| +| /* First allocation is just for 2 elements, since we don't know if this +| * scanner will even need a stack. We use 2 instead of 1 to avoid an +| * immediate realloc on the next call. +| */ +| num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ +| (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc +| (num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); +| +| (yy_buffer_stack_max) = num_to_alloc; +| (yy_buffer_stack_top) = 0; +| return; +| } +| +| if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ +| +| /* Increase the buffer to prepare for a possible push. */ +| yy_size_t grow_size = 8 /* arbitrary grow size */; +| +| num_to_alloc = (yy_buffer_stack_max) + grow_size; +| (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc +| ((yy_buffer_stack), +| num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| /* zero only the new slots.*/ +| memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +| (yy_buffer_stack_max) = num_to_alloc; +| } +| } +| +| /** Setup the input buffer state to scan directly from a user-specified character buffer. +| * @param base the character buffer +| * @param size the size in bytes of the character buffer +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +| { +| YY_BUFFER_STATE b; +| +| if ( size < 2 || +| base[size-2] != YY_END_OF_BUFFER_CHAR || +| base[size-1] != YY_END_OF_BUFFER_CHAR ) +| /* They forgot to leave room for the EOB's. */ +| return NULL; +| +| b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); +| +| b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ +| b->yy_buf_pos = b->yy_ch_buf = base; +| b->yy_is_our_buffer = 0; +| b->yy_input_file = NULL; +| b->yy_n_chars = b->yy_buf_size; +| b->yy_is_interactive = 0; +| b->yy_at_bol = 1; +| b->yy_fill_buffer = 0; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| yy_switch_to_buffer(b ); +| +| return b; +| } +| +| /** Setup the input buffer state to scan a string. The next call to yylex() will +| * scan from a @e copy of @a str. +| * @param yystr a NUL-terminated string to scan +| * +| * @return the newly allocated buffer state object. +| * @note If you want to scan bytes that may contain NUL values, then use +| * yy_scan_bytes() instead. +| */ +| YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +| { +| +| return yy_scan_bytes(yystr,(int) strlen(yystr) ); +| } +| +| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will +| * scan from a @e copy of @a bytes. +| * @param yybytes the byte buffer to scan +| * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +| { +| YY_BUFFER_STATE b; +| char *buf; +| yy_size_t n; +| int i; +| +| /* Get memory for full buffer, including space for trailing EOB's. */ +| n = (yy_size_t) (_yybytes_len + 2); +| buf = (char *) yyalloc(n ); +| if ( ! buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); +| +| for ( i = 0; i < _yybytes_len; ++i ) +| buf[i] = yybytes[i]; +| +| buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; +| +| b = yy_scan_buffer(buf,n ); +| if ( ! b ) +| YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); +| +| /* It's okay to grow etc. this buffer, and we should throw it +| * away when we're done. +| */ +| b->yy_is_our_buffer = 1; +| +| return b; +| } +| +| #ifndef YY_EXIT_FAILURE +| #define YY_EXIT_FAILURE 2 +| #endif +| +| static void yynoreturn yy_fatal_error (yyconst char* msg ) +| { +| (void) fprintf( stderr, "%s\n", msg ); +| exit( YY_EXIT_FAILURE ); +| } +| +| /* Redefine yyless() so it works in section 3 code. */ +| +| #undef yyless +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| yytext[yyleng] = (yy_hold_char); \ +| (yy_c_buf_p) = yytext + yyless_macro_arg; \ +| (yy_hold_char) = *(yy_c_buf_p); \ +| *(yy_c_buf_p) = '\0'; \ +| yyleng = yyless_macro_arg; \ +| } \ +| while ( 0 ) +| +| /* Accessor methods (get/set functions) to struct members. */ +| +| /** Get the current line number. +| * +| */ +| int yyget_lineno (void) +| { +| +| return yylineno; +| } +| +| /** Get the input stream. +| * +| */ +| FILE *yyget_in (void) +| { +| return yyin; +| } +| +| /** Get the output stream. +| * +| */ +| FILE *yyget_out (void) +| { +| return yyout; +| } +| +| /** Get the length of the current token. +| * +| */ +| int yyget_leng (void) +| { +| return yyleng; +| } +| +| /** Get the current token. +| * +| */ +| +| char *yyget_text (void) +| { +| return yytext; +| } +| +| /** Set the current line number. +| * @param _line_number line number +| * +| */ +| void yyset_lineno (int _line_number ) +| { +| +| yylineno = _line_number; +| } +| +| /** Set the input stream. This does not discard the current +| * input buffer. +| * @param _in_str A readable stream. +| * +| * @see yy_switch_to_buffer +| */ +| void yyset_in (FILE * _in_str ) +| { +| yyin = _in_str ; +| } +| +| void yyset_out (FILE * _out_str ) +| { +| yyout = _out_str ; +| } +| +| int yyget_debug (void) +| { +| return yy_flex_debug; +| } +| +| void yyset_debug (int _bdebug ) +| { +| yy_flex_debug = _bdebug ; +| } +| +| static int yy_init_globals (void) +| { +| /* Initialization is the same as for the non-reentrant scanner. +| * This function is called from yylex_destroy(), so don't allocate here. +| */ +| +| (yy_buffer_stack) = NULL; +| (yy_buffer_stack_top) = 0; +| (yy_buffer_stack_max) = 0; +| (yy_c_buf_p) = NULL; +| (yy_init) = 0; +| (yy_start) = 0; +| +| (yy_state_buf) = 0; +| (yy_state_ptr) = 0; +| (yy_full_match) = 0; +| (yy_lp) = 0; +| +| /* Defined in main.c */ +| #ifdef YY_STDINIT +| yyin = stdin; +| yyout = stdout; +| #else +| yyin = NULL; +| yyout = NULL; +| #endif +| +| /* For future reference: Set errno on error, since we are called by +| * yylex_init() +| */ +| return 0; +| } +| +| /* yylex_destroy is for both reentrant and non-reentrant scanners. */ +| int yylex_destroy (void) +| { +| +| /* Pop the buffer stack, destroying each element. */ +| while(YY_CURRENT_BUFFER){ +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| yypop_buffer_state(); +| } +| +| /* Destroy the stack itself. */ +| yyfree((yy_buffer_stack) ); +| (yy_buffer_stack) = NULL; +| +| yyfree ( (yy_state_buf) ); +| (yy_state_buf) = NULL; +| +| /* Reset the globals. This is important in a non-reentrant scanner so the next time +| * yylex() is called, initialization will occur. */ +| yy_init_globals( ); +| +| return 0; +| } +| +| /* +| * Internal utility routines. +| */ +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +| { +| +| int i; +| for ( i = 0; i < n; ++i ) +| s1[i] = s2[i]; +| } +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (yyconst char * s ) +| { +| int n; +| for ( n = 0; s[n]; ++n ) +| ; +| +| return n; +| } +| #endif +| +| void *yyalloc (yy_size_t size ) +| { +| return malloc(size); +| } +| +| void *yyrealloc (void * ptr, yy_size_t size ) +| { +| +| /* The cast to (char *) in the following accommodates both +| * implementations that use char* generic pointers, and those +| * that use void* generic pointers. It works with the latter +| * because both ANSI C and C++ allow castless assignment from +| * any pointer type to void*, and deal with argument conversions +| * as though doing an assignment. +| */ +| return realloc(ptr, size); +| } +| +| void yyfree (void * ptr ) +| { +| free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +| } +| +| #define YYTABLES_NAME "yytables" +| +| #line 10 "conftest.l" +| +| +| #ifdef YYTEXT_POINTER +| extern char *yytext; +| #endif +| int +| main (void) +| { +| return ! yylex () + ! yywrap (); +| } +configure:7135: result: no +configure:7153: checking for capable lex +configure:7164: result: yes +configure:7178: checking for bison +configure:7194: found /usr/bin/bison +configure:7205: result: bison -y +configure:7222: checking for capable yacc/bison +configure:7233: result: yes +configure:7525: checking for arm-linux-ranlib +configure:7555: result: no +configure:7565: checking for ranlib +configure:7581: found /usr/bin/ranlib +configure:7592: result: ranlib +configure:7604: WARNING: using cross tools not prefixed with host triplet +configure:7617: checking for arm-linux-ar +configure:7647: result: no +configure:7657: checking for ar +configure:7673: found /usr/bin/ar +configure:7684: result: ar +configure:7707: checking whether ln -s works +configure:7711: result: yes +configure:8187: checking if sockaddr struct has the sa_len member +configure:8205: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:53:40: error: 'struct sockaddr' has no member named 'sa_len' + u_int i = sizeof(((struct sockaddr *)0)->sa_len) + ^~ +configure:8205: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| /* end confdefs.h. */ +| +| # include +| # include +| int +| main () +| { +| u_int i = sizeof(((struct sockaddr *)0)->sa_len) +| ; +| return 0; +| } +configure:8213: result: no +configure:8221: checking if sockaddr_storage struct exists +configure:8239: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8239: $? = 0 +configure:8247: result: yes +configure:8255: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member +configure:8274: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:50:11: fatal error: sys/dlpi.h: No such file or directory + # include + ^~~~~~~~~~~~ +compilation terminated. +configure:8274: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| #define HAVE_SOCKADDR_STORAGE 1 +| /* end confdefs.h. */ +| +| # include +| # include +| # include +| int +| main () +| { +| u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1) +| ; +| return 0; +| } +configure:8282: result: no +configure:8290: checking if unaligned accesses fail +configure:8377: result: yes +configure:8421: checking for USB sniffing support +configure:8429: result: yes +configure:8440: Device for USB sniffing is /dev/usbmon +configure:8448: checking linux/compiler.h usability +configure:8448: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +conftest.c:84:10: fatal error: linux/compiler.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:8448: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| #define HAVE_SOCKADDR_STORAGE 1 +| #define LBL_ALIGN 1 +| #define PCAP_SUPPORT_USB 1 +| #define LINUX_USB_MON_DEV "/dev/usbmon" +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:8448: result: no +configure:8448: checking linux/compiler.h presence +configure:8448: arm-linux-gnueabi-gcc -E conftest.c +conftest.c:51:10: fatal error: linux/compiler.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:8448: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| #define HAVE_SOCKADDR_STORAGE 1 +| #define LBL_ALIGN 1 +| #define PCAP_SUPPORT_USB 1 +| #define LINUX_USB_MON_DEV "/dev/usbmon" +| /* end confdefs.h. */ +| #include +configure:8448: result: no +configure:8448: checking for linux/compiler.h +configure:8448: result: no +configure:8478: checking linux/usbdevice_fs.h usability +configure:8478: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8478: $? = 0 +configure:8478: result: yes +configure:8478: checking linux/usbdevice_fs.h presence +configure:8478: arm-linux-gnueabi-gcc -E conftest.c +configure:8478: $? = 0 +configure:8478: result: yes +configure:8478: checking for linux/usbdevice_fs.h +configure:8478: result: yes +configure:8496: checking if usbdevfs_ctrltransfer struct has bRequestType member +configure:8520: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8520: $? = 0 +configure:8528: result: yes +configure:8556: checking whether the platform could support netfilter sniffing +configure:8560: result: yes +configure:8570: checking whether we can compile the netfilter support +configure:8596: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8596: $? = 0 +configure:8604: result: yes +configure:8639: checking bluetooth/bluetooth.h usability +configure:8639: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8639: $? = 0 +configure:8639: result: yes +configure:8639: checking bluetooth/bluetooth.h presence +configure:8639: arm-linux-gnueabi-gcc -E conftest.c +configure:8639: $? = 0 +configure:8639: result: yes +configure:8639: checking for bluetooth/bluetooth.h +configure:8639: result: yes +configure:8646: Bluetooth sniffing is supported +configure:8653: checking if struct sockaddr_hci has hci_channel member +configure:8672: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8672: $? = 0 +configure:8680: result: yes +configure:8690: checking if HCI_CHANNEL_MONITOR is defined +configure:8709: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8709: $? = 0 +configure:8717: result: yes +configure:8806: checking for pkg-config +configure:8822: found /usr/bin/pkg-config +configure:8834: result: pkg-config +configure:8843: checking for D-Bus +configure:8846: result: yes +configure:8854: checking whether the D-Bus library defines dbus_connection_read_write +configure:8872: arm-linux-gnueabi-gcc -o conftest -g -O2 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include conftest.c -ldbus-1 >&5 +/usr/lib/gcc-cross/arm-linux-gnueabi/7/../../../../arm-linux-gnueabi/bin/ld: cannot find -ldbus-1 +collect2: error: ld returned 1 exit status +configure:8872: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define inline inline +| #define HAVE___ATTRIBUTE__ 1 +| #define __ATTRIBUTE___FORMAT_OK 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_BITYPES_H 1 +| #define _FILE_OFFSET_BITS 64 +| #define HAVE_FSEEKO 1 +| #define HAVE_SYS_SELECT_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_LINUX_TYPES_H 1 +| #define HAVE_LINUX_IF_PACKET_H 1 +| #define HAVE_NETPACKET_PACKET_H 1 +| #define HAVE_NETINET_IF_ETHER_H 1 +| #define HAVE_LINUX_SOCKIOS_H 1 +| #define HAVE_LINUX_IF_BONDING_H 1 +| #define HAVE_STRERROR 1 +| #define HAVE_VSNPRINTF 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_STRTOK_R 1 +| #define HAVE_ETHER_HOSTTON 1 +| #define HAVE_NETINET_ETHER_H 1 +| #define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +| #define HAVE_DECL_ETHER_HOSTTON 1 +| #define HAVE_LINUX_WIRELESS_H 1 +| #define HAVE_LINUX_ETHTOOL_H 1 +| #define HAVE_TPACKET_STATS 1 +| #define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +| #define HAVE_SOCKLEN_T 1 +| #define INET6 1 +| #define HAVE_SOCKADDR_STORAGE 1 +| #define LBL_ALIGN 1 +| #define PCAP_SUPPORT_USB 1 +| #define LINUX_USB_MON_DEV "/dev/usbmon" +| #define HAVE_LINUX_USBDEVICE_FS_H 1 +| #define HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1 +| #define PCAP_SUPPORT_NETFILTER 1 +| #define PCAP_SUPPORT_BT 1 +| #define SOCKADDR_HCI_HAS_HCI_CHANNEL /**/ +| #define PCAP_SUPPORT_BT_MONITOR /**/ +| /* end confdefs.h. */ +| #include +| +| #include +| #include +| +| #include +| int +| main () +| { +| return dbus_connection_read_write(NULL, 0); +| ; +| return 0; +| } +configure:8884: result: no +configure:8911: checking linux/net_tstamp.h usability +configure:8911: arm-linux-gnueabi-gcc -c -g -O2 conftest.c >&5 +configure:8911: $? = 0 +configure:8911: result: yes +configure:8911: checking linux/net_tstamp.h presence +configure:8911: arm-linux-gnueabi-gcc -E conftest.c +configure:8911: $? = 0 +configure:8911: result: yes +configure:8911: checking for linux/net_tstamp.h +configure:8911: result: yes +configure:8957: checking for a BSD-compatible install +configure:9025: result: /usr/bin/install -c +configure:9158: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on shiva + +config.status:920: creating Makefile +config.status:920: creating pcap-filter.manmisc +config.status:920: creating pcap-linktype.manmisc +config.status:920: creating pcap-tstamp.manmisc +config.status:920: creating pcap-savefile.manfile +config.status:920: creating pcap.3pcap +config.status:920: creating pcap_compile.3pcap +config.status:920: creating pcap_datalink.3pcap +config.status:920: creating pcap_dump_open.3pcap +config.status:920: creating pcap_get_tstamp_precision.3pcap +config.status:920: creating pcap_list_datalinks.3pcap +config.status:920: creating pcap_list_tstamp_types.3pcap +config.status:920: creating pcap_open_dead.3pcap +config.status:920: creating pcap_open_offline.3pcap +config.status:920: creating pcap_set_tstamp_precision.3pcap +config.status:920: creating pcap_set_tstamp_type.3pcap +config.status:920: creating config.h +config.status:1109: executing default-1 commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv___attribute__=yes +ac_cv___attribute___format=yes +ac_cv___attribute___unused=yes +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set=set +ac_cv_env_CC_value=arm-linux-gnueabi-gcc +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_YACC_set= +ac_cv_env_YACC_value= +ac_cv_env_YFLAGS_set= +ac_cv_env_YFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set=set +ac_cv_env_host_alias_value=arm-linux +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func_ether_hostton=yes +ac_cv_func_getaddrinfo=yes +ac_cv_func_getifaddrs=yes +ac_cv_func_snprintf=yes +ac_cv_func_strerror=yes +ac_cv_func_strlcpy=no +ac_cv_func_strtok_r=yes +ac_cv_func_vsnprintf=yes +ac_cv_have_decl_ether_hostton=yes +ac_cv_header_bluetooth_bluetooth_h=yes +ac_cv_header_ifaddrs_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_limits_h=yes +ac_cv_header_linux_compiler_h=no +ac_cv_header_linux_ethtool_h=yes +ac_cv_header_linux_if_bonding_h=yes +ac_cv_header_linux_if_packet_h=yes +ac_cv_header_linux_net_tstamp_h=yes +ac_cv_header_linux_sockios_h=yes +ac_cv_header_linux_types_h=yes +ac_cv_header_linux_usbdevice_fs_h=yes +ac_cv_header_linux_wireless_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_net_pfvar_h=no +ac_cv_header_netinet_ether_h=yes +ac_cv_header_netinet_if_ether_h=yes +ac_cv_header_netpacket_if_packet_h=no +ac_cv_header_netpacket_packet_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_bitypes_h=yes +ac_cv_header_sys_ioccom_h=no +ac_cv_header_sys_select_h=yes +ac_cv_header_sys_sockio_h=no +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=arm-unknown-linux-gnu +ac_cv_lbl_dag_api=no +ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no +ac_cv_lbl_gcc_fixincludes=yes +ac_cv_lbl_has_sockaddr_storage=yes +ac_cv_lbl_hci_channel_monitor_is_defined=yes +ac_cv_lbl_inline=inline +ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=yes +ac_cv_lbl_septel_api=no +ac_cv_lbl_snf_api=no +ac_cv_lbl_sockaddr_has_sa_len=no +ac_cv_lbl_sockaddr_hci_has_hci_channel=yes +ac_cv_lbl_tpacket_stats=yes +ac_cv_lbl_turbocap_api=no +ac_cv_lbl_unaligned_fail=yes +ac_cv_lib_lex='none needed' +ac_cv_lib_nl_3_nl_socket_alloc=no +ac_cv_lib_nl_nl_handle_alloc=no +ac_cv_lib_nl_nl_socket_alloc=no +ac_cv_netfilter_can_compile=yes +ac_cv_objext=o +ac_cv_path_EGREP='/bin/grep -E' +ac_cv_path_GREP=/bin/grep +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_CC=arm-linux-gnueabi-gcc +ac_cv_prog_CPP='arm-linux-gnueabi-gcc -E' +ac_cv_prog_LEX=flex +ac_cv_prog_PKGCONFIG=pkg-config +ac_cv_prog_YACC='bison -y' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_lex_root=lex.yy +ac_cv_prog_lex_yytext_pointer=no +ac_cv_search_gethostbyname='none required' +ac_cv_search_putmsg='none required' +ac_cv_search_socket='none required' +ac_cv_sys_file_offset_bits=64 +ac_cv_sys_largefile_CC=no +ac_cv_sys_largefile_source=no +ac_cv_target=arm-unknown-linux-gnu +ac_cv_type_int16_t=yes +ac_cv_type_int32_t=yes +ac_cv_type_int64_t=yes +ac_cv_type_int8_t=yes +ac_cv_type_u_int16_t=yes +ac_cv_type_u_int32_t=yes +ac_cv_type_u_int64_t=yes +ac_cv_type_u_int8_t=yes +ac_cv_usbdevfs_ctrltransfer_has_bRequestType=yes +tcpdump_cv_capable_lex=yes +tcpdump_cv_capable_yacc=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ADDLARCHIVEOBJS='' +ADDLOBJS='' +AR='ar' +BT_MONITOR_SRC='pcap-bt-monitor-linux.c' +BT_SRC='pcap-bt-linux.c' +CC='arm-linux-gnueabi-gcc' +CFLAGS='-g -O2' +CPP='arm-linux-gnueabi-gcc -E' +CPPFLAGS='' +DBUS_SRC='' +DEFS='-DHAVE_CONFIG_H' +DEPENDENCY_CFLAG='' +DYEXT='so' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/bin/grep -E' +EXEEXT='' +GREP='/bin/grep' +HAVE_LINUX_TPACKET_AUXDATA='tp_vlan_tci' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +LDFLAGS='' +LEX='flex' +LEXLIB='' +LEX_OUTPUT_ROOT='lex.yy' +LIBOBJS='' +LIBS='' +LN_S='ln -s' +LTLIBOBJS='' +MAN_FILE_FORMATS='5' +MAN_MISC_INFO='7' +MKDEP='' +NETFILTER_SRC='pcap-netfilter-linux.c' +OBJEXT='o' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_URL='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +PCAP_SUPPORT_BT='' +PCAP_SUPPORT_DBUS='' +PCAP_SUPPORT_NETFILTER='' +PCAP_SUPPORT_PACKET_RING='' +PCAP_SUPPORT_USB='' +PKGCONFIG='pkg-config' +RANLIB='ranlib' +SHELL='/bin/bash' +SHLICC2='' +SSRC='' +USB_SRC='pcap-usb-linux.c' +VALGRINDTEST='' +V_CCOPT=' -fvisibility=hidden -fpic' +V_DEFS=' -D_U_="__attribute__((unused))"' +V_FINDALLDEVS='fad-getad.c' +V_INCLS='' +V_LEX='' +V_PCAP='linux' +V_RPATH_OPT='-Wl,-rpath,' +V_SHLIB_CMD='$(CC)' +V_SHLIB_OPT='-shared' +V_SONAME_OPT='-Wl,-soname,' +V_YACC='' +YACC='bison -y' +YFLAGS='' +ac_ct_CC='' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='arm-unknown-linux-gnu' +host_alias='arm-linux' +host_cpu='arm' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='arm-unknown-linux-gnu' +target_alias='' +target_cpu='arm' +target_os='linux-gnu' +target_vendor='unknown' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PACKAGE_STRING "" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define inline inline +#define HAVE___ATTRIBUTE__ 1 +#define __ATTRIBUTE___FORMAT_OK 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_BITYPES_H 1 +#define _FILE_OFFSET_BITS 64 +#define HAVE_FSEEKO 1 +#define HAVE_SYS_SELECT_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LINUX_TYPES_H 1 +#define HAVE_LINUX_IF_PACKET_H 1 +#define HAVE_NETPACKET_PACKET_H 1 +#define HAVE_NETINET_IF_ETHER_H 1 +#define HAVE_LINUX_SOCKIOS_H 1 +#define HAVE_LINUX_IF_BONDING_H 1 +#define HAVE_STRERROR 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_STRTOK_R 1 +#define HAVE_ETHER_HOSTTON 1 +#define HAVE_NETINET_ETHER_H 1 +#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/ +#define HAVE_DECL_ETHER_HOSTTON 1 +#define HAVE_LINUX_WIRELESS_H 1 +#define HAVE_LINUX_ETHTOOL_H 1 +#define HAVE_TPACKET_STATS 1 +#define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1 +#define HAVE_SOCKLEN_T 1 +#define INET6 1 +#define HAVE_SOCKADDR_STORAGE 1 +#define LBL_ALIGN 1 +#define PCAP_SUPPORT_USB 1 +#define LINUX_USB_MON_DEV "/dev/usbmon" +#define HAVE_LINUX_USBDEVICE_FS_H 1 +#define HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1 +#define PCAP_SUPPORT_NETFILTER 1 +#define PCAP_SUPPORT_BT 1 +#define SOCKADDR_HCI_HAS_HCI_CHANNEL /**/ +#define PCAP_SUPPORT_BT_MONITOR /**/ +#define HAVE_LINUX_NET_TSTAMP_H 1 +#define PCAP_SUPPORT_PACKET_RING 1 + +configure: exit 0 + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status --file=pcap-config.tmp:./pcap-config.in + +on shiva + +config.status:920: creating pcap-config.tmp diff --git a/libpcap-1.8.1/config.status b/libpcap-1.8.1/config.status new file mode 100755 index 00000000..31815197 --- /dev/null +++ b/libpcap-1.8.1/config.status @@ -0,0 +1,1126 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile pcap-filter.manmisc pcap-linktype.manmisc pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap pcap_get_tstamp_precision.3pcap pcap_list_datalinks.3pcap pcap_list_tstamp_types.3pcap pcap_open_dead.3pcap pcap_open_offline.3pcap pcap_set_tstamp_precision.3pcap pcap_set_tstamp_type.3pcap" +config_headers=" config.h" +config_commands=" default-1" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +ac_cs_config="'--host=arm-linux' '--with-pcap=linux' 'host_alias=arm-linux' 'CC=arm-linux-gnueabi-gcc'" +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/evilsocket/gocode/src/github.com/evilsocket/bettercap-ng/libpcap-1.8.1' +srcdir='.' +INSTALL='/usr/bin/install -c' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' '--host=arm-linux' '--with-pcap=linux' 'host_alias=arm-linux' 'CC=arm-linux-gnueabi-gcc' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "pcap-filter.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-filter.manmisc" ;; + "pcap-linktype.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-linktype.manmisc" ;; + "pcap-tstamp.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-tstamp.manmisc" ;; + "pcap-savefile.manfile") CONFIG_FILES="$CONFIG_FILES pcap-savefile.manfile" ;; + "pcap.3pcap") CONFIG_FILES="$CONFIG_FILES pcap.3pcap" ;; + "pcap_compile.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_compile.3pcap" ;; + "pcap_datalink.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_datalink.3pcap" ;; + "pcap_dump_open.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_dump_open.3pcap" ;; + "pcap_get_tstamp_precision.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_get_tstamp_precision.3pcap" ;; + "pcap_list_datalinks.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_list_datalinks.3pcap" ;; + "pcap_list_tstamp_types.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_list_tstamp_types.3pcap" ;; + "pcap_open_dead.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_open_dead.3pcap" ;; + "pcap_open_offline.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_open_offline.3pcap" ;; + "pcap_set_tstamp_precision.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_set_tstamp_precision.3pcap" ;; + "pcap_set_tstamp_type.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_set_tstamp_type.3pcap" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["PCAP_SUPPORT_PACKET_RING"]="" +S["DBUS_SRC"]="" +S["PCAP_SUPPORT_DBUS"]="" +S["PKGCONFIG"]="pkg-config" +S["BT_MONITOR_SRC"]="pcap-bt-monitor-linux.c" +S["BT_SRC"]="pcap-bt-linux.c" +S["PCAP_SUPPORT_BT"]="" +S["NETFILTER_SRC"]="pcap-netfilter-linux.c" +S["PCAP_SUPPORT_NETFILTER"]="" +S["USB_SRC"]="pcap-usb-linux.c" +S["PCAP_SUPPORT_USB"]="" +S["MAN_MISC_INFO"]="7" +S["MAN_FILE_FORMATS"]="5" +S["DYEXT"]="so" +S["SSRC"]="" +S["ADDLARCHIVEOBJS"]="" +S["ADDLOBJS"]="" +S["V_YACC"]="" +S["V_RPATH_OPT"]="-Wl,-rpath," +S["V_SONAME_OPT"]="-Wl,-soname," +S["V_SHLIB_OPT"]="-shared" +S["V_SHLIB_CMD"]="$(CC)" +S["V_PCAP"]="linux" +S["V_LEX"]="" +S["V_INCLS"]="" +S["V_FINDALLDEVS"]="fad-getad.c" +S["V_DEFS"]=" -D_U_=\"__attribute__((unused))\"" +S["V_CCOPT"]=" -fvisibility=hidden -fpic" +S["MKDEP"]="" +S["DEPENDENCY_CFLAG"]="" +S["LN_S"]="ln -s" +S["AR"]="ar" +S["RANLIB"]="ranlib" +S["YFLAGS"]="" +S["YACC"]="bison -y" +S["LEXLIB"]="" +S["LEX_OUTPUT_ROOT"]="lex.yy" +S["LEX"]="flex" +S["HAVE_LINUX_TPACKET_AUXDATA"]="tp_vlan_tci" +S["VALGRINDTEST"]="" +S["LIBOBJS"]="" +S["EGREP"]="/bin/grep -E" +S["GREP"]="/bin/grep" +S["CPP"]="arm-linux-gnueabi-gcc -E" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2" +S["CC"]="arm-linux-gnueabi-gcc" +S["SHLICC2"]="" +S["target_os"]="linux-gnu" +S["target_vendor"]="unknown" +S["target_cpu"]="arm" +S["target"]="arm-unknown-linux-gnu" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="arm" +S["host"]="arm-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["target_alias"]="" +S["host_alias"]="arm-linux" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="" +S["PACKAGE_STRING"]="" +S["PACKAGE_VERSION"]="" +S["PACKAGE_TARNAME"]="" +S["PACKAGE_NAME"]="" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"\"" +D["PACKAGE_TARNAME"]=" \"\"" +D["PACKAGE_VERSION"]=" \"\"" +D["PACKAGE_STRING"]=" \"\"" +D["PACKAGE_BUGREPORT"]=" \"\"" +D["PACKAGE_URL"]=" \"\"" +D["inline"]=" inline" +D["HAVE___ATTRIBUTE__"]=" 1" +D["__ATTRIBUTE___FORMAT_OK"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_BITYPES_H"]=" 1" +D["_FILE_OFFSET_BITS"]=" 64" +D["HAVE_FSEEKO"]=" 1" +D["HAVE_SYS_SELECT_H"]=" 1" +D["HAVE_LIMITS_H"]=" 1" +D["HAVE_LINUX_TYPES_H"]=" 1" +D["HAVE_LINUX_IF_PACKET_H"]=" 1" +D["HAVE_NETPACKET_PACKET_H"]=" 1" +D["HAVE_NETINET_IF_ETHER_H"]=" 1" +D["HAVE_LINUX_SOCKIOS_H"]=" 1" +D["HAVE_LINUX_IF_BONDING_H"]=" 1" +D["HAVE_STRERROR"]=" 1" +D["HAVE_VSNPRINTF"]=" 1" +D["HAVE_SNPRINTF"]=" 1" +D["HAVE_STRTOK_R"]=" 1" +D["HAVE_ETHER_HOSTTON"]=" 1" +D["HAVE_NETINET_ETHER_H"]=" 1" +D["NETINET_ETHER_H_DECLARES_ETHER_HOSTTON"]=" /**/" +D["HAVE_DECL_ETHER_HOSTTON"]=" 1" +D["HAVE_LINUX_WIRELESS_H"]=" 1" +D["HAVE_LINUX_ETHTOOL_H"]=" 1" +D["HAVE_TPACKET_STATS"]=" 1" +D["HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI"]=" 1" +D["HAVE_SOCKLEN_T"]=" 1" +D["INET6"]=" 1" +D["HAVE_SOCKADDR_STORAGE"]=" 1" +D["LBL_ALIGN"]=" 1" +D["PCAP_SUPPORT_USB"]=" 1" +D["LINUX_USB_MON_DEV"]=" \"/dev/usbmon\"" +D["HAVE_LINUX_USBDEVICE_FS_H"]=" 1" +D["HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE"]=" 1" +D["PCAP_SUPPORT_NETFILTER"]=" 1" +D["PCAP_SUPPORT_BT"]=" 1" +D["SOCKADDR_HCI_HAS_HCI_CHANNEL"]=" /**/" +D["PCAP_SUPPORT_BT_MONITOR"]=" /**/" +D["HAVE_LINUX_NET_TSTAMP_H"]=" 1" +D["PCAP_SUPPORT_PACKET_RING"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default-1":C) if test -f .devel; then + echo timestamp > stamp-h + cat Makefile-devel-adds >> Makefile + make depend +fi ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/libpcap-1.8.1/config.sub b/libpcap-1.8.1/config.sub new file mode 100644 index 00000000..bc855a2a --- /dev/null +++ b/libpcap-1.8.1/config.sub @@ -0,0 +1,1807 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-02-22' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libpcap-1.8.1/config/have_siocglifconf.c b/libpcap-1.8.1/config/have_siocglifconf.c new file mode 100644 index 00000000..5a67abc1 --- /dev/null +++ b/libpcap-1.8.1/config/have_siocglifconf.c @@ -0,0 +1,6 @@ +#include +#include +#include +int main() { + ioctl(0, SIOCGLIFCONF, (char *)0); +} diff --git a/libpcap-1.8.1/configure b/libpcap-1.8.1/configure new file mode 100755 index 00000000..4c64875e --- /dev/null +++ b/libpcap-1.8.1/configure @@ -0,0 +1,10359 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= +PACKAGE_URL= + +ac_unique_file="pcap.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +PCAP_SUPPORT_PACKET_RING +DBUS_SRC +PCAP_SUPPORT_DBUS +PKGCONFIG +BT_MONITOR_SRC +BT_SRC +PCAP_SUPPORT_BT +NETFILTER_SRC +PCAP_SUPPORT_NETFILTER +USB_SRC +PCAP_SUPPORT_USB +MAN_MISC_INFO +MAN_FILE_FORMATS +DYEXT +SSRC +ADDLARCHIVEOBJS +ADDLOBJS +V_YACC +V_RPATH_OPT +V_SONAME_OPT +V_SHLIB_OPT +V_SHLIB_CMD +V_PCAP +V_LEX +V_INCLS +V_FINDALLDEVS +V_DEFS +V_CCOPT +MKDEP +DEPENDENCY_CFLAG +LN_S +AR +RANLIB +YFLAGS +YACC +LEXLIB +LEX_OUTPUT_ROOT +LEX +HAVE_LINUX_TPACKET_AUXDATA +VALGRINDTEST +LIBOBJS +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +SHLICC2 +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_gcc +enable_largefile +enable_protochain +with_sita +with_pcap +with_libnl +enable_ipv6 +enable_optimizer_dbg +enable_yydebug +with_dag +with_dag_includes +with_dag_libraries +with_septel +with_snf +with_snf_includes +with_snf_libraries +with_turbocap +enable_universal +enable_shared +enable_usb +enable_bluetooth +enable_dbus +enable_packet_ring +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +YACC +YFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-largefile omit support for large files + --disable-protochain disable \"protochain\" insn + --enable-ipv6 build IPv6-capable version [default=yes, if + getaddrinfo available] + --enable-optimizer-dbg build optimizer debugging code + --enable-yydebug build parser debugging code + --disable-universal don't build universal on OS X + --enable-shared build shared libraries [default=yes, if support + available] + --enable-usb enable nusb support [default=yes, if support + available] + --enable-bluetooth enable Bluetooth support [default=yes, if support + available] + --enable-dbus enable D-Bus capture support [default=yes, if + support available] + --enable-packet-ring enable Linux packet ring support [default=yes] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --without-gcc don't use gcc + --with-sita include SITA support + --with-pcap=TYPE use packet capture TYPE + --without-libnl disable libnl support [default=yes, on Linux, if + present] + --with-dag[=DIR] include Endace DAG support (located in directory + DIR, if supplied). [default=yes, if present] + --with-dag-includes=IDIR + Endace DAG include directory, if not DIR/include + --with-dag-libraries=LDIR + Endace DAG library directory, if not DIR/lib + --with-septel[=DIR] include Septel support (located in directory DIR, if + supplied). [default=yes, if present] + --with-snf[=DIR] include Myricom SNF support (located in directory + DIR, if supplied). [default=yes, if present] + --with-snf-includes=IDIR + Myricom SNF include directory, if not DIR/include + --with-snf-libraries=LDIR + Myricom SNF library directory, if not DIR/lib + --with-turbocap[=DIR] include Riverbed TurboCap support (located in + directory DIR, if supplied). [default=yes, if + present] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + + + + + + + +# Check whether --with-gcc was given. +if test "${with_gcc+set}" = set; then : + withval=$with_gcc; +fi + + V_CCOPT="" + if test "${srcdir}" != "." ; then + V_CCOPT="-I\$(srcdir)" + fi + if test "${CFLAGS+set}" = set; then + LBL_CFLAGS="$CFLAGS" + fi + if test -z "$CC" ; then + case "$host_os" in + + bsdi*) + # Extract the first word of "shlicc2", so it can be a program name with args. +set dummy shlicc2; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_SHLICC2+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$SHLICC2"; then + ac_cv_prog_SHLICC2="$SHLICC2" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_SHLICC2="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" +fi +fi +SHLICC2=$ac_cv_prog_SHLICC2 +if test -n "$SHLICC2"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLICC2" >&5 +$as_echo "$SHLICC2" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test $SHLICC2 = yes ; then + CC=shlicc2 + export CC + fi + ;; + esac + fi + if test -z "$CC" -a "$with_gcc" = no ; then + CC=cc + export CC + fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + if test "$GCC" = yes ; then + # + # -Werror forces warnings to be errors. + # + ac_lbl_cc_force_warning_errors=-Werror + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -fvisibility=hidden option" >&5 +$as_echo_n "checking whether the compiler supports the -fvisibility=hidden option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-fvisibility=hidden" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -fvisibility=hidden" + elif expr "x-fvisibility=hidden" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -fvisibility=hidden" + elif expr "x-fvisibility=hidden" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -fvisibility=hidden" + else + CFLAGS="$CFLAGS -fvisibility=hidden" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -fvisibility=hidden" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + else + V_INCLS="$V_INCLS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + + case "$host_os" in + + darwin*) + # + # This is assumed either to be GCC or clang, both + # of which use -Werror to force warnings to be errors. + # + ac_lbl_cc_force_warning_errors=-Werror + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -fvisibility=hidden option" >&5 +$as_echo_n "checking whether the compiler supports the -fvisibility=hidden option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-fvisibility=hidden" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -fvisibility=hidden" + elif expr "x-fvisibility=hidden" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -fvisibility=hidden" + elif expr "x-fvisibility=hidden" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -fvisibility=hidden" + else + CFLAGS="$CFLAGS -fvisibility=hidden" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -fvisibility=hidden" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ;; + + hpux*) + # + # HP C, which is what we presume we're using, doesn't + # exit with a non-zero exit status if we hand it an + # invalid -W flag, can't be forced to do so even with + # +We, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + ;; + + irix*) + # + # MIPS C, which is what we presume we're using, doesn't + # necessarily exit with a non-zero exit status if we + # hand it an invalid -W flag, can't be forced to do + # so, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + # + # It also, apparently, defaults to "char" being + # unsigned, unlike most other C implementations; + # I suppose we could say "signed char" whenever + # we want to guarantee a signed "char", but let's + # just force signed chars. + # + # -xansi is normally the default, but the + # configure script was setting it; perhaps -cckr + # was the default in the Old Days. (Then again, + # that would probably be for backwards compatibility + # in the days when ANSI C was Shiny and New, i.e. + # 1989 and the early '90's, so maybe we can just + # drop support for those compilers.) + # + # -g is equivalent to -g2, which turns off + # optimization; we choose -g3, which generates + # debugging information but doesn't turn off + # optimization (even if the optimization would + # cause inaccuracies in debugging). + # + V_CCOPT="$V_CCOPT -xansi -signed -g3" + ;; + + osf*) + # + # Presumed to be DEC OSF/1, Digital UNIX, or + # Tru64 UNIX. + # + # The DEC C compiler, which is what we presume we're + # using, doesn't exit with a non-zero exit status if we + # hand it an invalid -W flag, can't be forced to do + # so, and doesn't handle GCC-style -W flags, so we + # don't want to try using GCC-style -W flags. + # + ac_lbl_cc_dont_try_gcc_dashW=yes + # + # -g is equivalent to -g2, which turns off + # optimization; we choose -g3, which generates + # debugging information but doesn't turn off + # optimization (even if the optimization would + # cause inaccuracies in debugging). + # + V_CCOPT="$V_CCOPT -g3" + ;; + + solaris*) + # + # Assumed to be Sun C, which requires -errwarn to force + # warnings to be treated as errors. + # + ac_lbl_cc_force_warning_errors=-errwarn + + # + # Try to have the compiler default to hiding symbols, + # so that only symbols explicitly exported with + # PCAP_API will be visible outside (shared) libraries. + # + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -xldscope=hidden option" >&5 +$as_echo_n "checking whether the compiler supports the -xldscope=hidden option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-xldscope=hidden" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -xldscope=hidden" + elif expr "x-xldscope=hidden" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -xldscope=hidden" + elif expr "x-xldscope=hidden" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -xldscope=hidden" + else + CFLAGS="$CFLAGS -xldscope=hidden" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -xldscope=hidden" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ;; + + ultrix*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking that Ultrix $CC hacks const in prototypes" >&5 +$as_echo_n "checking that Ultrix $CC hacks const in prototypes... " >&6; } + if ${ac_cv_lbl_cc_const_proto+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +struct a { int b; }; + void c(const struct a *) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_cc_const_proto=yes +else + ac_cv_lbl_cc_const_proto=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_cc_const_proto" >&5 +$as_echo "$ac_cv_lbl_cc_const_proto" >&6; } + if test $ac_cv_lbl_cc_const_proto = no ; then + +$as_echo "#define const /**/" >>confdefs.h + + fi + ;; + esac + V_CCOPT="$V_CCOPT -O" + fi + + + if test "$GCC" = yes ; then + # + # On platforms where we build a shared library: + # + # add options to generate position-independent code, + # if necessary (it's the default in AIX and Darwin/OS X); + # + # define option to set the soname of the shared library, + # if the OS supports that; + # + # add options to specify, at link time, a directory to + # add to the run-time search path, if that's necessary. + # + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + case "$host_os" in + + aix*) + ;; + + freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*) + # + # Platforms where the linker is the GNU linker + # or accepts command-line arguments like + # those the GNU linker accepts. + # + # Some instruction sets require -fPIC on some + # operating systems. Check for them. If you + # have a combination that requires it, add it + # here. + # + PIC_OPT=-fpic + case "$host_cpu" in + + sparc64*) + case "$host_os" in + + freebsd*|openbsd*) + PIC_OPT=-fPIC + ;; + esac + ;; + esac + V_CCOPT="$V_CCOPT $PIC_OPT" + V_SONAME_OPT="-Wl,-soname," + V_RPATH_OPT="-Wl,-rpath," + ;; + + hpux*) + V_CCOPT="$V_CCOPT -fpic" + # + # XXX - this assumes GCC is using the HP linker, + # rather than the GNU linker, and that the "+h" + # option is used on all HP-UX platforms, both .sl + # and .so. + # + V_SONAME_OPT="-Wl,+h," + # + # By default, directories specifed with -L + # are added to the run-time search path, so + # we don't add them in pcap-config. + # + ;; + + solaris*) + V_CCOPT="$V_CCOPT -fpic" + # + # XXX - this assumes GCC is using the Sun linker, + # rather than the GNU linker. + # + V_SONAME_OPT="-Wl,-h," + V_RPATH_OPT="-Wl,-R," + ;; + esac + else + # + # Set the appropriate compiler flags and, on platforms + # where we build a shared library: + # + # add options to generate position-independent code, + # if necessary (it's the default in Darwin/OS X); + # + # if we generate ".so" shared libraries, define the + # appropriate options for building the shared library; + # + # add options to specify, at link time, a directory to + # add to the run-time search path, if that's necessary. + # + # Note: spaces after V_SONAME_OPT are significant; on + # some platforms the soname is passed with a GCC-like + # "-Wl,-soname,{soname}" option, with the soname part + # of the option, while on other platforms the C compiler + # driver takes it as a regular option with the soname + # following the option. The same applies to V_RPATH_OPT. + # + case "$host_os" in + + aix*) + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-G -bnoentry -bexpall" + ;; + + freebsd*|netbsd*|openbsd*|dragonfly*|linux*) + # + # "cc" is GCC. + # + V_CCOPT="$V_CCOPT -fpic" + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + V_SONAME_OPT="-Wl,-soname," + V_RPATH_OPT="-Wl,-rpath," + ;; + + hpux*) + V_CCOPT="$V_CCOPT +z" + V_SHLIB_CMD="\$(LD)" + V_SHLIB_OPT="-b" + V_SONAME_OPT="+h " + # + # By default, directories specifed with -L + # are added to the run-time search path, so + # we don't add them in pcap-config. + # + ;; + + osf*) + # + # Presumed to be DEC OSF/1, Digital UNIX, or + # Tru64 UNIX. + # + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-shared" + V_SONAME_OPT="-soname " + V_RPATH_OPT="-rpath " + ;; + + solaris*) + V_CCOPT="$V_CCOPT -Kpic" + V_SHLIB_CMD="\$(CC)" + V_SHLIB_OPT="-G" + V_SONAME_OPT="-h " + V_RPATH_OPT="-R" + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } + save_CFLAGS="$CFLAGS" + CFLAGS="$V_CCOPT" + if ${ac_cv_lbl_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ac_cv_lbl_inline="" + ac_lbl_cc_inline=no + for ac_lbl_inline in inline __inline__ __inline + do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define inline $ac_lbl_inline + static inline struct iltest *foo(void); + struct iltest { + int iltest1; + int iltest2; + }; + + static inline struct iltest * + foo() + { + static struct iltest xxx; + + return &xxx; + } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lbl_cc_inline=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$ac_lbl_cc_inline" = yes ; then + break; + fi + done + if test "$ac_lbl_cc_inline" = yes ; then + ac_cv_lbl_inline=$ac_lbl_inline + fi +fi + + CFLAGS="$save_CFLAGS" + if test ! -z "$ac_cv_lbl_inline" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_inline" >&5 +$as_echo "$ac_cv_lbl_inline" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + +cat >>confdefs.h <<_ACEOF +#define inline $ac_cv_lbl_inline +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__" >&5 +$as_echo_n "checking for __attribute__... " >&6; } +if ${ac_cv___attribute__+:} false; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#include + +static void foo(void) __attribute__ ((noreturn)); + +static void +foo(void) +{ + exit(1); +} + +int +main(int argc, char **argv) +{ + foo(); +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv___attribute__=yes +else + ac_cv___attribute__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +if test "$ac_cv___attribute__" = "yes"; then + +$as_echo "#define HAVE___ATTRIBUTE__ 1" >>confdefs.h + +else + # + # We can't use __attribute__, so we can't use __attribute__((unused)), + # so we define _U_ to an empty string. + # + V_DEFS="$V_DEFS -D_U_=\"\"" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv___attribute__" >&5 +$as_echo "$ac_cv___attribute__" >&6; } + +if test "$ac_cv___attribute__" = "yes"; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((unused)) can be used without warnings" >&5 +$as_echo_n "checking whether __attribute__((unused)) can be used without warnings... " >&6; } +if ${ac_cv___attribute___unused+:} false; then : + $as_echo_n "(cached) " >&6 +else + +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#include +#include + +int +main(int argc __attribute((unused)), char **argv __attribute((unused))) +{ + printf("Hello, world!\n"); + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv___attribute___unused=yes +else + ac_cv___attribute___unused=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +CFLAGS="$save_CFLAGS" +if test "$ac_cv___attribute___unused" = "yes"; then + V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" +else + V_DEFS="$V_DEFS -D_U_=\"\"" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv___attribute___unused" >&5 +$as_echo "$ac_cv___attribute___unused" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((format)) can be used without warnings" >&5 +$as_echo_n "checking whether __attribute__((format)) can be used without warnings... " >&6; } +if ${ac_cv___attribute___format+:} false; then : + $as_echo_n "(cached) " >&6 +else + +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#include + +extern int foo(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +int +main(int argc, char **argv) +{ + foo("%s", "test"); +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv___attribute___format=yes +else + ac_cv___attribute___format=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +CFLAGS="$save_CFLAGS" +if test "$ac_cv___attribute___format" = "yes"; then + +$as_echo "#define __ATTRIBUTE___FORMAT_OK 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv___attribute___format" >&5 +$as_echo "$ac_cv___attribute___format" >&6; } + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in sys/bitypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/bitypes.h" "ac_cv_header_sys_bitypes_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_bitypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_BITYPES_H 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_int8_t" = xyes; then : + +else + +$as_echo "#define int8_t signed char" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "u_int8_t" "ac_cv_type_u_int8_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_u_int8_t" = xyes; then : + +else + +$as_echo "#define u_int8_t unsigned char" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" +if test "x$ac_cv_type_int16_t" = xyes; then : + +else + +$as_echo "#define int16_t short" >>confdefs.h + + $ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +fi + +ac_fn_c_check_type "$LINENO" "u_int16_t" "ac_cv_type_u_int16_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_u_int16_t" = xyes; then : + +else + +$as_echo "#define u_int16_t unsigned short" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_int32_t" = xyes; then : + +else + +$as_echo "#define int32_t int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_u_int32_t" = xyes; then : + +else + +$as_echo "#define u_int32_t unsigned int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_int64_t" = xyes; then : + +else + +$as_echo "#define int64_t long long" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +" +if test "x$ac_cv_type_u_int64_t" = xyes; then : + +else + +$as_echo "#define u_int64_t unsigned long long" >>confdefs.h + +fi + + +# +# Try to arrange for large file support. +# +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +if ${ac_cv_sys_largefile_source+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=no; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=1; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_cv_sys_largefile_source=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 +$as_echo "$ac_cv_sys_largefile_source" >&6; } +case $ac_cv_sys_largefile_source in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source +_ACEOF +;; +esac +rm -rf conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +if test $ac_cv_sys_largefile_source != unknown; then + +$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h + +fi + + +for ac_header in sys/ioccom.h sys/select.h sys/sockio.h limits.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in linux/types.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "linux/types.h" "ac_cv_header_linux_types_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_types_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_TYPES_H 1 +_ACEOF + +fi + +done + +for ac_header in linux/if_packet.h netpacket/packet.h netpacket/if_packet.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in net/pfvar.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/pfvar.h" "ac_cv_header_net_pfvar_h" "#include +#include +#include +" +if test "x$ac_cv_header_net_pfvar_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_PFVAR_H 1 +_ACEOF + +fi + +done + +if test "$ac_cv_header_net_pfvar_h" = yes; then + # + # Check for various PF actions. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether net/pfvar.h defines PF_NAT through PF_NORDR" >&5 +$as_echo_n "checking whether net/pfvar.h defines PF_NAT through PF_NORDR... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include +int +main () +{ +return PF_NAT+PF_NONAT+PF_BINAT+PF_NOBINAT+PF_RDR+PF_NORDR; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PF_NAT_THROUGH_PF_NORDR 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +for ac_header in netinet/if_ether.h +do : + ac_fn_c_check_header_compile "$LINENO" "netinet/if_ether.h" "ac_cv_header_netinet_if_ether_h" "#include +#include +" +if test "x$ac_cv_header_netinet_if_ether_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETINET_IF_ETHER_H 1 +_ACEOF + +fi + +done + +if test "$ac_cv_header_netinet_if_ether_h" != yes; then + # + # The simple test didn't work. + # Do we need to include first? + # Unset ac_cv_header_netinet_if_ether_h so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: Rechecking with some additional includes" >&5 +$as_echo "$as_me: Rechecking with some additional includes" >&6;} + unset ac_cv_header_netinet_if_ether_h + for ac_header in netinet/if_ether.h +do : + ac_fn_c_check_header_compile "$LINENO" "netinet/if_ether.h" "ac_cv_header_netinet_if_ether_h" "#include +#include +#include +struct mbuf; +struct rtentry; +#include +" +if test "x$ac_cv_header_netinet_if_ether_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETINET_IF_ETHER_H 1 +_ACEOF + +fi + +done + +fi + +case "$host_os" in +linux*|uclinux*) + for ac_header in linux/sockios.h linux/if_bonding.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " +#include +#include + +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + ;; +esac + +if test "$GCC" = yes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI ioctl definitions" >&5 +$as_echo_n "checking for ANSI ioctl definitions... " >&6; } + if ${ac_cv_lbl_gcc_fixincludes+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* + * This generates a "duplicate case value" when fixincludes + * has not be run. + */ +# include +# include +# include +# ifdef HAVE_SYS_IOCCOM_H +# include +# endif +int +main () +{ +switch (0) { + case _IO('A', 1):; + case _IO('B', 1):; + } + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_gcc_fixincludes=yes +else + ac_cv_lbl_gcc_fixincludes=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_gcc_fixincludes" >&5 +$as_echo "$ac_cv_lbl_gcc_fixincludes" >&6; } + if test $ac_cv_lbl_gcc_fixincludes = no ; then + # Don't cache failure + unset ac_cv_lbl_gcc_fixincludes + as_fn_error $? "see the INSTALL for more info" "$LINENO" 5 + fi + fi + +for ac_func in strerror strlcpy +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +needsnprintf=no +for ac_func in vsnprintf snprintf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + needsnprintf=yes +fi +done + +if test $needsnprintf = yes; then + case " $LIBOBJS " in + *" snprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" + ;; +esac + +fi + +needstrtok_r=no +for ac_func in strtok_r +do : + ac_fn_c_check_func "$LINENO" "strtok_r" "ac_cv_func_strtok_r" +if test "x$ac_cv_func_strtok_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRTOK_R 1 +_ACEOF + +else + needstrtok_r=yes +fi +done + +if test $needstrtok_r = yes; then + case " $LIBOBJS " in + *" strtok_r.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtok_r.$ac_objext" + ;; +esac + +fi + +# +# Do this before checking for ether_hostton(), as it's a +# "gethostbyname() -ish function". +# + + # Most operating systems have gethostbyname() in the default searched + # libraries (i.e. libc): + # Some OSes (eg. Solaris) place it in libnsl + # Some strange OSes (SINIX) have it in libsocket: + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 +$as_echo_n "checking for library containing gethostbyname... " >&6; } +if ${ac_cv_search_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +for ac_lib in '' nsl socket resolv; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_gethostbyname=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_gethostbyname+:} false; then : + break +fi +done +if ${ac_cv_search_gethostbyname+:} false; then : + +else + ac_cv_search_gethostbyname=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 +$as_echo "$ac_cv_search_gethostbyname" >&6; } +ac_res=$ac_cv_search_gethostbyname +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + # Unfortunately libsocket sometimes depends on libnsl and + # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. + if test "$ac_cv_search_gethostbyname" = "no" + then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lsocket" >&5 +$as_echo_n "checking for gethostbyname in -lsocket... " >&6; } +if ${ac_cv_lib_socket_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket -lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_gethostbyname=yes +else + ac_cv_lib_socket_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostbyname" >&5 +$as_echo "$ac_cv_lib_socket_gethostbyname" >&6; } +if test "x$ac_cv_lib_socket_gethostbyname" = xyes; then : + LIBS="-lsocket -lnsl $LIBS" +fi + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 +$as_echo_n "checking for library containing socket... " >&6; } +if ${ac_cv_search_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_socket=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_socket+:} false; then : + break +fi +done +if ${ac_cv_search_socket+:} false; then : + +else + ac_cv_search_socket=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 +$as_echo "$ac_cv_search_socket" >&6; } +ac_res=$ac_cv_search_socket +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket -lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes; then : + LIBS="-lsocket -lnsl $LIBS" +fi + +fi + + # DLPI needs putmsg under HPUX so test for -lstr while we're at it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing putmsg" >&5 +$as_echo_n "checking for library containing putmsg... " >&6; } +if ${ac_cv_search_putmsg+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char putmsg (); +int +main () +{ +return putmsg (); + ; + return 0; +} +_ACEOF +for ac_lib in '' str; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_putmsg=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_putmsg+:} false; then : + break +fi +done +if ${ac_cv_search_putmsg+:} false; then : + +else + ac_cv_search_putmsg=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_putmsg" >&5 +$as_echo "$ac_cv_search_putmsg" >&6; } +ac_res=$ac_cv_search_putmsg +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + + +# +# You are in a twisty little maze of UN*Xes, all different. +# Some might not have ether_hostton(). +# Some might have it, but not declare it in any header file. +# Some might have it, but declare it in . +# Some might have it, but declare it in +# (And some might have it but document it as something declared in +# , although appears to work.) +# +# Before you is a C compiler. +# +for ac_func in ether_hostton +do : + ac_fn_c_check_func "$LINENO" "ether_hostton" "ac_cv_func_ether_hostton" +if test "x$ac_cv_func_ether_hostton" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ETHER_HOSTTON 1 +_ACEOF + +fi +done + +if test "$ac_cv_func_ether_hostton" = yes; then + # + # OK, we have ether_hostton(). Do we have ? + # + if test "$ac_cv_header_netinet_if_ether_h" = yes; then + # + # Yes. Does it declare ether_hostton()? + # + ac_fn_c_check_decl "$LINENO" "ether_hostton" "ac_cv_have_decl_ether_hostton" " +#include +#include +#include +#include +struct mbuf; +struct rtentry; +#include +#include + +" +if test "x$ac_cv_have_decl_ether_hostton" = xyes; then : + + +$as_echo "#define NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON /**/" >>confdefs.h + + +fi + + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_hostton" != yes; then + # + # No, how about , as on Linux? + # + for ac_header in netinet/ether.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "netinet/ether.h" "ac_cv_header_netinet_ether_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_ether_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETINET_ETHER_H 1 +_ACEOF + +fi + +done + + if test "$ac_cv_header_netinet_ether_h" = yes; then + # + # We have it - does it declare ether_hostton()? + # Unset ac_cv_have_decl_ether_hostton so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_hostton + ac_fn_c_check_decl "$LINENO" "ether_hostton" "ac_cv_have_decl_ether_hostton" " +#include + +" +if test "x$ac_cv_have_decl_ether_hostton" = xyes; then : + + +$as_echo "#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/" >>confdefs.h + + +fi + + fi + fi + # + # Is ether_hostton() declared? + # + if test "$ac_cv_have_decl_ether_hostton" != yes; then + # + # No, we'll have to declare it ourselves. + # Do we have "struct ether_addr"? + # + ac_fn_c_check_type "$LINENO" "struct ether_addr" "ac_cv_type_struct_ether_addr" " +#include +#include +#include +#include +struct mbuf; +struct rtentry; +#include +#include + +" +if test "x$ac_cv_type_struct_ether_addr" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ETHER_ADDR 1 +_ACEOF + + +fi + + +$as_echo "#define HAVE_DECL_ETHER_HOSTTON 0" >>confdefs.h + + else + +$as_echo "#define HAVE_DECL_ETHER_HOSTTON 1" >>confdefs.h + + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if --disable-protochain option is specified" >&5 +$as_echo_n "checking if --disable-protochain option is specified... " >&6; } +# Check whether --enable-protochain was given. +if test "${enable_protochain+set}" = set; then : + enableval=$enable_protochain; +fi + +case "x$enable_protochain" in +xyes) enable_protochain=enabled ;; +xno) enable_protochain=disabled ;; +x) enable_protochain=enabled ;; +esac + +if test "$enable_protochain" = "disabled"; then + +$as_echo "#define NO_PROTOCHAIN 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_protochain}" >&5 +$as_echo "${enable_protochain}" >&6; } + +# +# valgrindtest directly uses the native capture mechanism, but +# only tests with BPF and PF_PACKET sockets; only enable it if +# we have BPF or PF_PACKET sockets. +# +VALGRINDTEST= + +# +# SITA support is mutually exclusive with native capture support; +# "--with-sita" selects SITA support. +# + +# Check whether --with-sita was given. +if test "${with_sita+set}" = set; then : + withval=$with_sita; + if test ! "x$withval" = "xno" ; then + +$as_echo "#define SITA 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling SITA ACN support" >&5 +$as_echo "$as_me: Enabling SITA ACN support" >&6;} + V_PCAP=sita + fi + +else + +if test -z "$with_pcap" && test "$cross_compiling" = yes; then + as_fn_error $? "pcap type not determined when cross-compiling; use --with-pcap=..." "$LINENO" 5 +fi + +# Check whether --with-pcap was given. +if test "${with_pcap+set}" = set; then : + withval=$with_pcap; +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking packet capture type" >&5 +$as_echo_n "checking packet capture type... " >&6; } +if test ! -z "$with_pcap" ; then + V_PCAP="$withval" +elif test -r /dev/bpf -o -h /dev/bpf ; then + # + # Cloning BPF device. + # + V_PCAP=bpf + +$as_echo "#define HAVE_CLONING_BPF 1" >>confdefs.h + + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /dev/bpf0 ; then + V_PCAP=bpf + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/net/pfilt.h ; then + V_PCAP=pf +elif test -r /dev/enet ; then + V_PCAP=enet +elif test -r /dev/nit ; then + V_PCAP=snit +elif test -r /usr/include/sys/net/nit.h ; then + V_PCAP=nit +elif test -r /usr/include/linux/socket.h ; then + V_PCAP=linux + + # + # XXX - this won't work with older kernels that have SOCK_PACKET + # sockets but not PF_PACKET sockets. + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/net/raw.h ; then + V_PCAP=snoop +elif test -r /usr/include/odmi.h ; then + # + # On AIX, the BPF devices might not yet be present - they're + # created the first time libpcap runs after booting. + # We check for odmi.h instead. + # + V_PCAP=bpf +elif test -c /dev/bpf0 ; then # check again in case not readable + V_PCAP=bpf + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/sys/dlpi.h ; then + V_PCAP=dlpi +elif test -c /dev/enet ; then # check again in case not readable + V_PCAP=enet +elif test -c /dev/nit ; then # check again in case not readable + V_PCAP=snit +else + V_PCAP=null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $V_PCAP" >&5 +$as_echo "$V_PCAP" >&6; } + + +# +# Do capture-mechanism-dependent tests. +# +case "$V_PCAP" in +dlpi) + # + # Needed for common functions used by pcap-[dlpi,libdlpi].c + # + SSRC="dlpisubs.c" + + # + # Checks for some header files. + # + for ac_header in sys/bufmod.h sys/dlpi_ext.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + # + # Checks to see if Solaris has the public libdlpi(3LIB) library. + # Note: The existence of /usr/include/libdlpi.h does not mean it is the + # public libdlpi(3LIB) version. Before libdlpi was made public, a + # private version also existed, which did not have the same APIs. + # Due to a gcc bug, the default search path for 32-bit libraries does + # not include /lib, we add it explicitly here. + # [http://bugs.opensolaris.org/view_bug.do?bug_id=6619485]. + # Also, due to the bug above applications that link to libpcap with + # libdlpi will have to add "-L/lib" option to "configure". + # + saved_ldflags=$LDFLAGS + LDFLAGS="$LIBS -L/lib" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlpi_walk in -ldlpi" >&5 +$as_echo_n "checking for dlpi_walk in -ldlpi... " >&6; } +if ${ac_cv_lib_dlpi_dlpi_walk+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldlpi $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlpi_walk (); +int +main () +{ +return dlpi_walk (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dlpi_dlpi_walk=yes +else + ac_cv_lib_dlpi_dlpi_walk=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dlpi_dlpi_walk" >&5 +$as_echo "$ac_cv_lib_dlpi_dlpi_walk" >&6; } +if test "x$ac_cv_lib_dlpi_dlpi_walk" = xyes; then : + + LIBS="-ldlpi $LIBS" + V_PCAP=libdlpi + +$as_echo "#define HAVE_LIBDLPI 1" >>confdefs.h + + +else + V_PCAP=dlpi +fi + + LDFLAGS=$saved_ldflags + + # + # Checks whether is usable, to catch weird SCO + # versions of DLPI. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether is usable" >&5 +$as_echo_n "checking whether is usable... " >&6; } + if ${ac_cv_sys_dlpi_usable+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + +int +main () +{ +int i = DL_PROMISC_PHYS; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_dlpi_usable=yes +else + ac_cv_sys_dlpi_usable=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_dlpi_usable" >&5 +$as_echo "$ac_cv_sys_dlpi_usable" >&6; } + if test $ac_cv_sys_dlpi_usable = no ; then + as_fn_error $? " is not usable on this system; it probably has a non-standard DLPI" "$LINENO" 5 + fi + + # + # Check whether we have a /dev/dlpi device or have multiple devices. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/dlpi device" >&5 +$as_echo_n "checking for /dev/dlpi device... " >&6; } + if test -c /dev/dlpi ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DEV_DLPI 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + dir="/dev/dlpi" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $dir directory" >&5 +$as_echo_n "checking for $dir directory... " >&6; } + if test -d $dir ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<_ACEOF +#define PCAP_DEV_PREFIX "$dir" +_ACEOF + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + + # + # This check is for Solaris with DLPI support for passive modes. + # See dlpi(7P) for more details. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dl_passive_req_t struct exists" >&5 +$as_echo_n "checking if dl_passive_req_t struct exists... " >&6; } + if ${ac_cv_lbl_has_dl_passive_req_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +int +main () +{ +u_int i = sizeof(dl_passive_req_t) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_has_dl_passive_req_t=yes +else + ac_cv_lbl_has_dl_passive_req_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_has_dl_passive_req_t" >&5 +$as_echo "$ac_cv_lbl_has_dl_passive_req_t" >&6; } + if test $ac_cv_lbl_has_dl_passive_req_t = yes ; then + +$as_echo "#define HAVE_DLPI_PASSIVE 1" >>confdefs.h + + fi + ;; + +linux) + # + # Do we have the wireless extensions? + # + for ac_header in linux/wireless.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/wireless.h" "ac_cv_header_linux_wireless_h" " +#include +#include +#include + +" +if test "x$ac_cv_header_linux_wireless_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_WIRELESS_H 1 +_ACEOF + +fi + +done + + + # + # Do we have libnl? + # + +# Check whether --with-libnl was given. +if test "${with_libnl+set}" = set; then : + withval=$with_libnl; with_libnl=$withval +fi + + + if test x$with_libnl != xno ; then + have_any_nl="no" + + incdir=-I/usr/include/libnl3 + libnldir= + if test x$withval != x ; then + libnldir=-L${withval}/lib/.libs + incdir=-I${withval}/include + fi + + # + # Try libnl 3.x first. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_alloc in -lnl-3" >&5 +$as_echo_n "checking for nl_socket_alloc in -lnl-3... " >&6; } +if ${ac_cv_lib_nl_3_nl_socket_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnl-3 ${incdir} ${libnldir} -lnl-genl-3 -lnl-3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char nl_socket_alloc (); +int +main () +{ +return nl_socket_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nl_3_nl_socket_alloc=yes +else + ac_cv_lib_nl_3_nl_socket_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nl_3_nl_socket_alloc" >&5 +$as_echo "$ac_cv_lib_nl_3_nl_socket_alloc" >&6; } +if test "x$ac_cv_lib_nl_3_nl_socket_alloc" = xyes; then : + + # + # Yes, we have libnl 3.x. + # + LIBS="${libnldir} -lnl-genl-3 -lnl-3 $LIBS" + +$as_echo "#define HAVE_LIBNL 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_3_x 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_NLE 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_SOCKETS 1" >>confdefs.h + + V_INCLS="$V_INCLS ${incdir}" + have_any_nl="yes" + +fi + + + if test x$have_any_nl = xno ; then + # + # Try libnl 2.x + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_alloc in -lnl" >&5 +$as_echo_n "checking for nl_socket_alloc in -lnl... " >&6; } +if ${ac_cv_lib_nl_nl_socket_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char nl_socket_alloc (); +int +main () +{ +return nl_socket_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nl_nl_socket_alloc=yes +else + ac_cv_lib_nl_nl_socket_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nl_nl_socket_alloc" >&5 +$as_echo "$ac_cv_lib_nl_nl_socket_alloc" >&6; } +if test "x$ac_cv_lib_nl_nl_socket_alloc" = xyes; then : + + # + # Yes, we have libnl 2.x. + # + LIBS="${libnldir} -lnl-genl -lnl $LIBS" + +$as_echo "#define HAVE_LIBNL 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_2_x 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_NLE 1" >>confdefs.h + + +$as_echo "#define HAVE_LIBNL_SOCKETS 1" >>confdefs.h + + have_any_nl="yes" + +fi + + fi + + if test x$have_any_nl = xno ; then + # + # No, we don't; do we have libnl 1.x? + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_handle_alloc in -lnl" >&5 +$as_echo_n "checking for nl_handle_alloc in -lnl... " >&6; } +if ${ac_cv_lib_nl_nl_handle_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char nl_handle_alloc (); +int +main () +{ +return nl_handle_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nl_nl_handle_alloc=yes +else + ac_cv_lib_nl_nl_handle_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nl_nl_handle_alloc" >&5 +$as_echo "$ac_cv_lib_nl_nl_handle_alloc" >&6; } +if test "x$ac_cv_lib_nl_nl_handle_alloc" = xyes; then : + + # + # Yes. + # + LIBS="${libnldir} -lnl $LIBS" + +$as_echo "#define HAVE_LIBNL 1" >>confdefs.h + + have_any_nl="yes" + +fi + + fi + + if test x$have_any_nl = xno ; then + # + # No, we don't have libnl at all. + # + if test x$with_libnl = xyes ; then + as_fn_error $? "libnl support requested but libnl not found" "$LINENO" 5 + fi + fi + fi + + for ac_header in linux/ethtool.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/ethtool.h" "ac_cv_header_linux_ethtool_h" " +$ac_includes_default +#include + +" +if test "x$ac_cv_header_linux_ethtool_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_ETHTOOL_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if if_packet.h has tpacket_stats defined" >&5 +$as_echo_n "checking if if_packet.h has tpacket_stats defined... " >&6; } + if ${ac_cv_lbl_tpacket_stats+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +int +main () +{ +struct tpacket_stats stats + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_tpacket_stats=yes +else + ac_cv_lbl_tpacket_stats=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_tpacket_stats" >&5 +$as_echo "$ac_cv_lbl_tpacket_stats" >&6; } + if test $ac_cv_lbl_tpacket_stats = yes; then + +$as_echo "#define HAVE_TPACKET_STATS 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if tpacket_auxdata struct has tp_vlan_tci member" >&5 +$as_echo_n "checking if tpacket_auxdata struct has tp_vlan_tci member... " >&6; } + if ${ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +int +main () +{ +u_int i = sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=yes +else + ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci" >&5 +$as_echo "$ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci" >&6; } + if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci = yes ; then + HAVE_LINUX_TPACKET_AUXDATA=tp_vlan_tci + + +$as_echo "#define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1" >>confdefs.h + + fi + ;; + +bpf) + # + # Check whether we have the *BSD-style ioctls. + # + for ac_header in net/if_media.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "net/if_media.h" "ac_cv_header_net_if_media_h" "$ac_includes_default" +if test "x$ac_cv_header_net_if_media_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_MEDIA_H 1 +_ACEOF + +fi + +done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the system supports zerocopy BPF" >&5 +$as_echo_n "checking whether the system supports zerocopy BPF... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include +int +main () +{ +return (BIOCROTZBUF + BPF_BUFMODE_ZBUF); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ZEROCOPY_BPF 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + # + # Check whether we have struct BPF_TIMEVAL. + # + ac_fn_c_check_type "$LINENO" "struct BPF_TIMEVAL" "ac_cv_type_struct_BPF_TIMEVAL" " +#include +#include +#ifdef HAVE_SYS_IOCCOM_H +#include +#endif +#include + +" +if test "x$ac_cv_type_struct_BPF_TIMEVAL" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_BPF_TIMEVAL 1 +_ACEOF + + +fi + + ;; + +dag) + # + # --with-pcap=dag is the only way to get here, and it means + # "DAG support but nothing else" + # + V_DEFS="$V_DEFS -DDAG_ONLY" + xxx_only=yes + ;; + +septel) + # + # --with-pcap=septel is the only way to get here, and it means + # "Septel support but nothing else" + # + V_DEFS="$V_DEFS -DSEPTEL_ONLY" + xxx_only=yes + ;; + +snf) + # + # --with-pcap=snf is the only way to get here, and it means + # "SNF support but nothing else" + # + V_DEFS="$V_DEFS -DSNF_ONLY" + xxx_only=yes + ;; + +null) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine packet capture interface" >&5 +$as_echo "$as_me: WARNING: cannot determine packet capture interface" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: (see the INSTALL doc for more info)" >&5 +$as_echo "$as_me: WARNING: (see the INSTALL doc for more info)" >&2;} + ;; +esac + +if test "$V_PCAP" != null +then + ac_fn_c_check_func "$LINENO" "getifaddrs" "ac_cv_func_getifaddrs" +if test "x$ac_cv_func_getifaddrs" = xyes; then : + + # + # We have "getifaddrs()"; make sure we have + # as well, just in case some platform is really weird. + # + ac_fn_c_check_header_mongrel "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$ac_includes_default" +if test "x$ac_cv_header_ifaddrs_h" = xyes; then : + + # + # We have the header, so we use "getifaddrs()" to + # get the list of interfaces. + # + V_FINDALLDEVS=fad-getad.c + +else + + # + # We don't have the header - give up. + # XXX - we could also fall back on some other + # mechanism, but, for now, this'll catch this + # problem so that we can at least try to figure + # out something to do on systems with "getifaddrs()" + # but without "ifaddrs.h", if there is something + # we can do on those systems. + # + as_fn_error $? "Your system has getifaddrs() but doesn't have a usable ." "$LINENO" 5 + +fi + + + +else + + # + # Well, we don't have "getifaddrs()", so we have to use + # some other mechanism; determine what that mechanism is. + # + # The first thing we use is the type of capture mechanism, + # which is somewhat of a proxy for the OS we're using. + # + case "$V_PCAP" in + + dlpi|libdlpi) + # + # This might be Solaris 8 or later, with + # SIOCGLIFCONF, or it might be some other OS + # or some older version of Solaris, with + # just SIOCGIFCONF. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have SIOCGLIFCONF" >&5 +$as_echo_n "checking whether we have SIOCGLIFCONF... " >&6; } + if ${ac_cv_lbl_have_siocglifconf+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + #include +int +main () +{ +ioctl(0, SIOCGLIFCONF, (char *)0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_have_siocglifconf=yes +else + ac_cv_lbl_have_siocglifconf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_have_siocglifconf" >&5 +$as_echo "$ac_cv_lbl_have_siocglifconf" >&6; } + if test $ac_cv_lbl_have_siocglifconf = yes ; then + V_FINDALLDEVS=fad-glifc.c + else + V_FINDALLDEVS=fad-gifc.c + fi + ;; + + *) + # + # Assume we just have SIOCGIFCONF. + # (XXX - on at least later Linux kernels, there's + # another mechanism, and we should be using that + # instead.) + # + V_FINDALLDEVS=fad-gifc.c + ;; + esac +fi + +fi + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + socklen_t x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_socklen_t=yes +else + have_socklen_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if test "x$have_socklen_t" = "xyes"; then + +$as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_socklen_t" >&5 +$as_echo "$have_socklen_t" >&6; } + +# Check whether --enable-ipv6 was given. +if test "${enable_ipv6+set}" = set; then : + enableval=$enable_ipv6; +else + enable_ipv6=ifavailable +fi + +if test "$enable_ipv6" != "no"; then + ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" +if test "x$ac_cv_func_getaddrinfo" = xyes; then : + + +$as_echo "#define INET6 1" >>confdefs.h + + +else + + if test "$enable_ipv6" != "ifavailable"; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--enable-ipv6 was given, but getaddrinfo isn't available +See \`config.log' for more details" "$LINENO" 5; } + fi + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build optimizer debugging code" >&5 +$as_echo_n "checking whether to build optimizer debugging code... " >&6; } +# Check whether --enable-optimizer-dbg was given. +if test "${enable_optimizer_dbg+set}" = set; then : + enableval=$enable_optimizer_dbg; +fi + +if test "$enable_optimizer_dbg" = "yes"; then + +$as_echo "#define BDEBUG 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_optimizer_dbg-no}" >&5 +$as_echo "${enable_optimizer_dbg-no}" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build parser debugging code" >&5 +$as_echo_n "checking whether to build parser debugging code... " >&6; } +# Check whether --enable-yydebug was given. +if test "${enable_yydebug+set}" = set; then : + enableval=$enable_yydebug; +fi + +if test "$enable_yydebug" = "yes"; then + +$as_echo "#define YYDEBUG 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_yydebug-no}" >&5 +$as_echo "${enable_yydebug-no}" >&6; } + +# Check for Endace DAG card support. + +# Check whether --with-dag was given. +if test "${with_dag+set}" = set; then : + withval=$with_dag; + if test "$withval" = no + then + # User doesn't want DAG support. + want_dag=no + elif test "$withval" = yes + then + # User wants DAG support but hasn't specified a directory. + want_dag=yes + else + # User wants DAG support and has specified a directory, so use the provided value. + want_dag=yes + dag_root=$withval + fi + +else + + if test "$V_PCAP" = dag; then + # User requested DAG-only libpcap, so we'd better have + # the DAG API. + want_dag=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want DAG support. + want_dag=no + else + # + # Use DAG API if present, otherwise don't + # + want_dag=ifpresent + fi + +fi + + + +# Check whether --with-dag-includes was given. +if test "${with_dag_includes+set}" = set; then : + withval=$with_dag_includes; + # User wants DAG support and has specified a header directory, so use the provided value. + want_dag=yes + dag_include_dir=$withval + +fi + + + +# Check whether --with-dag-libraries was given. +if test "${with_dag_libraries+set}" = set; then : + withval=$with_dag_libraries; + # User wants DAG support and has specified a library directory, so use the provided value. + want_dag=yes + dag_lib_dir=$withval + +fi + + +ac_cv_lbl_dag_api=no +if test "$want_dag" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have DAG API headers" >&5 +$as_echo_n "checking whether we have DAG API headers... " >&6; } + + # If necessary, set default paths for DAG API headers and libraries. + if test -z "$dag_root"; then + dag_root=/usr/local + fi + + if test -z "$dag_include_dir"; then + dag_include_dir="$dag_root/include" + fi + + if test -z "$dag_lib_dir"; then + dag_lib_dir="$dag_root/lib" + fi + + if test -z "$dag_tools_dir"; then + dag_tools_dir="$dag_root/tools" + fi + + if test -r $dag_include_dir/dagapi.h; then + ac_cv_lbl_dag_api=yes + fi + + if test "$ac_cv_lbl_dag_api" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($dag_include_dir)" >&5 +$as_echo "yes ($dag_include_dir)" >&6; } + + V_INCLS="$V_INCLS -I$dag_include_dir" + + if test $V_PCAP != dag ; then + SSRC="$SSRC pcap-dag.c" + fi + + # See if we can find a general version string. + # Don't need to save and restore LIBS to prevent -ldag being + # included if there's a found-action (arg 3). + saved_ldflags=$LDFLAGS + LDFLAGS="-L$dag_lib_dir" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dag_attach_stream in -ldag" >&5 +$as_echo_n "checking for dag_attach_stream in -ldag... " >&6; } +if ${ac_cv_lib_dag_dag_attach_stream+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldag $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dag_attach_stream (); +int +main () +{ +return dag_attach_stream (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dag_dag_attach_stream=yes +else + ac_cv_lib_dag_dag_attach_stream=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dag_dag_attach_stream" >&5 +$as_echo "$ac_cv_lib_dag_dag_attach_stream" >&6; } +if test "x$ac_cv_lib_dag_dag_attach_stream" = xyes; then : + dag_streams="1" +else + dag_streams="0" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dag_get_erf_types in -ldag" >&5 +$as_echo_n "checking for dag_get_erf_types in -ldag... " >&6; } +if ${ac_cv_lib_dag_dag_get_erf_types+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldag $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dag_get_erf_types (); +int +main () +{ +return dag_get_erf_types (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dag_dag_get_erf_types=yes +else + ac_cv_lib_dag_dag_get_erf_types=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dag_dag_get_erf_types" >&5 +$as_echo "$ac_cv_lib_dag_dag_get_erf_types" >&6; } +if test "x$ac_cv_lib_dag_dag_get_erf_types" = xyes; then : + + +$as_echo "#define HAVE_DAG_GET_ERF_TYPES 1" >>confdefs.h + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dag_get_stream_erf_types in -ldag" >&5 +$as_echo_n "checking for dag_get_stream_erf_types in -ldag... " >&6; } +if ${ac_cv_lib_dag_dag_get_stream_erf_types+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldag $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dag_get_stream_erf_types (); +int +main () +{ +return dag_get_stream_erf_types (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dag_dag_get_stream_erf_types=yes +else + ac_cv_lib_dag_dag_get_stream_erf_types=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dag_dag_get_stream_erf_types" >&5 +$as_echo "$ac_cv_lib_dag_dag_get_stream_erf_types" >&6; } +if test "x$ac_cv_lib_dag_dag_get_stream_erf_types" = xyes; then : + + +$as_echo "#define HAVE_DAG_GET_STREAM_ERF_TYPES 1" >>confdefs.h + +fi + + + LDFLAGS=$saved_ldflags + + if test "$dag_streams" = 1; then + +$as_echo "#define HAVE_DAG_STREAMS_API 1" >>confdefs.h + + LIBS="$LIBS -ldag" + LDFLAGS="$LDFLAGS -L$dag_lib_dir" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vdag_set_device_info in -lvdag" >&5 +$as_echo_n "checking for vdag_set_device_info in -lvdag... " >&6; } +if ${ac_cv_lib_vdag_vdag_set_device_info+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lvdag $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char vdag_set_device_info (); +int +main () +{ +return vdag_set_device_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_vdag_vdag_set_device_info=yes +else + ac_cv_lib_vdag_vdag_set_device_info=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_vdag_vdag_set_device_info" >&5 +$as_echo "$ac_cv_lib_vdag_vdag_set_device_info" >&6; } +if test "x$ac_cv_lib_vdag_vdag_set_device_info" = xyes; then : + ac_dag_have_vdag="1" +else + ac_dag_have_vdag="0" +fi + + if test "$ac_dag_have_vdag" = 1; then + +$as_echo "#define HAVE_DAG_VDAG 1" >>confdefs.h + + LIBS="$LIBS -lpthread" + fi + fi + + +$as_echo "#define HAVE_DAG_API 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test "$V_PCAP" = dag; then + # User requested "dag" capture type but we couldn't + # find the DAG API support. + as_fn_error $? "DAG support requested with --with-pcap=dag, but the DAG headers weren't found at $dag_include_dir: make sure the DAG support is installed, specify a different path or paths if necessary, or don't request DAG support" "$LINENO" 5 + fi + + if test "$want_dag" = yes; then + # User wanted DAG support but we couldn't find it. + as_fn_error $? "DAG support requested with --with-dag, but the DAG headers weren't found at $dag_include_dir: make sure the DAG support is installed, specify a different path or paths if necessary, or don't request DAG support" "$LINENO" 5 + fi + fi +fi + + +# Check whether --with-septel was given. +if test "${with_septel+set}" = set; then : + withval=$with_septel; + if test "$withval" = no + then + want_septel=no + elif test "$withval" = yes + then + want_septel=yes + septel_root= + else + want_septel=yes + septel_root=$withval + fi + +else + + if test "$V_PCAP" = septel; then + # User requested Septel-only libpcap, so we'd better have + # the Septel API. + want_septel=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want Septel support. + want_septel=no + else + # + # Use Septel API if present, otherwise don't + # + want_septel=ifpresent + fi + +fi + + +ac_cv_lbl_septel_api=no +if test "$with_septel" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have Septel API headers" >&5 +$as_echo_n "checking whether we have Septel API headers... " >&6; } + + # If necessary, set default paths for Septel API headers and libraries. + if test -z "$septel_root"; then + septel_root=$srcdir/../septel + fi + + septel_tools_dir="$septel_root" + septel_include_dir="$septel_root/INC" + + if test -r "$septel_include_dir/msg.h"; then + ac_cv_lbl_septel_api=yes + fi + + if test "$ac_cv_lbl_septel_api" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($septel_include_dir)" >&5 +$as_echo "yes ($septel_include_dir)" >&6; } + + V_INCLS="$V_INCLS -I$septel_include_dir" + ADDLOBJS="$ADDLOBJS $septel_tools_dir/asciibin.o $septel_tools_dir/bit2byte.o $septel_tools_dir/confirm.o $septel_tools_dir/fmtmsg.o $septel_tools_dir/gct_unix.o $septel_tools_dir/hqueue.o $septel_tools_dir/ident.o $septel_tools_dir/mem.o $septel_tools_dir/pack.o $septel_tools_dir/parse.o $septel_tools_dir/pool.o $septel_tools_dir/sdlsig.o $septel_tools_dir/strtonum.o $septel_tools_dir/timer.o $septel_tools_dir/trace.o" + ADDLARCHIVEOBJS="$ADDLARCHIVEOBJS $septel_tools_dir/asciibin.o $septel_tools_dir/bit2byte.o $septel_tools_dir/confirm.o $septel_tools_dir/fmtmsg.o $septel_tools_dir/gct_unix.o $septel_tools_dir/hqueue.o $septel_tools_dir/ident.o $septel_tools_dir/mem.o $septel_tools_dir/pack.o $septel_tools_dir/parse.o $septel_tools_dir/pool.o $septel_tools_dir/sdlsig.o $septel_tools_dir/strtonum.o $septel_tools_dir/timer.o $septel_tools_dir/trace.o" + + if test "$V_PCAP" != septel ; then + SSRC="$SSRC pcap-septel.c" + fi + + +$as_echo "#define HAVE_SEPTEL_API 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test "$V_PCAP" = septel; then + # User requested "septel" capture type but + # we couldn't find the Septel API support. + as_fn_error $? "Septel support requested with --with-pcap=septel, but the Septel headers weren't found at $septel_include_dir: make sure the Septel support is installed, specify a different path or paths if necessary, or don't request Septel support" "$LINENO" 5 + fi + + if test "$want_septel" = yes; then + # User wanted Septel support but we couldn't find it. + as_fn_error $? "Septel support requested with --with-septel, but the Septel headers weren't found at $septel_include_dir: make sure the Septel support is installed, specify a different path or paths if necessary, or don't request Septel support" "$LINENO" 5 + fi + fi +fi + +# Check for Myricom SNF support. + +# Check whether --with-snf was given. +if test "${with_snf+set}" = set; then : + withval=$with_snf; + if test "$withval" = no + then + # User explicitly doesn't want SNF + want_snf=no + elif test "$withval" = yes + then + # User wants SNF support but hasn't specified a directory. + want_snf=yes + else + # User wants SNF support with a specified directory. + want_snf=yes + snf_root=$withval + fi + +else + + if test "$V_PCAP" = snf; then + # User requested Sniffer-only libpcap, so we'd better have + # the Sniffer API. + want_snf=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want SNF support. + want_snf=no + else + # + # Use Sniffer API if present, otherwise don't + # + want_snf=ifpresent + fi + +fi + + + +# Check whether --with-snf-includes was given. +if test "${with_snf_includes+set}" = set; then : + withval=$with_snf_includes; + # User wants SNF with specific header directory + want_snf=yes + snf_include_dir=$withval + +fi + + + +# Check whether --with-snf-libraries was given. +if test "${with_snf_libraries+set}" = set; then : + withval=$with_snf_libraries; + # User wants SNF with specific lib directory + want_snf=yes + snf_lib_dir=$withval + +fi + + +ac_cv_lbl_snf_api=no +if test "$with_snf" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have Myricom Sniffer API" >&5 +$as_echo_n "checking whether we have Myricom Sniffer API... " >&6; } + + # If necessary, set default paths for Sniffer headers and libraries. + if test -z "$snf_root"; then + snf_root=/opt/snf + fi + + if test -z "$snf_include_dir"; then + snf_include_dir="$snf_root/include" + fi + + if test -z "$snf_lib_dir"; then + snf_lib_dir="$snf_root/lib" + fi + + if test -f "$snf_include_dir/snf.h"; then + # We found a header; make sure we can link with the library + saved_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -L$snf_lib_dir" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snf_init in -lsnf" >&5 +$as_echo_n "checking for snf_init in -lsnf... " >&6; } +if ${ac_cv_lib_snf_snf_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsnf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snf_init (); +int +main () +{ +return snf_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_snf_snf_init=yes +else + ac_cv_lib_snf_snf_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_snf_snf_init" >&5 +$as_echo "$ac_cv_lib_snf_snf_init" >&6; } +if test "x$ac_cv_lib_snf_snf_init" = xyes; then : + ac_cv_lbl_snf_api="yes" +fi + + LDFLAGS="$saved_ldflags" + if test "$ac_cv_lbl_snf_api" = no; then + as_fn_error $? "SNF API cannot correctly be linked; check config.log" "$LINENO" 5 + fi + fi + + if test "$ac_cv_lbl_snf_api" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($snf_root)" >&5 +$as_echo "yes ($snf_root)" >&6; } + + V_INCLS="$V_INCLS -I$snf_include_dir" + LIBS="$LIBS -lsnf" + LDFLAGS="$LDFLAGS -L$snf_lib_dir" + + if test "$V_PCAP" != snf ; then + SSRC="$SSRC pcap-snf.c" + fi + + +$as_echo "#define HAVE_SNF_API 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test "$want_snf" = yes; then + # User requested "snf" capture type but + # we couldn't find the Sniffer API support. + as_fn_error $? "Myricom Sniffer support requested with --with-pcap=snf, but the Sniffer headers weren't found at $snf_include_dir: make sure the Sniffer support is installed, specify a different path or paths if necessary, or don't request Sniffer support" "$LINENO" 5 + fi + + if test "$want_snf" = yes; then + as_fn_error $? "Myricom Sniffer support requested with --with-snf, but the Sniffer headers weren't found at $snf_include_dir: make sure the Sniffer support is installed, specify a different path or paths if necessary, or don't request Sniffer support" "$LINENO" 5 + fi + fi +fi + +# Check for Riverbed TurboCap support. + +# Check whether --with-turbocap was given. +if test "${with_turbocap+set}" = set; then : + withval=$with_turbocap; + if test "$withval" = no + then + # User explicitly doesn't want TurboCap + want_turbocap=no + elif test "$withval" = yes + then + # User wants TurboCap support but hasn't specified a directory. + want_turbocap=yes + else + # User wants TurboCap support with a specified directory. + want_turbocap=yes + turbocap_root=$withval + fi + +else + + if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want TurboCap support. + want_turbocap=no + else + # + # Use TurboCap API if present, otherwise don't + # + want_turbocap=ifpresent + fi + +fi + + +ac_cv_lbl_turbocap_api=no +if test "$want_turbocap" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TurboCap is supported" >&5 +$as_echo_n "checking whether TurboCap is supported... " >&6; } + + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + if test ! -z "$turbocap_root"; then + TURBOCAP_CFLAGS="-I$turbocap_root/include" + TURBOCAP_LIBS="-L$turbocap_root/lib" + CFLAGS="$CFLAGS $TURBOCAP_CFLAGS" + fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ + + TC_INSTANCE a; TC_PORT b; TC_BOARD c; + TC_INSTANCE i; + (void)TcInstanceCreateByName("foo", &i); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_turbocap_api=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CFLAGS="$save_CFLAGS" + if test $ac_cv_lbl_turbocap_api = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + SSRC="$SSRC pcap-tc.c" + V_INCLS="$V_INCLS $TURBOCAP_CFLAGS" + LIBS="$LIBS $TURBOCAP_LIBS -lTcApi -lpthread -lstdc++" + + +$as_echo "#define HAVE_TC_API 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test "$want_turbocap" = yes; then + # User wanted Turbo support but we couldn't find it. + as_fn_error $? "TurboCap support requested with --with-turbocap, but the TurboCap headers weren't found: make sure the TurboCap support is installed or don't request TurboCap support" "$LINENO" 5 + fi + fi +fi + +# +# Look for {f}lex. +# +for ac_prog in flex lex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LEX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LEX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LEX=$ac_cv_prog_LEX +if test -n "$LEX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 +$as_echo "$LEX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LEX" && break +done +test -n "$LEX" || LEX=":" + +if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF +%% +a { ECHO; } +b { REJECT; } +c { yymore (); } +d { yyless (1); } +e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ + yyless ((input () != 0)); } +f { unput (yytext[0]); } +. { BEGIN INITIAL; } +%% +#ifdef YYTEXT_POINTER +extern char *yytext; +#endif +int +main (void) +{ + return ! yylex () + ! yywrap (); +} +_ACEOF +{ { ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 +$as_echo_n "checking lex output file root... " >&6; } +if ${ac_cv_prog_lex_root+:} false; then : + $as_echo_n "(cached) " >&6 +else + +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 +$as_echo "$ac_cv_prog_lex_root" >&6; } +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +if test -z "${LEXLIB+set}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 +$as_echo_n "checking lex library... " >&6; } +if ${ac_cv_lib_lex+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ac_save_LIBS=$LIBS + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_lex=$ac_lib +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + test "$ac_cv_lib_lex" != 'none needed' && break + done + LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 +$as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 +$as_echo_n "checking whether yytext is a pointer... " >&6; } +if ${ac_cv_prog_lex_yytext_pointer+:} false; then : + $as_echo_n "(cached) " >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +ac_save_LIBS=$LIBS +LIBS="$LEXLIB $ac_save_LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define YYTEXT_POINTER 1 +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_lex_yytext_pointer=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 +$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } +if test $ac_cv_prog_lex_yytext_pointer = yes; then + +$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h + +fi +rm -f conftest.l $LEX_OUTPUT_ROOT.c + +fi +if test "$LEX" = ":"; then + as_fn_error $? "Neither flex nor lex was found." "$LINENO" 5 +fi + +# +# Make sure {f}lex supports the -P, --header-file, and --nounput flags +# and supports processing our scanner.l. +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for capable lex" >&5 +$as_echo_n "checking for capable lex... " >&6; } +if ${tcpdump_cv_capable_lex+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $LEX -P pcap_ --header-file=/dev/null --nounput -t $srcdir/scanner.l > /dev/null 2>&1; then + tcpdump_cv_capable_lex=yes + else + tcpdump_cv_capable_lex=insufficient + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcpdump_cv_capable_lex" >&5 +$as_echo "$tcpdump_cv_capable_lex" >&6; } +if test $tcpdump_cv_capable_lex = insufficient ; then + as_fn_error $? "$LEX is insufficient to compile libpcap. + libpcap requires Flex 2.5.31 or later, or a compatible version of lex." "$LINENO" 5 +fi + +# +# Look for yacc/bison/byacc. +# +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + + +# +# Make sure it supports the -p flag and supports processing our +# grammar.y. +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for capable yacc/bison" >&5 +$as_echo_n "checking for capable yacc/bison... " >&6; } +if ${tcpdump_cv_capable_yacc+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $YACC -p pcap_ -o /dev/null $srcdir/grammar.y >/dev/null 2>&1; then + tcpdump_cv_capable_yacc=yes + else + tcpdump_cv_capable_yacc=insufficient + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcpdump_cv_capable_yacc" >&5 +$as_echo "$tcpdump_cv_capable_yacc" >&6; } +if test $tcpdump_cv_capable_yacc = insufficient ; then + as_fn_error $? "$YACC is insufficient to compile libpcap. + libpcap requires Bison, Berkeley YACC, or another YACC compatible with them." "$LINENO" 5 +fi + +# +# Assume, by default, no support for shared libraries and V7/BSD convention +# for man pages (file formats in section 5, miscellaneous info in section 7). +# Individual cases can override this. +# +DYEXT="none" +MAN_FILE_FORMATS=5 +MAN_MISC_INFO=7 +case "$host_os" in + +aix*) + +$as_echo "#define _SUN 1" >>confdefs.h + + + # + # AIX makes it fun to build shared and static libraries, + # because they're *both* ".a" archive libraries. We + # build the static library for the benefit of the traditional + # scheme of building libpcap and tcpdump in subdirectories of + # the same directory, with tcpdump statically linked with the + # libpcap in question, but we also build a shared library as + # "libpcap.shareda" and install *it*, rather than the static + # library, as "libpcap.a". + # + DYEXT="shareda" + + case "$V_PCAP" in + + dlpi) + # + # If we're using DLPI, applications will need to + # use /lib/pse.exp if present, as we use the + # STREAMS routines. + # + pseexe="/lib/pse.exp" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $pseexe" >&5 +$as_echo_n "checking for $pseexe... " >&6; } + if test -f $pseexe ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBS="-I:$pseexe" + fi + ;; + + bpf) + # + # If we're using BPF, we need "-lodm" and "-lcfg", as + # we use them to load the BPF module. + # + LIBS="-lodm -lcfg" + ;; + esac + ;; + +darwin*) + DYEXT="dylib" + V_CCOPT="$V_CCOPT -fno-common" + # Check whether --enable-universal was given. +if test "${enable_universal+set}" = set; then : + enableval=$enable_universal; +fi + + if test "$enable_universal" != "no"; then + case "$host_os" in + + darwin0-7.*) + # + # Pre-Tiger. Build only for 32-bit PowerPC; no + # need for any special compiler or linker flags. + # + ;; + + darwin8.0123*) + # + # Tiger, prior to Intel support. Build for 32-bit + # PowerPC and 64-bit PowerPC, with 32-bit PowerPC + # first. (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64" + ;; + + darwin8.456*) + # + # Tiger, subsequent to Intel support but prior to + # x86-64 support. Build for 32-bit PowerPC, 64-bit + # PowerPC, and x86, with 32-bit PowerPC first. + # (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386" + ;; + + darwin8.*) + # + # All other Tiger, so subsequent to x86-64 + # support. Build for 32-bit PowerPC, 64-bit + # PowerPC, x86, and x86-64, and with 32-bit PowerPC + # first. (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64" + ;; + + darwin9.*) + # + # Leopard. Build for 32-bit PowerPC, 64-bit + # PowerPC, x86, and x86-64, with 32-bit PowerPC + # first. (That's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64" + ;; + + darwin10.*) + # + # Snow Leopard. Build for x86-64, x86, and + # 32-bit PowerPC, with x86-64 first. (That's + # what Apple does, even though Snow Leopard + # doesn't run on PPC, so PPC libpcap runs under + # Rosetta, and Rosetta doesn't support BPF + # ioctls, so PPC programs can't do live + # captures.) + # + V_CCOPT="$V_CCOPT -arch x86_64 -arch i386 -arch ppc" + LDFLAGS="$LDFLAGS -arch x86_64 -arch i386 -arch ppc" + ;; + + darwin*) + # + # Post-Snow Leopard. Build for x86-64 and + # x86, with x86-64 first. (That's probably what + # Apple does, given that Rosetta is gone.) + # XXX - update if and when Apple drops support + # for 32-bit x86 code. + # + V_CCOPT="$V_CCOPT -arch x86_64 -arch i386" + LDFLAGS="$LDFLAGS -arch x86_64 -arch i386" + ;; + esac + fi + ;; + +hpux9*) + +$as_echo "#define HAVE_HPUX9 1" >>confdefs.h + + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux10.0*) + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux10.1*) + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux*) + +$as_echo "#define HAVE_HPUX10_20_OR_LATER 1" >>confdefs.h + + if test "`uname -m`" = "ia64"; then + DYEXT="so" + else + DYEXT="sl" + fi + + # + # "-b" builds a shared library; "+h" sets the soname. + # + SHLIB_OPT="-b" + SONAME_OPT="+h" + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +irix*) + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +linux*|freebsd*|netbsd*|openbsd*|dragonfly*|kfreebsd*|gnu*) + DYEXT="so" + + # + # Compiler assumed to be GCC; run-time linker may require a -R + # flag. + # + if test "$libdir" != "/usr/lib"; then + V_RFLAGS=-Wl,-R$libdir + fi + ;; + +osf*) + DYEXT="so" + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +sinix*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if SINIX compiler defines sinix" >&5 +$as_echo_n "checking if SINIX compiler defines sinix... " >&6; } + if ${ac_cv_cc_sinix_defined+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int i = sinix; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_cc_sinix_defined=yes +else + ac_cv_cc_sinix_defined=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_sinix_defined" >&5 +$as_echo "$ac_cv_cc_sinix_defined" >&6; } + if test $ac_cv_cc_sinix_defined = no ; then + +$as_echo "#define sinix 1" >>confdefs.h + + fi + ;; + +solaris*) + +$as_echo "#define HAVE_SOLARIS 1" >>confdefs.h + + + DYEXT="so" + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; +esac + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; +fi + +test "x$enable_shared" = "xno" && DYEXT="none" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + + + +rm -f os-proto.h + if test "${LBL_CFLAGS+set}" = set; then + V_CCOPT="$V_CCOPT ${LBL_CFLAGS}" + fi + if test -f .devel ; then + # + # Skip all the warning option stuff on some compilers. + # + if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler fails when given an unknown warning option" >&5 +$as_echo_n "checking whether the compiler fails when given an unknown warning option... " >&6; } + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + # + # We're assuming this is clang, where + # -Werror=unknown-warning-option is the appropriate + # option to force the compiler to fail. + # + ac_lbl_unknown_warning_option_error="-Werror=unknown-warning-option" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wall option" >&5 +$as_echo_n "checking whether the compiler supports the -Wall option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wall" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wall" + elif expr "x-Wall" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wall" + elif expr "x-Wall" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wall" + else + CFLAGS="$CFLAGS -Wall" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wall" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wsign-compare option" >&5 +$as_echo_n "checking whether the compiler supports the -Wsign-compare option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wsign-compare" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wsign-compare" + elif expr "x-Wsign-compare" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wsign-compare" + elif expr "x-Wsign-compare" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wsign-compare" + else + CFLAGS="$CFLAGS -Wsign-compare" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wsign-compare" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wmissing-prototypes option" >&5 +$as_echo_n "checking whether the compiler supports the -Wmissing-prototypes option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wmissing-prototypes" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wmissing-prototypes" + elif expr "x-Wmissing-prototypes" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wmissing-prototypes" + elif expr "x-Wmissing-prototypes" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wmissing-prototypes" + else + CFLAGS="$CFLAGS -Wmissing-prototypes" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wmissing-prototypes" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wstrict-prototypes option" >&5 +$as_echo_n "checking whether the compiler supports the -Wstrict-prototypes option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wstrict-prototypes" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wstrict-prototypes" + elif expr "x-Wstrict-prototypes" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wstrict-prototypes" + elif expr "x-Wstrict-prototypes" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wstrict-prototypes" + else + CFLAGS="$CFLAGS -Wstrict-prototypes" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wstrict-prototypes" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wshadow option" >&5 +$as_echo_n "checking whether the compiler supports the -Wshadow option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wshadow" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wshadow" + elif expr "x-Wshadow" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wshadow" + elif expr "x-Wshadow" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wshadow" + else + CFLAGS="$CFLAGS -Wshadow" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wshadow" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wdeclaration-after-statement option" >&5 +$as_echo_n "checking whether the compiler supports the -Wdeclaration-after-statement option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wdeclaration-after-statement" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wdeclaration-after-statement" + elif expr "x-Wdeclaration-after-statement" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wdeclaration-after-statement" + elif expr "x-Wdeclaration-after-statement" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wdeclaration-after-statement" + else + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wdeclaration-after-statement" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wused-but-marked-unused option" >&5 +$as_echo_n "checking whether the compiler supports the -Wused-but-marked-unused option... " >&6; } + save_CFLAGS="$CFLAGS" + if expr "x-Wused-but-marked-unused" : "x-W.*" >/dev/null + then + CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wused-but-marked-unused" + elif expr "x-Wused-but-marked-unused" : "x-f.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wused-but-marked-unused" + elif expr "x-Wused-but-marked-unused" : "x-m.*" >/dev/null + then + CFLAGS="$CFLAGS -Werror -Wused-but-marked-unused" + else + CFLAGS="$CFLAGS -Wused-but-marked-unused" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$save_CFLAGS" + V_CCOPT="$V_CCOPT -Wused-but-marked-unused" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$save_CFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports generating dependencies" >&5 +$as_echo_n "checking whether the compiler supports generating dependencies... " >&6; } + if test "$GCC" = yes ; then + # + # GCC, or a compiler deemed to be GCC by AC_PROG_CC (even + # though it's not); we assume that, in this case, the flag + # would be -M. + # + ac_lbl_dependency_flag="-M" + else + # + # Not GCC or a compiler deemed to be GCC; what platform is + # this? (We're assuming that if the compiler isn't GCC + # it's the compiler from the vendor of the OS; that won't + # necessarily be true for x86 platforms, where it might be + # the Intel C compiler.) + # + case "$host_os" in + + irix*|osf*|darwin*) + # + # MIPS C for IRIX, DEC C, and clang all use -M. + # + ac_lbl_dependency_flag="-M" + ;; + + solaris*) + # + # Sun C uses -xM. + # + ac_lbl_dependency_flag="-xM" + ;; + + hpux*) + # + # HP's older C compilers don't support this. + # HP's newer C compilers support this with + # either +M or +Make; the older compilers + # interpret +M as something completely + # different, so we use +Make so we don't + # think it works with the older compilers. + # + ac_lbl_dependency_flag="+Make" + ;; + + *) + # + # Not one of the above; assume no support for + # generating dependencies. + # + ac_lbl_dependency_flag="" + ;; + esac + fi + + # + # Is ac_lbl_dependency_flag defined and, if so, does the compiler + # complain about it? + # + # Note: clang doesn't seem to exit with an error status when handed + # an unknown non-warning error, even if you pass it + # -Werror=unknown-warning-option. However, it always supports + # -M, so the fact that this test always succeeds with clang + # isn't an issue. + # + if test ! -z "$ac_lbl_dependency_flag"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF + echo "$CC" $ac_lbl_dependency_flag conftest.c >&5 + if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, with $ac_lbl_dependency_flag" >&5 +$as_echo "yes, with $ac_lbl_dependency_flag" >&6; } + DEPENDENCY_CFLAG="$ac_lbl_dependency_flag" + MKDEP='${srcdir}/mkdep' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + # + # We can't run mkdep, so have "make depend" do + # nothing. + # + MKDEP=: + fi + rm -rf conftest* + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + # + # We can't run mkdep, so have "make depend" do + # nothing. + # + MKDEP=: + fi + + + + # + # We used to set -n32 for IRIX 6 when not using GCC (presumed + # to mean that we're using MIPS C or MIPSpro C); it specified + # the "new" faster 32-bit ABI, introduced in IRIX 6.2. I'm + # not sure why that would be something to do *only* with a + # .devel file; why should the ABI for which we produce code + # depend on .devel? + # + os=`echo $host_os | sed -e 's/\([0-9][0-9]*\)[^0-9].*$/\1/'` + name="lbl/os-$os.h" + if test -f $name ; then + ln -s $name os-proto.h + +$as_echo "#define HAVE_OS_PROTO_H 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find $name" >&5 +$as_echo "$as_me: WARNING: can't find $name" >&2;} + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if sockaddr struct has the sa_len member" >&5 +$as_echo_n "checking if sockaddr struct has the sa_len member... " >&6; } + if ${ac_cv_lbl_sockaddr_has_sa_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +int +main () +{ +u_int i = sizeof(((struct sockaddr *)0)->sa_len) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_sockaddr_has_sa_len=yes +else + ac_cv_lbl_sockaddr_has_sa_len=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_sockaddr_has_sa_len" >&5 +$as_echo "$ac_cv_lbl_sockaddr_has_sa_len" >&6; } + if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then + +$as_echo "#define HAVE_SOCKADDR_SA_LEN 1" >>confdefs.h + + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if sockaddr_storage struct exists" >&5 +$as_echo_n "checking if sockaddr_storage struct exists... " >&6; } + if ${ac_cv_lbl_has_sockaddr_storage+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +int +main () +{ +u_int i = sizeof (struct sockaddr_storage) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_has_sockaddr_storage=yes +else + ac_cv_lbl_has_sockaddr_storage=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_has_sockaddr_storage" >&5 +$as_echo "$ac_cv_lbl_has_sockaddr_storage" >&6; } + if test $ac_cv_lbl_has_sockaddr_storage = yes ; then + +$as_echo "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h + + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member" >&5 +$as_echo_n "checking if dl_hp_ppa_info_t struct has dl_module_id_1 member... " >&6; } + if ${ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +# include +int +main () +{ +u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes +else + ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&5 +$as_echo "$ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&6; } + if test $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1 = yes ; then + +$as_echo "#define HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 1" >>confdefs.h + + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if unaligned accesses fail" >&5 +$as_echo_n "checking if unaligned accesses fail... " >&6; } + if ${ac_cv_lbl_unaligned_fail+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_cpu" in + + # + # These are CPU types where: + # + # the CPU faults on an unaligned access, but at least some + # OSes that support that CPU catch the fault and simulate + # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - + # the simulation is slow, so we don't want to use it; + # + # the CPU, I infer (from the old + # + # XXX: should also check that they don't do weird things (like on arm) + # + # comment) doesn't fault on unaligned accesses, but doesn't + # do a normal unaligned fetch, either (e.g., presumably, ARM); + # + # for whatever reason, the test program doesn't work + # (this has been claimed to be the case for several of those + # CPUs - I don't know what the problem is; the problem + # was reported as "the test program dumps core" for SuperH, + # but that's what the test program is *supposed* to do - + # it dumps core before it writes anything, so the test + # for an empty output file should find an empty output + # file and conclude that unaligned accesses don't work). + # + # This run-time test won't work if you're cross-compiling, so + # in order to support cross-compiling for a particular CPU, + # we have to wire in the list of CPU types anyway, as far as + # I know, so perhaps we should just have a set of CPUs on + # which we know it doesn't work, a set of CPUs on which we + # know it does work, and have the script just fail on other + # cpu types and update it when such a failure occurs. + # + alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1) + ac_cv_lbl_unaligned_fail=yes + ;; + + *) + cat >conftest.c < +# include +# include + unsigned char a[5] = { 1, 2, 3, 4, 5 }; + main() { + unsigned int i; + pid_t pid; + int status; + /* avoid "core dumped" message */ + pid = fork(); + if (pid < 0) + exit(2); + if (pid > 0) { + /* parent */ + pid = waitpid(pid, &status, 0); + if (pid < 0) + exit(3); + exit(!WIFEXITED(status)); + } + /* child */ + i = *(unsigned int *)&a[1]; + printf("%d\n", i); + exit(0); + } +EOF + ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ + conftest.c $LIBS >/dev/null 2>&1 + if test ! -x conftest ; then + ac_cv_lbl_unaligned_fail=yes + else + ./conftest >conftest.out + if test ! -s conftest.out ; then + ac_cv_lbl_unaligned_fail=yes + else + ac_cv_lbl_unaligned_fail=no + fi + fi + rm -f -r conftest* core core.conftest + ;; + esac +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_unaligned_fail" >&5 +$as_echo "$ac_cv_lbl_unaligned_fail" >&6; } + if test $ac_cv_lbl_unaligned_fail = yes ; then + +$as_echo "#define LBL_ALIGN 1" >>confdefs.h + + fi + +rm -f net +ln -s ${srcdir}/bpf/net net + + + + + + + + + + + + + + + + + + + +# Check whether --enable-usb was given. +if test "${enable_usb+set}" = set; then : + enableval=$enable_usb; +else + enable_usb=yes +fi + + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want USB support. + enable_usb=no +fi + +if test "x$enable_usb" != "xno" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for USB sniffing support" >&5 +$as_echo_n "checking for USB sniffing support... " >&6; } + case "$host_os" in + linux*) + +$as_echo "#define PCAP_SUPPORT_USB 1" >>confdefs.h + + USB_SRC=pcap-usb-linux.c + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + ac_usb_dev_name=`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/dev/null` + if test $? -ne 0 ; then + ac_usb_dev_name="usbmon" + fi + +cat >>confdefs.h <<_ACEOF +#define LINUX_USB_MON_DEV "/dev/$ac_usb_dev_name" +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: Device for USB sniffing is /dev/$ac_usb_dev_name" >&5 +$as_echo "$as_me: Device for USB sniffing is /dev/$ac_usb_dev_name" >&6;} + # + # Do we have a version of available? + # If so, we might need it for . + # + for ac_header in linux/compiler.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "linux/compiler.h" "ac_cv_header_linux_compiler_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_compiler_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_COMPILER_H 1 +_ACEOF + +fi + +done + + if test "$ac_cv_header_linux_compiler_h" = yes; then + # + # Yes - include it when testing for . + # + for ac_header in linux/usbdevice_fs.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/usbdevice_fs.h" "ac_cv_header_linux_usbdevice_fs_h" "#include +" +if test "x$ac_cv_header_linux_usbdevice_fs_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_USBDEVICE_FS_H 1 +_ACEOF + +fi + +done + + else + for ac_header in linux/usbdevice_fs.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "linux/usbdevice_fs.h" "ac_cv_header_linux_usbdevice_fs_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_usbdevice_fs_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_USBDEVICE_FS_H 1 +_ACEOF + +fi + +done + + fi + if test "$ac_cv_header_linux_usbdevice_fs_h" = yes; then + # + # OK, does it define bRequestType? Older versions of the kernel + # define fields with names like "requesttype, "request", and + # "value", rather than "bRequestType", "bRequest", and + # "wValue". + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if usbdevfs_ctrltransfer struct has bRequestType member" >&5 +$as_echo_n "checking if usbdevfs_ctrltransfer struct has bRequestType member... " >&6; } + if ${ac_cv_usbdevfs_ctrltransfer_has_bRequestType+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +$ac_includes_default +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +#ifdef HAVE_LINUX_COMPILER_H +#include +#endif +#include +int +main () +{ +u_int i = sizeof(((struct usbdevfs_ctrltransfer *)0)->bRequestType) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_usbdevfs_ctrltransfer_has_bRequestType=yes +else + ac_cv_usbdevfs_ctrltransfer_has_bRequestType=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_usbdevfs_ctrltransfer_has_bRequestType" >&5 +$as_echo "$ac_cv_usbdevfs_ctrltransfer_has_bRequestType" >&6; } + if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType = yes ; then + +$as_echo "#define HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1" >>confdefs.h + + fi + fi + ;; + freebsd*) + # + # This just uses BPF in FreeBSD 8.4 and later; we don't need + # to check for anything special for capturing. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in FreeBSD 8.4 and later" >&5 +$as_echo "yes, in FreeBSD 8.4 and later" >&6; } + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; +esac +fi + + + +if test "xxx_only" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the platform could support netfilter sniffing" >&5 +$as_echo_n "checking whether the platform could support netfilter sniffing... " >&6; } + case "$host_os" in + linux*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + # + # Life's too short to deal with trying to get this to compile + # if you don't get the right types defined with + # __KERNEL_STRICT_NAMES getting defined by some other include. + # + # Check whether the includes Just Work. If not, don't turn on + # netfilter support. + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can compile the netfilter support" >&5 +$as_echo_n "checking whether we can compile the netfilter support... " >&6; } + if ${ac_cv_netfilter_can_compile+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +$ac_includes_default +#include +#include +#include + +#include +#include +#include +#include +#include +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_netfilter_can_compile=yes +else + ac_cv_netfilter_can_compile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_netfilter_can_compile" >&5 +$as_echo "$ac_cv_netfilter_can_compile" >&6; } + if test $ac_cv_netfilter_can_compile = yes ; then + +$as_echo "#define PCAP_SUPPORT_NETFILTER 1" >>confdefs.h + + NETFILTER_SRC=pcap-netfilter-linux.c + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + +# Check whether --enable-bluetooth was given. +if test "${enable_bluetooth+set}" = set; then : + enableval=$enable_bluetooth; +else + enable_bluetooth=ifsupportavailable +fi + + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want Bluetooth support. + enable_bluetooth=no +fi + +if test "x$enable_bluetooth" != "xno" ; then + case "$host_os" in + linux*) + ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default" +if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then : + + +$as_echo "#define PCAP_SUPPORT_BT 1" >>confdefs.h + + BT_SRC=pcap-bt-linux.c + { $as_echo "$as_me:${as_lineno-$LINENO}: Bluetooth sniffing is supported" >&5 +$as_echo "$as_me: Bluetooth sniffing is supported" >&6;} + + # + # OK, does struct sockaddr_hci have an hci_channel + # member? + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_hci has hci_channel member" >&5 +$as_echo_n "checking if struct sockaddr_hci has hci_channel member... " >&6; } + if ${ac_cv_lbl_sockaddr_hci_has_hci_channel+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +u_int i = sizeof(((struct sockaddr_hci *)0)->hci_channel) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_sockaddr_hci_has_hci_channel=yes +else + ac_cv_lbl_sockaddr_hci_has_hci_channel=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_sockaddr_hci_has_hci_channel" >&5 +$as_echo "$ac_cv_lbl_sockaddr_hci_has_hci_channel" >&6; } + if test $ac_cv_lbl_sockaddr_hci_has_hci_channel = yes ; then + +$as_echo "#define SOCKADDR_HCI_HAS_HCI_CHANNEL /**/" >>confdefs.h + + + # + # OK, is HCI_CHANNEL_MONITOR defined? + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if HCI_CHANNEL_MONITOR is defined" >&5 +$as_echo_n "checking if HCI_CHANNEL_MONITOR is defined... " >&6; } + if ${ac_cv_lbl_hci_channel_monitor_is_defined+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +u_int i = HCI_CHANNEL_MONITOR + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_lbl_hci_channel_monitor_is_defined=yes +else + ac_cv_lbl_hci_channel_monitor_is_defined=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lbl_hci_channel_monitor_is_defined" >&5 +$as_echo "$ac_cv_lbl_hci_channel_monitor_is_defined" >&6; } + if test $ac_cv_lbl_hci_channel_monitor_is_defined = yes ; then + +$as_echo "#define PCAP_SUPPORT_BT_MONITOR /**/" >>confdefs.h + + BT_MONITOR_SRC=pcap-bt-monitor-linux.c + fi + fi + ac_lbl_bluetooth_available=yes + +else + ac_lbl_bluetooth_available=no + +fi + + + if test "x$ac_lbl_bluetooth_available" == "xno" ; then + if test "x$enable_bluetooth" = "xyes" ; then + as_fn_error $? "Bluetooth sniffing is not supported; install bluez-lib devel to enable it" "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: Bluetooth sniffing is not supported; install bluez-lib devel to enable it" >&5 +$as_echo "$as_me: Bluetooth sniffing is not supported; install bluez-lib devel to enable it" >&6;} + fi + fi + ;; + *) + if test "x$enable_bluetooth" = "xyes" ; then + as_fn_error $? "no Bluetooth sniffing support implemented for $host_os" "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: no Bluetooth sniffing support implemented for $host_os" >&5 +$as_echo "$as_me: no Bluetooth sniffing support implemented for $host_os" >&6;} + fi + ;; + esac + + + +fi + +# Check whether --enable-dbus was given. +if test "${enable_dbus+set}" = set; then : + enableval=$enable_dbus; +else + enable_dbus=ifavailable +fi + + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want D-Bus support. + enable_dbus=no +fi + +if test "x$enable_dbus" != "xno"; then + if test "x$enable_dbus" = "xyes"; then + case "$host_os" in + + darwin*) + # + # We don't support D-Bus sniffing on OS X; see + # + # https://bugs.freedesktop.org/show_bug.cgi?id=74029 + # + # The user requested it, so fail. + # + as_fn_error $? "Due to freedesktop.org bug 74029, D-Bus capture support is not available on OS X" "$LINENO" 5 + esac + else + case "$host_os" in + + darwin*) + # + # We don't support D-Bus sniffing on OS X; see + # + # https://bugs.freedesktop.org/show_bug.cgi?id=74029 + # + # The user dind't explicitly request it, so just + # silently refuse to enable it. + # + enable_dbus="no" + ;; + esac + fi +fi + +if test "x$enable_dbus" != "xno"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PKGCONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PKGCONFIG"; then + ac_cv_prog_PKGCONFIG="$PKGCONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PKGCONFIG="pkg-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PKGCONFIG" && ac_cv_prog_PKGCONFIG="no" +fi +fi +PKGCONFIG=$ac_cv_prog_PKGCONFIG +if test -n "$PKGCONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 +$as_echo "$PKGCONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$PKGCONFIG" != "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for D-Bus" >&5 +$as_echo_n "checking for D-Bus... " >&6; } + if "$PKGCONFIG" dbus-1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + DBUS_CFLAGS=`"$PKGCONFIG" --cflags dbus-1` + DBUS_LIBS=`"$PKGCONFIG" --libs dbus-1` + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + CFLAGS="$CFLAGS $DBUS_CFLAGS" + LIBS="$LIBS $DBUS_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the D-Bus library defines dbus_connection_read_write" >&5 +$as_echo_n "checking whether the D-Bus library defines dbus_connection_read_write... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + #include + #include + + #include +int +main () +{ +return dbus_connection_read_write(NULL, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define PCAP_SUPPORT_DBUS 1" >>confdefs.h + + DBUS_SRC=pcap-dbus.c + V_INCLS="$V_INCLS $DBUS_CFLAGS" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_dbus" = "xyes"; then + as_fn_error $? "--enable-dbus was given, but the D-Bus library doesn't define dbus_connection_read_write()" "$LINENO" 5 + fi + LIBS="$save_LIBS" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_dbus" = "xyes"; then + as_fn_error $? "--enable-dbus was given, but the dbus-1 package is not installed" "$LINENO" 5 + fi + fi + fi + + +fi + +case "$host_os" in +linux*) + for ac_header in linux/net_tstamp.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "linux/net_tstamp.h" "ac_cv_header_linux_net_tstamp_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_net_tstamp_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_NET_TSTAMP_H 1 +_ACEOF + +fi + +done + + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: no hardware timestamp support implemented for $host_os" >&5 +$as_echo "$as_me: no hardware timestamp support implemented for $host_os" >&6;} + ;; +esac + +# Check whether --enable-packet-ring was given. +if test "${enable_packet_ring+set}" = set; then : + enableval=$enable_packet_ring; +else + enable_packet_ring=yes +fi + + +if test "x$enable_packet_ring" != "xno" ; then + +$as_echo "#define PCAP_SUPPORT_PACKET_RING 1" >>confdefs.h + + +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +ac_config_headers="$ac_config_headers config.h" + + +ac_config_commands="$ac_config_commands default-1" + +ac_config_files="$ac_config_files Makefile pcap-filter.manmisc pcap-linktype.manmisc pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap pcap_get_tstamp_precision.3pcap pcap_list_datalinks.3pcap pcap_list_tstamp_types.3pcap pcap_open_dead.3pcap pcap_open_offline.3pcap pcap_set_tstamp_precision.3pcap pcap_set_tstamp_type.3pcap" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "pcap-filter.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-filter.manmisc" ;; + "pcap-linktype.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-linktype.manmisc" ;; + "pcap-tstamp.manmisc") CONFIG_FILES="$CONFIG_FILES pcap-tstamp.manmisc" ;; + "pcap-savefile.manfile") CONFIG_FILES="$CONFIG_FILES pcap-savefile.manfile" ;; + "pcap.3pcap") CONFIG_FILES="$CONFIG_FILES pcap.3pcap" ;; + "pcap_compile.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_compile.3pcap" ;; + "pcap_datalink.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_datalink.3pcap" ;; + "pcap_dump_open.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_dump_open.3pcap" ;; + "pcap_get_tstamp_precision.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_get_tstamp_precision.3pcap" ;; + "pcap_list_datalinks.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_list_datalinks.3pcap" ;; + "pcap_list_tstamp_types.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_list_tstamp_types.3pcap" ;; + "pcap_open_dead.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_open_dead.3pcap" ;; + "pcap_open_offline.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_open_offline.3pcap" ;; + "pcap_set_tstamp_precision.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_set_tstamp_precision.3pcap" ;; + "pcap_set_tstamp_type.3pcap") CONFIG_FILES="$CONFIG_FILES pcap_set_tstamp_type.3pcap" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default-1":C) if test -f .devel; then + echo timestamp > stamp-h + cat Makefile-devel-adds >> Makefile + make depend +fi ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + +exit 0 diff --git a/libpcap-1.8.1/configure.ac b/libpcap-1.8.1/configure.ac new file mode 100644 index 00000000..da2f940d --- /dev/null +++ b/libpcap-1.8.1/configure.ac @@ -0,0 +1,1821 @@ +dnl +dnl Copyright (c) 1994, 1995, 1996, 1997 +dnl The Regents of the University of California. All rights reserved. +dnl +dnl Process this file with autoconf to produce a configure script. +dnl + +# +# See +# +# http://ftp.gnu.org/gnu/config/README +# +# for the URLs to use to fetch new versions of config.guess and +# config.sub. +# + +AC_PREREQ(2.61) +AC_INIT(pcap.c) + +AC_CANONICAL_SYSTEM + +AC_LBL_C_INIT_BEFORE_CC(V_CCOPT, V_INCLS) +AC_PROG_CC +AC_LBL_C_INIT(V_CCOPT, V_INCLS) +AC_LBL_SHLIBS_INIT +AC_LBL_C_INLINE +AC_C___ATTRIBUTE__ +if test "$ac_cv___attribute__" = "yes"; then + AC_C___ATTRIBUTE___UNUSED + AC_C___ATTRIBUTE___FORMAT +fi + +AC_CHECK_HEADERS(sys/bitypes.h) + +AC_CHECK_TYPE([int8_t], , + [AC_DEFINE([int8_t], [signed char], + [Define to `signed char' if int8_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([u_int8_t], , + [AC_DEFINE([u_int8_t], [unsigned char], + [Define to `unsigned char' if u_int8_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([int16_t], , + [AC_DEFINE([int16_t], [short], + [Define to `short' if int16_t not defined.])] + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([u_int16_t], , + [AC_DEFINE([u_int16_t], [unsigned short], + [Define to `unsigned short' if u_int16_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([int32_t], , + [AC_DEFINE([int32_t], [int], + [Define to `int' if int32_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([u_int32_t], , + [AC_DEFINE([u_int32_t], [unsigned int], + [Define to `unsigned int' if u_int32_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([int64_t], , + [AC_DEFINE([int64_t], [long long], + [Define to `long long' if int64_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) +AC_CHECK_TYPE([u_int64_t], , + [AC_DEFINE([u_int64_t], [unsigned long long], + [Define to `unsigned long long' if u_int64_t not defined.])], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif]) + +# +# Try to arrange for large file support. +# +AC_SYS_LARGEFILE +AC_FUNC_FSEEKO + +dnl +dnl Even if were, on all OSes that support BPF, fixed to +dnl include , and we were to drop support for older +dnl releases without that fix, so that pcap-bpf.c doesn't need to +dnl include , the test program in "AC_LBL_FIXINCLUDES" +dnl in "aclocal.m4" uses it, so we would still have to test for it +dnl and set "HAVE_SYS_IOCCOM_H" if we have it, otherwise +dnl "AC_LBL_FIXINCLUDES" wouldn't work on some platforms such as Solaris. +dnl +AC_CHECK_HEADERS(sys/ioccom.h sys/select.h sys/sockio.h limits.h) +AC_CHECK_HEADERS(linux/types.h) +AC_CHECK_HEADERS(linux/if_packet.h netpacket/packet.h netpacket/if_packet.h) +AC_CHECK_HEADERS(net/pfvar.h, , , [#include +#include +#include ]) +if test "$ac_cv_header_net_pfvar_h" = yes; then + # + # Check for various PF actions. + # + AC_MSG_CHECKING(whether net/pfvar.h defines PF_NAT through PF_NORDR) + AC_TRY_COMPILE( + [#include + #include + #include + #include ], + [return PF_NAT+PF_NONAT+PF_BINAT+PF_NOBINAT+PF_RDR+PF_NORDR;], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PF_NAT_THROUGH_PF_NORDR, 1, + [define if net/pfvar.h defines PF_NAT through PF_NORDR]) + ], + AC_MSG_RESULT(no)) +fi +AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include +#include ]) +if test "$ac_cv_header_netinet_if_ether_h" != yes; then + # + # The simple test didn't work. + # Do we need to include first? + # Unset ac_cv_header_netinet_if_ether_h so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + AC_MSG_NOTICE([Rechecking with some additional includes]) + unset ac_cv_header_netinet_if_ether_h + AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include +#include +#include +struct mbuf; +struct rtentry; +#include ]) +fi + +case "$host_os" in +linux*|uclinux*) + AC_CHECK_HEADERS(linux/sockios.h linux/if_bonding.h,,, + [ +#include +#include + ]) + ;; +esac + +AC_LBL_FIXINCLUDES + +AC_CHECK_FUNCS(strerror strlcpy) + +needsnprintf=no +AC_CHECK_FUNCS(vsnprintf snprintf,, + [needsnprintf=yes]) +if test $needsnprintf = yes; then + AC_LIBOBJ([snprintf]) +fi + +needstrtok_r=no +AC_CHECK_FUNCS(strtok_r,, + [needstrtok_r=yes]) +if test $needstrtok_r = yes; then + AC_LIBOBJ([strtok_r]) +fi + +# +# Do this before checking for ether_hostton(), as it's a +# "gethostbyname() -ish function". +# +AC_LBL_LIBRARY_NET + +# +# You are in a twisty little maze of UN*Xes, all different. +# Some might not have ether_hostton(). +# Some might have it, but not declare it in any header file. +# Some might have it, but declare it in . +# Some might have it, but declare it in +# (And some might have it but document it as something declared in +# , although appears to work.) +# +# Before you is a C compiler. +# +AC_CHECK_FUNCS(ether_hostton) +if test "$ac_cv_func_ether_hostton" = yes; then + # + # OK, we have ether_hostton(). Do we have ? + # + if test "$ac_cv_header_netinet_if_ether_h" = yes; then + # + # Yes. Does it declare ether_hostton()? + # + AC_CHECK_DECL(ether_hostton, + [ + AC_DEFINE(NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON,, + [Define to 1 if netinet/if_ether.h declares `ether_hostton']) + ],, + [ +#include +#include +#include +#include +struct mbuf; +struct rtentry; +#include +#include + ]) + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_hostton" != yes; then + # + # No, how about , as on Linux? + # + AC_CHECK_HEADERS(netinet/ether.h) + if test "$ac_cv_header_netinet_ether_h" = yes; then + # + # We have it - does it declare ether_hostton()? + # Unset ac_cv_have_decl_ether_hostton so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_hostton + AC_CHECK_DECL(ether_hostton, + [ + AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_HOSTTON,, + [Define to 1 if netinet/ether.h declares `ether_hostton']) + ],, + [ +#include + ]) + fi + fi + # + # Is ether_hostton() declared? + # + if test "$ac_cv_have_decl_ether_hostton" != yes; then + # + # No, we'll have to declare it ourselves. + # Do we have "struct ether_addr"? + # + AC_CHECK_TYPES(struct ether_addr,,, + [ +#include +#include +#include +#include +struct mbuf; +struct rtentry; +#include +#include + ]) + AC_DEFINE(HAVE_DECL_ETHER_HOSTTON, 0, + [Define to 1 if you have the declaration of `ether_hostton', and to 0 if you +don't.]) + else + AC_DEFINE(HAVE_DECL_ETHER_HOSTTON, 1, + [Define to 1 if you have the declaration of `ether_hostton', and to 0 if you +don't.]) + fi +fi + +dnl to pacify those who hate protochain insn +AC_MSG_CHECKING(if --disable-protochain option is specified) +AC_ARG_ENABLE(protochain, +AC_HELP_STRING([--disable-protochain],[disable \"protochain\" insn])) +case "x$enable_protochain" in +xyes) enable_protochain=enabled ;; +xno) enable_protochain=disabled ;; +x) enable_protochain=enabled ;; +esac + +if test "$enable_protochain" = "disabled"; then + AC_DEFINE(NO_PROTOCHAIN,1,[do not use protochain]) +fi +AC_MSG_RESULT(${enable_protochain}) + +# +# valgrindtest directly uses the native capture mechanism, but +# only tests with BPF and PF_PACKET sockets; only enable it if +# we have BPF or PF_PACKET sockets. +# +VALGRINDTEST= + +# +# SITA support is mutually exclusive with native capture support; +# "--with-sita" selects SITA support. +# +AC_ARG_WITH(sita, +AC_HELP_STRING([--with-sita],[include SITA support]), +[ + if test ! "x$withval" = "xno" ; then + AC_DEFINE(SITA,1,[include ACN support]) + AC_MSG_NOTICE(Enabling SITA ACN support) + V_PCAP=sita + fi +], +[ +dnl +dnl Not all versions of test support -c (character special) but it's a +dnl better way of testing since the device might be protected. So we +dnl check in our normal order using -r and then check the for the /dev +dnl guys again using -c. +dnl +dnl XXX This could be done for cross-compiling, but for now it's not. +dnl +if test -z "$with_pcap" && test "$cross_compiling" = yes; then + AC_MSG_ERROR(pcap type not determined when cross-compiling; use --with-pcap=...) +fi +AC_ARG_WITH(pcap, +AC_HELP_STRING([--with-pcap=TYPE],[use packet capture TYPE])) +AC_MSG_CHECKING(packet capture type) +if test ! -z "$with_pcap" ; then + V_PCAP="$withval" +elif test -r /dev/bpf -o -h /dev/bpf ; then + # + # Cloning BPF device. + # + V_PCAP=bpf + AC_DEFINE(HAVE_CLONING_BPF,1,[define if you have a cloning BPF device]) + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /dev/bpf0 ; then + V_PCAP=bpf + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/net/pfilt.h ; then + V_PCAP=pf +elif test -r /dev/enet ; then + V_PCAP=enet +elif test -r /dev/nit ; then + V_PCAP=snit +elif test -r /usr/include/sys/net/nit.h ; then + V_PCAP=nit +elif test -r /usr/include/linux/socket.h ; then + V_PCAP=linux + + # + # XXX - this won't work with older kernels that have SOCK_PACKET + # sockets but not PF_PACKET sockets. + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/net/raw.h ; then + V_PCAP=snoop +elif test -r /usr/include/odmi.h ; then + # + # On AIX, the BPF devices might not yet be present - they're + # created the first time libpcap runs after booting. + # We check for odmi.h instead. + # + V_PCAP=bpf +elif test -c /dev/bpf0 ; then # check again in case not readable + V_PCAP=bpf + + # + # We have BPF, so build valgrindtest with "make test". + # + VALGRINDTEST=valgrindtest +elif test -r /usr/include/sys/dlpi.h ; then + V_PCAP=dlpi +elif test -c /dev/enet ; then # check again in case not readable + V_PCAP=enet +elif test -c /dev/nit ; then # check again in case not readable + V_PCAP=snit +else + V_PCAP=null +fi +AC_MSG_RESULT($V_PCAP) +AC_SUBST(VALGRINDTEST) + +# +# Do capture-mechanism-dependent tests. +# +case "$V_PCAP" in +dlpi) + # + # Needed for common functions used by pcap-[dlpi,libdlpi].c + # + SSRC="dlpisubs.c" + + # + # Checks for some header files. + # + AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h) + + # + # Checks to see if Solaris has the public libdlpi(3LIB) library. + # Note: The existence of /usr/include/libdlpi.h does not mean it is the + # public libdlpi(3LIB) version. Before libdlpi was made public, a + # private version also existed, which did not have the same APIs. + # Due to a gcc bug, the default search path for 32-bit libraries does + # not include /lib, we add it explicitly here. + # [http://bugs.opensolaris.org/view_bug.do?bug_id=6619485]. + # Also, due to the bug above applications that link to libpcap with + # libdlpi will have to add "-L/lib" option to "configure". + # + saved_ldflags=$LDFLAGS + LDFLAGS="$LIBS -L/lib" + AC_CHECK_LIB(dlpi, dlpi_walk, + [ + LIBS="-ldlpi $LIBS" + V_PCAP=libdlpi + AC_DEFINE(HAVE_LIBDLPI,1,[if libdlpi exists]) + ], + V_PCAP=dlpi) + LDFLAGS=$saved_ldflags + + # + # Checks whether is usable, to catch weird SCO + # versions of DLPI. + # + AC_MSG_CHECKING(whether is usable) + AC_CACHE_VAL(ac_cv_sys_dlpi_usable, + AC_TRY_COMPILE( + [ + #include + #include + #include + ], + [int i = DL_PROMISC_PHYS;], + ac_cv_sys_dlpi_usable=yes, + ac_cv_sys_dlpi_usable=no)) + AC_MSG_RESULT($ac_cv_sys_dlpi_usable) + if test $ac_cv_sys_dlpi_usable = no ; then + AC_MSG_ERROR( is not usable on this system; it probably has a non-standard DLPI) + fi + + # + # Check whether we have a /dev/dlpi device or have multiple devices. + # + AC_MSG_CHECKING(for /dev/dlpi device) + if test -c /dev/dlpi ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DEV_DLPI, 1, [define if you have a /dev/dlpi]) + 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(PCAP_DEV_PREFIX, "$dir", [/dev/dlpi directory]) + else + AC_MSG_RESULT(no) + fi + fi + + # + # This check is for Solaris with DLPI support for passive modes. + # See dlpi(7P) for more details. + # + AC_LBL_DL_PASSIVE_REQ_T + ;; + +linux) + # + # Do we have the wireless extensions? + # + AC_CHECK_HEADERS(linux/wireless.h, [], [], + [ +#include +#include +#include + ]) + + # + # Do we have libnl? + # + AC_ARG_WITH(libnl, + AC_HELP_STRING([--without-libnl],[disable libnl support @<:@default=yes, on Linux, if present@:>@]), + with_libnl=$withval,,) + + if test x$with_libnl != xno ; then + have_any_nl="no" + + incdir=-I/usr/include/libnl3 + libnldir= + if test x$withval != x ; then + libnldir=-L${withval}/lib/.libs + incdir=-I${withval}/include + fi + + # + # Try libnl 3.x first. + # + AC_CHECK_LIB(nl-3, nl_socket_alloc, + [ + # + # Yes, we have libnl 3.x. + # + LIBS="${libnldir} -lnl-genl-3 -lnl-3 $LIBS" + AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]) + AC_DEFINE(HAVE_LIBNL_3_x,1,[if libnl exists and is version 3.x]) + AC_DEFINE(HAVE_LIBNL_NLE,1,[libnl has NLE_FAILURE]) + AC_DEFINE(HAVE_LIBNL_SOCKETS,1,[libnl has new-style socket api]) + V_INCLS="$V_INCLS ${incdir}" + have_any_nl="yes" + ],[], ${incdir} ${libnldir} -lnl-genl-3 -lnl-3 ) + + if test x$have_any_nl = xno ; then + # + # Try libnl 2.x + # + AC_CHECK_LIB(nl, nl_socket_alloc, + [ + # + # Yes, we have libnl 2.x. + # + LIBS="${libnldir} -lnl-genl -lnl $LIBS" + AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]) + AC_DEFINE(HAVE_LIBNL_2_x,1,[if libnl exists and is version 2.x]) + AC_DEFINE(HAVE_LIBNL_NLE,1,[libnl has NLE_FAILURE]) + AC_DEFINE(HAVE_LIBNL_SOCKETS,1,[libnl has new-style socket api]) + have_any_nl="yes" + ]) + fi + + if test x$have_any_nl = xno ; then + # + # No, we don't; do we have libnl 1.x? + # + AC_CHECK_LIB(nl, nl_handle_alloc, + [ + # + # Yes. + # + LIBS="${libnldir} -lnl $LIBS" + AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]) + have_any_nl="yes" + ]) + fi + + if test x$have_any_nl = xno ; then + # + # No, we don't have libnl at all. + # + if test x$with_libnl = xyes ; then + AC_MSG_ERROR([libnl support requested but libnl not found]) + fi + fi + fi + + AC_CHECK_HEADERS(linux/ethtool.h,,, + [ +AC_INCLUDES_DEFAULT +#include + ]) + AC_LBL_TPACKET_STATS + AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI + ;; + +bpf) + # + # Check whether we have the *BSD-style ioctls. + # + AC_CHECK_HEADERS(net/if_media.h) + + AC_MSG_CHECKING(whether the system supports zerocopy BPF) + AC_TRY_COMPILE( + [#include + #include + #include + #include ], + [return (BIOCROTZBUF + BPF_BUFMODE_ZBUF);], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ZEROCOPY_BPF, 1, + [define if the system supports zerocopy BPF]) + ], + AC_MSG_RESULT(no)) + + # + # Check whether we have struct BPF_TIMEVAL. + # + AC_CHECK_TYPES(struct BPF_TIMEVAL,,, + [ +#include +#include +#ifdef HAVE_SYS_IOCCOM_H +#include +#endif +#include + ]) + ;; + +dag) + # + # --with-pcap=dag is the only way to get here, and it means + # "DAG support but nothing else" + # + V_DEFS="$V_DEFS -DDAG_ONLY" + xxx_only=yes + ;; + +septel) + # + # --with-pcap=septel is the only way to get here, and it means + # "Septel support but nothing else" + # + V_DEFS="$V_DEFS -DSEPTEL_ONLY" + xxx_only=yes + ;; + +snf) + # + # --with-pcap=snf is the only way to get here, and it means + # "SNF support but nothing else" + # + V_DEFS="$V_DEFS -DSNF_ONLY" + xxx_only=yes + ;; + +null) + AC_MSG_WARN(cannot determine packet capture interface) + AC_MSG_WARN((see the INSTALL doc for more info)) + ;; +esac + +dnl +dnl Now figure out how we get a list of interfaces and addresses, +dnl if we support capturing. Don't bother if we don't support +dnl capturing. +dnl +if test "$V_PCAP" != null +then + AC_CHECK_FUNC(getifaddrs,[ + # + # We have "getifaddrs()"; make sure we have + # as well, just in case some platform is really weird. + # + AC_CHECK_HEADER(ifaddrs.h,[ + # + # We have the header, so we use "getifaddrs()" to + # get the list of interfaces. + # + V_FINDALLDEVS=fad-getad.c + ],[ + # + # We don't have the header - give up. + # XXX - we could also fall back on some other + # mechanism, but, for now, this'll catch this + # problem so that we can at least try to figure + # out something to do on systems with "getifaddrs()" + # but without "ifaddrs.h", if there is something + # we can do on those systems. + # + AC_MSG_ERROR([Your system has getifaddrs() but doesn't have a usable .]) + ]) + ],[ + # + # Well, we don't have "getifaddrs()", so we have to use + # some other mechanism; determine what that mechanism is. + # + # The first thing we use is the type of capture mechanism, + # which is somewhat of a proxy for the OS we're using. + # + case "$V_PCAP" in + + dlpi|libdlpi) + # + # This might be Solaris 8 or later, with + # SIOCGLIFCONF, or it might be some other OS + # or some older version of Solaris, with + # just SIOCGIFCONF. + # + AC_MSG_CHECKING(whether we have SIOCGLIFCONF) + AC_CACHE_VAL(ac_cv_lbl_have_siocglifconf, + AC_TRY_COMPILE( + [#include + #include + #include + #include + #include ], + [ioctl(0, SIOCGLIFCONF, (char *)0);], + ac_cv_lbl_have_siocglifconf=yes, + ac_cv_lbl_have_siocglifconf=no)) + AC_MSG_RESULT($ac_cv_lbl_have_siocglifconf) + if test $ac_cv_lbl_have_siocglifconf = yes ; then + V_FINDALLDEVS=fad-glifc.c + else + V_FINDALLDEVS=fad-gifc.c + fi + ;; + + *) + # + # Assume we just have SIOCGIFCONF. + # (XXX - on at least later Linux kernels, there's + # another mechanism, and we should be using that + # instead.) + # + V_FINDALLDEVS=fad-gifc.c + ;; + esac]) +fi +]) + +AC_MSG_CHECKING(for socklen_t) +AC_TRY_COMPILE([ + #include + #include + ], + [ socklen_t x; ], + have_socklen_t=yes, + have_socklen_t=no) +if test "x$have_socklen_t" = "xyes"; then + AC_DEFINE(HAVE_SOCKLEN_T, 1, [define if socklen_t is defined]) +fi +AC_MSG_RESULT($have_socklen_t) + +AC_ARG_ENABLE(ipv6, +AC_HELP_STRING([--enable-ipv6],[build IPv6-capable version @<:@default=yes, if getaddrinfo available@:>@]), + [], + [enable_ipv6=ifavailable]) +if test "$enable_ipv6" != "no"; then + AC_CHECK_FUNC(getaddrinfo, + [ + AC_DEFINE(INET6,1,[IPv6]) + ], + [ + if test "$enable_ipv6" != "ifavailable"; then + AC_MSG_FAILURE([--enable-ipv6 was given, but getaddrinfo isn't available]) + fi + ]) +fi + +AC_MSG_CHECKING(whether to build optimizer debugging code) +AC_ARG_ENABLE(optimizer-dbg, +AC_HELP_STRING([--enable-optimizer-dbg],[build optimizer debugging code])) +if test "$enable_optimizer_dbg" = "yes"; then + AC_DEFINE(BDEBUG,1,[Enable optimizer debugging]) +fi +AC_MSG_RESULT(${enable_optimizer_dbg-no}) + +AC_MSG_CHECKING(whether to build parser debugging code) +AC_ARG_ENABLE(yydebug, +AC_HELP_STRING([--enable-yydebug],[build parser debugging code])) +if test "$enable_yydebug" = "yes"; then + AC_DEFINE(YYDEBUG,1,[Enable parser debugging]) +fi +AC_MSG_RESULT(${enable_yydebug-no}) + +# Check for Endace DAG card support. +AC_ARG_WITH([dag], +AC_HELP_STRING([--with-dag@<:@=DIR@:>@],[include Endace DAG support (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ + if test "$withval" = no + then + # User doesn't want DAG support. + want_dag=no + elif test "$withval" = yes + then + # User wants DAG support but hasn't specified a directory. + want_dag=yes + else + # User wants DAG support and has specified a directory, so use the provided value. + want_dag=yes + dag_root=$withval + fi +],[ + if test "$V_PCAP" = dag; then + # User requested DAG-only libpcap, so we'd better have + # the DAG API. + want_dag=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want DAG support. + want_dag=no + else + # + # Use DAG API if present, otherwise don't + # + want_dag=ifpresent + fi +]) + +AC_ARG_WITH([dag-includes], +AC_HELP_STRING([--with-dag-includes=IDIR],[Endace DAG include directory, if not DIR/include]), +[ + # User wants DAG support and has specified a header directory, so use the provided value. + want_dag=yes + dag_include_dir=$withval +],[]) + +AC_ARG_WITH([dag-libraries], +AC_HELP_STRING([--with-dag-libraries=LDIR],[Endace DAG library directory, if not DIR/lib]), +[ + # User wants DAG support and has specified a library directory, so use the provided value. + want_dag=yes + dag_lib_dir=$withval +],[]) + +ac_cv_lbl_dag_api=no +if test "$want_dag" != no; then + + AC_MSG_CHECKING([whether we have DAG API headers]) + + # If necessary, set default paths for DAG API headers and libraries. + if test -z "$dag_root"; then + dag_root=/usr/local + fi + + if test -z "$dag_include_dir"; then + dag_include_dir="$dag_root/include" + fi + + if test -z "$dag_lib_dir"; then + dag_lib_dir="$dag_root/lib" + fi + + if test -z "$dag_tools_dir"; then + dag_tools_dir="$dag_root/tools" + fi + + if test -r $dag_include_dir/dagapi.h; then + ac_cv_lbl_dag_api=yes + fi + + if test "$ac_cv_lbl_dag_api" = yes; then + AC_MSG_RESULT([yes ($dag_include_dir)]) + + V_INCLS="$V_INCLS -I$dag_include_dir" + + if test $V_PCAP != dag ; then + SSRC="$SSRC pcap-dag.c" + fi + + # See if we can find a general version string. + # Don't need to save and restore LIBS to prevent -ldag being + # included if there's a found-action (arg 3). + saved_ldflags=$LDFLAGS + LDFLAGS="-L$dag_lib_dir" + AC_CHECK_LIB([dag], [dag_attach_stream], [dag_streams="1"], [dag_streams="0"]) + AC_CHECK_LIB([dag],[dag_get_erf_types], [ + AC_DEFINE(HAVE_DAG_GET_ERF_TYPES, 1, [define if you have dag_get_erf_types()])]) + AC_CHECK_LIB([dag],[dag_get_stream_erf_types], [ + AC_DEFINE(HAVE_DAG_GET_STREAM_ERF_TYPES, 1, [define if you have dag_get_stream_erf_types()])]) + + LDFLAGS=$saved_ldflags + + if test "$dag_streams" = 1; then + AC_DEFINE(HAVE_DAG_STREAMS_API, 1, [define if you have streams capable DAG API]) + LIBS="$LIBS -ldag" + LDFLAGS="$LDFLAGS -L$dag_lib_dir" + + AC_CHECK_LIB([vdag],[vdag_set_device_info], [ac_dag_have_vdag="1"], [ac_dag_have_vdag="0"]) + if test "$ac_dag_have_vdag" = 1; then + AC_DEFINE(HAVE_DAG_VDAG, 1, [define if you have vdag_set_device_info()]) + LIBS="$LIBS -lpthread" + fi + fi + + AC_DEFINE(HAVE_DAG_API, 1, [define if you have the DAG API]) + else + AC_MSG_RESULT(no) + + if test "$V_PCAP" = dag; then + # User requested "dag" capture type but we couldn't + # find the DAG API support. + AC_MSG_ERROR([DAG support requested with --with-pcap=dag, but the DAG headers weren't found at $dag_include_dir: make sure the DAG support is installed, specify a different path or paths if necessary, or don't request DAG support]) + fi + + if test "$want_dag" = yes; then + # User wanted DAG support but we couldn't find it. + AC_MSG_ERROR([DAG support requested with --with-dag, but the DAG headers weren't found at $dag_include_dir: make sure the DAG support is installed, specify a different path or paths if necessary, or don't request DAG support]) + fi + fi +fi + +AC_ARG_WITH(septel, +AC_HELP_STRING([--with-septel@<:@=DIR@:>@],[include Septel support (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ + if test "$withval" = no + then + want_septel=no + elif test "$withval" = yes + then + want_septel=yes + septel_root= + else + want_septel=yes + septel_root=$withval + fi +],[ + if test "$V_PCAP" = septel; then + # User requested Septel-only libpcap, so we'd better have + # the Septel API. + want_septel=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want Septel support. + want_septel=no + else + # + # Use Septel API if present, otherwise don't + # + want_septel=ifpresent + fi +]) + +ac_cv_lbl_septel_api=no +if test "$with_septel" != no; then + + AC_MSG_CHECKING([whether we have Septel API headers]) + + # If necessary, set default paths for Septel API headers and libraries. + if test -z "$septel_root"; then + septel_root=$srcdir/../septel + fi + + septel_tools_dir="$septel_root" + septel_include_dir="$septel_root/INC" + + if test -r "$septel_include_dir/msg.h"; then + ac_cv_lbl_septel_api=yes + fi + + if test "$ac_cv_lbl_septel_api" = yes; then + AC_MSG_RESULT([yes ($septel_include_dir)]) + + V_INCLS="$V_INCLS -I$septel_include_dir" + ADDLOBJS="$ADDLOBJS $septel_tools_dir/asciibin.o $septel_tools_dir/bit2byte.o $septel_tools_dir/confirm.o $septel_tools_dir/fmtmsg.o $septel_tools_dir/gct_unix.o $septel_tools_dir/hqueue.o $septel_tools_dir/ident.o $septel_tools_dir/mem.o $septel_tools_dir/pack.o $septel_tools_dir/parse.o $septel_tools_dir/pool.o $septel_tools_dir/sdlsig.o $septel_tools_dir/strtonum.o $septel_tools_dir/timer.o $septel_tools_dir/trace.o" + ADDLARCHIVEOBJS="$ADDLARCHIVEOBJS $septel_tools_dir/asciibin.o $septel_tools_dir/bit2byte.o $septel_tools_dir/confirm.o $septel_tools_dir/fmtmsg.o $septel_tools_dir/gct_unix.o $septel_tools_dir/hqueue.o $septel_tools_dir/ident.o $septel_tools_dir/mem.o $septel_tools_dir/pack.o $septel_tools_dir/parse.o $septel_tools_dir/pool.o $septel_tools_dir/sdlsig.o $septel_tools_dir/strtonum.o $septel_tools_dir/timer.o $septel_tools_dir/trace.o" + + if test "$V_PCAP" != septel ; then + SSRC="$SSRC pcap-septel.c" + fi + + AC_DEFINE(HAVE_SEPTEL_API, 1, [define if you have the Septel API]) + else + AC_MSG_RESULT(no) + + if test "$V_PCAP" = septel; then + # User requested "septel" capture type but + # we couldn't find the Septel API support. + AC_MSG_ERROR([Septel support requested with --with-pcap=septel, but the Septel headers weren't found at $septel_include_dir: make sure the Septel support is installed, specify a different path or paths if necessary, or don't request Septel support]) + fi + + if test "$want_septel" = yes; then + # User wanted Septel support but we couldn't find it. + AC_MSG_ERROR([Septel support requested with --with-septel, but the Septel headers weren't found at $septel_include_dir: make sure the Septel support is installed, specify a different path or paths if necessary, or don't request Septel support]) + fi + fi +fi + +# Check for Myricom SNF support. +AC_ARG_WITH([snf], +AC_HELP_STRING([--with-snf@<:@=DIR@:>@],[include Myricom SNF support (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ + if test "$withval" = no + then + # User explicitly doesn't want SNF + want_snf=no + elif test "$withval" = yes + then + # User wants SNF support but hasn't specified a directory. + want_snf=yes + else + # User wants SNF support with a specified directory. + want_snf=yes + snf_root=$withval + fi +],[ + if test "$V_PCAP" = snf; then + # User requested Sniffer-only libpcap, so we'd better have + # the Sniffer API. + want_snf=yes + elif test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want SNF support. + want_snf=no + else + # + # Use Sniffer API if present, otherwise don't + # + want_snf=ifpresent + fi +]) + +AC_ARG_WITH([snf-includes], +AC_HELP_STRING([--with-snf-includes=IDIR],[Myricom SNF include directory, if not DIR/include]), +[ + # User wants SNF with specific header directory + want_snf=yes + snf_include_dir=$withval +],[]) + +AC_ARG_WITH([snf-libraries], +AC_HELP_STRING([--with-snf-libraries=LDIR],[Myricom SNF library directory, if not DIR/lib]), +[ + # User wants SNF with specific lib directory + want_snf=yes + snf_lib_dir=$withval +],[]) + +ac_cv_lbl_snf_api=no +if test "$with_snf" != no; then + + AC_MSG_CHECKING(whether we have Myricom Sniffer API) + + # If necessary, set default paths for Sniffer headers and libraries. + if test -z "$snf_root"; then + snf_root=/opt/snf + fi + + if test -z "$snf_include_dir"; then + snf_include_dir="$snf_root/include" + fi + + if test -z "$snf_lib_dir"; then + snf_lib_dir="$snf_root/lib" + fi + + if test -f "$snf_include_dir/snf.h"; then + # We found a header; make sure we can link with the library + saved_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -L$snf_lib_dir" + AC_CHECK_LIB([snf], [snf_init], [ac_cv_lbl_snf_api="yes"]) + LDFLAGS="$saved_ldflags" + if test "$ac_cv_lbl_snf_api" = no; then + AC_MSG_ERROR(SNF API cannot correctly be linked; check config.log) + fi + fi + + if test "$ac_cv_lbl_snf_api" = yes; then + AC_MSG_RESULT([yes ($snf_root)]) + + V_INCLS="$V_INCLS -I$snf_include_dir" + LIBS="$LIBS -lsnf" + LDFLAGS="$LDFLAGS -L$snf_lib_dir" + + if test "$V_PCAP" != snf ; then + SSRC="$SSRC pcap-snf.c" + fi + + AC_DEFINE(HAVE_SNF_API, 1, [define if you have the Myricom SNF API]) + else + AC_MSG_RESULT(no) + + if test "$want_snf" = yes; then + # User requested "snf" capture type but + # we couldn't find the Sniffer API support. + AC_MSG_ERROR([Myricom Sniffer support requested with --with-pcap=snf, but the Sniffer headers weren't found at $snf_include_dir: make sure the Sniffer support is installed, specify a different path or paths if necessary, or don't request Sniffer support]) + fi + + if test "$want_snf" = yes; then + AC_MSG_ERROR([Myricom Sniffer support requested with --with-snf, but the Sniffer headers weren't found at $snf_include_dir: make sure the Sniffer support is installed, specify a different path or paths if necessary, or don't request Sniffer support]) + fi + fi +fi + +# Check for Riverbed TurboCap support. +AC_ARG_WITH([turbocap], +AC_HELP_STRING([--with-turbocap@<:@=DIR@:>@],[include Riverbed TurboCap support (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ + if test "$withval" = no + then + # User explicitly doesn't want TurboCap + want_turbocap=no + elif test "$withval" = yes + then + # User wants TurboCap support but hasn't specified a directory. + want_turbocap=yes + else + # User wants TurboCap support with a specified directory. + want_turbocap=yes + turbocap_root=$withval + fi +],[ + if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want TurboCap support. + want_turbocap=no + else + # + # Use TurboCap API if present, otherwise don't + # + want_turbocap=ifpresent + fi +]) + +ac_cv_lbl_turbocap_api=no +if test "$want_turbocap" != no; then + + AC_MSG_CHECKING(whether TurboCap is supported) + + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + if test ! -z "$turbocap_root"; then + TURBOCAP_CFLAGS="-I$turbocap_root/include" + TURBOCAP_LIBS="-L$turbocap_root/lib" + CFLAGS="$CFLAGS $TURBOCAP_CFLAGS" + fi + + AC_TRY_COMPILE( + [ + #include + ], + [ + TC_INSTANCE a; TC_PORT b; TC_BOARD c; + TC_INSTANCE i; + (void)TcInstanceCreateByName("foo", &i); + ], + ac_cv_lbl_turbocap_api=yes) + + CFLAGS="$save_CFLAGS" + if test $ac_cv_lbl_turbocap_api = yes; then + AC_MSG_RESULT(yes) + + SSRC="$SSRC pcap-tc.c" + V_INCLS="$V_INCLS $TURBOCAP_CFLAGS" + LIBS="$LIBS $TURBOCAP_LIBS -lTcApi -lpthread -lstdc++" + + AC_DEFINE(HAVE_TC_API, 1, [define if you have the TurboCap API]) + else + AC_MSG_RESULT(no) + + if test "$want_turbocap" = yes; then + # User wanted Turbo support but we couldn't find it. + AC_MSG_ERROR([TurboCap support requested with --with-turbocap, but the TurboCap headers weren't found: make sure the TurboCap support is installed or don't request TurboCap support]) + fi + fi +fi + +# +# Look for {f}lex. +# +AC_PROG_LEX +if test "$LEX" = ":"; then + AC_MSG_ERROR([Neither flex nor lex was found.]) +fi + +# +# Make sure {f}lex supports the -P, --header-file, and --nounput flags +# and supports processing our scanner.l. +# +AC_CACHE_CHECK([for capable lex], tcpdump_cv_capable_lex, + if $LEX -P pcap_ --header-file=/dev/null --nounput -t $srcdir/scanner.l > /dev/null 2>&1; then + tcpdump_cv_capable_lex=yes + else + tcpdump_cv_capable_lex=insufficient + fi) +if test $tcpdump_cv_capable_lex = insufficient ; then + AC_MSG_ERROR([$LEX is insufficient to compile libpcap. + libpcap requires Flex 2.5.31 or later, or a compatible version of lex.]) +fi + +# +# Look for yacc/bison/byacc. +# +AC_PROG_YACC + +# +# Make sure it supports the -p flag and supports processing our +# grammar.y. +# +AC_CACHE_CHECK([for capable yacc/bison], tcpdump_cv_capable_yacc, + if $YACC -p pcap_ -o /dev/null $srcdir/grammar.y >/dev/null 2>&1; then + tcpdump_cv_capable_yacc=yes + else + tcpdump_cv_capable_yacc=insufficient + fi) +if test $tcpdump_cv_capable_yacc = insufficient ; then + AC_MSG_ERROR([$YACC is insufficient to compile libpcap. + libpcap requires Bison, Berkeley YACC, or another YACC compatible with them.]) +fi + +# +# Assume, by default, no support for shared libraries and V7/BSD convention +# for man pages (file formats in section 5, miscellaneous info in section 7). +# Individual cases can override this. +# +DYEXT="none" +MAN_FILE_FORMATS=5 +MAN_MISC_INFO=7 +case "$host_os" in + +aix*) + dnl Workaround to enable certain features + AC_DEFINE(_SUN,1,[define on AIX to get certain functions]) + + # + # AIX makes it fun to build shared and static libraries, + # because they're *both* ".a" archive libraries. We + # build the static library for the benefit of the traditional + # scheme of building libpcap and tcpdump in subdirectories of + # the same directory, with tcpdump statically linked with the + # libpcap in question, but we also build a shared library as + # "libpcap.shareda" and install *it*, rather than the static + # library, as "libpcap.a". + # + DYEXT="shareda" + + case "$V_PCAP" in + + dlpi) + # + # If we're using DLPI, applications will need to + # use /lib/pse.exp if present, as we use the + # STREAMS routines. + # + pseexe="/lib/pse.exp" + AC_MSG_CHECKING(for $pseexe) + if test -f $pseexe ; then + AC_MSG_RESULT(yes) + LIBS="-I:$pseexe" + fi + ;; + + bpf) + # + # If we're using BPF, we need "-lodm" and "-lcfg", as + # we use them to load the BPF module. + # + LIBS="-lodm -lcfg" + ;; + esac + ;; + +darwin*) + DYEXT="dylib" + V_CCOPT="$V_CCOPT -fno-common" + AC_ARG_ENABLE(universal, + AC_HELP_STRING([--disable-universal],[don't build universal on OS X])) + if test "$enable_universal" != "no"; then + case "$host_os" in + + darwin[0-7].*) + # + # Pre-Tiger. Build only for 32-bit PowerPC; no + # need for any special compiler or linker flags. + # + ;; + + darwin8.[0123]*) + # + # Tiger, prior to Intel support. Build for 32-bit + # PowerPC and 64-bit PowerPC, with 32-bit PowerPC + # first. (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64" + ;; + + darwin8.[456]*) + # + # Tiger, subsequent to Intel support but prior to + # x86-64 support. Build for 32-bit PowerPC, 64-bit + # PowerPC, and x86, with 32-bit PowerPC first. + # (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386" + ;; + + darwin8.*) + # + # All other Tiger, so subsequent to x86-64 + # support. Build for 32-bit PowerPC, 64-bit + # PowerPC, x86, and x86-64, and with 32-bit PowerPC + # first. (I'm guessing that's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64" + ;; + + darwin9.*) + # + # Leopard. Build for 32-bit PowerPC, 64-bit + # PowerPC, x86, and x86-64, with 32-bit PowerPC + # first. (That's what Apple does.) + # + V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64" + LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64" + ;; + + darwin10.*) + # + # Snow Leopard. Build for x86-64, x86, and + # 32-bit PowerPC, with x86-64 first. (That's + # what Apple does, even though Snow Leopard + # doesn't run on PPC, so PPC libpcap runs under + # Rosetta, and Rosetta doesn't support BPF + # ioctls, so PPC programs can't do live + # captures.) + # + V_CCOPT="$V_CCOPT -arch x86_64 -arch i386 -arch ppc" + LDFLAGS="$LDFLAGS -arch x86_64 -arch i386 -arch ppc" + ;; + + darwin*) + # + # Post-Snow Leopard. Build for x86-64 and + # x86, with x86-64 first. (That's probably what + # Apple does, given that Rosetta is gone.) + # XXX - update if and when Apple drops support + # for 32-bit x86 code. + # + V_CCOPT="$V_CCOPT -arch x86_64 -arch i386" + LDFLAGS="$LDFLAGS -arch x86_64 -arch i386" + ;; + esac + fi + ;; + +hpux9*) + AC_DEFINE(HAVE_HPUX9,1,[on HP-UX 9.x]) + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux10.0*) + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux10.1*) + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +hpux*) + dnl HPUX 10.20 and above is similar to HPUX 9, but + dnl not the same.... + dnl + dnl XXX - DYEXT should be set to "sl" if this is building + dnl for 32-bit PA-RISC, but should be left as "so" for + dnl 64-bit PA-RISC or, I suspect, IA-64. + AC_DEFINE(HAVE_HPUX10_20_OR_LATER,1,[on HP-UX 10.20 or later]) + if test "`uname -m`" = "ia64"; then + DYEXT="so" + else + DYEXT="sl" + fi + + # + # "-b" builds a shared library; "+h" sets the soname. + # + SHLIB_OPT="-b" + SONAME_OPT="+h" + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +irix*) + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +linux*|freebsd*|netbsd*|openbsd*|dragonfly*|kfreebsd*|gnu*) + DYEXT="so" + + # + # Compiler assumed to be GCC; run-time linker may require a -R + # flag. + # + if test "$libdir" != "/usr/lib"; then + V_RFLAGS=-Wl,-R$libdir + fi + ;; + +osf*) + DYEXT="so" + + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; + +sinix*) + AC_MSG_CHECKING(if SINIX compiler defines sinix) + AC_CACHE_VAL(ac_cv_cc_sinix_defined, + AC_TRY_COMPILE( + [], + [int i = sinix;], + ac_cv_cc_sinix_defined=yes, + ac_cv_cc_sinix_defined=no)) + AC_MSG_RESULT($ac_cv_cc_sinix_defined) + if test $ac_cv_cc_sinix_defined = no ; then + AC_DEFINE(sinix,1,[on sinix]) + fi + ;; + +solaris*) + AC_DEFINE(HAVE_SOLARIS,1,[On solaris]) + + DYEXT="so" + # + # Use System V conventions for man pages. + # + MAN_FILE_FORMATS=4 + MAN_MISC_INFO=5 + ;; +esac + +AC_ARG_ENABLE(shared, +AC_HELP_STRING([--enable-shared],[build shared libraries @<:@default=yes, if support available@:>@])) +test "x$enable_shared" = "xno" && DYEXT="none" + +AC_PROG_RANLIB +AC_CHECK_TOOL([AR], [ar]) + +AC_PROG_LN_S +AC_SUBST(LN_S) + +AC_LBL_DEVEL(V_CCOPT) + +AC_LBL_SOCKADDR_SA_LEN + +AC_LBL_SOCKADDR_STORAGE + +AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1 + +AC_LBL_UNALIGNED_ACCESS + +rm -f net +ln -s ${srcdir}/bpf/net net + +AC_SUBST(V_CCOPT) +AC_SUBST(V_DEFS) +AC_SUBST(V_FINDALLDEVS) +AC_SUBST(V_INCLS) +AC_SUBST(V_LEX) +AC_SUBST(V_PCAP) +AC_SUBST(V_SHLIB_CMD) +AC_SUBST(V_SHLIB_OPT) +AC_SUBST(V_SONAME_OPT) +AC_SUBST(V_RPATH_OPT) +AC_SUBST(V_YACC) +AC_SUBST(ADDLOBJS) +AC_SUBST(ADDLARCHIVEOBJS) +AC_SUBST(SSRC) +AC_SUBST(DYEXT) +AC_SUBST(MAN_FILE_FORMATS) +AC_SUBST(MAN_MISC_INFO) + +AC_ARG_ENABLE([usb], +[AC_HELP_STRING([--enable-usb],[enable nusb support @<:@default=yes, if support available@:>@])], + [], + [enable_usb=yes]) + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want USB support. + enable_usb=no +fi + +if test "x$enable_usb" != "xno" ; then + dnl check for USB sniffing support + AC_MSG_CHECKING(for USB sniffing support) + case "$host_os" in + linux*) + AC_DEFINE(PCAP_SUPPORT_USB, 1, [target host supports USB sniffing]) + USB_SRC=pcap-usb-linux.c + AC_MSG_RESULT(yes) + ac_usb_dev_name=`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/dev/null` + if test $? -ne 0 ; then + ac_usb_dev_name="usbmon" + fi + AC_DEFINE_UNQUOTED(LINUX_USB_MON_DEV, "/dev/$ac_usb_dev_name", [path for device for USB sniffing]) + AC_MSG_NOTICE(Device for USB sniffing is /dev/$ac_usb_dev_name) + # + # Do we have a version of available? + # If so, we might need it for . + # + AC_CHECK_HEADERS(linux/compiler.h) + if test "$ac_cv_header_linux_compiler_h" = yes; then + # + # Yes - include it when testing for . + # + AC_CHECK_HEADERS(linux/usbdevice_fs.h,,,[#include ]) + else + AC_CHECK_HEADERS(linux/usbdevice_fs.h) + fi + if test "$ac_cv_header_linux_usbdevice_fs_h" = yes; then + # + # OK, does it define bRequestType? Older versions of the kernel + # define fields with names like "requesttype, "request", and + # "value", rather than "bRequestType", "bRequest", and + # "wValue". + # + AC_MSG_CHECKING(if usbdevfs_ctrltransfer struct has bRequestType member) + AC_CACHE_VAL(ac_cv_usbdevfs_ctrltransfer_has_bRequestType, + AC_TRY_COMPILE([ +AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +#ifdef HAVE_LINUX_COMPILER_H +#include +#endif +#include ], + [u_int i = sizeof(((struct usbdevfs_ctrltransfer *)0)->bRequestType)], + ac_cv_usbdevfs_ctrltransfer_has_bRequestType=yes, + ac_cv_usbdevfs_ctrltransfer_has_bRequestType=no)) + AC_MSG_RESULT($ac_cv_usbdevfs_ctrltransfer_has_bRequestType) + if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType = yes ; then + AC_DEFINE(HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE,1, + [if struct usbdevfs_ctrltransfer has bRequestType]) + fi + fi + ;; + freebsd*) + # + # This just uses BPF in FreeBSD 8.4 and later; we don't need + # to check for anything special for capturing. + # + AC_MSG_RESULT([yes, in FreeBSD 8.4 and later]) + ;; + + *) + AC_MSG_RESULT(no) + ;; +esac +fi +AC_SUBST(PCAP_SUPPORT_USB) +AC_SUBST(USB_SRC) + +dnl check for netfilter sniffing support +if test "xxx_only" != yes; then + AC_MSG_CHECKING(whether the platform could support netfilter sniffing) + case "$host_os" in + linux*) + AC_MSG_RESULT(yes) + # + # Life's too short to deal with trying to get this to compile + # if you don't get the right types defined with + # __KERNEL_STRICT_NAMES getting defined by some other include. + # + # Check whether the includes Just Work. If not, don't turn on + # netfilter support. + # + AC_MSG_CHECKING(whether we can compile the netfilter support) + AC_CACHE_VAL(ac_cv_netfilter_can_compile, + AC_TRY_COMPILE([ +AC_INCLUDES_DEFAULT +#include +#include +#include + +#include +#include +#include +#include +#include ], + [], + ac_cv_netfilter_can_compile=yes, + ac_cv_netfilter_can_compile=no)) + AC_MSG_RESULT($ac_cv_netfilter_can_compile) + if test $ac_cv_netfilter_can_compile = yes ; then + AC_DEFINE(PCAP_SUPPORT_NETFILTER, 1, + [target host supports netfilter sniffing]) + NETFILTER_SRC=pcap-netfilter-linux.c + fi + ;; + *) + AC_MSG_RESULT(no) + ;; + esac +fi +AC_SUBST(PCAP_SUPPORT_NETFILTER) +AC_SUBST(NETFILTER_SRC) + +AC_ARG_ENABLE([bluetooth], +[AC_HELP_STRING([--enable-bluetooth],[enable Bluetooth support @<:@default=yes, if support available@:>@])], + [], + [enable_bluetooth=ifsupportavailable]) + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want Bluetooth support. + enable_bluetooth=no +fi + +if test "x$enable_bluetooth" != "xno" ; then + dnl check for Bluetooth sniffing support + case "$host_os" in + linux*) + AC_CHECK_HEADER(bluetooth/bluetooth.h, + [ + AC_DEFINE(PCAP_SUPPORT_BT, 1, [target host supports Bluetooth sniffing]) + BT_SRC=pcap-bt-linux.c + AC_MSG_NOTICE(Bluetooth sniffing is supported) + + # + # OK, does struct sockaddr_hci have an hci_channel + # member? + # + AC_MSG_CHECKING(if struct sockaddr_hci has hci_channel member) + AC_CACHE_VAL(ac_cv_lbl_sockaddr_hci_has_hci_channel, + AC_TRY_COMPILE( +[ +#include +#include +], + [u_int i = sizeof(((struct sockaddr_hci *)0)->hci_channel)], + ac_cv_lbl_sockaddr_hci_has_hci_channel=yes, + ac_cv_lbl_sockaddr_hci_has_hci_channel=no)) + AC_MSG_RESULT($ac_cv_lbl_sockaddr_hci_has_hci_channel) + if test $ac_cv_lbl_sockaddr_hci_has_hci_channel = yes ; then + AC_DEFINE(SOCKADDR_HCI_HAS_HCI_CHANNEL,, + [if struct sockaddr_hci has hci_channel member]) + + # + # OK, is HCI_CHANNEL_MONITOR defined? + # + AC_MSG_CHECKING(if HCI_CHANNEL_MONITOR is defined) + AC_CACHE_VAL(ac_cv_lbl_hci_channel_monitor_is_defined, + AC_TRY_COMPILE( +[ +#include +#include +], + [u_int i = HCI_CHANNEL_MONITOR], + ac_cv_lbl_hci_channel_monitor_is_defined=yes, + ac_cv_lbl_hci_channel_monitor_is_defined=no)) + AC_MSG_RESULT($ac_cv_lbl_hci_channel_monitor_is_defined) + if test $ac_cv_lbl_hci_channel_monitor_is_defined = yes ; then + AC_DEFINE(PCAP_SUPPORT_BT_MONITOR,, + [target host supports Bluetooth Monitor]) + BT_MONITOR_SRC=pcap-bt-monitor-linux.c + fi + fi + ac_lbl_bluetooth_available=yes + ], + ac_lbl_bluetooth_available=no + ) + if test "x$ac_lbl_bluetooth_available" == "xno" ; then + if test "x$enable_bluetooth" = "xyes" ; then + AC_MSG_ERROR(Bluetooth sniffing is not supported; install bluez-lib devel to enable it) + else + AC_MSG_NOTICE(Bluetooth sniffing is not supported; install bluez-lib devel to enable it) + fi + fi + ;; + *) + if test "x$enable_bluetooth" = "xyes" ; then + AC_MSG_ERROR(no Bluetooth sniffing support implemented for $host_os) + else + AC_MSG_NOTICE(no Bluetooth sniffing support implemented for $host_os) + fi + ;; + esac + AC_SUBST(PCAP_SUPPORT_BT) + AC_SUBST(BT_SRC) + AC_SUBST(BT_MONITOR_SRC) +fi + +AC_ARG_ENABLE([dbus], +[AC_HELP_STRING([--enable-dbus],[enable D-Bus capture support @<:@default=yes, if support available@:>@])], + [], + [enable_dbus=ifavailable]) + +if test "xxx_only" = yes; then + # User requested something-else-only pcap, so they don't + # want D-Bus support. + enable_dbus=no +fi + +if test "x$enable_dbus" != "xno"; then + if test "x$enable_dbus" = "xyes"; then + case "$host_os" in + + darwin*) + # + # We don't support D-Bus sniffing on OS X; see + # + # https://bugs.freedesktop.org/show_bug.cgi?id=74029 + # + # The user requested it, so fail. + # + AC_MSG_ERROR([Due to freedesktop.org bug 74029, D-Bus capture support is not available on OS X]) + esac + else + case "$host_os" in + + darwin*) + # + # We don't support D-Bus sniffing on OS X; see + # + # https://bugs.freedesktop.org/show_bug.cgi?id=74029 + # + # The user dind't explicitly request it, so just + # silently refuse to enable it. + # + enable_dbus="no" + ;; + esac + fi +fi + +if test "x$enable_dbus" != "xno"; then + AC_CHECK_PROG([PKGCONFIG], [pkg-config], [pkg-config], [no]) + if test "x$PKGCONFIG" != "xno"; then + AC_MSG_CHECKING([for D-Bus]) + if "$PKGCONFIG" dbus-1; then + AC_MSG_RESULT([yes]) + DBUS_CFLAGS=`"$PKGCONFIG" --cflags dbus-1` + DBUS_LIBS=`"$PKGCONFIG" --libs dbus-1` + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + CFLAGS="$CFLAGS $DBUS_CFLAGS" + LIBS="$LIBS $DBUS_LIBS" + AC_MSG_CHECKING(whether the D-Bus library defines dbus_connection_read_write) + AC_TRY_LINK( + [#include + + #include + #include + + #include ], + [return dbus_connection_read_write(NULL, 0);], + [ + AC_MSG_RESULT([yes]) + AC_DEFINE(PCAP_SUPPORT_DBUS, 1, [support D-Bus sniffing]) + DBUS_SRC=pcap-dbus.c + V_INCLS="$V_INCLS $DBUS_CFLAGS" + ], + [ + AC_MSG_RESULT([no]) + if test "x$enable_dbus" = "xyes"; then + AC_MSG_ERROR([--enable-dbus was given, but the D-Bus library doesn't define dbus_connection_read_write()]) + fi + LIBS="$save_LIBS" + ]) + CFLAGS="$save_CFLAGS" + else + AC_MSG_RESULT([no]) + if test "x$enable_dbus" = "xyes"; then + AC_MSG_ERROR([--enable-dbus was given, but the dbus-1 package is not installed]) + fi + fi + fi + AC_SUBST(PCAP_SUPPORT_DBUS) + AC_SUBST(DBUS_SRC) +fi + +dnl check for hardware timestamp support +case "$host_os" in +linux*) + AC_CHECK_HEADERS([linux/net_tstamp.h]) + ;; +*) + AC_MSG_NOTICE(no hardware timestamp support implemented for $host_os) + ;; +esac + +dnl The packet ring capture facility of Linux, described in +dnl Documentation/networking/packet_mmap.txt, is not 32/64-bit compatible before +dnl version 2.6.27. A 32-bit kernel requires a 32-bit userland, and likewise for +dnl 64-bit. The effect of this is that a 32-bit libpcap binary will not run +dnl correctly on a 64-bit kernel (the binary will use the wrong offsets into a +dnl kernel struct). This problem was solved in Linux 2.6.27. Use +dnl --disable-packet-ring whenever a 32-bit application must run on a 64-bit +dnl target host, and either the build host or the target host run Linux 2.6.26 +dnl or earlier. +AC_ARG_ENABLE([packet-ring], +[AC_HELP_STRING([--enable-packet-ring],[enable Linux packet ring support @<:@default=yes@:>@])], +,enable_packet_ring=yes) + +if test "x$enable_packet_ring" != "xno" ; then + AC_DEFINE(PCAP_SUPPORT_PACKET_RING, 1, [use Linux packet ring capture if available]) + AC_SUBST(PCAP_SUPPORT_PACKET_RING) +fi + +AC_PROG_INSTALL + +AC_CONFIG_HEADER(config.h) + +AC_OUTPUT_COMMANDS([if test -f .devel; then + echo timestamp > stamp-h + cat Makefile-devel-adds >> Makefile + make depend +fi]) +AC_OUTPUT(Makefile pcap-filter.manmisc pcap-linktype.manmisc + pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap + pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap + pcap_get_tstamp_precision.3pcap pcap_list_datalinks.3pcap + pcap_list_tstamp_types.3pcap pcap_open_dead.3pcap + pcap_open_offline.3pcap pcap_set_tstamp_precision.3pcap + pcap_set_tstamp_type.3pcap) +exit 0 diff --git a/libpcap-1.8.1/dlpisubs.c b/libpcap-1.8.1/dlpisubs.c new file mode 100644 index 00000000..fb94a605 --- /dev/null +++ b/libpcap-1.8.1/dlpisubs.c @@ -0,0 +1,388 @@ +/* + * This code is derived from code formerly in pcap-dlpi.c, originally + * contributed by Atanu Ghosh (atanu@cs.ucl.ac.uk), University College + * London, and subsequently modified by Guy Harris (guy@alum.mit.edu), + * Mark Pizzolato , + * Mark C. Brown (mbrown@hp.com), and Sagun Shakya . + */ + +/* + * This file contains dlpi/libdlpi related common functions used + * by pcap-[dlpi,libdlpi].c. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef DL_IPATM +#define DL_IPATM 0x12 /* ATM Classical IP interface */ +#endif + +#ifdef HAVE_SYS_BUFMOD_H + /* + * Size of a bufmod chunk to pass upstream; that appears to be the + * biggest value to which you can set it, and setting it to that value + * (which is bigger than what appears to be the Solaris default of 8192) + * reduces the number of packet drops. + */ +#define CHUNKSIZE 65536 + + /* + * Size of the buffer to allocate for packet data we read; it must be + * large enough to hold a chunk. + */ +#define PKTBUFSIZE CHUNKSIZE + +#else /* HAVE_SYS_BUFMOD_H */ + + /* + * Size of the buffer to allocate for packet data we read; this is + * what the value used to be - there's no particular reason why it + * should be tied to MAXDLBUF, but we'll leave it as this for now. + */ +#define MAXDLBUF 8192 +#define PKTBUFSIZE (MAXDLBUF * sizeof(bpf_u_int32)) + +#endif + +#include +#include +#ifdef HAVE_SYS_BUFMOD_H +#include +#endif +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_LIBDLPI +#include +#endif + +#include "pcap-int.h" +#include "dlpisubs.h" + +#ifdef HAVE_SYS_BUFMOD_H +static void pcap_stream_err(const char *, int, char *); +#endif + +/* + * Get the packet statistics. + */ +int +pcap_stats_dlpi(pcap_t *p, struct pcap_stat *ps) +{ + struct pcap_dlpi *pd = p->priv; + + /* + * "ps_recv" counts packets handed to the filter, not packets + * that passed the filter. As filtering is done in userland, + * this would not include packets dropped because we ran out + * of buffer space; in order to make this more like other + * platforms (Linux 2.4 and later, BSDs with BPF), where the + * "packets received" count includes packets received but dropped + * due to running out of buffer space, and to keep from confusing + * applications that, for example, compute packet drop percentages, + * we also make it count packets dropped by "bufmod" (otherwise we + * might run the risk of the packet drop count being bigger than + * the received-packet count). + * + * "ps_drop" counts packets dropped by "bufmod" because of + * flow control requirements or resource exhaustion; it doesn't + * count packets dropped by the interface driver, or packets + * dropped upstream. As filtering is done in userland, it counts + * packets regardless of whether they would've passed the filter. + * + * These statistics don't include packets not yet read from + * the kernel by libpcap, but they may include packets not + * yet read from libpcap by the application. + */ + *ps = pd->stat; + + /* + * Add in the drop count, as per the above comment. + */ + ps->ps_recv += ps->ps_drop; + return (0); +} + +/* + * Loop through the packets and call the callback for each packet. + * Return the number of packets read. + */ +int +pcap_process_pkts(pcap_t *p, pcap_handler callback, u_char *user, + int count, u_char *bufp, int len) +{ + struct pcap_dlpi *pd = p->priv; + int n, caplen, origlen; + u_char *ep, *pk; + struct pcap_pkthdr pkthdr; +#ifdef HAVE_SYS_BUFMOD_H + struct sb_hdr *sbp; +#ifdef LBL_ALIGN + struct sb_hdr sbhdr; +#endif +#endif + + /* Loop through packets */ + ep = bufp + len; + n = 0; + +#ifdef HAVE_SYS_BUFMOD_H + while (bufp < ep) { + /* + * Has "pcap_breakloop()" been called? + * If so, return immediately - if we haven't read any + * packets, clear the flag and return -2 to indicate + * that we were told to break out of the loop, otherwise + * leave the flag set, so that the *next* call will break + * out of the loop without having read any packets, and + * return the number of packets we've processed so far. + */ + if (p->break_loop) { + if (n == 0) { + p->break_loop = 0; + return (-2); + } else { + p->bp = bufp; + p->cc = ep - bufp; + return (n); + } + } +#ifdef LBL_ALIGN + if ((long)bufp & 3) { + sbp = &sbhdr; + memcpy(sbp, bufp, sizeof(*sbp)); + } else +#endif + sbp = (struct sb_hdr *)bufp; + pd->stat.ps_drop = sbp->sbh_drops; + pk = bufp + sizeof(*sbp); + bufp += sbp->sbh_totlen; + origlen = sbp->sbh_origlen; + caplen = sbp->sbh_msglen; +#else + origlen = len; + caplen = min(p->snapshot, len); + pk = bufp; + bufp += caplen; +#endif + ++pd->stat.ps_recv; + if (bpf_filter(p->fcode.bf_insns, pk, origlen, caplen)) { +#ifdef HAVE_SYS_BUFMOD_H + pkthdr.ts.tv_sec = sbp->sbh_timestamp.tv_sec; + pkthdr.ts.tv_usec = sbp->sbh_timestamp.tv_usec; +#else + (void) gettimeofday(&pkthdr.ts, NULL); +#endif + pkthdr.len = origlen; + pkthdr.caplen = caplen; + /* Insure caplen does not exceed snapshot */ + if (pkthdr.caplen > (bpf_u_int32)p->snapshot) + pkthdr.caplen = (bpf_u_int32)p->snapshot; + (*callback)(user, &pkthdr, pk); + if (++n >= count && !PACKET_COUNT_IS_UNLIMITED(count)) { + p->cc = ep - bufp; + p->bp = bufp; + return (n); + } + } +#ifdef HAVE_SYS_BUFMOD_H + } +#endif + p->cc = 0; + return (n); +} + +/* + * Process the mac type. Returns -1 if no matching mac type found, otherwise 0. + */ +int +pcap_process_mactype(pcap_t *p, u_int mactype) +{ + int retv = 0; + + switch (mactype) { + + case DL_CSMACD: + case DL_ETHER: + p->linktype = DLT_EN10MB; + p->offset = 2; + /* + * This is (presumably) a real Ethernet capture; give it a + * link-layer-type list with DLT_EN10MB and DLT_DOCSIS, so + * that an application can let you choose it, in case you're + * capturing DOCSIS traffic that a Cisco Cable Modem + * Termination System is putting out onto an Ethernet (it + * doesn't put an Ethernet header onto the wire, it puts raw + * DOCSIS frames out on the wire inside the low-level + * Ethernet framing). + */ + p->dlt_list = (u_int *)malloc(sizeof(u_int) * 2); + /* + * If that fails, just leave the list empty. + */ + if (p->dlt_list != NULL) { + p->dlt_list[0] = DLT_EN10MB; + p->dlt_list[1] = DLT_DOCSIS; + p->dlt_count = 2; + } + break; + + case DL_FDDI: + p->linktype = DLT_FDDI; + p->offset = 3; + break; + + case DL_TPR: + /* XXX - what about DL_TPB? Is that Token Bus? */ + p->linktype = DLT_IEEE802; + p->offset = 2; + break; + +#ifdef HAVE_SOLARIS + case DL_IPATM: + p->linktype = DLT_SUNATM; + p->offset = 0; /* works for LANE and LLC encapsulation */ + break; +#endif + +#ifdef DL_IPV4 + case DL_IPV4: + p->linktype = DLT_IPV4; + p->offset = 0; + break; +#endif + +#ifdef DL_IPV6 + case DL_IPV6: + p->linktype = DLT_IPV6; + p->offset = 0; + break; +#endif + +#ifdef DL_IPNET + case DL_IPNET: + p->linktype = DLT_IPNET; + p->offset = 0; + break; +#endif + + default: + pcap_snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "unknown mactype 0x%x", + mactype); + retv = -1; + } + + return (retv); +} + +#ifdef HAVE_SYS_BUFMOD_H +/* + * Push and configure the buffer module. Returns -1 for error, otherwise 0. + */ +int +pcap_conf_bufmod(pcap_t *p, int snaplen) +{ + struct timeval to; + bpf_u_int32 ss, chunksize; + + /* Non-standard call to get the data nicely buffered. */ + if (ioctl(p->fd, I_PUSH, "bufmod") != 0) { + pcap_stream_err("I_PUSH bufmod", errno, p->errbuf); + return (-1); + } + + ss = snaplen; + if (ss > 0 && + strioctl(p->fd, SBIOCSSNAP, sizeof(ss), (char *)&ss) != 0) { + pcap_stream_err("SBIOCSSNAP", errno, p->errbuf); + return (-1); + } + + if (p->opt.immediate) { + /* Set the timeout to zero, for immediate delivery. */ + to.tv_sec = 0; + to.tv_usec = 0; + if (strioctl(p->fd, SBIOCSTIME, sizeof(to), (char *)&to) != 0) { + pcap_stream_err("SBIOCSTIME", errno, p->errbuf); + return (-1); + } + } else { + /* Set up the bufmod timeout. */ + if (p->opt.timeout != 0) { + to.tv_sec = p->opt.timeout / 1000; + to.tv_usec = (p->opt.timeout * 1000) % 1000000; + if (strioctl(p->fd, SBIOCSTIME, sizeof(to), (char *)&to) != 0) { + pcap_stream_err("SBIOCSTIME", errno, p->errbuf); + return (-1); + } + } + + /* Set the chunk length. */ + chunksize = CHUNKSIZE; + if (strioctl(p->fd, SBIOCSCHUNK, sizeof(chunksize), (char *)&chunksize) + != 0) { + pcap_stream_err("SBIOCSCHUNKP", errno, p->errbuf); + return (-1); + } + } + + return (0); +} +#endif /* HAVE_SYS_BUFMOD_H */ + +/* + * Allocate data buffer. Returns -1 if memory allocation fails, else 0. + */ +int +pcap_alloc_databuf(pcap_t *p) +{ + p->bufsize = PKTBUFSIZE; + p->buffer = malloc(p->bufsize + p->offset); + if (p->buffer == NULL) { + strlcpy(p->errbuf, pcap_strerror(errno), PCAP_ERRBUF_SIZE); + return (-1); + } + + return (0); +} + +/* + * Issue a STREAMS I_STR ioctl. Returns -1 on error, otherwise + * length of returned data on success. + */ +int +strioctl(int fd, int cmd, int len, char *dp) +{ + struct strioctl str; + int retv; + + str.ic_cmd = cmd; + str.ic_timout = -1; + str.ic_len = len; + str.ic_dp = dp; + if ((retv = ioctl(fd, I_STR, &str)) < 0) + return (retv); + + return (str.ic_len); +} + +#ifdef HAVE_SYS_BUFMOD_H +/* + * Write stream error message to errbuf. + */ +static void +pcap_stream_err(const char *func, int err, char *errbuf) +{ + pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, "%s: %s", func, pcap_strerror(err)); +} +#endif diff --git a/libpcap-1.8.1/dlpisubs.h b/libpcap-1.8.1/dlpisubs.h new file mode 100644 index 00000000..cdc531c1 --- /dev/null +++ b/libpcap-1.8.1/dlpisubs.h @@ -0,0 +1,38 @@ +#ifndef dlpisubs_h +#define dlpisubs_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Private data for capturing on DLPI devices. + */ +struct pcap_dlpi { +#ifdef HAVE_LIBDLPI + dlpi_handle_t dlpi_hd; +#endif /* HAVE_LIBDLPI */ +#ifdef DL_HP_RAWDLS + int send_fd; +#endif /* DL_HP_RAWDLS */ + + struct pcap_stat stat; +}; + +/* + * Functions defined by dlpisubs.c. + */ +int pcap_stats_dlpi(pcap_t *, struct pcap_stat *); +int pcap_process_pkts(pcap_t *, pcap_handler, u_char *, int, u_char *, int); +int pcap_process_mactype(pcap_t *, u_int); +#ifdef HAVE_SYS_BUFMOD_H +int pcap_conf_bufmod(pcap_t *, int); +#endif +int pcap_alloc_databuf(pcap_t *); +int strioctl(int, int, int, char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libpcap-1.8.1/etherent.c b/libpcap-1.8.1/etherent.c new file mode 100644 index 00000000..5cfd1b4c --- /dev/null +++ b/libpcap-1.8.1/etherent.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 1990, 1993, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef _WIN32 +#include +#else /* _WIN32 */ +#if HAVE_INTTYPES_H +#include +#elif HAVE_STDINT_H +#include +#endif +#ifdef HAVE_SYS_BITYPES_H +#include +#endif +#include +#endif /* _WIN32 */ + +#include +#include +#include +#include + +#include "pcap-int.h" + +#include + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +static inline int xdtoi(int); +static inline int skip_space(FILE *); +static inline int skip_line(FILE *); + +/* Hex digit to integer. */ +static inline int +xdtoi(c) + register int c; +{ + if (isdigit(c)) + return c - '0'; + else if (islower(c)) + return c - 'a' + 10; + else + return c - 'A' + 10; +} + +static inline int +skip_space(f) + FILE *f; +{ + int c; + + do { + c = getc(f); + } while (isspace(c) && c != '\n'); + + return c; +} + +static inline int +skip_line(f) + FILE *f; +{ + int c; + + do + c = getc(f); + while (c != '\n' && c != EOF); + + return c; +} + +struct pcap_etherent * +pcap_next_etherent(FILE *fp) +{ + register int c, d, i; + char *bp; + static struct pcap_etherent e; + + memset((char *)&e, 0, sizeof(e)); + do { + /* Find addr */ + c = skip_space(fp); + if (c == '\n') + continue; + + /* If this is a comment, or first thing on line + cannot be etehrnet address, skip the line. */ + if (!isxdigit(c)) { + c = skip_line(fp); + continue; + } + + /* must be the start of an address */ + for (i = 0; i < 6; i += 1) { + d = xdtoi(c); + c = getc(fp); + if (isxdigit(c)) { + d <<= 4; + d |= xdtoi(c); + c = getc(fp); + } + e.addr[i] = d; + if (c != ':') + break; + c = getc(fp); + } + if (c == EOF) + break; + + /* Must be whitespace */ + if (!isspace(c)) { + c = skip_line(fp); + continue; + } + c = skip_space(fp); + + /* hit end of line... */ + if (c == '\n') + continue; + + if (c == '#') { + c = skip_line(fp); + continue; + } + + /* pick up name */ + bp = e.name; + /* Use 'd' to prevent buffer overflow. */ + d = sizeof(e.name) - 1; + do { + *bp++ = c; + c = getc(fp); + } while (!isspace(c) && c != EOF && --d > 0); + *bp = '\0'; + + /* Eat trailing junk */ + if (c != '\n') + (void)skip_line(fp); + + return &e; + + } while (c != EOF); + + return (NULL); +} diff --git a/libpcap-1.8.1/etherent.o b/libpcap-1.8.1/etherent.o new file mode 100644 index 0000000000000000000000000000000000000000..98c716e518ffe78c7e9d9c66ff05a33e35194b65 GIT binary patch literal 8520 zcma)B3vgW3c|K?FYIh~=%CgoE$(HRk*jSdm581MXjZI`@{Km4eT}WfP-p7@+c(uFU zz3W#zARHbJkN{~)@PuI1Lmq8tlR!u)r7crtfN7bblT0&h0u)(z>OdxO62c?UsNZ+) zInvs=lb)G-zW;Up^Z(~{&)vQK`t2K~l)@A#I>aO=#K}2IQ`fDaL$r#S;=;P<&qeRZ zXou(Yx#7sjm}tf$9(eN)7MS3wQj(dB){0 zkBlY~H8FwiNw_gtrF&GKCWbed7kvB@C=$pWPGbv%eoeZ~7O_u#1e0 zJ{fsvRA8(;4J~88)8q66?5>3U70BiJ(&=;051&5gFFo*PU>IXny65ce!za&r;gfyN zgAMa;0QyQJqyGKwJjle0Z>hPsw4ctFvlkdA=CDER9+Q!m&P_p#`^D*VoKNO&Vyqpb zr~i+!`wryvak(}>hprt1@ER7^GgwP}_TkC;g+Tl$UU|$CB1rN>5G>o#fW;$y&!L^i zQ+F*m%UhQ#IKmUCvnZ5-Zz`Sto3QqH{l6p^@V^Z3PDN$ST}KyQ|Fh70Lv+xy8nyR* z@Yd(qnJzhE{07S@|l)%`~w>VV%%XpGN;hx+Y| zT-M);Ho{ZCk(qhxpGGYL^}`f4*Z-DWq`s4uz4dG>h8up0S~g%Y3s1w%sJ#tir~|_1 z{RYra-`*-(_!28XHe#m5BmQ4M36H_!H2BSO)FQZ^vA%x_q&N62%0D0-2(Cg?|A(Z5 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, which may declare some of these, we don't + * get a bunch of complaints from the C compiler about redefinitions + * of these values. + * + * We declare all of them here so that no file has to include + * if all it needs are ETHERTYPE_ values. + */ + +#ifndef ETHERTYPE_PUP +#define ETHERTYPE_PUP 0x0200 /* PUP protocol */ +#endif +#ifndef ETHERTYPE_IP +#define ETHERTYPE_IP 0x0800 /* IP protocol */ +#endif +#ifndef ETHERTYPE_ARP +#define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */ +#endif +#ifndef ETHERTYPE_REVARP +#define ETHERTYPE_REVARP 0x8035 /* reverse Addr. resolution protocol */ +#endif +#ifndef ETHERTYPE_NS +#define ETHERTYPE_NS 0x0600 +#endif +#ifndef ETHERTYPE_SPRITE +#define ETHERTYPE_SPRITE 0x0500 +#endif +#ifndef ETHERTYPE_TRAIL +#define ETHERTYPE_TRAIL 0x1000 +#endif +#ifndef ETHERTYPE_MOPDL +#define ETHERTYPE_MOPDL 0x6001 +#endif +#ifndef ETHERTYPE_MOPRC +#define ETHERTYPE_MOPRC 0x6002 +#endif +#ifndef ETHERTYPE_DN +#define ETHERTYPE_DN 0x6003 +#endif +#ifndef ETHERTYPE_LAT +#define ETHERTYPE_LAT 0x6004 +#endif +#ifndef ETHERTYPE_SCA +#define ETHERTYPE_SCA 0x6007 +#endif +#ifndef ETHERTYPE_REVARP +#define ETHERTYPE_REVARP 0x8035 +#endif +#ifndef ETHERTYPE_LANBRIDGE +#define ETHERTYPE_LANBRIDGE 0x8038 +#endif +#ifndef ETHERTYPE_DECDNS +#define ETHERTYPE_DECDNS 0x803c +#endif +#ifndef ETHERTYPE_DECDTS +#define ETHERTYPE_DECDTS 0x803e +#endif +#ifndef ETHERTYPE_VEXP +#define ETHERTYPE_VEXP 0x805b +#endif +#ifndef ETHERTYPE_VPROD +#define ETHERTYPE_VPROD 0x805c +#endif +#ifndef ETHERTYPE_ATALK +#define ETHERTYPE_ATALK 0x809b +#endif +#ifndef ETHERTYPE_AARP +#define ETHERTYPE_AARP 0x80f3 +#endif +#ifndef ETHERTYPE_8021Q +#define ETHERTYPE_8021Q 0x8100 +#endif +#ifndef ETHERTYPE_IPX +#define ETHERTYPE_IPX 0x8137 +#endif +#ifndef ETHERTYPE_IPV6 +#define ETHERTYPE_IPV6 0x86dd +#endif +#ifndef ETHERTYPE_MPLS +#define ETHERTYPE_MPLS 0x8847 +#endif +#ifndef ETHERTYPE_MPLS_MULTI +#define ETHERTYPE_MPLS_MULTI 0x8848 +#endif +#ifndef ETHERTYPE_PPPOED +#define ETHERTYPE_PPPOED 0x8863 +#endif +#ifndef ETHERTYPE_PPPOES +#define ETHERTYPE_PPPOES 0x8864 +#endif +#ifndef ETHERTYPE_8021AD +#define ETHERTYPE_8021AD 0x88a8 +#endif +#ifndef ETHERTYPE_LOOPBACK +#define ETHERTYPE_LOOPBACK 0x9000 +#endif +#ifndef ETHERTYPE_8021QINQ +#define ETHERTYPE_8021QINQ 0x9100 +#endif diff --git a/libpcap-1.8.1/extract.h b/libpcap-1.8.1/extract.h new file mode 100644 index 00000000..face5b7e --- /dev/null +++ b/libpcap-1.8.1/extract.h @@ -0,0 +1,221 @@ +/* + * Copyright (c) 1992, 1993, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef _WIN32 +#include +#endif + +/* + * Macros to extract possibly-unaligned big-endian integral values. + */ +#ifdef LBL_ALIGN +/* + * The processor doesn't natively handle unaligned loads. + */ +#if defined(__GNUC__) && defined(HAVE___ATTRIBUTE__) && \ + (defined(__alpha) || defined(__alpha__) || \ + defined(__mips) || defined(__mips__)) + +/* + * This is a GCC-compatible compiler and we have __attribute__, which + * we assume that mean we have __attribute__((packed)), and this is + * MIPS or Alpha, which has instructions that can help when doing + * unaligned loads. + * + * Declare packed structures containing a uint16_t and a uint32_t, + * cast the pointer to point to one of those, and fetch through it; + * the GCC manual doesn't appear to explicitly say that + * __attribute__((packed)) causes the compiler to generate unaligned-safe + * code, but it apppears to do so. + * + * We do this in case the compiler can generate code using those + * instructions to do an unaligned load and pass stuff to "ntohs()" or + * "ntohl()", which might be better than than the code to fetch the + * bytes one at a time and assemble them. (That might not be the + * case on a little-endian platform, such as DEC's MIPS machines and + * Alpha machines, where "ntohs()" and "ntohl()" might not be done + * inline.) + * + * We do this only for specific architectures because, for example, + * at least some versions of GCC, when compiling for 64-bit SPARC, + * generate code that assumes alignment if we do this. + * + * XXX - add other architectures and compilers as possible and + * appropriate. + * + * HP's C compiler, indicated by __HP_cc being defined, supports + * "#pragma unaligned N" in version A.05.50 and later, where "N" + * specifies a number of bytes at which the typedef on the next + * line is aligned, e.g. + * + * #pragma unalign 1 + * typedef uint16_t unaligned_uint16_t; + * + * to define unaligned_uint16_t as a 16-bit unaligned data type. + * This could be presumably used, in sufficiently recent versions of + * the compiler, with macros similar to those below. This would be + * useful only if that compiler could generate better code for PA-RISC + * or Itanium than would be generated by a bunch of shifts-and-ORs. + * + * DEC C, indicated by __DECC being defined, has, at least on Alpha, + * an __unaligned qualifier that can be applied to pointers to get the + * compiler to generate code that does unaligned loads and stores when + * dereferencing the pointer in question. + * + * XXX - what if the native C compiler doesn't support + * __attribute__((packed))? How can we get it to generate unaligned + * accesses for *specific* items? + */ +typedef struct { + uint16_t val; +} __attribute__((packed)) unaligned_uint16_t; + +typedef struct { + uint32_t val; +} __attribute__((packed)) unaligned_uint32_t; + +static inline uint16_t +EXTRACT_16BITS(const void *p) +{ + return ((uint16_t)ntohs(((const unaligned_uint16_t *)(p))->val)); +} + +static inline uint32_t +EXTRACT_32BITS(const void *p) +{ + return ((uint32_t)ntohl(((const unaligned_uint32_t *)(p))->val)); +} + +static inline uint64_t +EXTRACT_64BITS(const void *p) +{ + return ((uint64_t)(((uint64_t)ntohl(((const unaligned_uint32_t *)(p) + 0)->val)) << 32 | \ + ((uint64_t)ntohl(((const unaligned_uint32_t *)(p) + 1)->val)) << 0)); +} + +#else /* have to do it a byte at a time */ +/* + * This isn't a GCC-compatible compiler, we don't have __attribute__, + * or we do but we don't know of any better way with this instruction + * set to do unaligned loads, so do unaligned loads of big-endian + * quantities the hard way - fetch the bytes one at a time and + * assemble them. + */ +#define EXTRACT_16BITS(p) \ + ((uint16_t)(((uint16_t)(*((const uint8_t *)(p) + 0)) << 8) | \ + ((uint16_t)(*((const uint8_t *)(p) + 1)) << 0))) +#define EXTRACT_32BITS(p) \ + ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 0)) << 24) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 2)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 3)) << 0))) +#define EXTRACT_64BITS(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 0)) << 56) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 48) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 5)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 6)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 7)) << 0))) +#endif /* must special-case unaligned accesses */ +#else /* LBL_ALIGN */ +/* + * The processor natively handles unaligned loads, so we can just + * cast the pointer and fetch through it. + */ +static inline uint16_t +EXTRACT_16BITS(const void *p) +{ + return ((uint16_t)ntohs(*(const uint16_t *)(p))); +} + +static inline uint32_t +EXTRACT_32BITS(const void *p) +{ + return ((uint32_t)ntohl(*(const uint32_t *)(p))); +} + +static inline uint64_t +EXTRACT_64BITS(const void *p) +{ + return ((uint64_t)(((uint64_t)ntohl(*((const uint32_t *)(p) + 0))) << 32 | \ + ((uint64_t)ntohl(*((const uint32_t *)(p) + 1))) << 0)); + +} + +#endif /* LBL_ALIGN */ + +#define EXTRACT_24BITS(p) \ + ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 0)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 2)) << 0))) + +#define EXTRACT_40BITS(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 0)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 0))) + +#define EXTRACT_48BITS(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 0)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 5)) << 0))) + +#define EXTRACT_56BITS(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 0)) << 48) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 5)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 6)) << 0))) + +/* + * Macros to extract possibly-unaligned little-endian integral values. + * XXX - do loads on little-endian machines that support unaligned loads? + */ +#define EXTRACT_LE_8BITS(p) (*(p)) +#define EXTRACT_LE_16BITS(p) \ + ((uint16_t)(((uint16_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint16_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_32BITS(p) \ + ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_24BITS(p) \ + ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_64BITS(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 7)) << 56) | \ + ((uint64_t)(*((const uint8_t *)(p) + 6)) << 48) | \ + ((uint64_t)(*((const uint8_t *)(p) + 5)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 0)) << 0))) diff --git a/libpcap-1.8.1/fad-getad.c b/libpcap-1.8.1/fad-getad.c new file mode 100644 index 00000000..b67b5cdc --- /dev/null +++ b/libpcap-1.8.1/fad-getad.c @@ -0,0 +1,292 @@ +/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */ +/* + * Copyright (c) 1994, 1995, 1996, 1997, 1998 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the Computer Systems + * Engineering Group at Lawrence Berkeley Laboratory. + * 4. Neither the name of the University nor of the Laboratory may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include "pcap-int.h" + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +/* + * We don't do this on Solaris 11 and later, as it appears there aren't + * any AF_PACKET addresses on interfaces, so we don't need this, and + * we end up including both the OS's and our , + * and their definitions of some data structures collide. + */ +#if (defined(linux) || defined(__Lynx__)) && defined(AF_PACKET) +# ifdef HAVE_NETPACKET_PACKET_H +/* Linux distributions with newer glibc */ +# include +# else /* HAVE_NETPACKET_PACKET_H */ +/* LynxOS, Linux distributions with older glibc */ +# ifdef __Lynx__ +/* LynxOS */ +# include +# else /* __Lynx__ */ +/* Linux */ +# include +# include +# endif /* __Lynx__ */ +# endif /* HAVE_NETPACKET_PACKET_H */ +#endif /* (defined(linux) || defined(__Lynx__)) && defined(AF_PACKET) */ + +/* + * This is fun. + * + * In older BSD systems, socket addresses were fixed-length, and + * "sizeof (struct sockaddr)" gave the size of the structure. + * All addresses fit within a "struct sockaddr". + * + * In newer BSD systems, the socket address is variable-length, and + * there's an "sa_len" field giving the length of the structure; + * this allows socket addresses to be longer than 2 bytes of family + * and 14 bytes of data. + * + * Some commercial UNIXes use the old BSD scheme, some use the RFC 2553 + * variant of the old BSD scheme (with "struct sockaddr_storage" rather + * than "struct sockaddr"), and some use the new BSD scheme. + * + * Some versions of GNU libc use neither scheme, but has an "SA_LEN()" + * macro that determines the size based on the address family. Other + * versions don't have "SA_LEN()" (as it was in drafts of RFC 2553 + * but not in the final version). On the latter systems, we explicitly + * check the AF_ type to determine the length; we assume that on + * all those systems we have "struct sockaddr_storage". + */ +#ifndef SA_LEN +#ifdef HAVE_SOCKADDR_SA_LEN +#define SA_LEN(addr) ((addr)->sa_len) +#else /* HAVE_SOCKADDR_SA_LEN */ +#ifdef HAVE_SOCKADDR_STORAGE +static size_t +get_sa_len(struct sockaddr *addr) +{ + switch (addr->sa_family) { + +#ifdef AF_INET + case AF_INET: + return (sizeof (struct sockaddr_in)); +#endif + +#ifdef AF_INET6 + case AF_INET6: + return (sizeof (struct sockaddr_in6)); +#endif + +#if (defined(linux) || defined(__Lynx__)) && defined(AF_PACKET) + case AF_PACKET: + return (sizeof (struct sockaddr_ll)); +#endif + + default: + return (sizeof (struct sockaddr)); + } +} +#define SA_LEN(addr) (get_sa_len(addr)) +#else /* HAVE_SOCKADDR_STORAGE */ +#define SA_LEN(addr) (sizeof (struct sockaddr)) +#endif /* HAVE_SOCKADDR_STORAGE */ +#endif /* HAVE_SOCKADDR_SA_LEN */ +#endif /* SA_LEN */ + +/* + * Get a list of all interfaces that are up and that we can open. + * Returns -1 on error, 0 otherwise. + * The list, as returned through "alldevsp", may be null if no interfaces + * could be opened. + */ +int +pcap_findalldevs_interfaces(pcap_if_t **alldevsp, char *errbuf, + int (*check_usable)(const char *)) +{ + pcap_if_t *devlist = NULL; + struct ifaddrs *ifap, *ifa; + struct sockaddr *addr, *netmask, *broadaddr, *dstaddr; + size_t addr_size, broadaddr_size, dstaddr_size; + int ret = 0; + char *p, *q; + + /* + * Get the list of interface addresses. + * + * Note: this won't return information about interfaces + * with no addresses, so, if a platform has interfaces + * with no interfaces on which traffic can be captured, + * we must check for those interfaces as well (see, for + * example, what's done on Linux). + * + * LAN interfaces will probably have link-layer + * addresses; I don't know whether all implementations + * of "getifaddrs()" now, or in the future, will return + * those. + */ + if (getifaddrs(&ifap) != 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "getifaddrs: %s", pcap_strerror(errno)); + return (-1); + } + for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) { + /* + * If this entry has a colon followed by a number at + * the end, we assume it's a logical interface. Those + * are just the way you assign multiple IP addresses to + * a real interface on Linux, so an entry for a logical + * interface should be treated like the entry for the + * real interface; we do that by stripping off the ":" + * and the number. + * + * XXX - should we do this only on Linux? + */ + p = strchr(ifa->ifa_name, ':'); + if (p != NULL) { + /* + * We have a ":"; is it followed by a number? + */ + q = p + 1; + while (isdigit((unsigned char)*q)) + q++; + if (*q == '\0') { + /* + * All digits after the ":" until the end. + * Strip off the ":" and everything after + * it. + */ + *p = '\0'; + } + } + + /* + * Can we capture on this device? + */ + if (!(*check_usable)(ifa->ifa_name)) { + /* + * No. + */ + continue; + } + + /* + * "ifa_addr" was apparently null on at least one + * interface on some system. Therefore, we supply + * the address and netmask only if "ifa_addr" is + * non-null (if there's no address, there's obviously + * no netmask). + */ + if (ifa->ifa_addr != NULL) { + addr = ifa->ifa_addr; + addr_size = SA_LEN(addr); + netmask = ifa->ifa_netmask; + } else { + addr = NULL; + addr_size = 0; + netmask = NULL; + } + + /* + * Note that, on some platforms, ifa_broadaddr and + * ifa_dstaddr could be the same field (true on at + * least some versions of *BSD and OS X), so we + * can't just check whether the broadcast address + * is null and add it if so and check whether the + * destination address is null and add it if so. + * + * Therefore, we must also check the IFF_BROADCAST + * flag, and only add a broadcast address if it's + * set, and check the IFF_POINTTOPOINT flag, and + * only add a destination address if it's set (as + * per man page recommendations on some of those + * platforms). + */ + if (ifa->ifa_flags & IFF_BROADCAST && + ifa->ifa_broadaddr != NULL) { + broadaddr = ifa->ifa_broadaddr; + broadaddr_size = SA_LEN(broadaddr); + } else { + broadaddr = NULL; + broadaddr_size = 0; + } + if (ifa->ifa_flags & IFF_POINTOPOINT && + ifa->ifa_dstaddr != NULL) { + dstaddr = ifa->ifa_dstaddr; + dstaddr_size = SA_LEN(ifa->ifa_dstaddr); + } else { + dstaddr = NULL; + dstaddr_size = 0; + } + + /* + * Add information for this address to the list. + */ + if (add_addr_to_iflist(&devlist, ifa->ifa_name, + if_flags_to_pcap_flags(ifa->ifa_name, ifa->ifa_flags), + addr, addr_size, netmask, addr_size, + broadaddr, broadaddr_size, dstaddr, dstaddr_size, + errbuf) < 0) { + ret = -1; + break; + } + } + + freeifaddrs(ifap); + + if (ret == -1) { + /* + * We had an error; free the list we've been constructing. + */ + if (devlist != NULL) { + pcap_freealldevs(devlist); + devlist = NULL; + } + } + + *alldevsp = devlist; + return (ret); +} diff --git a/libpcap-1.8.1/fad-getad.o b/libpcap-1.8.1/fad-getad.o new file mode 100644 index 0000000000000000000000000000000000000000..318bf11e767e500fa9069fd4845cc53efa94f4c2 GIT binary patch literal 11780 zcmbta3wTuJnf}k5Nivy)WHJ*V!GHq<3CheQ5P?O|gsX{x#Dt4T>o7?s$&|^=I2RPW zfM~V4vO-~tZbh=zuCB#hwA;&L?ag*w+q$l;ZLOCoAsc(qTBZBccD-cZ_dnlBhSWao z^Xz$^bKdXvfB*OW|9AfLpEI*}ZQDA-FqC~5s!mOCO4XdNH3f|t>QuF=Qg62hex*(g zjXbyL_-Na68%{s-ko{o`op7jo&%$6K-c;YjIKC! zVD!VWu{TtG$LWQT9Z_mVQ`50gr8bRhRLbq_I5N82Gc;15hK9A>j*ioA$VnIahlZ6p zIBL|N8NJyvH2kRN;IN~lV&s3v#%3thHKOXDDnR=Jwymu{HoAB$1pAH=#O*HKaRhyA z8TmNqll4CxcEi5r;E?G6Uje!jwCCWE&r^S7)Q`Aao+G1i7# zy8R2f{c363jvSQQJW{!D$SgQHWH=!&Laaq6hlU{=sq7dUaioTZokK@P-I7-w;#07x zL0^8*Zsg+xUDa`5wDRPEQO~{uqopataS&sOv#@?>cm>8(j|p;GuGHhIi7{;&c@+6` z44vY8g*rA`Pyg!X(MI4JKWNOuLdZ?kIlK<>wmo;?^xJoR{g*Dp#n`7Z$CLE8eWavg z$asEi%ze`TGV<&ksn&URVouZy=2e0=%!&Ciucybxe(eGO6p+4PQ&F>T$TtP{z!8ke z@He6J??4_0hlU>n&9+7RaCQt0f0gZF_X_3WpZXdZx08@JA$I1@+&HJI{*;OODflkp z)MHYAYDB4_5!Mv@vc~D4ZqrzQ9AjhErh>kXK45S7henK=p%J@1+dd|3zlFl!u@Gl} zG#l%S^!BDR%l-2*>VsmXFvU2W#xF1?rQa!3>bItrs5hmZ!*C^_b2y3)L2G`E7yreu zaX5>HEbvfo6kZ3F!%=V-TsoZvu|!rmTm=rebGV8Ia2uL8fHs##(8%0DH#dJ$w=eiS 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 Xvz +#include +#include +#ifdef HAVE_SYS_SOCKIO_H +#include +#endif +#include /* concession to AIX */ + +struct mbuf; /* Squelch compiler warnings on some platforms for */ +struct rtentry; /* declarations in */ +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "pcap-int.h" + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +/* + * This is fun. + * + * In older BSD systems, socket addresses were fixed-length, and + * "sizeof (struct sockaddr)" gave the size of the structure. + * All addresses fit within a "struct sockaddr". + * + * In newer BSD systems, the socket address is variable-length, and + * there's an "sa_len" field giving the length of the structure; + * this allows socket addresses to be longer than 2 bytes of family + * and 14 bytes of data. + * + * Some commercial UNIXes use the old BSD scheme, some use the RFC 2553 + * variant of the old BSD scheme (with "struct sockaddr_storage" rather + * than "struct sockaddr"), and some use the new BSD scheme. + * + * Some versions of GNU libc use neither scheme, but has an "SA_LEN()" + * macro that determines the size based on the address family. Other + * versions don't have "SA_LEN()" (as it was in drafts of RFC 2553 + * but not in the final version). + * + * We assume that a UNIX that doesn't have "getifaddrs()" and doesn't have + * SIOCGLIFCONF, but has SIOCGIFCONF, uses "struct sockaddr" for the + * address in an entry returned by SIOCGIFCONF. + */ +#ifndef SA_LEN +#ifdef HAVE_SOCKADDR_SA_LEN +#define SA_LEN(addr) ((addr)->sa_len) +#else /* HAVE_SOCKADDR_SA_LEN */ +#define SA_LEN(addr) (sizeof (struct sockaddr)) +#endif /* HAVE_SOCKADDR_SA_LEN */ +#endif /* SA_LEN */ + +/* + * This is also fun. + * + * There is no ioctl that returns the amount of space required for all + * the data that SIOCGIFCONF could return, and if a buffer is supplied + * that's not large enough for all the data SIOCGIFCONF could return, + * on at least some platforms it just returns the data that'd fit with + * no indication that there wasn't enough room for all the data, much + * less an indication of how much more room is required. + * + * The only way to ensure that we got all the data is to pass a buffer + * large enough that the amount of space in the buffer *not* filled in + * is greater than the largest possible entry. + * + * We assume that's "sizeof(ifreq.ifr_name)" plus 255, under the assumption + * that no address is more than 255 bytes (on systems where the "sa_len" + * field in a "struct sockaddr" is 1 byte, e.g. newer BSDs, that's the + * case, and addresses are unlikely to be bigger than that in any case). + */ +#define MAX_SA_LEN 255 + +/* + * Get a list of all interfaces that are up and that we can open. + * Returns -1 on error, 0 otherwise. + * The list, as returned through "alldevsp", may be null if no interfaces + * were up and could be opened. + * + * This is the implementation used on platforms that have SIOCGIFCONF but + * don't have any other mechanism for getting a list of interfaces. + * + * XXX - or platforms that have other, better mechanisms but for which + * we don't yet have code to use that mechanism; I think there's a better + * way on Linux, for example, but if that better way is "getifaddrs()", + * we already have that. + */ +int +pcap_findalldevs_interfaces(pcap_if_t **alldevsp, char *errbuf, + int (*check_usable)(const char *)) +{ + pcap_if_t *devlist = NULL; + register int fd; + register struct ifreq *ifrp, *ifend, *ifnext; + size_t n; + struct ifconf ifc; + char *buf = NULL; + unsigned buf_size; +#if defined (HAVE_SOLARIS) || defined (HAVE_HPUX10_20_OR_LATER) + char *p, *q; +#endif + struct ifreq ifrflags, ifrnetmask, ifrbroadaddr, ifrdstaddr; + struct sockaddr *netmask, *broadaddr, *dstaddr; + size_t netmask_size, broadaddr_size, dstaddr_size; + int ret = 0; + + /* + * Create a socket from which to fetch the list of interfaces. + */ + fd = socket(AF_INET, SOCK_DGRAM, 0); + if (fd < 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "socket: %s", pcap_strerror(errno)); + return (-1); + } + + /* + * Start with an 8K buffer, and keep growing the buffer until + * we have more than "sizeof(ifrp->ifr_name) + MAX_SA_LEN" + * bytes left over in the buffer or we fail to get the + * interface list for some reason other than EINVAL (which is + * presumed here to mean "buffer is too small"). + */ + buf_size = 8192; + for (;;) { + buf = malloc(buf_size); + if (buf == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + (void)close(fd); + return (-1); + } + + ifc.ifc_len = buf_size; + ifc.ifc_buf = buf; + memset(buf, 0, buf_size); + if (ioctl(fd, SIOCGIFCONF, (char *)&ifc) < 0 + && errno != EINVAL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGIFCONF: %s", pcap_strerror(errno)); + (void)close(fd); + free(buf); + return (-1); + } + if (ifc.ifc_len < buf_size && + (buf_size - ifc.ifc_len) > sizeof(ifrp->ifr_name) + MAX_SA_LEN) + break; + free(buf); + buf_size *= 2; + } + + ifrp = (struct ifreq *)buf; + ifend = (struct ifreq *)(buf + ifc.ifc_len); + + for (; ifrp < ifend; ifrp = ifnext) { + /* + * XXX - what if this isn't an IPv4 address? Can + * we still get the netmask, etc. with ioctls on + * an IPv4 socket? + * + * The answer is probably platform-dependent, and + * if the answer is "no" on more than one platform, + * the way you work around it is probably platform- + * dependent as well. + */ + n = SA_LEN(&ifrp->ifr_addr) + sizeof(ifrp->ifr_name); + if (n < sizeof(*ifrp)) + ifnext = ifrp + 1; + else + ifnext = (struct ifreq *)((char *)ifrp + n); + + /* + * XXX - The 32-bit compatibility layer for Linux on IA-64 + * is slightly broken. It correctly converts the structures + * to and from kernel land from 64 bit to 32 bit but + * doesn't update ifc.ifc_len, leaving it larger than the + * amount really used. This means we read off the end + * of the buffer and encounter an interface with an + * "empty" name. Since this is highly unlikely to ever + * occur in a valid case we can just finish looking for + * interfaces if we see an empty name. + */ + if (!(*ifrp->ifr_name)) + break; + + /* + * Skip entries that begin with "dummy". + * XXX - what are these? Is this Linux-specific? + * Are there platforms on which we shouldn't do this? + */ + if (strncmp(ifrp->ifr_name, "dummy", 5) == 0) + continue; + + /* + * Can we capture on this device? + */ + if (!(*check_usable)(ifrp->ifr_name)) { + /* + * No. + */ + continue; + } + + /* + * Get the flags for this interface. + */ + strncpy(ifrflags.ifr_name, ifrp->ifr_name, + sizeof(ifrflags.ifr_name)); + if (ioctl(fd, SIOCGIFFLAGS, (char *)&ifrflags) < 0) { + if (errno == ENXIO) + continue; + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGIFFLAGS: %.*s: %s", + (int)sizeof(ifrflags.ifr_name), + ifrflags.ifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + + /* + * Get the netmask for this address on this interface. + */ + strncpy(ifrnetmask.ifr_name, ifrp->ifr_name, + sizeof(ifrnetmask.ifr_name)); + memcpy(&ifrnetmask.ifr_addr, &ifrp->ifr_addr, + sizeof(ifrnetmask.ifr_addr)); + if (ioctl(fd, SIOCGIFNETMASK, (char *)&ifrnetmask) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + netmask = NULL; + netmask_size = 0; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGIFNETMASK: %.*s: %s", + (int)sizeof(ifrnetmask.ifr_name), + ifrnetmask.ifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else { + netmask = &ifrnetmask.ifr_addr; + netmask_size = SA_LEN(netmask); + } + + /* + * Get the broadcast address for this address on this + * interface (if any). + */ + if (ifrflags.ifr_flags & IFF_BROADCAST) { + strncpy(ifrbroadaddr.ifr_name, ifrp->ifr_name, + sizeof(ifrbroadaddr.ifr_name)); + memcpy(&ifrbroadaddr.ifr_addr, &ifrp->ifr_addr, + sizeof(ifrbroadaddr.ifr_addr)); + if (ioctl(fd, SIOCGIFBRDADDR, + (char *)&ifrbroadaddr) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + broadaddr = NULL; + broadaddr_size = 0; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGIFBRDADDR: %.*s: %s", + (int)sizeof(ifrbroadaddr.ifr_name), + ifrbroadaddr.ifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else { + broadaddr = &ifrbroadaddr.ifr_broadaddr; + broadaddr_size = SA_LEN(broadaddr); + } + } else { + /* + * Not a broadcast interface, so no broadcast + * address. + */ + broadaddr = NULL; + broadaddr_size = 0; + } + + /* + * Get the destination address for this address on this + * interface (if any). + */ + if (ifrflags.ifr_flags & IFF_POINTOPOINT) { + strncpy(ifrdstaddr.ifr_name, ifrp->ifr_name, + sizeof(ifrdstaddr.ifr_name)); + memcpy(&ifrdstaddr.ifr_addr, &ifrp->ifr_addr, + sizeof(ifrdstaddr.ifr_addr)); + if (ioctl(fd, SIOCGIFDSTADDR, + (char *)&ifrdstaddr) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + dstaddr = NULL; + dstaddr_size = 0; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGIFDSTADDR: %.*s: %s", + (int)sizeof(ifrdstaddr.ifr_name), + ifrdstaddr.ifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else { + dstaddr = &ifrdstaddr.ifr_dstaddr; + dstaddr_size = SA_LEN(dstaddr); + } + } else { + /* + * Not a point-to-point interface, so no destination + * address. + */ + dstaddr = NULL; + dstaddr_size = 0; + } + +#if defined (HAVE_SOLARIS) || defined (HAVE_HPUX10_20_OR_LATER) + /* + * If this entry has a colon followed by a number at + * the end, it's a logical interface. Those are just + * the way you assign multiple IP addresses to a real + * interface, so an entry for a logical interface should + * be treated like the entry for the real interface; + * we do that by stripping off the ":" and the number. + */ + p = strchr(ifrp->ifr_name, ':'); + if (p != NULL) { + /* + * We have a ":"; is it followed by a number? + */ + q = p + 1; + while (isdigit((unsigned char)*q)) + q++; + if (*q == '\0') { + /* + * All digits after the ":" until the end. + * Strip off the ":" and everything after + * it. + */ + *p = '\0'; + } + } +#endif + + /* + * Add information for this address to the list. + */ + if (add_addr_to_iflist(&devlist, ifrp->ifr_name, + if_flags_to_pcap_flags(ifrp->ifr_name, ifrflags.ifr_flags), + &ifrp->ifr_addr, SA_LEN(&ifrp->ifr_addr), + netmask, netmask_size, broadaddr, broadaddr_size, + dstaddr, dstaddr_size, errbuf) < 0) { + ret = -1; + break; + } + } + free(buf); + (void)close(fd); + + if (ret == -1) { + /* + * We had an error; free the list we've been constructing. + */ + if (devlist != NULL) { + pcap_freealldevs(devlist); + devlist = NULL; + } + } + + *alldevsp = devlist; + return (ret); +} diff --git a/libpcap-1.8.1/fad-glifc.c b/libpcap-1.8.1/fad-glifc.c new file mode 100644 index 00000000..511481cf --- /dev/null +++ b/libpcap-1.8.1/fad-glifc.c @@ -0,0 +1,359 @@ +/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */ +/* + * Copyright (c) 1994, 1995, 1996, 1997, 1998 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the Computer Systems + * Engineering Group at Lawrence Berkeley Laboratory. + * 4. Neither the name of the University nor of the Laboratory may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#ifdef HAVE_SYS_SOCKIO_H +#include +#endif +#include /* concession to AIX */ + +struct mbuf; /* Squelch compiler warnings on some platforms for */ +struct rtentry; /* declarations in */ +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "pcap-int.h" + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +/* + * Get a list of all interfaces that are up and that we can open. + * Returns -1 on error, 0 otherwise. + * The list, as returned through "alldevsp", may be null if no interfaces + * were up and could be opened. + * + * This is the implementation used on platforms that have SIOCGLIFCONF + * but don't have "getifaddrs()". (Solaris 8 and later; we use + * SIOCGLIFCONF rather than SIOCGIFCONF in order to get IPv6 addresses.) + */ +int +pcap_findalldevs_interfaces(pcap_if_t **alldevsp, char *errbuf, + int (*check_usable)(const char *)) +{ + pcap_if_t *devlist = NULL; + register int fd4, fd6, fd; + register struct lifreq *ifrp, *ifend; + struct lifnum ifn; + struct lifconf ifc; + char *buf = NULL; + unsigned buf_size; +#ifdef HAVE_SOLARIS + char *p, *q; +#endif + struct lifreq ifrflags, ifrnetmask, ifrbroadaddr, ifrdstaddr; + struct sockaddr *netmask, *broadaddr, *dstaddr; + int ret = 0; + + /* + * Create a socket from which to fetch the list of interfaces, + * and from which to fetch IPv4 information. + */ + fd4 = socket(AF_INET, SOCK_DGRAM, 0); + if (fd4 < 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "socket: %s", pcap_strerror(errno)); + return (-1); + } + + /* + * Create a socket from which to fetch IPv6 information. + */ + fd6 = socket(AF_INET6, SOCK_DGRAM, 0); + if (fd6 < 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "socket: %s", pcap_strerror(errno)); + (void)close(fd4); + return (-1); + } + + /* + * How many entries will SIOCGLIFCONF return? + */ + ifn.lifn_family = AF_UNSPEC; + ifn.lifn_flags = 0; + ifn.lifn_count = 0; + if (ioctl(fd4, SIOCGLIFNUM, (char *)&ifn) < 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFNUM: %s", pcap_strerror(errno)); + (void)close(fd6); + (void)close(fd4); + return (-1); + } + + /* + * Allocate a buffer for those entries. + */ + buf_size = ifn.lifn_count * sizeof (struct lifreq); + buf = malloc(buf_size); + if (buf == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + (void)close(fd6); + (void)close(fd4); + return (-1); + } + + /* + * Get the entries. + */ + ifc.lifc_len = buf_size; + ifc.lifc_buf = buf; + ifc.lifc_family = AF_UNSPEC; + ifc.lifc_flags = 0; + memset(buf, 0, buf_size); + if (ioctl(fd4, SIOCGLIFCONF, (char *)&ifc) < 0) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFCONF: %s", pcap_strerror(errno)); + (void)close(fd6); + (void)close(fd4); + free(buf); + return (-1); + } + + /* + * Loop over the entries. + */ + ifrp = (struct lifreq *)buf; + ifend = (struct lifreq *)(buf + ifc.lifc_len); + + for (; ifrp < ifend; ifrp++) { + /* + * Skip entries that begin with "dummy". + * XXX - what are these? Is this Linux-specific? + * Are there platforms on which we shouldn't do this? + */ + if (strncmp(ifrp->lifr_name, "dummy", 5) == 0) + continue; + + /* + * Can we capture on this device? + */ + if (!(*check_usable)(ifrp->lifr_name)) { + /* + * No. + */ + continue; + } + + /* + * IPv6 or not? + */ + if (((struct sockaddr *)&ifrp->lifr_addr)->sa_family == AF_INET6) + fd = fd6; + else + fd = fd4; + + /* + * Get the flags for this interface. + */ + strncpy(ifrflags.lifr_name, ifrp->lifr_name, + sizeof(ifrflags.lifr_name)); + if (ioctl(fd, SIOCGLIFFLAGS, (char *)&ifrflags) < 0) { + if (errno == ENXIO) + continue; + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFFLAGS: %.*s: %s", + (int)sizeof(ifrflags.lifr_name), + ifrflags.lifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + + /* + * Get the netmask for this address on this interface. + */ + strncpy(ifrnetmask.lifr_name, ifrp->lifr_name, + sizeof(ifrnetmask.lifr_name)); + memcpy(&ifrnetmask.lifr_addr, &ifrp->lifr_addr, + sizeof(ifrnetmask.lifr_addr)); + if (ioctl(fd, SIOCGLIFNETMASK, (char *)&ifrnetmask) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + netmask = NULL; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFNETMASK: %.*s: %s", + (int)sizeof(ifrnetmask.lifr_name), + ifrnetmask.lifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else + netmask = (struct sockaddr *)&ifrnetmask.lifr_addr; + + /* + * Get the broadcast address for this address on this + * interface (if any). + */ + if (ifrflags.lifr_flags & IFF_BROADCAST) { + strncpy(ifrbroadaddr.lifr_name, ifrp->lifr_name, + sizeof(ifrbroadaddr.lifr_name)); + memcpy(&ifrbroadaddr.lifr_addr, &ifrp->lifr_addr, + sizeof(ifrbroadaddr.lifr_addr)); + if (ioctl(fd, SIOCGLIFBRDADDR, + (char *)&ifrbroadaddr) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + broadaddr = NULL; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFBRDADDR: %.*s: %s", + (int)sizeof(ifrbroadaddr.lifr_name), + ifrbroadaddr.lifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else + broadaddr = (struct sockaddr *)&ifrbroadaddr.lifr_broadaddr; + } else { + /* + * Not a broadcast interface, so no broadcast + * address. + */ + broadaddr = NULL; + } + + /* + * Get the destination address for this address on this + * interface (if any). + */ + if (ifrflags.lifr_flags & IFF_POINTOPOINT) { + strncpy(ifrdstaddr.lifr_name, ifrp->lifr_name, + sizeof(ifrdstaddr.lifr_name)); + memcpy(&ifrdstaddr.lifr_addr, &ifrp->lifr_addr, + sizeof(ifrdstaddr.lifr_addr)); + if (ioctl(fd, SIOCGLIFDSTADDR, + (char *)&ifrdstaddr) < 0) { + if (errno == EADDRNOTAVAIL) { + /* + * Not available. + */ + dstaddr = NULL; + } else { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "SIOCGLIFDSTADDR: %.*s: %s", + (int)sizeof(ifrdstaddr.lifr_name), + ifrdstaddr.lifr_name, + pcap_strerror(errno)); + ret = -1; + break; + } + } else + dstaddr = (struct sockaddr *)&ifrdstaddr.lifr_dstaddr; + } else + dstaddr = NULL; + +#ifdef HAVE_SOLARIS + /* + * If this entry has a colon followed by a number at + * the end, it's a logical interface. Those are just + * the way you assign multiple IP addresses to a real + * interface, so an entry for a logical interface should + * be treated like the entry for the real interface; + * we do that by stripping off the ":" and the number. + */ + p = strchr(ifrp->lifr_name, ':'); + if (p != NULL) { + /* + * We have a ":"; is it followed by a number? + */ + q = p + 1; + while (isdigit((unsigned char)*q)) + q++; + if (*q == '\0') { + /* + * All digits after the ":" until the end. + * Strip off the ":" and everything after + * it. + */ + *p = '\0'; + } + } +#endif + + /* + * Add information for this address to the list. + */ + if (add_addr_to_iflist(&devlist, ifrp->lifr_name, + if_flags_to_pcap_flags(ifrp->lifr_name, ifrflags.lifr_flags), + (struct sockaddr *)&ifrp->lifr_addr, + sizeof (struct sockaddr_storage), + netmask, sizeof (struct sockaddr_storage), + broadaddr, sizeof (struct sockaddr_storage), + dstaddr, sizeof (struct sockaddr_storage), errbuf) < 0) { + ret = -1; + break; + } + } + free(buf); + (void)close(fd6); + (void)close(fd4); + + if (ret == -1) { + /* + * We had an error; free the list we've been constructing. + */ + if (devlist != NULL) { + pcap_freealldevs(devlist); + devlist = NULL; + } + } + + *alldevsp = devlist; + return (ret); +} diff --git a/libpcap-1.8.1/fad-helpers.c b/libpcap-1.8.1/fad-helpers.c new file mode 100644 index 00000000..4860bc55 --- /dev/null +++ b/libpcap-1.8.1/fad-helpers.c @@ -0,0 +1,884 @@ +/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */ +/* + * Copyright (c) 1994, 1995, 1996, 1997, 1998 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the Computer Systems + * Engineering Group at Lawrence Berkeley Laboratory. + * 4. Neither the name of the University nor of the Laboratory may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef _WIN32 +#include +#else /* _WIN32 */ + +#include +#ifndef MSDOS +#include +#endif +#include +#include +#ifdef HAVE_SYS_SOCKIO_H +#include +#endif + +struct mbuf; /* Squelch compiler warnings on some platforms for */ +struct rtentry; /* declarations in */ +#include +#include +#endif /* _WIN32 */ + +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) && !defined(__BORLANDC__) +#include +#endif /* !_WIN32 && !__BORLANDC__ */ +#ifdef HAVE_LIMITS_H +#include +#else +#define INT_MAX 2147483647 +#endif + +#include "pcap-int.h" + +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +#ifndef _WIN32 +/* Not all systems have IFF_LOOPBACK */ +#ifdef IFF_LOOPBACK +#define ISLOOPBACK(name, flags) ((flags) & IFF_LOOPBACK) +#else +#define ISLOOPBACK(name, flags) ((name)[0] == 'l' && (name)[1] == 'o' && \ + (isdigit((unsigned char)((name)[2])) || (name)[2] == '\0')) +#endif + +#ifdef IFF_UP +#define ISUP(flags) ((flags) & IFF_UP) +#else +#define ISUP(flags) 0 +#endif + +#ifdef IFF_RUNNING +#define ISRUNNING(flags) ((flags) & IFF_RUNNING) +#else +#define ISRUNNING(flags) 0 +#endif + +/* + * Map UN*X-style interface flags to libpcap flags. + */ +bpf_u_int32 +if_flags_to_pcap_flags(const char *name _U_, u_int if_flags) +{ + bpf_u_int32 pcap_flags; + + pcap_flags = 0; + if (ISLOOPBACK(name, if_flags)) + pcap_flags |= PCAP_IF_LOOPBACK; + if (ISUP(if_flags)) + pcap_flags |= PCAP_IF_UP; + if (ISRUNNING(if_flags)) + pcap_flags |= PCAP_IF_RUNNING; + return (pcap_flags); +} +#endif + +static struct sockaddr * +dup_sockaddr(struct sockaddr *sa, size_t sa_length) +{ + struct sockaddr *newsa; + + if ((newsa = malloc(sa_length)) == NULL) + return (NULL); + return (memcpy(newsa, sa, sa_length)); +} + +/* + * Construct a "figure of merit" for an interface, for use when sorting + * the list of interfaces, in which interfaces that are up are superior + * to interfaces that aren't up, interfaces that are up and running are + * superior to interfaces that are up but not running, and non-loopback + * interfaces that are up and running are superior to loopback interfaces, + * and interfaces with the same flags have a figure of merit that's higher + * the lower the instance number. + * + * The goal is to try to put the interfaces most likely to be useful for + * capture at the beginning of the list. + * + * The figure of merit, which is lower the "better" the interface is, + * has the uppermost bit set if the interface isn't running, the bit + * below that set if the interface isn't up, the bit below that set + * if the interface is a loopback interface, and the interface index + * in the 29 bits below that. (Yes, we assume u_int is 32 bits.) + */ +static u_int +get_figure_of_merit(pcap_if_t *dev) +{ + const char *cp; + u_int n; + + if (strcmp(dev->name, "any") == 0) { + /* + * Give the "any" device an artificially high instance + * number, so it shows up after all other non-loopback + * interfaces. + */ + n = 0x1FFFFFFF; /* 29 all-1 bits */ + } else { + /* + * A number at the end of the device name string is + * assumed to be a unit number. + */ + cp = dev->name + strlen(dev->name) - 1; + while (cp-1 >= dev->name && *(cp-1) >= '0' && *(cp-1) <= '9') + cp--; + if (*cp >= '0' && *cp <= '9') + n = atoi(cp); + else + n = 0; + } + if (!(dev->flags & PCAP_IF_RUNNING)) + n |= 0x80000000; + if (!(dev->flags & PCAP_IF_UP)) + n |= 0x40000000; + if (dev->flags & PCAP_IF_LOOPBACK) + n |= 0x20000000; + return (n); +} + +/* + * Try to get a description for a given device. + * Returns a mallocated description if it could and NULL if it couldn't. + * + * XXX - on FreeBSDs that support it, should it get the sysctl named + * "dev.{adapter family name}.{adapter unit}.%desc" to get a description + * of the adapter? Note that "dev.an.0.%desc" is "Aironet PC4500/PC4800" + * with my Cisco 350 card, so the name isn't entirely descriptive. The + * "dev.an.0.%pnpinfo" has a better description, although one might argue + * that the problem is really a driver bug - if it can find out that it's + * a Cisco 340 or 350, rather than an old Aironet card, it should use + * that in the description. + * + * Do NetBSD, DragonflyBSD, or OpenBSD support this as well? FreeBSD + * and OpenBSD let you get a description, but it's not generated by the OS, + * it's set with another ioctl that ifconfig supports; we use that to get + * a description in FreeBSD and OpenBSD, but if there is no such + * description available, it still might be nice to get some description + * string based on the device type or something such as that. + * + * In OS X, the System Configuration framework can apparently return + * names in 10.4 and later. + * + * It also appears that freedesktop.org's HAL offers an "info.product" + * string, but the HAL specification says it "should not be used in any + * UI" and "subsystem/capability specific properties" should be used + * instead and, in any case, I think HAL is being deprecated in + * favor of other stuff such as DeviceKit. DeviceKit doesn't appear + * to have any obvious product information for devices, but maybe + * I haven't looked hard enough. + * + * Using the System Configuration framework, or HAL, or DeviceKit, or + * whatever, would require that libpcap applications be linked with + * the frameworks/libraries in question. That shouldn't be a problem + * for programs linking with the shared version of libpcap (unless + * you're running on AIX - which I think is the only UN*X that doesn't + * support linking a shared library with other libraries on which it + * depends, and having an executable linked only with the first shared + * library automatically pick up the other libraries when started - + * and using HAL or whatever). Programs linked with the static + * version of libpcap would have to use pcap-config with the --static + * flag in order to get the right linker flags in order to pick up + * the additional libraries/frameworks; those programs need that anyway + * for libpcap 1.1 and beyond on Linux, as, by default, it requires + * -lnl. + * + * Do any other UN*Xes, or desktop environments support getting a + * description? + */ +static char * +get_if_description(const char *name) +{ +#ifdef SIOCGIFDESCR + char *description = NULL; + int s; + struct ifreq ifrdesc; +#ifndef IFDESCRSIZE + size_t descrlen = 64; +#else + size_t descrlen = IFDESCRSIZE; +#endif /* IFDESCRSIZE */ + + /* + * Get the description for the interface. + */ + memset(&ifrdesc, 0, sizeof ifrdesc); + strlcpy(ifrdesc.ifr_name, name, sizeof ifrdesc.ifr_name); + s = socket(AF_INET, SOCK_DGRAM, 0); + if (s >= 0) { +#ifdef __FreeBSD__ + /* + * On FreeBSD, if the buffer isn't big enough for the + * description, the ioctl succeeds, but the description + * isn't copied, ifr_buffer.length is set to the description + * length, and ifr_buffer.buffer is set to NULL. + */ + for (;;) { + free(description); + if ((description = malloc(descrlen)) != NULL) { + ifrdesc.ifr_buffer.buffer = description; + ifrdesc.ifr_buffer.length = descrlen; + if (ioctl(s, SIOCGIFDESCR, &ifrdesc) == 0) { + if (ifrdesc.ifr_buffer.buffer == + description) + break; + else + descrlen = ifrdesc.ifr_buffer.length; + } else { + /* + * Failed to get interface description. + */ + free(description); + description = NULL; + break; + } + } else + break; + } +#else /* __FreeBSD__ */ + /* + * The only other OS that currently supports + * SIOCGIFDESCR is OpenBSD, and it has no way + * to get the description length - it's clamped + * to a maximum of IFDESCRSIZE. + */ + if ((description = malloc(descrlen)) != NULL) { + ifrdesc.ifr_data = (caddr_t)description; + if (ioctl(s, SIOCGIFDESCR, &ifrdesc) != 0) { + /* + * Failed to get interface description. + */ + free(description); + description = NULL; + } + } +#endif /* __FreeBSD__ */ + close(s); + if (description != NULL && strlen(description) == 0) { + /* + * Description is empty, so discard it. + */ + free(description); + description = NULL; + } + } + +#ifdef __FreeBSD__ + /* + * For FreeBSD, if we didn't get a description, and this is + * a device with a name of the form usbusN, label it as a USB + * bus. + */ + if (description == NULL) { + if (strncmp(name, "usbus", 5) == 0) { + /* + * OK, it begins with "usbus". + */ + long busnum; + char *p; + + errno = 0; + busnum = strtol(name + 5, &p, 10); + if (errno == 0 && p != name + 5 && *p == '\0' && + busnum >= 0 && busnum <= INT_MAX) { + /* + * OK, it's a valid number that's not + * bigger than INT_MAX. Construct + * a description from it. + */ + static const char descr_prefix[] = "USB bus number "; + size_t descr_size; + + /* + * Allow enough room for a 32-bit bus number. + * sizeof (descr_prefix) includes the + * terminating NUL. + */ + descr_size = sizeof (descr_prefix) + 10; + description = malloc(descr_size); + if (description != NULL) { + pcap_snprintf(description, descr_size, + "%s%ld", descr_prefix, busnum); + } + } + } + } +#endif + return (description); +#else /* SIOCGIFDESCR */ + return (NULL); +#endif /* SIOCGIFDESCR */ +} + +/* + * Look for a given device in the specified list of devices. + * + * If we find it, return 0 and set *curdev_ret to point to it. + * + * If we don't find it, check whether we can open it: + * + * If that fails with PCAP_ERROR_NO_SUCH_DEVICE or + * PCAP_ERROR_IFACE_NOT_UP, don't attempt to add an entry for + * it, as that probably means it exists but doesn't support + * packet capture. + * + * Otherwise, attempt to add an entry for it, with the specified + * ifnet flags and description, and, if that succeeds, return 0 + * and set *curdev_ret to point to the new entry, otherwise + * return PCAP_ERROR and set errbuf to an error message. If we + * weren't given a description, try to get one. + */ +int +add_or_find_if(pcap_if_t **curdev_ret, pcap_if_t **alldevs, const char *name, + bpf_u_int32 flags, const char *description, char *errbuf) +{ + pcap_t *p; + pcap_if_t *curdev, *prevdev, *nextdev; + u_int this_figure_of_merit, nextdev_figure_of_merit; + char open_errbuf[PCAP_ERRBUF_SIZE]; + int ret; + + /* + * Is there already an entry in the list for this interface? + */ + for (curdev = *alldevs; curdev != NULL; curdev = curdev->next) { + if (strcmp(name, curdev->name) == 0) + break; /* yes, we found it */ + } + + if (curdev == NULL) { + /* + * No, we didn't find it. + * + * Can we open this interface for live capture? + * + * We do this check so that interfaces that are + * supplied by the interface enumeration mechanism + * we're using but that don't support packet capture + * aren't included in the list. Loopback interfaces + * on Solaris are an example of this; we don't just + * omit loopback interfaces on all platforms because + * you *can* capture on loopback interfaces on some + * OSes. + * + * On OS X, we don't do this check if the device + * name begins with "wlt"; at least some versions + * of OS X offer monitor mode capturing by having + * a separate "monitor mode" device for each wireless + * adapter, rather than by implementing the ioctls + * that {Free,Net,Open,DragonFly}BSD provide. + * Opening that device puts the adapter into monitor + * mode, which, at least for some adapters, causes + * them to deassociate from the network with which + * they're associated. + * + * Instead, we try to open the corresponding "en" + * device (so that we don't end up with, for users + * without sufficient privilege to open capture + * devices, a list of adapters that only includes + * the wlt devices). + */ +#ifdef __APPLE__ + if (strncmp(name, "wlt", 3) == 0) { + char *en_name; + size_t en_name_len; + + /* + * Try to allocate a buffer for the "en" + * device's name. + */ + en_name_len = strlen(name) - 1; + en_name = malloc(en_name_len + 1); + if (en_name == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + return (-1); + } + strcpy(en_name, "en"); + strcat(en_name, name + 3); + p = pcap_create(en_name, open_errbuf); + free(en_name); + } else +#endif /* __APPLE */ + p = pcap_create(name, open_errbuf); + if (p == NULL) { + /* + * The attempt to create the pcap_t failed; + * that's probably an indication that we're + * out of memory. + * + * Don't bother including this interface, + * but don't treat it as an error. + */ + *curdev_ret = NULL; + return (0); + } + /* Small snaplen, so we don't try to allocate much memory. */ + pcap_set_snaplen(p, 68); + ret = pcap_activate(p); + pcap_close(p); + switch (ret) { + + case PCAP_ERROR_NO_SUCH_DEVICE: + case PCAP_ERROR_IFACE_NOT_UP: + /* + * We expect these two errors - they're the + * reason we try to open the device. + * + * PCAP_ERROR_NO_SUCH_DEVICE typically means + * "there's no such device *known to the + * OS's capture mechanism*", so, even though + * it might be a valid network interface, you + * can't capture on it (e.g., the loopback + * device in Solaris up to Solaris 10, or + * the vmnet devices in OS X with VMware + * Fusion). We don't include those devices + * in our list of devices, as there's no + * point in doing so - they're not available + * for capture. + * + * PCAP_ERROR_IFACE_NOT_UP means that the + * OS's capture mechanism doesn't work on + * interfaces not marked as up; some capture + * mechanisms *do* support that, so we no + * longer reject those interfaces out of hand, + * but we *do* want to reject them if they + * can't be opened for capture. + */ + *curdev_ret = NULL; + return (0); + } + + /* + * Yes, we can open it, or we can't, for some other + * reason. + * + * If we can open it, we want to offer it for + * capture, as you can capture on it. If we can't, + * we want to offer it for capture, so that, if + * the user tries to capture on it, they'll get + * an error and they'll know why they can't + * capture on it (e.g., insufficient permissions) + * or they'll report it as a problem (and then + * have the error message to provide as information). + * + * Allocate a new entry. + */ + curdev = malloc(sizeof(pcap_if_t)); + if (curdev == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + return (-1); + } + + /* + * Fill in the entry. + */ + curdev->next = NULL; + curdev->name = strdup(name); + if (curdev->name == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + free(curdev); + return (-1); + } + if (description == NULL) { + /* + * We weren't handed a description for the + * interface, so see if we can generate one + * ourselves. + */ + curdev->description = get_if_description(name); + } else { + /* + * We were handed a description; make a copy. + */ + curdev->description = strdup(description); + if (curdev->description == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + free(curdev->name); + free(curdev); + return (-1); + } + } + curdev->addresses = NULL; /* list starts out as empty */ + curdev->flags = flags; + + /* + * Add it to the list, in the appropriate location. + * First, get the "figure of merit" for this + * interface. + */ + this_figure_of_merit = get_figure_of_merit(curdev); + + /* + * Now look for the last interface with an figure of merit + * less than or equal to the new interface's figure of + * merit. + * + * We start with "prevdev" being NULL, meaning we're before + * the first element in the list. + */ + prevdev = NULL; + for (;;) { + /* + * Get the interface after this one. + */ + if (prevdev == NULL) { + /* + * The next element is the first element. + */ + nextdev = *alldevs; + } else + nextdev = prevdev->next; + + /* + * Are we at the end of the list? + */ + if (nextdev == NULL) { + /* + * Yes - we have to put the new entry + * after "prevdev". + */ + break; + } + + /* + * Is the new interface's figure of merit less + * than the next interface's figure of merit, + * meaning that the new interface is better + * than the next interface? + */ + nextdev_figure_of_merit = get_figure_of_merit(nextdev); + if (this_figure_of_merit < nextdev_figure_of_merit) { + /* + * Yes - we should put the new entry + * before "nextdev", i.e. after "prevdev". + */ + break; + } + + prevdev = nextdev; + } + + /* + * Insert before "nextdev". + */ + curdev->next = nextdev; + + /* + * Insert after "prevdev" - unless "prevdev" is null, + * in which case this is the first interface. + */ + if (prevdev == NULL) { + /* + * This is the first interface. Pass back a + * pointer to it, and put "curdev" before + * "nextdev". + */ + *alldevs = curdev; + } else + prevdev->next = curdev; + } + + *curdev_ret = curdev; + return (0); +} + +/* + * Try to get a description for a given device, and then look for that + * device in the specified list of devices. + * + * If we find it, then, if the specified address isn't null, add it to + * the list of addresses for the device and return 0. + * + * If we don't find it, check whether we can open it: + * + * If that fails with PCAP_ERROR_NO_SUCH_DEVICE or + * PCAP_ERROR_IFACE_NOT_UP, don't attempt to add an entry for + * it, as that probably means it exists but doesn't support + * packet capture. + * + * Otherwise, attempt to add an entry for it, with the specified + * ifnet flags, and, if that succeeds, add the specified address + * to its list of addresses if that address is non-null, set + * *curdev_ret to point to the new entry, and return 0, otherwise + * return PCAP_ERROR and set errbuf to an error message. + * + * (We can get called with a null address because we might get a list + * of interface name/address combinations from the underlying OS, with + * the address being absent in some cases, rather than a list of + * interfaces with each interface having a list of addresses, so this + * call may be the only call made to add to the list, and we want to + * add interfaces even if they have no addresses.) + */ +int +add_addr_to_iflist(pcap_if_t **alldevs, const char *name, bpf_u_int32 flags, + struct sockaddr *addr, size_t addr_size, + struct sockaddr *netmask, size_t netmask_size, + struct sockaddr *broadaddr, size_t broadaddr_size, + struct sockaddr *dstaddr, size_t dstaddr_size, + char *errbuf) +{ + pcap_if_t *curdev; + + if (add_or_find_if(&curdev, alldevs, name, flags, NULL, errbuf) == -1) { + /* + * Error - give up. + */ + return (-1); + } + if (curdev == NULL) { + /* + * Device wasn't added because it can't be opened. + * Not a fatal error. + */ + return (0); + } + + if (addr == NULL) { + /* + * There's no address to add; this entry just meant + * "here's a new interface". + */ + return (0); + } + + /* + * "curdev" is an entry for this interface, and we have an + * address for it; add an entry for that address to the + * interface's list of addresses. + * + * Allocate the new entry and fill it in. + */ + return (add_addr_to_dev(curdev, addr, addr_size, netmask, + netmask_size, broadaddr, broadaddr_size, dstaddr, + dstaddr_size, errbuf)); +} + +/* + * Add an entry to the list of addresses for an interface. + * "curdev" is the entry for that interface. + * If this is the first IP address added to the interface, move it + * in the list as appropriate. + */ +int +add_addr_to_dev(pcap_if_t *curdev, + struct sockaddr *addr, size_t addr_size, + struct sockaddr *netmask, size_t netmask_size, + struct sockaddr *broadaddr, size_t broadaddr_size, + struct sockaddr *dstaddr, size_t dstaddr_size, + char *errbuf) +{ + pcap_addr_t *curaddr, *prevaddr, *nextaddr; + + curaddr = malloc(sizeof(pcap_addr_t)); + if (curaddr == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + return (-1); + } + + curaddr->next = NULL; + if (addr != NULL) { + curaddr->addr = dup_sockaddr(addr, addr_size); + if (curaddr->addr == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + free(curaddr); + return (-1); + } + } else + curaddr->addr = NULL; + + if (netmask != NULL) { + curaddr->netmask = dup_sockaddr(netmask, netmask_size); + if (curaddr->netmask == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + if (curaddr->addr != NULL) + free(curaddr->addr); + free(curaddr); + return (-1); + } + } else + curaddr->netmask = NULL; + + if (broadaddr != NULL) { + curaddr->broadaddr = dup_sockaddr(broadaddr, broadaddr_size); + if (curaddr->broadaddr == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + if (curaddr->netmask != NULL) + free(curaddr->netmask); + if (curaddr->addr != NULL) + free(curaddr->addr); + free(curaddr); + return (-1); + } + } else + curaddr->broadaddr = NULL; + + if (dstaddr != NULL) { + curaddr->dstaddr = dup_sockaddr(dstaddr, dstaddr_size); + if (curaddr->dstaddr == NULL) { + (void)pcap_snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + if (curaddr->broadaddr != NULL) + free(curaddr->broadaddr); + if (curaddr->netmask != NULL) + free(curaddr->netmask); + if (curaddr->addr != NULL) + free(curaddr->addr); + free(curaddr); + return (-1); + } + } else + curaddr->dstaddr = NULL; + + /* + * Find the end of the list of addresses. + */ + for (prevaddr = curdev->addresses; prevaddr != NULL; prevaddr = nextaddr) { + nextaddr = prevaddr->next; + if (nextaddr == NULL) { + /* + * This is the end of the list. + */ + break; + } + } + + if (prevaddr == NULL) { + /* + * The list was empty; this is the first member. + */ + curdev->addresses = curaddr; + } else { + /* + * "prevaddr" is the last member of the list; append + * this member to it. + */ + prevaddr->next = curaddr; + } + + return (0); +} + +/* + * Look for a given device in the specified list of devices. + * + * If we find it, return 0. + * + * If we don't find it, check whether we can open it: + * + * If that fails with PCAP_ERROR_NO_SUCH_DEVICE or + * PCAP_ERROR_IFACE_NOT_UP, don't attempt to add an entry for + * it, as that probably means it exists but doesn't support + * packet capture. + * + * Otherwise, attempt to add an entry for it, with the specified + * ifnet flags and description, and, if that succeeds, return 0 + * and set *curdev_ret to point to the new entry, otherwise + * return PCAP_ERROR and set errbuf to an error message. + */ +int +pcap_add_if(pcap_if_t **devlist, const char *name, u_int flags, + const char *description, char *errbuf) +{ + pcap_if_t *curdev; + + return (add_or_find_if(&curdev, devlist, name, flags, description, + errbuf)); +} + + +/* + * Free a list of interfaces. + */ +void +pcap_freealldevs(pcap_if_t *alldevs) +{ + pcap_if_t *curdev, *nextdev; + pcap_addr_t *curaddr, *nextaddr; + + for (curdev = alldevs; curdev != NULL; curdev = nextdev) { + nextdev = curdev->next; + + /* + * Free all addresses. + */ + for (curaddr = curdev->addresses; curaddr != NULL; curaddr = nextaddr) { + nextaddr = curaddr->next; + if (curaddr->addr) + free(curaddr->addr); + if (curaddr->netmask) + free(curaddr->netmask); + if (curaddr->broadaddr) + free(curaddr->broadaddr); + if (curaddr->dstaddr) + free(curaddr->dstaddr); + free(curaddr); + } + + /* + * Free the name string. + */ + free(curdev->name); + + /* + * Free the description string, if any. + */ + if (curdev->description != NULL) + free(curdev->description); + + /* + * Free the interface. + */ + free(curdev); + } +} diff --git a/libpcap-1.8.1/fad-helpers.o b/libpcap-1.8.1/fad-helpers.o new file mode 100644 index 0000000000000000000000000000000000000000..1f5a555954cd4c2f4a4b126f189a19fdcb5458a6 GIT binary patch literal 23908 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 &l%k_j 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' > "$2" +echo 'PCAP_API_DEF' >> "$2" +if grep GIT "$1" >/dev/null; then + read ver <"$1" + echo $ver | tr -d '\012' + date +_%Y_%m_%d +else + cat "$1" +fi | sed -e 's/.*/char pcap_version[] = "&";/' >> "$2" + diff --git a/libpcap-1.8.1/gen_version_header.sh b/libpcap-1.8.1/gen_version_header.sh new file mode 100755 index 00000000..6b4b82da --- /dev/null +++ b/libpcap-1.8.1/gen_version_header.sh @@ -0,0 +1,19 @@ +#! /bin/sh +print_version_string() +{ + if grep GIT "$1" >/dev/null + then + read ver <"$1" + echo $ver | tr -d '\012' + date +_%Y_%m_%d + else + cat "$1" + fi +} +if test $# != 3 +then + echo "Usage: gen_version_header.sh