From b10d54ea2c267fce4e881b9d7e064427f6e6c34f Mon Sep 17 00:00:00 2001 From: sapanb Date: Mon, 5 Nov 2007 03:01:02 +0000 Subject: [PATCH] Re-import of fprobe-ulog git-svn-id: http://svn.planet-lab.org/svn/fprobe-ulog/trunk@5621 8c455092-636d-4788-adf5-e71def0336e8 --- AUTHORS | 25 + COPYING | 340 + ChangeLog | 26 + INSTALL | 182 + Makefile | 582 ++ Makefile.am | 4 + Makefile.in | 582 ++ NEWS | 1 + README | 96 + TODO | 2 + aclocal.m4 | 1044 +++ autogen.sh | 6 + config.guess | 1453 ++++ config.h | 98 + config.h.in | 97 + config.log | 486 ++ config.status | 1208 +++ config.sub | 1566 ++++ configure | 6612 +++++++++++++++++ configure.in | 186 + contrib/ipt_ULOG.patch | 27 + contrib/tg.sh | 39 + fprobe-ulog.spec | 34 + install-sh | 251 + missing | 353 + mkinstalldirs | 40 + src/3 | 0 src/Makefile | 560 ++ src/Makefile.am | 18 + src/Makefile.in | 560 ++ src/On | 0 src/a | 0 src/bla | 0 src/common.h | 32 + src/fprobe-ulog.8 | 176 + src/fprobe-ulog.c | 1549 ++++ src/fprobe-ulog.c.old | 1486 ++++ src/fprobe-ulog.h | 131 + src/fprobe-ulog.h.old | 130 + src/hash.c | 94 + src/hash.h | 52 + src/libipulog/Makefile | 378 + src/libipulog/Makefile.am | 6 + src/libipulog/Makefile.in | 378 + src/libipulog/include/libipulog/libipulog.h | 58 + src/libipulog/libipulog.c | 255 + src/mas | 0 src/mem.c | 167 + src/mem.h | 48 + src/my_getopt.c | 79 + src/my_getopt.h | 28 + src/my_inttypes.h | 51 + src/my_log.c | 57 + src/my_log.h | 24 + src/na | 0 src/netflow.c | 145 + src/netflow.h | 245 + src/poslem | 0 src/tags | 637 ++ src/tak | 0 stamp-h1 | 1 + trunk/AUTHORS | 25 + trunk/ChangeLog | 26 + trunk/Makefile.in | 582 ++ trunk/config.log | 486 ++ trunk/config.status | 1208 +++ trunk/configure | 6612 +++++++++++++++++ trunk/configure.in | 186 + trunk/mkinstalldirs | 40 + trunk/src/Makefile | 560 ++ trunk/src/Makefile.am | 18 + trunk/src/Makefile.in | 560 ++ trunk/src/common.h | 32 + trunk/src/fprobe-ulog.8 | 176 + trunk/src/fprobe-ulog.c | 1543 ++++ trunk/src/fprobe-ulog.c.old | 1486 ++++ trunk/src/fprobe-ulog.h | 131 + trunk/src/fprobe-ulog.h.old | 130 + trunk/src/hash.c | 94 + trunk/src/hash.h | 52 + trunk/src/libipulog/Makefile | 378 + trunk/src/libipulog/Makefile.am | 6 + trunk/src/libipulog/Makefile.in | 378 + .../libipulog/include/libipulog/libipulog.h | 58 + trunk/src/libipulog/libipulog.c | 255 + trunk/src/mem.c | 167 + trunk/src/mem.h | 48 + trunk/src/my_getopt.c | 79 + trunk/src/my_getopt.h | 28 + trunk/src/my_inttypes.h | 51 + trunk/src/my_log.c | 57 + trunk/src/my_log.h | 24 + trunk/src/netflow.c | 145 + trunk/src/netflow.h | 245 + trunk/src/tags | 637 ++ trunk/version | 1 + version | 1 + 97 files changed, 39190 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 autogen.sh create mode 100755 config.guess create mode 100644 config.h create mode 100644 config.h.in create mode 100644 config.log create mode 100755 config.status create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.in create mode 100644 contrib/ipt_ULOG.patch create mode 100755 contrib/tg.sh create mode 100644 fprobe-ulog.spec create mode 100755 install-sh create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 src/3 create mode 100644 src/Makefile create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/On create mode 100644 src/a create mode 100755 src/bla create mode 100644 src/common.h create mode 100644 src/fprobe-ulog.8 create mode 100644 src/fprobe-ulog.c create mode 100644 src/fprobe-ulog.c.old create mode 100644 src/fprobe-ulog.h create mode 100644 src/fprobe-ulog.h.old create mode 100644 src/hash.c create mode 100644 src/hash.h create mode 100644 src/libipulog/Makefile create mode 100644 src/libipulog/Makefile.am create mode 100644 src/libipulog/Makefile.in create mode 100644 src/libipulog/include/libipulog/libipulog.h create mode 100644 src/libipulog/libipulog.c create mode 100644 src/mas create mode 100644 src/mem.c create mode 100644 src/mem.h create mode 100644 src/my_getopt.c create mode 100644 src/my_getopt.h create mode 100644 src/my_inttypes.h create mode 100644 src/my_log.c create mode 100644 src/my_log.h create mode 100644 src/na create mode 100644 src/netflow.c create mode 100644 src/netflow.h create mode 100644 src/poslem create mode 100644 src/tags create mode 100644 src/tak create mode 100644 stamp-h1 create mode 100644 trunk/AUTHORS create mode 100644 trunk/ChangeLog create mode 100644 trunk/Makefile.in create mode 100644 trunk/config.log create mode 100755 trunk/config.status create mode 100755 trunk/configure create mode 100644 trunk/configure.in create mode 100755 trunk/mkinstalldirs create mode 100644 trunk/src/Makefile create mode 100644 trunk/src/Makefile.am create mode 100644 trunk/src/Makefile.in create mode 100644 trunk/src/common.h create mode 100644 trunk/src/fprobe-ulog.8 create mode 100644 trunk/src/fprobe-ulog.c create mode 100644 trunk/src/fprobe-ulog.c.old create mode 100644 trunk/src/fprobe-ulog.h create mode 100644 trunk/src/fprobe-ulog.h.old create mode 100644 trunk/src/hash.c create mode 100644 trunk/src/hash.h create mode 100644 trunk/src/libipulog/Makefile create mode 100644 trunk/src/libipulog/Makefile.am create mode 100644 trunk/src/libipulog/Makefile.in create mode 100644 trunk/src/libipulog/include/libipulog/libipulog.h create mode 100644 trunk/src/libipulog/libipulog.c create mode 100644 trunk/src/mem.c create mode 100644 trunk/src/mem.h create mode 100644 trunk/src/my_getopt.c create mode 100644 trunk/src/my_getopt.h create mode 100644 trunk/src/my_inttypes.h create mode 100644 trunk/src/my_log.c create mode 100644 trunk/src/my_log.h create mode 100644 trunk/src/netflow.c create mode 100644 trunk/src/netflow.h create mode 100644 trunk/src/tags create mode 100644 trunk/version create mode 100644 version diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..02b1fe1 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,25 @@ +Slava Astashonok + +Thanks: +- Alex Antropoff : + note about RedHad's pcap.h location + +- Daniel Senie : + contrib/redhat-init.d script + +- Dmitry Vagin : + more universal SNMP ifIndexes workaround (tricky filters) + +- Thierry MARTIN + NetFlow v7 fix + +- Viktor Fomichev + Cisco's ICMP type/code storing method + +- Alexey A. Stroganov + notes about trailer bug and flow's start time corruption + +- Abraham van der Merwe + using if_nametoindex(), using netfilter mark value as ToS flag + +Lot of thanks to other folks for support and [not so ;-)] smart questions. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..a5e3c2d --- /dev/null +++ b/ChangeLog @@ -0,0 +1,26 @@ +2005-01-30 Slava Astashonok + + * Release 1.1: bugfixes, features enhancement. + + * Changes: + - was fixed vulnerability to a DoS attack, as described in "Denial + of Service via Algorithmic Complexity Attacks" by Scott A + Crosby and Dan S Wallach: http://www.cs.rice.edu/~scrosby/hash, + by strengthening the crc16 hash function implementation; + note that xor8 and xor16 hashes remain vulnerable + - default hash was changed to crc16 + - -B and -M options were added + - if_nametoindex() used as default action to find SNMP-index + +2004-09-21 Slava Astashonok + + * Release 1.0.6: minor bugfixes. + + * Changes: + - security fix for "change user" feature + - typo in CAPTURE_SIZE definition was fixed + - debian/* files were removed + +2004-08-14 Slava Astashonok + + * Release 1.0.5: initial ULOG fork diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..b42a17a --- /dev/null +++ b/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fce3f80 --- /dev/null +++ b/Makefile @@ -0,0 +1,582 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +srcdir = . +top_srcdir = . + +pkgdatadir = $(datadir)/fprobe-ulog +pkglibdir = $(libdir)/fprobe-ulog +pkgincludedir = $(includedir)/fprobe-ulog +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +target_triplet = i686-pc-linux-gnu +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + TODO config.guess config.sub install-sh missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar +AUTOCONF = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf +AUTOHEADER = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader +AUTOMAKE = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATE = 2007-10-26 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = -lpthread +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo +OBJEXT = o +PACKAGE = fprobe-ulog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 1.1 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/sapan/fprobe-ulog-1.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +EXTRA_DIST = autogen.sh fprobe-ulog.spec version \ + contrib/tg.sh contrib/ipt_ULOG.patch + +SUBDIRS = src +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \ + cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/contrib + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..1d95b9c --- /dev/null +++ b/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = autogen.sh fprobe-ulog.spec version \ + contrib/tg.sh contrib/ipt_ULOG.patch + +SUBDIRS = src diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..fcc345c --- /dev/null +++ b/Makefile.in @@ -0,0 +1,582 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + TODO config.guess config.sub install-sh missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +EXTRA_DIST = autogen.sh fprobe-ulog.spec version \ + contrib/tg.sh contrib/ipt_ULOG.patch + +SUBDIRS = src +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \ + cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/contrib + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..f07168b --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ +Please see the ChangeLog file. diff --git a/README b/README new file mode 100644 index 0000000..0c7542d --- /dev/null +++ b/README @@ -0,0 +1,96 @@ +First of all sorry for my clumsy English. + +General information: +==================== + +fprobe-ulog: a NetFlow probe - libipulog-based tool that collect network +traffic data and emit it as NetFlow flows towards the specified +collector. + +URL: http://fprobe.sourceforge.net + +Compiling and installing: +========================= + +Read INSTALL file for basic installation instructions. Below I'll try to +describe advanced compilation options. + +--with-membulk=MODE indexing mode: index8|index16|ptr [default=ptr] +This option concerns to memory management and defines indexing mode and +maximum memory bulk size. I only shall tell, that the `index8' is most +frugal mode, `ptr' - fastest and `index16' somewhere in the middle. + +--with-hash=TYPE hash type: xor8|xor16|crc16 [default=xor16] +fprobe-ulog use hashing to speedup flows cache searching. This option +specifies the hash type. `xor8' is very frugal with memory - it uses +only 1KB (on 32-bit systems) for hash structure while `xor16' and +`crc16' - 256KB. But, on the other hand, bigger hash gives better +performance. +Hash functions xor8 and xor16 faster then crc16, but they are vulnerable +to a DoS attack, as described in "Denial of Service via Algorithmic +Complexity Attacks" by Scott A Crosby and Dan S Wallach: +http://www.cs.rice.edu/~scrosby/hash + +--enable-uptime_trick enable uptime trick [default=yes] +Maybe later... + +--enable-icmp_trick enable icmp trick: yes|cisco|no [default=yes] +If this option set to "yes" fprobe-ulog will store ICMP type and code in +srcport and dstport NetFlow fields. +If this option set to "cisco" only dstport field will used (ICMP type is +the higher eight bits and ICMP code is the lower eight bits). This +storing method used in some Cisco NetFlow implementations. + +--enable-debug enable debugging [default=no] +You may select different events for debugging: (C)apture, (U)npending, +(S)can, (E)mit, (M)emory, (F)ill and (I)nfo. Most interesting (for end +user) from above is Info debugging - you may get general statistic about +captured packets, emitted flows, allocated memory, using kill -s USR1. +Don't forget to run fprobe-ulog with `-v7' otherwise you'll not see +debugging output. +Example: +--enable-debug (enable all events debugging) +--enable-debug=I,C,U,E (enable Info, Capture, Unpending and Emit debugging) + +Brief explanation of Info debug messages: +I: received:[total packets]/[fragmented] ([total size]) + pending:[now in queue]/[maximum] +I: ignored:[non-IP] lost:[pending queue full]+[no memory for caching] +I: cache:[flows]/[fragmented] emit:[sent datagrams]/[sent flows]/[flows + in emit queue] +I: memory:[allocated flows]/[free] ([allocated memory in bytes]) + +--enable-messages enable runtime messages [default=no] +This option enables non-fatal runtime errors reporting. Be carefull - it +may flood your syslog. + +--with-piddir=DIR pidfiles location [default=/var/run] +Directory to store pidfiles. + +Useful links: +============= + +nProbe - NetFlow probe by Luca Deri: +http://www.ntop.org/nProbe.html + +fprobe (namesake of mine project) - NetFlow probe by Bogdan Surdu: +http://psi.home.ro/flow + +Softflowd - traffic analyzer capable of Cisco NetFlow data export: +http://www.mindrot.org/softflowd.html + +Cisco's NetFlow links: +http://www.cisco.com/go/netflow + +Excellent links collection about Network Monitoring and Analysis: +http://www.switch.ch/tf-tant/floma + +Contacts: +========= + +Feel free to send any questions, comments, bug reports etc. +Contributions are welcome, including cosmetic fixes and pointing out +usability problems. + +Sincerely yours, +Slava Astashonok diff --git a/TODO b/TODO new file mode 100644 index 0000000..c8deaf9 --- /dev/null +++ b/TODO @@ -0,0 +1,2 @@ +Things to do +------------ diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..d19b728 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1044 @@ +# generated automatically by aclocal 1.9.4 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# -*- Autoconf -*- +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Generated from amversion.in; do not edit by hand. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.4])]) + +# AM_AUX_DIR_EXPAND + +# Copyright (C) 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 6 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# serial 7 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 7 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 11 + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright (C) 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# -*- Autoconf -*- +# Copyright (C) 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# -*- Autoconf -*- + + +# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. + +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright (C) 2001, 2003 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004 Free Software Foundation, Inc. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..2009057 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,6 @@ +set -x +aclocal +autoheader +automake --add-missing --copy -i +autoconf +#./configure $* diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..8229471 --- /dev/null +++ b/config.guess @@ -0,0 +1,1453 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +timestamp='2004-11-12' + +# 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# 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. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 -q "$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 ;' + +# 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 + +# 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 tupples: *-*-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=`(/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 ;; + *) 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*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + 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 + # 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}" + exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + luna88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + 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'` + exit 0 ;; + 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 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + 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 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + 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 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + 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 0 ;; + 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 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + 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 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # 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 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + 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 \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + 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 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????: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 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + 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 0 ;; + *: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 + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + 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 0 ;; + *:AIX:*:[45]) + 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/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 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 + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 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 && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + 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 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + 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 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *: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/[-(].*//'`-gnu + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit 0 ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #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-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #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-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + 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 ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + 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-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + 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 0 ;; + 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 0 ;; + 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 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + 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 0 ;; + i*86:*:5:[78]*) + 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 0 ;; + 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 0 ;; + 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 i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + 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 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 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 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *: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 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + 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 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms && exit 0 ;; + I*) echo ia64-dec-vms && exit 0 ;; + V*) echo vax-dec-vms && exit 0 ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +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/config.h b/config.h new file mode 100644 index 0000000..a268eb3 --- /dev/null +++ b/config.h @@ -0,0 +1,98 @@ +/* config.h. Generated by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Debugging output */ +#define DEBUG (0) + +/* Hash size */ +#define HASH_BITS 16 + +/* Hash type */ +#define HASH_TYPE_CRC + +/* Hash type */ +/* #undef HASH_TYPE_XOR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#define HAVE_LIBPTHREAD 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_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 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 header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* ICMP trick */ +#define ICMP_TRICK + +/* Memory bulk indexing mode */ +#define MEM_BITS 0 + +/* Runtime messages */ +/* #undef MESSAGES */ + +/* OS type */ +#define OS_LINUX + +/* Name of package */ +#define PACKAGE "fprobe-ulog" + +/* 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 version of this package. */ +#define PACKAGE_VERSION "" + +/* Pidfiles location */ +#define PID_DIR "/var/run" + +/* The size of a `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of a `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of a `long long', as computed by sizeof. */ +/* #undef SIZEOF_LONG_LONG */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Uptime trick */ +#define UPTIME_TRICK + +/* Uptime trick */ +/* #undef UPTIME_TRICK_CISCO */ + +/* Version number of package */ +#define VERSION "1.1" diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..9cea087 --- /dev/null +++ b/config.h.in @@ -0,0 +1,97 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Debugging output */ +#undef DEBUG + +/* Hash size */ +#undef HASH_BITS + +/* Hash type */ +#undef HASH_TYPE_CRC + +/* Hash type */ +#undef HASH_TYPE_XOR + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#undef HAVE_LIBPTHREAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* 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 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 header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* ICMP trick */ +#undef ICMP_TRICK + +/* Memory bulk indexing mode */ +#undef MEM_BITS + +/* Runtime messages */ +#undef MESSAGES + +/* OS type */ +#undef OS_LINUX + +/* Name of package */ +#undef PACKAGE + +/* 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 version of this package. */ +#undef PACKAGE_VERSION + +/* Pidfiles location */ +#undef PID_DIR + +/* The size of a `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of a `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of a `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Uptime trick */ +#undef UPTIME_TRICK + +/* Uptime trick */ +#undef UPTIME_TRICK_CISCO + +/* Version number of package */ +#undef VERSION diff --git a/config.log b/config.log new file mode 100644 index 0000000..a98ad1a --- /dev/null +++ b/config.log @@ -0,0 +1,486 @@ +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.59. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = joyce +uname -m = i686 +uname -r = 2.6.19-skas3-v9-pre9 +uname -s = Linux +uname -v = #9 SMP Fri Jan 12 09:39:05 EST 2007 + +/usr/bin/uname -p = Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz +/bin/uname -X = unknown + +/bin/arch = i686 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /bin +PATH: /sbin +PATH: /usr/bin +PATH: /usr/sbin +PATH: /usr/local/bin +PATH: /usr/local/sbin +PATH: /opt/bin +PATH: /usr/i686-pc-linux-gnu/gcc-bin/4.1.1 + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1328: checking build system type +configure:1346: result: i686-pc-linux-gnu +configure:1354: checking host system type +configure:1368: result: i686-pc-linux-gnu +configure:1376: checking target system type +configure:1390: result: i686-pc-linux-gnu +configure:1418: checking for a BSD-compatible install +configure:1473: result: /bin/install -c +configure:1484: checking whether build environment is sane +configure:1527: result: yes +configure:1592: checking for gawk +configure:1608: found /bin/gawk +configure:1618: result: gawk +configure:1628: checking whether make sets $(MAKE) +configure:1648: result: yes +configure:1865: checking for gcc +configure:1881: found /usr/bin/gcc +configure:1891: result: gcc +configure:2135: checking for C compiler version +configure:2138: gcc --version &5 +gcc (GCC) 4.1.1 (Gentoo 4.1.1) +Copyright (C) 2006 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:2141: $? = 0 +configure:2143: gcc -v &5 +Using built-in specs. +Target: i686-pc-linux-gnu +Configured with: /var/tmp/portage/gcc-4.1.1/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu +Thread model: posix +gcc version 4.1.1 (Gentoo 4.1.1) +configure:2146: $? = 0 +configure:2148: gcc -V &5 +gcc: '-V' option must have argument +configure:2151: $? = 1 +configure:2174: checking for C compiler default output file name +configure:2177: gcc conftest.c >&5 +configure:2180: $? = 0 +configure:2226: result: a.out +configure:2231: checking whether the C compiler works +configure:2237: ./a.out +configure:2240: $? = 0 +configure:2257: result: yes +configure:2264: checking whether we are cross compiling +configure:2266: result: no +configure:2269: checking for suffix of executables +configure:2271: gcc -o conftest conftest.c >&5 +configure:2274: $? = 0 +configure:2299: result: +configure:2305: checking for suffix of object files +configure:2326: gcc -c conftest.c >&5 +configure:2329: $? = 0 +configure:2351: result: o +configure:2355: checking whether we are using the GNU C compiler +configure:2379: gcc -c conftest.c >&5 +configure:2385: $? = 0 +configure:2388: test -z || test ! -s conftest.err +configure:2391: $? = 0 +configure:2394: test -s conftest.o +configure:2397: $? = 0 +configure:2410: result: yes +configure:2416: checking whether gcc accepts -g +configure:2437: gcc -c -g conftest.c >&5 +configure:2443: $? = 0 +configure:2446: test -z || test ! -s conftest.err +configure:2449: $? = 0 +configure:2452: test -s conftest.o +configure:2455: $? = 0 +configure:2466: result: yes +configure:2483: checking for gcc option to accept ANSI C +configure:2553: gcc -c -g -O2 conftest.c >&5 +configure:2559: $? = 0 +configure:2562: test -z || test ! -s conftest.err +configure:2565: $? = 0 +configure:2568: test -s conftest.o +configure:2571: $? = 0 +configure:2589: result: none needed +configure:2607: gcc -c -g -O2 conftest.c >&5 +conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me' +configure:2613: $? = 1 +configure: failed program was: +| #ifndef __cplusplus +| choke me +| #endif +configure:2754: checking for style of include used by make +configure:2782: result: GNU +configure:2810: checking dependency style of gcc +configure:2900: result: none +configure:2930: checking for a BSD-compatible install +configure:2985: result: /bin/install -c +configure:3037: checking for ranlib +configure:3053: found /usr/bin/ranlib +configure:3064: result: ranlib +configure:3079: checking for pthread_create in -lpthread +configure:3109: gcc -o conftest -g -O2 conftest.c -lpthread >&5 +configure:3115: $? = 0 +configure:3118: test -z || test ! -s conftest.err +configure:3121: $? = 0 +configure:3124: test -s conftest +configure:3127: $? = 0 +configure:3140: result: yes +configure:3162: checking how to run the C preprocessor +configure:3197: gcc -E conftest.c +configure:3203: $? = 0 +configure:3235: gcc -E conftest.c +conftest.c:12:28: error: ac_nonexistent.h: No such file or directory +configure:3241: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE "fprobe-ulog" +| #define VERSION "1.1" +| #define HAVE_LIBPTHREAD 1 +| /* end confdefs.h. */ +| #include +configure:3280: result: gcc -E +configure:3304: gcc -E conftest.c +configure:3310: $? = 0 +configure:3342: gcc -E conftest.c +conftest.c:12:28: error: ac_nonexistent.h: No such file or directory +configure:3348: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE "fprobe-ulog" +| #define VERSION "1.1" +| #define HAVE_LIBPTHREAD 1 +| /* end confdefs.h. */ +| #include +configure:3392: checking for egrep +configure:3402: result: grep -E +configure:3407: checking for ANSI C header files +configure:3432: gcc -c -g -O2 conftest.c >&5 +configure:3438: $? = 0 +configure:3441: test -z || test ! -s conftest.err +configure:3444: $? = 0 +configure:3447: test -s conftest.o +configure:3450: $? = 0 +configure:3539: gcc -o conftest -g -O2 conftest.c -lpthread >&5 +conftest.c: In function 'main': +conftest.c:29: warning: incompatible implicit declaration of built-in function 'exit' +configure:3542: $? = 0 +configure:3544: ./conftest +configure:3547: $? = 0 +configure:3562: result: yes +configure:3586: checking for sys/types.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for sys/stat.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for stdlib.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for string.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for memory.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for strings.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for inttypes.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for stdint.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for unistd.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3644: checking for inttypes.h +configure:3649: result: yes +configure:5018: checking which memory bulk indexing mode to use +configure:5046: result: "ptr" +configure:5055: checking which hash type and size to use +configure:5098: result: "crc16" +configure:5102: checking whether to enable uptime trick +configure:5113: result: yes +configure:5128: checking whether to enable icmp trick +configure:5139: result: yes +configure:5163: checking whether to enable debugging +configure:5174: result: no +configure:5200: checking whether to enable runtime messages +configure:5220: result: no +configure:5226: checking directory to store pidfiles +configure:5241: result: "/var/run" +configure:5310: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on joyce + +config.status:745: creating Makefile +config.status:745: creating src/Makefile +config.status:745: creating src/libipulog/Makefile +config.status:811: creating config.h +config.status:1117: executing depfiles commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=i686-pc-linux-gnu +ac_cv_build_alias=i686-pc-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +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_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_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_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=i686-pc-linux-gnu +ac_cv_host_alias=i686-pc-linux-gnu +ac_cv_lib_pthread_pthread_create=yes +ac_cv_objext=o +ac_cv_path_install='/bin/install -c' +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_egrep='grep -E' +ac_cv_prog_make_make_set=yes +ac_cv_target=i686-pc-linux-gnu +ac_cv_target_alias=i686-pc-linux-gnu +am_cv_CC_dependencies_compiler_type=none + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar' +AUTOCONF='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf' +AUTOHEADER='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader' +AUTOMAKE='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=none' +CFLAGS='-g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DATE='2007-10-26' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='grep -E' +EXEEXT='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' +LDFLAGS='' +LIBOBJS='' +LIBS='-lpthread ' +LTLIBOBJS='' +MAKEINFO='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo' +OBJEXT='o' +PACKAGE='fprobe-ulog' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +RANLIB='ranlib' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='' +VERSION='1.1' +ac_ct_CC='gcc' +ac_ct_RANLIB='ranlib' +ac_ct_STRIP='' +am__fastdepCC_FALSE='' +am__fastdepCC_TRUE='#' +am__include='include' +am__leading_dot='.' +am__quote='' +am__tar='${AMTAR} chof - "$$tardir"' +am__untar='${AMTAR} xf -' +bindir='${exec_prefix}/bin' +build='i686-pc-linux-gnu' +build_alias='' +build_cpu='i686' +build_os='linux-gnu' +build_vendor='pc' +datadir='${prefix}/share' +exec_prefix='${prefix}' +host='i686-pc-linux-gnu' +host_alias='' +host_cpu='i686' +host_os='linux-gnu' +host_vendor='pc' +includedir='${prefix}/include' +infodir='${prefix}/info' +install_sh='/home/sapan/fprobe-ulog-1.1/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localstatedir='${prefix}/var' +mandir='${prefix}/man' +mkdir_p='mkdir -p --' +oldincludedir='/usr/include' +prefix='/usr/local' +program_transform_name='s,x,x,' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='i686-pc-linux-gnu' +target_alias='' +target_cpu='i686' +target_os='linux-gnu' +target_vendor='pc' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define DEBUG (0) +#define HASH_BITS 16 +#define HASH_TYPE_CRC +#define HAVE_INTTYPES_H +#define HAVE_INTTYPES_H 1 +#define HAVE_LIBPTHREAD 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define ICMP_TRICK +#define MEM_BITS 0 +#define OS_LINUX +#define PACKAGE "fprobe-ulog" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_NAME "" +#define PACKAGE_STRING "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PID_DIR "/var/run" +#define STDC_HEADERS 1 +#define UPTIME_TRICK +#define VERSION "1.1" + +configure: exit 0 diff --git a/config.status b/config.status new file mode 100755 index 0000000..c463a7c --- /dev/null +++ b/config.status @@ -0,0 +1,1208 @@ +#! /bin/sh +# 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/sh} +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" Makefile src/Makefile src/libipulog/Makefile" +config_headers=" config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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 ." +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.59, + with options \"\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/bin/install -c" +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 + echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6 + exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion +fi + +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="" ac_aux_dir="." + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libipulog/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libipulog/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/sh,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,,;t t +s,@PACKAGE_TARNAME@,,;t t +s,@PACKAGE_VERSION@,,;t t +s,@PACKAGE_STRING@,,;t t +s,@PACKAGE_BUGREPORT@,,;t t +s,@exec_prefix@,${prefix},;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,-lpthread ,;t t +s,@build@,i686-pc-linux-gnu,;t t +s,@build_cpu@,i686,;t t +s,@build_vendor@,pc,;t t +s,@build_os@,linux-gnu,;t t +s,@host@,i686-pc-linux-gnu,;t t +s,@host_cpu@,i686,;t t +s,@host_vendor@,pc,;t t +s,@host_os@,linux-gnu,;t t +s,@target@,i686-pc-linux-gnu,;t t +s,@target_cpu@,i686,;t t +s,@target_vendor@,pc,;t t +s,@target_os@,linux-gnu,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@CYGPATH_W@,echo,;t t +s,@PACKAGE@,fprobe-ulog,;t t +s,@VERSION@,1.1,;t t +s,@ACLOCAL@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9,;t t +s,@AUTOCONF@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf,;t t +s,@AUTOMAKE@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9,;t t +s,@AUTOHEADER@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader,;t t +s,@MAKEINFO@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo,;t t +s,@install_sh@,/home/sapan/fprobe-ulog-1.1/install-sh,;t t +s,@STRIP@,,;t t +s,@ac_ct_STRIP@,,;t t +s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t +s,@mkdir_p@,mkdir -p --,;t t +s,@AWK@,gawk,;t t +s,@SET_MAKE@,,;t t +s,@am__leading_dot@,.,;t t +s,@AMTAR@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar,;t t +s,@am__tar@,${AMTAR} chof - "$$tardir",;t t +s,@am__untar@,${AMTAR} xf -,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@,,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@DEPDIR@,.deps,;t t +s,@am__include@,include,;t t +s,@am__quote@,,;t t +s,@AMDEP_TRUE@,,;t t +s,@AMDEP_FALSE@,#,;t t +s,@AMDEPBACKSLASH@,\,;t t +s,@CCDEPMODE@,depmode=none,;t t +s,@am__fastdepCC_TRUE@,#,;t t +s,@am__fastdepCC_FALSE@,,;t t +s,@RANLIB@,ranlib,;t t +s,@ac_ct_RANLIB@,ranlib,;t t +s,@CPP@,gcc -E,;t t +s,@EGREP@,grep -E,;t t +s,@DATE@,2007-10-26,;t t +s,@LIBOBJS@,,;t t +s,@LTLIBOBJS@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # grep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done + +{ (exit 0); exit 0; } diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..0f84ac2 --- /dev/null +++ b/config.sub @@ -0,0 +1,1566 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +timestamp='2004-11-30' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# 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. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# 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. + +# 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 0;; + + * ) + 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-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + 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) + os= + basic_machine=$1 + ;; + -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 + ;; + -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/'` + ;; + -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*) + 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 \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # 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-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # 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 + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + 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 + ;; + cr16c) + basic_machine=cr16c-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 + ;; + 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'm not sure what "Sysv32" means. Should this be sysv3.2? + 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 + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + 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 + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + 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 + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + 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 + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + 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) basic_machine=powerpc-unknown + ;; + ppc-*) 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 + ;; + 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 + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + 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 + ;; + 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 + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + 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 + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-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 + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + 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. + -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* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -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* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -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*) + # 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* \ + | -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 + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -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 + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + 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 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + 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 + ;; + *-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 + ;; + -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 0 + +# 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/configure b/configure new file mode 100755 index 0000000..de843df --- /dev/null +++ b/configure @@ -0,0 +1,6612 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 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 Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP DATE LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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 ;; + + -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=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 ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + 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 + + +# 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 its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# 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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +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-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-uptime_trick enable uptime trick default=yes + --enable-icmp_trick enable icmp trick: yes|cisco|no default=yes + --enable-debug enable debugging default=no + --enable-messages enable runtime messages default=no + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-membulk=MODE indexing mode: index8|index16|ptr default=ptr + --with-hash=TYPE hash type: crc16|xor16|xor8 default=crc16 + --with-piddir=DIR pidfiles location default=/var/run + +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 + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style 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 + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(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=. + echo "PATH: $as_dir" +done + +} >&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_sep= +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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$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 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >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 + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# 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}- +am__api_version="1.9" +# 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. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=fprobe-ulog + VERSION=1.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + ac_config_headers="$ac_config_headers config.h" + + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* 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 -std1 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 -std1. */ +int osf4_cc_array ['\x00' == 0 ? 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 +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +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. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + + +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +else + { { echo "$as_me:$LINENO: error: POSIX threads not found" >&5 +echo "$as_me: error: POSIX threads not found" >&2;} + { (exit 1); exit 1; }; } +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#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)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$ac_cv_header_inttypes_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking inttypes.h usability" >&5 +echo $ECHO_N "checking inttypes.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking inttypes.h presence" >&5 +echo $ECHO_N "checking inttypes.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: inttypes.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: inttypes.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: inttypes.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: inttypes.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: inttypes.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: inttypes.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: inttypes.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: inttypes.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: inttypes.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: inttypes.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_inttypes_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$ac_cv_header_inttypes_h" >&6 + +fi +if test $ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H +_ACEOF + +else + echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + + echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +fi + + + + + +cat >>confdefs.h <<_ACEOF +#define OS_LINUX +_ACEOF + +CFLAGS="$CFLAGS -D_BSD_SOURCE" + + +echo "$as_me:$LINENO: checking which memory bulk indexing mode to use" >&5 +echo $ECHO_N "checking which memory bulk indexing mode to use... $ECHO_C" >&6 + +# Check whether --with-membulk or --without-membulk was given. +if test "${with_membulk+set}" = set; then + withval="$with_membulk" + mem="$withval" +else + mem="ptr" +fi; + +case "$mem" in + ptr) + mem_bits="0" + ;; + index8) + mem_bits="8" + ;; + index16) + mem_bits="16" + ;; + *) + { { echo "$as_me:$LINENO: error: Invalid argument: \"$mem\"" >&5 +echo "$as_me: error: Invalid argument: \"$mem\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +echo "$as_me:$LINENO: result: \"$mem\"" >&5 +echo "${ECHO_T}\"$mem\"" >&6 + +cat >>confdefs.h <<_ACEOF +#define MEM_BITS $mem_bits +_ACEOF + + + +echo "$as_me:$LINENO: checking which hash type and size to use" >&5 +echo $ECHO_N "checking which hash type and size to use... $ECHO_C" >&6 + +# Check whether --with-hash or --without-hash was given. +if test "${with_hash+set}" = set; then + withval="$with_hash" + hash="$withval" +else + hash="crc16" +fi; + +hash_type=`echo "$hash"|cut -b -3` +hash_bits=`echo "$hash"|cut -b 4-` + +if test "$hash_type" = "xor"; then + +cat >>confdefs.h <<_ACEOF +#define HASH_TYPE_XOR +_ACEOF + + if test "$hash_bits" != "8" -a "$hash_bits" != "16"; then + { { echo "$as_me:$LINENO: error: Invalid argument: \"$withval\"" >&5 +echo "$as_me: error: Invalid argument: \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + fi +else + if test "$hash" != "crc16"; then + { { echo "$as_me:$LINENO: error: Invalid argument: \"$hash\"" >&5 +echo "$as_me: error: Invalid argument: \"$hash\"" >&2;} + { (exit 1); exit 1; }; } + fi + +cat >>confdefs.h <<_ACEOF +#define HASH_TYPE_CRC +_ACEOF + +fi + + +cat >>confdefs.h <<_ACEOF +#define HASH_BITS $hash_bits +_ACEOF + +echo "$as_me:$LINENO: result: \"$hash\"" >&5 +echo "${ECHO_T}\"$hash\"" >&6 + + +echo "$as_me:$LINENO: checking whether to enable uptime trick" >&5 +echo $ECHO_N "checking whether to enable uptime trick... $ECHO_C" >&6 +# Check whether --enable-uptime_trick or --disable-uptime_trick was given. +if test "${enable_uptime_trick+set}" = set; then + enableval="$enable_uptime_trick" + uptime_trick="$enableval" +else + uptime_trick="yes" +fi; +case "$uptime_trick" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define UPTIME_TRICK +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking whether to enable icmp trick" >&5 +echo $ECHO_N "checking whether to enable icmp trick... $ECHO_C" >&6 +# Check whether --enable-icmp_trick or --disable-icmp_trick was given. +if test "${enable_icmp_trick+set}" = set; then + enableval="$enable_icmp_trick" + icmp_trick="$enableval" +else + icmp_trick="yes" +fi; +case "$icmp_trick" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICMP_TRICK +_ACEOF + + ;; + cisco) + echo "$as_me:$LINENO: result: yes: cisco" >&5 +echo "${ECHO_T}yes: cisco" >&6 + +cat >>confdefs.h <<_ACEOF +#define UPTIME_TRICK_CISCO +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking whether to enable debugging" >&5 +echo $ECHO_N "checking whether to enable debugging... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + debug="$enableval" +else + debug="no" +fi; +case "$debug" in + no) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + debug_val="0" + ;; + yes) + echo "$as_me:$LINENO: result: all" >&5 +echo "${ECHO_T}all" >&6 + debug_val="-1" + ;; + *) + echo "$as_me:$LINENO: result: custom: $debug" >&5 +echo "${ECHO_T}custom: $debug" >&6 + debug_val="0" + debug=`echo $debug|tr , " "` + for i in $debug; do + debug_val="$debug_val | DEBUG_$i" + done + ;; +esac + +cat >>confdefs.h <<_ACEOF +#define DEBUG ($debug_val) +_ACEOF + + + +echo "$as_me:$LINENO: checking whether to enable runtime messages" >&5 +echo $ECHO_N "checking whether to enable runtime messages... $ECHO_C" >&6 +# Check whether --enable-messages or --disable-messages was given. +if test "${enable_messages+set}" = set; then + enableval="$enable_messages" + messages="$enableval" +else + messages="no" +fi; +case "$messages" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define MESSAGES +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking directory to store pidfiles" >&5 +echo $ECHO_N "checking directory to store pidfiles... $ECHO_C" >&6 + +# Check whether --with-piddir or --without-piddir was given. +if test "${with_piddir+set}" = set; then + withval="$with_piddir" + piddir="$withval" +else + piddir="/var/run" +fi; + +cat >>confdefs.h <<_ACEOF +#define PID_DIR "$piddir" +_ACEOF + + echo "$as_me:$LINENO: result: \"$piddir\"" >&5 +echo "${ECHO_T}\"$piddir\"" >&6 + + +CFLAGS="$CFLAGS -D_REENTRANT" +CFLAGS="$CFLAGS -DWALL -W -Wall" + + + +DATE=`date +%Y-%m-%d` + + + ac_config_files="$ac_config_files Makefile src/Makefile src/libipulog/Makefile" + + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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 ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libipulog/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libipulog/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@DATE@,$DATE,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #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. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 || { (exit 1); exit 1; } +fi + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..7116712 --- /dev/null +++ b/configure.in @@ -0,0 +1,186 @@ +dnl Disable config.cache +define([AC_CACHE_LOAD], ) +define([AC_CACHE_SAVE], ) + +AC_INIT +AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE(fprobe-ulog,1.1) +AM_CONFIG_HEADER(config.h) + +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_RANLIB +dnl AC_CHECK_TOOL(RANLIB, ranlib, :) + +AC_CHECK_LIB(pthread, pthread_create, , [AC_ERROR(POSIX threads not found)]) + +dnl ************************************************ +dnl inttypes + +AC_CHECK_HEADER(inttypes.h, AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, , Have inttypes.h), + [AC_CHECK_SIZEOF(int, 8) + AC_CHECK_SIZEOF(long, 8) + AC_CHECK_SIZEOF(long long, 8)] +) + +dnl ************************************************ +dnl OS type + +AC_DEFINE_UNQUOTED(OS_LINUX, , OS type) +CFLAGS="$CFLAGS -D_BSD_SOURCE" + +dnl ************************************************ +dnl Memory bulk indexing mode + +AC_MSG_CHECKING(which memory bulk indexing mode to use) +AC_ARG_WITH(membulk, + [ --with-membulk=MODE indexing mode: index8|index16|ptr [default=ptr]], + mem="$withval", mem="ptr") + +case "$mem" in + ptr) + mem_bits="0" + ;; + index8) + mem_bits="8" + ;; + index16) + mem_bits="16" + ;; + *) + AC_ERROR(Invalid argument: "$mem") + ;; +esac + +AC_MSG_RESULT("$mem") +AC_DEFINE_UNQUOTED(MEM_BITS, $mem_bits, Memory bulk indexing mode) + +dnl ************************************************ +dnl Hash type + +AC_MSG_CHECKING(which hash type and size to use) +AC_ARG_WITH(hash, + [ --with-hash=TYPE hash type: crc16|xor16|xor8 [default=crc16]], + hash="$withval", hash="crc16") + +hash_type=`echo "$hash"|cut -b -3` +hash_bits=`echo "$hash"|cut -b 4-` + +if test "$hash_type" = "xor"; then + AC_DEFINE_UNQUOTED(HASH_TYPE_XOR, , Hash type) + if test "$hash_bits" != "8" -a "$hash_bits" != "16"; then + AC_ERROR(Invalid argument: "$withval") + fi +else + if test "$hash" != "crc16"; then + AC_ERROR(Invalid argument: "$hash") + fi + AC_DEFINE_UNQUOTED(HASH_TYPE_CRC, , Hash type) +fi + +AC_DEFINE_UNQUOTED(HASH_BITS, $hash_bits , Hash size) +AC_MSG_RESULT("$hash") + +dnl ************************************************ +dnl Uptime trick + +AC_MSG_CHECKING(whether to enable uptime trick) +AC_ARG_ENABLE(uptime_trick, + [ --enable-uptime_trick enable uptime trick [default=yes]], + uptime_trick="$enableval", uptime_trick="yes") +case "$uptime_trick" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(UPTIME_TRICK, , Uptime trick) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl ICMP trick + +AC_MSG_CHECKING(whether to enable icmp trick) +AC_ARG_ENABLE(icmp_trick, + [ --enable-icmp_trick enable icmp trick: yes|cisco|no [default=yes]], + icmp_trick="$enableval", icmp_trick="yes") +case "$icmp_trick" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(ICMP_TRICK, , ICMP trick) + ;; + cisco) + AC_MSG_RESULT(yes: cisco) + AC_DEFINE_UNQUOTED(UPTIME_TRICK_CISCO, , Uptime trick) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl Debugging output + +AC_MSG_CHECKING(whether to enable debugging) +AC_ARG_ENABLE(debug, + [ --enable-debug enable debugging [default=no]], + debug="$enableval", debug="no") +case "$debug" in + no) + AC_MSG_RESULT(no) + debug_val="0" + ;; + yes) + AC_MSG_RESULT(all) + debug_val="-1" + ;; + *) + AC_MSG_RESULT(custom: $debug) + debug_val="0" + debug=`echo $debug|tr , " "` + for i in $debug; do + debug_val="$debug_val | DEBUG_$i" + done + ;; +esac +AC_DEFINE_UNQUOTED(DEBUG, ($debug_val) , Debugging output) + +dnl ************************************************ +dnl Runtime messages + +AC_MSG_CHECKING(whether to enable runtime messages) +AC_ARG_ENABLE(messages, + [ --enable-messages enable runtime messages [default=no]], + messages="$enableval", messages="no") +case "$messages" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(MESSAGES, , Runtime messages) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl Pidfiles location + +AC_MSG_CHECKING(directory to store pidfiles) +AC_ARG_WITH(piddir, + [ --with-piddir=DIR pidfiles location [default=/var/run]], + piddir="$withval", piddir="/var/run") + AC_DEFINE_UNQUOTED(PID_DIR, "$piddir", Pidfiles location) + AC_MSG_RESULT("$piddir") + +dnl ************************************************ + +CFLAGS="$CFLAGS -D_REENTRANT" +CFLAGS="$CFLAGS -DWALL -W -Wall" + +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) +DATE=`date +%Y-%m-%d` +AC_SUBST(DATE) + +AC_OUTPUT(Makefile src/Makefile src/libipulog/Makefile) diff --git a/contrib/ipt_ULOG.patch b/contrib/ipt_ULOG.patch new file mode 100644 index 0000000..732561b --- /dev/null +++ b/contrib/ipt_ULOG.patch @@ -0,0 +1,27 @@ +--- /usr/src/kernel/linux-2.4.26/net/ipv4/netfilter/ipt_ULOG.c 2003-08-25 15:44:44.000000000 +0400 ++++ ipt_ULOG.c 2004-08-09 10:54:04.000000000 +0400 +@@ -165,6 +165,7 @@ + size_t size, copy_len; + struct nlmsghdr *nlh; + struct ipt_ulog_info *loginfo = (struct ipt_ulog_info *) targinfo; ++ struct timeval now; + + /* ffs == find first bit set, necessary because userspace + * is already shifting groupnumber, but we need unshifted. +@@ -211,8 +212,14 @@ + + /* copy hook, prefix, timestamp, payload, etc. */ + pm->data_len = copy_len; +- pm->timestamp_sec = (*pskb)->stamp.tv_sec; +- pm->timestamp_usec = (*pskb)->stamp.tv_usec; ++ if ((*pskb)->stamp.tv_sec) { ++ pm->timestamp_sec = (*pskb)->stamp.tv_sec; ++ pm->timestamp_usec = (*pskb)->stamp.tv_usec; ++ } else { ++ do_gettimeofday(&now); ++ pm->timestamp_sec = now.tv_sec; ++ pm->timestamp_usec = now.tv_usec; ++ } + pm->mark = (*pskb)->nfmark; + pm->hook = hooknum; + if (loginfo->prefix[0] != '\0') diff --git a/contrib/tg.sh b/contrib/tg.sh new file mode 100755 index 0000000..7290ab8 --- /dev/null +++ b/contrib/tg.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +Q=10000 + +if [[ $# -ne 2 ]]; then + echo -e "\ +Usage: `basename $0` [target] [number] + +This is simple traffic generator script for stress tests. +It based on the traceroute: ftp://ftp.ee.lbl.gov/traceroute.tar.gz +(FreeBSD and Debian Linux ships with this version). + +Script will send number*$Q UDP packets +and, of course, receive number*$Q ICMP replys. + +Note: for stress test you must turn off ICMP rate limit on target machine: +Linux: sysctl -w net/ipv4/icmp_ratelimit=0 +FreeBSD: sysctl -w net.inet.icmp.icmplim=0 +Solaris: /usr/sbin/ndd -set /dev/ip ip_icmp_err_interval 0 +" + exit +fi + +H=$1 +C=$2 +c=0 +s=$(date +%s) + +while [[ $((C--)) -gt 0 ]]; do + traceroute -n -q $Q $H &>/dev/null + e=$(date +%s) + l=$(($e-$s)) + c=$(($c+2*$Q)) + p=$(($c*10/($l*10+1))) + echo -ne "$l sec. $p pkts/s \r" +done +echo + +# v1.2 by sla@0n.ru diff --git a/fprobe-ulog.spec b/fprobe-ulog.spec new file mode 100644 index 0000000..dc9586c --- /dev/null +++ b/fprobe-ulog.spec @@ -0,0 +1,34 @@ +Name: fprobe-ulog +Version: 1.1 +Release: 1 +Summary: fprobe-ulog: a NetFlow probe +Group: Network/Monitoring +License: GPL +URL: http://fprobe.sourceforge.net +Source0: %{name}-%{version}.tar.bz2 +Buildroot: %{_tmppath}/%{name}-buildroot +Provides: fprobe-ulog + +%description +fprobe-ulog - libipulog-based tool that collect network traffic data and emit +it as NetFlow flows towards the specified collector. + +%prep +%setup -q + +%build +./configure --sbindir=%{_sbindir} --mandir=%{_mandir} $EXTRA_OPTIONS +make + +%install +rm -rf %{buildroot} +make install-strip DESTDIR=%{buildroot} +gzip --best %{buildroot}%{_mandir}/man8/fprobe-ulog.8 + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root) +%doc AUTHORS ChangeLog NEWS README COPYING TODO +/* diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/missing b/missing new file mode 100755 index 0000000..64b5f90 --- /dev/null +++ b/missing @@ -0,0 +1,353 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2004-09-07.08 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit 0 + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit 0 + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..18ffa9e --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.2.2.1 2004/02/02 08:06:23 sla Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/src/3 b/src/3 new file mode 100644 index 0000000..e69de29 diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..f2ec840 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,560 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +SOURCES = $(fprobe_ulog_SOURCES) + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/fprobe-ulog +pkglibdir = $(libdir)/fprobe-ulog +pkgincludedir = $(includedir)/fprobe-ulog +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +target_triplet = i686-pc-linux-gnu +sbin_PROGRAMS = fprobe-ulog$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(sbin_PROGRAMS) +am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \ + hash.$(OBJEXT) mem.$(OBJEXT) my_getopt.$(OBJEXT) \ + my_log.$(OBJEXT) +fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS) +fprobe_ulog_DEPENDENCIES = libipulog/libipulog.a +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(fprobe_ulog_SOURCES) +DIST_SOURCES = $(fprobe_ulog_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar +AUTOCONF = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf +AUTOHEADER = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader +AUTOMAKE = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATE = 2007-10-26 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = -lpthread +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo +OBJEXT = o +PACKAGE = fprobe-ulog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 1.1 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/sapan/fprobe-ulog-1.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +INCLUDES = -I$(top_srcdir)/src/libipulog/include +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 +SUBDIRS = libipulog +EXTRA_DIST = ${man_MANS} +fprobe_ulog_LDADD = libipulog/libipulog.a +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +fprobe-ulog$(EXEEXT): $(fprobe_ulog_OBJECTS) $(fprobe_ulog_DEPENDENCIES) + @rm -f fprobe-ulog$(EXEEXT) + $(LINK) $(fprobe_ulog_LDFLAGS) $(fprobe_ulog_OBJECTS) $(fprobe_ulog_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-exec-am: install-sbinPROGRAMS + +install-info: install-info-recursive + +install-man: install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man uninstall-sbinPROGRAMS + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man8 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive clean-sbinPROGRAMS ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man8 install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man8 uninstall-sbinPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..fa46d22 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,18 @@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include + +sbin_PROGRAMS = fprobe-ulog +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 + +SUBDIRS = libipulog + +EXTRA_DIST = ${man_MANS} + +fprobe_ulog_LDADD = libipulog/libipulog.a diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..6c7d54c --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,560 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SOURCES = $(fprobe_ulog_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = fprobe-ulog$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(sbin_PROGRAMS) +am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \ + hash.$(OBJEXT) mem.$(OBJEXT) my_getopt.$(OBJEXT) \ + my_log.$(OBJEXT) +fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS) +fprobe_ulog_DEPENDENCIES = libipulog/libipulog.a +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(fprobe_ulog_SOURCES) +DIST_SOURCES = $(fprobe_ulog_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 +SUBDIRS = libipulog +EXTRA_DIST = ${man_MANS} +fprobe_ulog_LDADD = libipulog/libipulog.a +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +fprobe-ulog$(EXEEXT): $(fprobe_ulog_OBJECTS) $(fprobe_ulog_DEPENDENCIES) + @rm -f fprobe-ulog$(EXEEXT) + $(LINK) $(fprobe_ulog_LDFLAGS) $(fprobe_ulog_OBJECTS) $(fprobe_ulog_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-exec-am: install-sbinPROGRAMS + +install-info: install-info-recursive + +install-man: install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man uninstall-sbinPROGRAMS + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man8 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive clean-sbinPROGRAMS ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man8 install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man8 uninstall-sbinPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/On b/src/On new file mode 100644 index 0000000..e69de29 diff --git a/src/a b/src/a new file mode 100644 index 0000000..e69de29 diff --git a/src/bla b/src/bla new file mode 100755 index 0000000..e69de29 diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..29961fd --- /dev/null +++ b/src/common.h @@ -0,0 +1,32 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: common.h,v 1.2.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _COMMON_H_ +#define _COMMON_H_ + +#define DBG my_log(LOG_DEBUG, "DBG: %s:%d", __FILE__, __LINE__) + +#include + +/* Capture*/ +#define DEBUG_C 1 +/* Unpending */ +#define DEBUG_U 2 +/* Scan */ +#define DEBUG_S 4 +/* Emit */ +#define DEBUG_E 8 +/* Memory */ +#define DEBUG_M 16 +/* Fill */ +#define DEBUG_F 32 +/* Info */ +#define DEBUG_I 64 + +#endif diff --git a/src/fprobe-ulog.8 b/src/fprobe-ulog.8 new file mode 100644 index 0000000..8d8aa8d --- /dev/null +++ b/src/fprobe-ulog.8 @@ -0,0 +1,176 @@ +.TH fprobe-ulog 8 "2005-01-29" "fprobe-ulog 1.1" + +.SH NAME +fprobe-ulog \- a NetFlow probe + +.SH SYNOPSIS +.BI fprobe-ulog +[\fIoptions\fR] \fIremote:port[/[local][/type]] ...\fR + +.SH DESCRIPTION +.B fprobe-ulog +\- libipulog-based tool that collect network traffic data and emit it as +NetFlow flows towards the specified collector. + +.SH OPTIONS +.TP +.B -h +Display short help +.TP +.B -U \fI\fR +ULOG group bitwise mask. [default=1] +.TP +.B -s \fI\fR +How often scan for expired flows. [default=5] +.TP +.B -g \fI\fR +Fragmented flow lifetime. [default=30] +.TP +.B -d \fI\fR +Idle flow lifetime (inactive timer). [default=60] +.TP +.B -e \fI\fR +Active flow lifetime (active timer). [default=300] +.TP +.B -n \fI\fR +NetFlow version for use (1, 5, 7). [default=5] +.TP +.B -a \fI
\fR +Use \fIaddress\fR as source for NetFlow flow. +.TP +.B -X \fI\fR +Comma separated list of interface name to SNMP-index conversion rules. +Each \fIrule\fR consists of \fIinterface base name\fR and \fISNMP-index +base\fR separated by colon (e.g. ppp:200). Final SNMP-index is sum of +corresponding \fISNMP-index base\fR and \fIinterface number\fR. +.br +In the above example SNMP-index of interface ppp11 is 211. +.br + +If interface name did not fit to any of conversion rules then SNMP-index +will be taken from kernel. +.TP +.B -M +Use the netfilter mark as Type Of Service value. +.TP +.B -b \fI\fR +Memory bulk size. [default=200 or 10000] +.br +Note that maximum and default values depends on compiling options +(\fI--with-membulk\fR parameter). +.TP +.B -m \fI\fR +Memory limit for flows cache (0=no limit). [default=0] +.TP +.B -q \fI\fR +Pending queue length. [default=100] +.br +Each captured packet at first puts into special buffer called `pending +queue'. Purpose of this buffer is to separate most time-critical packet +capture thread from other. +.TP +.B -B \fI\fR +Kernel capture buffer size (0=don't change). [default=0] +.br +Increase kernel capture buffer size is most adequate way to prevent +packets loss. +.br +Note that maximum allowed size of the buffer in Linux limited and +generally relatively small, so it should need to change the maximum: +sysctl -w net/core/rmem_max=4194304 +.TP +.B -r \fI\fR +Real-time priority (0=disabled). [default=0] +.br +If parameter greater then zero \fBfprobe-ulog\fR will use real-time scheduling +policy to prevent packets loss. Note that possible values for this +option depends on operating system. +.TP +.B -t \fI\fR +Emitting rate limit (0:0=no limit). [default=0:0] +.br +Produce \fIN\fR nanosecond delay after each \fIB\fR bytes sent. This +option may be useful with slow interfaces and slow collectors. Note that +the suspension time may be longer than requested because the argument +value is rounded up to an integer multiple of the sleep resolution (it +depends on operating system and hardware) or because of the scheduling +of other activity by the system. +.br +See BUGS section. +.TP +.B -c \fI\fR +Directory to chroot to. +.TP +.B -u \fI\fR +User to run as. +.TP +.B -v \fI\fR +Maximum displayed log level. (0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, +5=NOTICE, 6=INFO, 7=DEBUG) [default=6] +.TP +.B -l \fI<[dst][:id]>\fR +Log destination (0=none, 1=syslog, 2=stdout, 3=both) and log/pidfile +identifier. [default=1] +.br +This option allows to select opportune log destination and process +identifier. The identifier helps to distinguish pidfile and logs of one +\fBfprobe-ulog\fR process from other. +.br +Note that if log destination contains `\fIstdout\fR' (equal 2 or 3) +\fBfprobe-ulog\fR will run in foreground. +.TP +.B remote:port/local/type +Parameters \fIremote\fR and \fIport\fR are respectively define address +and port of the NetFlow collector. +.br +The \fIlocal\fR parameter allows binding certain local IP address with +specified collector. If the parameter is omitted the value (if any) of +\fI-a\fR option will be used. +.br +The \fItype\fR parameter determines emitting behavior. It may be `m' for +mirroring (by default) and `r' for collectors round-robin rotating. +.br +You may specify multiple collectors. + +.SH EXAMPLES +\fBfprobe-ulog -Xeth:100,ppp:200 localhost:2055\fR + +Reasonable configuration to run under heavy load: +.br +\fBfprobe-ulog -B4096 -r2 -q10000 -t10000:10000000 localhost:2055\fR + +Send packets to collector at 10.1.1.1:2055 and distribute them between +collectors at 10.1.1.2:2055 and at 10.1.1.3:2055 on a round-robin basis: +.br +\fBfprobe-ulog 10.1.1.1:2055 10.1.1.2:2055//r 10.1.1.3:2055//r\fR + +.SH BUGS +.B Slow interfaces and slow collectors. +.br +There are may be problems with slow interfaces and slow collectors. It +effects as emitted packets loss. On the one hand silent non-blocking +sendto() implementation can't guarantee that packet was really sent to +collector - it may be dropped by kernel due to outgoing buffer shortage +(slow interface's problem) and on the other hand packet may be dropped +on collector's machine due the similar reason - incoming buffer shortage +(slow collector's problem). +.br +Use \fI-t\fR option as workaround for this issue. + +.B Locally originated packets and their timestamps. +.br +Locally originated packets does not contains valid timestamps. Therefore +\fBfprobe-ulog\fR fill timestamp by itself on act of receive such +packet. Unfortunately, between capturing packet by netfilter code and +receiving it by \fBfprobe-ulog\fR may occur certain lags, thus +timestamps of locally originated packets generally inexact. +.br +It is possible to fix this problem entirely by trivial kernel patch (see +contrib/ipt_ULOG.patch). + +.SH SEE ALSO +.BR iptables(8) +.br +.BR http://freshmeat.net/projects/ulogd +.br +.BR http://www.cisco.com/go/netflow diff --git a/src/fprobe-ulog.c b/src/fprobe-ulog.c new file mode 100644 index 0000000..cdcf170 --- /dev/null +++ b/src/fprobe-ulog.c @@ -0,0 +1,1549 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.c,v 1.1.2.4 2005/01/30 09:06:19 sla Exp $ +*/ + +#include + +/* stdout, stderr, freopen() */ +#include + +/* atoi(), exit() */ +#include + +/* getopt(), alarm(), getpid(), sedsid(), chdir() */ +#include + +/* strerror() */ +#include + +/* sig*() */ +#include + +#include +struct ipulog_handle { + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* inet_*() (Linux, FreeBSD, Solaris), getpid() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef OS_LINUX +#include +#endif + +/* pthread_*() */ +#include + +/* errno */ +#include + +/* getaddrinfo() */ +#include + +/* nanosleep() */ +#include + +/* gettimeofday() */ +#include + +/* scheduling */ +#include + +/* select() (POSIX)*/ +#include + +/* open() */ +#include +#include + +#include +#include +#include +#include +#include +#include + +enum { + aflag, + Bflag, + bflag, + cflag, + dflag, + eflag, + fflag, + gflag, + hflag, + lflag, + mflag, + Mflag, + nflag, + qflag, + rflag, + sflag, + tflag, + Uflag, + uflag, + vflag, + Xflag, +}; + +static struct getopt_parms parms[] = { + {'a', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'B', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'b', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'c', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'d', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'e', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'f', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'g', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'h', 0, 0, 0}, + {'l', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'m', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'M', 0, 0, 0}, + {'n', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'q', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'r', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'s', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'t', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'U', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'u', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'v', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'X', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {0, 0, 0, 0} +}; + +extern char *optarg; +extern int optind, opterr, optopt; +extern int errno; + +extern struct NetFlow NetFlow1; +extern struct NetFlow NetFlow5; +extern struct NetFlow NetFlow7; + +#define mark_is_tos parms[Mflag].count +static unsigned scan_interval = 5; +static int frag_lifetime = 30; +static int inactive_lifetime = 60; +static int active_lifetime = 300; +static int sockbufsize; +#define BULK_QUANTITY_MAX (unsigned)(mem_index_t)(-1) +#if (MEM_BITS == 0) || (MEM_BITS == 16) +#define BULK_QUANTITY 10000 +#else +#define BULK_QUANTITY 200 +#endif +static unsigned bulk_quantity = BULK_QUANTITY; +static unsigned pending_queue_length = 100; +static struct NetFlow *netflow = &NetFlow5; +static unsigned verbosity = 6; +static unsigned log_dest = MY_LOG_SYSLOG; +static struct Time start_time; +static long start_time_offset; +static int off_tl; +/* From mem.c */ +extern unsigned total_elements; +extern unsigned free_elements; +extern unsigned total_memory; +#if ((DEBUG) & DEBUG_I) +static unsigned emit_pkts, emit_queue; +static uint64_t size_total; +static unsigned pkts_total, pkts_total_fragmented; +static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending; +static unsigned pkts_pending, pkts_pending_done; +static unsigned pending_queue_trace, pending_queue_trace_candidate; +static unsigned flows_total, flows_fragmented; +#endif +static unsigned emit_count; +static uint32_t emit_sequence; +static unsigned emit_rate_bytes, emit_rate_delay; +static struct Time emit_time; +static uint8_t emit_packet[NETFLOW_MAX_PACKET]; +static pthread_t thid; +static sigset_t sig_mask; +static struct sched_param schedp; +static int sched_min, sched_max; +static int npeers, npeers_rot; +static struct peer *peers; +static int sigs; + +static struct Flow *flows[1 << HASH_BITS]; +static pthread_mutex_t flows_mutex[1 << HASH_BITS]; + +static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER; + +static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *pending_head, *pending_tail; +static struct Flow *scan_frag_dreg; + +static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *flows_emit; + +static char ident[256] = "fprobe-ulog"; +static FILE *pidfile; +static char *pidfilepath; +static pid_t pid; +static int killed; +static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT; +static struct ipulog_handle *ulog_handle; +static uint32_t ulog_gmask = 1; +static char *cap_buf; +static int nsnmp_rules; +static struct snmp_rule *snmp_rules; +static struct passwd *pw = 0; + +void usage() +{ + fprintf(stdout, + "fprobe-ulog: a NetFlow probe. Version %s\n" + "Usage: fprobe-ulog [options] remote:port[/[local][/type]] ...\n" + "\n" + "-h\t\tDisplay this help\n" + "-U \tULOG group bitwise mask [1]\n" + "-s \tHow often scan for expired flows [5]\n" + "-g \tFragmented flow lifetime [30]\n" + "-e \tActive flow lifetime (active timer) [300]\n" + "-f \tLog flow data in a file\n" + "-G \tRotate logs on an 0-hourly, 1-daily basis\n" + "-n \tNetFlow version for use (1, 5 or 7) [5]\n" + "-a
\tUse
as source for NetFlow flow\n" + "-X \tInterface name to SNMP-index conversion rules\n" + "-M\t\tUse netfilter mark value as ToS flag\n" + "-b \tMemory bulk size (1..%u) [%u]\n" + "-m \tMemory limit (0=no limit) [0]\n" + "-q \tPending queue length [100]\n" + "-B \tKernel capture buffer size [0]\n" + "-r \tReal-time priority (0=disabled, %d..%d) [0]\n" + "-t \tProduce nanosecond delay after each bytes sent [0:0]\n" + "-c \tDirectory to chroot to\n" + "-u \tUser to run as\n" + "-v \tMaximum log level (0=EMERG, ..., 6=INFO, 7=DEBUG) [6]\n" + "-l <[dst][:id]>\tLog destination and log/pidfile idetifier [1]\n" + "-y \tAddress of the NetFlow collector\n", + "-f \tFile to write data into\n" + VERSION, BULK_QUANTITY_MAX, bulk_quantity, sched_min, sched_max); + exit(0); +} + +#if ((DEBUG) & DEBUG_I) +void info_debug() +{ + my_log(LOG_DEBUG, "I: received:%d/%d (%lld) pending:%d/%d", + pkts_total, pkts_total_fragmented, size_total, + pkts_pending - pkts_pending_done, pending_queue_trace); + my_log(LOG_DEBUG, "I: ignored:%d lost:%d+%d", + pkts_ignored, pkts_lost_capture, pkts_lost_unpending); + my_log(LOG_DEBUG, "I: cache:%d/%d emit:%d/%d/%d", + flows_total, flows_fragmented, emit_sequence, emit_pkts, emit_queue); + my_log(LOG_DEBUG, "I: memory:%d/%d (%d)", + total_elements, free_elements, total_memory); +} +#endif + +void sighandler(int sig) +{ + switch (sig) { + case SIGTERM: + sigs |= SIGTERM_MASK; + break; +#if ((DEBUG) & DEBUG_I) + case SIGUSR1: + sigs |= SIGUSR1_MASK; + break; +#endif + } +} + +void gettime(struct Time *now) +{ + struct timeval t; + + gettimeofday(&t, 0); + now->sec = t.tv_sec; + now->usec = t.tv_usec; +} + +inline time_t cmpmtime(struct Time *t1, struct Time *t2) +{ + return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; +} + +/* Uptime in miliseconds */ +uint32_t getuptime(struct Time *t) +{ + /* Maximum uptime is about 49/2 days */ + return cmpmtime(t, &start_time); +} + +hash_t hash_flow(struct Flow *flow) +{ + if (flow->flags & FLOW_FRAG) return hash(flow, sizeof(struct Flow_F)); + else return hash(flow, sizeof(struct Flow_TL)); +} + +uint16_t snmp_index(char *name) { + uint32_t i; + + if (!*name) return 0; + + for (i = 0; (int) i < nsnmp_rules; i++) { + if (strncmp(snmp_rules[i].basename, name, snmp_rules[i].len)) continue; + return atoi(&name[snmp_rules[i].len]) + snmp_rules[i].base; + } + + if ((i = if_nametoindex(name))) return i; + + return -1; +} + +inline void copy_flow(struct Flow *src, struct Flow *dst) +{ + dst->iif = src->iif; + dst->oif = src->oif; + dst->sip = src->sip; + dst->dip = src->dip; + dst->tos = src->tos; + dst->proto = src->proto; + dst->tcp_flags = src->tcp_flags; + dst->id = src->id; + dst->sp = src->sp; + dst->dp = src->dp; + dst->pkts = src->pkts; + dst->size = src->size; + dst->sizeF = src->sizeF; + dst->sizeP = src->sizeP; + dst->ctime = src->ctime; + dst->mtime = src->mtime; + dst->flags = src->flags; +} + +struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev) +{ + struct Flow **flowpp; + +#ifdef WALL + flowpp = 0; +#endif + + if (prev) flowpp = *prev; + + while (where) { + if (where->sip.s_addr == what->sip.s_addr + && where->dip.s_addr == what->dip.s_addr + && where->proto == what->proto) { + switch ((what->flags + where->flags) & FLOW_FRAGMASK) { + case 0: + /* Both unfragmented */ + if ((what->sp == where->sp) + && (what->dp == where->dp)) goto done; + break; + case 2: + /* Both fragmented */ + if (where->id == what->id) goto done; + break; + } + } + flowpp = &where->next; + where = where->next; + } +done: + if (prev) *prev = flowpp; + return where; +} + +int put_into(struct Flow *flow, int flag +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , char *logbuf +#endif +) +{ + int ret = 0; + hash_t h; + struct Flow *flown, **flowpp; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char buf[64]; +#endif + + h = hash_flow(flow); +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " %x H:%04x", (unsigned) flow, h); + strcat(logbuf, buf); +#endif + pthread_mutex_lock(&flows_mutex[h]); + flowpp = &flows[h]; + if (!(flown = find(flows[h], flow, &flowpp))) { + /* No suitable flow found - add */ + if (flag == COPY_INTO) { + if ((flown = mem_alloc())) { + copy_flow(flow, flown); + flow = flown; + } else { +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) || defined MESSAGES + my_log(LOG_ERR, "%s %s. %s", + "mem_alloc():", strerror(errno), "packet lost"); +#endif + return -1; + } + } + flow->next = flows[h]; + flows[h] = flow; +#if ((DEBUG) & DEBUG_I) + flows_total++; + if (flow->flags & FLOW_FRAG) flows_fragmented++; +#endif +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + if (flown) { + sprintf(buf, " => %x, flags: %x", (unsigned) flown, flown->flags); + strcat(logbuf, buf); + } +#endif + } else { + /* Found suitable flow - update */ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " +> %x", (unsigned) flown); + strcat(logbuf, buf); +#endif + if (cmpmtime(&flow->mtime, &flown->mtime) > 0) + flown->mtime = flow->mtime; + if (cmpmtime(&flow->ctime, &flown->ctime) < 0) + flown->ctime = flow->ctime; + flown->tcp_flags |= flow->tcp_flags; + flown->size += flow->size; + flown->pkts += flow->pkts; + if (flow->flags & FLOW_FRAG) { + /* Fragmented flow require some additional work */ + if (flow->flags & FLOW_TL) { + /* + ?FIXME? + Several packets with FLOW_TL (attack) + */ + flown->sp = flow->sp; + flown->dp = flow->dp; + } + if (flow->flags & FLOW_LASTFRAG) { + /* + ?FIXME? + Several packets with FLOW_LASTFRAG (attack) + */ + flown->sizeP = flow->sizeP; + } + flown->flags |= flow->flags; + flown->sizeF += flow->sizeF; + if ((flown->flags & FLOW_LASTFRAG) + && (flown->sizeF >= flown->sizeP)) { + /* All fragments received - flow reassembled */ + *flowpp = flown->next; + pthread_mutex_unlock(&flows_mutex[h]); +#if ((DEBUG) & DEBUG_I) + flows_total--; + flows_fragmented--; +#endif + flown->id = 0; + flown->flags &= ~FLOW_FRAG; +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + strcat(logbuf," R"); +#endif + ret = put_into(flown, MOVE_INTO +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + , logbuf +#endif + ); + } + } + if (flag == MOVE_INTO) mem_free(flow); + } + pthread_mutex_unlock(&flows_mutex[h]); + return ret; +} + +void *fill(int fields, uint16_t *format, struct Flow *flow, void *p) +{ + int i; + + for (i = 0; i < fields; i++) { +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: field %04d at %x", format[i], (unsigned) p); +#endif + switch (format[i]) { + case NETFLOW_IPV4_SRC_ADDR: + ((struct in_addr *) p)->s_addr = flow->sip.s_addr; + p += NETFLOW_IPV4_SRC_ADDR_SIZE; + break; + + case NETFLOW_IPV4_DST_ADDR: + ((struct in_addr *) p)->s_addr = flow->dip.s_addr; + p += NETFLOW_IPV4_DST_ADDR_SIZE; + break; + + case NETFLOW_INPUT_SNMP: + *((uint16_t *) p) = htons(flow->iif); + p += NETFLOW_INPUT_SNMP_SIZE; + break; + + case NETFLOW_OUTPUT_SNMP: + *((uint16_t *) p) = htons(flow->oif); + p += NETFLOW_OUTPUT_SNMP_SIZE; + break; + + case NETFLOW_PKTS_32: + *((uint32_t *) p) = htonl(flow->pkts); + p += NETFLOW_PKTS_32_SIZE; + break; + + case NETFLOW_BYTES_32: + *((uint32_t *) p) = htonl(flow->size); + p += NETFLOW_BYTES_32_SIZE; + break; + + case NETFLOW_FIRST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->ctime)); + p += NETFLOW_FIRST_SWITCHED_SIZE; + break; + + case NETFLOW_LAST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->mtime)); + p += NETFLOW_LAST_SWITCHED_SIZE; + break; + + case NETFLOW_L4_SRC_PORT: + *((uint16_t *) p) = flow->sp; + p += NETFLOW_L4_SRC_PORT_SIZE; + break; + + case NETFLOW_L4_DST_PORT: + *((uint16_t *) p) = flow->dp; + p += NETFLOW_L4_DST_PORT_SIZE; + break; + + case NETFLOW_PROT: + *((uint8_t *) p) = flow->proto; + p += NETFLOW_PROT_SIZE; + break; + + case NETFLOW_SRC_TOS: + *((uint8_t *) p) = flow->tos; + p += NETFLOW_SRC_TOS_SIZE; + break; + + case NETFLOW_TCP_FLAGS: + *((uint8_t *) p) = flow->tcp_flags; + p += NETFLOW_TCP_FLAGS_SIZE; + break; + + case NETFLOW_VERSION: + *((uint16_t *) p) = htons(netflow->Version); + p += NETFLOW_VERSION_SIZE; + break; + + case NETFLOW_COUNT: + *((uint16_t *) p) = htons(emit_count); + p += NETFLOW_COUNT_SIZE; + break; + + case NETFLOW_UPTIME: + *((uint32_t *) p) = htonl(getuptime(&emit_time)); + p += NETFLOW_UPTIME_SIZE; + break; + + case NETFLOW_UNIX_SECS: + *((uint32_t *) p) = htonl(emit_time.sec); + p += NETFLOW_UNIX_SECS_SIZE; + break; + + case NETFLOW_UNIX_NSECS: + *((uint32_t *) p) = htonl(emit_time.usec * 1000); + p += NETFLOW_UNIX_NSECS_SIZE; + break; + + case NETFLOW_FLOW_SEQUENCE: + //*((uint32_t *) p) = htonl(emit_sequence); + *((uint32_t *) p) = 0; + p += NETFLOW_FLOW_SEQUENCE_SIZE; + break; + + case NETFLOW_PAD8: + /* Unsupported (uint8_t) */ + case NETFLOW_ENGINE_TYPE: + case NETFLOW_ENGINE_ID: + case NETFLOW_FLAGS7_1: + case NETFLOW_SRC_MASK: + case NETFLOW_DST_MASK: + *((uint8_t *) p) = 0; + p += NETFLOW_PAD8_SIZE; + break; + + case NETFLOW_PAD16: + /* Unsupported (uint16_t) */ + case NETFLOW_SRC_AS: + case NETFLOW_DST_AS: + case NETFLOW_FLAGS7_2: + *((uint16_t *) p) = 0; + p += NETFLOW_PAD16_SIZE; + break; + + case NETFLOW_PAD32: + /* Unsupported (uint32_t) */ + case NETFLOW_IPV4_NEXT_HOP: + case NETFLOW_ROUTER_SC: + *((uint32_t *) p) = 0; + p += NETFLOW_PAD32_SIZE; + break; + + default: + my_log(LOG_CRIT, "fill(): Unknown format at %x[%d]: %d", + format, i, format[i]); + exit(1); + } + } +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: return %x", (unsigned) p); +#endif + return p; +} + +void setuser() { + /* + Workaround for clone()-based threads + Try to change EUID independently of main thread + */ + if (pw) { + setgroups(0, NULL); + setregid(pw->pw_gid, pw->pw_gid); + setreuid(pw->pw_uid, pw->pw_uid); + } +} + +void *emit_thread() +{ + struct Flow *flow; + void *p; + struct timeval now; + struct timespec timeout; + int i, ret, sent = 0, size, delay, peer_rot_cur, peer_rot_work = 0; + + p = (void *) &emit_packet + netflow->HeaderSize; + timeout.tv_nsec = 0; + + setuser(); + + for (;;) { + pthread_mutex_lock(&emit_mutex); + while (!flows_emit) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + emit_timeout; + /* Do not wait until emit_packet will filled - it may be too long */ + if (pthread_cond_timedwait(&emit_cond, &emit_mutex, &timeout) && emit_count) { + pthread_mutex_unlock(&emit_mutex); + goto sendit; + } + } + flow = flows_emit; + flows_emit = flows_emit->next; +#if ((DEBUG) & DEBUG_I) + emit_queue--; +#endif + pthread_mutex_unlock(&emit_mutex); + +#ifdef UPTIME_TRICK + if (!emit_count) { + gettime(&start_time); + start_time.sec -= start_time_offset; + } +#endif + p = fill(netflow->FlowFields, netflow->FlowFormat, flow, p); + mem_free(flow); + emit_count++; +#ifdef PF2_DEBUG + printf("Emit count = %d\n", emit_count); + fflush(stdout); +#endif + if (emit_count == netflow->MaxFlows) { + sendit: + gettime(&emit_time); + p = fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); + size = netflow->HeaderSize + emit_count * netflow->FlowSize; + /* Netflow PDUs need to be padded to 1464 bytes - Sapan */ + if (size < 1464) size = 1464; + peer_rot_cur = 0; + for (i = 0; i < npeers; i++) { + if (peers[0].type == PEER_FILE) { + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[0].seq); +#define MESSAGES + ret = write(peers[0].write_fd, emit_packet, size); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "write(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif +#undef MESSAGES + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[0].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + else + if (peers[i].type == PEER_MIRROR) goto sendreal; + else + if (peers[i].type == PEER_ROTATE) + if (peer_rot_cur++ == peer_rot_work) { + sendreal: + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[i].seq); + ret = send(peers[i].write_fd, emit_packet, size, 0); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "send(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[i].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + } + if (npeers_rot) peer_rot_work = (peer_rot_work + 1) % npeers_rot; + emit_sequence += emit_count; + emit_count = 0; +#if ((DEBUG) & DEBUG_I) + emit_pkts++; +#endif + } + } +} + +void *unpending_thread() +{ + struct timeval now; + struct timespec timeout; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&unpending_mutex); + + for (;;) { + while (!(pending_tail->flags & FLOW_PENDING)) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + unpending_timeout; + pthread_cond_timedwait(&unpending_cond, &unpending_mutex, &timeout); + } + +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + if (put_into(pending_tail, COPY_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ) < 0) { +#if ((DEBUG) & DEBUG_I) + pkts_lost_unpending++; +#endif + } + +#if ((DEBUG) & DEBUG_U) + my_log(LOG_DEBUG, "%s%s", "U:", logbuf); +#endif + + pending_tail->flags = 0; + pending_tail = pending_tail->next; +#if ((DEBUG) & DEBUG_I) + pkts_pending_done++; +#endif + } +} + +void *scan_thread() +{ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + int i; + struct Flow *flow, **flowpp; + struct Time now; + struct timespec timeout; + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&scan_mutex); + + for (;;) { + gettime(&now); + timeout.tv_sec = now.sec + scan_interval; + pthread_cond_timedwait(&scan_cond, &scan_mutex, &timeout); + + gettime(&now); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: %d", now.sec); +#endif + for (i = 0; i < 1 << HASH_BITS ; i++) { + pthread_mutex_lock(&flows_mutex[i]); + flow = flows[i]; + flowpp = &flows[i]; + while (flow) { + if (flow->flags & FLOW_FRAG) { + /* Process fragmented flow */ + if ((now.sec - flow->mtime.sec) > frag_lifetime) { + /* Fragmented flow expired - put it into special chain */ +#if ((DEBUG) & DEBUG_I) + flows_fragmented--; + flows_total--; +#endif + *flowpp = flow->next; + flow->id = 0; + flow->flags &= ~FLOW_FRAG; + flow->next = scan_frag_dreg; + scan_frag_dreg = flow; + flow = *flowpp; + continue; + } + } else { + /* Flow is not frgamented */ + if ((now.sec - flow->mtime.sec) > inactive_lifetime + || (flow->mtime.sec - flow->ctime.sec) > active_lifetime) { + /* Flow expired */ +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: E %x", flow); +#endif +#if ((DEBUG) & DEBUG_I) + flows_total--; +#endif + *flowpp = flow->next; + pthread_mutex_lock(&emit_mutex); + flow->next = flows_emit; + flows_emit = flow; +#if ((DEBUG) & DEBUG_I) + emit_queue++; +#endif + pthread_mutex_unlock(&emit_mutex); + flow = *flowpp; + continue; + } + } + flowpp = &flow->next; + flow = flow->next; + } /* chain loop */ + pthread_mutex_unlock(&flows_mutex[i]); + } /* hash loop */ + if (flows_emit) pthread_cond_signal(&emit_cond); + + while (scan_frag_dreg) { + flow = scan_frag_dreg; + scan_frag_dreg = flow->next; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + put_into(flow, MOVE_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "%s%s", "S: FE", logbuf); +#endif + } + } +} + +void *cap_thread() +{ + struct ulog_packet_msg *ulog_msg; + struct ip *nl; + void *tl; + struct Flow *flow; + int len, off_frag, psize; +#if ((DEBUG) & DEBUG_C) + char buf[64]; + char logbuf[256]; +#endif + + setuser(); + + while (!killed) { + len = ipulog_read(ulog_handle, cap_buf, CAPTURE_SIZE, 1); + if (len <= 0) { + my_log(LOG_ERR, "ipulog_read(): %s", ipulog_strerror(ipulog_errno)); + continue; + } + while ((ulog_msg = ipulog_get_packet(ulog_handle, cap_buf, len))) { + +#if ((DEBUG) & DEBUG_C) + sprintf(logbuf, "C: %d", ulog_msg->data_len); +#endif + + nl = (void *) &ulog_msg->payload; + psize = ulog_msg->data_len; + + /* Sanity check */ + if (psize < (signed) sizeof(struct ip) || nl->ip_v != 4) { +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); + my_log(LOG_DEBUG, "%s", logbuf); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_ignored++; +#endif + continue; + } + + if (pending_head->flags) { +#if ((DEBUG) & DEBUG_C) || defined MESSAGES + my_log(LOG_ERR, +# if ((DEBUG) & DEBUG_C) + "%s %s %s", logbuf, +# else + "%s %s", +# endif + "pending queue full:", "packet lost"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_lost_capture++; +#endif + goto done; + } + +#if ((DEBUG) & DEBUG_I) + pkts_total++; +#endif + + flow = pending_head; + + /* ?FIXME? Add sanity check for ip_len? */ + flow->size = ntohs(nl->ip_len); +#if ((DEBUG) & DEBUG_I) + size_total += flow->size; +#endif + + flow->sip = nl->ip_src; + flow->dip = nl->ip_dst; + flow->iif = snmp_index(ulog_msg->indev_name); + flow->oif = snmp_index(ulog_msg->outdev_name); + flow->tos = mark_is_tos ? ulog_msg->mark : nl->ip_tos; + flow->proto = nl->ip_p; + flow->id = 0; + flow->tcp_flags = 0; + flow->pkts = 1; + flow->sizeF = 0; + flow->sizeP = 0; + /* Packets captured from OUTPUT table didn't contains valid timestamp */ + if (ulog_msg->timestamp_sec) { + flow->ctime.sec = ulog_msg->timestamp_sec; + flow->ctime.usec = ulog_msg->timestamp_usec; + } else gettime(&flow->ctime); + flow->mtime = flow->ctime; + + off_frag = (ntohs(nl->ip_off) & IP_OFFMASK) << 3; + + /* + Offset (from network layer) to transport layer header/IP data + IOW IP header size ;-) + + ?FIXME? + Check ip_hl for valid value (>=5)? Maybe check CRC? No, thanks... + */ + off_tl = nl->ip_hl << 2; + tl = (void *) nl + off_tl; + + /* THIS packet data size: data_size = total_size - ip_header_size*4 */ + flow->sizeF = ntohs(nl->ip_len) - off_tl; + psize -= off_tl; + if ((signed) flow->sizeF < 0) flow->sizeF = 0; + if (psize > (signed) flow->sizeF) psize = flow->sizeF; + + if (ntohs(nl->ip_off) & (IP_MF | IP_OFFMASK)) { + /* Fragmented packet (IP_MF flag == 1 or fragment offset != 0) */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " F"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_total_fragmented++; +#endif + flow->flags |= FLOW_FRAG; + flow->id = nl->ip_id; + + if (!(ntohs(nl->ip_off) & IP_MF)) { + /* Packet whith IP_MF contains information about whole datagram size */ + flow->flags |= FLOW_LASTFRAG; + /* size = frag_offset*8 + data_size */ + flow->sizeP = off_frag + flow->sizeF; + } + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %s@%u>", inet_ntoa(flow->sip), flow->iif); + strcat(logbuf, buf); + sprintf(buf, "%s@%u P:%x", inet_ntoa(flow->dip), flow->oif, flow->proto); + strcat(logbuf, buf); +#endif + + /* + Fortunately most interesting transport layer information fit + into first 8 bytes of IP data field (minimal nonzero size). + Thus we don't need actual packet reassembling to build whole + transport layer data. We only check the fragment offset for + zero value to find packet with this information. + */ + if (!off_frag && psize >= 8) { + switch (flow->proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + flow->sp = ((struct udphdr *)tl)->uh_sport; + flow->dp = ((struct udphdr *)tl)->uh_dport; + goto tl_known; + +#ifdef ICMP_TRICK + case IPPROTO_ICMP: + flow->sp = htons(((struct icmp *)tl)->icmp_type); + flow->dp = htons(((struct icmp *)tl)->icmp_code); + goto tl_known; +#endif +#ifdef ICMP_TRICK_CISCO + case IPPROTO_ICMP: + flow->dp = *((int32_t *) tl); + goto tl_known; +#endif + + default: + /* Unknown transport layer */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); +#endif + flow->sp = 0; + flow->dp = 0; + break; + + tl_known: +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %d>%d", ntohs(flow->sp), ntohs(flow->dp)); + strcat(logbuf, buf); +#endif + flow->flags |= FLOW_TL; + } + } + + /* Check for tcp flags presence (including CWR and ECE). */ + if (flow->proto == IPPROTO_TCP + && off_frag < 16 + && psize >= 16 - off_frag) { + flow->tcp_flags = *((uint8_t *)(tl + 13 - off_frag)); +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " TCP:%x", flow->tcp_flags); + strcat(logbuf, buf); +#endif + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " => %x", (unsigned) flow); + strcat(logbuf, buf); + my_log(LOG_DEBUG, "%s", logbuf); +#endif + +#if ((DEBUG) & DEBUG_I) + pkts_pending++; + pending_queue_trace_candidate = pkts_pending - pkts_pending_done; + if (pending_queue_trace < pending_queue_trace_candidate) + pending_queue_trace = pending_queue_trace_candidate; +#endif + + /* Flow complete - inform unpending_thread() about it */ + pending_head->flags |= FLOW_PENDING; + pending_head = pending_head->next; + done: + pthread_cond_signal(&unpending_cond); + } + } + return 0; +} + +int main(int argc, char **argv) +{ + char errpbuf[512]; + char *dhost, *dport, *lhost, *type = 0, *log_suffix = 0, *rule; + int c, i, write_fd, memory_limit = 0; + struct addrinfo hints, *res; + struct sockaddr_in saddr; + pthread_attr_t tattr; + struct sigaction sigact; + static void *threads[THREADS - 1] = {&emit_thread, &scan_thread, &unpending_thread, &cap_thread}; + struct timeval timeout; + + sched_min = sched_get_priority_min(SCHED); + sched_max = sched_get_priority_max(SCHED); + + memset(&saddr, 0 , sizeof(saddr)); + memset(&hints, 0 , sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + /* Process command line options */ + + opterr = 0; + while ((c = my_getopt(argc, argv, parms)) != -1) { + switch (c) { + case '?': + usage(); + + case 'h': + usage(); + } + } + + if (parms[Uflag].count) ulog_gmask = atoi(parms[Uflag].arg); + if (parms[sflag].count) scan_interval = atoi(parms[sflag].arg); + if (parms[gflag].count) frag_lifetime = atoi(parms[gflag].arg); + if (parms[dflag].count) inactive_lifetime = atoi(parms[dflag].arg); + if (parms[eflag].count) active_lifetime = atoi(parms[eflag].arg); + if (parms[nflag].count) { + switch (atoi(parms[nflag].arg)) { + case 1: + netflow = &NetFlow1; + break; + + case 5: + break; + + case 7: + netflow = &NetFlow7; + break; + + default: + fprintf(stderr, "Illegal %s\n", "NetFlow version"); + exit(1); + } + } + if (parms[vflag].count) verbosity = atoi(parms[vflag].arg); + if (parms[lflag].count) { + if ((log_suffix = strchr(parms[lflag].arg, ':'))) { + *log_suffix++ = 0; + if (*log_suffix) { + sprintf(errpbuf, "[%s]", log_suffix); + strcat(ident, errpbuf); + } + } + if (*parms[lflag].arg) log_dest = atoi(parms[lflag].arg); + if (log_suffix) *--log_suffix = ':'; + } + if (!(pidfilepath = malloc(sizeof(PID_DIR) + 1 + strlen(ident) + 1 + 3 + 1))) { + err_malloc: + fprintf(stderr, "malloc(): %s\n", strerror(errno)); + exit(1); + } + sprintf(pidfilepath, "%s/%s.pid", PID_DIR, ident); + if (parms[qflag].count) { + pending_queue_length = atoi(parms[qflag].arg); + if (pending_queue_length < 1) { + fprintf(stderr, "Illegal %s\n", "pending queue length"); + exit(1); + } + } + if (parms[rflag].count) { + schedp.sched_priority = atoi(parms[rflag].arg); + if (schedp.sched_priority + && (schedp.sched_priority < sched_min + || schedp.sched_priority > sched_max)) { + fprintf(stderr, "Illegal %s\n", "realtime priority"); + exit(1); + } + } + if (parms[Bflag].count) { + sockbufsize = atoi(parms[Bflag].arg) << 10; + } + if (parms[bflag].count) { + bulk_quantity = atoi(parms[bflag].arg); + if (bulk_quantity < 1 || bulk_quantity > BULK_QUANTITY_MAX) { + fprintf(stderr, "Illegal %s\n", "bulk size"); + exit(1); + } + } + if (parms[mflag].count) memory_limit = atoi(parms[mflag].arg) << 10; + if (parms[Xflag].count) { + for(i = 0; parms[Xflag].arg[i]; i++) + if (parms[Xflag].arg[i] == ':') nsnmp_rules++; + if (!(snmp_rules = malloc(nsnmp_rules * sizeof(struct snmp_rule)))) + goto err_malloc; + rule = strtok(parms[Xflag].arg, ":"); + for (i = 0; rule; i++) { + snmp_rules[i].len = strlen(rule); + if (snmp_rules[i].len > IFNAMSIZ) { + fprintf(stderr, "Illegal %s\n", "interface basename"); + exit(1); + } + strncpy(snmp_rules[i].basename, rule, snmp_rules[i].len); + if (!*(rule - 1)) *(rule - 1) = ','; + rule = strtok(NULL, ","); + if (!rule) { + fprintf(stderr, "Illegal %s\n", "SNMP rule"); + exit(1); + } + snmp_rules[i].base = atoi(rule); + *(rule - 1) = ':'; + rule = strtok(NULL, ":"); + } + nsnmp_rules = i; + } + if (parms[tflag].count) + sscanf(parms[tflag].arg, "%d:%d", &emit_rate_bytes, &emit_rate_delay); + if (parms[aflag].count) { + if (getaddrinfo(parms[aflag].arg, 0, &hints, &res)) { + bad_lhost: + fprintf(stderr, "Illegal %s\n", "source address"); + exit(1); + } else { + saddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (parms[uflag].count) + if ((pw = getpwnam(parms[uflag].arg)) == NULL) { + fprintf(stderr, "getpwnam(%s): %s\n", parms[uflag].arg, errno ? strerror(errno) : "Unknown user"); + exit(1); + } + + + /* Process collectors parameters. Brrrr... :-[ */ + + npeers = argc - optind; + if (npeers > 1) { + /* Send to remote Netflow collector */ + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + for (i = optind, npeers = 0; i < argc; i++, npeers++) { + dhost = argv[i]; + if (!(dport = strchr(dhost, ':'))) goto bad_collector; + *dport++ = 0; + if ((write_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + fprintf(stderr, "socket(): %s\n", strerror(errno)); + exit(1); + } + peers[npeers].write_fd = write_fd; + peers[npeers].type = PEER_MIRROR; + peers[npeers].laddr = saddr; + peers[npeers].seq = 0; + if ((lhost = strchr(dport, '/'))) { + *lhost++ = 0; + if ((type = strchr(lhost, '/'))) { + *type++ = 0; + switch (*type) { + case 0: + case 'm': + break; + + case 'r': + peers[npeers].type = PEER_ROTATE; + npeers_rot++; + break; + + default: + goto bad_collector; + } + } + if (*lhost) { + if (getaddrinfo(lhost, 0, &hints, &res)) goto bad_lhost; + peers[npeers].laddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (bind(write_fd, (struct sockaddr *) &peers[npeers].laddr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "bind(): %s\n", strerror(errno)); + exit(1); + } + if (getaddrinfo(dhost, dport, &hints, &res)) { +bad_collector: + fprintf(stderr, "Error in collector #%d parameters\n", npeers + 1); + exit(1); + } + peers[npeers].addr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + if (connect(write_fd, (struct sockaddr *) &peers[npeers].addr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "connect(): %s\n", strerror(errno)); + exit(1); + } + + /* Restore command line */ + if (type) *--type = '/'; + if (lhost) *--lhost = '/'; + *--dport = ':'; + } + } + else if (parms[fflag].count) { + // log into a file + char *fname; + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + fname = parms[fflag].arg; + if ((write_fd = open(fname, O_WRONLY|O_CREAT)) < 0) { + fprintf(stderr, "open(): %s (%s)\n", fname, strerror(errno)); + exit(1); + } + peers[0].write_fd = write_fd; + peers[0].type = PEER_FILE; + peers[0].seq = 0; + npeers++; + } + else + usage(); + + + if (!(cap_buf = malloc(CAPTURE_SIZE))) goto err_malloc; + ulog_handle = ipulog_create_handle(ulog_gmask, CAPTURE_SIZE); + if (!ulog_handle) { + fprintf(stderr, "libipulog initialization error: %s", + ipulog_strerror(ipulog_errno)); + exit(1); + } + if (sockbufsize) + if (setsockopt(ulog_handle->fd, SOL_SOCKET, SO_RCVBUF, + &sockbufsize, sizeof(sockbufsize)) < 0) + fprintf(stderr, "setsockopt(): %s", strerror(errno)); + + /* Daemonize (if log destination stdout-free) */ + + my_log_open(ident, verbosity, log_dest); + if (!(log_dest & 2)) { + switch (fork()) { + case -1: + fprintf(stderr, "fork(): %s", strerror(errno)); + exit(1); + + case 0: + setsid(); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); + break; + + default: + exit(0); + } + } else { + setvbuf(stdout, (char *)0, _IONBF, 0); + setvbuf(stderr, (char *)0, _IONBF, 0); + } + + pid = getpid(); + sprintf(errpbuf, "[%ld]", (long) pid); + strcat(ident, errpbuf); + + /* Initialization */ + + hash_init(); /* Actually for crc16 only */ + mem_init(sizeof(struct Flow), bulk_quantity, memory_limit); + for (i = 0; i < 1 << HASH_BITS; i++) pthread_mutex_init(&flows_mutex[i], 0); + +#ifdef UPTIME_TRICK + /* Hope 12 days is enough :-/ */ + start_time_offset = 1 << 20; + + /* start_time_offset = active_lifetime + inactive_lifetime + scan_interval; */ +#endif + gettime(&start_time); + + /* + Build static pending queue as circular buffer. + */ + if (!(pending_head = mem_alloc())) goto err_mem_alloc; + pending_tail = pending_head; + for (i = pending_queue_length - 1; i--;) { + if (!(pending_tail->next = mem_alloc())) { + err_mem_alloc: + my_log(LOG_CRIT, "mem_alloc(): %s", strerror(errno)); + exit(1); + } + pending_tail = pending_tail->next; + } + pending_tail->next = pending_head; + pending_tail = pending_head; + + sigemptyset(&sig_mask); + sigact.sa_handler = &sighandler; + sigact.sa_mask = sig_mask; + sigact.sa_flags = 0; + sigaddset(&sig_mask, SIGTERM); + sigaction(SIGTERM, &sigact, 0); +#if ((DEBUG) & DEBUG_I) + sigaddset(&sig_mask, SIGUSR1); + sigaction(SIGUSR1, &sigact, 0); +#endif + if (pthread_sigmask(SIG_BLOCK, &sig_mask, 0)) { + my_log(LOG_CRIT, "pthread_sigmask(): %s", strerror(errno)); + exit(1); + } + + my_log(LOG_INFO, "Starting %s...", VERSION); + + if (parms[cflag].count) { + if (chdir(parms[cflag].arg) || chroot(".")) { + my_log(LOG_CRIT, "could not chroot to %s: %s", parms[cflag].arg, strerror(errno)); + exit(1); + } + } + + schedp.sched_priority = schedp.sched_priority - THREADS + 2; + pthread_attr_init(&tattr); + for (i = 0; i < THREADS - 1; i++) { + if (schedp.sched_priority > 0) { + if ((pthread_attr_setschedpolicy(&tattr, SCHED)) || + (pthread_attr_setschedparam(&tattr, &schedp))) { + my_log(LOG_CRIT, "pthread_attr_setschedpolicy(): %s", strerror(errno)); + exit(1); + } + } + if (pthread_create(&thid, &tattr, threads[i], 0)) { + my_log(LOG_CRIT, "pthread_create(): %s", strerror(errno)); + exit(1); + } + pthread_detach(thid); + schedp.sched_priority++; + } + + if (pw) { + if (setgroups(0, NULL)) { + my_log(LOG_CRIT, "setgroups(): %s", strerror(errno)); + exit(1); + } + if (setregid(pw->pw_gid, pw->pw_gid)) { + my_log(LOG_CRIT, "setregid(%u): %s", pw->pw_gid, strerror(errno)); + exit(1); + } + if (setreuid(pw->pw_uid, pw->pw_uid)) { + my_log(LOG_CRIT, "setreuid(%u): %s", pw->pw_uid, strerror(errno)); + exit(1); + } + } + + if (!(pidfile = fopen(pidfilepath, "w"))) + my_log(LOG_ERR, "Can't create pid file. fopen(): %s", strerror(errno)); + else { + fprintf(pidfile, "%ld\n", (long) pid); + fclose(pidfile); + } + + my_log(LOG_INFO, "pid: %d", pid); + my_log(LOG_INFO, "options: u=%u s=%u g=%u d=%u e=%u n=%u a=%s " + "M=%d b=%u m=%u q=%u B=%u r=%u t=%u:%u c=%s u=%s v=%u l=%u%s", + ulog_gmask, scan_interval, frag_lifetime, inactive_lifetime, active_lifetime, + netflow->Version, inet_ntoa(saddr.sin_addr), mark_is_tos, bulk_quantity, + memory_limit >> 10, pending_queue_length, sockbufsize >> 10, schedp.sched_priority - 1, + emit_rate_bytes, emit_rate_delay, parms[cflag].count ? parms[cflag].arg : "", + parms[uflag].count ? parms[uflag].arg : "", verbosity, log_dest, log_suffix ? log_suffix : ""); + for (i = 0; i < nsnmp_rules; i++) { + my_log(LOG_INFO, "SNMP rule #%d %s:%d", + i + 1, snmp_rules[i].basename, snmp_rules[i].base); + } + for (i = 0; i < npeers; i++) { + switch (peers[i].type) { + case PEER_MIRROR: + c = 'm'; + break; + case PEER_ROTATE: + c = 'r'; + break; + } + snprintf(errpbuf, sizeof(errpbuf), "%s", inet_ntoa(peers[i].laddr.sin_addr)); + my_log(LOG_INFO,"collector #%d: %s:%u/%s/%c", i + 1, + inet_ntoa(peers[i].addr.sin_addr), ntohs(peers[i].addr.sin_port), errpbuf, c); + } + + pthread_sigmask(SIG_UNBLOCK, &sig_mask, 0); + + timeout.tv_usec = 0; + while (!killed + || (total_elements - free_elements - pending_queue_length) + || emit_count + || pending_tail->flags) { + + if (!sigs) { + timeout.tv_sec = scan_interval; + select(0, 0, 0, 0, &timeout); + } + + if (sigs & SIGTERM_MASK && !killed) { + sigs &= ~SIGTERM_MASK; + my_log(LOG_INFO, "SIGTERM received. Emitting flows cache..."); + scan_interval = 1; + frag_lifetime = -1; + active_lifetime = -1; + inactive_lifetime = -1; + emit_timeout = 1; + unpending_timeout = 1; + killed = 1; + pthread_cond_signal(&scan_cond); + pthread_cond_signal(&unpending_cond); + } + +#if ((DEBUG) & DEBUG_I) + if (sigs & SIGUSR1_MASK) { + sigs &= ~SIGUSR1_MASK; + info_debug(); + } +#endif + } + remove(pidfilepath); +#if ((DEBUG) & DEBUG_I) + info_debug(); +#endif + my_log(LOG_INFO, "Done."); +#ifdef WALL + return 0; +#endif +} diff --git a/src/fprobe-ulog.c.old b/src/fprobe-ulog.c.old new file mode 100644 index 0000000..7e8947d --- /dev/null +++ b/src/fprobe-ulog.c.old @@ -0,0 +1,1486 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.c,v 1.1.2.4 2005/01/30 09:06:19 sla Exp $ +*/ + +#include + +/* stdout, stderr, freopen() */ +#include + +/* atoi(), exit() */ +#include + +/* getopt(), alarm(), getpid(), sedsid(), chdir() */ +#include + +/* strerror() */ +#include + +/* sig*() */ +#include + +#include +struct ipulog_handle { + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* inet_*() (Linux, FreeBSD, Solaris), getpid() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef OS_LINUX +#include +#endif + +/* pthread_*() */ +#include + +/* errno */ +#include + +/* getaddrinfo() */ +#include + +/* nanosleep() */ +#include + +/* gettimeofday() */ +#include + +/* scheduling */ +#include + +/* select() (POSIX)*/ +#include + +/* open() */ +#include +#include + +#include +#include +#include +#include +#include +#include + +enum { + aflag, + Bflag, + bflag, + cflag, + dflag, + eflag, + gflag, + hflag, + lflag, + mflag, + Mflag, + nflag, + qflag, + rflag, + sflag, + tflag, + Uflag, + uflag, + vflag, + Xflag, +}; + +static struct getopt_parms parms[] = { + {'a', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'B', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'b', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'c', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'d', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'e', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'g', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'h', 0, 0, 0}, + {'l', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'m', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'M', 0, 0, 0}, + {'n', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'q', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'r', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'s', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'t', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'U', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'u', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'v', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'X', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {0, 0, 0, 0} +}; + +extern char *optarg; +extern int optind, opterr, optopt; +extern int errno; + +extern struct NetFlow NetFlow1; +extern struct NetFlow NetFlow5; +extern struct NetFlow NetFlow7; + +#define mark_is_tos parms[Mflag].count +static unsigned scan_interval = 5; +static int frag_lifetime = 30; +static int inactive_lifetime = 60; +static int active_lifetime = 300; +static int sockbufsize; +#define BULK_QUANTITY_MAX (unsigned)(mem_index_t)(-1) +#if (MEM_BITS == 0) || (MEM_BITS == 16) +#define BULK_QUANTITY 10000 +#else +#define BULK_QUANTITY 200 +#endif +static unsigned bulk_quantity = BULK_QUANTITY; +static unsigned pending_queue_length = 100; +static struct NetFlow *netflow = &NetFlow5; +static unsigned verbosity = 6; +static unsigned log_dest = MY_LOG_SYSLOG; +static struct Time start_time; +static long start_time_offset; +static int off_tl; +/* From mem.c */ +extern unsigned total_elements; +extern unsigned free_elements; +extern unsigned total_memory; +#if ((DEBUG) & DEBUG_I) +static unsigned emit_pkts, emit_queue; +static uint64_t size_total; +static unsigned pkts_total, pkts_total_fragmented; +static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending; +static unsigned pkts_pending, pkts_pending_done; +static unsigned pending_queue_trace, pending_queue_trace_candidate; +static unsigned flows_total, flows_fragmented; +#endif +static unsigned emit_count; +static uint32_t emit_sequence; +static unsigned emit_rate_bytes, emit_rate_delay; +static struct Time emit_time; +static uint8_t emit_packet[NETFLOW_MAX_PACKET]; +static pthread_t thid; +static sigset_t sig_mask; +static struct sched_param schedp; +static int sched_min, sched_max; +static int npeers, npeers_rot; +static struct peer *peers; +static int sigs; + +static struct Flow *flows[1 << HASH_BITS]; +static pthread_mutex_t flows_mutex[1 << HASH_BITS]; + +static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER; + +static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *pending_head, *pending_tail; +static struct Flow *scan_frag_dreg; + +static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *flows_emit; + +static char ident[256] = "fprobe-ulog"; +static FILE *pidfile; +static char *pidfilepath; +static pid_t pid; +static int killed; +static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT; +static struct ipulog_handle *ulog_handle; +static uint32_t ulog_gmask = 1; +static char *cap_buf; +static int nsnmp_rules; +static struct snmp_rule *snmp_rules; +static struct passwd *pw = 0; + +void usage() +{ + fprintf(stdout, + "fprobe-ulog: a NetFlow probe. Version %s\n" + "Usage: fprobe-ulog [options] remote:port[/[local][/type]] ...\n" + "\n" + "-h\t\tDisplay this help\n" + "-U \tULOG group bitwise mask [1]\n" + "-s \tHow often scan for expired flows [5]\n" + "-g \tFragmented flow lifetime [30]\n" + "-d \tIdle flow lifetime (inactive timer) [60]\n" + "-e \tActive flow lifetime (active timer) [300]\n" + "-n \tNetFlow version for use (1, 5 or 7) [5]\n" + "-a
\tUse
as source for NetFlow flow\n" + "-X \tInterface name to SNMP-index conversion rules\n" + "-M\t\tUse netfilter mark value as ToS flag\n" + "-b \tMemory bulk size (1..%u) [%u]\n" + "-m \tMemory limit (0=no limit) [0]\n" + "-q \tPending queue length [100]\n" + "-B \tKernel capture buffer size [0]\n" + "-r \tReal-time priority (0=disabled, %d..%d) [0]\n" + "-t \tProduce nanosecond delay after each bytes sent [0:0]\n" + "-c \tDirectory to chroot to\n" + "-u \tUser to run as\n" + "-v \tMaximum log level (0=EMERG, ..., 6=INFO, 7=DEBUG) [6]\n" + "-l <[dst][:id]>\tLog destination and log/pidfile idetifier [1]\n" + "remote:port\tAddress of the NetFlow collector\n", + VERSION, BULK_QUANTITY_MAX, bulk_quantity, sched_min, sched_max); + exit(0); +} + +#if ((DEBUG) & DEBUG_I) +void info_debug() +{ + my_log(LOG_DEBUG, "I: received:%d/%d (%lld) pending:%d/%d", + pkts_total, pkts_total_fragmented, size_total, + pkts_pending - pkts_pending_done, pending_queue_trace); + my_log(LOG_DEBUG, "I: ignored:%d lost:%d+%d", + pkts_ignored, pkts_lost_capture, pkts_lost_unpending); + my_log(LOG_DEBUG, "I: cache:%d/%d emit:%d/%d/%d", + flows_total, flows_fragmented, emit_sequence, emit_pkts, emit_queue); + my_log(LOG_DEBUG, "I: memory:%d/%d (%d)", + total_elements, free_elements, total_memory); +} +#endif + +void sighandler(int sig) +{ + switch (sig) { + case SIGTERM: + sigs |= SIGTERM_MASK; + break; +#if ((DEBUG) & DEBUG_I) + case SIGUSR1: + sigs |= SIGUSR1_MASK; + break; +#endif + } +} + +void gettime(struct Time *now) +{ + struct timeval t; + + gettimeofday(&t, 0); + now->sec = t.tv_sec; + now->usec = t.tv_usec; +} + +inline time_t cmpmtime(struct Time *t1, struct Time *t2) +{ + return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; +} + +/* Uptime in miliseconds */ +uint32_t getuptime(struct Time *t) +{ + /* Maximum uptime is about 49/2 days */ + return cmpmtime(t, &start_time); +} + +hash_t hash_flow(struct Flow *flow) +{ + if (flow->flags & FLOW_FRAG) return hash(flow, sizeof(struct Flow_F)); + else return hash(flow, sizeof(struct Flow_TL)); +} + +uint16_t snmp_index(char *name) { + uint32_t i; + + if (!*name) return 0; + + for (i = 0; (int) i < nsnmp_rules; i++) { + if (strncmp(snmp_rules[i].basename, name, snmp_rules[i].len)) continue; + return atoi(&name[snmp_rules[i].len]) + snmp_rules[i].base; + } + + if ((i = if_nametoindex(name))) return i; + + return -1; +} + +inline void copy_flow(struct Flow *src, struct Flow *dst) +{ + dst->iif = src->iif; + dst->oif = src->oif; + dst->sip = src->sip; + dst->dip = src->dip; + dst->tos = src->tos; + dst->proto = src->proto; + dst->tcp_flags = src->tcp_flags; + dst->id = src->id; + dst->sp = src->sp; + dst->dp = src->dp; + dst->pkts = src->pkts; + dst->size = src->size; + dst->sizeF = src->sizeF; + dst->sizeP = src->sizeP; + dst->ctime = src->ctime; + dst->mtime = src->mtime; + dst->flags = src->flags; +} + +struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev) +{ + struct Flow **flowpp; + +#ifdef WALL + flowpp = 0; +#endif + + if (prev) flowpp = *prev; + + while (where) { + if (where->sip.s_addr == what->sip.s_addr + && where->dip.s_addr == what->dip.s_addr + && where->proto == what->proto) { + switch ((what->flags + where->flags) & FLOW_FRAGMASK) { + case 0: + /* Both unfragmented */ + if ((what->sp == where->sp) + && (what->dp == where->dp)) goto done; + break; + case 2: + /* Both fragmented */ + if (where->id == what->id) goto done; + break; + } + } + flowpp = &where->next; + where = where->next; + } +done: + if (prev) *prev = flowpp; + return where; +} + +int put_into(struct Flow *flow, int flag +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , char *logbuf +#endif +) +{ + int ret = 0; + hash_t h; + struct Flow *flown, **flowpp; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char buf[64]; +#endif + + h = hash_flow(flow); +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " %x H:%04x", (unsigned) flow, h); + strcat(logbuf, buf); +#endif + pthread_mutex_lock(&flows_mutex[h]); + flowpp = &flows[h]; + if (!(flown = find(flows[h], flow, &flowpp))) { + /* No suitable flow found - add */ + if (flag == COPY_INTO) { + if ((flown = mem_alloc())) { + copy_flow(flow, flown); + flow = flown; + } else { +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) || defined MESSAGES + my_log(LOG_ERR, "%s %s. %s", + "mem_alloc():", strerror(errno), "packet lost"); +#endif + return -1; + } + } + flow->next = flows[h]; + flows[h] = flow; +#if ((DEBUG) & DEBUG_I) + flows_total++; + if (flow->flags & FLOW_FRAG) flows_fragmented++; +#endif +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + if (flown) { + sprintf(buf, " => %x, flags: %x", (unsigned) flown, flown->flags); + strcat(logbuf, buf); + } +#endif + } else { + /* Found suitable flow - update */ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " +> %x", (unsigned) flown); + strcat(logbuf, buf); +#endif + if (cmpmtime(&flow->mtime, &flown->mtime) > 0) + flown->mtime = flow->mtime; + if (cmpmtime(&flow->ctime, &flown->ctime) < 0) + flown->ctime = flow->ctime; + flown->tcp_flags |= flow->tcp_flags; + flown->size += flow->size; + flown->pkts += flow->pkts; + if (flow->flags & FLOW_FRAG) { + /* Fragmented flow require some additional work */ + if (flow->flags & FLOW_TL) { + /* + ?FIXME? + Several packets with FLOW_TL (attack) + */ + flown->sp = flow->sp; + flown->dp = flow->dp; + } + if (flow->flags & FLOW_LASTFRAG) { + /* + ?FIXME? + Several packets with FLOW_LASTFRAG (attack) + */ + flown->sizeP = flow->sizeP; + } + flown->flags |= flow->flags; + flown->sizeF += flow->sizeF; + if ((flown->flags & FLOW_LASTFRAG) + && (flown->sizeF >= flown->sizeP)) { + /* All fragments received - flow reassembled */ + *flowpp = flown->next; + pthread_mutex_unlock(&flows_mutex[h]); +#if ((DEBUG) & DEBUG_I) + flows_total--; + flows_fragmented--; +#endif + flown->id = 0; + flown->flags &= ~FLOW_FRAG; +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + strcat(logbuf," R"); +#endif + ret = put_into(flown, MOVE_INTO +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + , logbuf +#endif + ); + } + } + if (flag == MOVE_INTO) mem_free(flow); + } + pthread_mutex_unlock(&flows_mutex[h]); + return ret; +} + +void *fill(int fields, uint16_t *format, struct Flow *flow, void *p) +{ + int i; + + for (i = 0; i < fields; i++) { +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: field %04d at %x", format[i], (unsigned) p); +#endif + switch (format[i]) { + case NETFLOW_IPV4_SRC_ADDR: + ((struct in_addr *) p)->s_addr = flow->sip.s_addr; + p += NETFLOW_IPV4_SRC_ADDR_SIZE; + break; + + case NETFLOW_IPV4_DST_ADDR: + ((struct in_addr *) p)->s_addr = flow->dip.s_addr; + p += NETFLOW_IPV4_DST_ADDR_SIZE; + break; + + case NETFLOW_INPUT_SNMP: + *((uint16_t *) p) = htons(flow->iif); + p += NETFLOW_INPUT_SNMP_SIZE; + break; + + case NETFLOW_OUTPUT_SNMP: + *((uint16_t *) p) = htons(flow->oif); + p += NETFLOW_OUTPUT_SNMP_SIZE; + break; + + case NETFLOW_PKTS_32: + *((uint32_t *) p) = htonl(flow->pkts); + p += NETFLOW_PKTS_32_SIZE; + break; + + case NETFLOW_BYTES_32: + *((uint32_t *) p) = htonl(flow->size); + p += NETFLOW_BYTES_32_SIZE; + break; + + case NETFLOW_FIRST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->ctime)); + p += NETFLOW_FIRST_SWITCHED_SIZE; + break; + + case NETFLOW_LAST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->mtime)); + p += NETFLOW_LAST_SWITCHED_SIZE; + break; + + case NETFLOW_L4_SRC_PORT: + *((uint16_t *) p) = flow->sp; + p += NETFLOW_L4_SRC_PORT_SIZE; + break; + + case NETFLOW_L4_DST_PORT: + *((uint16_t *) p) = flow->dp; + p += NETFLOW_L4_DST_PORT_SIZE; + break; + + case NETFLOW_PROT: + *((uint8_t *) p) = flow->proto; + p += NETFLOW_PROT_SIZE; + break; + + case NETFLOW_SRC_TOS: + *((uint8_t *) p) = flow->tos; + p += NETFLOW_SRC_TOS_SIZE; + break; + + case NETFLOW_TCP_FLAGS: + *((uint8_t *) p) = flow->tcp_flags; + p += NETFLOW_TCP_FLAGS_SIZE; + break; + + case NETFLOW_VERSION: + *((uint16_t *) p) = htons(netflow->Version); + p += NETFLOW_VERSION_SIZE; + break; + + case NETFLOW_COUNT: + *((uint16_t *) p) = htons(emit_count); + p += NETFLOW_COUNT_SIZE; + break; + + case NETFLOW_UPTIME: + *((uint32_t *) p) = htonl(getuptime(&emit_time)); + p += NETFLOW_UPTIME_SIZE; + break; + + case NETFLOW_UNIX_SECS: + *((uint32_t *) p) = htonl(emit_time.sec); + p += NETFLOW_UNIX_SECS_SIZE; + break; + + case NETFLOW_UNIX_NSECS: + *((uint32_t *) p) = htonl(emit_time.usec * 1000); + p += NETFLOW_UNIX_NSECS_SIZE; + break; + + case NETFLOW_FLOW_SEQUENCE: + //*((uint32_t *) p) = htonl(emit_sequence); + *((uint32_t *) p) = 0; + p += NETFLOW_FLOW_SEQUENCE_SIZE; + break; + + case NETFLOW_PAD8: + /* Unsupported (uint8_t) */ + case NETFLOW_ENGINE_TYPE: + case NETFLOW_ENGINE_ID: + case NETFLOW_FLAGS7_1: + case NETFLOW_SRC_MASK: + case NETFLOW_DST_MASK: + *((uint8_t *) p) = 0; + p += NETFLOW_PAD8_SIZE; + break; + + case NETFLOW_PAD16: + /* Unsupported (uint16_t) */ + case NETFLOW_SRC_AS: + case NETFLOW_DST_AS: + case NETFLOW_FLAGS7_2: + *((uint16_t *) p) = 0; + p += NETFLOW_PAD16_SIZE; + break; + + case NETFLOW_PAD32: + /* Unsupported (uint32_t) */ + case NETFLOW_IPV4_NEXT_HOP: + case NETFLOW_ROUTER_SC: + *((uint32_t *) p) = 0; + p += NETFLOW_PAD32_SIZE; + break; + + default: + my_log(LOG_CRIT, "fill(): Unknown format at %x[%d]: %d", + format, i, format[i]); + exit(1); + } + } +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: return %x", (unsigned) p); +#endif + return p; +} + +void setuser() { + /* + Workaround for clone()-based threads + Try to change EUID independently of main thread + */ + if (pw) { + setgroups(0, NULL); + setregid(pw->pw_gid, pw->pw_gid); + setreuid(pw->pw_uid, pw->pw_uid); + } +} + +void *emit_thread() +{ + struct Flow *flow; + void *p; + struct timeval now; + struct timespec timeout; + int i, ret, sent = 0, size, delay, peer_rot_cur, peer_rot_work = 0; + + p = (void *) &emit_packet + netflow->HeaderSize; + timeout.tv_nsec = 0; + + setuser(); + + for (;;) { + pthread_mutex_lock(&emit_mutex); + while (!flows_emit) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + emit_timeout; + /* Do not wait until emit_packet will filled - it may be too long */ + if (pthread_cond_timedwait(&emit_cond, &emit_mutex, &timeout) && emit_count) { + pthread_mutex_unlock(&emit_mutex); + goto sendit; + } + } + flow = flows_emit; + flows_emit = flows_emit->next; +#if ((DEBUG) & DEBUG_I) + emit_queue--; +#endif + pthread_mutex_unlock(&emit_mutex); + +#ifdef UPTIME_TRICK + if (!emit_count) { + gettime(&start_time); + start_time.sec -= start_time_offset; + } +#endif + p = fill(netflow->FlowFields, netflow->FlowFormat, flow, p); + mem_free(flow); + emit_count++; + if (emit_count == netflow->MaxFlows) { + sendit: + gettime(&emit_time); + p = fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); + size = netflow->HeaderSize + emit_count * netflow->FlowSize; + peer_rot_cur = 0; + for (i = 0; i < npeers; i++) { + if (peers[i].type == PEER_MIRROR) goto sendreal; + if (peers[i].type == PEER_ROTATE) + if (peer_rot_cur++ == peer_rot_work) { + sendreal: + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[i].seq); + ret = send(peers[i].sock, emit_packet, size, 0); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "send(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[i].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + } + if (npeers_rot) peer_rot_work = (peer_rot_work + 1) % npeers_rot; + emit_sequence += emit_count; + emit_count = 0; +#if ((DEBUG) & DEBUG_I) + emit_pkts++; +#endif + } + } +} + +void *unpending_thread() +{ + struct timeval now; + struct timespec timeout; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&unpending_mutex); + + for (;;) { + while (!(pending_tail->flags & FLOW_PENDING)) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + unpending_timeout; + pthread_cond_timedwait(&unpending_cond, &unpending_mutex, &timeout); + } + +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + if (put_into(pending_tail, COPY_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ) < 0) { +#if ((DEBUG) & DEBUG_I) + pkts_lost_unpending++; +#endif + } + +#if ((DEBUG) & DEBUG_U) + my_log(LOG_DEBUG, "%s%s", "U:", logbuf); +#endif + + pending_tail->flags = 0; + pending_tail = pending_tail->next; +#if ((DEBUG) & DEBUG_I) + pkts_pending_done++; +#endif + } +} + +void *scan_thread() +{ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + int i; + struct Flow *flow, **flowpp; + struct Time now; + struct timespec timeout; + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&scan_mutex); + + for (;;) { + gettime(&now); + timeout.tv_sec = now.sec + scan_interval; + pthread_cond_timedwait(&scan_cond, &scan_mutex, &timeout); + + gettime(&now); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: %d", now.sec); +#endif + for (i = 0; i < 1 << HASH_BITS ; i++) { + pthread_mutex_lock(&flows_mutex[i]); + flow = flows[i]; + flowpp = &flows[i]; + while (flow) { + if (flow->flags & FLOW_FRAG) { + /* Process fragmented flow */ + if ((now.sec - flow->mtime.sec) > frag_lifetime) { + /* Fragmented flow expired - put it into special chain */ +#if ((DEBUG) & DEBUG_I) + flows_fragmented--; + flows_total--; +#endif + *flowpp = flow->next; + flow->id = 0; + flow->flags &= ~FLOW_FRAG; + flow->next = scan_frag_dreg; + scan_frag_dreg = flow; + flow = *flowpp; + continue; + } + } else { + /* Flow is not frgamented */ + if ((now.sec - flow->mtime.sec) > inactive_lifetime + || (flow->mtime.sec - flow->ctime.sec) > active_lifetime) { + /* Flow expired */ +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: E %x", flow); +#endif +#if ((DEBUG) & DEBUG_I) + flows_total--; +#endif + *flowpp = flow->next; + pthread_mutex_lock(&emit_mutex); + flow->next = flows_emit; + flows_emit = flow; +#if ((DEBUG) & DEBUG_I) + emit_queue++; +#endif + pthread_mutex_unlock(&emit_mutex); + flow = *flowpp; + continue; + } + } + flowpp = &flow->next; + flow = flow->next; + } /* chain loop */ + pthread_mutex_unlock(&flows_mutex[i]); + } /* hash loop */ + if (flows_emit) pthread_cond_signal(&emit_cond); + + while (scan_frag_dreg) { + flow = scan_frag_dreg; + scan_frag_dreg = flow->next; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + put_into(flow, MOVE_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "%s%s", "S: FE", logbuf); +#endif + } + } +} + +void *cap_thread() +{ + struct ulog_packet_msg *ulog_msg; + struct ip *nl; + void *tl; + struct Flow *flow; + int len, off_frag, psize; +#if ((DEBUG) & DEBUG_C) + char buf[64]; + char logbuf[256]; +#endif + + setuser(); + + while (!killed) { + len = ipulog_read(ulog_handle, cap_buf, CAPTURE_SIZE, 1); + if (len <= 0) { + my_log(LOG_ERR, "ipulog_read(): %s", ipulog_strerror(ipulog_errno)); + continue; + } + while ((ulog_msg = ipulog_get_packet(ulog_handle, cap_buf, len))) { + +#if ((DEBUG) & DEBUG_C) + sprintf(logbuf, "C: %d", ulog_msg->data_len); +#endif + + nl = (void *) &ulog_msg->payload; + psize = ulog_msg->data_len; + + /* Sanity check */ + if (psize < (signed) sizeof(struct ip) || nl->ip_v != 4) { +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); + my_log(LOG_DEBUG, "%s", logbuf); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_ignored++; +#endif + continue; + } + + if (pending_head->flags) { +#if ((DEBUG) & DEBUG_C) || defined MESSAGES + my_log(LOG_ERR, +# if ((DEBUG) & DEBUG_C) + "%s %s %s", logbuf, +# else + "%s %s", +# endif + "pending queue full:", "packet lost"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_lost_capture++; +#endif + goto done; + } + +#if ((DEBUG) & DEBUG_I) + pkts_total++; +#endif + + flow = pending_head; + + /* ?FIXME? Add sanity check for ip_len? */ + flow->size = ntohs(nl->ip_len); +#if ((DEBUG) & DEBUG_I) + size_total += flow->size; +#endif + + flow->sip = nl->ip_src; + flow->dip = nl->ip_dst; + flow->iif = snmp_index(ulog_msg->indev_name); + flow->oif = snmp_index(ulog_msg->outdev_name); + flow->tos = mark_is_tos ? ulog_msg->mark : nl->ip_tos; + flow->proto = nl->ip_p; + flow->id = 0; + flow->tcp_flags = 0; + flow->pkts = 1; + flow->sizeF = 0; + flow->sizeP = 0; + /* Packets captured from OUTPUT table didn't contains valid timestamp */ + if (ulog_msg->timestamp_sec) { + flow->ctime.sec = ulog_msg->timestamp_sec; + flow->ctime.usec = ulog_msg->timestamp_usec; + } else gettime(&flow->ctime); + flow->mtime = flow->ctime; + + off_frag = (ntohs(nl->ip_off) & IP_OFFMASK) << 3; + + /* + Offset (from network layer) to transport layer header/IP data + IOW IP header size ;-) + + ?FIXME? + Check ip_hl for valid value (>=5)? Maybe check CRC? No, thanks... + */ + off_tl = nl->ip_hl << 2; + tl = (void *) nl + off_tl; + + /* THIS packet data size: data_size = total_size - ip_header_size*4 */ + flow->sizeF = ntohs(nl->ip_len) - off_tl; + psize -= off_tl; + if ((signed) flow->sizeF < 0) flow->sizeF = 0; + if (psize > (signed) flow->sizeF) psize = flow->sizeF; + + if (ntohs(nl->ip_off) & (IP_MF | IP_OFFMASK)) { + /* Fragmented packet (IP_MF flag == 1 or fragment offset != 0) */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " F"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_total_fragmented++; +#endif + flow->flags |= FLOW_FRAG; + flow->id = nl->ip_id; + + if (!(ntohs(nl->ip_off) & IP_MF)) { + /* Packet whith IP_MF contains information about whole datagram size */ + flow->flags |= FLOW_LASTFRAG; + /* size = frag_offset*8 + data_size */ + flow->sizeP = off_frag + flow->sizeF; + } + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %s@%u>", inet_ntoa(flow->sip), flow->iif); + strcat(logbuf, buf); + sprintf(buf, "%s@%u P:%x", inet_ntoa(flow->dip), flow->oif, flow->proto); + strcat(logbuf, buf); +#endif + + /* + Fortunately most interesting transport layer information fit + into first 8 bytes of IP data field (minimal nonzero size). + Thus we don't need actual packet reassembling to build whole + transport layer data. We only check the fragment offset for + zero value to find packet with this information. + */ + if (!off_frag && psize >= 8) { + switch (flow->proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + flow->sp = ((struct udphdr *)tl)->uh_sport; + flow->dp = ((struct udphdr *)tl)->uh_dport; + goto tl_known; + +#ifdef ICMP_TRICK + case IPPROTO_ICMP: + flow->sp = htons(((struct icmp *)tl)->icmp_type); + flow->dp = htons(((struct icmp *)tl)->icmp_code); + goto tl_known; +#endif +#ifdef ICMP_TRICK_CISCO + case IPPROTO_ICMP: + flow->dp = *((int32_t *) tl); + goto tl_known; +#endif + + default: + /* Unknown transport layer */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); +#endif + flow->sp = 0; + flow->dp = 0; + break; + + tl_known: +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %d>%d", ntohs(flow->sp), ntohs(flow->dp)); + strcat(logbuf, buf); +#endif + flow->flags |= FLOW_TL; + } + } + + /* Check for tcp flags presence (including CWR and ECE). */ + if (flow->proto == IPPROTO_TCP + && off_frag < 16 + && psize >= 16 - off_frag) { + flow->tcp_flags = *((uint8_t *)(tl + 13 - off_frag)); +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " TCP:%x", flow->tcp_flags); + strcat(logbuf, buf); +#endif + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " => %x", (unsigned) flow); + strcat(logbuf, buf); + my_log(LOG_DEBUG, "%s", logbuf); +#endif + +#if ((DEBUG) & DEBUG_I) + pkts_pending++; + pending_queue_trace_candidate = pkts_pending - pkts_pending_done; + if (pending_queue_trace < pending_queue_trace_candidate) + pending_queue_trace = pending_queue_trace_candidate; +#endif + + /* Flow complete - inform unpending_thread() about it */ + pending_head->flags |= FLOW_PENDING; + pending_head = pending_head->next; + done: + pthread_cond_signal(&unpending_cond); + } + } + return 0; +} + +int main(int argc, char **argv) +{ + char errpbuf[512]; + char *dhost, *dport, *lhost, *type = 0, *log_suffix = 0, *rule; + int c, i, sock, memory_limit = 0; + struct addrinfo hints, *res; + struct sockaddr_in saddr; + pthread_attr_t tattr; + struct sigaction sigact; + static void *threads[THREADS - 1] = {&emit_thread, &scan_thread, &unpending_thread, &cap_thread}; + struct timeval timeout; + + sched_min = sched_get_priority_min(SCHED); + sched_max = sched_get_priority_max(SCHED); + + memset(&saddr, 0 , sizeof(saddr)); + memset(&hints, 0 , sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + /* Process command line options */ + + opterr = 0; + while ((c = my_getopt(argc, argv, parms)) != -1) { + switch (c) { + case '?': + usage(); + + case 'h': + usage(); + } + } + + if (parms[Uflag].count) ulog_gmask = atoi(parms[Uflag].arg); + if (parms[sflag].count) scan_interval = atoi(parms[sflag].arg); + if (parms[gflag].count) frag_lifetime = atoi(parms[gflag].arg); + if (parms[dflag].count) inactive_lifetime = atoi(parms[dflag].arg); + if (parms[eflag].count) active_lifetime = atoi(parms[eflag].arg); + if (parms[nflag].count) { + switch (atoi(parms[nflag].arg)) { + case 1: + netflow = &NetFlow1; + break; + + case 5: + break; + + case 7: + netflow = &NetFlow7; + break; + + default: + fprintf(stderr, "Illegal %s\n", "NetFlow version"); + exit(1); + } + } + if (parms[vflag].count) verbosity = atoi(parms[vflag].arg); + if (parms[lflag].count) { + if ((log_suffix = strchr(parms[lflag].arg, ':'))) { + *log_suffix++ = 0; + if (*log_suffix) { + sprintf(errpbuf, "[%s]", log_suffix); + strcat(ident, errpbuf); + } + } + if (*parms[lflag].arg) log_dest = atoi(parms[lflag].arg); + if (log_suffix) *--log_suffix = ':'; + } + if (!(pidfilepath = malloc(sizeof(PID_DIR) + 1 + strlen(ident) + 1 + 3 + 1))) { + err_malloc: + fprintf(stderr, "malloc(): %s\n", strerror(errno)); + exit(1); + } + sprintf(pidfilepath, "%s/%s.pid", PID_DIR, ident); + if (parms[qflag].count) { + pending_queue_length = atoi(parms[qflag].arg); + if (pending_queue_length < 1) { + fprintf(stderr, "Illegal %s\n", "pending queue length"); + exit(1); + } + } + if (parms[rflag].count) { + schedp.sched_priority = atoi(parms[rflag].arg); + if (schedp.sched_priority + && (schedp.sched_priority < sched_min + || schedp.sched_priority > sched_max)) { + fprintf(stderr, "Illegal %s\n", "realtime priority"); + exit(1); + } + } + if (parms[Bflag].count) { + sockbufsize = atoi(parms[Bflag].arg) << 10; + } + if (parms[bflag].count) { + bulk_quantity = atoi(parms[bflag].arg); + if (bulk_quantity < 1 || bulk_quantity > BULK_QUANTITY_MAX) { + fprintf(stderr, "Illegal %s\n", "bulk size"); + exit(1); + } + } + if (parms[mflag].count) memory_limit = atoi(parms[mflag].arg) << 10; + if (parms[Xflag].count) { + for(i = 0; parms[Xflag].arg[i]; i++) + if (parms[Xflag].arg[i] == ':') nsnmp_rules++; + if (!(snmp_rules = malloc(nsnmp_rules * sizeof(struct snmp_rule)))) + goto err_malloc; + rule = strtok(parms[Xflag].arg, ":"); + for (i = 0; rule; i++) { + snmp_rules[i].len = strlen(rule); + if (snmp_rules[i].len > IFNAMSIZ) { + fprintf(stderr, "Illegal %s\n", "interface basename"); + exit(1); + } + strncpy(snmp_rules[i].basename, rule, snmp_rules[i].len); + if (!*(rule - 1)) *(rule - 1) = ','; + rule = strtok(NULL, ","); + if (!rule) { + fprintf(stderr, "Illegal %s\n", "SNMP rule"); + exit(1); + } + snmp_rules[i].base = atoi(rule); + *(rule - 1) = ':'; + rule = strtok(NULL, ":"); + } + nsnmp_rules = i; + } + if (parms[tflag].count) + sscanf(parms[tflag].arg, "%d:%d", &emit_rate_bytes, &emit_rate_delay); + if (parms[aflag].count) { + if (getaddrinfo(parms[aflag].arg, 0, &hints, &res)) { + bad_lhost: + fprintf(stderr, "Illegal %s\n", "source address"); + exit(1); + } else { + saddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (parms[uflag].count) + if ((pw = getpwnam(parms[uflag].arg)) == NULL) { + fprintf(stderr, "getpwnam(%s): %s\n", parms[uflag].arg, errno ? strerror(errno) : "Unknown user"); + exit(1); + } + + + /* Process collectors parameters. Brrrr... :-[ */ + + npeers = argc - optind; + if (npeers < 1) usage(); + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + for (i = optind, npeers = 0; i < argc; i++, npeers++) { + dhost = argv[i]; + if (!(dport = strchr(dhost, ':'))) goto bad_collector; + *dport++ = 0; + if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + fprintf(stderr, "socket(): %s\n", strerror(errno)); + exit(1); + } + peers[npeers].sock = sock; + peers[npeers].type = PEER_MIRROR; + peers[npeers].laddr = saddr; + peers[npeers].seq = 0; + if ((lhost = strchr(dport, '/'))) { + *lhost++ = 0; + if ((type = strchr(lhost, '/'))) { + *type++ = 0; + switch (*type) { + case 0: + case 'm': + break; + + case 'r': + peers[npeers].type = PEER_ROTATE; + npeers_rot++; + break; + + default: + goto bad_collector; + } + } + if (*lhost) { + if (getaddrinfo(lhost, 0, &hints, &res)) goto bad_lhost; + peers[npeers].laddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (bind(sock, (struct sockaddr *) &peers[npeers].laddr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "bind(): %s\n", strerror(errno)); + exit(1); + } + if (getaddrinfo(dhost, dport, &hints, &res)) { + bad_collector: + fprintf(stderr, "Error in collector #%d parameters\n", npeers + 1); + exit(1); + } + peers[npeers].addr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + if (connect(sock, (struct sockaddr *) &peers[npeers].addr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "connect(): %s\n", strerror(errno)); + exit(1); + } + + /* Restore command line */ + if (type) *--type = '/'; + if (lhost) *--lhost = '/'; + *--dport = ':'; + } + + if (!(cap_buf = malloc(CAPTURE_SIZE))) goto err_malloc; + ulog_handle = ipulog_create_handle(ulog_gmask, CAPTURE_SIZE); + if (!ulog_handle) { + fprintf(stderr, "libipulog initialization error: %s", + ipulog_strerror(ipulog_errno)); + exit(1); + } + if (sockbufsize) + if (setsockopt(ulog_handle->fd, SOL_SOCKET, SO_RCVBUF, + &sockbufsize, sizeof(sockbufsize)) < 0) + fprintf(stderr, "setsockopt(): %s", strerror(errno)); + + /* Daemonize (if log destination stdout-free) */ + + my_log_open(ident, verbosity, log_dest); + if (!(log_dest & 2)) { + switch (fork()) { + case -1: + fprintf(stderr, "fork(): %s", strerror(errno)); + exit(1); + + case 0: + setsid(); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); + break; + + default: + exit(0); + } + } else { + setvbuf(stdout, (char *)0, _IONBF, 0); + setvbuf(stderr, (char *)0, _IONBF, 0); + } + + pid = getpid(); + sprintf(errpbuf, "[%ld]", (long) pid); + strcat(ident, errpbuf); + + /* Initialization */ + + hash_init(); /* Actually for crc16 only */ + mem_init(sizeof(struct Flow), bulk_quantity, memory_limit); + for (i = 0; i < 1 << HASH_BITS; i++) pthread_mutex_init(&flows_mutex[i], 0); + +#ifdef UPTIME_TRICK + /* Hope 12 days is enough :-/ */ + start_time_offset = 1 << 20; + + /* start_time_offset = active_lifetime + inactive_lifetime + scan_interval; */ +#endif + gettime(&start_time); + + /* + Build static pending queue as circular buffer. + */ + if (!(pending_head = mem_alloc())) goto err_mem_alloc; + pending_tail = pending_head; + for (i = pending_queue_length - 1; i--;) { + if (!(pending_tail->next = mem_alloc())) { + err_mem_alloc: + my_log(LOG_CRIT, "mem_alloc(): %s", strerror(errno)); + exit(1); + } + pending_tail = pending_tail->next; + } + pending_tail->next = pending_head; + pending_tail = pending_head; + + sigemptyset(&sig_mask); + sigact.sa_handler = &sighandler; + sigact.sa_mask = sig_mask; + sigact.sa_flags = 0; + sigaddset(&sig_mask, SIGTERM); + sigaction(SIGTERM, &sigact, 0); +#if ((DEBUG) & DEBUG_I) + sigaddset(&sig_mask, SIGUSR1); + sigaction(SIGUSR1, &sigact, 0); +#endif + if (pthread_sigmask(SIG_BLOCK, &sig_mask, 0)) { + my_log(LOG_CRIT, "pthread_sigmask(): %s", strerror(errno)); + exit(1); + } + + my_log(LOG_INFO, "Starting %s...", VERSION); + + if (parms[cflag].count) { + if (chdir(parms[cflag].arg) || chroot(".")) { + my_log(LOG_CRIT, "could not chroot to %s: %s", parms[cflag].arg, strerror(errno)); + exit(1); + } + } + + schedp.sched_priority = schedp.sched_priority - THREADS + 2; + pthread_attr_init(&tattr); + for (i = 0; i < THREADS - 1; i++) { + if (schedp.sched_priority > 0) { + if ((pthread_attr_setschedpolicy(&tattr, SCHED)) || + (pthread_attr_setschedparam(&tattr, &schedp))) { + my_log(LOG_CRIT, "pthread_attr_setschedpolicy(): %s", strerror(errno)); + exit(1); + } + } + if (pthread_create(&thid, &tattr, threads[i], 0)) { + my_log(LOG_CRIT, "pthread_create(): %s", strerror(errno)); + exit(1); + } + pthread_detach(thid); + schedp.sched_priority++; + } + + if (pw) { + if (setgroups(0, NULL)) { + my_log(LOG_CRIT, "setgroups(): %s", strerror(errno)); + exit(1); + } + if (setregid(pw->pw_gid, pw->pw_gid)) { + my_log(LOG_CRIT, "setregid(%u): %s", pw->pw_gid, strerror(errno)); + exit(1); + } + if (setreuid(pw->pw_uid, pw->pw_uid)) { + my_log(LOG_CRIT, "setreuid(%u): %s", pw->pw_uid, strerror(errno)); + exit(1); + } + } + + if (!(pidfile = fopen(pidfilepath, "w"))) + my_log(LOG_ERR, "Can't create pid file. fopen(): %s", strerror(errno)); + else { + fprintf(pidfile, "%ld\n", (long) pid); + fclose(pidfile); + } + + my_log(LOG_INFO, "pid: %d", pid); + my_log(LOG_INFO, "options: u=%u s=%u g=%u d=%u e=%u n=%u a=%s " + "M=%d b=%u m=%u q=%u B=%u r=%u t=%u:%u c=%s u=%s v=%u l=%u%s", + ulog_gmask, scan_interval, frag_lifetime, inactive_lifetime, active_lifetime, + netflow->Version, inet_ntoa(saddr.sin_addr), mark_is_tos, bulk_quantity, + memory_limit >> 10, pending_queue_length, sockbufsize >> 10, schedp.sched_priority - 1, + emit_rate_bytes, emit_rate_delay, parms[cflag].count ? parms[cflag].arg : "", + parms[uflag].count ? parms[uflag].arg : "", verbosity, log_dest, log_suffix ? log_suffix : ""); + for (i = 0; i < nsnmp_rules; i++) { + my_log(LOG_INFO, "SNMP rule #%d %s:%d", + i + 1, snmp_rules[i].basename, snmp_rules[i].base); + } + for (i = 0; i < npeers; i++) { + switch (peers[i].type) { + case PEER_MIRROR: + c = 'm'; + break; + case PEER_ROTATE: + c = 'r'; + break; + } + snprintf(errpbuf, sizeof(errpbuf), "%s", inet_ntoa(peers[i].laddr.sin_addr)); + my_log(LOG_INFO,"collector #%d: %s:%u/%s/%c", i + 1, + inet_ntoa(peers[i].addr.sin_addr), ntohs(peers[i].addr.sin_port), errpbuf, c); + } + + pthread_sigmask(SIG_UNBLOCK, &sig_mask, 0); + + timeout.tv_usec = 0; + while (!killed + || (total_elements - free_elements - pending_queue_length) + || emit_count + || pending_tail->flags) { + + if (!sigs) { + timeout.tv_sec = scan_interval; + select(0, 0, 0, 0, &timeout); + } + + if (sigs & SIGTERM_MASK && !killed) { + sigs &= ~SIGTERM_MASK; + my_log(LOG_INFO, "SIGTERM received. Emitting flows cache..."); + scan_interval = 1; + frag_lifetime = -1; + active_lifetime = -1; + inactive_lifetime = -1; + emit_timeout = 1; + unpending_timeout = 1; + killed = 1; + pthread_cond_signal(&scan_cond); + pthread_cond_signal(&unpending_cond); + } + +#if ((DEBUG) & DEBUG_I) + if (sigs & SIGUSR1_MASK) { + sigs &= ~SIGUSR1_MASK; + info_debug(); + } +#endif + } + remove(pidfilepath); +#if ((DEBUG) & DEBUG_I) + info_debug(); +#endif + my_log(LOG_INFO, "Done."); +#ifdef WALL + return 0; +#endif +} diff --git a/src/fprobe-ulog.h b/src/fprobe-ulog.h new file mode 100644 index 0000000..0d812c5 --- /dev/null +++ b/src/fprobe-ulog.h @@ -0,0 +1,131 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.h,v 1.1.2.3 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _FPROBE_ULOG_H_ +#define _FPROBE_ULOG_H_ + +#include + +#ifndef IP_OFFMASK +#define IP_OFFMASK 0x1fff +#endif + +#define SCHED SCHED_FIFO +#define EMIT_TIMEOUT 5 +#define UNPENDING_TIMEOUT 5 +#define CAPTURE_SIZE 131072 +#define THREADS 5 +#define COPY_INTO 0 +#define MOVE_INTO 1 + +struct Time { + time_t sec; + long usec; +}; + +struct Flow { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; + /* ip ToS */ + uint8_t tos; + /* tcp flags */ + uint8_t tcp_flags; + /* number of packets */ + unsigned long pkts; + /* sum of packets sizes */ + unsigned long size; + /* fragment data size (for fragmented packets) */ + unsigned long sizeF; + /* whole packet data size (for fragmented packets) */ + unsigned long sizeP; + /* time of creation/flushing this flow */ + struct Time ctime; + /* time of last modification this flow */ + struct Time mtime; +#define FLOW_FRAG 0x0001 +#define FLOW_FRAGMASK 0x0003 +#define FLOW_TL 0x0004 +#define FLOW_LASTFRAG 0x0008 +#define FLOW_PENDING 0x8000 + int flags; + struct Flow *next; +}; + +struct Flow_F { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; +}; + +struct Flow_TL { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; +}; + +#define SIGALRM_MASK 1 +#define SIGTERM_MASK 2 +#define SIGUSR1_MASK 4 + +struct peer { + int write_fd; + struct sockaddr_in addr; + struct sockaddr_in laddr; + int type; + uint32_t seq; + int fd; +}; + +struct snmp_rule { + char basename[IFNAMSIZ]; + int len; + int base; +} snmp_rule_t; + +#define PEER_MIRROR 0 +#define PEER_ROTATE 1 +#define PEER_FILE 2 + +#endif diff --git a/src/fprobe-ulog.h.old b/src/fprobe-ulog.h.old new file mode 100644 index 0000000..bbfd349 --- /dev/null +++ b/src/fprobe-ulog.h.old @@ -0,0 +1,130 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.h,v 1.1.2.3 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _FPROBE_ULOG_H_ +#define _FPROBE_ULOG_H_ + +#include + +#ifndef IP_OFFMASK +#define IP_OFFMASK 0x1fff +#endif + +#define SCHED SCHED_FIFO +#define EMIT_TIMEOUT 5 +#define UNPENDING_TIMEOUT 5 +#define CAPTURE_SIZE 131072 +#define THREADS 5 +#define COPY_INTO 0 +#define MOVE_INTO 1 + +struct Time { + time_t sec; + long usec; +}; + +struct Flow { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; + /* ip ToS */ + uint8_t tos; + /* tcp flags */ + uint8_t tcp_flags; + /* number of packets */ + unsigned long pkts; + /* sum of packets sizes */ + unsigned long size; + /* fragment data size (for fragmented packets) */ + unsigned long sizeF; + /* whole packet data size (for fragmented packets) */ + unsigned long sizeP; + /* time of creation/flushing this flow */ + struct Time ctime; + /* time of last modification this flow */ + struct Time mtime; +#define FLOW_FRAG 0x0001 +#define FLOW_FRAGMASK 0x0003 +#define FLOW_TL 0x0004 +#define FLOW_LASTFRAG 0x0008 +#define FLOW_PENDING 0x8000 + int flags; + struct Flow *next; +}; + +struct Flow_F { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; +}; + +struct Flow_TL { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; +}; + +#define SIGALRM_MASK 1 +#define SIGTERM_MASK 2 +#define SIGUSR1_MASK 4 + +struct peer { + int sock; + struct sockaddr_in addr; + struct sockaddr_in laddr; + int type; + uint32_t seq; + int fd; +}; + +struct snmp_rule { + char basename[IFNAMSIZ]; + int len; + int base; +} snmp_rule_t; + +#define PEER_MIRROR 0 +#define PEER_ROTATE 1 + +#endif diff --git a/src/hash.c b/src/hash.c new file mode 100644 index 0000000..15a62ed --- /dev/null +++ b/src/hash.c @@ -0,0 +1,94 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: hash.c,v 1.3.2.2.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#include + +#include +#include +#include +#include +#include + +#include + + +#ifdef HASH_TYPE_CRC +static uint16_t crc16_poly; +static uint8_t shuffle_table[256]; +static uint16_t crc16_table[256]; + +uint16_t crc16(uint16_t crc, uint8_t val) +{ + int i; + + crc ^= val << 8; + for (i = 8; i--; ) + crc = crc & 0x8000 ? (crc << 1) ^ crc16_poly : crc << 1; + return crc; +} +#endif + +hash_t hash(void *p, int size) +{ + /* + ?FIXME? + Check for valid size (> 0) + */ + + hash_t hash = 0; + +#if defined HASH_TYPE_XOR && HASH_BITS == 16 + if (size & 1) hash = *((uint8_t *) p++); + size >>= 1; +#endif + + for (;size--;) { +#ifdef HASH_TYPE_XOR + hash ^= *((hash_t *) p++); +# if HASH_BITS == 16 + p++; +# endif +#endif +#ifdef HASH_TYPE_CRC + hash = crc16_table[shuffle_table[*((uint8_t *) p++)] \ + ^ (hash >> 8)] ^ (hash << 8); +#endif + } + return hash; +} + +void hash_init() +{ + +#ifdef HASH_TYPE_CRC + int rnd, i, j, m; + FILE *rnddev; + + if ((rnddev = fopen(RNDDEV, "r"))) { + fcntl(fileno(rnddev), F_SETFL, \ + fcntl(fileno(rnddev), F_GETFL) | O_NONBLOCK); + fread(&rnd, sizeof(rnd), 1, rnddev); + fclose(rnddev); + } + srand(time(NULL) ^ getpid() ^ rnd); + crc16_poly = rand() | 1; + + for (i = 0; i < 256; i++) { + crc16_table[i] = crc16(0, i); + shuffle_table[i] = i; + } + + for (i = 0; i < 256; i++) { + j = (int) (256.0 * rand() / (RAND_MAX + 1.0)); + m = shuffle_table[i]; + shuffle_table[i] = shuffle_table[j]; + shuffle_table[j] = m; + } +#endif +} diff --git a/src/hash.h b/src/hash.h new file mode 100644 index 0000000..31fb325 --- /dev/null +++ b/src/hash.h @@ -0,0 +1,52 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: hash.h,v 1.1.1.1.2.3.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _HASH_H_ +#define _HASH_H_ + +#ifndef HASH_TYPE_XOR +# ifndef HASH_TYPE_CRC +# error HASH_TYPE_XOR or HASH_TYPE_CRC must be defined +# endif +#else +# ifdef HASH_TYPE_CRC +# error HASH_TYPE_XOR or HASH_TYPE_CRC must be defined +# endif +#endif + +#if HASH_BITS != 16 +# ifdef HASH_TYPE_CRC +# error illegal value in HASH_BITS +# endif +# if HASH_BITS != 8 +# error illegal value in HASH_BITS +# endif +#endif + +#include + +#if HASH_BITS == 8 +typedef uint8_t hash_t; +#endif + +#if HASH_BITS == 16 +typedef uint16_t hash_t; +#endif + +#define CRC16_POLY 0x8005 + +#ifndef RNDDEV +# define RNDDEV "/dev/random" +#endif + +uint16_t crc16(uint16_t, uint8_t); +hash_t hash(void *, int); +void hash_init(); + +#endif diff --git a/src/libipulog/Makefile b/src/libipulog/Makefile new file mode 100644 index 0000000..2910065 --- /dev/null +++ b/src/libipulog/Makefile @@ -0,0 +1,378 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# src/libipulog/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +SOURCES = $(libipulog_a_SOURCES) + +srcdir = . +top_srcdir = ../.. + +pkgdatadir = $(datadir)/fprobe-ulog +pkglibdir = $(libdir)/fprobe-ulog +pkgincludedir = $(includedir)/fprobe-ulog +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +target_triplet = i686-pc-linux-gnu +subdir = src/libipulog +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libipulog_a_AR = $(AR) $(ARFLAGS) +libipulog_a_LIBADD = +am_libipulog_a_OBJECTS = libipulog.$(OBJEXT) +libipulog_a_OBJECTS = $(am_libipulog_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libipulog_a_SOURCES) +DIST_SOURCES = $(libipulog_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar +AUTOCONF = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf +AUTOHEADER = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader +AUTOMAKE = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATE = 2007-10-26 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = -lpthread +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo +OBJEXT = o +PACKAGE = fprobe-ulog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 1.1 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/sapan/fprobe-ulog-1.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +INCLUDES = -I$(top_srcdir)/src/libipulog/include +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c +EXTRA_DIST = include/libipulog/libipulog.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libipulog.a: $(libipulog_a_OBJECTS) $(libipulog_a_DEPENDENCIES) + -rm -f libipulog.a + $(libipulog_a_AR) libipulog.a $(libipulog_a_OBJECTS) $(libipulog_a_LIBADD) + $(RANLIB) libipulog.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/include/libipulog + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libipulog/Makefile.am b/src/libipulog/Makefile.am new file mode 100644 index 0000000..67a0b2f --- /dev/null +++ b/src/libipulog/Makefile.am @@ -0,0 +1,6 @@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include + +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c + +EXTRA_DIST = include/libipulog/libipulog.h diff --git a/src/libipulog/Makefile.in b/src/libipulog/Makefile.in new file mode 100644 index 0000000..2a51f48 --- /dev/null +++ b/src/libipulog/Makefile.in @@ -0,0 +1,378 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SOURCES = $(libipulog_a_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/libipulog +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libipulog_a_AR = $(AR) $(ARFLAGS) +libipulog_a_LIBADD = +am_libipulog_a_OBJECTS = libipulog.$(OBJEXT) +libipulog_a_OBJECTS = $(am_libipulog_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libipulog_a_SOURCES) +DIST_SOURCES = $(libipulog_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c +EXTRA_DIST = include/libipulog/libipulog.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libipulog.a: $(libipulog_a_OBJECTS) $(libipulog_a_DEPENDENCIES) + -rm -f libipulog.a + $(libipulog_a_AR) libipulog.a $(libipulog_a_OBJECTS) $(libipulog_a_LIBADD) + $(RANLIB) libipulog.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/include/libipulog + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libipulog/include/libipulog/libipulog.h b/src/libipulog/include/libipulog/libipulog.h new file mode 100644 index 0000000..13796e6 --- /dev/null +++ b/src/libipulog/include/libipulog/libipulog.h @@ -0,0 +1,58 @@ +#ifndef _LIBIPULOG_H +#define _LIBIPULOG_H + +/* $Id: libipulog.h,v 1.1.2.1 2004/08/13 21:03:11 sla Exp $ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* FIXME: glibc sucks */ +#ifndef MSG_TRUNC +#define MSG_TRUNC 0x20 +#endif + +struct ipulog_handle; +extern int ipulog_errno; + +u_int32_t ipulog_group2gmask(u_int32_t group); + +struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, u_int32_t rmem); + +void ipulog_destroy_handle(struct ipulog_handle *h); + +ssize_t ipulog_read(struct ipulog_handle *h, + unsigned char *buf, size_t len, int timeout); + +ulog_packet_msg_t *ipulog_get_packet(struct ipulog_handle *h, + const unsigned char *buf, + size_t len); + +char *ipulog_strerror(int errcode); + +void ipulog_perror(const char *s); + +enum +{ + IPULOG_ERR_NONE = 0, + IPULOG_ERR_IMPL, + IPULOG_ERR_HANDLE, + IPULOG_ERR_SOCKET, + IPULOG_ERR_BIND, + IPULOG_ERR_RECVBUF, + IPULOG_ERR_RECV, + IPULOG_ERR_NLEOF, + IPULOG_ERR_TRUNC, + IPULOG_ERR_INVGR, + IPULOG_ERR_INVNL, +}; +#define IPULOG_MAXERR IPULOG_ERR_INVNL + +#endif /* _LIBULOG_H */ diff --git a/src/libipulog/libipulog.c b/src/libipulog/libipulog.c new file mode 100644 index 0000000..28ca44d --- /dev/null +++ b/src/libipulog/libipulog.c @@ -0,0 +1,255 @@ +/* + * libipulog.c, $Revision: 1.1.2.1 $ + * + * netfilter ULOG userspace library. + * + * (C) 2000-2001 by Harald Welte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * This library is still under development, so be aware of sudden interface + * changes + * + * $Id: libipulog.c,v 1.1.2.1 2004/08/13 21:03:10 sla Exp $ + */ + +#include +#include +#include +#include +#include +#include + +struct ipulog_handle +{ + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* internal */ + + +int ipulog_errno = IPULOG_ERR_NONE; + +struct ipulog_errmap_t +{ + int errcode; + char *message; +} ipulog_errmap[] = +{ + { IPULOG_ERR_NONE, "No error" }, + { IPULOG_ERR_IMPL, "Not implemented yet" }, + { IPULOG_ERR_HANDLE, "Unable to create netlink handle" }, + { IPULOG_ERR_SOCKET, "Unable to create netlink socket" }, + { IPULOG_ERR_BIND, "Unable to bind netlink socket" }, + { IPULOG_ERR_RECVBUF, "Receive buffer size invalid" }, + { IPULOG_ERR_RECV, "Error during netlink receive" }, + { IPULOG_ERR_NLEOF, "Received EOF on netlink socket" }, + { IPULOG_ERR_TRUNC, "Receive message truncated" }, + { IPULOG_ERR_INVGR, "Invalid group specified" }, + { IPULOG_ERR_INVNL, "Invalid netlink message" }, +}; + +static ssize_t +ipulog_netlink_recvfrom(const struct ipulog_handle *h, + unsigned char *buf, size_t len) +{ + int addrlen, status; + struct nlmsghdr *nlh; + + if (len < sizeof(struct nlmsgerr)) { + ipulog_errno = IPULOG_ERR_RECVBUF; + return -1; + } + addrlen = sizeof(h->peer); + status = recvfrom(h->fd, buf, len, 0, (struct sockaddr *)&h->peer, + &addrlen); + if (status < 0) + { + ipulog_errno = IPULOG_ERR_RECV; + return status; + } + if (addrlen != sizeof (h->peer)) + { + ipulog_errno = IPULOG_ERR_RECV; + return -1; + } + if (status == 0) + { + ipulog_errno = IPULOG_ERR_NLEOF; + return -1; + } + nlh = (struct nlmsghdr *)buf; + if (nlh->nlmsg_flags & MSG_TRUNC || status > len) + { + ipulog_errno = IPULOG_ERR_TRUNC; + return -1; + } + return status; +} + +/* public */ + +char *ipulog_strerror(int errcode) +{ + if (errcode < 0 || errcode > IPULOG_MAXERR) + errcode = IPULOG_ERR_IMPL; + return ipulog_errmap[errcode].message; +} + +/* convert a netlink group (1-32) to a group_mask suitable for create_handle */ +u_int32_t ipulog_group2gmask(u_int32_t group) +{ + if (group < 1 || group > 32) + { + ipulog_errno = IPULOG_ERR_INVGR; + return 0; + } + return (1 << (group - 1)); +} + +/* create a ipulog handle for the reception of packets sent to gmask */ +struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, + u_int32_t rcvbufsize) +{ + struct ipulog_handle *h; + int status; + + h = (struct ipulog_handle *) malloc(sizeof(struct ipulog_handle)); + if (h == NULL) + { + ipulog_errno = IPULOG_ERR_HANDLE; + return NULL; + } + memset(h, 0, sizeof(struct ipulog_handle)); + h->fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_NFLOG); + if (h->fd == -1) + { + ipulog_errno = IPULOG_ERR_SOCKET; + close(h->fd); + free(h); + return NULL; + } + memset(&h->local, 0, sizeof(struct sockaddr_nl)); + h->local.nl_family = AF_NETLINK; + h->local.nl_pid = getpid(); + h->local.nl_groups = gmask; + status = bind(h->fd, (struct sockaddr *)&h->local, sizeof(h->local)); + if (status == -1) + { + ipulog_errno = IPULOG_ERR_BIND; + close(h->fd); + free(h); + return NULL; + } + memset(&h->peer, 0, sizeof(struct sockaddr_nl)); + h->peer.nl_family = AF_NETLINK; + h->peer.nl_pid = 0; + h->peer.nl_groups = gmask; + + status = setsockopt(h->fd, SOL_SOCKET, SO_RCVBUF, &rcvbufsize, + sizeof(rcvbufsize)); + if (status == -1) + { + ipulog_errno = IPULOG_ERR_RECVBUF; + close(h->fd); + free(h); + return NULL; + } + + return h; +} + +/* destroy a ipulog handle */ +void ipulog_destroy_handle(struct ipulog_handle *h) +{ + close(h->fd); + free(h); +} + +#if 0 +int ipulog_set_mode() +{ +} +#endif + +/* do a BLOCKING read on an ipulog handle */ +ssize_t ipulog_read(struct ipulog_handle *h, unsigned char *buf, + size_t len, int timeout) +{ + return ipulog_netlink_recvfrom(h, buf, len); +} + +/* get a pointer to the actual start of the ipulog packet, + use this to strip netlink header */ +ulog_packet_msg_t *ipulog_get_packet(struct ipulog_handle *h, + const unsigned char *buf, + size_t len) +{ + struct nlmsghdr *nlh; + size_t remain_len; + + /* if last header in handle not inside this buffer, + * drop reference to last header */ + if ((unsigned char *)h->last_nlhdr > (buf + len) || + (unsigned char *)h->last_nlhdr < buf) { + h->last_nlhdr = NULL; + } + + if (!h->last_nlhdr) { + /* fist message in buffer */ + nlh = (struct nlmsghdr *) buf; + if (!NLMSG_OK(nlh, len)) { + /* ERROR */ + ipulog_errno = IPULOG_ERR_INVNL; + return NULL; + } + } else { + /* we are in n-th part of multilink message */ + if (h->last_nlhdr->nlmsg_type == NLMSG_DONE || + !(h->last_nlhdr->nlmsg_flags & NLM_F_MULTI)) { + /* if last part in multilink message, + * or no multipart message at all: return */ + h->last_nlhdr = NULL; + return NULL; + } + + /* calculate remaining lenght from lasthdr to end of buffer */ + remain_len = (len - + ((unsigned char *)h->last_nlhdr - buf)); + nlh = NLMSG_NEXT(h->last_nlhdr, remain_len); + } + + h->last_nlhdr = nlh; + + return NLMSG_DATA(nlh); +} + +/* print a human readable description of the last error to stderr */ +void ipulog_perror(const char *s) +{ + if (s) + fputs(s, stderr); + else + fputs("ERROR", stderr); + if (ipulog_errno) + fprintf(stderr, ": %s", ipulog_strerror(ipulog_errno)); + if (errno) + fprintf(stderr, ": %s", strerror(errno)); + fputc('\n', stderr); +} + diff --git a/src/mas b/src/mas new file mode 100644 index 0000000..e69de29 diff --git a/src/mem.c b/src/mem.c new file mode 100644 index 0000000..90ca516 --- /dev/null +++ b/src/mem.c @@ -0,0 +1,167 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: mem.c,v 1.4.2.2.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#include +#include +#include + +#include +#include +#include + +#ifdef MEM_THREADSAFE +#include +#endif + +#ifdef MEM_THREADSAFE +static pthread_mutex_t mem_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif +static struct Mem *root; +unsigned int total_elements; +unsigned int free_elements; +static unsigned int element_size; +static unsigned int bulk_quantity; +static unsigned int limit_memory; +unsigned int total_memory; +static unsigned int mem_index_table_size; +static unsigned int element_table_size; +static unsigned int malloc_size; + +void *mem_alloc() +{ + unsigned int i; + struct Mem *mptr; + mem_index_t *iptr; +#if MEM_BITS == 0 + void *eptr; +#endif + +#ifdef MEM_THREADSAFE + pthread_mutex_lock(&mem_mutex); +#endif + if (!free_elements) { + if (limit_memory && (total_memory + malloc_size) > limit_memory) { +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: limit exhausted"); +#endif + mptr = 0; + errno = ENOMEM; + goto done; + } + if (!(mptr = calloc(malloc_size, 1))) goto done; + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + eptr = (void *) iptr + mem_index_table_size; +#endif + for (i = 0; i < bulk_quantity; i++) { +#if MEM_BITS == 0 + *iptr++ = eptr; + eptr += element_size; +#else + *iptr++ = i; +#endif + } + mptr->free = bulk_quantity - 1; + free_elements += mptr->free; + total_elements += bulk_quantity; + total_memory += malloc_size; + mptr->first = iptr; + mptr->last = (void *) iptr + element_table_size - element_size; + mptr->next = root; + root = mptr; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: alloc bulk: base:%x first:%x last:%x", + mptr, mptr->first, mptr->last); + my_log(LOG_DEBUG, "M: mem: total: %d (%dKB), free: %d", + total_elements, total_memory >> 10, free_elements); +#endif + mptr = mptr->last; + goto done; + } + + mptr = root; + while (mptr->free == 0) mptr = mptr->next; + mptr->free--; + free_elements--; + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + mptr = iptr[mptr->free]; +#else + mptr = mptr->first + iptr[mptr->free] * element_size; +#endif + +done: +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: alloc: %x", mptr); +#endif +#ifdef MEM_THREADSAFE + pthread_mutex_unlock(&mem_mutex); +#endif + return mptr; +} + +void mem_free(void *eptr) +{ + mem_index_t *iptr; + struct Mem *mptr, **pptr; + +#ifdef MEM_THREADSAFE + pthread_mutex_lock(&mem_mutex); +#endif +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: free: %x", eptr); +#endif + mptr = root; + pptr = &root; + while (mptr->first > eptr || mptr->last < eptr) { + pptr = &mptr->next; + mptr = mptr->next; + } + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + iptr[mptr->free] = eptr; +#else + iptr[mptr->free] = (eptr - mptr->first) / element_size; +#endif + mptr->free++; + free_elements++; + if (mptr->free == bulk_quantity) { +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: free bulk: base:%x first:%x last:%x", + mptr, mptr->first, mptr->last); +#endif + *pptr = mptr->next; + free(mptr); + total_elements -= bulk_quantity; + free_elements -= bulk_quantity; + total_memory -= malloc_size; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: mem: total: %d (%dKB), free: %d", + total_elements, total_memory >> 10, free_elements); +#endif + } +#ifdef MEM_THREADSAFE + pthread_mutex_unlock(&mem_mutex); +#endif +} + +int mem_init(unsigned int element, unsigned int bulk, unsigned int limit) +{ + bulk_quantity = (unsigned) (mem_index_t) bulk; /* for safety: movzbl, movzwl */ + mem_index_table_size = sizeof(mem_index_t) * bulk_quantity; + element_size = element; + element_table_size = element_size * bulk_quantity; + malloc_size = sizeof(struct Mem) + mem_index_table_size + element_table_size; + limit_memory = limit; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: init: element size:%d quantity:%d bulk size:%d limit:%d", + element_size, bulk_quantity, malloc_size, limit_memory); +#endif + return 0; +} diff --git a/src/mem.h b/src/mem.h new file mode 100644 index 0000000..9930761 --- /dev/null +++ b/src/mem.h @@ -0,0 +1,48 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: mem.h,v 1.1.1.1.2.3 2004/08/13 20:40:43 sla Exp $ +*/ + +#ifndef _MEM_H_ +#define _MEM_H_ + +#if MEM_BITS != 0 && MEM_BITS != 8 && MEM_BITS != 16 +#error illegal value in MEM_BITS +#endif + +#if defined _REENTRANT || defined _THREAD_SAFE +#define MEM_THREADSAFE +#endif + +#include + +#if MEM_BITS == 0 +typedef void* mem_index_t; +#endif +#if MEM_BITS == 8 +typedef uint8_t mem_index_t; +#endif +#if MEM_BITS == 16 +typedef uint16_t mem_index_t; +#endif + +void *mem_alloc(); +void mem_free(void *); +int mem_init(unsigned int, unsigned int, unsigned int); + +struct Mem { + struct Mem *next; + unsigned int free; + void *first; + void *last; + /* + mem_index_t mem_index_table[bulk_quantity] + struct UserDef element_table[bulk_quantity] + */ +}; + +#endif diff --git a/src/my_getopt.c b/src/my_getopt.c new file mode 100644 index 0000000..d0a9fd7 --- /dev/null +++ b/src/my_getopt.c @@ -0,0 +1,79 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_getopt.c,v 1.2.2.3 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +/* getopt() */ +#include + +/* fprintf() */ +#include + +#include + +extern char *optarg; +extern int optind, opterr, optopt; + +int my_getopt(int argc, char * const argv[], + struct getopt_parms parms[]) +{ + int c, i, p; + static int flag = 0, my_opterr = 1; + static char optstring[MY_GETOPT_MAX_OPTSTR]; + + if (flag++ == 0) { + p = 0; i = 0; + while ((parms[i].name != 0) && (p < (MY_GETOPT_MAX_OPTSTR - 1))) { + optstring[p++] = parms[i].name; + if (parms[i].flag & MY_GETOPT_ARG_REQUIRED) optstring[p++] = ':'; + optstring[p] = 0; + i++; + } + flag = 1; + } + + c = getopt(argc, argv, optstring); + switch (c) { + case '?': + if (my_opterr) fprintf(stderr, "Wrong parameters\n"); + break; + + case -1: + flag = 0; + i = 0; + while (parms[i].name != 0) { + if ((parms[i].flag & MY_GETOPT_REQUIRED) && (parms[i].count == 0)) { + if (my_opterr) fprintf(stderr, "Missing required option\n"); + return '?'; + } + i++; + } + break; + + default: + i = 0; + while ((parms[i].name != 0) && (parms[i].name != c)) { + i++; + } + if (parms[i].flag & MY_GETOPT_ARG_REQUIRED) { + if (optarg == 0) { + if (my_opterr) fprintf(stderr, "Option `-%c': %s\n", + c, "require parameter"); + return '?'; + } else parms[i].arg = optarg; + } + if ((++parms[i].count > 1) && !(parms[i].flag & MY_GETOPT_ALLOW_REPEAT)) { + if (my_opterr) fprintf(stderr, "Option `-%c': %s\n", + c, "repeat not allowed"); + return '?'; + } + break; + } + return c; +} diff --git a/src/my_getopt.h b/src/my_getopt.h new file mode 100644 index 0000000..e8f8d1f --- /dev/null +++ b/src/my_getopt.h @@ -0,0 +1,28 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_getopt.h,v 1.1.1.1.2.3 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _MY_GETOPT_H_ +#define _MY_GETOPT_H_ + +#define MY_GETOPT_ARG_REQUIRED 0x1 +#define MY_GETOPT_REQUIRED 0x2 +#define MY_GETOPT_ALLOW_REPEAT 0x4 + +#define MY_GETOPT_MAX_OPTSTR 4096 + +struct getopt_parms { + char name; + int flag; + int count; + char *arg; +}; + +int my_getopt(int argc, char * const argv[], struct getopt_parms parms[]); + +#endif diff --git a/src/my_inttypes.h b/src/my_inttypes.h new file mode 100644 index 0000000..eec2ef5 --- /dev/null +++ b/src/my_inttypes.h @@ -0,0 +1,51 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_inttypes.h,v 1.1.2.1 2004/08/13 20:41:19 sla Exp $ +*/ + +#ifndef _MY_INTTYPES_H_ +#define _MY_INTTYPES_H_ + +#include + +#ifdef HAVE_INTTYPES_H +#include +#else + +typedef unsigned char uint8_t; +typedef signed char int8_t; + +typedef unsigned short uint16_t; +typedef short int16_t; + +#if SIZEOF_INT == 4 +typedef unsigned int uint32_t; +typedef int int32_t; +#else +#if SIZEOF_LONG == 4 +typedef unsigned long uint32_t; +typedef long int32_t; +#else +#error "Can't find any 32 bit type" +#endif +#endif + +#if SIZEOF_LONG == 8 +typedef unsigned long uint64_t; +typedef long int64_t; +#else +#if SIZEOF_LONG_LONG == 8 +typedef unsigned long long uint64_t; +typedef long long int64_t; +#else +#error "Can't find any 64 bit type" +#endif +#endif + +#endif /* HAVE_INTTYPES_H */ + +#endif /* _MY_INTTYPES_H_ */ diff --git a/src/my_log.c b/src/my_log.c new file mode 100644 index 0000000..b324f8f --- /dev/null +++ b/src/my_log.c @@ -0,0 +1,57 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_log.c,v 1.3.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +#include +#include +#include +#include + +#include + +static char *my_log_indent; +static unsigned my_log_min_level; +static unsigned my_log_flags; +static char *my_log_names[] = { + "EMERG", "ALERT", "CRIT", "ERR", "WARNING", "NOTICE", "INFO", "DEBUG" +}; + +void my_log_open(char *indent, unsigned min_level, unsigned flags) +{ + my_log_indent = indent; + my_log_min_level = min_level; + my_log_flags = flags; + //openlog(0, LOG_PID, MY_LOG_SYSLOG_FACILITY); + openlog(my_log_indent, 0, MY_LOG_SYSLOG_FACILITY); +} + +void my_log_close(void) +{ + closelog(); +} + +void my_log(unsigned level, const char *format, ...) +{ + va_list args; + char msg[256]; + char msg_prefix[64]; + + if (level <= my_log_min_level) { + va_start(args, format); + vsnprintf(msg, sizeof(msg), format, args); + snprintf(msg_prefix, sizeof(msg_prefix), "[%s]: ", my_log_names[level]); + + if (my_log_flags & MY_LOG_SYSLOG) + syslog(level, "%s%s", msg_prefix, msg); + + if (my_log_flags & MY_LOG_STDOUT) + fprintf(stdout, "%s%s\n", msg_prefix, msg); + } +} diff --git a/src/my_log.h b/src/my_log.h new file mode 100644 index 0000000..6269f72 --- /dev/null +++ b/src/my_log.h @@ -0,0 +1,24 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_log.h,v 1.1.1.1.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _MY_LOG_H_ +#define _MY_LOG_H_ + +#define MY_LOG_SYSLOG 0x01 +#define MY_LOG_STDOUT 0x02 +#define MY_LOG_SYSLOG_FACILITY LOG_DAEMON +#define MY_LOG_MAX_INDEX 32 + +#include + +void my_log_open(char *, unsigned, unsigned); +void my_log_close(void); +void my_log(unsigned, const char *, ...); + +#endif diff --git a/src/na b/src/na new file mode 100644 index 0000000..e69de29 diff --git a/src/netflow.c b/src/netflow.c new file mode 100644 index 0000000..3e5435e --- /dev/null +++ b/src/netflow.c @@ -0,0 +1,145 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: netflow.c,v 1.2.2.4 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +#include + +static uint16_t NetFlow1_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS +}; + +static uint16_t NetFlow1_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_PAD16, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_TCP_FLAGS, + NETFLOW_PAD8, NETFLOW_PAD8, NETFLOW_PAD8, + NETFLOW_PAD32 +}; + +static uint16_t NetFlow5_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS, + NETFLOW_FLOW_SEQUENCE, + NETFLOW_ENGINE_TYPE, + NETFLOW_ENGINE_ID, + NETFLOW_PAD16 +}; + +static uint16_t NetFlow5_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_PAD8, + NETFLOW_TCP_FLAGS, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_SRC_AS, + NETFLOW_DST_AS, + NETFLOW_SRC_MASK, + NETFLOW_DST_MASK, + NETFLOW_PAD16 +}; + +static uint16_t NetFlow7_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS, + NETFLOW_FLOW_SEQUENCE, + NETFLOW_PAD32 +}; + +static uint16_t NetFlow7_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_FLAGS7_1, + NETFLOW_TCP_FLAGS, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_SRC_AS, + NETFLOW_DST_AS, + NETFLOW_SRC_MASK, + NETFLOW_DST_MASK, + NETFLOW_FLAGS7_2, + NETFLOW_ROUTER_SC +}; + +struct NetFlow NetFlow1 = { + NETFLOW1_VERSION, + NETFLOW1_HEADER_SIZE, + NETFLOW1_MAX_FLOWS, + NETFLOW1_FLOW_SIZE, + NETFLOW1_SEQ_OFFSET, + sizeof(NetFlow1_Header) / sizeof(uint16_t), + NetFlow1_Header, + sizeof(NetFlow1_Flow) / sizeof(uint16_t), + NetFlow1_Flow +}; + +struct NetFlow NetFlow5 = { + NETFLOW5_VERSION, + NETFLOW5_HEADER_SIZE, + NETFLOW5_MAX_FLOWS, + NETFLOW5_FLOW_SIZE, + NETFLOW5_SEQ_OFFSET, + sizeof(NetFlow5_Header) / sizeof(uint16_t), + NetFlow5_Header, + sizeof(NetFlow5_Flow) / sizeof(uint16_t), + NetFlow5_Flow +}; + +struct NetFlow NetFlow7 = { + NETFLOW7_VERSION, + NETFLOW7_HEADER_SIZE, + NETFLOW7_MAX_FLOWS, + NETFLOW7_FLOW_SIZE, + NETFLOW7_SEQ_OFFSET, + sizeof(NetFlow7_Header) / sizeof(uint16_t), + NetFlow7_Header, + sizeof(NetFlow7_Flow) / sizeof(uint16_t), + NetFlow7_Flow +}; diff --git a/src/netflow.h b/src/netflow.h new file mode 100644 index 0000000..e2ce3af --- /dev/null +++ b/src/netflow.h @@ -0,0 +1,245 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: netflow.h,v 1.3.2.5.2.1 2004/08/13 21:03:10 sla Exp $ +*/ + +#ifndef _NETFLOW_H_ +#define _NETFLOW_H_ + +#include + +#define NETFLOW_BYTES_32 1 +#define NETFLOW_BYTES_32_SIZE 4 + +#define NETFLOW_PKTS_32 2 +#define NETFLOW_PKTS_32_SIZE 4 + +#define NETFLOW_FLOWS 3 +#define NETFLOW_FLOWS_SIZE 4 + +#define NETFLOW_PROT 4 +#define NETFLOW_PROT_SIZE 1 + +#define NETFLOW_SRC_TOS 5 +#define NETFLOW_SRC_TOS_SIZE 1 + +#define NETFLOW_TCP_FLAGS 6 +#define NETFLOW_TCP_FLAGS_SIZE 1 + +#define NETFLOW_L4_SRC_PORT 7 +#define NETFLOW_L4_SRC_PORT_SIZE 2 + +#define NETFLOW_IPV4_SRC_ADDR 8 +#define NETFLOW_IPV4_SRC_ADDR_SIZE 4 + +#define NETFLOW_SRC_MASK 9 +#define NETFLOW_SRC_MASK_SIZE 1 + +#define NETFLOW_INPUT_SNMP 10 +#define NETFLOW_INPUT_SNMP_SIZE 2 + +#define NETFLOW_L4_DST_PORT 11 +#define NETFLOW_L4_DST_PORT_SIZE 2 + +#define NETFLOW_IPV4_DST_ADDR 12 +#define NETFLOW_IPV4_DST_ADDR_SIZE 4 + +#define NETFLOW_DST_MASK 13 +#define NETFLOW_DST_MASK_SIZE 1 + +#define NETFLOW_OUTPUT_SNMP 14 +#define NETFLOW_OUTPUT_SNMP_SIZE 2 + +#define NETFLOW_IPV4_NEXT_HOP 15 +#define NETFLOW_IPV4_NEXT_HOP_SIZE 4 + +#define NETFLOW_SRC_AS 16 +#define NETFLOW_SRC_AS_SIZE 2 + +#define NETFLOW_DST_AS 17 +#define NETFLOW_DST_AS_SIZE 2 + +#define NETFLOW_BGP_NEXT_HOP 18 +#define NETFLOW_BGP_NEXT_HOP_SIZE 4 + +#define NETFLOW_IPM_DPKTS 19 +#define NETFLOW_IPM_DPKTS_SIZE 4 + +#define NETFLOW_IPM_DOCTETS 20 +#define NETFLOW_IPM_DOCTETS_SIZE 4 + +#define NETFLOW_LAST_SWITCHED 21 +#define NETFLOW_LAST_SWITCHED_SIZE 4 + +#define NETFLOW_FIRST_SWITCHED 22 +#define NETFLOW_FIRST_SWITCHED_SIZE 4 + +#define NETFLOW_BYTES_64 23 +#define NETFLOW_BYTES_64_SIZE 8 + +#define NETFLOW_PKTS_64 24 +#define NETFLOW_PKTS_64_SIZE 8 + +#define NETFLOW_MAC_ADDR 25 +#define NETFLOW_MAC_ADDR_SIZE 6 + +#define NETFLOW_VLAN_ID 26 +#define NETFLOW_VLAN_ID_SIZE 2 + +#define NETFLOW_IPV6_SRC_ADDR 27 +#define NETFLOW_IPV6_SRC_ADDR_SIZE 16 + +#define NETFLOW_IPV6_DST_ADDR 28 +#define NETFLOW_IPV6_DST_ADDR_SIZE 16 + +#define NETFLOW_IPV6_SRC_MASK 29 +#define NETFLOW_IPV6_SRC_MASK_SIZE 1 + +#define NETFLOW_IPV6_DST_MASK 30 +#define NETFLOW_IPV6_DST_MASK_SIZE 1 + +#define NETFLOW_FLOW_LABEL 31 +#define NETFLOW_FLOW_LABEL_SZIE 3 + +#define NETFLOW_ICMP_TYPE 32 +#define NETFLOW_ICMP_TYPE_SIZE 1 + +#define NETFLOW_MUL_IGMP_TYPE 33 +#define NETFLOW_MUL_IGMP_TYPE_SIZE 1 + +#define NETFLOW_SAMPLING_INTERVAL 34 +#define NETFLOW_SAMPLING_INTERVAL_SIZE 4 + +#define NETFLOW_SAMPLING_ALGORITHM 35 +#define NETFLOW_SAMPLING_ALGORITHM_SIZE 1 + +#define NETFLOW_FLOW_ACTIVE_TIMEOUT 36 +#define NETFLOW_FLOW_ACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_FLOW_INACTIVE_TIMEOUT 37 +#define NETFLOW_FLOW_INACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_ENGINE_TYPE 38 +#define NETFLOW_ENGINE_TYPE_SIZE 1 + +#define NETFLOW_ENGINE_ID 39 +#define NETFLOW_ENGINE_ID_SIZE 1 + +#define NETFLOW_TOTAL_BYTES_EXPORTED 40 +#define NETFLOW_TOTAL_BYTES_EXPORTED_SIZE 4 + +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT 41 +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT_SIZE 4 + +#define NETFLOW_TOTAL_FLOWS_EXPORTED 42 +#define NETFLOW_TOTAL_FLOWS_EXPORTED_SIZE 4 + +#define NETFLOW_FLOW_SAMPLER_ID 48 +#define NETFLOW_FLOW_SAMPLER_ID_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_MODE 49 +#define NETFLOW_FLOW_SAMPLER_MODE_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50 +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL_SIZE 4 + +#define NETFLOW_IP_PROTOCOL_VERSION 60 +#define NETFLOW_IP_PROTOCOL_VERSION_SIZE 1 + +#define NETFLOW_DIRECTION 61 +#define NETFLOW_DIRECTION_SIZE 1 + +#define NETFLOW_IPV6_NEXT_HOP 62 +#define NETFLOW_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_BGP_IPV6_NEXT_HOP 63 +#define NETFLOW_BGP_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_IPV6_OPTION_HEADERS 64 +#define NETFLOW_IPV6_OPTION_HEADERS_SIZE 4 + + +#define NETFLOW_VERSION 1001 +#define NETFLOW_VERSION_SIZE 2 + +#define NETFLOW_COUNT 1002 +#define NETFLOW_COUNT_SIZE 2 + +#define NETFLOW_UPTIME 1003 +#define NETFLOW_UPTIME_SIZE 4 + +#define NETFLOW_UNIX_SECS 1004 +#define NETFLOW_UNIX_SECS_SIZE 4 + +#define NETFLOW_UNIX_NSECS 1005 +#define NETFLOW_UNIX_NSECS_SIZE 4 + +#define NETFLOW_FLOW_SEQUENCE 1006 +#define NETFLOW_FLOW_SEQUENCE_SIZE 4 + +#define NETFLOW_HEADER_SAMPLING_INTERVAL 1009 /* ??? */ +#define NETFLOW_HEADER_SAMPLING_INTERVAL_SIZE 2 + +#define NETFLOW_FLAGS7_1 1010 +#define NETFLOW_FLAGS7_1_SIZE 1 + +#define NETFLOW_FLAGS7_2 1011 +#define NETFLOW_FLAGS7_2_SIZE 2 + +#define NETFLOW_ROUTER_SC 1012 +#define NETFLOW_ROUTER_SC_SIZE 4 + + +#define NETFLOW_PAD8 9001 +#define NETFLOW_PAD8_SIZE 1 + +#define NETFLOW_PAD16 9002 +#define NETFLOW_PAD16_SIZE 2 + +#define NETFLOW_PAD32 9003 +#define NETFLOW_PAD32_SIZE 4 + +#define NETFLOW_PAD64 9004 +#define NETFLOW_PAD64_SIZE 8 + + +#define NETFLOW_MAX_PACKET 1500 + +#define NETFLOW1_VERSION 1 +#define NETFLOW1_HEADER_SIZE 16 +#define NETFLOW1_MAX_FLOWS 24 +#define NETFLOW1_FLOW_SIZE 48 +#define NETFLOW1_SEQ_OFFSET 0 + +#define NETFLOW5_VERSION 5 +#define NETFLOW5_HEADER_SIZE 24 +#define NETFLOW5_MAX_FLOWS 30 +#define NETFLOW5_FLOW_SIZE 48 +#define NETFLOW5_SEQ_OFFSET 16 + +#define NETFLOW7_VERSION 7 +#define NETFLOW7_HEADER_SIZE 24 +#define NETFLOW7_MAX_FLOWS 27 +#define NETFLOW7_FLOW_SIZE 52 +#define NETFLOW7_SEQ_OFFSET 16 + +#define NETFLOW8_VERSION 8 +#define NETFLOW8_MAX_FLOWS 51 + +struct NetFlow { + unsigned Version; + unsigned HeaderSize; + unsigned MaxFlows; + unsigned FlowSize; + unsigned SeqOffset; + unsigned HeaderFields; + uint16_t *HeaderFormat; + unsigned FlowFields; + uint16_t *FlowFormat; +}; + +#endif diff --git a/src/poslem b/src/poslem new file mode 100644 index 0000000..e69de29 diff --git a/src/tags b/src/tags new file mode 100644 index 0000000..3565b6b --- /dev/null +++ b/src/tags @@ -0,0 +1,637 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.5.4 // +ACLOCAL Makefile /^ACLOCAL = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run aclocal-1.9$/;" m +ACLOCAL_M4 Makefile /^ACLOCAL_M4 = $(top_srcdir)\/aclocal.m4$/;" m +AMDEP_FALSE Makefile /^AMDEP_FALSE = #$/;" m +AMDEP_TRUE Makefile /^AMDEP_TRUE = $/;" m +AMTAR Makefile /^AMTAR = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run tar$/;" m +AUTOCONF Makefile /^AUTOCONF = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run autoconf$/;" m +AUTOHEADER Makefile /^AUTOHEADER = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run autoheader$/;" m +AUTOMAKE Makefile /^AUTOMAKE = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run automake-1.9$/;" m +AWK Makefile /^AWK = gawk$/;" m +BULK_QUANTITY fprobe-ulog.c 149;" d file: +BULK_QUANTITY fprobe-ulog.c 151;" d file: +BULK_QUANTITY_MAX fprobe-ulog.c 147;" d file: +Bflag fprobe-ulog.c /^ Bflag,$/;" e file: +CAPTURE_SIZE fprobe-ulog.h 22;" d +CC Makefile /^CC = gcc$/;" m +CCDEPMODE Makefile /^CCDEPMODE = depmode=none$/;" m +CCLD Makefile /^CCLD = $(CC)$/;" m +CDPATH Makefile /^am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd$/;" m +CFLAGS Makefile /^CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall$/;" m +COMPILE Makefile /^COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\$/;" m +CONFIG_CLEAN_FILES Makefile /^CONFIG_CLEAN_FILES =$/;" m +CONFIG_HEADER Makefile /^CONFIG_HEADER = $(top_builddir)\/config.h$/;" m +COPY_INTO fprobe-ulog.h 24;" d +CPP Makefile /^CPP = gcc -E$/;" m +CPPFLAGS Makefile /^CPPFLAGS = $/;" m +CRC16_POLY hash.h 42;" d +CTAGS Makefile /^CTAGS = ctags$/;" m +CYGPATH_W Makefile /^CYGPATH_W = echo$/;" m +DATE Makefile /^DATE = 2007-10-26$/;" m +DBG common.h 13;" d +DEBUG_C common.h 18;" d +DEBUG_E common.h 24;" d +DEBUG_F common.h 28;" d +DEBUG_I common.h 30;" d +DEBUG_M common.h 26;" d +DEBUG_S common.h 22;" d +DEBUG_U common.h 20;" d +DEFAULT_INCLUDES Makefile /^DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)$/;" m +DEFS Makefile /^DEFS = -DHAVE_CONFIG_H$/;" m +DEPDIR Makefile /^DEPDIR = .deps$/;" m +DISTFILES Makefile /^DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)$/;" m +DIST_COMMON Makefile /^DIST_COMMON = $(srcdir)\/Makefile.am $(srcdir)\/Makefile.in$/;" m +DIST_SOURCES Makefile /^DIST_SOURCES = $(fprobe_ulog_SOURCES)$/;" m +DIST_SUBDIRS Makefile /^DIST_SUBDIRS = $(SUBDIRS)$/;" m +ECHO_C Makefile /^ECHO_C = $/;" m +ECHO_N Makefile /^ECHO_N = -n$/;" m +ECHO_T Makefile /^ECHO_T = $/;" m +EGREP Makefile /^EGREP = grep -E$/;" m +EMIT_TIMEOUT fprobe-ulog.h 20;" d +ETAGS Makefile /^ETAGS = etags$/;" m +EXEEXT Makefile /^EXEEXT = $/;" m +EXTRA_DIST Makefile /^EXTRA_DIST = ${man_MANS}$/;" m +FLOW_FRAG fprobe-ulog.h 65;" d +FLOW_FRAGMASK fprobe-ulog.h 66;" d +FLOW_LASTFRAG fprobe-ulog.h 68;" d +FLOW_PENDING fprobe-ulog.h 69;" d +FLOW_TL fprobe-ulog.h 67;" d +Flow fprobe-ulog.h /^struct Flow {$/;" s +FlowFields netflow.h /^ unsigned FlowFields;$/;" m struct:NetFlow +FlowFormat netflow.h /^ uint16_t *FlowFormat;$/;" m struct:NetFlow +FlowSize netflow.h /^ unsigned FlowSize;$/;" m struct:NetFlow +Flow_F fprobe-ulog.h /^struct Flow_F {$/;" s +Flow_TL fprobe-ulog.h /^struct Flow_TL {$/;" s +HeaderFields netflow.h /^ unsigned HeaderFields;$/;" m struct:NetFlow +HeaderFormat netflow.h /^ uint16_t *HeaderFormat;$/;" m struct:NetFlow +HeaderSize netflow.h /^ unsigned HeaderSize;$/;" m struct:NetFlow +INCLUDES Makefile /^INCLUDES = -I$(top_srcdir)\/src\/libipulog\/include$/;" m +INSTALL Makefile /^INSTALL = \/bin\/install -c$/;" m +INSTALL_DATA Makefile /^INSTALL_DATA = ${INSTALL} -m 644$/;" m +INSTALL_HEADER Makefile /^INSTALL_HEADER = $(INSTALL_DATA)$/;" m +INSTALL_PROGRAM Makefile /^ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\$/;" m +INSTALL_PROGRAM Makefile /^INSTALL_PROGRAM = ${INSTALL}$/;" m +INSTALL_PROGRAM_ENV Makefile /^ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install$/;" m +INSTALL_SCRIPT Makefile /^INSTALL_SCRIPT = ${INSTALL}$/;" m +INSTALL_STRIP_FLAG Makefile /^ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\$/;" m +INSTALL_STRIP_PROGRAM Makefile /^INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s$/;" m +IP_OFFMASK fprobe-ulog.h 16;" d +LDFLAGS Makefile /^LDFLAGS = $/;" m +LIBOBJS Makefile /^LIBOBJS = $/;" m +LIBS Makefile /^LIBS = -lpthread $/;" m +LINK Makefile /^LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@$/;" m +LTLIBOBJS Makefile /^LTLIBOBJS = $/;" m +MAKEINFO Makefile /^MAKEINFO = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run makeinfo$/;" m +MANS Makefile /^MANS = $(man_MANS)$/;" m +MEM_THREADSAFE mem.h 18;" d +MOVE_INTO fprobe-ulog.h 25;" d +MY_GETOPT_ALLOW_REPEAT my_getopt.h 15;" d +MY_GETOPT_ARG_REQUIRED my_getopt.h 13;" d +MY_GETOPT_MAX_OPTSTR my_getopt.h 17;" d +MY_GETOPT_REQUIRED my_getopt.h 14;" d +MY_LOG_MAX_INDEX my_log.h 16;" d +MY_LOG_STDOUT my_log.h 14;" d +MY_LOG_SYSLOG my_log.h 13;" d +MY_LOG_SYSLOG_FACILITY my_log.h 15;" d +MaxFlows netflow.h /^ unsigned MaxFlows;$/;" m struct:NetFlow +Mem mem.h /^struct Mem {$/;" s +Mflag fprobe-ulog.c /^ Mflag,$/;" e file: +NETFLOW1_FLOW_SIZE netflow.h 215;" d +NETFLOW1_HEADER_SIZE netflow.h 213;" d +NETFLOW1_MAX_FLOWS netflow.h 214;" d +NETFLOW1_SEQ_OFFSET netflow.h 216;" d +NETFLOW1_VERSION netflow.h 212;" d +NETFLOW5_FLOW_SIZE netflow.h 221;" d +NETFLOW5_HEADER_SIZE netflow.h 219;" d +NETFLOW5_MAX_FLOWS netflow.h 220;" d +NETFLOW5_SEQ_OFFSET netflow.h 222;" d +NETFLOW5_VERSION netflow.h 218;" d +NETFLOW7_FLOW_SIZE netflow.h 227;" d +NETFLOW7_HEADER_SIZE netflow.h 225;" d +NETFLOW7_MAX_FLOWS netflow.h 226;" d +NETFLOW7_SEQ_OFFSET netflow.h 228;" d +NETFLOW7_VERSION netflow.h 224;" d +NETFLOW8_MAX_FLOWS netflow.h 231;" d +NETFLOW8_VERSION netflow.h 230;" d +NETFLOW_BGP_IPV6_NEXT_HOP netflow.h 159;" d +NETFLOW_BGP_IPV6_NEXT_HOP_SIZE netflow.h 160;" d +NETFLOW_BGP_NEXT_HOP netflow.h 66;" d +NETFLOW_BGP_NEXT_HOP_SIZE netflow.h 67;" d +NETFLOW_BYTES_32 netflow.h 15;" d +NETFLOW_BYTES_32_SIZE netflow.h 16;" d +NETFLOW_BYTES_64 netflow.h 81;" d +NETFLOW_BYTES_64_SIZE netflow.h 82;" d +NETFLOW_COUNT netflow.h 169;" d +NETFLOW_COUNT_SIZE netflow.h 170;" d +NETFLOW_DIRECTION netflow.h 153;" d +NETFLOW_DIRECTION_SIZE netflow.h 154;" d +NETFLOW_DST_AS netflow.h 63;" d +NETFLOW_DST_AS_SIZE netflow.h 64;" d +NETFLOW_DST_MASK netflow.h 51;" d +NETFLOW_DST_MASK_SIZE netflow.h 52;" d +NETFLOW_ENGINE_ID netflow.h 129;" d +NETFLOW_ENGINE_ID_SIZE netflow.h 130;" d +NETFLOW_ENGINE_TYPE netflow.h 126;" d +NETFLOW_ENGINE_TYPE_SIZE netflow.h 127;" d +NETFLOW_FIRST_SWITCHED netflow.h 78;" d +NETFLOW_FIRST_SWITCHED_SIZE netflow.h 79;" d +NETFLOW_FLAGS7_1 netflow.h 187;" d +NETFLOW_FLAGS7_1_SIZE netflow.h 188;" d +NETFLOW_FLAGS7_2 netflow.h 190;" d +NETFLOW_FLAGS7_2_SIZE netflow.h 191;" d +NETFLOW_FLOWS netflow.h 21;" d +NETFLOW_FLOWS_SIZE netflow.h 22;" d +NETFLOW_FLOW_ACTIVE_TIMEOUT netflow.h 120;" d +NETFLOW_FLOW_ACTIVE_TIMEOUT_SIZE netflow.h 121;" d +NETFLOW_FLOW_INACTIVE_TIMEOUT netflow.h 123;" d +NETFLOW_FLOW_INACTIVE_TIMEOUT_SIZE netflow.h 124;" d +NETFLOW_FLOW_LABEL netflow.h 105;" d +NETFLOW_FLOW_LABEL_SZIE netflow.h 106;" d +NETFLOW_FLOW_SAMPLER_ID netflow.h 141;" d +NETFLOW_FLOW_SAMPLER_ID_SIZE netflow.h 142;" d +NETFLOW_FLOW_SAMPLER_MODE netflow.h 144;" d +NETFLOW_FLOW_SAMPLER_MODE_SIZE netflow.h 145;" d +NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL netflow.h 147;" d +NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL_SIZE netflow.h 148;" d +NETFLOW_FLOW_SEQUENCE netflow.h 181;" d +NETFLOW_FLOW_SEQUENCE_SIZE netflow.h 182;" d +NETFLOW_HEADER_SAMPLING_INTERVAL netflow.h 184;" d +NETFLOW_HEADER_SAMPLING_INTERVAL_SIZE netflow.h 185;" d +NETFLOW_ICMP_TYPE netflow.h 108;" d +NETFLOW_ICMP_TYPE_SIZE netflow.h 109;" d +NETFLOW_INPUT_SNMP netflow.h 42;" d +NETFLOW_INPUT_SNMP_SIZE netflow.h 43;" d +NETFLOW_IPM_DOCTETS netflow.h 72;" d +NETFLOW_IPM_DOCTETS_SIZE netflow.h 73;" d +NETFLOW_IPM_DPKTS netflow.h 69;" d +NETFLOW_IPM_DPKTS_SIZE netflow.h 70;" d +NETFLOW_IPV4_DST_ADDR netflow.h 48;" d +NETFLOW_IPV4_DST_ADDR_SIZE netflow.h 49;" d +NETFLOW_IPV4_NEXT_HOP netflow.h 57;" d +NETFLOW_IPV4_NEXT_HOP_SIZE netflow.h 58;" d +NETFLOW_IPV4_SRC_ADDR netflow.h 36;" d +NETFLOW_IPV4_SRC_ADDR_SIZE netflow.h 37;" d +NETFLOW_IPV6_DST_ADDR netflow.h 96;" d +NETFLOW_IPV6_DST_ADDR_SIZE netflow.h 97;" d +NETFLOW_IPV6_DST_MASK netflow.h 102;" d +NETFLOW_IPV6_DST_MASK_SIZE netflow.h 103;" d +NETFLOW_IPV6_NEXT_HOP netflow.h 156;" d +NETFLOW_IPV6_NEXT_HOP_SIZE netflow.h 157;" d +NETFLOW_IPV6_OPTION_HEADERS netflow.h 162;" d +NETFLOW_IPV6_OPTION_HEADERS_SIZE netflow.h 163;" d +NETFLOW_IPV6_SRC_ADDR netflow.h 93;" d +NETFLOW_IPV6_SRC_ADDR_SIZE netflow.h 94;" d +NETFLOW_IPV6_SRC_MASK netflow.h 99;" d +NETFLOW_IPV6_SRC_MASK_SIZE netflow.h 100;" d +NETFLOW_IP_PROTOCOL_VERSION netflow.h 150;" d +NETFLOW_IP_PROTOCOL_VERSION_SIZE netflow.h 151;" d +NETFLOW_L4_DST_PORT netflow.h 45;" d +NETFLOW_L4_DST_PORT_SIZE netflow.h 46;" d +NETFLOW_L4_SRC_PORT netflow.h 33;" d +NETFLOW_L4_SRC_PORT_SIZE netflow.h 34;" d +NETFLOW_LAST_SWITCHED netflow.h 75;" d +NETFLOW_LAST_SWITCHED_SIZE netflow.h 76;" d +NETFLOW_MAC_ADDR netflow.h 87;" d +NETFLOW_MAC_ADDR_SIZE netflow.h 88;" d +NETFLOW_MAX_PACKET netflow.h 210;" d +NETFLOW_MUL_IGMP_TYPE netflow.h 111;" d +NETFLOW_MUL_IGMP_TYPE_SIZE netflow.h 112;" d +NETFLOW_OUTPUT_SNMP netflow.h 54;" d +NETFLOW_OUTPUT_SNMP_SIZE netflow.h 55;" d +NETFLOW_PAD16 netflow.h 200;" d +NETFLOW_PAD16_SIZE netflow.h 201;" d +NETFLOW_PAD32 netflow.h 203;" d +NETFLOW_PAD32_SIZE netflow.h 204;" d +NETFLOW_PAD64 netflow.h 206;" d +NETFLOW_PAD64_SIZE netflow.h 207;" d +NETFLOW_PAD8 netflow.h 197;" d +NETFLOW_PAD8_SIZE netflow.h 198;" d +NETFLOW_PKTS_32 netflow.h 18;" d +NETFLOW_PKTS_32_SIZE netflow.h 19;" d +NETFLOW_PKTS_64 netflow.h 84;" d +NETFLOW_PKTS_64_SIZE netflow.h 85;" d +NETFLOW_PROT netflow.h 24;" d +NETFLOW_PROT_SIZE netflow.h 25;" d +NETFLOW_ROUTER_SC netflow.h 193;" d +NETFLOW_ROUTER_SC_SIZE netflow.h 194;" d +NETFLOW_SAMPLING_ALGORITHM netflow.h 117;" d +NETFLOW_SAMPLING_ALGORITHM_SIZE netflow.h 118;" d +NETFLOW_SAMPLING_INTERVAL netflow.h 114;" d +NETFLOW_SAMPLING_INTERVAL_SIZE netflow.h 115;" d +NETFLOW_SRC_AS netflow.h 60;" d +NETFLOW_SRC_AS_SIZE netflow.h 61;" d +NETFLOW_SRC_MASK netflow.h 39;" d +NETFLOW_SRC_MASK_SIZE netflow.h 40;" d +NETFLOW_SRC_TOS netflow.h 27;" d +NETFLOW_SRC_TOS_SIZE netflow.h 28;" d +NETFLOW_TCP_FLAGS netflow.h 30;" d +NETFLOW_TCP_FLAGS_SIZE netflow.h 31;" d +NETFLOW_TOTAL_BYTES_EXPORTED netflow.h 132;" d +NETFLOW_TOTAL_BYTES_EXPORTED_SIZE netflow.h 133;" d +NETFLOW_TOTAL_EXPORT_PKTS_SENT netflow.h 135;" d +NETFLOW_TOTAL_EXPORT_PKTS_SENT_SIZE netflow.h 136;" d +NETFLOW_TOTAL_FLOWS_EXPORTED netflow.h 138;" d +NETFLOW_TOTAL_FLOWS_EXPORTED_SIZE netflow.h 139;" d +NETFLOW_UNIX_NSECS netflow.h 178;" d +NETFLOW_UNIX_NSECS_SIZE netflow.h 179;" d +NETFLOW_UNIX_SECS netflow.h 175;" d +NETFLOW_UNIX_SECS_SIZE netflow.h 176;" d +NETFLOW_UPTIME netflow.h 172;" d +NETFLOW_UPTIME_SIZE netflow.h 173;" d +NETFLOW_VERSION netflow.h 166;" d +NETFLOW_VERSION_SIZE netflow.h 167;" d +NETFLOW_VLAN_ID netflow.h 90;" d +NETFLOW_VLAN_ID_SIZE netflow.h 91;" d +NORMAL_INSTALL Makefile /^NORMAL_INSTALL = :$/;" m +NORMAL_UNINSTALL Makefile /^NORMAL_UNINSTALL = :$/;" m +NROFF Makefile /^NROFF = nroff$/;" m +NetFlow netflow.h /^struct NetFlow {$/;" s +NetFlow1 netflow.c /^struct NetFlow NetFlow1 = {$/;" v +NetFlow1_Flow netflow.c /^static uint16_t NetFlow1_Flow[] = {$/;" v file: +NetFlow1_Header netflow.c /^static uint16_t NetFlow1_Header[] = {$/;" v file: +NetFlow5 netflow.c /^struct NetFlow NetFlow5 = {$/;" v +NetFlow5_Flow netflow.c /^static uint16_t NetFlow5_Flow[] = {$/;" v file: +NetFlow5_Header netflow.c /^static uint16_t NetFlow5_Header[] = {$/;" v file: +NetFlow7 netflow.c /^struct NetFlow NetFlow7 = {$/;" v +NetFlow7_Flow netflow.c /^static uint16_t NetFlow7_Flow[] = {$/;" v file: +NetFlow7_Header netflow.c /^static uint16_t NetFlow7_Header[] = {$/;" v file: +OBJEXT Makefile /^OBJEXT = o$/;" m +PACKAGE Makefile /^PACKAGE = fprobe-ulog$/;" m +PACKAGE_BUGREPORT Makefile /^PACKAGE_BUGREPORT = $/;" m +PACKAGE_NAME Makefile /^PACKAGE_NAME = $/;" m +PACKAGE_STRING Makefile /^PACKAGE_STRING = $/;" m +PACKAGE_TARNAME Makefile /^PACKAGE_TARNAME = $/;" m +PACKAGE_VERSION Makefile /^PACKAGE_VERSION = $/;" m +PATH_SEPARATOR Makefile /^PATH_SEPARATOR = :$/;" m +PEER_MIRROR fprobe-ulog.h 126;" d +PEER_ROTATE fprobe-ulog.h 127;" d +POST_INSTALL Makefile /^POST_INSTALL = :$/;" m +POST_UNINSTALL Makefile /^POST_UNINSTALL = :$/;" m +PRE_INSTALL Makefile /^PRE_INSTALL = :$/;" m +PRE_UNINSTALL Makefile /^PRE_UNINSTALL = :$/;" m +PROGRAMS Makefile /^PROGRAMS = $(sbin_PROGRAMS)$/;" m +RANLIB Makefile /^RANLIB = ranlib$/;" m +RECURSIVE_TARGETS Makefile /^RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \\$/;" m +RNDDEV hash.h 45;" d +SCHED fprobe-ulog.h 19;" d +SET_MAKE Makefile /^SET_MAKE = $/;" m +SHELL Makefile /^SHELL = \/bin\/sh$/;" m +SIGALRM_MASK fprobe-ulog.h 108;" d +SIGTERM_MASK fprobe-ulog.h 109;" d +SIGUSR1_MASK fprobe-ulog.h 110;" d +SOURCES Makefile /^SOURCES = $(fprobe_ulog_SOURCES)$/;" m +STRIP Makefile /^STRIP = $/;" m +STRIPPROG Makefile /^ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install$/;" m +SUBDIRS Makefile /^SUBDIRS = libipulog$/;" m +SeqOffset netflow.h /^ unsigned SeqOffset;$/;" m struct:NetFlow +THREADS fprobe-ulog.h 23;" d +Time fprobe-ulog.h /^struct Time {$/;" s +UNPENDING_TIMEOUT fprobe-ulog.h 21;" d +Uflag fprobe-ulog.c /^ Uflag,$/;" e file: +VERSION Makefile /^VERSION = 1.1$/;" m +Version netflow.h /^ unsigned Version;$/;" m struct:NetFlow +Xflag fprobe-ulog.c /^ Xflag,$/;" e file: +_COMMON_H_ common.h 11;" d +_FPROBE_ULOG_H_ fprobe-ulog.h 11;" d +_HASH_H_ hash.h 11;" d +_MEM_H_ mem.h 11;" d +_MY_GETOPT_H_ my_getopt.h 11;" d +_MY_INTTYPES_H_ my_inttypes.h 11;" d +_MY_LOG_H_ my_log.h 11;" d +_NETFLOW_H_ netflow.h 11;" d +ac_ct_CC Makefile /^ac_ct_CC = gcc$/;" m +ac_ct_RANLIB Makefile /^ac_ct_RANLIB = ranlib$/;" m +ac_ct_STRIP Makefile /^ac_ct_STRIP = $/;" m +active_lifetime fprobe-ulog.c /^static int active_lifetime = 300;$/;" v file: +addr fprobe-ulog.h /^ struct sockaddr_in addr;$/;" m struct:peer +aflag fprobe-ulog.c /^ aflag,$/;" e file: +am__aclocal_m4_deps Makefile /^am__aclocal_m4_deps = $(top_srcdir)\/configure.in$/;" m +am__cd Makefile /^am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd$/;" m +am__configure_deps Makefile /^am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\$/;" m +am__depfiles_maybe Makefile /^am__depfiles_maybe =$/;" m +am__fastdepCC_FALSE Makefile /^am__fastdepCC_FALSE = $/;" m +am__fastdepCC_TRUE Makefile /^am__fastdepCC_TRUE = #$/;" m +am__include Makefile /^am__include = include$/;" m +am__installdirs Makefile /^am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"$/;" m +am__leading_dot Makefile /^am__leading_dot = .$/;" m +am__quote Makefile /^am__quote = $/;" m +am__tar Makefile /^am__tar = ${AMTAR} chof - "$$tardir"$/;" m +am__untar Makefile /^am__untar = ${AMTAR} xf -$/;" m +am_fprobe_ulog_OBJECTS Makefile /^am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \\$/;" m +amf Makefile /^ @set fnord $$MAKEFLAGS; amf=$$2; \\$/;" m +arg my_getopt.h /^ char *arg;$/;" m struct:getopt_parms +base fprobe-ulog.h /^ int base;$/;" m struct:snmp_rule +basename fprobe-ulog.h /^ char basename[IFNAMSIZ];$/;" m struct:snmp_rule +bflag fprobe-ulog.c /^ bflag,$/;" e file: +bindir Makefile /^bindir = ${exec_prefix}\/bin$/;" m +blocking fprobe-ulog.c /^ u_int8_t blocking;$/;" m struct:ipulog_handle file: +build Makefile /^build = i686-pc-linux-gnu$/;" m +build_alias Makefile /^build_alias = $/;" m +build_cpu Makefile /^build_cpu = i686$/;" m +build_os Makefile /^build_os = linux-gnu$/;" m +build_triplet Makefile /^build_triplet = i686-pc-linux-gnu$/;" m +build_vendor Makefile /^build_vendor = pc$/;" m +bulk_quantity fprobe-ulog.c /^static unsigned bulk_quantity = BULK_QUANTITY;$/;" v file: +bulk_quantity mem.c /^static unsigned int bulk_quantity;$/;" v file: +cap_buf fprobe-ulog.c /^static char *cap_buf;$/;" v file: +cap_thread fprobe-ulog.c /^void *cap_thread()$/;" f +cflag fprobe-ulog.c /^ cflag,$/;" e file: +cmpmtime fprobe-ulog.c /^inline time_t cmpmtime(struct Time *t1, struct Time *t2)$/;" f +copy_flow fprobe-ulog.c /^inline void copy_flow(struct Flow *src, struct Flow *dst)$/;" f +count my_getopt.h /^ int count;$/;" m struct:getopt_parms +crc16 hash.c /^uint16_t crc16(uint16_t crc, uint8_t val)$/;" f +crc16_poly hash.c /^static uint16_t crc16_poly;$/;" v file: +crc16_table hash.c /^static uint16_t crc16_table[256];$/;" v file: +ctime fprobe-ulog.h /^ struct Time ctime;$/;" m struct:Flow +datadir Makefile /^datadir = ${prefix}\/share$/;" m +depcomp Makefile /^depcomp =$/;" m +depmode Makefile /^CCDEPMODE = depmode=none$/;" m +dflag fprobe-ulog.c /^ dflag,$/;" e file: +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow_F +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow_TL +dir Makefile /^ dir="\/$$dir"; \\$/;" m +dir Makefile /^ dir=''; \\$/;" m +dir Makefile /^ dir=`echo "$$file" | sed -e 's,\/[^\/]*$$,,'`; \\$/;" m +distdir Makefile /^ distdir="$$distdir\/$$subdir" \\$/;" m +distdir Makefile /^ distdir=`$(am__cd) $(distdir) && pwd`; \\$/;" m +dot_seen Makefile /^ dot_seen=yes; \\$/;" m +dot_seen Makefile /^ dot_seen=no; \\$/;" m +dp fprobe-ulog.h /^ uint16_t dp;$/;" m struct:Flow +dp fprobe-ulog.h /^ uint16_t dp;$/;" m struct:Flow_TL +eflag fprobe-ulog.c /^ eflag,$/;" e file: +element_size mem.c /^static unsigned int element_size;$/;" v file: +element_table_size mem.c /^static unsigned int element_table_size;$/;" v file: +emit_cond fprobe-ulog.c /^static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +emit_count fprobe-ulog.c /^static unsigned emit_count;$/;" v file: +emit_mutex fprobe-ulog.c /^static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +emit_packet fprobe-ulog.c /^static uint8_t emit_packet[NETFLOW_MAX_PACKET];$/;" v file: +emit_pkts fprobe-ulog.c /^static unsigned emit_pkts, emit_queue;$/;" v file: +emit_queue fprobe-ulog.c /^static unsigned emit_pkts, emit_queue;$/;" v file: +emit_rate_bytes fprobe-ulog.c /^static unsigned emit_rate_bytes, emit_rate_delay;$/;" v file: +emit_rate_delay fprobe-ulog.c /^static unsigned emit_rate_bytes, emit_rate_delay;$/;" v file: +emit_sequence fprobe-ulog.c /^static uint32_t emit_sequence;$/;" v file: +emit_thread fprobe-ulog.c /^void *emit_thread()$/;" f +emit_time fprobe-ulog.c /^static struct Time emit_time;$/;" v file: +emit_timeout fprobe-ulog.c /^static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT;$/;" v file: +empty_fix Makefile /^ empty_fix=.; \\$/;" m +empty_fix Makefile /^ empty_fix=; \\$/;" m +exec_prefix Makefile /^exec_prefix = ${prefix}$/;" m +ext Makefile /^ *) ext='8' ;; \\$/;" m +ext Makefile /^ ext=`echo $$i | sed -e 's\/^.*\\\\.\/\/'`; \\$/;" m +f Makefile /^ f=`echo "$$p1" | sed 's,^.*\/,,;$(transform);s\/$$\/$(EXEEXT)\/'`; \\$/;" m +f Makefile /^ f=`echo "$$p" | sed 's,^.*\/,,;s\/$(EXEEXT)$$\/\/;$(transform);s\/$$\/$(EXEEXT)\/'`; \\$/;" m +fail Makefile /^ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\$/;" m +fd fprobe-ulog.c /^ int fd;$/;" m struct:ipulog_handle file: +file Makefile /^ $(srcdir)\/*) file=`echo "$$file" | sed "s|^$$srcdirstrip\/||"`;; \\$/;" m +file Makefile /^ $(top_srcdir)\/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip\/|$(top_builddir)\/|"`;; \\$/;" m +fill fprobe-ulog.c /^void *fill(int fields, uint16_t *format, struct Flow *flow, void *p)$/;" f +find fprobe-ulog.c /^struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev)$/;" f +first mem.h /^ void *first;$/;" m struct:Mem +flag my_getopt.h /^ int flag;$/;" m struct:getopt_parms +flags fprobe-ulog.h /^ int flags;$/;" m struct:Flow +flows fprobe-ulog.c /^static struct Flow *flows[1 << HASH_BITS];$/;" v file: +flows_emit fprobe-ulog.c /^static struct Flow *flows_emit;$/;" v file: +flows_fragmented fprobe-ulog.c /^static unsigned flows_total, flows_fragmented;$/;" v file: +flows_mutex fprobe-ulog.c /^static pthread_mutex_t flows_mutex[1 << HASH_BITS];$/;" v file: +flows_total fprobe-ulog.c /^static unsigned flows_total, flows_fragmented;$/;" v file: +fprobe_ulog_DEPENDENCIES Makefile /^fprobe_ulog_DEPENDENCIES = libipulog\/libipulog.a$/;" m +fprobe_ulog_LDADD Makefile /^fprobe_ulog_LDADD = libipulog\/libipulog.a$/;" m +fprobe_ulog_OBJECTS Makefile /^fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS)$/;" m +fprobe_ulog_SOURCES Makefile /^fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \\$/;" m +frag_lifetime fprobe-ulog.c /^static int frag_lifetime = 30;$/;" v file: +free mem.h /^ unsigned int free;$/;" m struct:Mem +free_elements mem.c /^unsigned int free_elements;$/;" v +getopt_parms my_getopt.h /^struct getopt_parms {$/;" s +gettime fprobe-ulog.c /^void gettime(struct Time *now)$/;" f +getuptime fprobe-ulog.c /^uint32_t getuptime(struct Time *t)$/;" f +gflag fprobe-ulog.c /^ gflag,$/;" e file: +hash hash.c /^hash_t hash(void *p, int size)$/;" f +hash_flow fprobe-ulog.c /^hash_t hash_flow(struct Flow *flow)$/;" f +hash_init hash.c /^void hash_init()$/;" f +hash_t hash.h /^typedef uint16_t hash_t;$/;" t +hash_t hash.h /^typedef uint8_t hash_t;$/;" t +here Makefile /^ here=`$(am__cd) $(top_builddir) && pwd` \\$/;" m +here Makefile /^ here=`pwd`; \\$/;" m +hflag fprobe-ulog.c /^ hflag,$/;" e file: +host Makefile /^host = i686-pc-linux-gnu$/;" m +host_alias Makefile /^host_alias = $/;" m +host_cpu Makefile /^host_cpu = i686$/;" m +host_os Makefile /^host_os = linux-gnu$/;" m +host_triplet Makefile /^host_triplet = i686-pc-linux-gnu$/;" m +host_vendor Makefile /^host_vendor = pc$/;" m +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow_F +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow_TL +ident fprobe-ulog.c /^static char ident[256] = "fprobe-ulog";$/;" v file: +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow_F +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow_TL +ile Makefile /^ else file=$$i; fi; \\$/;" m +ile Makefile /^ if test -f $(srcdir)\/$$i; then file=$(srcdir)\/$$i; \\$/;" m +inactive_lifetime fprobe-ulog.c /^static int inactive_lifetime = 60;$/;" v file: +include_option Makefile /^ include_option=--etags-include; \\$/;" m +include_option Makefile /^ include_option=--include; \\$/;" m +includedir Makefile /^includedir = ${prefix}\/include$/;" m +info_debug fprobe-ulog.c /^void info_debug()$/;" f +infodir Makefile /^infodir = ${prefix}\/info$/;" m +inst Makefile /^ inst=`echo $$i | sed -e 's\/\\\\.[0-9a-z]*$$\/\/'`; \\$/;" m +inst Makefile /^ inst=`echo $$inst | sed '$(transform)'`.$$ext; \\$/;" m +inst Makefile /^ inst=`echo $$inst | sed -e 's\/^.*\\\/\/\/'`; \\$/;" m +install_sh Makefile /^install_sh = \/home\/sapan\/fprobe-ulog-1.1\/install-sh$/;" m +install_sh_DATA Makefile /^install_sh_DATA = $(install_sh) -c -m 644$/;" m +install_sh_PROGRAM Makefile /^ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\$/;" m +install_sh_PROGRAM Makefile /^install_sh_PROGRAM = $(install_sh) -c$/;" m +install_sh_SCRIPT Makefile /^install_sh_SCRIPT = $(install_sh) -c$/;" m +int16_t my_inttypes.h /^typedef short int16_t;$/;" t +int32_t my_inttypes.h /^typedef int int32_t;$/;" t +int32_t my_inttypes.h /^typedef long int32_t;$/;" t +int64_t my_inttypes.h /^typedef long int64_t;$/;" t +int64_t my_inttypes.h /^typedef long long int64_t;$/;" t +int8_t my_inttypes.h /^typedef signed char int8_t;$/;" t +ipulog_handle fprobe-ulog.c /^struct ipulog_handle {$/;" s file: +killed fprobe-ulog.c /^static int killed;$/;" v file: +l2 Makefile /^ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \\$/;" m +laddr fprobe-ulog.h /^ struct sockaddr_in laddr;$/;" m struct:peer +last mem.h /^ void *last;$/;" m struct:Mem +last_nlhdr fprobe-ulog.c /^ struct nlmsghdr* last_nlhdr;$/;" m struct:ipulog_handle file: +len fprobe-ulog.h /^ int len;$/;" m struct:snmp_rule +lflag fprobe-ulog.c /^ lflag,$/;" e file: +libdir Makefile /^libdir = ${exec_prefix}\/lib$/;" m +libexecdir Makefile /^libexecdir = ${exec_prefix}\/libexec$/;" m +limit_memory mem.c /^static unsigned int limit_memory;$/;" v file: +list Makefile /^ *.8*) list="$$list $$i" ;; \\$/;" m +list Makefile /^ *) list='$(SUBDIRS)' ;; \\$/;" m +list Makefile /^ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \\$/;" m +list Makefile /^ list='$(DISTFILES)'; for file in $$list; do \\$/;" m +list Makefile /^ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \\$/;" m +list Makefile /^ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \\$/;" m +list Makefile /^ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \\$/;" m +list Makefile /^ list='$(SUBDIRS)'; for subdir in $$list; do \\$/;" m +local fprobe-ulog.c /^ struct sockaddr_nl local;$/;" m struct:ipulog_handle file: +local_target Makefile /^ local_target="$$target"; \\$/;" m +local_target Makefile /^ local_target="$$target-am"; \\$/;" m +localstatedir Makefile /^localstatedir = ${prefix}\/var$/;" m +log_dest fprobe-ulog.c /^static unsigned log_dest = MY_LOG_SYSLOG;$/;" v file: +main fprobe-ulog.c /^int main(int argc, char **argv)$/;" f +malloc_size mem.c /^static unsigned int malloc_size;$/;" v file: +man8dir Makefile /^man8dir = $(mandir)\/man8$/;" m +man_MANS Makefile /^man_MANS = fprobe-ulog.8$/;" m +mandir Makefile /^mandir = ${prefix}\/man$/;" m +mark_is_tos fprobe-ulog.c 141;" d file: +mem_alloc mem.c /^void *mem_alloc()$/;" f +mem_free mem.c /^void mem_free(void *eptr)$/;" f +mem_index_t mem.h /^typedef uint16_t mem_index_t;$/;" t +mem_index_t mem.h /^typedef uint8_t mem_index_t;$/;" t +mem_index_t mem.h /^typedef void* mem_index_t;$/;" t +mem_index_table_size mem.c /^static unsigned int mem_index_table_size;$/;" v file: +mem_init mem.c /^int mem_init(unsigned int element, unsigned int bulk, unsigned int limit)$/;" f +mem_mutex mem.c /^static pthread_mutex_t mem_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +mflag fprobe-ulog.c /^ mflag,$/;" e file: +mkdir_p Makefile /^mkdir_p = mkdir -p --$/;" m +mkinstalldirs Makefile /^mkinstalldirs = $(SHELL) $(top_srcdir)\/mkinstalldirs$/;" m +mtime fprobe-ulog.h /^ struct Time mtime;$/;" m struct:Flow +my_getopt my_getopt.c /^int my_getopt(int argc, char * const argv[],$/;" f +my_log my_log.c /^void my_log(unsigned level, const char *format, ...)$/;" f +my_log_close my_log.c /^void my_log_close(void)$/;" f +my_log_flags my_log.c /^static unsigned my_log_flags;$/;" v file: +my_log_indent my_log.c /^static char *my_log_indent;$/;" v file: +my_log_min_level my_log.c /^static unsigned my_log_min_level;$/;" v file: +my_log_names my_log.c /^static char *my_log_names[] = {$/;" v file: +my_log_open my_log.c /^void my_log_open(char *indent, unsigned min_level, unsigned flags)$/;" f +name my_getopt.h /^ char name;$/;" m struct:getopt_parms +netflow fprobe-ulog.c /^static struct NetFlow *netflow = &NetFlow5;$/;" v file: +next fprobe-ulog.h /^ struct Flow *next;$/;" m struct:Flow +next mem.h /^ struct Mem *next;$/;" m struct:Mem +nflag fprobe-ulog.c /^ nflag,$/;" e file: +npeers fprobe-ulog.c /^static int npeers, npeers_rot;$/;" v file: +npeers_rot fprobe-ulog.c /^static int npeers, npeers_rot;$/;" v file: +nsnmp_rules fprobe-ulog.c /^static int nsnmp_rules;$/;" v file: +off_tl fprobe-ulog.c /^static int off_tl;$/;" v file: +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow_F +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow_TL +oldincludedir Makefile /^oldincludedir = \/usr\/include$/;" m +p1 Makefile /^ p1=`echo $$p|sed 's\/$(EXEEXT)$$\/\/'`; \\$/;" m +parms fprobe-ulog.c /^static struct getopt_parms parms[] = {$/;" v file: +peer fprobe-ulog.c /^ struct sockaddr_nl peer;$/;" m struct:ipulog_handle file: +peer fprobe-ulog.h /^struct peer {$/;" s +peers fprobe-ulog.c /^static struct peer *peers;$/;" v file: +pending_head fprobe-ulog.c /^static struct Flow *pending_head, *pending_tail;$/;" v file: +pending_queue_length fprobe-ulog.c /^static unsigned pending_queue_length = 100;$/;" v file: +pending_queue_trace fprobe-ulog.c /^static unsigned pending_queue_trace, pending_queue_trace_candidate;$/;" v file: +pending_queue_trace_candidate fprobe-ulog.c /^static unsigned pending_queue_trace, pending_queue_trace_candidate;$/;" v file: +pending_tail fprobe-ulog.c /^static struct Flow *pending_head, *pending_tail;$/;" v file: +pid fprobe-ulog.c /^static pid_t pid;$/;" v file: +pidfile fprobe-ulog.c /^static FILE *pidfile;$/;" v file: +pidfilepath fprobe-ulog.c /^static char *pidfilepath;$/;" v file: +pkgdatadir Makefile /^pkgdatadir = $(datadir)\/fprobe-ulog$/;" m +pkgincludedir Makefile /^pkgincludedir = $(includedir)\/fprobe-ulog$/;" m +pkglibdir Makefile /^pkglibdir = $(libdir)\/fprobe-ulog$/;" m +pkts fprobe-ulog.h /^ unsigned long pkts;$/;" m struct:Flow +pkts_ignored fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_lost_capture fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_lost_unpending fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_pending fprobe-ulog.c /^static unsigned pkts_pending, pkts_pending_done;$/;" v file: +pkts_pending_done fprobe-ulog.c /^static unsigned pkts_pending, pkts_pending_done;$/;" v file: +pkts_total fprobe-ulog.c /^static unsigned pkts_total, pkts_total_fragmented;$/;" v file: +pkts_total_fragmented fprobe-ulog.c /^static unsigned pkts_total, pkts_total_fragmented;$/;" v file: +prefix Makefile /^prefix = \/usr\/local$/;" m +program_transform_name Makefile /^program_transform_name = s,x,x,$/;" m +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow_F +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow_TL +put_into fprobe-ulog.c /^int put_into(struct Flow *flow, int flag$/;" f +pw fprobe-ulog.c /^static struct passwd *pw = 0;$/;" v file: +qflag fprobe-ulog.c /^ qflag,$/;" e file: +rev Makefile /^ rev="$$subdir $$rev"; \\$/;" m +rev Makefile /^ rev="$$rev ."; \\$/;" m +rev Makefile /^ rev=''; for subdir in $$list; do \\$/;" m +rflag fprobe-ulog.c /^ rflag,$/;" e file: +root mem.c /^static struct Mem *root;$/;" v file: +sbinPROGRAMS_INSTALL Makefile /^sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)$/;" m +sbin_PROGRAMS Makefile /^sbin_PROGRAMS = fprobe-ulog$(EXEEXT)$/;" m +sbindir Makefile /^sbindir = ${exec_prefix}\/sbin$/;" m +scan_cond fprobe-ulog.c /^static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +scan_frag_dreg fprobe-ulog.c /^static struct Flow *scan_frag_dreg;$/;" v file: +scan_interval fprobe-ulog.c /^static unsigned scan_interval = 5;$/;" v file: +scan_mutex fprobe-ulog.c /^static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +scan_thread fprobe-ulog.c /^void *scan_thread()$/;" f +sched_max fprobe-ulog.c /^static int sched_min, sched_max;$/;" v file: +sched_min fprobe-ulog.c /^static int sched_min, sched_max;$/;" v file: +schedp fprobe-ulog.c /^static struct sched_param schedp;$/;" v file: +sec fprobe-ulog.h /^ time_t sec;$/;" m struct:Time +seq fprobe-ulog.h /^ uint32_t seq;$/;" m struct:peer +setuser fprobe-ulog.c /^void setuser() {$/;" f +sflag fprobe-ulog.c /^ sflag,$/;" e file: +sharedstatedir Makefile /^sharedstatedir = ${prefix}\/com$/;" m +shuffle_table hash.c /^static uint8_t shuffle_table[256];$/;" v file: +sig_mask fprobe-ulog.c /^static sigset_t sig_mask;$/;" v file: +sighandler fprobe-ulog.c /^void sighandler(int sig)$/;" f +sigs fprobe-ulog.c /^static int sigs;$/;" v file: +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow_F +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow_TL +size fprobe-ulog.h /^ unsigned long size;$/;" m struct:Flow +sizeF fprobe-ulog.h /^ unsigned long sizeF;$/;" m struct:Flow +sizeP fprobe-ulog.h /^ unsigned long sizeP;$/;" m struct:Flow +size_total fprobe-ulog.c /^static uint64_t size_total;$/;" v file: +snmp_index fprobe-ulog.c /^uint16_t snmp_index(char *name) {$/;" f +snmp_rule fprobe-ulog.h /^struct snmp_rule {$/;" s +snmp_rule_t fprobe-ulog.h /^} snmp_rule_t;$/;" v +snmp_rules fprobe-ulog.c /^static struct snmp_rule *snmp_rules;$/;" v file: +sock fprobe-ulog.h /^ int sock;$/;" m struct:peer +sockbufsize fprobe-ulog.c /^static int sockbufsize;$/;" v file: +sp fprobe-ulog.h /^ uint16_t sp;$/;" m struct:Flow +sp fprobe-ulog.h /^ uint16_t sp;$/;" m struct:Flow_TL +srcdir Makefile /^srcdir = .$/;" m +start_time fprobe-ulog.c /^static struct Time start_time;$/;" v file: +start_time_offset fprobe-ulog.c /^static long start_time_offset;$/;" v file: +subdir Makefile /^subdir = src$/;" m +sysconfdir Makefile /^sysconfdir = ${prefix}\/etc$/;" m +tags Makefile /^ tags="$$tags $$include_option=$$here\/$$subdir\/TAGS"; \\$/;" m +tags Makefile /^ tags=; \\$/;" m +target Makefile /^ target=`echo $@ | sed s\/-recursive\/\/`; \\$/;" m +target Makefile /^target = i686-pc-linux-gnu$/;" m +target_alias Makefile /^target_alias = $/;" m +target_cpu Makefile /^target_cpu = i686$/;" m +target_os Makefile /^target_os = linux-gnu$/;" m +target_triplet Makefile /^target_triplet = i686-pc-linux-gnu$/;" m +target_vendor Makefile /^target_vendor = pc$/;" m +tcp_flags fprobe-ulog.h /^ uint8_t tcp_flags;$/;" m struct:Flow +tflag fprobe-ulog.c /^ tflag,$/;" e file: +thid fprobe-ulog.c /^static pthread_t thid;$/;" v file: +top_builddir Makefile /^top_builddir = ..$/;" m +top_distdir Makefile /^ top_distdir="$$top_distdir" \\$/;" m +top_distdir Makefile /^ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \\$/;" m +top_srcdir Makefile /^top_srcdir = ..$/;" m +topsrcdirstrip Makefile /^ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \\$/;" m +tos fprobe-ulog.h /^ uint8_t tos;$/;" m struct:Flow +total_elements mem.c /^unsigned int total_elements;$/;" v +total_memory mem.c /^unsigned int total_memory;$/;" v +transform Makefile /^transform = $(program_transform_name)$/;" m +type fprobe-ulog.h /^ int type;$/;" m struct:peer +uflag fprobe-ulog.c /^ uflag,$/;" e file: +uint16_t my_inttypes.h /^typedef unsigned short uint16_t;$/;" t +uint32_t my_inttypes.h /^typedef unsigned int uint32_t;$/;" t +uint32_t my_inttypes.h /^typedef unsigned long uint32_t;$/;" t +uint64_t my_inttypes.h /^typedef unsigned long long uint64_t;$/;" t +uint64_t my_inttypes.h /^typedef unsigned long uint64_t;$/;" t +uint8_t my_inttypes.h /^typedef unsigned char uint8_t;$/;" t +ulog_gmask fprobe-ulog.c /^static uint32_t ulog_gmask = 1;$/;" v file: +ulog_handle fprobe-ulog.c /^static struct ipulog_handle *ulog_handle;$/;" v file: +unique Makefile /^ test -n "$$unique" || unique=$$empty_fix; \\$/;" m +unique Makefile /^ unique=`for i in $$list; do \\$/;" m +unpending_cond fprobe-ulog.c /^static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +unpending_mutex fprobe-ulog.c /^static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +unpending_thread fprobe-ulog.c /^void *unpending_thread()$/;" f +unpending_timeout fprobe-ulog.c /^static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT;$/;" v file: +usage fprobe-ulog.c /^void usage()$/;" f +usec fprobe-ulog.h /^ long usec;$/;" m struct:Time +verbosity fprobe-ulog.c /^static unsigned verbosity = 6;$/;" v file: +vflag fprobe-ulog.c /^ vflag,$/;" e file: diff --git a/src/tak b/src/tak new file mode 100644 index 0000000..e69de29 diff --git a/stamp-h1 b/stamp-h1 new file mode 100644 index 0000000..4547fe1 --- /dev/null +++ b/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/trunk/AUTHORS b/trunk/AUTHORS new file mode 100644 index 0000000..02b1fe1 --- /dev/null +++ b/trunk/AUTHORS @@ -0,0 +1,25 @@ +Slava Astashonok + +Thanks: +- Alex Antropoff : + note about RedHad's pcap.h location + +- Daniel Senie : + contrib/redhat-init.d script + +- Dmitry Vagin : + more universal SNMP ifIndexes workaround (tricky filters) + +- Thierry MARTIN + NetFlow v7 fix + +- Viktor Fomichev + Cisco's ICMP type/code storing method + +- Alexey A. Stroganov + notes about trailer bug and flow's start time corruption + +- Abraham van der Merwe + using if_nametoindex(), using netfilter mark value as ToS flag + +Lot of thanks to other folks for support and [not so ;-)] smart questions. diff --git a/trunk/ChangeLog b/trunk/ChangeLog new file mode 100644 index 0000000..a5e3c2d --- /dev/null +++ b/trunk/ChangeLog @@ -0,0 +1,26 @@ +2005-01-30 Slava Astashonok + + * Release 1.1: bugfixes, features enhancement. + + * Changes: + - was fixed vulnerability to a DoS attack, as described in "Denial + of Service via Algorithmic Complexity Attacks" by Scott A + Crosby and Dan S Wallach: http://www.cs.rice.edu/~scrosby/hash, + by strengthening the crc16 hash function implementation; + note that xor8 and xor16 hashes remain vulnerable + - default hash was changed to crc16 + - -B and -M options were added + - if_nametoindex() used as default action to find SNMP-index + +2004-09-21 Slava Astashonok + + * Release 1.0.6: minor bugfixes. + + * Changes: + - security fix for "change user" feature + - typo in CAPTURE_SIZE definition was fixed + - debian/* files were removed + +2004-08-14 Slava Astashonok + + * Release 1.0.5: initial ULOG fork diff --git a/trunk/Makefile.in b/trunk/Makefile.in new file mode 100644 index 0000000..fcc345c --- /dev/null +++ b/trunk/Makefile.in @@ -0,0 +1,582 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + TODO config.guess config.sub install-sh missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +EXTRA_DIST = autogen.sh fprobe-ulog.spec version \ + contrib/tg.sh contrib/ipt_ULOG.patch + +SUBDIRS = src +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \ + cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/contrib + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/config.log b/trunk/config.log new file mode 100644 index 0000000..a98ad1a --- /dev/null +++ b/trunk/config.log @@ -0,0 +1,486 @@ +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.59. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = joyce +uname -m = i686 +uname -r = 2.6.19-skas3-v9-pre9 +uname -s = Linux +uname -v = #9 SMP Fri Jan 12 09:39:05 EST 2007 + +/usr/bin/uname -p = Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz +/bin/uname -X = unknown + +/bin/arch = i686 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /bin +PATH: /sbin +PATH: /usr/bin +PATH: /usr/sbin +PATH: /usr/local/bin +PATH: /usr/local/sbin +PATH: /opt/bin +PATH: /usr/i686-pc-linux-gnu/gcc-bin/4.1.1 + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1328: checking build system type +configure:1346: result: i686-pc-linux-gnu +configure:1354: checking host system type +configure:1368: result: i686-pc-linux-gnu +configure:1376: checking target system type +configure:1390: result: i686-pc-linux-gnu +configure:1418: checking for a BSD-compatible install +configure:1473: result: /bin/install -c +configure:1484: checking whether build environment is sane +configure:1527: result: yes +configure:1592: checking for gawk +configure:1608: found /bin/gawk +configure:1618: result: gawk +configure:1628: checking whether make sets $(MAKE) +configure:1648: result: yes +configure:1865: checking for gcc +configure:1881: found /usr/bin/gcc +configure:1891: result: gcc +configure:2135: checking for C compiler version +configure:2138: gcc --version &5 +gcc (GCC) 4.1.1 (Gentoo 4.1.1) +Copyright (C) 2006 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:2141: $? = 0 +configure:2143: gcc -v &5 +Using built-in specs. +Target: i686-pc-linux-gnu +Configured with: /var/tmp/portage/gcc-4.1.1/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu +Thread model: posix +gcc version 4.1.1 (Gentoo 4.1.1) +configure:2146: $? = 0 +configure:2148: gcc -V &5 +gcc: '-V' option must have argument +configure:2151: $? = 1 +configure:2174: checking for C compiler default output file name +configure:2177: gcc conftest.c >&5 +configure:2180: $? = 0 +configure:2226: result: a.out +configure:2231: checking whether the C compiler works +configure:2237: ./a.out +configure:2240: $? = 0 +configure:2257: result: yes +configure:2264: checking whether we are cross compiling +configure:2266: result: no +configure:2269: checking for suffix of executables +configure:2271: gcc -o conftest conftest.c >&5 +configure:2274: $? = 0 +configure:2299: result: +configure:2305: checking for suffix of object files +configure:2326: gcc -c conftest.c >&5 +configure:2329: $? = 0 +configure:2351: result: o +configure:2355: checking whether we are using the GNU C compiler +configure:2379: gcc -c conftest.c >&5 +configure:2385: $? = 0 +configure:2388: test -z || test ! -s conftest.err +configure:2391: $? = 0 +configure:2394: test -s conftest.o +configure:2397: $? = 0 +configure:2410: result: yes +configure:2416: checking whether gcc accepts -g +configure:2437: gcc -c -g conftest.c >&5 +configure:2443: $? = 0 +configure:2446: test -z || test ! -s conftest.err +configure:2449: $? = 0 +configure:2452: test -s conftest.o +configure:2455: $? = 0 +configure:2466: result: yes +configure:2483: checking for gcc option to accept ANSI C +configure:2553: gcc -c -g -O2 conftest.c >&5 +configure:2559: $? = 0 +configure:2562: test -z || test ! -s conftest.err +configure:2565: $? = 0 +configure:2568: test -s conftest.o +configure:2571: $? = 0 +configure:2589: result: none needed +configure:2607: gcc -c -g -O2 conftest.c >&5 +conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me' +configure:2613: $? = 1 +configure: failed program was: +| #ifndef __cplusplus +| choke me +| #endif +configure:2754: checking for style of include used by make +configure:2782: result: GNU +configure:2810: checking dependency style of gcc +configure:2900: result: none +configure:2930: checking for a BSD-compatible install +configure:2985: result: /bin/install -c +configure:3037: checking for ranlib +configure:3053: found /usr/bin/ranlib +configure:3064: result: ranlib +configure:3079: checking for pthread_create in -lpthread +configure:3109: gcc -o conftest -g -O2 conftest.c -lpthread >&5 +configure:3115: $? = 0 +configure:3118: test -z || test ! -s conftest.err +configure:3121: $? = 0 +configure:3124: test -s conftest +configure:3127: $? = 0 +configure:3140: result: yes +configure:3162: checking how to run the C preprocessor +configure:3197: gcc -E conftest.c +configure:3203: $? = 0 +configure:3235: gcc -E conftest.c +conftest.c:12:28: error: ac_nonexistent.h: No such file or directory +configure:3241: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE "fprobe-ulog" +| #define VERSION "1.1" +| #define HAVE_LIBPTHREAD 1 +| /* end confdefs.h. */ +| #include +configure:3280: result: gcc -E +configure:3304: gcc -E conftest.c +configure:3310: $? = 0 +configure:3342: gcc -E conftest.c +conftest.c:12:28: error: ac_nonexistent.h: No such file or directory +configure:3348: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE "fprobe-ulog" +| #define VERSION "1.1" +| #define HAVE_LIBPTHREAD 1 +| /* end confdefs.h. */ +| #include +configure:3392: checking for egrep +configure:3402: result: grep -E +configure:3407: checking for ANSI C header files +configure:3432: gcc -c -g -O2 conftest.c >&5 +configure:3438: $? = 0 +configure:3441: test -z || test ! -s conftest.err +configure:3444: $? = 0 +configure:3447: test -s conftest.o +configure:3450: $? = 0 +configure:3539: gcc -o conftest -g -O2 conftest.c -lpthread >&5 +conftest.c: In function 'main': +conftest.c:29: warning: incompatible implicit declaration of built-in function 'exit' +configure:3542: $? = 0 +configure:3544: ./conftest +configure:3547: $? = 0 +configure:3562: result: yes +configure:3586: checking for sys/types.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for sys/stat.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for stdlib.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for string.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for memory.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for strings.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for inttypes.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for stdint.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3586: checking for unistd.h +configure:3602: gcc -c -g -O2 conftest.c >&5 +configure:3608: $? = 0 +configure:3611: test -z || test ! -s conftest.err +configure:3614: $? = 0 +configure:3617: test -s conftest.o +configure:3620: $? = 0 +configure:3631: result: yes +configure:3644: checking for inttypes.h +configure:3649: result: yes +configure:5018: checking which memory bulk indexing mode to use +configure:5046: result: "ptr" +configure:5055: checking which hash type and size to use +configure:5098: result: "crc16" +configure:5102: checking whether to enable uptime trick +configure:5113: result: yes +configure:5128: checking whether to enable icmp trick +configure:5139: result: yes +configure:5163: checking whether to enable debugging +configure:5174: result: no +configure:5200: checking whether to enable runtime messages +configure:5220: result: no +configure:5226: checking directory to store pidfiles +configure:5241: result: "/var/run" +configure:5310: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on joyce + +config.status:745: creating Makefile +config.status:745: creating src/Makefile +config.status:745: creating src/libipulog/Makefile +config.status:811: creating config.h +config.status:1117: executing depfiles commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=i686-pc-linux-gnu +ac_cv_build_alias=i686-pc-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +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_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_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_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=i686-pc-linux-gnu +ac_cv_host_alias=i686-pc-linux-gnu +ac_cv_lib_pthread_pthread_create=yes +ac_cv_objext=o +ac_cv_path_install='/bin/install -c' +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_egrep='grep -E' +ac_cv_prog_make_make_set=yes +ac_cv_target=i686-pc-linux-gnu +ac_cv_target_alias=i686-pc-linux-gnu +am_cv_CC_dependencies_compiler_type=none + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar' +AUTOCONF='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf' +AUTOHEADER='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader' +AUTOMAKE='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=none' +CFLAGS='-g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DATE='2007-10-26' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='grep -E' +EXEEXT='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' +LDFLAGS='' +LIBOBJS='' +LIBS='-lpthread ' +LTLIBOBJS='' +MAKEINFO='${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo' +OBJEXT='o' +PACKAGE='fprobe-ulog' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +RANLIB='ranlib' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='' +VERSION='1.1' +ac_ct_CC='gcc' +ac_ct_RANLIB='ranlib' +ac_ct_STRIP='' +am__fastdepCC_FALSE='' +am__fastdepCC_TRUE='#' +am__include='include' +am__leading_dot='.' +am__quote='' +am__tar='${AMTAR} chof - "$$tardir"' +am__untar='${AMTAR} xf -' +bindir='${exec_prefix}/bin' +build='i686-pc-linux-gnu' +build_alias='' +build_cpu='i686' +build_os='linux-gnu' +build_vendor='pc' +datadir='${prefix}/share' +exec_prefix='${prefix}' +host='i686-pc-linux-gnu' +host_alias='' +host_cpu='i686' +host_os='linux-gnu' +host_vendor='pc' +includedir='${prefix}/include' +infodir='${prefix}/info' +install_sh='/home/sapan/fprobe-ulog-1.1/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localstatedir='${prefix}/var' +mandir='${prefix}/man' +mkdir_p='mkdir -p --' +oldincludedir='/usr/include' +prefix='/usr/local' +program_transform_name='s,x,x,' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='i686-pc-linux-gnu' +target_alias='' +target_cpu='i686' +target_os='linux-gnu' +target_vendor='pc' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define DEBUG (0) +#define HASH_BITS 16 +#define HASH_TYPE_CRC +#define HAVE_INTTYPES_H +#define HAVE_INTTYPES_H 1 +#define HAVE_LIBPTHREAD 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define ICMP_TRICK +#define MEM_BITS 0 +#define OS_LINUX +#define PACKAGE "fprobe-ulog" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_NAME "" +#define PACKAGE_STRING "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PID_DIR "/var/run" +#define STDC_HEADERS 1 +#define UPTIME_TRICK +#define VERSION "1.1" + +configure: exit 0 diff --git a/trunk/config.status b/trunk/config.status new file mode 100755 index 0000000..c463a7c --- /dev/null +++ b/trunk/config.status @@ -0,0 +1,1208 @@ +#! /bin/sh +# 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/sh} +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" Makefile src/Makefile src/libipulog/Makefile" +config_headers=" config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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 ." +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.59, + with options \"\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/bin/install -c" +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 + echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6 + exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion +fi + +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="" ac_aux_dir="." + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libipulog/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libipulog/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/sh,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,,;t t +s,@PACKAGE_TARNAME@,,;t t +s,@PACKAGE_VERSION@,,;t t +s,@PACKAGE_STRING@,,;t t +s,@PACKAGE_BUGREPORT@,,;t t +s,@exec_prefix@,${prefix},;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,-lpthread ,;t t +s,@build@,i686-pc-linux-gnu,;t t +s,@build_cpu@,i686,;t t +s,@build_vendor@,pc,;t t +s,@build_os@,linux-gnu,;t t +s,@host@,i686-pc-linux-gnu,;t t +s,@host_cpu@,i686,;t t +s,@host_vendor@,pc,;t t +s,@host_os@,linux-gnu,;t t +s,@target@,i686-pc-linux-gnu,;t t +s,@target_cpu@,i686,;t t +s,@target_vendor@,pc,;t t +s,@target_os@,linux-gnu,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@CYGPATH_W@,echo,;t t +s,@PACKAGE@,fprobe-ulog,;t t +s,@VERSION@,1.1,;t t +s,@ACLOCAL@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9,;t t +s,@AUTOCONF@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf,;t t +s,@AUTOMAKE@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9,;t t +s,@AUTOHEADER@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader,;t t +s,@MAKEINFO@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo,;t t +s,@install_sh@,/home/sapan/fprobe-ulog-1.1/install-sh,;t t +s,@STRIP@,,;t t +s,@ac_ct_STRIP@,,;t t +s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t +s,@mkdir_p@,mkdir -p --,;t t +s,@AWK@,gawk,;t t +s,@SET_MAKE@,,;t t +s,@am__leading_dot@,.,;t t +s,@AMTAR@,${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar,;t t +s,@am__tar@,${AMTAR} chof - "$$tardir",;t t +s,@am__untar@,${AMTAR} xf -,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@,,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@DEPDIR@,.deps,;t t +s,@am__include@,include,;t t +s,@am__quote@,,;t t +s,@AMDEP_TRUE@,,;t t +s,@AMDEP_FALSE@,#,;t t +s,@AMDEPBACKSLASH@,\,;t t +s,@CCDEPMODE@,depmode=none,;t t +s,@am__fastdepCC_TRUE@,#,;t t +s,@am__fastdepCC_FALSE@,,;t t +s,@RANLIB@,ranlib,;t t +s,@ac_ct_RANLIB@,ranlib,;t t +s,@CPP@,gcc -E,;t t +s,@EGREP@,grep -E,;t t +s,@DATE@,2007-10-26,;t t +s,@LIBOBJS@,,;t t +s,@LTLIBOBJS@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # grep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done + +{ (exit 0); exit 0; } diff --git a/trunk/configure b/trunk/configure new file mode 100755 index 0000000..de843df --- /dev/null +++ b/trunk/configure @@ -0,0 +1,6612 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 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 Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP DATE LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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 ;; + + -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=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 ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + 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 + + +# 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 its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# 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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +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-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-uptime_trick enable uptime trick default=yes + --enable-icmp_trick enable icmp trick: yes|cisco|no default=yes + --enable-debug enable debugging default=no + --enable-messages enable runtime messages default=no + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-membulk=MODE indexing mode: index8|index16|ptr default=ptr + --with-hash=TYPE hash type: crc16|xor16|xor8 default=crc16 + --with-piddir=DIR pidfiles location default=/var/run + +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 + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style 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 + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(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=. + echo "PATH: $as_dir" +done + +} >&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_sep= +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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$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 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >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 + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# 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}- +am__api_version="1.9" +# 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. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=fprobe-ulog + VERSION=1.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + ac_config_headers="$ac_config_headers config.h" + + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* 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 -std1 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 -std1. */ +int osf4_cc_array ['\x00' == 0 ? 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 +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +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. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + + +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +else + { { echo "$as_me:$LINENO: error: POSIX threads not found" >&5 +echo "$as_me: error: POSIX threads not found" >&2;} + { (exit 1); exit 1; }; } +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#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)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$ac_cv_header_inttypes_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking inttypes.h usability" >&5 +echo $ECHO_N "checking inttypes.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking inttypes.h presence" >&5 +echo $ECHO_N "checking inttypes.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: inttypes.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: inttypes.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: inttypes.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: inttypes.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: inttypes.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: inttypes.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: inttypes.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: inttypes.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: inttypes.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: inttypes.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: inttypes.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_inttypes_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$ac_cv_header_inttypes_h" >&6 + +fi +if test $ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H +_ACEOF + +else + echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + + echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +fi + + + + + +cat >>confdefs.h <<_ACEOF +#define OS_LINUX +_ACEOF + +CFLAGS="$CFLAGS -D_BSD_SOURCE" + + +echo "$as_me:$LINENO: checking which memory bulk indexing mode to use" >&5 +echo $ECHO_N "checking which memory bulk indexing mode to use... $ECHO_C" >&6 + +# Check whether --with-membulk or --without-membulk was given. +if test "${with_membulk+set}" = set; then + withval="$with_membulk" + mem="$withval" +else + mem="ptr" +fi; + +case "$mem" in + ptr) + mem_bits="0" + ;; + index8) + mem_bits="8" + ;; + index16) + mem_bits="16" + ;; + *) + { { echo "$as_me:$LINENO: error: Invalid argument: \"$mem\"" >&5 +echo "$as_me: error: Invalid argument: \"$mem\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +echo "$as_me:$LINENO: result: \"$mem\"" >&5 +echo "${ECHO_T}\"$mem\"" >&6 + +cat >>confdefs.h <<_ACEOF +#define MEM_BITS $mem_bits +_ACEOF + + + +echo "$as_me:$LINENO: checking which hash type and size to use" >&5 +echo $ECHO_N "checking which hash type and size to use... $ECHO_C" >&6 + +# Check whether --with-hash or --without-hash was given. +if test "${with_hash+set}" = set; then + withval="$with_hash" + hash="$withval" +else + hash="crc16" +fi; + +hash_type=`echo "$hash"|cut -b -3` +hash_bits=`echo "$hash"|cut -b 4-` + +if test "$hash_type" = "xor"; then + +cat >>confdefs.h <<_ACEOF +#define HASH_TYPE_XOR +_ACEOF + + if test "$hash_bits" != "8" -a "$hash_bits" != "16"; then + { { echo "$as_me:$LINENO: error: Invalid argument: \"$withval\"" >&5 +echo "$as_me: error: Invalid argument: \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + fi +else + if test "$hash" != "crc16"; then + { { echo "$as_me:$LINENO: error: Invalid argument: \"$hash\"" >&5 +echo "$as_me: error: Invalid argument: \"$hash\"" >&2;} + { (exit 1); exit 1; }; } + fi + +cat >>confdefs.h <<_ACEOF +#define HASH_TYPE_CRC +_ACEOF + +fi + + +cat >>confdefs.h <<_ACEOF +#define HASH_BITS $hash_bits +_ACEOF + +echo "$as_me:$LINENO: result: \"$hash\"" >&5 +echo "${ECHO_T}\"$hash\"" >&6 + + +echo "$as_me:$LINENO: checking whether to enable uptime trick" >&5 +echo $ECHO_N "checking whether to enable uptime trick... $ECHO_C" >&6 +# Check whether --enable-uptime_trick or --disable-uptime_trick was given. +if test "${enable_uptime_trick+set}" = set; then + enableval="$enable_uptime_trick" + uptime_trick="$enableval" +else + uptime_trick="yes" +fi; +case "$uptime_trick" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define UPTIME_TRICK +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking whether to enable icmp trick" >&5 +echo $ECHO_N "checking whether to enable icmp trick... $ECHO_C" >&6 +# Check whether --enable-icmp_trick or --disable-icmp_trick was given. +if test "${enable_icmp_trick+set}" = set; then + enableval="$enable_icmp_trick" + icmp_trick="$enableval" +else + icmp_trick="yes" +fi; +case "$icmp_trick" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICMP_TRICK +_ACEOF + + ;; + cisco) + echo "$as_me:$LINENO: result: yes: cisco" >&5 +echo "${ECHO_T}yes: cisco" >&6 + +cat >>confdefs.h <<_ACEOF +#define UPTIME_TRICK_CISCO +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking whether to enable debugging" >&5 +echo $ECHO_N "checking whether to enable debugging... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + debug="$enableval" +else + debug="no" +fi; +case "$debug" in + no) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + debug_val="0" + ;; + yes) + echo "$as_me:$LINENO: result: all" >&5 +echo "${ECHO_T}all" >&6 + debug_val="-1" + ;; + *) + echo "$as_me:$LINENO: result: custom: $debug" >&5 +echo "${ECHO_T}custom: $debug" >&6 + debug_val="0" + debug=`echo $debug|tr , " "` + for i in $debug; do + debug_val="$debug_val | DEBUG_$i" + done + ;; +esac + +cat >>confdefs.h <<_ACEOF +#define DEBUG ($debug_val) +_ACEOF + + + +echo "$as_me:$LINENO: checking whether to enable runtime messages" >&5 +echo $ECHO_N "checking whether to enable runtime messages... $ECHO_C" >&6 +# Check whether --enable-messages or --disable-messages was given. +if test "${enable_messages+set}" = set; then + enableval="$enable_messages" + messages="$enableval" +else + messages="no" +fi; +case "$messages" in + yes) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<_ACEOF +#define MESSAGES +_ACEOF + + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; +esac + + +echo "$as_me:$LINENO: checking directory to store pidfiles" >&5 +echo $ECHO_N "checking directory to store pidfiles... $ECHO_C" >&6 + +# Check whether --with-piddir or --without-piddir was given. +if test "${with_piddir+set}" = set; then + withval="$with_piddir" + piddir="$withval" +else + piddir="/var/run" +fi; + +cat >>confdefs.h <<_ACEOF +#define PID_DIR "$piddir" +_ACEOF + + echo "$as_me:$LINENO: result: \"$piddir\"" >&5 +echo "${ECHO_T}\"$piddir\"" >&6 + + +CFLAGS="$CFLAGS -D_REENTRANT" +CFLAGS="$CFLAGS -DWALL -W -Wall" + + + +DATE=`date +%Y-%m-%d` + + + ac_config_files="$ac_config_files Makefile src/Makefile src/libipulog/Makefile" + + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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 ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libipulog/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libipulog/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@DATE@,$DATE,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #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. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 || { (exit 1); exit 1; } +fi + diff --git a/trunk/configure.in b/trunk/configure.in new file mode 100644 index 0000000..7116712 --- /dev/null +++ b/trunk/configure.in @@ -0,0 +1,186 @@ +dnl Disable config.cache +define([AC_CACHE_LOAD], ) +define([AC_CACHE_SAVE], ) + +AC_INIT +AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE(fprobe-ulog,1.1) +AM_CONFIG_HEADER(config.h) + +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_RANLIB +dnl AC_CHECK_TOOL(RANLIB, ranlib, :) + +AC_CHECK_LIB(pthread, pthread_create, , [AC_ERROR(POSIX threads not found)]) + +dnl ************************************************ +dnl inttypes + +AC_CHECK_HEADER(inttypes.h, AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, , Have inttypes.h), + [AC_CHECK_SIZEOF(int, 8) + AC_CHECK_SIZEOF(long, 8) + AC_CHECK_SIZEOF(long long, 8)] +) + +dnl ************************************************ +dnl OS type + +AC_DEFINE_UNQUOTED(OS_LINUX, , OS type) +CFLAGS="$CFLAGS -D_BSD_SOURCE" + +dnl ************************************************ +dnl Memory bulk indexing mode + +AC_MSG_CHECKING(which memory bulk indexing mode to use) +AC_ARG_WITH(membulk, + [ --with-membulk=MODE indexing mode: index8|index16|ptr [default=ptr]], + mem="$withval", mem="ptr") + +case "$mem" in + ptr) + mem_bits="0" + ;; + index8) + mem_bits="8" + ;; + index16) + mem_bits="16" + ;; + *) + AC_ERROR(Invalid argument: "$mem") + ;; +esac + +AC_MSG_RESULT("$mem") +AC_DEFINE_UNQUOTED(MEM_BITS, $mem_bits, Memory bulk indexing mode) + +dnl ************************************************ +dnl Hash type + +AC_MSG_CHECKING(which hash type and size to use) +AC_ARG_WITH(hash, + [ --with-hash=TYPE hash type: crc16|xor16|xor8 [default=crc16]], + hash="$withval", hash="crc16") + +hash_type=`echo "$hash"|cut -b -3` +hash_bits=`echo "$hash"|cut -b 4-` + +if test "$hash_type" = "xor"; then + AC_DEFINE_UNQUOTED(HASH_TYPE_XOR, , Hash type) + if test "$hash_bits" != "8" -a "$hash_bits" != "16"; then + AC_ERROR(Invalid argument: "$withval") + fi +else + if test "$hash" != "crc16"; then + AC_ERROR(Invalid argument: "$hash") + fi + AC_DEFINE_UNQUOTED(HASH_TYPE_CRC, , Hash type) +fi + +AC_DEFINE_UNQUOTED(HASH_BITS, $hash_bits , Hash size) +AC_MSG_RESULT("$hash") + +dnl ************************************************ +dnl Uptime trick + +AC_MSG_CHECKING(whether to enable uptime trick) +AC_ARG_ENABLE(uptime_trick, + [ --enable-uptime_trick enable uptime trick [default=yes]], + uptime_trick="$enableval", uptime_trick="yes") +case "$uptime_trick" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(UPTIME_TRICK, , Uptime trick) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl ICMP trick + +AC_MSG_CHECKING(whether to enable icmp trick) +AC_ARG_ENABLE(icmp_trick, + [ --enable-icmp_trick enable icmp trick: yes|cisco|no [default=yes]], + icmp_trick="$enableval", icmp_trick="yes") +case "$icmp_trick" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(ICMP_TRICK, , ICMP trick) + ;; + cisco) + AC_MSG_RESULT(yes: cisco) + AC_DEFINE_UNQUOTED(UPTIME_TRICK_CISCO, , Uptime trick) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl Debugging output + +AC_MSG_CHECKING(whether to enable debugging) +AC_ARG_ENABLE(debug, + [ --enable-debug enable debugging [default=no]], + debug="$enableval", debug="no") +case "$debug" in + no) + AC_MSG_RESULT(no) + debug_val="0" + ;; + yes) + AC_MSG_RESULT(all) + debug_val="-1" + ;; + *) + AC_MSG_RESULT(custom: $debug) + debug_val="0" + debug=`echo $debug|tr , " "` + for i in $debug; do + debug_val="$debug_val | DEBUG_$i" + done + ;; +esac +AC_DEFINE_UNQUOTED(DEBUG, ($debug_val) , Debugging output) + +dnl ************************************************ +dnl Runtime messages + +AC_MSG_CHECKING(whether to enable runtime messages) +AC_ARG_ENABLE(messages, + [ --enable-messages enable runtime messages [default=no]], + messages="$enableval", messages="no") +case "$messages" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(MESSAGES, , Runtime messages) + ;; + *) + AC_MSG_RESULT(no) + ;; +esac + +dnl ************************************************ +dnl Pidfiles location + +AC_MSG_CHECKING(directory to store pidfiles) +AC_ARG_WITH(piddir, + [ --with-piddir=DIR pidfiles location [default=/var/run]], + piddir="$withval", piddir="/var/run") + AC_DEFINE_UNQUOTED(PID_DIR, "$piddir", Pidfiles location) + AC_MSG_RESULT("$piddir") + +dnl ************************************************ + +CFLAGS="$CFLAGS -D_REENTRANT" +CFLAGS="$CFLAGS -DWALL -W -Wall" + +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) +DATE=`date +%Y-%m-%d` +AC_SUBST(DATE) + +AC_OUTPUT(Makefile src/Makefile src/libipulog/Makefile) diff --git a/trunk/mkinstalldirs b/trunk/mkinstalldirs new file mode 100755 index 0000000..18ffa9e --- /dev/null +++ b/trunk/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.2.2.1 2004/02/02 08:06:23 sla Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/trunk/src/Makefile b/trunk/src/Makefile new file mode 100644 index 0000000..f2ec840 --- /dev/null +++ b/trunk/src/Makefile @@ -0,0 +1,560 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +SOURCES = $(fprobe_ulog_SOURCES) + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/fprobe-ulog +pkglibdir = $(libdir)/fprobe-ulog +pkgincludedir = $(includedir)/fprobe-ulog +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +target_triplet = i686-pc-linux-gnu +sbin_PROGRAMS = fprobe-ulog$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(sbin_PROGRAMS) +am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \ + hash.$(OBJEXT) mem.$(OBJEXT) my_getopt.$(OBJEXT) \ + my_log.$(OBJEXT) +fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS) +fprobe_ulog_DEPENDENCIES = libipulog/libipulog.a +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(fprobe_ulog_SOURCES) +DIST_SOURCES = $(fprobe_ulog_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar +AUTOCONF = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf +AUTOHEADER = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader +AUTOMAKE = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATE = 2007-10-26 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = -lpthread +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo +OBJEXT = o +PACKAGE = fprobe-ulog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 1.1 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/sapan/fprobe-ulog-1.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +INCLUDES = -I$(top_srcdir)/src/libipulog/include +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 +SUBDIRS = libipulog +EXTRA_DIST = ${man_MANS} +fprobe_ulog_LDADD = libipulog/libipulog.a +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +fprobe-ulog$(EXEEXT): $(fprobe_ulog_OBJECTS) $(fprobe_ulog_DEPENDENCIES) + @rm -f fprobe-ulog$(EXEEXT) + $(LINK) $(fprobe_ulog_LDFLAGS) $(fprobe_ulog_OBJECTS) $(fprobe_ulog_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-exec-am: install-sbinPROGRAMS + +install-info: install-info-recursive + +install-man: install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man uninstall-sbinPROGRAMS + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man8 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive clean-sbinPROGRAMS ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man8 install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man8 uninstall-sbinPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/src/Makefile.am b/trunk/src/Makefile.am new file mode 100644 index 0000000..fa46d22 --- /dev/null +++ b/trunk/src/Makefile.am @@ -0,0 +1,18 @@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include + +sbin_PROGRAMS = fprobe-ulog +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 + +SUBDIRS = libipulog + +EXTRA_DIST = ${man_MANS} + +fprobe_ulog_LDADD = libipulog/libipulog.a diff --git a/trunk/src/Makefile.in b/trunk/src/Makefile.in new file mode 100644 index 0000000..6c7d54c --- /dev/null +++ b/trunk/src/Makefile.in @@ -0,0 +1,560 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SOURCES = $(fprobe_ulog_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = fprobe-ulog$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(sbin_PROGRAMS) +am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \ + hash.$(OBJEXT) mem.$(OBJEXT) my_getopt.$(OBJEXT) \ + my_log.$(OBJEXT) +fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS) +fprobe_ulog_DEPENDENCIES = libipulog/libipulog.a +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(fprobe_ulog_SOURCES) +DIST_SOURCES = $(fprobe_ulog_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include +fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \ + netflow.c netflow.h \ + hash.c hash.h \ + mem.c mem.h \ + my_getopt.c my_getopt.h \ + my_log.c my_log.h \ + common.h my_inttypes.h + +man_MANS = fprobe-ulog.8 +SUBDIRS = libipulog +EXTRA_DIST = ${man_MANS} +fprobe_ulog_LDADD = libipulog/libipulog.a +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +fprobe-ulog$(EXEEXT): $(fprobe_ulog_OBJECTS) $(fprobe_ulog_DEPENDENCIES) + @rm -f fprobe-ulog$(EXEEXT) + $(LINK) $(fprobe_ulog_LDFLAGS) $(fprobe_ulog_OBJECTS) $(fprobe_ulog_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-exec-am: install-sbinPROGRAMS + +install-info: install-info-recursive + +install-man: install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man uninstall-sbinPROGRAMS + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man8 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive clean-sbinPROGRAMS ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man8 install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man8 uninstall-sbinPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/src/common.h b/trunk/src/common.h new file mode 100644 index 0000000..29961fd --- /dev/null +++ b/trunk/src/common.h @@ -0,0 +1,32 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: common.h,v 1.2.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _COMMON_H_ +#define _COMMON_H_ + +#define DBG my_log(LOG_DEBUG, "DBG: %s:%d", __FILE__, __LINE__) + +#include + +/* Capture*/ +#define DEBUG_C 1 +/* Unpending */ +#define DEBUG_U 2 +/* Scan */ +#define DEBUG_S 4 +/* Emit */ +#define DEBUG_E 8 +/* Memory */ +#define DEBUG_M 16 +/* Fill */ +#define DEBUG_F 32 +/* Info */ +#define DEBUG_I 64 + +#endif diff --git a/trunk/src/fprobe-ulog.8 b/trunk/src/fprobe-ulog.8 new file mode 100644 index 0000000..8d8aa8d --- /dev/null +++ b/trunk/src/fprobe-ulog.8 @@ -0,0 +1,176 @@ +.TH fprobe-ulog 8 "2005-01-29" "fprobe-ulog 1.1" + +.SH NAME +fprobe-ulog \- a NetFlow probe + +.SH SYNOPSIS +.BI fprobe-ulog +[\fIoptions\fR] \fIremote:port[/[local][/type]] ...\fR + +.SH DESCRIPTION +.B fprobe-ulog +\- libipulog-based tool that collect network traffic data and emit it as +NetFlow flows towards the specified collector. + +.SH OPTIONS +.TP +.B -h +Display short help +.TP +.B -U \fI\fR +ULOG group bitwise mask. [default=1] +.TP +.B -s \fI\fR +How often scan for expired flows. [default=5] +.TP +.B -g \fI\fR +Fragmented flow lifetime. [default=30] +.TP +.B -d \fI\fR +Idle flow lifetime (inactive timer). [default=60] +.TP +.B -e \fI\fR +Active flow lifetime (active timer). [default=300] +.TP +.B -n \fI\fR +NetFlow version for use (1, 5, 7). [default=5] +.TP +.B -a \fI
\fR +Use \fIaddress\fR as source for NetFlow flow. +.TP +.B -X \fI\fR +Comma separated list of interface name to SNMP-index conversion rules. +Each \fIrule\fR consists of \fIinterface base name\fR and \fISNMP-index +base\fR separated by colon (e.g. ppp:200). Final SNMP-index is sum of +corresponding \fISNMP-index base\fR and \fIinterface number\fR. +.br +In the above example SNMP-index of interface ppp11 is 211. +.br + +If interface name did not fit to any of conversion rules then SNMP-index +will be taken from kernel. +.TP +.B -M +Use the netfilter mark as Type Of Service value. +.TP +.B -b \fI\fR +Memory bulk size. [default=200 or 10000] +.br +Note that maximum and default values depends on compiling options +(\fI--with-membulk\fR parameter). +.TP +.B -m \fI\fR +Memory limit for flows cache (0=no limit). [default=0] +.TP +.B -q \fI\fR +Pending queue length. [default=100] +.br +Each captured packet at first puts into special buffer called `pending +queue'. Purpose of this buffer is to separate most time-critical packet +capture thread from other. +.TP +.B -B \fI\fR +Kernel capture buffer size (0=don't change). [default=0] +.br +Increase kernel capture buffer size is most adequate way to prevent +packets loss. +.br +Note that maximum allowed size of the buffer in Linux limited and +generally relatively small, so it should need to change the maximum: +sysctl -w net/core/rmem_max=4194304 +.TP +.B -r \fI\fR +Real-time priority (0=disabled). [default=0] +.br +If parameter greater then zero \fBfprobe-ulog\fR will use real-time scheduling +policy to prevent packets loss. Note that possible values for this +option depends on operating system. +.TP +.B -t \fI\fR +Emitting rate limit (0:0=no limit). [default=0:0] +.br +Produce \fIN\fR nanosecond delay after each \fIB\fR bytes sent. This +option may be useful with slow interfaces and slow collectors. Note that +the suspension time may be longer than requested because the argument +value is rounded up to an integer multiple of the sleep resolution (it +depends on operating system and hardware) or because of the scheduling +of other activity by the system. +.br +See BUGS section. +.TP +.B -c \fI\fR +Directory to chroot to. +.TP +.B -u \fI\fR +User to run as. +.TP +.B -v \fI\fR +Maximum displayed log level. (0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, +5=NOTICE, 6=INFO, 7=DEBUG) [default=6] +.TP +.B -l \fI<[dst][:id]>\fR +Log destination (0=none, 1=syslog, 2=stdout, 3=both) and log/pidfile +identifier. [default=1] +.br +This option allows to select opportune log destination and process +identifier. The identifier helps to distinguish pidfile and logs of one +\fBfprobe-ulog\fR process from other. +.br +Note that if log destination contains `\fIstdout\fR' (equal 2 or 3) +\fBfprobe-ulog\fR will run in foreground. +.TP +.B remote:port/local/type +Parameters \fIremote\fR and \fIport\fR are respectively define address +and port of the NetFlow collector. +.br +The \fIlocal\fR parameter allows binding certain local IP address with +specified collector. If the parameter is omitted the value (if any) of +\fI-a\fR option will be used. +.br +The \fItype\fR parameter determines emitting behavior. It may be `m' for +mirroring (by default) and `r' for collectors round-robin rotating. +.br +You may specify multiple collectors. + +.SH EXAMPLES +\fBfprobe-ulog -Xeth:100,ppp:200 localhost:2055\fR + +Reasonable configuration to run under heavy load: +.br +\fBfprobe-ulog -B4096 -r2 -q10000 -t10000:10000000 localhost:2055\fR + +Send packets to collector at 10.1.1.1:2055 and distribute them between +collectors at 10.1.1.2:2055 and at 10.1.1.3:2055 on a round-robin basis: +.br +\fBfprobe-ulog 10.1.1.1:2055 10.1.1.2:2055//r 10.1.1.3:2055//r\fR + +.SH BUGS +.B Slow interfaces and slow collectors. +.br +There are may be problems with slow interfaces and slow collectors. It +effects as emitted packets loss. On the one hand silent non-blocking +sendto() implementation can't guarantee that packet was really sent to +collector - it may be dropped by kernel due to outgoing buffer shortage +(slow interface's problem) and on the other hand packet may be dropped +on collector's machine due the similar reason - incoming buffer shortage +(slow collector's problem). +.br +Use \fI-t\fR option as workaround for this issue. + +.B Locally originated packets and their timestamps. +.br +Locally originated packets does not contains valid timestamps. Therefore +\fBfprobe-ulog\fR fill timestamp by itself on act of receive such +packet. Unfortunately, between capturing packet by netfilter code and +receiving it by \fBfprobe-ulog\fR may occur certain lags, thus +timestamps of locally originated packets generally inexact. +.br +It is possible to fix this problem entirely by trivial kernel patch (see +contrib/ipt_ULOG.patch). + +.SH SEE ALSO +.BR iptables(8) +.br +.BR http://freshmeat.net/projects/ulogd +.br +.BR http://www.cisco.com/go/netflow diff --git a/trunk/src/fprobe-ulog.c b/trunk/src/fprobe-ulog.c new file mode 100644 index 0000000..db63d9c --- /dev/null +++ b/trunk/src/fprobe-ulog.c @@ -0,0 +1,1543 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.c,v 1.1.2.4 2005/01/30 09:06:19 sla Exp $ +*/ + +#include + +/* stdout, stderr, freopen() */ +#include + +/* atoi(), exit() */ +#include + +/* getopt(), alarm(), getpid(), sedsid(), chdir() */ +#include + +/* strerror() */ +#include + +/* sig*() */ +#include + +#include +struct ipulog_handle { + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* inet_*() (Linux, FreeBSD, Solaris), getpid() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef OS_LINUX +#include +#endif + +/* pthread_*() */ +#include + +/* errno */ +#include + +/* getaddrinfo() */ +#include + +/* nanosleep() */ +#include + +/* gettimeofday() */ +#include + +/* scheduling */ +#include + +/* select() (POSIX)*/ +#include + +/* open() */ +#include +#include + +#include +#include +#include +#include +#include +#include + +enum { + aflag, + Bflag, + bflag, + cflag, + dflag, + eflag, + fflag, + gflag, + hflag, + lflag, + mflag, + Mflag, + nflag, + qflag, + rflag, + sflag, + tflag, + Uflag, + uflag, + vflag, + Xflag, +}; + +static struct getopt_parms parms[] = { + {'a', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'B', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'b', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'c', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'d', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'e', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'f', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'g', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'h', 0, 0, 0}, + {'l', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'m', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'M', 0, 0, 0}, + {'n', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'q', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'r', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'s', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'t', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'U', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'u', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'v', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'X', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {0, 0, 0, 0} +}; + +extern char *optarg; +extern int optind, opterr, optopt; +extern int errno; + +extern struct NetFlow NetFlow1; +extern struct NetFlow NetFlow5; +extern struct NetFlow NetFlow7; + +#define mark_is_tos parms[Mflag].count +static unsigned scan_interval = 5; +static int frag_lifetime = 30; +static int inactive_lifetime = 60; +static int active_lifetime = 300; +static int sockbufsize; +#define BULK_QUANTITY_MAX (unsigned)(mem_index_t)(-1) +#if (MEM_BITS == 0) || (MEM_BITS == 16) +#define BULK_QUANTITY 10000 +#else +#define BULK_QUANTITY 200 +#endif +static unsigned bulk_quantity = BULK_QUANTITY; +static unsigned pending_queue_length = 100; +static struct NetFlow *netflow = &NetFlow5; +static unsigned verbosity = 6; +static unsigned log_dest = MY_LOG_SYSLOG; +static struct Time start_time; +static long start_time_offset; +static int off_tl; +/* From mem.c */ +extern unsigned total_elements; +extern unsigned free_elements; +extern unsigned total_memory; +#if ((DEBUG) & DEBUG_I) +static unsigned emit_pkts, emit_queue; +static uint64_t size_total; +static unsigned pkts_total, pkts_total_fragmented; +static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending; +static unsigned pkts_pending, pkts_pending_done; +static unsigned pending_queue_trace, pending_queue_trace_candidate; +static unsigned flows_total, flows_fragmented; +#endif +static unsigned emit_count; +static uint32_t emit_sequence; +static unsigned emit_rate_bytes, emit_rate_delay; +static struct Time emit_time; +static uint8_t emit_packet[NETFLOW_MAX_PACKET]; +static pthread_t thid; +static sigset_t sig_mask; +static struct sched_param schedp; +static int sched_min, sched_max; +static int npeers, npeers_rot; +static struct peer *peers; +static int sigs; + +static struct Flow *flows[1 << HASH_BITS]; +static pthread_mutex_t flows_mutex[1 << HASH_BITS]; + +static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER; + +static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *pending_head, *pending_tail; +static struct Flow *scan_frag_dreg; + +static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *flows_emit; + +static char ident[256] = "fprobe-ulog"; +static FILE *pidfile; +static char *pidfilepath; +static pid_t pid; +static int killed; +static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT; +static struct ipulog_handle *ulog_handle; +static uint32_t ulog_gmask = 1; +static char *cap_buf; +static int nsnmp_rules; +static struct snmp_rule *snmp_rules; +static struct passwd *pw = 0; + +void usage() +{ + fprintf(stdout, + "fprobe-ulog: a NetFlow probe. Version %s\n" + "Usage: fprobe-ulog [options] remote:port[/[local][/type]] ...\n" + "\n" + "-h\t\tDisplay this help\n" + "-U \tULOG group bitwise mask [1]\n" + "-s \tHow often scan for expired flows [5]\n" + "-g \tFragmented flow lifetime [30]\n" + "-d \tIdle flow lifetime (inactive timer) [60]\n" + "-e \tActive flow lifetime (active timer) [300]\n" + "-n \tNetFlow version for use (1, 5 or 7) [5]\n" + "-a
\tUse
as source for NetFlow flow\n" + "-X \tInterface name to SNMP-index conversion rules\n" + "-M\t\tUse netfilter mark value as ToS flag\n" + "-b \tMemory bulk size (1..%u) [%u]\n" + "-m \tMemory limit (0=no limit) [0]\n" + "-q \tPending queue length [100]\n" + "-B \tKernel capture buffer size [0]\n" + "-r \tReal-time priority (0=disabled, %d..%d) [0]\n" + "-t \tProduce nanosecond delay after each bytes sent [0:0]\n" + "-c \tDirectory to chroot to\n" + "-u \tUser to run as\n" + "-v \tMaximum log level (0=EMERG, ..., 6=INFO, 7=DEBUG) [6]\n" + "-l <[dst][:id]>\tLog destination and log/pidfile idetifier [1]\n" + "-y \tAddress of the NetFlow collector\n", + "-f \tFile to write data into\n" + VERSION, BULK_QUANTITY_MAX, bulk_quantity, sched_min, sched_max); + exit(0); +} + +#if ((DEBUG) & DEBUG_I) +void info_debug() +{ + my_log(LOG_DEBUG, "I: received:%d/%d (%lld) pending:%d/%d", + pkts_total, pkts_total_fragmented, size_total, + pkts_pending - pkts_pending_done, pending_queue_trace); + my_log(LOG_DEBUG, "I: ignored:%d lost:%d+%d", + pkts_ignored, pkts_lost_capture, pkts_lost_unpending); + my_log(LOG_DEBUG, "I: cache:%d/%d emit:%d/%d/%d", + flows_total, flows_fragmented, emit_sequence, emit_pkts, emit_queue); + my_log(LOG_DEBUG, "I: memory:%d/%d (%d)", + total_elements, free_elements, total_memory); +} +#endif + +void sighandler(int sig) +{ + switch (sig) { + case SIGTERM: + sigs |= SIGTERM_MASK; + break; +#if ((DEBUG) & DEBUG_I) + case SIGUSR1: + sigs |= SIGUSR1_MASK; + break; +#endif + } +} + +void gettime(struct Time *now) +{ + struct timeval t; + + gettimeofday(&t, 0); + now->sec = t.tv_sec; + now->usec = t.tv_usec; +} + +inline time_t cmpmtime(struct Time *t1, struct Time *t2) +{ + return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; +} + +/* Uptime in miliseconds */ +uint32_t getuptime(struct Time *t) +{ + /* Maximum uptime is about 49/2 days */ + return cmpmtime(t, &start_time); +} + +hash_t hash_flow(struct Flow *flow) +{ + if (flow->flags & FLOW_FRAG) return hash(flow, sizeof(struct Flow_F)); + else return hash(flow, sizeof(struct Flow_TL)); +} + +uint16_t snmp_index(char *name) { + uint32_t i; + + if (!*name) return 0; + + for (i = 0; (int) i < nsnmp_rules; i++) { + if (strncmp(snmp_rules[i].basename, name, snmp_rules[i].len)) continue; + return atoi(&name[snmp_rules[i].len]) + snmp_rules[i].base; + } + + if ((i = if_nametoindex(name))) return i; + + return -1; +} + +inline void copy_flow(struct Flow *src, struct Flow *dst) +{ + dst->iif = src->iif; + dst->oif = src->oif; + dst->sip = src->sip; + dst->dip = src->dip; + dst->tos = src->tos; + dst->proto = src->proto; + dst->tcp_flags = src->tcp_flags; + dst->id = src->id; + dst->sp = src->sp; + dst->dp = src->dp; + dst->pkts = src->pkts; + dst->size = src->size; + dst->sizeF = src->sizeF; + dst->sizeP = src->sizeP; + dst->ctime = src->ctime; + dst->mtime = src->mtime; + dst->flags = src->flags; +} + +struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev) +{ + struct Flow **flowpp; + +#ifdef WALL + flowpp = 0; +#endif + + if (prev) flowpp = *prev; + + while (where) { + if (where->sip.s_addr == what->sip.s_addr + && where->dip.s_addr == what->dip.s_addr + && where->proto == what->proto) { + switch ((what->flags + where->flags) & FLOW_FRAGMASK) { + case 0: + /* Both unfragmented */ + if ((what->sp == where->sp) + && (what->dp == where->dp)) goto done; + break; + case 2: + /* Both fragmented */ + if (where->id == what->id) goto done; + break; + } + } + flowpp = &where->next; + where = where->next; + } +done: + if (prev) *prev = flowpp; + return where; +} + +int put_into(struct Flow *flow, int flag +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , char *logbuf +#endif +) +{ + int ret = 0; + hash_t h; + struct Flow *flown, **flowpp; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char buf[64]; +#endif + + h = hash_flow(flow); +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " %x H:%04x", (unsigned) flow, h); + strcat(logbuf, buf); +#endif + pthread_mutex_lock(&flows_mutex[h]); + flowpp = &flows[h]; + if (!(flown = find(flows[h], flow, &flowpp))) { + /* No suitable flow found - add */ + if (flag == COPY_INTO) { + if ((flown = mem_alloc())) { + copy_flow(flow, flown); + flow = flown; + } else { +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) || defined MESSAGES + my_log(LOG_ERR, "%s %s. %s", + "mem_alloc():", strerror(errno), "packet lost"); +#endif + return -1; + } + } + flow->next = flows[h]; + flows[h] = flow; +#if ((DEBUG) & DEBUG_I) + flows_total++; + if (flow->flags & FLOW_FRAG) flows_fragmented++; +#endif +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + if (flown) { + sprintf(buf, " => %x, flags: %x", (unsigned) flown, flown->flags); + strcat(logbuf, buf); + } +#endif + } else { + /* Found suitable flow - update */ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " +> %x", (unsigned) flown); + strcat(logbuf, buf); +#endif + if (cmpmtime(&flow->mtime, &flown->mtime) > 0) + flown->mtime = flow->mtime; + if (cmpmtime(&flow->ctime, &flown->ctime) < 0) + flown->ctime = flow->ctime; + flown->tcp_flags |= flow->tcp_flags; + flown->size += flow->size; + flown->pkts += flow->pkts; + if (flow->flags & FLOW_FRAG) { + /* Fragmented flow require some additional work */ + if (flow->flags & FLOW_TL) { + /* + ?FIXME? + Several packets with FLOW_TL (attack) + */ + flown->sp = flow->sp; + flown->dp = flow->dp; + } + if (flow->flags & FLOW_LASTFRAG) { + /* + ?FIXME? + Several packets with FLOW_LASTFRAG (attack) + */ + flown->sizeP = flow->sizeP; + } + flown->flags |= flow->flags; + flown->sizeF += flow->sizeF; + if ((flown->flags & FLOW_LASTFRAG) + && (flown->sizeF >= flown->sizeP)) { + /* All fragments received - flow reassembled */ + *flowpp = flown->next; + pthread_mutex_unlock(&flows_mutex[h]); +#if ((DEBUG) & DEBUG_I) + flows_total--; + flows_fragmented--; +#endif + flown->id = 0; + flown->flags &= ~FLOW_FRAG; +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + strcat(logbuf," R"); +#endif + ret = put_into(flown, MOVE_INTO +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + , logbuf +#endif + ); + } + } + if (flag == MOVE_INTO) mem_free(flow); + } + pthread_mutex_unlock(&flows_mutex[h]); + return ret; +} + +void *fill(int fields, uint16_t *format, struct Flow *flow, void *p) +{ + int i; + + for (i = 0; i < fields; i++) { +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: field %04d at %x", format[i], (unsigned) p); +#endif + switch (format[i]) { + case NETFLOW_IPV4_SRC_ADDR: + ((struct in_addr *) p)->s_addr = flow->sip.s_addr; + p += NETFLOW_IPV4_SRC_ADDR_SIZE; + break; + + case NETFLOW_IPV4_DST_ADDR: + ((struct in_addr *) p)->s_addr = flow->dip.s_addr; + p += NETFLOW_IPV4_DST_ADDR_SIZE; + break; + + case NETFLOW_INPUT_SNMP: + *((uint16_t *) p) = htons(flow->iif); + p += NETFLOW_INPUT_SNMP_SIZE; + break; + + case NETFLOW_OUTPUT_SNMP: + *((uint16_t *) p) = htons(flow->oif); + p += NETFLOW_OUTPUT_SNMP_SIZE; + break; + + case NETFLOW_PKTS_32: + *((uint32_t *) p) = htonl(flow->pkts); + p += NETFLOW_PKTS_32_SIZE; + break; + + case NETFLOW_BYTES_32: + *((uint32_t *) p) = htonl(flow->size); + p += NETFLOW_BYTES_32_SIZE; + break; + + case NETFLOW_FIRST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->ctime)); + p += NETFLOW_FIRST_SWITCHED_SIZE; + break; + + case NETFLOW_LAST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->mtime)); + p += NETFLOW_LAST_SWITCHED_SIZE; + break; + + case NETFLOW_L4_SRC_PORT: + *((uint16_t *) p) = flow->sp; + p += NETFLOW_L4_SRC_PORT_SIZE; + break; + + case NETFLOW_L4_DST_PORT: + *((uint16_t *) p) = flow->dp; + p += NETFLOW_L4_DST_PORT_SIZE; + break; + + case NETFLOW_PROT: + *((uint8_t *) p) = flow->proto; + p += NETFLOW_PROT_SIZE; + break; + + case NETFLOW_SRC_TOS: + *((uint8_t *) p) = flow->tos; + p += NETFLOW_SRC_TOS_SIZE; + break; + + case NETFLOW_TCP_FLAGS: + *((uint8_t *) p) = flow->tcp_flags; + p += NETFLOW_TCP_FLAGS_SIZE; + break; + + case NETFLOW_VERSION: + *((uint16_t *) p) = htons(netflow->Version); + p += NETFLOW_VERSION_SIZE; + break; + + case NETFLOW_COUNT: + *((uint16_t *) p) = htons(emit_count); + p += NETFLOW_COUNT_SIZE; + break; + + case NETFLOW_UPTIME: + *((uint32_t *) p) = htonl(getuptime(&emit_time)); + p += NETFLOW_UPTIME_SIZE; + break; + + case NETFLOW_UNIX_SECS: + *((uint32_t *) p) = htonl(emit_time.sec); + p += NETFLOW_UNIX_SECS_SIZE; + break; + + case NETFLOW_UNIX_NSECS: + *((uint32_t *) p) = htonl(emit_time.usec * 1000); + p += NETFLOW_UNIX_NSECS_SIZE; + break; + + case NETFLOW_FLOW_SEQUENCE: + //*((uint32_t *) p) = htonl(emit_sequence); + *((uint32_t *) p) = 0; + p += NETFLOW_FLOW_SEQUENCE_SIZE; + break; + + case NETFLOW_PAD8: + /* Unsupported (uint8_t) */ + case NETFLOW_ENGINE_TYPE: + case NETFLOW_ENGINE_ID: + case NETFLOW_FLAGS7_1: + case NETFLOW_SRC_MASK: + case NETFLOW_DST_MASK: + *((uint8_t *) p) = 0; + p += NETFLOW_PAD8_SIZE; + break; + + case NETFLOW_PAD16: + /* Unsupported (uint16_t) */ + case NETFLOW_SRC_AS: + case NETFLOW_DST_AS: + case NETFLOW_FLAGS7_2: + *((uint16_t *) p) = 0; + p += NETFLOW_PAD16_SIZE; + break; + + case NETFLOW_PAD32: + /* Unsupported (uint32_t) */ + case NETFLOW_IPV4_NEXT_HOP: + case NETFLOW_ROUTER_SC: + *((uint32_t *) p) = 0; + p += NETFLOW_PAD32_SIZE; + break; + + default: + my_log(LOG_CRIT, "fill(): Unknown format at %x[%d]: %d", + format, i, format[i]); + exit(1); + } + } +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: return %x", (unsigned) p); +#endif + return p; +} + +void setuser() { + /* + Workaround for clone()-based threads + Try to change EUID independently of main thread + */ + if (pw) { + setgroups(0, NULL); + setregid(pw->pw_gid, pw->pw_gid); + setreuid(pw->pw_uid, pw->pw_uid); + } +} + +void *emit_thread() +{ + struct Flow *flow; + void *p; + struct timeval now; + struct timespec timeout; + int i, ret, sent = 0, size, delay, peer_rot_cur, peer_rot_work = 0; + + p = (void *) &emit_packet + netflow->HeaderSize; + timeout.tv_nsec = 0; + + setuser(); + + for (;;) { + pthread_mutex_lock(&emit_mutex); + while (!flows_emit) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + emit_timeout; + /* Do not wait until emit_packet will filled - it may be too long */ + if (pthread_cond_timedwait(&emit_cond, &emit_mutex, &timeout) && emit_count) { + pthread_mutex_unlock(&emit_mutex); + goto sendit; + } + } + flow = flows_emit; + flows_emit = flows_emit->next; +#if ((DEBUG) & DEBUG_I) + emit_queue--; +#endif + pthread_mutex_unlock(&emit_mutex); + +#ifdef UPTIME_TRICK + if (!emit_count) { + gettime(&start_time); + start_time.sec -= start_time_offset; + } +#endif + p = fill(netflow->FlowFields, netflow->FlowFormat, flow, p); + mem_free(flow); + emit_count++; + if (emit_count == netflow->MaxFlows) { + sendit: + gettime(&emit_time); + p = fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); + size = netflow->HeaderSize + emit_count * netflow->FlowSize; + peer_rot_cur = 0; + for (i = 0; i < npeers; i++) { + if (peers[i].type == PEER_FILE) { + printf( "Here\n"); + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[i].seq); +#define MESSAGES + ret = write(peers[i].write_fd, emit_packet, size); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "write(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif +#undef MESSAGES + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[i].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + else + if (peers[i].type == PEER_MIRROR) goto sendreal; + else + if (peers[i].type == PEER_ROTATE) + if (peer_rot_cur++ == peer_rot_work) { + sendreal: + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[i].seq); + ret = send(peers[i].write_fd, emit_packet, size, 0); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "send(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[i].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + } + if (npeers_rot) peer_rot_work = (peer_rot_work + 1) % npeers_rot; + emit_sequence += emit_count; + emit_count = 0; +#if ((DEBUG) & DEBUG_I) + emit_pkts++; +#endif + } + } +} + +void *unpending_thread() +{ + struct timeval now; + struct timespec timeout; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&unpending_mutex); + + for (;;) { + while (!(pending_tail->flags & FLOW_PENDING)) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + unpending_timeout; + pthread_cond_timedwait(&unpending_cond, &unpending_mutex, &timeout); + } + +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + if (put_into(pending_tail, COPY_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ) < 0) { +#if ((DEBUG) & DEBUG_I) + pkts_lost_unpending++; +#endif + } + +#if ((DEBUG) & DEBUG_U) + my_log(LOG_DEBUG, "%s%s", "U:", logbuf); +#endif + + pending_tail->flags = 0; + pending_tail = pending_tail->next; +#if ((DEBUG) & DEBUG_I) + pkts_pending_done++; +#endif + } +} + +void *scan_thread() +{ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + int i; + struct Flow *flow, **flowpp; + struct Time now; + struct timespec timeout; + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&scan_mutex); + + for (;;) { + gettime(&now); + timeout.tv_sec = now.sec + scan_interval; + pthread_cond_timedwait(&scan_cond, &scan_mutex, &timeout); + + gettime(&now); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: %d", now.sec); +#endif + for (i = 0; i < 1 << HASH_BITS ; i++) { + pthread_mutex_lock(&flows_mutex[i]); + flow = flows[i]; + flowpp = &flows[i]; + while (flow) { + if (flow->flags & FLOW_FRAG) { + /* Process fragmented flow */ + if ((now.sec - flow->mtime.sec) > frag_lifetime) { + /* Fragmented flow expired - put it into special chain */ +#if ((DEBUG) & DEBUG_I) + flows_fragmented--; + flows_total--; +#endif + *flowpp = flow->next; + flow->id = 0; + flow->flags &= ~FLOW_FRAG; + flow->next = scan_frag_dreg; + scan_frag_dreg = flow; + flow = *flowpp; + continue; + } + } else { + /* Flow is not frgamented */ + if ((now.sec - flow->mtime.sec) > inactive_lifetime + || (flow->mtime.sec - flow->ctime.sec) > active_lifetime) { + /* Flow expired */ +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: E %x", flow); +#endif +#if ((DEBUG) & DEBUG_I) + flows_total--; +#endif + *flowpp = flow->next; + pthread_mutex_lock(&emit_mutex); + flow->next = flows_emit; + flows_emit = flow; +#if ((DEBUG) & DEBUG_I) + emit_queue++; +#endif + pthread_mutex_unlock(&emit_mutex); + flow = *flowpp; + continue; + } + } + flowpp = &flow->next; + flow = flow->next; + } /* chain loop */ + pthread_mutex_unlock(&flows_mutex[i]); + } /* hash loop */ + if (flows_emit) pthread_cond_signal(&emit_cond); + + while (scan_frag_dreg) { + flow = scan_frag_dreg; + scan_frag_dreg = flow->next; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + put_into(flow, MOVE_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "%s%s", "S: FE", logbuf); +#endif + } + } +} + +void *cap_thread() +{ + struct ulog_packet_msg *ulog_msg; + struct ip *nl; + void *tl; + struct Flow *flow; + int len, off_frag, psize; +#if ((DEBUG) & DEBUG_C) + char buf[64]; + char logbuf[256]; +#endif + + setuser(); + + while (!killed) { + len = ipulog_read(ulog_handle, cap_buf, CAPTURE_SIZE, 1); + if (len <= 0) { + my_log(LOG_ERR, "ipulog_read(): %s", ipulog_strerror(ipulog_errno)); + continue; + } + while ((ulog_msg = ipulog_get_packet(ulog_handle, cap_buf, len))) { + +#if ((DEBUG) & DEBUG_C) + sprintf(logbuf, "C: %d", ulog_msg->data_len); +#endif + + nl = (void *) &ulog_msg->payload; + psize = ulog_msg->data_len; + + /* Sanity check */ + if (psize < (signed) sizeof(struct ip) || nl->ip_v != 4) { +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); + my_log(LOG_DEBUG, "%s", logbuf); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_ignored++; +#endif + continue; + } + + if (pending_head->flags) { +#if ((DEBUG) & DEBUG_C) || defined MESSAGES + my_log(LOG_ERR, +# if ((DEBUG) & DEBUG_C) + "%s %s %s", logbuf, +# else + "%s %s", +# endif + "pending queue full:", "packet lost"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_lost_capture++; +#endif + goto done; + } + +#if ((DEBUG) & DEBUG_I) + pkts_total++; +#endif + + flow = pending_head; + + /* ?FIXME? Add sanity check for ip_len? */ + flow->size = ntohs(nl->ip_len); +#if ((DEBUG) & DEBUG_I) + size_total += flow->size; +#endif + + flow->sip = nl->ip_src; + flow->dip = nl->ip_dst; + flow->iif = snmp_index(ulog_msg->indev_name); + flow->oif = snmp_index(ulog_msg->outdev_name); + flow->tos = mark_is_tos ? ulog_msg->mark : nl->ip_tos; + flow->proto = nl->ip_p; + flow->id = 0; + flow->tcp_flags = 0; + flow->pkts = 1; + flow->sizeF = 0; + flow->sizeP = 0; + /* Packets captured from OUTPUT table didn't contains valid timestamp */ + if (ulog_msg->timestamp_sec) { + flow->ctime.sec = ulog_msg->timestamp_sec; + flow->ctime.usec = ulog_msg->timestamp_usec; + } else gettime(&flow->ctime); + flow->mtime = flow->ctime; + + off_frag = (ntohs(nl->ip_off) & IP_OFFMASK) << 3; + + /* + Offset (from network layer) to transport layer header/IP data + IOW IP header size ;-) + + ?FIXME? + Check ip_hl for valid value (>=5)? Maybe check CRC? No, thanks... + */ + off_tl = nl->ip_hl << 2; + tl = (void *) nl + off_tl; + + /* THIS packet data size: data_size = total_size - ip_header_size*4 */ + flow->sizeF = ntohs(nl->ip_len) - off_tl; + psize -= off_tl; + if ((signed) flow->sizeF < 0) flow->sizeF = 0; + if (psize > (signed) flow->sizeF) psize = flow->sizeF; + + if (ntohs(nl->ip_off) & (IP_MF | IP_OFFMASK)) { + /* Fragmented packet (IP_MF flag == 1 or fragment offset != 0) */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " F"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_total_fragmented++; +#endif + flow->flags |= FLOW_FRAG; + flow->id = nl->ip_id; + + if (!(ntohs(nl->ip_off) & IP_MF)) { + /* Packet whith IP_MF contains information about whole datagram size */ + flow->flags |= FLOW_LASTFRAG; + /* size = frag_offset*8 + data_size */ + flow->sizeP = off_frag + flow->sizeF; + } + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %s@%u>", inet_ntoa(flow->sip), flow->iif); + strcat(logbuf, buf); + sprintf(buf, "%s@%u P:%x", inet_ntoa(flow->dip), flow->oif, flow->proto); + strcat(logbuf, buf); +#endif + + /* + Fortunately most interesting transport layer information fit + into first 8 bytes of IP data field (minimal nonzero size). + Thus we don't need actual packet reassembling to build whole + transport layer data. We only check the fragment offset for + zero value to find packet with this information. + */ + if (!off_frag && psize >= 8) { + switch (flow->proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + flow->sp = ((struct udphdr *)tl)->uh_sport; + flow->dp = ((struct udphdr *)tl)->uh_dport; + goto tl_known; + +#ifdef ICMP_TRICK + case IPPROTO_ICMP: + flow->sp = htons(((struct icmp *)tl)->icmp_type); + flow->dp = htons(((struct icmp *)tl)->icmp_code); + goto tl_known; +#endif +#ifdef ICMP_TRICK_CISCO + case IPPROTO_ICMP: + flow->dp = *((int32_t *) tl); + goto tl_known; +#endif + + default: + /* Unknown transport layer */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); +#endif + flow->sp = 0; + flow->dp = 0; + break; + + tl_known: +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %d>%d", ntohs(flow->sp), ntohs(flow->dp)); + strcat(logbuf, buf); +#endif + flow->flags |= FLOW_TL; + } + } + + /* Check for tcp flags presence (including CWR and ECE). */ + if (flow->proto == IPPROTO_TCP + && off_frag < 16 + && psize >= 16 - off_frag) { + flow->tcp_flags = *((uint8_t *)(tl + 13 - off_frag)); +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " TCP:%x", flow->tcp_flags); + strcat(logbuf, buf); +#endif + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " => %x", (unsigned) flow); + strcat(logbuf, buf); + my_log(LOG_DEBUG, "%s", logbuf); +#endif + +#if ((DEBUG) & DEBUG_I) + pkts_pending++; + pending_queue_trace_candidate = pkts_pending - pkts_pending_done; + if (pending_queue_trace < pending_queue_trace_candidate) + pending_queue_trace = pending_queue_trace_candidate; +#endif + + /* Flow complete - inform unpending_thread() about it */ + pending_head->flags |= FLOW_PENDING; + pending_head = pending_head->next; + done: + pthread_cond_signal(&unpending_cond); + } + } + return 0; +} + +int main(int argc, char **argv) +{ + char errpbuf[512]; + char *dhost, *dport, *lhost, *type = 0, *log_suffix = 0, *rule; + int c, i, write_fd, memory_limit = 0; + struct addrinfo hints, *res; + struct sockaddr_in saddr; + pthread_attr_t tattr; + struct sigaction sigact; + static void *threads[THREADS - 1] = {&emit_thread, &scan_thread, &unpending_thread, &cap_thread}; + struct timeval timeout; + + sched_min = sched_get_priority_min(SCHED); + sched_max = sched_get_priority_max(SCHED); + + memset(&saddr, 0 , sizeof(saddr)); + memset(&hints, 0 , sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + /* Process command line options */ + + opterr = 0; + while ((c = my_getopt(argc, argv, parms)) != -1) { + switch (c) { + case '?': + usage(); + + case 'h': + usage(); + } + } + + if (parms[Uflag].count) ulog_gmask = atoi(parms[Uflag].arg); + if (parms[sflag].count) scan_interval = atoi(parms[sflag].arg); + if (parms[gflag].count) frag_lifetime = atoi(parms[gflag].arg); + if (parms[dflag].count) inactive_lifetime = atoi(parms[dflag].arg); + if (parms[eflag].count) active_lifetime = atoi(parms[eflag].arg); + if (parms[nflag].count) { + switch (atoi(parms[nflag].arg)) { + case 1: + netflow = &NetFlow1; + break; + + case 5: + break; + + case 7: + netflow = &NetFlow7; + break; + + default: + fprintf(stderr, "Illegal %s\n", "NetFlow version"); + exit(1); + } + } + if (parms[vflag].count) verbosity = atoi(parms[vflag].arg); + if (parms[lflag].count) { + if ((log_suffix = strchr(parms[lflag].arg, ':'))) { + *log_suffix++ = 0; + if (*log_suffix) { + sprintf(errpbuf, "[%s]", log_suffix); + strcat(ident, errpbuf); + } + } + if (*parms[lflag].arg) log_dest = atoi(parms[lflag].arg); + if (log_suffix) *--log_suffix = ':'; + } + if (!(pidfilepath = malloc(sizeof(PID_DIR) + 1 + strlen(ident) + 1 + 3 + 1))) { + err_malloc: + fprintf(stderr, "malloc(): %s\n", strerror(errno)); + exit(1); + } + sprintf(pidfilepath, "%s/%s.pid", PID_DIR, ident); + if (parms[qflag].count) { + pending_queue_length = atoi(parms[qflag].arg); + if (pending_queue_length < 1) { + fprintf(stderr, "Illegal %s\n", "pending queue length"); + exit(1); + } + } + if (parms[rflag].count) { + schedp.sched_priority = atoi(parms[rflag].arg); + if (schedp.sched_priority + && (schedp.sched_priority < sched_min + || schedp.sched_priority > sched_max)) { + fprintf(stderr, "Illegal %s\n", "realtime priority"); + exit(1); + } + } + if (parms[Bflag].count) { + sockbufsize = atoi(parms[Bflag].arg) << 10; + } + if (parms[bflag].count) { + bulk_quantity = atoi(parms[bflag].arg); + if (bulk_quantity < 1 || bulk_quantity > BULK_QUANTITY_MAX) { + fprintf(stderr, "Illegal %s\n", "bulk size"); + exit(1); + } + } + if (parms[mflag].count) memory_limit = atoi(parms[mflag].arg) << 10; + if (parms[Xflag].count) { + for(i = 0; parms[Xflag].arg[i]; i++) + if (parms[Xflag].arg[i] == ':') nsnmp_rules++; + if (!(snmp_rules = malloc(nsnmp_rules * sizeof(struct snmp_rule)))) + goto err_malloc; + rule = strtok(parms[Xflag].arg, ":"); + for (i = 0; rule; i++) { + snmp_rules[i].len = strlen(rule); + if (snmp_rules[i].len > IFNAMSIZ) { + fprintf(stderr, "Illegal %s\n", "interface basename"); + exit(1); + } + strncpy(snmp_rules[i].basename, rule, snmp_rules[i].len); + if (!*(rule - 1)) *(rule - 1) = ','; + rule = strtok(NULL, ","); + if (!rule) { + fprintf(stderr, "Illegal %s\n", "SNMP rule"); + exit(1); + } + snmp_rules[i].base = atoi(rule); + *(rule - 1) = ':'; + rule = strtok(NULL, ":"); + } + nsnmp_rules = i; + } + if (parms[tflag].count) + sscanf(parms[tflag].arg, "%d:%d", &emit_rate_bytes, &emit_rate_delay); + if (parms[aflag].count) { + if (getaddrinfo(parms[aflag].arg, 0, &hints, &res)) { + bad_lhost: + fprintf(stderr, "Illegal %s\n", "source address"); + exit(1); + } else { + saddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (parms[uflag].count) + if ((pw = getpwnam(parms[uflag].arg)) == NULL) { + fprintf(stderr, "getpwnam(%s): %s\n", parms[uflag].arg, errno ? strerror(errno) : "Unknown user"); + exit(1); + } + + + /* Process collectors parameters. Brrrr... :-[ */ + + npeers = argc - optind; + if (npeers > 1) { + /* Send to remote Netflow collector */ + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + for (i = optind, npeers = 0; i < argc; i++, npeers++) { + dhost = argv[i]; + if (!(dport = strchr(dhost, ':'))) goto bad_collector; + *dport++ = 0; + if ((write_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + fprintf(stderr, "socket(): %s\n", strerror(errno)); + exit(1); + } + peers[npeers].write_fd = write_fd; + peers[npeers].type = PEER_MIRROR; + peers[npeers].laddr = saddr; + peers[npeers].seq = 0; + if ((lhost = strchr(dport, '/'))) { + *lhost++ = 0; + if ((type = strchr(lhost, '/'))) { + *type++ = 0; + switch (*type) { + case 0: + case 'm': + break; + + case 'r': + peers[npeers].type = PEER_ROTATE; + npeers_rot++; + break; + + default: + goto bad_collector; + } + } + if (*lhost) { + if (getaddrinfo(lhost, 0, &hints, &res)) goto bad_lhost; + peers[npeers].laddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (bind(write_fd, (struct sockaddr *) &peers[npeers].laddr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "bind(): %s\n", strerror(errno)); + exit(1); + } + if (getaddrinfo(dhost, dport, &hints, &res)) { +bad_collector: + fprintf(stderr, "Error in collector #%d parameters\n", npeers + 1); + exit(1); + } + peers[npeers].addr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + if (connect(write_fd, (struct sockaddr *) &peers[npeers].addr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "connect(): %s\n", strerror(errno)); + exit(1); + } + + /* Restore command line */ + if (type) *--type = '/'; + if (lhost) *--lhost = '/'; + *--dport = ':'; + } + } + else if (parms[fflag].count) { + // log into a file + char *fname; + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + fname = parms[fflag].arg; + if ((write_fd = open(fname, O_WRONLY|O_CREAT)) < 0) { + fprintf(stderr, "open(): %s (%s)\n", fname, strerror(errno)); + exit(1); + } + peers[0].write_fd = write_fd; + peers[0].type = PEER_FILE; + peers[0].seq = 0; + npeers++; + } + else + usage(); + + + if (!(cap_buf = malloc(CAPTURE_SIZE))) goto err_malloc; + ulog_handle = ipulog_create_handle(ulog_gmask, CAPTURE_SIZE); + if (!ulog_handle) { + fprintf(stderr, "libipulog initialization error: %s", + ipulog_strerror(ipulog_errno)); + exit(1); + } + if (sockbufsize) + if (setsockopt(ulog_handle->fd, SOL_SOCKET, SO_RCVBUF, + &sockbufsize, sizeof(sockbufsize)) < 0) + fprintf(stderr, "setsockopt(): %s", strerror(errno)); + + /* Daemonize (if log destination stdout-free) */ + + my_log_open(ident, verbosity, log_dest); + if (!(log_dest & 2)) { + switch (fork()) { + case -1: + fprintf(stderr, "fork(): %s", strerror(errno)); + exit(1); + + case 0: + setsid(); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); + break; + + default: + exit(0); + } + } else { + setvbuf(stdout, (char *)0, _IONBF, 0); + setvbuf(stderr, (char *)0, _IONBF, 0); + } + + pid = getpid(); + sprintf(errpbuf, "[%ld]", (long) pid); + strcat(ident, errpbuf); + + /* Initialization */ + + hash_init(); /* Actually for crc16 only */ + mem_init(sizeof(struct Flow), bulk_quantity, memory_limit); + for (i = 0; i < 1 << HASH_BITS; i++) pthread_mutex_init(&flows_mutex[i], 0); + +#ifdef UPTIME_TRICK + /* Hope 12 days is enough :-/ */ + start_time_offset = 1 << 20; + + /* start_time_offset = active_lifetime + inactive_lifetime + scan_interval; */ +#endif + gettime(&start_time); + + /* + Build static pending queue as circular buffer. + */ + if (!(pending_head = mem_alloc())) goto err_mem_alloc; + pending_tail = pending_head; + for (i = pending_queue_length - 1; i--;) { + if (!(pending_tail->next = mem_alloc())) { + err_mem_alloc: + my_log(LOG_CRIT, "mem_alloc(): %s", strerror(errno)); + exit(1); + } + pending_tail = pending_tail->next; + } + pending_tail->next = pending_head; + pending_tail = pending_head; + + sigemptyset(&sig_mask); + sigact.sa_handler = &sighandler; + sigact.sa_mask = sig_mask; + sigact.sa_flags = 0; + sigaddset(&sig_mask, SIGTERM); + sigaction(SIGTERM, &sigact, 0); +#if ((DEBUG) & DEBUG_I) + sigaddset(&sig_mask, SIGUSR1); + sigaction(SIGUSR1, &sigact, 0); +#endif + if (pthread_sigmask(SIG_BLOCK, &sig_mask, 0)) { + my_log(LOG_CRIT, "pthread_sigmask(): %s", strerror(errno)); + exit(1); + } + + my_log(LOG_INFO, "Starting %s...", VERSION); + + if (parms[cflag].count) { + if (chdir(parms[cflag].arg) || chroot(".")) { + my_log(LOG_CRIT, "could not chroot to %s: %s", parms[cflag].arg, strerror(errno)); + exit(1); + } + } + + schedp.sched_priority = schedp.sched_priority - THREADS + 2; + pthread_attr_init(&tattr); + for (i = 0; i < THREADS - 1; i++) { + if (schedp.sched_priority > 0) { + if ((pthread_attr_setschedpolicy(&tattr, SCHED)) || + (pthread_attr_setschedparam(&tattr, &schedp))) { + my_log(LOG_CRIT, "pthread_attr_setschedpolicy(): %s", strerror(errno)); + exit(1); + } + } + if (pthread_create(&thid, &tattr, threads[i], 0)) { + my_log(LOG_CRIT, "pthread_create(): %s", strerror(errno)); + exit(1); + } + pthread_detach(thid); + schedp.sched_priority++; + } + + if (pw) { + if (setgroups(0, NULL)) { + my_log(LOG_CRIT, "setgroups(): %s", strerror(errno)); + exit(1); + } + if (setregid(pw->pw_gid, pw->pw_gid)) { + my_log(LOG_CRIT, "setregid(%u): %s", pw->pw_gid, strerror(errno)); + exit(1); + } + if (setreuid(pw->pw_uid, pw->pw_uid)) { + my_log(LOG_CRIT, "setreuid(%u): %s", pw->pw_uid, strerror(errno)); + exit(1); + } + } + + if (!(pidfile = fopen(pidfilepath, "w"))) + my_log(LOG_ERR, "Can't create pid file. fopen(): %s", strerror(errno)); + else { + fprintf(pidfile, "%ld\n", (long) pid); + fclose(pidfile); + } + + my_log(LOG_INFO, "pid: %d", pid); + my_log(LOG_INFO, "options: u=%u s=%u g=%u d=%u e=%u n=%u a=%s " + "M=%d b=%u m=%u q=%u B=%u r=%u t=%u:%u c=%s u=%s v=%u l=%u%s", + ulog_gmask, scan_interval, frag_lifetime, inactive_lifetime, active_lifetime, + netflow->Version, inet_ntoa(saddr.sin_addr), mark_is_tos, bulk_quantity, + memory_limit >> 10, pending_queue_length, sockbufsize >> 10, schedp.sched_priority - 1, + emit_rate_bytes, emit_rate_delay, parms[cflag].count ? parms[cflag].arg : "", + parms[uflag].count ? parms[uflag].arg : "", verbosity, log_dest, log_suffix ? log_suffix : ""); + for (i = 0; i < nsnmp_rules; i++) { + my_log(LOG_INFO, "SNMP rule #%d %s:%d", + i + 1, snmp_rules[i].basename, snmp_rules[i].base); + } + for (i = 0; i < npeers; i++) { + switch (peers[i].type) { + case PEER_MIRROR: + c = 'm'; + break; + case PEER_ROTATE: + c = 'r'; + break; + } + snprintf(errpbuf, sizeof(errpbuf), "%s", inet_ntoa(peers[i].laddr.sin_addr)); + my_log(LOG_INFO,"collector #%d: %s:%u/%s/%c", i + 1, + inet_ntoa(peers[i].addr.sin_addr), ntohs(peers[i].addr.sin_port), errpbuf, c); + } + + pthread_sigmask(SIG_UNBLOCK, &sig_mask, 0); + + timeout.tv_usec = 0; + while (!killed + || (total_elements - free_elements - pending_queue_length) + || emit_count + || pending_tail->flags) { + + if (!sigs) { + timeout.tv_sec = scan_interval; + select(0, 0, 0, 0, &timeout); + } + + if (sigs & SIGTERM_MASK && !killed) { + sigs &= ~SIGTERM_MASK; + my_log(LOG_INFO, "SIGTERM received. Emitting flows cache..."); + scan_interval = 1; + frag_lifetime = -1; + active_lifetime = -1; + inactive_lifetime = -1; + emit_timeout = 1; + unpending_timeout = 1; + killed = 1; + pthread_cond_signal(&scan_cond); + pthread_cond_signal(&unpending_cond); + } + +#if ((DEBUG) & DEBUG_I) + if (sigs & SIGUSR1_MASK) { + sigs &= ~SIGUSR1_MASK; + info_debug(); + } +#endif + } + remove(pidfilepath); +#if ((DEBUG) & DEBUG_I) + info_debug(); +#endif + my_log(LOG_INFO, "Done."); +#ifdef WALL + return 0; +#endif +} diff --git a/trunk/src/fprobe-ulog.c.old b/trunk/src/fprobe-ulog.c.old new file mode 100644 index 0000000..7e8947d --- /dev/null +++ b/trunk/src/fprobe-ulog.c.old @@ -0,0 +1,1486 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.c,v 1.1.2.4 2005/01/30 09:06:19 sla Exp $ +*/ + +#include + +/* stdout, stderr, freopen() */ +#include + +/* atoi(), exit() */ +#include + +/* getopt(), alarm(), getpid(), sedsid(), chdir() */ +#include + +/* strerror() */ +#include + +/* sig*() */ +#include + +#include +struct ipulog_handle { + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* inet_*() (Linux, FreeBSD, Solaris), getpid() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef OS_LINUX +#include +#endif + +/* pthread_*() */ +#include + +/* errno */ +#include + +/* getaddrinfo() */ +#include + +/* nanosleep() */ +#include + +/* gettimeofday() */ +#include + +/* scheduling */ +#include + +/* select() (POSIX)*/ +#include + +/* open() */ +#include +#include + +#include +#include +#include +#include +#include +#include + +enum { + aflag, + Bflag, + bflag, + cflag, + dflag, + eflag, + gflag, + hflag, + lflag, + mflag, + Mflag, + nflag, + qflag, + rflag, + sflag, + tflag, + Uflag, + uflag, + vflag, + Xflag, +}; + +static struct getopt_parms parms[] = { + {'a', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'B', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'b', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'c', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'d', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'e', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'g', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'h', 0, 0, 0}, + {'l', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'m', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'M', 0, 0, 0}, + {'n', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'q', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'r', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'s', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'t', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'U', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'u', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'v', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {'X', MY_GETOPT_ARG_REQUIRED, 0, 0}, + {0, 0, 0, 0} +}; + +extern char *optarg; +extern int optind, opterr, optopt; +extern int errno; + +extern struct NetFlow NetFlow1; +extern struct NetFlow NetFlow5; +extern struct NetFlow NetFlow7; + +#define mark_is_tos parms[Mflag].count +static unsigned scan_interval = 5; +static int frag_lifetime = 30; +static int inactive_lifetime = 60; +static int active_lifetime = 300; +static int sockbufsize; +#define BULK_QUANTITY_MAX (unsigned)(mem_index_t)(-1) +#if (MEM_BITS == 0) || (MEM_BITS == 16) +#define BULK_QUANTITY 10000 +#else +#define BULK_QUANTITY 200 +#endif +static unsigned bulk_quantity = BULK_QUANTITY; +static unsigned pending_queue_length = 100; +static struct NetFlow *netflow = &NetFlow5; +static unsigned verbosity = 6; +static unsigned log_dest = MY_LOG_SYSLOG; +static struct Time start_time; +static long start_time_offset; +static int off_tl; +/* From mem.c */ +extern unsigned total_elements; +extern unsigned free_elements; +extern unsigned total_memory; +#if ((DEBUG) & DEBUG_I) +static unsigned emit_pkts, emit_queue; +static uint64_t size_total; +static unsigned pkts_total, pkts_total_fragmented; +static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending; +static unsigned pkts_pending, pkts_pending_done; +static unsigned pending_queue_trace, pending_queue_trace_candidate; +static unsigned flows_total, flows_fragmented; +#endif +static unsigned emit_count; +static uint32_t emit_sequence; +static unsigned emit_rate_bytes, emit_rate_delay; +static struct Time emit_time; +static uint8_t emit_packet[NETFLOW_MAX_PACKET]; +static pthread_t thid; +static sigset_t sig_mask; +static struct sched_param schedp; +static int sched_min, sched_max; +static int npeers, npeers_rot; +static struct peer *peers; +static int sigs; + +static struct Flow *flows[1 << HASH_BITS]; +static pthread_mutex_t flows_mutex[1 << HASH_BITS]; + +static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER; + +static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *pending_head, *pending_tail; +static struct Flow *scan_frag_dreg; + +static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER; +static struct Flow *flows_emit; + +static char ident[256] = "fprobe-ulog"; +static FILE *pidfile; +static char *pidfilepath; +static pid_t pid; +static int killed; +static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT; +static struct ipulog_handle *ulog_handle; +static uint32_t ulog_gmask = 1; +static char *cap_buf; +static int nsnmp_rules; +static struct snmp_rule *snmp_rules; +static struct passwd *pw = 0; + +void usage() +{ + fprintf(stdout, + "fprobe-ulog: a NetFlow probe. Version %s\n" + "Usage: fprobe-ulog [options] remote:port[/[local][/type]] ...\n" + "\n" + "-h\t\tDisplay this help\n" + "-U \tULOG group bitwise mask [1]\n" + "-s \tHow often scan for expired flows [5]\n" + "-g \tFragmented flow lifetime [30]\n" + "-d \tIdle flow lifetime (inactive timer) [60]\n" + "-e \tActive flow lifetime (active timer) [300]\n" + "-n \tNetFlow version for use (1, 5 or 7) [5]\n" + "-a
\tUse
as source for NetFlow flow\n" + "-X \tInterface name to SNMP-index conversion rules\n" + "-M\t\tUse netfilter mark value as ToS flag\n" + "-b \tMemory bulk size (1..%u) [%u]\n" + "-m \tMemory limit (0=no limit) [0]\n" + "-q \tPending queue length [100]\n" + "-B \tKernel capture buffer size [0]\n" + "-r \tReal-time priority (0=disabled, %d..%d) [0]\n" + "-t \tProduce nanosecond delay after each bytes sent [0:0]\n" + "-c \tDirectory to chroot to\n" + "-u \tUser to run as\n" + "-v \tMaximum log level (0=EMERG, ..., 6=INFO, 7=DEBUG) [6]\n" + "-l <[dst][:id]>\tLog destination and log/pidfile idetifier [1]\n" + "remote:port\tAddress of the NetFlow collector\n", + VERSION, BULK_QUANTITY_MAX, bulk_quantity, sched_min, sched_max); + exit(0); +} + +#if ((DEBUG) & DEBUG_I) +void info_debug() +{ + my_log(LOG_DEBUG, "I: received:%d/%d (%lld) pending:%d/%d", + pkts_total, pkts_total_fragmented, size_total, + pkts_pending - pkts_pending_done, pending_queue_trace); + my_log(LOG_DEBUG, "I: ignored:%d lost:%d+%d", + pkts_ignored, pkts_lost_capture, pkts_lost_unpending); + my_log(LOG_DEBUG, "I: cache:%d/%d emit:%d/%d/%d", + flows_total, flows_fragmented, emit_sequence, emit_pkts, emit_queue); + my_log(LOG_DEBUG, "I: memory:%d/%d (%d)", + total_elements, free_elements, total_memory); +} +#endif + +void sighandler(int sig) +{ + switch (sig) { + case SIGTERM: + sigs |= SIGTERM_MASK; + break; +#if ((DEBUG) & DEBUG_I) + case SIGUSR1: + sigs |= SIGUSR1_MASK; + break; +#endif + } +} + +void gettime(struct Time *now) +{ + struct timeval t; + + gettimeofday(&t, 0); + now->sec = t.tv_sec; + now->usec = t.tv_usec; +} + +inline time_t cmpmtime(struct Time *t1, struct Time *t2) +{ + return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; +} + +/* Uptime in miliseconds */ +uint32_t getuptime(struct Time *t) +{ + /* Maximum uptime is about 49/2 days */ + return cmpmtime(t, &start_time); +} + +hash_t hash_flow(struct Flow *flow) +{ + if (flow->flags & FLOW_FRAG) return hash(flow, sizeof(struct Flow_F)); + else return hash(flow, sizeof(struct Flow_TL)); +} + +uint16_t snmp_index(char *name) { + uint32_t i; + + if (!*name) return 0; + + for (i = 0; (int) i < nsnmp_rules; i++) { + if (strncmp(snmp_rules[i].basename, name, snmp_rules[i].len)) continue; + return atoi(&name[snmp_rules[i].len]) + snmp_rules[i].base; + } + + if ((i = if_nametoindex(name))) return i; + + return -1; +} + +inline void copy_flow(struct Flow *src, struct Flow *dst) +{ + dst->iif = src->iif; + dst->oif = src->oif; + dst->sip = src->sip; + dst->dip = src->dip; + dst->tos = src->tos; + dst->proto = src->proto; + dst->tcp_flags = src->tcp_flags; + dst->id = src->id; + dst->sp = src->sp; + dst->dp = src->dp; + dst->pkts = src->pkts; + dst->size = src->size; + dst->sizeF = src->sizeF; + dst->sizeP = src->sizeP; + dst->ctime = src->ctime; + dst->mtime = src->mtime; + dst->flags = src->flags; +} + +struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev) +{ + struct Flow **flowpp; + +#ifdef WALL + flowpp = 0; +#endif + + if (prev) flowpp = *prev; + + while (where) { + if (where->sip.s_addr == what->sip.s_addr + && where->dip.s_addr == what->dip.s_addr + && where->proto == what->proto) { + switch ((what->flags + where->flags) & FLOW_FRAGMASK) { + case 0: + /* Both unfragmented */ + if ((what->sp == where->sp) + && (what->dp == where->dp)) goto done; + break; + case 2: + /* Both fragmented */ + if (where->id == what->id) goto done; + break; + } + } + flowpp = &where->next; + where = where->next; + } +done: + if (prev) *prev = flowpp; + return where; +} + +int put_into(struct Flow *flow, int flag +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , char *logbuf +#endif +) +{ + int ret = 0; + hash_t h; + struct Flow *flown, **flowpp; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char buf[64]; +#endif + + h = hash_flow(flow); +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " %x H:%04x", (unsigned) flow, h); + strcat(logbuf, buf); +#endif + pthread_mutex_lock(&flows_mutex[h]); + flowpp = &flows[h]; + if (!(flown = find(flows[h], flow, &flowpp))) { + /* No suitable flow found - add */ + if (flag == COPY_INTO) { + if ((flown = mem_alloc())) { + copy_flow(flow, flown); + flow = flown; + } else { +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) || defined MESSAGES + my_log(LOG_ERR, "%s %s. %s", + "mem_alloc():", strerror(errno), "packet lost"); +#endif + return -1; + } + } + flow->next = flows[h]; + flows[h] = flow; +#if ((DEBUG) & DEBUG_I) + flows_total++; + if (flow->flags & FLOW_FRAG) flows_fragmented++; +#endif +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + if (flown) { + sprintf(buf, " => %x, flags: %x", (unsigned) flown, flown->flags); + strcat(logbuf, buf); + } +#endif + } else { + /* Found suitable flow - update */ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + sprintf(buf, " +> %x", (unsigned) flown); + strcat(logbuf, buf); +#endif + if (cmpmtime(&flow->mtime, &flown->mtime) > 0) + flown->mtime = flow->mtime; + if (cmpmtime(&flow->ctime, &flown->ctime) < 0) + flown->ctime = flow->ctime; + flown->tcp_flags |= flow->tcp_flags; + flown->size += flow->size; + flown->pkts += flow->pkts; + if (flow->flags & FLOW_FRAG) { + /* Fragmented flow require some additional work */ + if (flow->flags & FLOW_TL) { + /* + ?FIXME? + Several packets with FLOW_TL (attack) + */ + flown->sp = flow->sp; + flown->dp = flow->dp; + } + if (flow->flags & FLOW_LASTFRAG) { + /* + ?FIXME? + Several packets with FLOW_LASTFRAG (attack) + */ + flown->sizeP = flow->sizeP; + } + flown->flags |= flow->flags; + flown->sizeF += flow->sizeF; + if ((flown->flags & FLOW_LASTFRAG) + && (flown->sizeF >= flown->sizeP)) { + /* All fragments received - flow reassembled */ + *flowpp = flown->next; + pthread_mutex_unlock(&flows_mutex[h]); +#if ((DEBUG) & DEBUG_I) + flows_total--; + flows_fragmented--; +#endif + flown->id = 0; + flown->flags &= ~FLOW_FRAG; +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + strcat(logbuf," R"); +#endif + ret = put_into(flown, MOVE_INTO +#if ((DEBUG) & (DEBUG_U | DEBUG_S)) + , logbuf +#endif + ); + } + } + if (flag == MOVE_INTO) mem_free(flow); + } + pthread_mutex_unlock(&flows_mutex[h]); + return ret; +} + +void *fill(int fields, uint16_t *format, struct Flow *flow, void *p) +{ + int i; + + for (i = 0; i < fields; i++) { +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: field %04d at %x", format[i], (unsigned) p); +#endif + switch (format[i]) { + case NETFLOW_IPV4_SRC_ADDR: + ((struct in_addr *) p)->s_addr = flow->sip.s_addr; + p += NETFLOW_IPV4_SRC_ADDR_SIZE; + break; + + case NETFLOW_IPV4_DST_ADDR: + ((struct in_addr *) p)->s_addr = flow->dip.s_addr; + p += NETFLOW_IPV4_DST_ADDR_SIZE; + break; + + case NETFLOW_INPUT_SNMP: + *((uint16_t *) p) = htons(flow->iif); + p += NETFLOW_INPUT_SNMP_SIZE; + break; + + case NETFLOW_OUTPUT_SNMP: + *((uint16_t *) p) = htons(flow->oif); + p += NETFLOW_OUTPUT_SNMP_SIZE; + break; + + case NETFLOW_PKTS_32: + *((uint32_t *) p) = htonl(flow->pkts); + p += NETFLOW_PKTS_32_SIZE; + break; + + case NETFLOW_BYTES_32: + *((uint32_t *) p) = htonl(flow->size); + p += NETFLOW_BYTES_32_SIZE; + break; + + case NETFLOW_FIRST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->ctime)); + p += NETFLOW_FIRST_SWITCHED_SIZE; + break; + + case NETFLOW_LAST_SWITCHED: + *((uint32_t *) p) = htonl(getuptime(&flow->mtime)); + p += NETFLOW_LAST_SWITCHED_SIZE; + break; + + case NETFLOW_L4_SRC_PORT: + *((uint16_t *) p) = flow->sp; + p += NETFLOW_L4_SRC_PORT_SIZE; + break; + + case NETFLOW_L4_DST_PORT: + *((uint16_t *) p) = flow->dp; + p += NETFLOW_L4_DST_PORT_SIZE; + break; + + case NETFLOW_PROT: + *((uint8_t *) p) = flow->proto; + p += NETFLOW_PROT_SIZE; + break; + + case NETFLOW_SRC_TOS: + *((uint8_t *) p) = flow->tos; + p += NETFLOW_SRC_TOS_SIZE; + break; + + case NETFLOW_TCP_FLAGS: + *((uint8_t *) p) = flow->tcp_flags; + p += NETFLOW_TCP_FLAGS_SIZE; + break; + + case NETFLOW_VERSION: + *((uint16_t *) p) = htons(netflow->Version); + p += NETFLOW_VERSION_SIZE; + break; + + case NETFLOW_COUNT: + *((uint16_t *) p) = htons(emit_count); + p += NETFLOW_COUNT_SIZE; + break; + + case NETFLOW_UPTIME: + *((uint32_t *) p) = htonl(getuptime(&emit_time)); + p += NETFLOW_UPTIME_SIZE; + break; + + case NETFLOW_UNIX_SECS: + *((uint32_t *) p) = htonl(emit_time.sec); + p += NETFLOW_UNIX_SECS_SIZE; + break; + + case NETFLOW_UNIX_NSECS: + *((uint32_t *) p) = htonl(emit_time.usec * 1000); + p += NETFLOW_UNIX_NSECS_SIZE; + break; + + case NETFLOW_FLOW_SEQUENCE: + //*((uint32_t *) p) = htonl(emit_sequence); + *((uint32_t *) p) = 0; + p += NETFLOW_FLOW_SEQUENCE_SIZE; + break; + + case NETFLOW_PAD8: + /* Unsupported (uint8_t) */ + case NETFLOW_ENGINE_TYPE: + case NETFLOW_ENGINE_ID: + case NETFLOW_FLAGS7_1: + case NETFLOW_SRC_MASK: + case NETFLOW_DST_MASK: + *((uint8_t *) p) = 0; + p += NETFLOW_PAD8_SIZE; + break; + + case NETFLOW_PAD16: + /* Unsupported (uint16_t) */ + case NETFLOW_SRC_AS: + case NETFLOW_DST_AS: + case NETFLOW_FLAGS7_2: + *((uint16_t *) p) = 0; + p += NETFLOW_PAD16_SIZE; + break; + + case NETFLOW_PAD32: + /* Unsupported (uint32_t) */ + case NETFLOW_IPV4_NEXT_HOP: + case NETFLOW_ROUTER_SC: + *((uint32_t *) p) = 0; + p += NETFLOW_PAD32_SIZE; + break; + + default: + my_log(LOG_CRIT, "fill(): Unknown format at %x[%d]: %d", + format, i, format[i]); + exit(1); + } + } +#if ((DEBUG) & DEBUG_F) + my_log(LOG_DEBUG, "F: return %x", (unsigned) p); +#endif + return p; +} + +void setuser() { + /* + Workaround for clone()-based threads + Try to change EUID independently of main thread + */ + if (pw) { + setgroups(0, NULL); + setregid(pw->pw_gid, pw->pw_gid); + setreuid(pw->pw_uid, pw->pw_uid); + } +} + +void *emit_thread() +{ + struct Flow *flow; + void *p; + struct timeval now; + struct timespec timeout; + int i, ret, sent = 0, size, delay, peer_rot_cur, peer_rot_work = 0; + + p = (void *) &emit_packet + netflow->HeaderSize; + timeout.tv_nsec = 0; + + setuser(); + + for (;;) { + pthread_mutex_lock(&emit_mutex); + while (!flows_emit) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + emit_timeout; + /* Do not wait until emit_packet will filled - it may be too long */ + if (pthread_cond_timedwait(&emit_cond, &emit_mutex, &timeout) && emit_count) { + pthread_mutex_unlock(&emit_mutex); + goto sendit; + } + } + flow = flows_emit; + flows_emit = flows_emit->next; +#if ((DEBUG) & DEBUG_I) + emit_queue--; +#endif + pthread_mutex_unlock(&emit_mutex); + +#ifdef UPTIME_TRICK + if (!emit_count) { + gettime(&start_time); + start_time.sec -= start_time_offset; + } +#endif + p = fill(netflow->FlowFields, netflow->FlowFormat, flow, p); + mem_free(flow); + emit_count++; + if (emit_count == netflow->MaxFlows) { + sendit: + gettime(&emit_time); + p = fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); + size = netflow->HeaderSize + emit_count * netflow->FlowSize; + peer_rot_cur = 0; + for (i = 0; i < npeers; i++) { + if (peers[i].type == PEER_MIRROR) goto sendreal; + if (peers[i].type == PEER_ROTATE) + if (peer_rot_cur++ == peer_rot_work) { + sendreal: + if (netflow->SeqOffset) + *((uint32_t *) (emit_packet + netflow->SeqOffset)) = htonl(peers[i].seq); + ret = send(peers[i].sock, emit_packet, size, 0); + if (ret < size) { +#if ((DEBUG) & DEBUG_E) || defined MESSAGES + my_log(LOG_ERR, "send(to #%d, seq %d, flows %d, size %d) == %d: %s", + i + 1, peers[i].seq, emit_count, size, ret, strerror(errno)); +#endif + } +#if ((DEBUG) & DEBUG_E) + commaneelse { + my_log(LOG_DEBUG, "E: Emitted %d flow(s) to #%d, seq %d", + emit_count, i + 1, peers[i].seq); + } +#endif + peers[i].seq += emit_count; + + /* Rate limit */ + if (emit_rate_bytes) { + sent += size; + delay = sent / emit_rate_bytes; + if (delay) { + sent %= emit_rate_bytes; + timeout.tv_sec = 0; + timeout.tv_nsec = emit_rate_delay * delay; + while (nanosleep(&timeout, &timeout) == -1 && errno == EINTR); + } + } + } + } + if (npeers_rot) peer_rot_work = (peer_rot_work + 1) % npeers_rot; + emit_sequence += emit_count; + emit_count = 0; +#if ((DEBUG) & DEBUG_I) + emit_pkts++; +#endif + } + } +} + +void *unpending_thread() +{ + struct timeval now; + struct timespec timeout; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&unpending_mutex); + + for (;;) { + while (!(pending_tail->flags & FLOW_PENDING)) { + gettimeofday(&now, 0); + timeout.tv_sec = now.tv_sec + unpending_timeout; + pthread_cond_timedwait(&unpending_cond, &unpending_mutex, &timeout); + } + +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + if (put_into(pending_tail, COPY_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ) < 0) { +#if ((DEBUG) & DEBUG_I) + pkts_lost_unpending++; +#endif + } + +#if ((DEBUG) & DEBUG_U) + my_log(LOG_DEBUG, "%s%s", "U:", logbuf); +#endif + + pending_tail->flags = 0; + pending_tail = pending_tail->next; +#if ((DEBUG) & DEBUG_I) + pkts_pending_done++; +#endif + } +} + +void *scan_thread() +{ +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + char logbuf[256]; +#endif + int i; + struct Flow *flow, **flowpp; + struct Time now; + struct timespec timeout; + + setuser(); + + timeout.tv_nsec = 0; + pthread_mutex_lock(&scan_mutex); + + for (;;) { + gettime(&now); + timeout.tv_sec = now.sec + scan_interval; + pthread_cond_timedwait(&scan_cond, &scan_mutex, &timeout); + + gettime(&now); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: %d", now.sec); +#endif + for (i = 0; i < 1 << HASH_BITS ; i++) { + pthread_mutex_lock(&flows_mutex[i]); + flow = flows[i]; + flowpp = &flows[i]; + while (flow) { + if (flow->flags & FLOW_FRAG) { + /* Process fragmented flow */ + if ((now.sec - flow->mtime.sec) > frag_lifetime) { + /* Fragmented flow expired - put it into special chain */ +#if ((DEBUG) & DEBUG_I) + flows_fragmented--; + flows_total--; +#endif + *flowpp = flow->next; + flow->id = 0; + flow->flags &= ~FLOW_FRAG; + flow->next = scan_frag_dreg; + scan_frag_dreg = flow; + flow = *flowpp; + continue; + } + } else { + /* Flow is not frgamented */ + if ((now.sec - flow->mtime.sec) > inactive_lifetime + || (flow->mtime.sec - flow->ctime.sec) > active_lifetime) { + /* Flow expired */ +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "S: E %x", flow); +#endif +#if ((DEBUG) & DEBUG_I) + flows_total--; +#endif + *flowpp = flow->next; + pthread_mutex_lock(&emit_mutex); + flow->next = flows_emit; + flows_emit = flow; +#if ((DEBUG) & DEBUG_I) + emit_queue++; +#endif + pthread_mutex_unlock(&emit_mutex); + flow = *flowpp; + continue; + } + } + flowpp = &flow->next; + flow = flow->next; + } /* chain loop */ + pthread_mutex_unlock(&flows_mutex[i]); + } /* hash loop */ + if (flows_emit) pthread_cond_signal(&emit_cond); + + while (scan_frag_dreg) { + flow = scan_frag_dreg; + scan_frag_dreg = flow->next; +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + *logbuf = 0; +#endif + put_into(flow, MOVE_INTO +#if ((DEBUG) & (DEBUG_S | DEBUG_U)) + , logbuf +#endif + ); +#if ((DEBUG) & DEBUG_S) + my_log(LOG_DEBUG, "%s%s", "S: FE", logbuf); +#endif + } + } +} + +void *cap_thread() +{ + struct ulog_packet_msg *ulog_msg; + struct ip *nl; + void *tl; + struct Flow *flow; + int len, off_frag, psize; +#if ((DEBUG) & DEBUG_C) + char buf[64]; + char logbuf[256]; +#endif + + setuser(); + + while (!killed) { + len = ipulog_read(ulog_handle, cap_buf, CAPTURE_SIZE, 1); + if (len <= 0) { + my_log(LOG_ERR, "ipulog_read(): %s", ipulog_strerror(ipulog_errno)); + continue; + } + while ((ulog_msg = ipulog_get_packet(ulog_handle, cap_buf, len))) { + +#if ((DEBUG) & DEBUG_C) + sprintf(logbuf, "C: %d", ulog_msg->data_len); +#endif + + nl = (void *) &ulog_msg->payload; + psize = ulog_msg->data_len; + + /* Sanity check */ + if (psize < (signed) sizeof(struct ip) || nl->ip_v != 4) { +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); + my_log(LOG_DEBUG, "%s", logbuf); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_ignored++; +#endif + continue; + } + + if (pending_head->flags) { +#if ((DEBUG) & DEBUG_C) || defined MESSAGES + my_log(LOG_ERR, +# if ((DEBUG) & DEBUG_C) + "%s %s %s", logbuf, +# else + "%s %s", +# endif + "pending queue full:", "packet lost"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_lost_capture++; +#endif + goto done; + } + +#if ((DEBUG) & DEBUG_I) + pkts_total++; +#endif + + flow = pending_head; + + /* ?FIXME? Add sanity check for ip_len? */ + flow->size = ntohs(nl->ip_len); +#if ((DEBUG) & DEBUG_I) + size_total += flow->size; +#endif + + flow->sip = nl->ip_src; + flow->dip = nl->ip_dst; + flow->iif = snmp_index(ulog_msg->indev_name); + flow->oif = snmp_index(ulog_msg->outdev_name); + flow->tos = mark_is_tos ? ulog_msg->mark : nl->ip_tos; + flow->proto = nl->ip_p; + flow->id = 0; + flow->tcp_flags = 0; + flow->pkts = 1; + flow->sizeF = 0; + flow->sizeP = 0; + /* Packets captured from OUTPUT table didn't contains valid timestamp */ + if (ulog_msg->timestamp_sec) { + flow->ctime.sec = ulog_msg->timestamp_sec; + flow->ctime.usec = ulog_msg->timestamp_usec; + } else gettime(&flow->ctime); + flow->mtime = flow->ctime; + + off_frag = (ntohs(nl->ip_off) & IP_OFFMASK) << 3; + + /* + Offset (from network layer) to transport layer header/IP data + IOW IP header size ;-) + + ?FIXME? + Check ip_hl for valid value (>=5)? Maybe check CRC? No, thanks... + */ + off_tl = nl->ip_hl << 2; + tl = (void *) nl + off_tl; + + /* THIS packet data size: data_size = total_size - ip_header_size*4 */ + flow->sizeF = ntohs(nl->ip_len) - off_tl; + psize -= off_tl; + if ((signed) flow->sizeF < 0) flow->sizeF = 0; + if (psize > (signed) flow->sizeF) psize = flow->sizeF; + + if (ntohs(nl->ip_off) & (IP_MF | IP_OFFMASK)) { + /* Fragmented packet (IP_MF flag == 1 or fragment offset != 0) */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " F"); +#endif +#if ((DEBUG) & DEBUG_I) + pkts_total_fragmented++; +#endif + flow->flags |= FLOW_FRAG; + flow->id = nl->ip_id; + + if (!(ntohs(nl->ip_off) & IP_MF)) { + /* Packet whith IP_MF contains information about whole datagram size */ + flow->flags |= FLOW_LASTFRAG; + /* size = frag_offset*8 + data_size */ + flow->sizeP = off_frag + flow->sizeF; + } + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %s@%u>", inet_ntoa(flow->sip), flow->iif); + strcat(logbuf, buf); + sprintf(buf, "%s@%u P:%x", inet_ntoa(flow->dip), flow->oif, flow->proto); + strcat(logbuf, buf); +#endif + + /* + Fortunately most interesting transport layer information fit + into first 8 bytes of IP data field (minimal nonzero size). + Thus we don't need actual packet reassembling to build whole + transport layer data. We only check the fragment offset for + zero value to find packet with this information. + */ + if (!off_frag && psize >= 8) { + switch (flow->proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + flow->sp = ((struct udphdr *)tl)->uh_sport; + flow->dp = ((struct udphdr *)tl)->uh_dport; + goto tl_known; + +#ifdef ICMP_TRICK + case IPPROTO_ICMP: + flow->sp = htons(((struct icmp *)tl)->icmp_type); + flow->dp = htons(((struct icmp *)tl)->icmp_code); + goto tl_known; +#endif +#ifdef ICMP_TRICK_CISCO + case IPPROTO_ICMP: + flow->dp = *((int32_t *) tl); + goto tl_known; +#endif + + default: + /* Unknown transport layer */ +#if ((DEBUG) & DEBUG_C) + strcat(logbuf, " U"); +#endif + flow->sp = 0; + flow->dp = 0; + break; + + tl_known: +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " %d>%d", ntohs(flow->sp), ntohs(flow->dp)); + strcat(logbuf, buf); +#endif + flow->flags |= FLOW_TL; + } + } + + /* Check for tcp flags presence (including CWR and ECE). */ + if (flow->proto == IPPROTO_TCP + && off_frag < 16 + && psize >= 16 - off_frag) { + flow->tcp_flags = *((uint8_t *)(tl + 13 - off_frag)); +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " TCP:%x", flow->tcp_flags); + strcat(logbuf, buf); +#endif + } + +#if ((DEBUG) & DEBUG_C) + sprintf(buf, " => %x", (unsigned) flow); + strcat(logbuf, buf); + my_log(LOG_DEBUG, "%s", logbuf); +#endif + +#if ((DEBUG) & DEBUG_I) + pkts_pending++; + pending_queue_trace_candidate = pkts_pending - pkts_pending_done; + if (pending_queue_trace < pending_queue_trace_candidate) + pending_queue_trace = pending_queue_trace_candidate; +#endif + + /* Flow complete - inform unpending_thread() about it */ + pending_head->flags |= FLOW_PENDING; + pending_head = pending_head->next; + done: + pthread_cond_signal(&unpending_cond); + } + } + return 0; +} + +int main(int argc, char **argv) +{ + char errpbuf[512]; + char *dhost, *dport, *lhost, *type = 0, *log_suffix = 0, *rule; + int c, i, sock, memory_limit = 0; + struct addrinfo hints, *res; + struct sockaddr_in saddr; + pthread_attr_t tattr; + struct sigaction sigact; + static void *threads[THREADS - 1] = {&emit_thread, &scan_thread, &unpending_thread, &cap_thread}; + struct timeval timeout; + + sched_min = sched_get_priority_min(SCHED); + sched_max = sched_get_priority_max(SCHED); + + memset(&saddr, 0 , sizeof(saddr)); + memset(&hints, 0 , sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + /* Process command line options */ + + opterr = 0; + while ((c = my_getopt(argc, argv, parms)) != -1) { + switch (c) { + case '?': + usage(); + + case 'h': + usage(); + } + } + + if (parms[Uflag].count) ulog_gmask = atoi(parms[Uflag].arg); + if (parms[sflag].count) scan_interval = atoi(parms[sflag].arg); + if (parms[gflag].count) frag_lifetime = atoi(parms[gflag].arg); + if (parms[dflag].count) inactive_lifetime = atoi(parms[dflag].arg); + if (parms[eflag].count) active_lifetime = atoi(parms[eflag].arg); + if (parms[nflag].count) { + switch (atoi(parms[nflag].arg)) { + case 1: + netflow = &NetFlow1; + break; + + case 5: + break; + + case 7: + netflow = &NetFlow7; + break; + + default: + fprintf(stderr, "Illegal %s\n", "NetFlow version"); + exit(1); + } + } + if (parms[vflag].count) verbosity = atoi(parms[vflag].arg); + if (parms[lflag].count) { + if ((log_suffix = strchr(parms[lflag].arg, ':'))) { + *log_suffix++ = 0; + if (*log_suffix) { + sprintf(errpbuf, "[%s]", log_suffix); + strcat(ident, errpbuf); + } + } + if (*parms[lflag].arg) log_dest = atoi(parms[lflag].arg); + if (log_suffix) *--log_suffix = ':'; + } + if (!(pidfilepath = malloc(sizeof(PID_DIR) + 1 + strlen(ident) + 1 + 3 + 1))) { + err_malloc: + fprintf(stderr, "malloc(): %s\n", strerror(errno)); + exit(1); + } + sprintf(pidfilepath, "%s/%s.pid", PID_DIR, ident); + if (parms[qflag].count) { + pending_queue_length = atoi(parms[qflag].arg); + if (pending_queue_length < 1) { + fprintf(stderr, "Illegal %s\n", "pending queue length"); + exit(1); + } + } + if (parms[rflag].count) { + schedp.sched_priority = atoi(parms[rflag].arg); + if (schedp.sched_priority + && (schedp.sched_priority < sched_min + || schedp.sched_priority > sched_max)) { + fprintf(stderr, "Illegal %s\n", "realtime priority"); + exit(1); + } + } + if (parms[Bflag].count) { + sockbufsize = atoi(parms[Bflag].arg) << 10; + } + if (parms[bflag].count) { + bulk_quantity = atoi(parms[bflag].arg); + if (bulk_quantity < 1 || bulk_quantity > BULK_QUANTITY_MAX) { + fprintf(stderr, "Illegal %s\n", "bulk size"); + exit(1); + } + } + if (parms[mflag].count) memory_limit = atoi(parms[mflag].arg) << 10; + if (parms[Xflag].count) { + for(i = 0; parms[Xflag].arg[i]; i++) + if (parms[Xflag].arg[i] == ':') nsnmp_rules++; + if (!(snmp_rules = malloc(nsnmp_rules * sizeof(struct snmp_rule)))) + goto err_malloc; + rule = strtok(parms[Xflag].arg, ":"); + for (i = 0; rule; i++) { + snmp_rules[i].len = strlen(rule); + if (snmp_rules[i].len > IFNAMSIZ) { + fprintf(stderr, "Illegal %s\n", "interface basename"); + exit(1); + } + strncpy(snmp_rules[i].basename, rule, snmp_rules[i].len); + if (!*(rule - 1)) *(rule - 1) = ','; + rule = strtok(NULL, ","); + if (!rule) { + fprintf(stderr, "Illegal %s\n", "SNMP rule"); + exit(1); + } + snmp_rules[i].base = atoi(rule); + *(rule - 1) = ':'; + rule = strtok(NULL, ":"); + } + nsnmp_rules = i; + } + if (parms[tflag].count) + sscanf(parms[tflag].arg, "%d:%d", &emit_rate_bytes, &emit_rate_delay); + if (parms[aflag].count) { + if (getaddrinfo(parms[aflag].arg, 0, &hints, &res)) { + bad_lhost: + fprintf(stderr, "Illegal %s\n", "source address"); + exit(1); + } else { + saddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (parms[uflag].count) + if ((pw = getpwnam(parms[uflag].arg)) == NULL) { + fprintf(stderr, "getpwnam(%s): %s\n", parms[uflag].arg, errno ? strerror(errno) : "Unknown user"); + exit(1); + } + + + /* Process collectors parameters. Brrrr... :-[ */ + + npeers = argc - optind; + if (npeers < 1) usage(); + if (!(peers = malloc(npeers * sizeof(struct peer)))) goto err_malloc; + for (i = optind, npeers = 0; i < argc; i++, npeers++) { + dhost = argv[i]; + if (!(dport = strchr(dhost, ':'))) goto bad_collector; + *dport++ = 0; + if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + fprintf(stderr, "socket(): %s\n", strerror(errno)); + exit(1); + } + peers[npeers].sock = sock; + peers[npeers].type = PEER_MIRROR; + peers[npeers].laddr = saddr; + peers[npeers].seq = 0; + if ((lhost = strchr(dport, '/'))) { + *lhost++ = 0; + if ((type = strchr(lhost, '/'))) { + *type++ = 0; + switch (*type) { + case 0: + case 'm': + break; + + case 'r': + peers[npeers].type = PEER_ROTATE; + npeers_rot++; + break; + + default: + goto bad_collector; + } + } + if (*lhost) { + if (getaddrinfo(lhost, 0, &hints, &res)) goto bad_lhost; + peers[npeers].laddr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + } + } + if (bind(sock, (struct sockaddr *) &peers[npeers].laddr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "bind(): %s\n", strerror(errno)); + exit(1); + } + if (getaddrinfo(dhost, dport, &hints, &res)) { + bad_collector: + fprintf(stderr, "Error in collector #%d parameters\n", npeers + 1); + exit(1); + } + peers[npeers].addr = *((struct sockaddr_in *) res->ai_addr); + freeaddrinfo(res); + if (connect(sock, (struct sockaddr *) &peers[npeers].addr, + sizeof(struct sockaddr_in))) { + fprintf(stderr, "connect(): %s\n", strerror(errno)); + exit(1); + } + + /* Restore command line */ + if (type) *--type = '/'; + if (lhost) *--lhost = '/'; + *--dport = ':'; + } + + if (!(cap_buf = malloc(CAPTURE_SIZE))) goto err_malloc; + ulog_handle = ipulog_create_handle(ulog_gmask, CAPTURE_SIZE); + if (!ulog_handle) { + fprintf(stderr, "libipulog initialization error: %s", + ipulog_strerror(ipulog_errno)); + exit(1); + } + if (sockbufsize) + if (setsockopt(ulog_handle->fd, SOL_SOCKET, SO_RCVBUF, + &sockbufsize, sizeof(sockbufsize)) < 0) + fprintf(stderr, "setsockopt(): %s", strerror(errno)); + + /* Daemonize (if log destination stdout-free) */ + + my_log_open(ident, verbosity, log_dest); + if (!(log_dest & 2)) { + switch (fork()) { + case -1: + fprintf(stderr, "fork(): %s", strerror(errno)); + exit(1); + + case 0: + setsid(); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); + break; + + default: + exit(0); + } + } else { + setvbuf(stdout, (char *)0, _IONBF, 0); + setvbuf(stderr, (char *)0, _IONBF, 0); + } + + pid = getpid(); + sprintf(errpbuf, "[%ld]", (long) pid); + strcat(ident, errpbuf); + + /* Initialization */ + + hash_init(); /* Actually for crc16 only */ + mem_init(sizeof(struct Flow), bulk_quantity, memory_limit); + for (i = 0; i < 1 << HASH_BITS; i++) pthread_mutex_init(&flows_mutex[i], 0); + +#ifdef UPTIME_TRICK + /* Hope 12 days is enough :-/ */ + start_time_offset = 1 << 20; + + /* start_time_offset = active_lifetime + inactive_lifetime + scan_interval; */ +#endif + gettime(&start_time); + + /* + Build static pending queue as circular buffer. + */ + if (!(pending_head = mem_alloc())) goto err_mem_alloc; + pending_tail = pending_head; + for (i = pending_queue_length - 1; i--;) { + if (!(pending_tail->next = mem_alloc())) { + err_mem_alloc: + my_log(LOG_CRIT, "mem_alloc(): %s", strerror(errno)); + exit(1); + } + pending_tail = pending_tail->next; + } + pending_tail->next = pending_head; + pending_tail = pending_head; + + sigemptyset(&sig_mask); + sigact.sa_handler = &sighandler; + sigact.sa_mask = sig_mask; + sigact.sa_flags = 0; + sigaddset(&sig_mask, SIGTERM); + sigaction(SIGTERM, &sigact, 0); +#if ((DEBUG) & DEBUG_I) + sigaddset(&sig_mask, SIGUSR1); + sigaction(SIGUSR1, &sigact, 0); +#endif + if (pthread_sigmask(SIG_BLOCK, &sig_mask, 0)) { + my_log(LOG_CRIT, "pthread_sigmask(): %s", strerror(errno)); + exit(1); + } + + my_log(LOG_INFO, "Starting %s...", VERSION); + + if (parms[cflag].count) { + if (chdir(parms[cflag].arg) || chroot(".")) { + my_log(LOG_CRIT, "could not chroot to %s: %s", parms[cflag].arg, strerror(errno)); + exit(1); + } + } + + schedp.sched_priority = schedp.sched_priority - THREADS + 2; + pthread_attr_init(&tattr); + for (i = 0; i < THREADS - 1; i++) { + if (schedp.sched_priority > 0) { + if ((pthread_attr_setschedpolicy(&tattr, SCHED)) || + (pthread_attr_setschedparam(&tattr, &schedp))) { + my_log(LOG_CRIT, "pthread_attr_setschedpolicy(): %s", strerror(errno)); + exit(1); + } + } + if (pthread_create(&thid, &tattr, threads[i], 0)) { + my_log(LOG_CRIT, "pthread_create(): %s", strerror(errno)); + exit(1); + } + pthread_detach(thid); + schedp.sched_priority++; + } + + if (pw) { + if (setgroups(0, NULL)) { + my_log(LOG_CRIT, "setgroups(): %s", strerror(errno)); + exit(1); + } + if (setregid(pw->pw_gid, pw->pw_gid)) { + my_log(LOG_CRIT, "setregid(%u): %s", pw->pw_gid, strerror(errno)); + exit(1); + } + if (setreuid(pw->pw_uid, pw->pw_uid)) { + my_log(LOG_CRIT, "setreuid(%u): %s", pw->pw_uid, strerror(errno)); + exit(1); + } + } + + if (!(pidfile = fopen(pidfilepath, "w"))) + my_log(LOG_ERR, "Can't create pid file. fopen(): %s", strerror(errno)); + else { + fprintf(pidfile, "%ld\n", (long) pid); + fclose(pidfile); + } + + my_log(LOG_INFO, "pid: %d", pid); + my_log(LOG_INFO, "options: u=%u s=%u g=%u d=%u e=%u n=%u a=%s " + "M=%d b=%u m=%u q=%u B=%u r=%u t=%u:%u c=%s u=%s v=%u l=%u%s", + ulog_gmask, scan_interval, frag_lifetime, inactive_lifetime, active_lifetime, + netflow->Version, inet_ntoa(saddr.sin_addr), mark_is_tos, bulk_quantity, + memory_limit >> 10, pending_queue_length, sockbufsize >> 10, schedp.sched_priority - 1, + emit_rate_bytes, emit_rate_delay, parms[cflag].count ? parms[cflag].arg : "", + parms[uflag].count ? parms[uflag].arg : "", verbosity, log_dest, log_suffix ? log_suffix : ""); + for (i = 0; i < nsnmp_rules; i++) { + my_log(LOG_INFO, "SNMP rule #%d %s:%d", + i + 1, snmp_rules[i].basename, snmp_rules[i].base); + } + for (i = 0; i < npeers; i++) { + switch (peers[i].type) { + case PEER_MIRROR: + c = 'm'; + break; + case PEER_ROTATE: + c = 'r'; + break; + } + snprintf(errpbuf, sizeof(errpbuf), "%s", inet_ntoa(peers[i].laddr.sin_addr)); + my_log(LOG_INFO,"collector #%d: %s:%u/%s/%c", i + 1, + inet_ntoa(peers[i].addr.sin_addr), ntohs(peers[i].addr.sin_port), errpbuf, c); + } + + pthread_sigmask(SIG_UNBLOCK, &sig_mask, 0); + + timeout.tv_usec = 0; + while (!killed + || (total_elements - free_elements - pending_queue_length) + || emit_count + || pending_tail->flags) { + + if (!sigs) { + timeout.tv_sec = scan_interval; + select(0, 0, 0, 0, &timeout); + } + + if (sigs & SIGTERM_MASK && !killed) { + sigs &= ~SIGTERM_MASK; + my_log(LOG_INFO, "SIGTERM received. Emitting flows cache..."); + scan_interval = 1; + frag_lifetime = -1; + active_lifetime = -1; + inactive_lifetime = -1; + emit_timeout = 1; + unpending_timeout = 1; + killed = 1; + pthread_cond_signal(&scan_cond); + pthread_cond_signal(&unpending_cond); + } + +#if ((DEBUG) & DEBUG_I) + if (sigs & SIGUSR1_MASK) { + sigs &= ~SIGUSR1_MASK; + info_debug(); + } +#endif + } + remove(pidfilepath); +#if ((DEBUG) & DEBUG_I) + info_debug(); +#endif + my_log(LOG_INFO, "Done."); +#ifdef WALL + return 0; +#endif +} diff --git a/trunk/src/fprobe-ulog.h b/trunk/src/fprobe-ulog.h new file mode 100644 index 0000000..0d812c5 --- /dev/null +++ b/trunk/src/fprobe-ulog.h @@ -0,0 +1,131 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.h,v 1.1.2.3 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _FPROBE_ULOG_H_ +#define _FPROBE_ULOG_H_ + +#include + +#ifndef IP_OFFMASK +#define IP_OFFMASK 0x1fff +#endif + +#define SCHED SCHED_FIFO +#define EMIT_TIMEOUT 5 +#define UNPENDING_TIMEOUT 5 +#define CAPTURE_SIZE 131072 +#define THREADS 5 +#define COPY_INTO 0 +#define MOVE_INTO 1 + +struct Time { + time_t sec; + long usec; +}; + +struct Flow { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; + /* ip ToS */ + uint8_t tos; + /* tcp flags */ + uint8_t tcp_flags; + /* number of packets */ + unsigned long pkts; + /* sum of packets sizes */ + unsigned long size; + /* fragment data size (for fragmented packets) */ + unsigned long sizeF; + /* whole packet data size (for fragmented packets) */ + unsigned long sizeP; + /* time of creation/flushing this flow */ + struct Time ctime; + /* time of last modification this flow */ + struct Time mtime; +#define FLOW_FRAG 0x0001 +#define FLOW_FRAGMASK 0x0003 +#define FLOW_TL 0x0004 +#define FLOW_LASTFRAG 0x0008 +#define FLOW_PENDING 0x8000 + int flags; + struct Flow *next; +}; + +struct Flow_F { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; +}; + +struct Flow_TL { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; +}; + +#define SIGALRM_MASK 1 +#define SIGTERM_MASK 2 +#define SIGUSR1_MASK 4 + +struct peer { + int write_fd; + struct sockaddr_in addr; + struct sockaddr_in laddr; + int type; + uint32_t seq; + int fd; +}; + +struct snmp_rule { + char basename[IFNAMSIZ]; + int len; + int base; +} snmp_rule_t; + +#define PEER_MIRROR 0 +#define PEER_ROTATE 1 +#define PEER_FILE 2 + +#endif diff --git a/trunk/src/fprobe-ulog.h.old b/trunk/src/fprobe-ulog.h.old new file mode 100644 index 0000000..bbfd349 --- /dev/null +++ b/trunk/src/fprobe-ulog.h.old @@ -0,0 +1,130 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: fprobe-ulog.h,v 1.1.2.3 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _FPROBE_ULOG_H_ +#define _FPROBE_ULOG_H_ + +#include + +#ifndef IP_OFFMASK +#define IP_OFFMASK 0x1fff +#endif + +#define SCHED SCHED_FIFO +#define EMIT_TIMEOUT 5 +#define UNPENDING_TIMEOUT 5 +#define CAPTURE_SIZE 131072 +#define THREADS 5 +#define COPY_INTO 0 +#define MOVE_INTO 1 + +struct Time { + time_t sec; + long usec; +}; + +struct Flow { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; + /* ip ToS */ + uint8_t tos; + /* tcp flags */ + uint8_t tcp_flags; + /* number of packets */ + unsigned long pkts; + /* sum of packets sizes */ + unsigned long size; + /* fragment data size (for fragmented packets) */ + unsigned long sizeF; + /* whole packet data size (for fragmented packets) */ + unsigned long sizeP; + /* time of creation/flushing this flow */ + struct Time ctime; + /* time of last modification this flow */ + struct Time mtime; +#define FLOW_FRAG 0x0001 +#define FLOW_FRAGMASK 0x0003 +#define FLOW_TL 0x0004 +#define FLOW_LASTFRAG 0x0008 +#define FLOW_PENDING 0x8000 + int flags; + struct Flow *next; +}; + +struct Flow_F { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; +}; + +struct Flow_TL { + /* input interface */ + uint16_t iif; + /* output interface */ + uint16_t oif; + /* ip src address */ + struct in_addr sip; + /* ip dst address */ + struct in_addr dip; + /* ip protocol */ + uint8_t proto; + /* ip fragment id */ + uint16_t id; + /* tcp/udp src port or icmp message type */ + uint16_t sp; + /* tcp/udp dst port or icmp type sub-code */ + uint16_t dp; +}; + +#define SIGALRM_MASK 1 +#define SIGTERM_MASK 2 +#define SIGUSR1_MASK 4 + +struct peer { + int sock; + struct sockaddr_in addr; + struct sockaddr_in laddr; + int type; + uint32_t seq; + int fd; +}; + +struct snmp_rule { + char basename[IFNAMSIZ]; + int len; + int base; +} snmp_rule_t; + +#define PEER_MIRROR 0 +#define PEER_ROTATE 1 + +#endif diff --git a/trunk/src/hash.c b/trunk/src/hash.c new file mode 100644 index 0000000..15a62ed --- /dev/null +++ b/trunk/src/hash.c @@ -0,0 +1,94 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: hash.c,v 1.3.2.2.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#include + +#include +#include +#include +#include +#include + +#include + + +#ifdef HASH_TYPE_CRC +static uint16_t crc16_poly; +static uint8_t shuffle_table[256]; +static uint16_t crc16_table[256]; + +uint16_t crc16(uint16_t crc, uint8_t val) +{ + int i; + + crc ^= val << 8; + for (i = 8; i--; ) + crc = crc & 0x8000 ? (crc << 1) ^ crc16_poly : crc << 1; + return crc; +} +#endif + +hash_t hash(void *p, int size) +{ + /* + ?FIXME? + Check for valid size (> 0) + */ + + hash_t hash = 0; + +#if defined HASH_TYPE_XOR && HASH_BITS == 16 + if (size & 1) hash = *((uint8_t *) p++); + size >>= 1; +#endif + + for (;size--;) { +#ifdef HASH_TYPE_XOR + hash ^= *((hash_t *) p++); +# if HASH_BITS == 16 + p++; +# endif +#endif +#ifdef HASH_TYPE_CRC + hash = crc16_table[shuffle_table[*((uint8_t *) p++)] \ + ^ (hash >> 8)] ^ (hash << 8); +#endif + } + return hash; +} + +void hash_init() +{ + +#ifdef HASH_TYPE_CRC + int rnd, i, j, m; + FILE *rnddev; + + if ((rnddev = fopen(RNDDEV, "r"))) { + fcntl(fileno(rnddev), F_SETFL, \ + fcntl(fileno(rnddev), F_GETFL) | O_NONBLOCK); + fread(&rnd, sizeof(rnd), 1, rnddev); + fclose(rnddev); + } + srand(time(NULL) ^ getpid() ^ rnd); + crc16_poly = rand() | 1; + + for (i = 0; i < 256; i++) { + crc16_table[i] = crc16(0, i); + shuffle_table[i] = i; + } + + for (i = 0; i < 256; i++) { + j = (int) (256.0 * rand() / (RAND_MAX + 1.0)); + m = shuffle_table[i]; + shuffle_table[i] = shuffle_table[j]; + shuffle_table[j] = m; + } +#endif +} diff --git a/trunk/src/hash.h b/trunk/src/hash.h new file mode 100644 index 0000000..31fb325 --- /dev/null +++ b/trunk/src/hash.h @@ -0,0 +1,52 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: hash.h,v 1.1.1.1.2.3.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#ifndef _HASH_H_ +#define _HASH_H_ + +#ifndef HASH_TYPE_XOR +# ifndef HASH_TYPE_CRC +# error HASH_TYPE_XOR or HASH_TYPE_CRC must be defined +# endif +#else +# ifdef HASH_TYPE_CRC +# error HASH_TYPE_XOR or HASH_TYPE_CRC must be defined +# endif +#endif + +#if HASH_BITS != 16 +# ifdef HASH_TYPE_CRC +# error illegal value in HASH_BITS +# endif +# if HASH_BITS != 8 +# error illegal value in HASH_BITS +# endif +#endif + +#include + +#if HASH_BITS == 8 +typedef uint8_t hash_t; +#endif + +#if HASH_BITS == 16 +typedef uint16_t hash_t; +#endif + +#define CRC16_POLY 0x8005 + +#ifndef RNDDEV +# define RNDDEV "/dev/random" +#endif + +uint16_t crc16(uint16_t, uint8_t); +hash_t hash(void *, int); +void hash_init(); + +#endif diff --git a/trunk/src/libipulog/Makefile b/trunk/src/libipulog/Makefile new file mode 100644 index 0000000..2910065 --- /dev/null +++ b/trunk/src/libipulog/Makefile @@ -0,0 +1,378 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# src/libipulog/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +SOURCES = $(libipulog_a_SOURCES) + +srcdir = . +top_srcdir = ../.. + +pkgdatadir = $(datadir)/fprobe-ulog +pkglibdir = $(libdir)/fprobe-ulog +pkgincludedir = $(includedir)/fprobe-ulog +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +target_triplet = i686-pc-linux-gnu +subdir = src/libipulog +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libipulog_a_AR = $(AR) $(ARFLAGS) +libipulog_a_LIBADD = +am_libipulog_a_OBJECTS = libipulog.$(OBJEXT) +libipulog_a_OBJECTS = $(am_libipulog_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libipulog_a_SOURCES) +DIST_SOURCES = $(libipulog_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run tar +AUTOCONF = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoconf +AUTOHEADER = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run autoheader +AUTOMAKE = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATE = 2007-10-26 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = -lpthread +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/sapan/fprobe-ulog-1.1/missing --run makeinfo +OBJEXT = o +PACKAGE = fprobe-ulog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 1.1 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/sapan/fprobe-ulog-1.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +INCLUDES = -I$(top_srcdir)/src/libipulog/include +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c +EXTRA_DIST = include/libipulog/libipulog.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libipulog.a: $(libipulog_a_OBJECTS) $(libipulog_a_DEPENDENCIES) + -rm -f libipulog.a + $(libipulog_a_AR) libipulog.a $(libipulog_a_OBJECTS) $(libipulog_a_LIBADD) + $(RANLIB) libipulog.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/include/libipulog + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/src/libipulog/Makefile.am b/trunk/src/libipulog/Makefile.am new file mode 100644 index 0000000..67a0b2f --- /dev/null +++ b/trunk/src/libipulog/Makefile.am @@ -0,0 +1,6 @@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include + +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c + +EXTRA_DIST = include/libipulog/libipulog.h diff --git a/trunk/src/libipulog/Makefile.in b/trunk/src/libipulog/Makefile.in new file mode 100644 index 0000000..2a51f48 --- /dev/null +++ b/trunk/src/libipulog/Makefile.in @@ -0,0 +1,378 @@ +# Makefile.in generated by automake 1.9.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SOURCES = $(libipulog_a_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/libipulog +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libipulog_a_AR = $(AR) $(ARFLAGS) +libipulog_a_LIBADD = +am_libipulog_a_OBJECTS = libipulog.$(OBJEXT) +libipulog_a_OBJECTS = $(am_libipulog_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libipulog_a_SOURCES) +DIST_SOURCES = $(libipulog_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +INCLUDES = -I$(top_srcdir)/src/libipulog/include +noinst_LIBRARIES = libipulog.a +libipulog_a_SOURCES = libipulog.c +EXTRA_DIST = include/libipulog/libipulog.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps src/libipulog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libipulog.a: $(libipulog_a_OBJECTS) $(libipulog_a_DEPENDENCIES) + -rm -f libipulog.a + $(libipulog_a_AR) libipulog.a $(libipulog_a_OBJECTS) $(libipulog_a_LIBADD) + $(RANLIB) libipulog.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/include/libipulog + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/src/libipulog/include/libipulog/libipulog.h b/trunk/src/libipulog/include/libipulog/libipulog.h new file mode 100644 index 0000000..13796e6 --- /dev/null +++ b/trunk/src/libipulog/include/libipulog/libipulog.h @@ -0,0 +1,58 @@ +#ifndef _LIBIPULOG_H +#define _LIBIPULOG_H + +/* $Id: libipulog.h,v 1.1.2.1 2004/08/13 21:03:11 sla Exp $ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* FIXME: glibc sucks */ +#ifndef MSG_TRUNC +#define MSG_TRUNC 0x20 +#endif + +struct ipulog_handle; +extern int ipulog_errno; + +u_int32_t ipulog_group2gmask(u_int32_t group); + +struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, u_int32_t rmem); + +void ipulog_destroy_handle(struct ipulog_handle *h); + +ssize_t ipulog_read(struct ipulog_handle *h, + unsigned char *buf, size_t len, int timeout); + +ulog_packet_msg_t *ipulog_get_packet(struct ipulog_handle *h, + const unsigned char *buf, + size_t len); + +char *ipulog_strerror(int errcode); + +void ipulog_perror(const char *s); + +enum +{ + IPULOG_ERR_NONE = 0, + IPULOG_ERR_IMPL, + IPULOG_ERR_HANDLE, + IPULOG_ERR_SOCKET, + IPULOG_ERR_BIND, + IPULOG_ERR_RECVBUF, + IPULOG_ERR_RECV, + IPULOG_ERR_NLEOF, + IPULOG_ERR_TRUNC, + IPULOG_ERR_INVGR, + IPULOG_ERR_INVNL, +}; +#define IPULOG_MAXERR IPULOG_ERR_INVNL + +#endif /* _LIBULOG_H */ diff --git a/trunk/src/libipulog/libipulog.c b/trunk/src/libipulog/libipulog.c new file mode 100644 index 0000000..28ca44d --- /dev/null +++ b/trunk/src/libipulog/libipulog.c @@ -0,0 +1,255 @@ +/* + * libipulog.c, $Revision: 1.1.2.1 $ + * + * netfilter ULOG userspace library. + * + * (C) 2000-2001 by Harald Welte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * This library is still under development, so be aware of sudden interface + * changes + * + * $Id: libipulog.c,v 1.1.2.1 2004/08/13 21:03:10 sla Exp $ + */ + +#include +#include +#include +#include +#include +#include + +struct ipulog_handle +{ + int fd; + u_int8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +}; + +/* internal */ + + +int ipulog_errno = IPULOG_ERR_NONE; + +struct ipulog_errmap_t +{ + int errcode; + char *message; +} ipulog_errmap[] = +{ + { IPULOG_ERR_NONE, "No error" }, + { IPULOG_ERR_IMPL, "Not implemented yet" }, + { IPULOG_ERR_HANDLE, "Unable to create netlink handle" }, + { IPULOG_ERR_SOCKET, "Unable to create netlink socket" }, + { IPULOG_ERR_BIND, "Unable to bind netlink socket" }, + { IPULOG_ERR_RECVBUF, "Receive buffer size invalid" }, + { IPULOG_ERR_RECV, "Error during netlink receive" }, + { IPULOG_ERR_NLEOF, "Received EOF on netlink socket" }, + { IPULOG_ERR_TRUNC, "Receive message truncated" }, + { IPULOG_ERR_INVGR, "Invalid group specified" }, + { IPULOG_ERR_INVNL, "Invalid netlink message" }, +}; + +static ssize_t +ipulog_netlink_recvfrom(const struct ipulog_handle *h, + unsigned char *buf, size_t len) +{ + int addrlen, status; + struct nlmsghdr *nlh; + + if (len < sizeof(struct nlmsgerr)) { + ipulog_errno = IPULOG_ERR_RECVBUF; + return -1; + } + addrlen = sizeof(h->peer); + status = recvfrom(h->fd, buf, len, 0, (struct sockaddr *)&h->peer, + &addrlen); + if (status < 0) + { + ipulog_errno = IPULOG_ERR_RECV; + return status; + } + if (addrlen != sizeof (h->peer)) + { + ipulog_errno = IPULOG_ERR_RECV; + return -1; + } + if (status == 0) + { + ipulog_errno = IPULOG_ERR_NLEOF; + return -1; + } + nlh = (struct nlmsghdr *)buf; + if (nlh->nlmsg_flags & MSG_TRUNC || status > len) + { + ipulog_errno = IPULOG_ERR_TRUNC; + return -1; + } + return status; +} + +/* public */ + +char *ipulog_strerror(int errcode) +{ + if (errcode < 0 || errcode > IPULOG_MAXERR) + errcode = IPULOG_ERR_IMPL; + return ipulog_errmap[errcode].message; +} + +/* convert a netlink group (1-32) to a group_mask suitable for create_handle */ +u_int32_t ipulog_group2gmask(u_int32_t group) +{ + if (group < 1 || group > 32) + { + ipulog_errno = IPULOG_ERR_INVGR; + return 0; + } + return (1 << (group - 1)); +} + +/* create a ipulog handle for the reception of packets sent to gmask */ +struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, + u_int32_t rcvbufsize) +{ + struct ipulog_handle *h; + int status; + + h = (struct ipulog_handle *) malloc(sizeof(struct ipulog_handle)); + if (h == NULL) + { + ipulog_errno = IPULOG_ERR_HANDLE; + return NULL; + } + memset(h, 0, sizeof(struct ipulog_handle)); + h->fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_NFLOG); + if (h->fd == -1) + { + ipulog_errno = IPULOG_ERR_SOCKET; + close(h->fd); + free(h); + return NULL; + } + memset(&h->local, 0, sizeof(struct sockaddr_nl)); + h->local.nl_family = AF_NETLINK; + h->local.nl_pid = getpid(); + h->local.nl_groups = gmask; + status = bind(h->fd, (struct sockaddr *)&h->local, sizeof(h->local)); + if (status == -1) + { + ipulog_errno = IPULOG_ERR_BIND; + close(h->fd); + free(h); + return NULL; + } + memset(&h->peer, 0, sizeof(struct sockaddr_nl)); + h->peer.nl_family = AF_NETLINK; + h->peer.nl_pid = 0; + h->peer.nl_groups = gmask; + + status = setsockopt(h->fd, SOL_SOCKET, SO_RCVBUF, &rcvbufsize, + sizeof(rcvbufsize)); + if (status == -1) + { + ipulog_errno = IPULOG_ERR_RECVBUF; + close(h->fd); + free(h); + return NULL; + } + + return h; +} + +/* destroy a ipulog handle */ +void ipulog_destroy_handle(struct ipulog_handle *h) +{ + close(h->fd); + free(h); +} + +#if 0 +int ipulog_set_mode() +{ +} +#endif + +/* do a BLOCKING read on an ipulog handle */ +ssize_t ipulog_read(struct ipulog_handle *h, unsigned char *buf, + size_t len, int timeout) +{ + return ipulog_netlink_recvfrom(h, buf, len); +} + +/* get a pointer to the actual start of the ipulog packet, + use this to strip netlink header */ +ulog_packet_msg_t *ipulog_get_packet(struct ipulog_handle *h, + const unsigned char *buf, + size_t len) +{ + struct nlmsghdr *nlh; + size_t remain_len; + + /* if last header in handle not inside this buffer, + * drop reference to last header */ + if ((unsigned char *)h->last_nlhdr > (buf + len) || + (unsigned char *)h->last_nlhdr < buf) { + h->last_nlhdr = NULL; + } + + if (!h->last_nlhdr) { + /* fist message in buffer */ + nlh = (struct nlmsghdr *) buf; + if (!NLMSG_OK(nlh, len)) { + /* ERROR */ + ipulog_errno = IPULOG_ERR_INVNL; + return NULL; + } + } else { + /* we are in n-th part of multilink message */ + if (h->last_nlhdr->nlmsg_type == NLMSG_DONE || + !(h->last_nlhdr->nlmsg_flags & NLM_F_MULTI)) { + /* if last part in multilink message, + * or no multipart message at all: return */ + h->last_nlhdr = NULL; + return NULL; + } + + /* calculate remaining lenght from lasthdr to end of buffer */ + remain_len = (len - + ((unsigned char *)h->last_nlhdr - buf)); + nlh = NLMSG_NEXT(h->last_nlhdr, remain_len); + } + + h->last_nlhdr = nlh; + + return NLMSG_DATA(nlh); +} + +/* print a human readable description of the last error to stderr */ +void ipulog_perror(const char *s) +{ + if (s) + fputs(s, stderr); + else + fputs("ERROR", stderr); + if (ipulog_errno) + fprintf(stderr, ": %s", ipulog_strerror(ipulog_errno)); + if (errno) + fprintf(stderr, ": %s", strerror(errno)); + fputc('\n', stderr); +} + diff --git a/trunk/src/mem.c b/trunk/src/mem.c new file mode 100644 index 0000000..90ca516 --- /dev/null +++ b/trunk/src/mem.c @@ -0,0 +1,167 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: mem.c,v 1.4.2.2.2.1 2005/01/29 19:30:41 sla Exp $ +*/ + +#include +#include +#include + +#include +#include +#include + +#ifdef MEM_THREADSAFE +#include +#endif + +#ifdef MEM_THREADSAFE +static pthread_mutex_t mem_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif +static struct Mem *root; +unsigned int total_elements; +unsigned int free_elements; +static unsigned int element_size; +static unsigned int bulk_quantity; +static unsigned int limit_memory; +unsigned int total_memory; +static unsigned int mem_index_table_size; +static unsigned int element_table_size; +static unsigned int malloc_size; + +void *mem_alloc() +{ + unsigned int i; + struct Mem *mptr; + mem_index_t *iptr; +#if MEM_BITS == 0 + void *eptr; +#endif + +#ifdef MEM_THREADSAFE + pthread_mutex_lock(&mem_mutex); +#endif + if (!free_elements) { + if (limit_memory && (total_memory + malloc_size) > limit_memory) { +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: limit exhausted"); +#endif + mptr = 0; + errno = ENOMEM; + goto done; + } + if (!(mptr = calloc(malloc_size, 1))) goto done; + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + eptr = (void *) iptr + mem_index_table_size; +#endif + for (i = 0; i < bulk_quantity; i++) { +#if MEM_BITS == 0 + *iptr++ = eptr; + eptr += element_size; +#else + *iptr++ = i; +#endif + } + mptr->free = bulk_quantity - 1; + free_elements += mptr->free; + total_elements += bulk_quantity; + total_memory += malloc_size; + mptr->first = iptr; + mptr->last = (void *) iptr + element_table_size - element_size; + mptr->next = root; + root = mptr; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: alloc bulk: base:%x first:%x last:%x", + mptr, mptr->first, mptr->last); + my_log(LOG_DEBUG, "M: mem: total: %d (%dKB), free: %d", + total_elements, total_memory >> 10, free_elements); +#endif + mptr = mptr->last; + goto done; + } + + mptr = root; + while (mptr->free == 0) mptr = mptr->next; + mptr->free--; + free_elements--; + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + mptr = iptr[mptr->free]; +#else + mptr = mptr->first + iptr[mptr->free] * element_size; +#endif + +done: +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: alloc: %x", mptr); +#endif +#ifdef MEM_THREADSAFE + pthread_mutex_unlock(&mem_mutex); +#endif + return mptr; +} + +void mem_free(void *eptr) +{ + mem_index_t *iptr; + struct Mem *mptr, **pptr; + +#ifdef MEM_THREADSAFE + pthread_mutex_lock(&mem_mutex); +#endif +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: free: %x", eptr); +#endif + mptr = root; + pptr = &root; + while (mptr->first > eptr || mptr->last < eptr) { + pptr = &mptr->next; + mptr = mptr->next; + } + iptr = (void *) mptr + sizeof(struct Mem); +#if MEM_BITS == 0 + iptr[mptr->free] = eptr; +#else + iptr[mptr->free] = (eptr - mptr->first) / element_size; +#endif + mptr->free++; + free_elements++; + if (mptr->free == bulk_quantity) { +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: free bulk: base:%x first:%x last:%x", + mptr, mptr->first, mptr->last); +#endif + *pptr = mptr->next; + free(mptr); + total_elements -= bulk_quantity; + free_elements -= bulk_quantity; + total_memory -= malloc_size; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: mem: total: %d (%dKB), free: %d", + total_elements, total_memory >> 10, free_elements); +#endif + } +#ifdef MEM_THREADSAFE + pthread_mutex_unlock(&mem_mutex); +#endif +} + +int mem_init(unsigned int element, unsigned int bulk, unsigned int limit) +{ + bulk_quantity = (unsigned) (mem_index_t) bulk; /* for safety: movzbl, movzwl */ + mem_index_table_size = sizeof(mem_index_t) * bulk_quantity; + element_size = element; + element_table_size = element_size * bulk_quantity; + malloc_size = sizeof(struct Mem) + mem_index_table_size + element_table_size; + limit_memory = limit; +#if ((DEBUG) & DEBUG_M) + my_log(LOG_DEBUG, "M: init: element size:%d quantity:%d bulk size:%d limit:%d", + element_size, bulk_quantity, malloc_size, limit_memory); +#endif + return 0; +} diff --git a/trunk/src/mem.h b/trunk/src/mem.h new file mode 100644 index 0000000..9930761 --- /dev/null +++ b/trunk/src/mem.h @@ -0,0 +1,48 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: mem.h,v 1.1.1.1.2.3 2004/08/13 20:40:43 sla Exp $ +*/ + +#ifndef _MEM_H_ +#define _MEM_H_ + +#if MEM_BITS != 0 && MEM_BITS != 8 && MEM_BITS != 16 +#error illegal value in MEM_BITS +#endif + +#if defined _REENTRANT || defined _THREAD_SAFE +#define MEM_THREADSAFE +#endif + +#include + +#if MEM_BITS == 0 +typedef void* mem_index_t; +#endif +#if MEM_BITS == 8 +typedef uint8_t mem_index_t; +#endif +#if MEM_BITS == 16 +typedef uint16_t mem_index_t; +#endif + +void *mem_alloc(); +void mem_free(void *); +int mem_init(unsigned int, unsigned int, unsigned int); + +struct Mem { + struct Mem *next; + unsigned int free; + void *first; + void *last; + /* + mem_index_t mem_index_table[bulk_quantity] + struct UserDef element_table[bulk_quantity] + */ +}; + +#endif diff --git a/trunk/src/my_getopt.c b/trunk/src/my_getopt.c new file mode 100644 index 0000000..d0a9fd7 --- /dev/null +++ b/trunk/src/my_getopt.c @@ -0,0 +1,79 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_getopt.c,v 1.2.2.3 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +/* getopt() */ +#include + +/* fprintf() */ +#include + +#include + +extern char *optarg; +extern int optind, opterr, optopt; + +int my_getopt(int argc, char * const argv[], + struct getopt_parms parms[]) +{ + int c, i, p; + static int flag = 0, my_opterr = 1; + static char optstring[MY_GETOPT_MAX_OPTSTR]; + + if (flag++ == 0) { + p = 0; i = 0; + while ((parms[i].name != 0) && (p < (MY_GETOPT_MAX_OPTSTR - 1))) { + optstring[p++] = parms[i].name; + if (parms[i].flag & MY_GETOPT_ARG_REQUIRED) optstring[p++] = ':'; + optstring[p] = 0; + i++; + } + flag = 1; + } + + c = getopt(argc, argv, optstring); + switch (c) { + case '?': + if (my_opterr) fprintf(stderr, "Wrong parameters\n"); + break; + + case -1: + flag = 0; + i = 0; + while (parms[i].name != 0) { + if ((parms[i].flag & MY_GETOPT_REQUIRED) && (parms[i].count == 0)) { + if (my_opterr) fprintf(stderr, "Missing required option\n"); + return '?'; + } + i++; + } + break; + + default: + i = 0; + while ((parms[i].name != 0) && (parms[i].name != c)) { + i++; + } + if (parms[i].flag & MY_GETOPT_ARG_REQUIRED) { + if (optarg == 0) { + if (my_opterr) fprintf(stderr, "Option `-%c': %s\n", + c, "require parameter"); + return '?'; + } else parms[i].arg = optarg; + } + if ((++parms[i].count > 1) && !(parms[i].flag & MY_GETOPT_ALLOW_REPEAT)) { + if (my_opterr) fprintf(stderr, "Option `-%c': %s\n", + c, "repeat not allowed"); + return '?'; + } + break; + } + return c; +} diff --git a/trunk/src/my_getopt.h b/trunk/src/my_getopt.h new file mode 100644 index 0000000..e8f8d1f --- /dev/null +++ b/trunk/src/my_getopt.h @@ -0,0 +1,28 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_getopt.h,v 1.1.1.1.2.3 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _MY_GETOPT_H_ +#define _MY_GETOPT_H_ + +#define MY_GETOPT_ARG_REQUIRED 0x1 +#define MY_GETOPT_REQUIRED 0x2 +#define MY_GETOPT_ALLOW_REPEAT 0x4 + +#define MY_GETOPT_MAX_OPTSTR 4096 + +struct getopt_parms { + char name; + int flag; + int count; + char *arg; +}; + +int my_getopt(int argc, char * const argv[], struct getopt_parms parms[]); + +#endif diff --git a/trunk/src/my_inttypes.h b/trunk/src/my_inttypes.h new file mode 100644 index 0000000..eec2ef5 --- /dev/null +++ b/trunk/src/my_inttypes.h @@ -0,0 +1,51 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_inttypes.h,v 1.1.2.1 2004/08/13 20:41:19 sla Exp $ +*/ + +#ifndef _MY_INTTYPES_H_ +#define _MY_INTTYPES_H_ + +#include + +#ifdef HAVE_INTTYPES_H +#include +#else + +typedef unsigned char uint8_t; +typedef signed char int8_t; + +typedef unsigned short uint16_t; +typedef short int16_t; + +#if SIZEOF_INT == 4 +typedef unsigned int uint32_t; +typedef int int32_t; +#else +#if SIZEOF_LONG == 4 +typedef unsigned long uint32_t; +typedef long int32_t; +#else +#error "Can't find any 32 bit type" +#endif +#endif + +#if SIZEOF_LONG == 8 +typedef unsigned long uint64_t; +typedef long int64_t; +#else +#if SIZEOF_LONG_LONG == 8 +typedef unsigned long long uint64_t; +typedef long long int64_t; +#else +#error "Can't find any 64 bit type" +#endif +#endif + +#endif /* HAVE_INTTYPES_H */ + +#endif /* _MY_INTTYPES_H_ */ diff --git a/trunk/src/my_log.c b/trunk/src/my_log.c new file mode 100644 index 0000000..b324f8f --- /dev/null +++ b/trunk/src/my_log.c @@ -0,0 +1,57 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_log.c,v 1.3.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +#include +#include +#include +#include + +#include + +static char *my_log_indent; +static unsigned my_log_min_level; +static unsigned my_log_flags; +static char *my_log_names[] = { + "EMERG", "ALERT", "CRIT", "ERR", "WARNING", "NOTICE", "INFO", "DEBUG" +}; + +void my_log_open(char *indent, unsigned min_level, unsigned flags) +{ + my_log_indent = indent; + my_log_min_level = min_level; + my_log_flags = flags; + //openlog(0, LOG_PID, MY_LOG_SYSLOG_FACILITY); + openlog(my_log_indent, 0, MY_LOG_SYSLOG_FACILITY); +} + +void my_log_close(void) +{ + closelog(); +} + +void my_log(unsigned level, const char *format, ...) +{ + va_list args; + char msg[256]; + char msg_prefix[64]; + + if (level <= my_log_min_level) { + va_start(args, format); + vsnprintf(msg, sizeof(msg), format, args); + snprintf(msg_prefix, sizeof(msg_prefix), "[%s]: ", my_log_names[level]); + + if (my_log_flags & MY_LOG_SYSLOG) + syslog(level, "%s%s", msg_prefix, msg); + + if (my_log_flags & MY_LOG_STDOUT) + fprintf(stdout, "%s%s\n", msg_prefix, msg); + } +} diff --git a/trunk/src/my_log.h b/trunk/src/my_log.h new file mode 100644 index 0000000..6269f72 --- /dev/null +++ b/trunk/src/my_log.h @@ -0,0 +1,24 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: my_log.h,v 1.1.1.1.2.2 2004/02/02 08:06:24 sla Exp $ +*/ + +#ifndef _MY_LOG_H_ +#define _MY_LOG_H_ + +#define MY_LOG_SYSLOG 0x01 +#define MY_LOG_STDOUT 0x02 +#define MY_LOG_SYSLOG_FACILITY LOG_DAEMON +#define MY_LOG_MAX_INDEX 32 + +#include + +void my_log_open(char *, unsigned, unsigned); +void my_log_close(void); +void my_log(unsigned, const char *, ...); + +#endif diff --git a/trunk/src/netflow.c b/trunk/src/netflow.c new file mode 100644 index 0000000..3e5435e --- /dev/null +++ b/trunk/src/netflow.c @@ -0,0 +1,145 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: netflow.c,v 1.2.2.4 2004/02/02 08:06:24 sla Exp $ +*/ + +#include + +#include + +static uint16_t NetFlow1_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS +}; + +static uint16_t NetFlow1_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_PAD16, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_TCP_FLAGS, + NETFLOW_PAD8, NETFLOW_PAD8, NETFLOW_PAD8, + NETFLOW_PAD32 +}; + +static uint16_t NetFlow5_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS, + NETFLOW_FLOW_SEQUENCE, + NETFLOW_ENGINE_TYPE, + NETFLOW_ENGINE_ID, + NETFLOW_PAD16 +}; + +static uint16_t NetFlow5_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_PAD8, + NETFLOW_TCP_FLAGS, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_SRC_AS, + NETFLOW_DST_AS, + NETFLOW_SRC_MASK, + NETFLOW_DST_MASK, + NETFLOW_PAD16 +}; + +static uint16_t NetFlow7_Header[] = { + NETFLOW_VERSION, + NETFLOW_COUNT, + NETFLOW_UPTIME, + NETFLOW_UNIX_SECS, + NETFLOW_UNIX_NSECS, + NETFLOW_FLOW_SEQUENCE, + NETFLOW_PAD32 +}; + +static uint16_t NetFlow7_Flow[] = { + NETFLOW_IPV4_SRC_ADDR, + NETFLOW_IPV4_DST_ADDR, + NETFLOW_IPV4_NEXT_HOP, + NETFLOW_INPUT_SNMP, + NETFLOW_OUTPUT_SNMP, + NETFLOW_PKTS_32, + NETFLOW_BYTES_32, + NETFLOW_FIRST_SWITCHED, + NETFLOW_LAST_SWITCHED, + NETFLOW_L4_SRC_PORT, + NETFLOW_L4_DST_PORT, + NETFLOW_FLAGS7_1, + NETFLOW_TCP_FLAGS, + NETFLOW_PROT, + NETFLOW_SRC_TOS, + NETFLOW_SRC_AS, + NETFLOW_DST_AS, + NETFLOW_SRC_MASK, + NETFLOW_DST_MASK, + NETFLOW_FLAGS7_2, + NETFLOW_ROUTER_SC +}; + +struct NetFlow NetFlow1 = { + NETFLOW1_VERSION, + NETFLOW1_HEADER_SIZE, + NETFLOW1_MAX_FLOWS, + NETFLOW1_FLOW_SIZE, + NETFLOW1_SEQ_OFFSET, + sizeof(NetFlow1_Header) / sizeof(uint16_t), + NetFlow1_Header, + sizeof(NetFlow1_Flow) / sizeof(uint16_t), + NetFlow1_Flow +}; + +struct NetFlow NetFlow5 = { + NETFLOW5_VERSION, + NETFLOW5_HEADER_SIZE, + NETFLOW5_MAX_FLOWS, + NETFLOW5_FLOW_SIZE, + NETFLOW5_SEQ_OFFSET, + sizeof(NetFlow5_Header) / sizeof(uint16_t), + NetFlow5_Header, + sizeof(NetFlow5_Flow) / sizeof(uint16_t), + NetFlow5_Flow +}; + +struct NetFlow NetFlow7 = { + NETFLOW7_VERSION, + NETFLOW7_HEADER_SIZE, + NETFLOW7_MAX_FLOWS, + NETFLOW7_FLOW_SIZE, + NETFLOW7_SEQ_OFFSET, + sizeof(NetFlow7_Header) / sizeof(uint16_t), + NetFlow7_Header, + sizeof(NetFlow7_Flow) / sizeof(uint16_t), + NetFlow7_Flow +}; diff --git a/trunk/src/netflow.h b/trunk/src/netflow.h new file mode 100644 index 0000000..e2ce3af --- /dev/null +++ b/trunk/src/netflow.h @@ -0,0 +1,245 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: netflow.h,v 1.3.2.5.2.1 2004/08/13 21:03:10 sla Exp $ +*/ + +#ifndef _NETFLOW_H_ +#define _NETFLOW_H_ + +#include + +#define NETFLOW_BYTES_32 1 +#define NETFLOW_BYTES_32_SIZE 4 + +#define NETFLOW_PKTS_32 2 +#define NETFLOW_PKTS_32_SIZE 4 + +#define NETFLOW_FLOWS 3 +#define NETFLOW_FLOWS_SIZE 4 + +#define NETFLOW_PROT 4 +#define NETFLOW_PROT_SIZE 1 + +#define NETFLOW_SRC_TOS 5 +#define NETFLOW_SRC_TOS_SIZE 1 + +#define NETFLOW_TCP_FLAGS 6 +#define NETFLOW_TCP_FLAGS_SIZE 1 + +#define NETFLOW_L4_SRC_PORT 7 +#define NETFLOW_L4_SRC_PORT_SIZE 2 + +#define NETFLOW_IPV4_SRC_ADDR 8 +#define NETFLOW_IPV4_SRC_ADDR_SIZE 4 + +#define NETFLOW_SRC_MASK 9 +#define NETFLOW_SRC_MASK_SIZE 1 + +#define NETFLOW_INPUT_SNMP 10 +#define NETFLOW_INPUT_SNMP_SIZE 2 + +#define NETFLOW_L4_DST_PORT 11 +#define NETFLOW_L4_DST_PORT_SIZE 2 + +#define NETFLOW_IPV4_DST_ADDR 12 +#define NETFLOW_IPV4_DST_ADDR_SIZE 4 + +#define NETFLOW_DST_MASK 13 +#define NETFLOW_DST_MASK_SIZE 1 + +#define NETFLOW_OUTPUT_SNMP 14 +#define NETFLOW_OUTPUT_SNMP_SIZE 2 + +#define NETFLOW_IPV4_NEXT_HOP 15 +#define NETFLOW_IPV4_NEXT_HOP_SIZE 4 + +#define NETFLOW_SRC_AS 16 +#define NETFLOW_SRC_AS_SIZE 2 + +#define NETFLOW_DST_AS 17 +#define NETFLOW_DST_AS_SIZE 2 + +#define NETFLOW_BGP_NEXT_HOP 18 +#define NETFLOW_BGP_NEXT_HOP_SIZE 4 + +#define NETFLOW_IPM_DPKTS 19 +#define NETFLOW_IPM_DPKTS_SIZE 4 + +#define NETFLOW_IPM_DOCTETS 20 +#define NETFLOW_IPM_DOCTETS_SIZE 4 + +#define NETFLOW_LAST_SWITCHED 21 +#define NETFLOW_LAST_SWITCHED_SIZE 4 + +#define NETFLOW_FIRST_SWITCHED 22 +#define NETFLOW_FIRST_SWITCHED_SIZE 4 + +#define NETFLOW_BYTES_64 23 +#define NETFLOW_BYTES_64_SIZE 8 + +#define NETFLOW_PKTS_64 24 +#define NETFLOW_PKTS_64_SIZE 8 + +#define NETFLOW_MAC_ADDR 25 +#define NETFLOW_MAC_ADDR_SIZE 6 + +#define NETFLOW_VLAN_ID 26 +#define NETFLOW_VLAN_ID_SIZE 2 + +#define NETFLOW_IPV6_SRC_ADDR 27 +#define NETFLOW_IPV6_SRC_ADDR_SIZE 16 + +#define NETFLOW_IPV6_DST_ADDR 28 +#define NETFLOW_IPV6_DST_ADDR_SIZE 16 + +#define NETFLOW_IPV6_SRC_MASK 29 +#define NETFLOW_IPV6_SRC_MASK_SIZE 1 + +#define NETFLOW_IPV6_DST_MASK 30 +#define NETFLOW_IPV6_DST_MASK_SIZE 1 + +#define NETFLOW_FLOW_LABEL 31 +#define NETFLOW_FLOW_LABEL_SZIE 3 + +#define NETFLOW_ICMP_TYPE 32 +#define NETFLOW_ICMP_TYPE_SIZE 1 + +#define NETFLOW_MUL_IGMP_TYPE 33 +#define NETFLOW_MUL_IGMP_TYPE_SIZE 1 + +#define NETFLOW_SAMPLING_INTERVAL 34 +#define NETFLOW_SAMPLING_INTERVAL_SIZE 4 + +#define NETFLOW_SAMPLING_ALGORITHM 35 +#define NETFLOW_SAMPLING_ALGORITHM_SIZE 1 + +#define NETFLOW_FLOW_ACTIVE_TIMEOUT 36 +#define NETFLOW_FLOW_ACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_FLOW_INACTIVE_TIMEOUT 37 +#define NETFLOW_FLOW_INACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_ENGINE_TYPE 38 +#define NETFLOW_ENGINE_TYPE_SIZE 1 + +#define NETFLOW_ENGINE_ID 39 +#define NETFLOW_ENGINE_ID_SIZE 1 + +#define NETFLOW_TOTAL_BYTES_EXPORTED 40 +#define NETFLOW_TOTAL_BYTES_EXPORTED_SIZE 4 + +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT 41 +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT_SIZE 4 + +#define NETFLOW_TOTAL_FLOWS_EXPORTED 42 +#define NETFLOW_TOTAL_FLOWS_EXPORTED_SIZE 4 + +#define NETFLOW_FLOW_SAMPLER_ID 48 +#define NETFLOW_FLOW_SAMPLER_ID_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_MODE 49 +#define NETFLOW_FLOW_SAMPLER_MODE_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50 +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL_SIZE 4 + +#define NETFLOW_IP_PROTOCOL_VERSION 60 +#define NETFLOW_IP_PROTOCOL_VERSION_SIZE 1 + +#define NETFLOW_DIRECTION 61 +#define NETFLOW_DIRECTION_SIZE 1 + +#define NETFLOW_IPV6_NEXT_HOP 62 +#define NETFLOW_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_BGP_IPV6_NEXT_HOP 63 +#define NETFLOW_BGP_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_IPV6_OPTION_HEADERS 64 +#define NETFLOW_IPV6_OPTION_HEADERS_SIZE 4 + + +#define NETFLOW_VERSION 1001 +#define NETFLOW_VERSION_SIZE 2 + +#define NETFLOW_COUNT 1002 +#define NETFLOW_COUNT_SIZE 2 + +#define NETFLOW_UPTIME 1003 +#define NETFLOW_UPTIME_SIZE 4 + +#define NETFLOW_UNIX_SECS 1004 +#define NETFLOW_UNIX_SECS_SIZE 4 + +#define NETFLOW_UNIX_NSECS 1005 +#define NETFLOW_UNIX_NSECS_SIZE 4 + +#define NETFLOW_FLOW_SEQUENCE 1006 +#define NETFLOW_FLOW_SEQUENCE_SIZE 4 + +#define NETFLOW_HEADER_SAMPLING_INTERVAL 1009 /* ??? */ +#define NETFLOW_HEADER_SAMPLING_INTERVAL_SIZE 2 + +#define NETFLOW_FLAGS7_1 1010 +#define NETFLOW_FLAGS7_1_SIZE 1 + +#define NETFLOW_FLAGS7_2 1011 +#define NETFLOW_FLAGS7_2_SIZE 2 + +#define NETFLOW_ROUTER_SC 1012 +#define NETFLOW_ROUTER_SC_SIZE 4 + + +#define NETFLOW_PAD8 9001 +#define NETFLOW_PAD8_SIZE 1 + +#define NETFLOW_PAD16 9002 +#define NETFLOW_PAD16_SIZE 2 + +#define NETFLOW_PAD32 9003 +#define NETFLOW_PAD32_SIZE 4 + +#define NETFLOW_PAD64 9004 +#define NETFLOW_PAD64_SIZE 8 + + +#define NETFLOW_MAX_PACKET 1500 + +#define NETFLOW1_VERSION 1 +#define NETFLOW1_HEADER_SIZE 16 +#define NETFLOW1_MAX_FLOWS 24 +#define NETFLOW1_FLOW_SIZE 48 +#define NETFLOW1_SEQ_OFFSET 0 + +#define NETFLOW5_VERSION 5 +#define NETFLOW5_HEADER_SIZE 24 +#define NETFLOW5_MAX_FLOWS 30 +#define NETFLOW5_FLOW_SIZE 48 +#define NETFLOW5_SEQ_OFFSET 16 + +#define NETFLOW7_VERSION 7 +#define NETFLOW7_HEADER_SIZE 24 +#define NETFLOW7_MAX_FLOWS 27 +#define NETFLOW7_FLOW_SIZE 52 +#define NETFLOW7_SEQ_OFFSET 16 + +#define NETFLOW8_VERSION 8 +#define NETFLOW8_MAX_FLOWS 51 + +struct NetFlow { + unsigned Version; + unsigned HeaderSize; + unsigned MaxFlows; + unsigned FlowSize; + unsigned SeqOffset; + unsigned HeaderFields; + uint16_t *HeaderFormat; + unsigned FlowFields; + uint16_t *FlowFormat; +}; + +#endif diff --git a/trunk/src/tags b/trunk/src/tags new file mode 100644 index 0000000..3565b6b --- /dev/null +++ b/trunk/src/tags @@ -0,0 +1,637 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.5.4 // +ACLOCAL Makefile /^ACLOCAL = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run aclocal-1.9$/;" m +ACLOCAL_M4 Makefile /^ACLOCAL_M4 = $(top_srcdir)\/aclocal.m4$/;" m +AMDEP_FALSE Makefile /^AMDEP_FALSE = #$/;" m +AMDEP_TRUE Makefile /^AMDEP_TRUE = $/;" m +AMTAR Makefile /^AMTAR = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run tar$/;" m +AUTOCONF Makefile /^AUTOCONF = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run autoconf$/;" m +AUTOHEADER Makefile /^AUTOHEADER = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run autoheader$/;" m +AUTOMAKE Makefile /^AUTOMAKE = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run automake-1.9$/;" m +AWK Makefile /^AWK = gawk$/;" m +BULK_QUANTITY fprobe-ulog.c 149;" d file: +BULK_QUANTITY fprobe-ulog.c 151;" d file: +BULK_QUANTITY_MAX fprobe-ulog.c 147;" d file: +Bflag fprobe-ulog.c /^ Bflag,$/;" e file: +CAPTURE_SIZE fprobe-ulog.h 22;" d +CC Makefile /^CC = gcc$/;" m +CCDEPMODE Makefile /^CCDEPMODE = depmode=none$/;" m +CCLD Makefile /^CCLD = $(CC)$/;" m +CDPATH Makefile /^am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd$/;" m +CFLAGS Makefile /^CFLAGS = -g -O2 -D_BSD_SOURCE -D_REENTRANT -DWALL -W -Wall$/;" m +COMPILE Makefile /^COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\$/;" m +CONFIG_CLEAN_FILES Makefile /^CONFIG_CLEAN_FILES =$/;" m +CONFIG_HEADER Makefile /^CONFIG_HEADER = $(top_builddir)\/config.h$/;" m +COPY_INTO fprobe-ulog.h 24;" d +CPP Makefile /^CPP = gcc -E$/;" m +CPPFLAGS Makefile /^CPPFLAGS = $/;" m +CRC16_POLY hash.h 42;" d +CTAGS Makefile /^CTAGS = ctags$/;" m +CYGPATH_W Makefile /^CYGPATH_W = echo$/;" m +DATE Makefile /^DATE = 2007-10-26$/;" m +DBG common.h 13;" d +DEBUG_C common.h 18;" d +DEBUG_E common.h 24;" d +DEBUG_F common.h 28;" d +DEBUG_I common.h 30;" d +DEBUG_M common.h 26;" d +DEBUG_S common.h 22;" d +DEBUG_U common.h 20;" d +DEFAULT_INCLUDES Makefile /^DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)$/;" m +DEFS Makefile /^DEFS = -DHAVE_CONFIG_H$/;" m +DEPDIR Makefile /^DEPDIR = .deps$/;" m +DISTFILES Makefile /^DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)$/;" m +DIST_COMMON Makefile /^DIST_COMMON = $(srcdir)\/Makefile.am $(srcdir)\/Makefile.in$/;" m +DIST_SOURCES Makefile /^DIST_SOURCES = $(fprobe_ulog_SOURCES)$/;" m +DIST_SUBDIRS Makefile /^DIST_SUBDIRS = $(SUBDIRS)$/;" m +ECHO_C Makefile /^ECHO_C = $/;" m +ECHO_N Makefile /^ECHO_N = -n$/;" m +ECHO_T Makefile /^ECHO_T = $/;" m +EGREP Makefile /^EGREP = grep -E$/;" m +EMIT_TIMEOUT fprobe-ulog.h 20;" d +ETAGS Makefile /^ETAGS = etags$/;" m +EXEEXT Makefile /^EXEEXT = $/;" m +EXTRA_DIST Makefile /^EXTRA_DIST = ${man_MANS}$/;" m +FLOW_FRAG fprobe-ulog.h 65;" d +FLOW_FRAGMASK fprobe-ulog.h 66;" d +FLOW_LASTFRAG fprobe-ulog.h 68;" d +FLOW_PENDING fprobe-ulog.h 69;" d +FLOW_TL fprobe-ulog.h 67;" d +Flow fprobe-ulog.h /^struct Flow {$/;" s +FlowFields netflow.h /^ unsigned FlowFields;$/;" m struct:NetFlow +FlowFormat netflow.h /^ uint16_t *FlowFormat;$/;" m struct:NetFlow +FlowSize netflow.h /^ unsigned FlowSize;$/;" m struct:NetFlow +Flow_F fprobe-ulog.h /^struct Flow_F {$/;" s +Flow_TL fprobe-ulog.h /^struct Flow_TL {$/;" s +HeaderFields netflow.h /^ unsigned HeaderFields;$/;" m struct:NetFlow +HeaderFormat netflow.h /^ uint16_t *HeaderFormat;$/;" m struct:NetFlow +HeaderSize netflow.h /^ unsigned HeaderSize;$/;" m struct:NetFlow +INCLUDES Makefile /^INCLUDES = -I$(top_srcdir)\/src\/libipulog\/include$/;" m +INSTALL Makefile /^INSTALL = \/bin\/install -c$/;" m +INSTALL_DATA Makefile /^INSTALL_DATA = ${INSTALL} -m 644$/;" m +INSTALL_HEADER Makefile /^INSTALL_HEADER = $(INSTALL_DATA)$/;" m +INSTALL_PROGRAM Makefile /^ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\$/;" m +INSTALL_PROGRAM Makefile /^INSTALL_PROGRAM = ${INSTALL}$/;" m +INSTALL_PROGRAM_ENV Makefile /^ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install$/;" m +INSTALL_SCRIPT Makefile /^INSTALL_SCRIPT = ${INSTALL}$/;" m +INSTALL_STRIP_FLAG Makefile /^ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\$/;" m +INSTALL_STRIP_PROGRAM Makefile /^INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s$/;" m +IP_OFFMASK fprobe-ulog.h 16;" d +LDFLAGS Makefile /^LDFLAGS = $/;" m +LIBOBJS Makefile /^LIBOBJS = $/;" m +LIBS Makefile /^LIBS = -lpthread $/;" m +LINK Makefile /^LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@$/;" m +LTLIBOBJS Makefile /^LTLIBOBJS = $/;" m +MAKEINFO Makefile /^MAKEINFO = ${SHELL} \/home\/sapan\/fprobe-ulog-1.1\/missing --run makeinfo$/;" m +MANS Makefile /^MANS = $(man_MANS)$/;" m +MEM_THREADSAFE mem.h 18;" d +MOVE_INTO fprobe-ulog.h 25;" d +MY_GETOPT_ALLOW_REPEAT my_getopt.h 15;" d +MY_GETOPT_ARG_REQUIRED my_getopt.h 13;" d +MY_GETOPT_MAX_OPTSTR my_getopt.h 17;" d +MY_GETOPT_REQUIRED my_getopt.h 14;" d +MY_LOG_MAX_INDEX my_log.h 16;" d +MY_LOG_STDOUT my_log.h 14;" d +MY_LOG_SYSLOG my_log.h 13;" d +MY_LOG_SYSLOG_FACILITY my_log.h 15;" d +MaxFlows netflow.h /^ unsigned MaxFlows;$/;" m struct:NetFlow +Mem mem.h /^struct Mem {$/;" s +Mflag fprobe-ulog.c /^ Mflag,$/;" e file: +NETFLOW1_FLOW_SIZE netflow.h 215;" d +NETFLOW1_HEADER_SIZE netflow.h 213;" d +NETFLOW1_MAX_FLOWS netflow.h 214;" d +NETFLOW1_SEQ_OFFSET netflow.h 216;" d +NETFLOW1_VERSION netflow.h 212;" d +NETFLOW5_FLOW_SIZE netflow.h 221;" d +NETFLOW5_HEADER_SIZE netflow.h 219;" d +NETFLOW5_MAX_FLOWS netflow.h 220;" d +NETFLOW5_SEQ_OFFSET netflow.h 222;" d +NETFLOW5_VERSION netflow.h 218;" d +NETFLOW7_FLOW_SIZE netflow.h 227;" d +NETFLOW7_HEADER_SIZE netflow.h 225;" d +NETFLOW7_MAX_FLOWS netflow.h 226;" d +NETFLOW7_SEQ_OFFSET netflow.h 228;" d +NETFLOW7_VERSION netflow.h 224;" d +NETFLOW8_MAX_FLOWS netflow.h 231;" d +NETFLOW8_VERSION netflow.h 230;" d +NETFLOW_BGP_IPV6_NEXT_HOP netflow.h 159;" d +NETFLOW_BGP_IPV6_NEXT_HOP_SIZE netflow.h 160;" d +NETFLOW_BGP_NEXT_HOP netflow.h 66;" d +NETFLOW_BGP_NEXT_HOP_SIZE netflow.h 67;" d +NETFLOW_BYTES_32 netflow.h 15;" d +NETFLOW_BYTES_32_SIZE netflow.h 16;" d +NETFLOW_BYTES_64 netflow.h 81;" d +NETFLOW_BYTES_64_SIZE netflow.h 82;" d +NETFLOW_COUNT netflow.h 169;" d +NETFLOW_COUNT_SIZE netflow.h 170;" d +NETFLOW_DIRECTION netflow.h 153;" d +NETFLOW_DIRECTION_SIZE netflow.h 154;" d +NETFLOW_DST_AS netflow.h 63;" d +NETFLOW_DST_AS_SIZE netflow.h 64;" d +NETFLOW_DST_MASK netflow.h 51;" d +NETFLOW_DST_MASK_SIZE netflow.h 52;" d +NETFLOW_ENGINE_ID netflow.h 129;" d +NETFLOW_ENGINE_ID_SIZE netflow.h 130;" d +NETFLOW_ENGINE_TYPE netflow.h 126;" d +NETFLOW_ENGINE_TYPE_SIZE netflow.h 127;" d +NETFLOW_FIRST_SWITCHED netflow.h 78;" d +NETFLOW_FIRST_SWITCHED_SIZE netflow.h 79;" d +NETFLOW_FLAGS7_1 netflow.h 187;" d +NETFLOW_FLAGS7_1_SIZE netflow.h 188;" d +NETFLOW_FLAGS7_2 netflow.h 190;" d +NETFLOW_FLAGS7_2_SIZE netflow.h 191;" d +NETFLOW_FLOWS netflow.h 21;" d +NETFLOW_FLOWS_SIZE netflow.h 22;" d +NETFLOW_FLOW_ACTIVE_TIMEOUT netflow.h 120;" d +NETFLOW_FLOW_ACTIVE_TIMEOUT_SIZE netflow.h 121;" d +NETFLOW_FLOW_INACTIVE_TIMEOUT netflow.h 123;" d +NETFLOW_FLOW_INACTIVE_TIMEOUT_SIZE netflow.h 124;" d +NETFLOW_FLOW_LABEL netflow.h 105;" d +NETFLOW_FLOW_LABEL_SZIE netflow.h 106;" d +NETFLOW_FLOW_SAMPLER_ID netflow.h 141;" d +NETFLOW_FLOW_SAMPLER_ID_SIZE netflow.h 142;" d +NETFLOW_FLOW_SAMPLER_MODE netflow.h 144;" d +NETFLOW_FLOW_SAMPLER_MODE_SIZE netflow.h 145;" d +NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL netflow.h 147;" d +NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL_SIZE netflow.h 148;" d +NETFLOW_FLOW_SEQUENCE netflow.h 181;" d +NETFLOW_FLOW_SEQUENCE_SIZE netflow.h 182;" d +NETFLOW_HEADER_SAMPLING_INTERVAL netflow.h 184;" d +NETFLOW_HEADER_SAMPLING_INTERVAL_SIZE netflow.h 185;" d +NETFLOW_ICMP_TYPE netflow.h 108;" d +NETFLOW_ICMP_TYPE_SIZE netflow.h 109;" d +NETFLOW_INPUT_SNMP netflow.h 42;" d +NETFLOW_INPUT_SNMP_SIZE netflow.h 43;" d +NETFLOW_IPM_DOCTETS netflow.h 72;" d +NETFLOW_IPM_DOCTETS_SIZE netflow.h 73;" d +NETFLOW_IPM_DPKTS netflow.h 69;" d +NETFLOW_IPM_DPKTS_SIZE netflow.h 70;" d +NETFLOW_IPV4_DST_ADDR netflow.h 48;" d +NETFLOW_IPV4_DST_ADDR_SIZE netflow.h 49;" d +NETFLOW_IPV4_NEXT_HOP netflow.h 57;" d +NETFLOW_IPV4_NEXT_HOP_SIZE netflow.h 58;" d +NETFLOW_IPV4_SRC_ADDR netflow.h 36;" d +NETFLOW_IPV4_SRC_ADDR_SIZE netflow.h 37;" d +NETFLOW_IPV6_DST_ADDR netflow.h 96;" d +NETFLOW_IPV6_DST_ADDR_SIZE netflow.h 97;" d +NETFLOW_IPV6_DST_MASK netflow.h 102;" d +NETFLOW_IPV6_DST_MASK_SIZE netflow.h 103;" d +NETFLOW_IPV6_NEXT_HOP netflow.h 156;" d +NETFLOW_IPV6_NEXT_HOP_SIZE netflow.h 157;" d +NETFLOW_IPV6_OPTION_HEADERS netflow.h 162;" d +NETFLOW_IPV6_OPTION_HEADERS_SIZE netflow.h 163;" d +NETFLOW_IPV6_SRC_ADDR netflow.h 93;" d +NETFLOW_IPV6_SRC_ADDR_SIZE netflow.h 94;" d +NETFLOW_IPV6_SRC_MASK netflow.h 99;" d +NETFLOW_IPV6_SRC_MASK_SIZE netflow.h 100;" d +NETFLOW_IP_PROTOCOL_VERSION netflow.h 150;" d +NETFLOW_IP_PROTOCOL_VERSION_SIZE netflow.h 151;" d +NETFLOW_L4_DST_PORT netflow.h 45;" d +NETFLOW_L4_DST_PORT_SIZE netflow.h 46;" d +NETFLOW_L4_SRC_PORT netflow.h 33;" d +NETFLOW_L4_SRC_PORT_SIZE netflow.h 34;" d +NETFLOW_LAST_SWITCHED netflow.h 75;" d +NETFLOW_LAST_SWITCHED_SIZE netflow.h 76;" d +NETFLOW_MAC_ADDR netflow.h 87;" d +NETFLOW_MAC_ADDR_SIZE netflow.h 88;" d +NETFLOW_MAX_PACKET netflow.h 210;" d +NETFLOW_MUL_IGMP_TYPE netflow.h 111;" d +NETFLOW_MUL_IGMP_TYPE_SIZE netflow.h 112;" d +NETFLOW_OUTPUT_SNMP netflow.h 54;" d +NETFLOW_OUTPUT_SNMP_SIZE netflow.h 55;" d +NETFLOW_PAD16 netflow.h 200;" d +NETFLOW_PAD16_SIZE netflow.h 201;" d +NETFLOW_PAD32 netflow.h 203;" d +NETFLOW_PAD32_SIZE netflow.h 204;" d +NETFLOW_PAD64 netflow.h 206;" d +NETFLOW_PAD64_SIZE netflow.h 207;" d +NETFLOW_PAD8 netflow.h 197;" d +NETFLOW_PAD8_SIZE netflow.h 198;" d +NETFLOW_PKTS_32 netflow.h 18;" d +NETFLOW_PKTS_32_SIZE netflow.h 19;" d +NETFLOW_PKTS_64 netflow.h 84;" d +NETFLOW_PKTS_64_SIZE netflow.h 85;" d +NETFLOW_PROT netflow.h 24;" d +NETFLOW_PROT_SIZE netflow.h 25;" d +NETFLOW_ROUTER_SC netflow.h 193;" d +NETFLOW_ROUTER_SC_SIZE netflow.h 194;" d +NETFLOW_SAMPLING_ALGORITHM netflow.h 117;" d +NETFLOW_SAMPLING_ALGORITHM_SIZE netflow.h 118;" d +NETFLOW_SAMPLING_INTERVAL netflow.h 114;" d +NETFLOW_SAMPLING_INTERVAL_SIZE netflow.h 115;" d +NETFLOW_SRC_AS netflow.h 60;" d +NETFLOW_SRC_AS_SIZE netflow.h 61;" d +NETFLOW_SRC_MASK netflow.h 39;" d +NETFLOW_SRC_MASK_SIZE netflow.h 40;" d +NETFLOW_SRC_TOS netflow.h 27;" d +NETFLOW_SRC_TOS_SIZE netflow.h 28;" d +NETFLOW_TCP_FLAGS netflow.h 30;" d +NETFLOW_TCP_FLAGS_SIZE netflow.h 31;" d +NETFLOW_TOTAL_BYTES_EXPORTED netflow.h 132;" d +NETFLOW_TOTAL_BYTES_EXPORTED_SIZE netflow.h 133;" d +NETFLOW_TOTAL_EXPORT_PKTS_SENT netflow.h 135;" d +NETFLOW_TOTAL_EXPORT_PKTS_SENT_SIZE netflow.h 136;" d +NETFLOW_TOTAL_FLOWS_EXPORTED netflow.h 138;" d +NETFLOW_TOTAL_FLOWS_EXPORTED_SIZE netflow.h 139;" d +NETFLOW_UNIX_NSECS netflow.h 178;" d +NETFLOW_UNIX_NSECS_SIZE netflow.h 179;" d +NETFLOW_UNIX_SECS netflow.h 175;" d +NETFLOW_UNIX_SECS_SIZE netflow.h 176;" d +NETFLOW_UPTIME netflow.h 172;" d +NETFLOW_UPTIME_SIZE netflow.h 173;" d +NETFLOW_VERSION netflow.h 166;" d +NETFLOW_VERSION_SIZE netflow.h 167;" d +NETFLOW_VLAN_ID netflow.h 90;" d +NETFLOW_VLAN_ID_SIZE netflow.h 91;" d +NORMAL_INSTALL Makefile /^NORMAL_INSTALL = :$/;" m +NORMAL_UNINSTALL Makefile /^NORMAL_UNINSTALL = :$/;" m +NROFF Makefile /^NROFF = nroff$/;" m +NetFlow netflow.h /^struct NetFlow {$/;" s +NetFlow1 netflow.c /^struct NetFlow NetFlow1 = {$/;" v +NetFlow1_Flow netflow.c /^static uint16_t NetFlow1_Flow[] = {$/;" v file: +NetFlow1_Header netflow.c /^static uint16_t NetFlow1_Header[] = {$/;" v file: +NetFlow5 netflow.c /^struct NetFlow NetFlow5 = {$/;" v +NetFlow5_Flow netflow.c /^static uint16_t NetFlow5_Flow[] = {$/;" v file: +NetFlow5_Header netflow.c /^static uint16_t NetFlow5_Header[] = {$/;" v file: +NetFlow7 netflow.c /^struct NetFlow NetFlow7 = {$/;" v +NetFlow7_Flow netflow.c /^static uint16_t NetFlow7_Flow[] = {$/;" v file: +NetFlow7_Header netflow.c /^static uint16_t NetFlow7_Header[] = {$/;" v file: +OBJEXT Makefile /^OBJEXT = o$/;" m +PACKAGE Makefile /^PACKAGE = fprobe-ulog$/;" m +PACKAGE_BUGREPORT Makefile /^PACKAGE_BUGREPORT = $/;" m +PACKAGE_NAME Makefile /^PACKAGE_NAME = $/;" m +PACKAGE_STRING Makefile /^PACKAGE_STRING = $/;" m +PACKAGE_TARNAME Makefile /^PACKAGE_TARNAME = $/;" m +PACKAGE_VERSION Makefile /^PACKAGE_VERSION = $/;" m +PATH_SEPARATOR Makefile /^PATH_SEPARATOR = :$/;" m +PEER_MIRROR fprobe-ulog.h 126;" d +PEER_ROTATE fprobe-ulog.h 127;" d +POST_INSTALL Makefile /^POST_INSTALL = :$/;" m +POST_UNINSTALL Makefile /^POST_UNINSTALL = :$/;" m +PRE_INSTALL Makefile /^PRE_INSTALL = :$/;" m +PRE_UNINSTALL Makefile /^PRE_UNINSTALL = :$/;" m +PROGRAMS Makefile /^PROGRAMS = $(sbin_PROGRAMS)$/;" m +RANLIB Makefile /^RANLIB = ranlib$/;" m +RECURSIVE_TARGETS Makefile /^RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \\$/;" m +RNDDEV hash.h 45;" d +SCHED fprobe-ulog.h 19;" d +SET_MAKE Makefile /^SET_MAKE = $/;" m +SHELL Makefile /^SHELL = \/bin\/sh$/;" m +SIGALRM_MASK fprobe-ulog.h 108;" d +SIGTERM_MASK fprobe-ulog.h 109;" d +SIGUSR1_MASK fprobe-ulog.h 110;" d +SOURCES Makefile /^SOURCES = $(fprobe_ulog_SOURCES)$/;" m +STRIP Makefile /^STRIP = $/;" m +STRIPPROG Makefile /^ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install$/;" m +SUBDIRS Makefile /^SUBDIRS = libipulog$/;" m +SeqOffset netflow.h /^ unsigned SeqOffset;$/;" m struct:NetFlow +THREADS fprobe-ulog.h 23;" d +Time fprobe-ulog.h /^struct Time {$/;" s +UNPENDING_TIMEOUT fprobe-ulog.h 21;" d +Uflag fprobe-ulog.c /^ Uflag,$/;" e file: +VERSION Makefile /^VERSION = 1.1$/;" m +Version netflow.h /^ unsigned Version;$/;" m struct:NetFlow +Xflag fprobe-ulog.c /^ Xflag,$/;" e file: +_COMMON_H_ common.h 11;" d +_FPROBE_ULOG_H_ fprobe-ulog.h 11;" d +_HASH_H_ hash.h 11;" d +_MEM_H_ mem.h 11;" d +_MY_GETOPT_H_ my_getopt.h 11;" d +_MY_INTTYPES_H_ my_inttypes.h 11;" d +_MY_LOG_H_ my_log.h 11;" d +_NETFLOW_H_ netflow.h 11;" d +ac_ct_CC Makefile /^ac_ct_CC = gcc$/;" m +ac_ct_RANLIB Makefile /^ac_ct_RANLIB = ranlib$/;" m +ac_ct_STRIP Makefile /^ac_ct_STRIP = $/;" m +active_lifetime fprobe-ulog.c /^static int active_lifetime = 300;$/;" v file: +addr fprobe-ulog.h /^ struct sockaddr_in addr;$/;" m struct:peer +aflag fprobe-ulog.c /^ aflag,$/;" e file: +am__aclocal_m4_deps Makefile /^am__aclocal_m4_deps = $(top_srcdir)\/configure.in$/;" m +am__cd Makefile /^am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd$/;" m +am__configure_deps Makefile /^am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\$/;" m +am__depfiles_maybe Makefile /^am__depfiles_maybe =$/;" m +am__fastdepCC_FALSE Makefile /^am__fastdepCC_FALSE = $/;" m +am__fastdepCC_TRUE Makefile /^am__fastdepCC_TRUE = #$/;" m +am__include Makefile /^am__include = include$/;" m +am__installdirs Makefile /^am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"$/;" m +am__leading_dot Makefile /^am__leading_dot = .$/;" m +am__quote Makefile /^am__quote = $/;" m +am__tar Makefile /^am__tar = ${AMTAR} chof - "$$tardir"$/;" m +am__untar Makefile /^am__untar = ${AMTAR} xf -$/;" m +am_fprobe_ulog_OBJECTS Makefile /^am_fprobe_ulog_OBJECTS = fprobe-ulog.$(OBJEXT) netflow.$(OBJEXT) \\$/;" m +amf Makefile /^ @set fnord $$MAKEFLAGS; amf=$$2; \\$/;" m +arg my_getopt.h /^ char *arg;$/;" m struct:getopt_parms +base fprobe-ulog.h /^ int base;$/;" m struct:snmp_rule +basename fprobe-ulog.h /^ char basename[IFNAMSIZ];$/;" m struct:snmp_rule +bflag fprobe-ulog.c /^ bflag,$/;" e file: +bindir Makefile /^bindir = ${exec_prefix}\/bin$/;" m +blocking fprobe-ulog.c /^ u_int8_t blocking;$/;" m struct:ipulog_handle file: +build Makefile /^build = i686-pc-linux-gnu$/;" m +build_alias Makefile /^build_alias = $/;" m +build_cpu Makefile /^build_cpu = i686$/;" m +build_os Makefile /^build_os = linux-gnu$/;" m +build_triplet Makefile /^build_triplet = i686-pc-linux-gnu$/;" m +build_vendor Makefile /^build_vendor = pc$/;" m +bulk_quantity fprobe-ulog.c /^static unsigned bulk_quantity = BULK_QUANTITY;$/;" v file: +bulk_quantity mem.c /^static unsigned int bulk_quantity;$/;" v file: +cap_buf fprobe-ulog.c /^static char *cap_buf;$/;" v file: +cap_thread fprobe-ulog.c /^void *cap_thread()$/;" f +cflag fprobe-ulog.c /^ cflag,$/;" e file: +cmpmtime fprobe-ulog.c /^inline time_t cmpmtime(struct Time *t1, struct Time *t2)$/;" f +copy_flow fprobe-ulog.c /^inline void copy_flow(struct Flow *src, struct Flow *dst)$/;" f +count my_getopt.h /^ int count;$/;" m struct:getopt_parms +crc16 hash.c /^uint16_t crc16(uint16_t crc, uint8_t val)$/;" f +crc16_poly hash.c /^static uint16_t crc16_poly;$/;" v file: +crc16_table hash.c /^static uint16_t crc16_table[256];$/;" v file: +ctime fprobe-ulog.h /^ struct Time ctime;$/;" m struct:Flow +datadir Makefile /^datadir = ${prefix}\/share$/;" m +depcomp Makefile /^depcomp =$/;" m +depmode Makefile /^CCDEPMODE = depmode=none$/;" m +dflag fprobe-ulog.c /^ dflag,$/;" e file: +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow_F +dip fprobe-ulog.h /^ struct in_addr dip;$/;" m struct:Flow_TL +dir Makefile /^ dir="\/$$dir"; \\$/;" m +dir Makefile /^ dir=''; \\$/;" m +dir Makefile /^ dir=`echo "$$file" | sed -e 's,\/[^\/]*$$,,'`; \\$/;" m +distdir Makefile /^ distdir="$$distdir\/$$subdir" \\$/;" m +distdir Makefile /^ distdir=`$(am__cd) $(distdir) && pwd`; \\$/;" m +dot_seen Makefile /^ dot_seen=yes; \\$/;" m +dot_seen Makefile /^ dot_seen=no; \\$/;" m +dp fprobe-ulog.h /^ uint16_t dp;$/;" m struct:Flow +dp fprobe-ulog.h /^ uint16_t dp;$/;" m struct:Flow_TL +eflag fprobe-ulog.c /^ eflag,$/;" e file: +element_size mem.c /^static unsigned int element_size;$/;" v file: +element_table_size mem.c /^static unsigned int element_table_size;$/;" v file: +emit_cond fprobe-ulog.c /^static pthread_cond_t emit_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +emit_count fprobe-ulog.c /^static unsigned emit_count;$/;" v file: +emit_mutex fprobe-ulog.c /^static pthread_mutex_t emit_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +emit_packet fprobe-ulog.c /^static uint8_t emit_packet[NETFLOW_MAX_PACKET];$/;" v file: +emit_pkts fprobe-ulog.c /^static unsigned emit_pkts, emit_queue;$/;" v file: +emit_queue fprobe-ulog.c /^static unsigned emit_pkts, emit_queue;$/;" v file: +emit_rate_bytes fprobe-ulog.c /^static unsigned emit_rate_bytes, emit_rate_delay;$/;" v file: +emit_rate_delay fprobe-ulog.c /^static unsigned emit_rate_bytes, emit_rate_delay;$/;" v file: +emit_sequence fprobe-ulog.c /^static uint32_t emit_sequence;$/;" v file: +emit_thread fprobe-ulog.c /^void *emit_thread()$/;" f +emit_time fprobe-ulog.c /^static struct Time emit_time;$/;" v file: +emit_timeout fprobe-ulog.c /^static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT;$/;" v file: +empty_fix Makefile /^ empty_fix=.; \\$/;" m +empty_fix Makefile /^ empty_fix=; \\$/;" m +exec_prefix Makefile /^exec_prefix = ${prefix}$/;" m +ext Makefile /^ *) ext='8' ;; \\$/;" m +ext Makefile /^ ext=`echo $$i | sed -e 's\/^.*\\\\.\/\/'`; \\$/;" m +f Makefile /^ f=`echo "$$p1" | sed 's,^.*\/,,;$(transform);s\/$$\/$(EXEEXT)\/'`; \\$/;" m +f Makefile /^ f=`echo "$$p" | sed 's,^.*\/,,;s\/$(EXEEXT)$$\/\/;$(transform);s\/$$\/$(EXEEXT)\/'`; \\$/;" m +fail Makefile /^ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\$/;" m +fd fprobe-ulog.c /^ int fd;$/;" m struct:ipulog_handle file: +file Makefile /^ $(srcdir)\/*) file=`echo "$$file" | sed "s|^$$srcdirstrip\/||"`;; \\$/;" m +file Makefile /^ $(top_srcdir)\/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip\/|$(top_builddir)\/|"`;; \\$/;" m +fill fprobe-ulog.c /^void *fill(int fields, uint16_t *format, struct Flow *flow, void *p)$/;" f +find fprobe-ulog.c /^struct Flow *find(struct Flow *where, struct Flow *what, struct Flow ***prev)$/;" f +first mem.h /^ void *first;$/;" m struct:Mem +flag my_getopt.h /^ int flag;$/;" m struct:getopt_parms +flags fprobe-ulog.h /^ int flags;$/;" m struct:Flow +flows fprobe-ulog.c /^static struct Flow *flows[1 << HASH_BITS];$/;" v file: +flows_emit fprobe-ulog.c /^static struct Flow *flows_emit;$/;" v file: +flows_fragmented fprobe-ulog.c /^static unsigned flows_total, flows_fragmented;$/;" v file: +flows_mutex fprobe-ulog.c /^static pthread_mutex_t flows_mutex[1 << HASH_BITS];$/;" v file: +flows_total fprobe-ulog.c /^static unsigned flows_total, flows_fragmented;$/;" v file: +fprobe_ulog_DEPENDENCIES Makefile /^fprobe_ulog_DEPENDENCIES = libipulog\/libipulog.a$/;" m +fprobe_ulog_LDADD Makefile /^fprobe_ulog_LDADD = libipulog\/libipulog.a$/;" m +fprobe_ulog_OBJECTS Makefile /^fprobe_ulog_OBJECTS = $(am_fprobe_ulog_OBJECTS)$/;" m +fprobe_ulog_SOURCES Makefile /^fprobe_ulog_SOURCES = fprobe-ulog.c fprobe-ulog.h \\$/;" m +frag_lifetime fprobe-ulog.c /^static int frag_lifetime = 30;$/;" v file: +free mem.h /^ unsigned int free;$/;" m struct:Mem +free_elements mem.c /^unsigned int free_elements;$/;" v +getopt_parms my_getopt.h /^struct getopt_parms {$/;" s +gettime fprobe-ulog.c /^void gettime(struct Time *now)$/;" f +getuptime fprobe-ulog.c /^uint32_t getuptime(struct Time *t)$/;" f +gflag fprobe-ulog.c /^ gflag,$/;" e file: +hash hash.c /^hash_t hash(void *p, int size)$/;" f +hash_flow fprobe-ulog.c /^hash_t hash_flow(struct Flow *flow)$/;" f +hash_init hash.c /^void hash_init()$/;" f +hash_t hash.h /^typedef uint16_t hash_t;$/;" t +hash_t hash.h /^typedef uint8_t hash_t;$/;" t +here Makefile /^ here=`$(am__cd) $(top_builddir) && pwd` \\$/;" m +here Makefile /^ here=`pwd`; \\$/;" m +hflag fprobe-ulog.c /^ hflag,$/;" e file: +host Makefile /^host = i686-pc-linux-gnu$/;" m +host_alias Makefile /^host_alias = $/;" m +host_cpu Makefile /^host_cpu = i686$/;" m +host_os Makefile /^host_os = linux-gnu$/;" m +host_triplet Makefile /^host_triplet = i686-pc-linux-gnu$/;" m +host_vendor Makefile /^host_vendor = pc$/;" m +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow_F +id fprobe-ulog.h /^ uint16_t id;$/;" m struct:Flow_TL +ident fprobe-ulog.c /^static char ident[256] = "fprobe-ulog";$/;" v file: +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow_F +iif fprobe-ulog.h /^ uint16_t iif;$/;" m struct:Flow_TL +ile Makefile /^ else file=$$i; fi; \\$/;" m +ile Makefile /^ if test -f $(srcdir)\/$$i; then file=$(srcdir)\/$$i; \\$/;" m +inactive_lifetime fprobe-ulog.c /^static int inactive_lifetime = 60;$/;" v file: +include_option Makefile /^ include_option=--etags-include; \\$/;" m +include_option Makefile /^ include_option=--include; \\$/;" m +includedir Makefile /^includedir = ${prefix}\/include$/;" m +info_debug fprobe-ulog.c /^void info_debug()$/;" f +infodir Makefile /^infodir = ${prefix}\/info$/;" m +inst Makefile /^ inst=`echo $$i | sed -e 's\/\\\\.[0-9a-z]*$$\/\/'`; \\$/;" m +inst Makefile /^ inst=`echo $$inst | sed '$(transform)'`.$$ext; \\$/;" m +inst Makefile /^ inst=`echo $$inst | sed -e 's\/^.*\\\/\/\/'`; \\$/;" m +install_sh Makefile /^install_sh = \/home\/sapan\/fprobe-ulog-1.1\/install-sh$/;" m +install_sh_DATA Makefile /^install_sh_DATA = $(install_sh) -c -m 644$/;" m +install_sh_PROGRAM Makefile /^ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\$/;" m +install_sh_PROGRAM Makefile /^install_sh_PROGRAM = $(install_sh) -c$/;" m +install_sh_SCRIPT Makefile /^install_sh_SCRIPT = $(install_sh) -c$/;" m +int16_t my_inttypes.h /^typedef short int16_t;$/;" t +int32_t my_inttypes.h /^typedef int int32_t;$/;" t +int32_t my_inttypes.h /^typedef long int32_t;$/;" t +int64_t my_inttypes.h /^typedef long int64_t;$/;" t +int64_t my_inttypes.h /^typedef long long int64_t;$/;" t +int8_t my_inttypes.h /^typedef signed char int8_t;$/;" t +ipulog_handle fprobe-ulog.c /^struct ipulog_handle {$/;" s file: +killed fprobe-ulog.c /^static int killed;$/;" v file: +l2 Makefile /^ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \\$/;" m +laddr fprobe-ulog.h /^ struct sockaddr_in laddr;$/;" m struct:peer +last mem.h /^ void *last;$/;" m struct:Mem +last_nlhdr fprobe-ulog.c /^ struct nlmsghdr* last_nlhdr;$/;" m struct:ipulog_handle file: +len fprobe-ulog.h /^ int len;$/;" m struct:snmp_rule +lflag fprobe-ulog.c /^ lflag,$/;" e file: +libdir Makefile /^libdir = ${exec_prefix}\/lib$/;" m +libexecdir Makefile /^libexecdir = ${exec_prefix}\/libexec$/;" m +limit_memory mem.c /^static unsigned int limit_memory;$/;" v file: +list Makefile /^ *.8*) list="$$list $$i" ;; \\$/;" m +list Makefile /^ *) list='$(SUBDIRS)' ;; \\$/;" m +list Makefile /^ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \\$/;" m +list Makefile /^ list='$(DISTFILES)'; for file in $$list; do \\$/;" m +list Makefile /^ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \\$/;" m +list Makefile /^ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \\$/;" m +list Makefile /^ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \\$/;" m +list Makefile /^ list='$(SUBDIRS)'; for subdir in $$list; do \\$/;" m +local fprobe-ulog.c /^ struct sockaddr_nl local;$/;" m struct:ipulog_handle file: +local_target Makefile /^ local_target="$$target"; \\$/;" m +local_target Makefile /^ local_target="$$target-am"; \\$/;" m +localstatedir Makefile /^localstatedir = ${prefix}\/var$/;" m +log_dest fprobe-ulog.c /^static unsigned log_dest = MY_LOG_SYSLOG;$/;" v file: +main fprobe-ulog.c /^int main(int argc, char **argv)$/;" f +malloc_size mem.c /^static unsigned int malloc_size;$/;" v file: +man8dir Makefile /^man8dir = $(mandir)\/man8$/;" m +man_MANS Makefile /^man_MANS = fprobe-ulog.8$/;" m +mandir Makefile /^mandir = ${prefix}\/man$/;" m +mark_is_tos fprobe-ulog.c 141;" d file: +mem_alloc mem.c /^void *mem_alloc()$/;" f +mem_free mem.c /^void mem_free(void *eptr)$/;" f +mem_index_t mem.h /^typedef uint16_t mem_index_t;$/;" t +mem_index_t mem.h /^typedef uint8_t mem_index_t;$/;" t +mem_index_t mem.h /^typedef void* mem_index_t;$/;" t +mem_index_table_size mem.c /^static unsigned int mem_index_table_size;$/;" v file: +mem_init mem.c /^int mem_init(unsigned int element, unsigned int bulk, unsigned int limit)$/;" f +mem_mutex mem.c /^static pthread_mutex_t mem_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +mflag fprobe-ulog.c /^ mflag,$/;" e file: +mkdir_p Makefile /^mkdir_p = mkdir -p --$/;" m +mkinstalldirs Makefile /^mkinstalldirs = $(SHELL) $(top_srcdir)\/mkinstalldirs$/;" m +mtime fprobe-ulog.h /^ struct Time mtime;$/;" m struct:Flow +my_getopt my_getopt.c /^int my_getopt(int argc, char * const argv[],$/;" f +my_log my_log.c /^void my_log(unsigned level, const char *format, ...)$/;" f +my_log_close my_log.c /^void my_log_close(void)$/;" f +my_log_flags my_log.c /^static unsigned my_log_flags;$/;" v file: +my_log_indent my_log.c /^static char *my_log_indent;$/;" v file: +my_log_min_level my_log.c /^static unsigned my_log_min_level;$/;" v file: +my_log_names my_log.c /^static char *my_log_names[] = {$/;" v file: +my_log_open my_log.c /^void my_log_open(char *indent, unsigned min_level, unsigned flags)$/;" f +name my_getopt.h /^ char name;$/;" m struct:getopt_parms +netflow fprobe-ulog.c /^static struct NetFlow *netflow = &NetFlow5;$/;" v file: +next fprobe-ulog.h /^ struct Flow *next;$/;" m struct:Flow +next mem.h /^ struct Mem *next;$/;" m struct:Mem +nflag fprobe-ulog.c /^ nflag,$/;" e file: +npeers fprobe-ulog.c /^static int npeers, npeers_rot;$/;" v file: +npeers_rot fprobe-ulog.c /^static int npeers, npeers_rot;$/;" v file: +nsnmp_rules fprobe-ulog.c /^static int nsnmp_rules;$/;" v file: +off_tl fprobe-ulog.c /^static int off_tl;$/;" v file: +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow_F +oif fprobe-ulog.h /^ uint16_t oif;$/;" m struct:Flow_TL +oldincludedir Makefile /^oldincludedir = \/usr\/include$/;" m +p1 Makefile /^ p1=`echo $$p|sed 's\/$(EXEEXT)$$\/\/'`; \\$/;" m +parms fprobe-ulog.c /^static struct getopt_parms parms[] = {$/;" v file: +peer fprobe-ulog.c /^ struct sockaddr_nl peer;$/;" m struct:ipulog_handle file: +peer fprobe-ulog.h /^struct peer {$/;" s +peers fprobe-ulog.c /^static struct peer *peers;$/;" v file: +pending_head fprobe-ulog.c /^static struct Flow *pending_head, *pending_tail;$/;" v file: +pending_queue_length fprobe-ulog.c /^static unsigned pending_queue_length = 100;$/;" v file: +pending_queue_trace fprobe-ulog.c /^static unsigned pending_queue_trace, pending_queue_trace_candidate;$/;" v file: +pending_queue_trace_candidate fprobe-ulog.c /^static unsigned pending_queue_trace, pending_queue_trace_candidate;$/;" v file: +pending_tail fprobe-ulog.c /^static struct Flow *pending_head, *pending_tail;$/;" v file: +pid fprobe-ulog.c /^static pid_t pid;$/;" v file: +pidfile fprobe-ulog.c /^static FILE *pidfile;$/;" v file: +pidfilepath fprobe-ulog.c /^static char *pidfilepath;$/;" v file: +pkgdatadir Makefile /^pkgdatadir = $(datadir)\/fprobe-ulog$/;" m +pkgincludedir Makefile /^pkgincludedir = $(includedir)\/fprobe-ulog$/;" m +pkglibdir Makefile /^pkglibdir = $(libdir)\/fprobe-ulog$/;" m +pkts fprobe-ulog.h /^ unsigned long pkts;$/;" m struct:Flow +pkts_ignored fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_lost_capture fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_lost_unpending fprobe-ulog.c /^static unsigned pkts_ignored, pkts_lost_capture, pkts_lost_unpending;$/;" v file: +pkts_pending fprobe-ulog.c /^static unsigned pkts_pending, pkts_pending_done;$/;" v file: +pkts_pending_done fprobe-ulog.c /^static unsigned pkts_pending, pkts_pending_done;$/;" v file: +pkts_total fprobe-ulog.c /^static unsigned pkts_total, pkts_total_fragmented;$/;" v file: +pkts_total_fragmented fprobe-ulog.c /^static unsigned pkts_total, pkts_total_fragmented;$/;" v file: +prefix Makefile /^prefix = \/usr\/local$/;" m +program_transform_name Makefile /^program_transform_name = s,x,x,$/;" m +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow_F +proto fprobe-ulog.h /^ uint8_t proto;$/;" m struct:Flow_TL +put_into fprobe-ulog.c /^int put_into(struct Flow *flow, int flag$/;" f +pw fprobe-ulog.c /^static struct passwd *pw = 0;$/;" v file: +qflag fprobe-ulog.c /^ qflag,$/;" e file: +rev Makefile /^ rev="$$subdir $$rev"; \\$/;" m +rev Makefile /^ rev="$$rev ."; \\$/;" m +rev Makefile /^ rev=''; for subdir in $$list; do \\$/;" m +rflag fprobe-ulog.c /^ rflag,$/;" e file: +root mem.c /^static struct Mem *root;$/;" v file: +sbinPROGRAMS_INSTALL Makefile /^sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)$/;" m +sbin_PROGRAMS Makefile /^sbin_PROGRAMS = fprobe-ulog$(EXEEXT)$/;" m +sbindir Makefile /^sbindir = ${exec_prefix}\/sbin$/;" m +scan_cond fprobe-ulog.c /^static pthread_cond_t scan_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +scan_frag_dreg fprobe-ulog.c /^static struct Flow *scan_frag_dreg;$/;" v file: +scan_interval fprobe-ulog.c /^static unsigned scan_interval = 5;$/;" v file: +scan_mutex fprobe-ulog.c /^static pthread_mutex_t scan_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +scan_thread fprobe-ulog.c /^void *scan_thread()$/;" f +sched_max fprobe-ulog.c /^static int sched_min, sched_max;$/;" v file: +sched_min fprobe-ulog.c /^static int sched_min, sched_max;$/;" v file: +schedp fprobe-ulog.c /^static struct sched_param schedp;$/;" v file: +sec fprobe-ulog.h /^ time_t sec;$/;" m struct:Time +seq fprobe-ulog.h /^ uint32_t seq;$/;" m struct:peer +setuser fprobe-ulog.c /^void setuser() {$/;" f +sflag fprobe-ulog.c /^ sflag,$/;" e file: +sharedstatedir Makefile /^sharedstatedir = ${prefix}\/com$/;" m +shuffle_table hash.c /^static uint8_t shuffle_table[256];$/;" v file: +sig_mask fprobe-ulog.c /^static sigset_t sig_mask;$/;" v file: +sighandler fprobe-ulog.c /^void sighandler(int sig)$/;" f +sigs fprobe-ulog.c /^static int sigs;$/;" v file: +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow_F +sip fprobe-ulog.h /^ struct in_addr sip;$/;" m struct:Flow_TL +size fprobe-ulog.h /^ unsigned long size;$/;" m struct:Flow +sizeF fprobe-ulog.h /^ unsigned long sizeF;$/;" m struct:Flow +sizeP fprobe-ulog.h /^ unsigned long sizeP;$/;" m struct:Flow +size_total fprobe-ulog.c /^static uint64_t size_total;$/;" v file: +snmp_index fprobe-ulog.c /^uint16_t snmp_index(char *name) {$/;" f +snmp_rule fprobe-ulog.h /^struct snmp_rule {$/;" s +snmp_rule_t fprobe-ulog.h /^} snmp_rule_t;$/;" v +snmp_rules fprobe-ulog.c /^static struct snmp_rule *snmp_rules;$/;" v file: +sock fprobe-ulog.h /^ int sock;$/;" m struct:peer +sockbufsize fprobe-ulog.c /^static int sockbufsize;$/;" v file: +sp fprobe-ulog.h /^ uint16_t sp;$/;" m struct:Flow +sp fprobe-ulog.h /^ uint16_t sp;$/;" m struct:Flow_TL +srcdir Makefile /^srcdir = .$/;" m +start_time fprobe-ulog.c /^static struct Time start_time;$/;" v file: +start_time_offset fprobe-ulog.c /^static long start_time_offset;$/;" v file: +subdir Makefile /^subdir = src$/;" m +sysconfdir Makefile /^sysconfdir = ${prefix}\/etc$/;" m +tags Makefile /^ tags="$$tags $$include_option=$$here\/$$subdir\/TAGS"; \\$/;" m +tags Makefile /^ tags=; \\$/;" m +target Makefile /^ target=`echo $@ | sed s\/-recursive\/\/`; \\$/;" m +target Makefile /^target = i686-pc-linux-gnu$/;" m +target_alias Makefile /^target_alias = $/;" m +target_cpu Makefile /^target_cpu = i686$/;" m +target_os Makefile /^target_os = linux-gnu$/;" m +target_triplet Makefile /^target_triplet = i686-pc-linux-gnu$/;" m +target_vendor Makefile /^target_vendor = pc$/;" m +tcp_flags fprobe-ulog.h /^ uint8_t tcp_flags;$/;" m struct:Flow +tflag fprobe-ulog.c /^ tflag,$/;" e file: +thid fprobe-ulog.c /^static pthread_t thid;$/;" v file: +top_builddir Makefile /^top_builddir = ..$/;" m +top_distdir Makefile /^ top_distdir="$$top_distdir" \\$/;" m +top_distdir Makefile /^ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \\$/;" m +top_srcdir Makefile /^top_srcdir = ..$/;" m +topsrcdirstrip Makefile /^ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \\$/;" m +tos fprobe-ulog.h /^ uint8_t tos;$/;" m struct:Flow +total_elements mem.c /^unsigned int total_elements;$/;" v +total_memory mem.c /^unsigned int total_memory;$/;" v +transform Makefile /^transform = $(program_transform_name)$/;" m +type fprobe-ulog.h /^ int type;$/;" m struct:peer +uflag fprobe-ulog.c /^ uflag,$/;" e file: +uint16_t my_inttypes.h /^typedef unsigned short uint16_t;$/;" t +uint32_t my_inttypes.h /^typedef unsigned int uint32_t;$/;" t +uint32_t my_inttypes.h /^typedef unsigned long uint32_t;$/;" t +uint64_t my_inttypes.h /^typedef unsigned long long uint64_t;$/;" t +uint64_t my_inttypes.h /^typedef unsigned long uint64_t;$/;" t +uint8_t my_inttypes.h /^typedef unsigned char uint8_t;$/;" t +ulog_gmask fprobe-ulog.c /^static uint32_t ulog_gmask = 1;$/;" v file: +ulog_handle fprobe-ulog.c /^static struct ipulog_handle *ulog_handle;$/;" v file: +unique Makefile /^ test -n "$$unique" || unique=$$empty_fix; \\$/;" m +unique Makefile /^ unique=`for i in $$list; do \\$/;" m +unpending_cond fprobe-ulog.c /^static pthread_cond_t unpending_cond = PTHREAD_COND_INITIALIZER;$/;" v file: +unpending_mutex fprobe-ulog.c /^static pthread_mutex_t unpending_mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v file: +unpending_thread fprobe-ulog.c /^void *unpending_thread()$/;" f +unpending_timeout fprobe-ulog.c /^static int emit_timeout = EMIT_TIMEOUT, unpending_timeout = UNPENDING_TIMEOUT;$/;" v file: +usage fprobe-ulog.c /^void usage()$/;" f +usec fprobe-ulog.h /^ long usec;$/;" m struct:Time +verbosity fprobe-ulog.c /^static unsigned verbosity = 6;$/;" v file: +vflag fprobe-ulog.c /^ vflag,$/;" e file: diff --git a/trunk/version b/trunk/version new file mode 100644 index 0000000..9459d4b --- /dev/null +++ b/trunk/version @@ -0,0 +1 @@ +1.1 diff --git a/version b/version new file mode 100644 index 0000000..9459d4b --- /dev/null +++ b/version @@ -0,0 +1 @@ +1.1 -- 2.43.0