pax_global_header00006660000000000000000000000064147062344440014522gustar00rootroot0000000000000052 comment=79d251c89b4075ebea1e6939883e6fe489b7611a nfdump-1.7.5/000077500000000000000000000000001470623444400130255ustar00rootroot00000000000000nfdump-1.7.5/.github/000077500000000000000000000000001470623444400143655ustar00rootroot00000000000000nfdump-1.7.5/.github/FUNDING.yml000066400000000000000000000000161470623444400161770ustar00rootroot00000000000000github: phaag nfdump-1.7.5/.github/workflows/000077500000000000000000000000001470623444400164225ustar00rootroot00000000000000nfdump-1.7.5/.github/workflows/c-cpp.yml000066400000000000000000000007441470623444400201540ustar00rootroot00000000000000name: C/C++ CI on: push: branches: [ "master" ] pull_request: branches: [ "master" ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: prepare run: sudo apt-get -y install libpcap-dev - name: bootstrap run: sh bootstrap - name: configure run: ./configure --enable-sflow --enable-maxmind --enable-tor --enable-nfpcapd - name: make run: make - name: make check run: make check nfdump-1.7.5/.gitignore000066400000000000000000000025771470623444400150300ustar00rootroot00000000000000# Object files *.o *.ko *.obj *.elf # Precompiled Headers *.gch *.pch # Libraries *.lib *.a *.la *.lo # Shared objects (inc. Windows DLLs) *.dll *.so *.so.* *.dylib # Executables *.exe *.out *.app *.i*86 *.x86_64 *.hex # Debug files *.dSYM/ # Backup files *~ *.bak # vscode files .vscode .vscode/* # Automake generated files *Makefile *Makefile.in /INSTALL /Makefile.in /aclocal.m4 /autom4te.cache/ /compile /config.guess /config.h.in /config.sub /configure /depcomp /install-sh /ltmain.sh /missing /test-driver /ylwrap # Configure generated files /Makefile *tags *.dirstamp *.deps/ src/.libs/ src/*/.libs/ src/.version/ /config.h /config.log /config.status /extra/nftrack/.deps/ /libtool /man/Makefile /stamp-h1 /doc/Doxyfile /doc/Makefile m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 # Binaries generated by make /src/libnffle/.libs/ /src/libnfdump/.libs/ /src/libnfdump/filter/grammar.c /src/libnfdump/filter/grammar.h /src/libnfdump/filter/scanner.c /src/libnffile/vcs_track.h /src/nfdump/nfdump /src/tor/torlookup /src/geolookup /src/nfcapd/nfcapd /src/nfpcapd/nfpcapd /src/sflow/sfcapd /src/nfsen/nfprofile src/nfreplay/nfreplay src/nfexpire/nfexpire src/nfanon/nfanon src/maxmind/geolookup /src/nfsen/nftrack src/test/nfgen src/test/nftest src/ft2nfdump/ft2nfdump # Generated docs /doc/doxygen-build.stamp /doc/html/ /doc/man/ /doc/xml/ # tmp files tmp/* nfdump-1.7.5/AUTHORS000077500000000000000000000000461470623444400141000ustar00rootroot00000000000000Peter Haag peter@people.ops-trust.net nfdump-1.7.5/BSD-license.txt000066400000000000000000000031201470623444400156120ustar00rootroot00000000000000 The nfdump project is distributed under the BSD license: Copyright (c) 2016, Peter Haag All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. nfdump-1.7.5/COPYING000077700000000000000000000000001470623444400166442BSD-license.txtustar00rootroot00000000000000nfdump-1.7.5/ChangeLog000066400000000000000000002051421470623444400146030ustar00rootroot00000000000000- 18dc06d 2024-10-23 (HEAD -> master, origin/master, origin/HEAD) Fix nfeplay template identifu ID - 4c8b892 2024-10-19 Merge pull request #571 from TiceDB/patch-2 - b96828f 2024-10-19 Merge pull request #570 from TiceDB/patch-1 - b1d2a1f 2024-10-18 Point JSON field in_bytes to inBytes instead of inPackets - 6825cb0 2024-10-18 Add missing delimiter for JSON output - 04cc2b8 2024-09-22 Fix #567 devel compile error. - 0d78cf7 2024-09-09 Fix broken length calculation - b72105d 2024-09-09 Replace sprintf with snprintf in output files - 49ed7d8 2024-09-08 Add RTT lantencu code - but disabled for now - 0e80ef2 2024-09-07 Merge pull request #564 from paineta/master - 76aa13a 2024-09-06 Update output_fmt.c - dc85e39 2024-08-31 Addint64 and uint64 config routines - 15b9bfd 2024-08-31 Change GRE cli option -G in sfcapd for -o gre option string. #559 - 87a9e67 2024-08-31 Add new option functions in nfconf and wire nfpcapd options - 14b2179 2024-08-31 Use sysconfdir for default nfdump.conf file - 99db1cd 2024-08-31 Merge pull request #559 from simonschdev/parse-gre - 5c67031 2024-08-31 ADd FIN/RST signal flag to node - dbaa772 2024-08-29 Fix latency calculation in nfpcapd - 6d7d179 2024-08-27 Add src/dst tcp/udp port IE 180-183 - ae52e09 2024-08-27 Fix #560 - geo filter containing keywords - dfb736f 2024-08-25 Add array decoding in ConfInventory() - 8b08c33 2024-08-25 Replace toml code with better maintained version - 71a2dd2 2024-08-25 Fix potential use after free - 6409763 2024-08-24 Change record count from 32 to 64bits - fb344fb 2024-08-23 minor cosmetic fixes - 268ff3f 2024-08-23 implemented GRE tunnel introspection for sFlow - c0ffe7d 2024-08-23 Fix duration string in summary line - 341575a 2024-08-23 Merge pull request #558 from Takalele/master - 5e08f54 2024-08-22 Fix #507 - gcc-14 issues with rrd version 1.9.x - 312951f 2024-08-20 fixed updateTorDB.sh - e1eed87 2024-08-20 Show some love to alpine linux - 0b2796b 2024-08-20 Make gcc-14 happy - 813da06 2024-08-20 Implement maxmind and tor lookup filter in nfprofile. See #557 - 925dd28 2024-08-20 Cleanup nfpcapd Makefile and make Alpine Linux happy with GNU flag - 1cce258 2024-08-18 Merge pull request #556 from longregen/patch-1 - 84c71a6 2024-08-17 fix: missing -W option in nfpcapd argparsing - 1fc74f0 2024-08-16 Make sure, only flow nodes get dummped - see also #555 - 6ec9d81 2024-08-16 Test if node is fragement node in defragment code. Fix #555 - 56c7ddf 2024-08-09 Switch tcp flags to alpha string in json. ndjson output. #553 - 10d4666 2024-08-09 Fix #554 - code dump in new processing pipeline. - 493c542 2024-08-07 Update nfdump(1) man page for ndjson and cleanup - 75cca36 2024-08-07 Fix coredump #552. Replace json-log by ndjson. #553 Cleanup json output. Replace " in maxmind org and city names by '. Otherwise breaks json output. - a29354c 2024-08-06 Add poc for post filter. See #551 - aef51ae 2024-08-03 Align large vlan labels in ra output - c4a6a55 2024-08-01 Add file torlookup.1 man page - 0c815b2 2024-08-01 Add torlookup.1 man page as well as more information for torlookup in general - 7d437e5 2024-08-01 Fix tor code and update script - 2c461b5 2024-07-31 Add src,dst ip tor filter to match tor exit nodes and cleanup output buffer code - 2a78afa 2024-07-29 Merge branch 'master' of ssh://github.com/phaag/nfdump - 0c5e288 2024-07-29 Convert cvs output to itoa and local string buffer - 266b960 2024-07-29 Fix buffer check in output_csv_fast.c - cc0f593 2024-07-29 Add token %tsg, %teg for GMT start and end time in fmt and csv format. Update man page - 51fded0 2024-07-29 Cleanup some output code - 9d3cdd9 2024-07-29 Replace printf by local buffer and itoa. See #548 - fa2785b 2024-07-29 Add fixed but fast csv output mode csv-fast. See #548 - 87ee686 2024-07-29 Add local itoa - bd93c60 2024-07-29 Speedup json output - b6179a6 2024-07-22 Silence know record error message in filter thread - 9fb15d1 2024-07-22 Strip quotes from org name in Maxmind DB - 4804dbf 2024-07-22 Update mmhash.c - 2fbc960 2024-07-22 Update mmhash.c - 0577dee 2024-07-20 Fix ebuff size - ad70a1f 2024-07-20 Fix platform issues and compiler warnings - 961f0ab 2024-07-20 Update geolookup man page - 1811ea3 2024-07-20 Add AS lookup to geolookup and add new -s srcasn, dstasn and asn for AS organistation name. Needs maxmind DB to work. - 3a9908e 2024-07-20 Cleanup grammar. Fix error messages - a253e80 2024-07-20 Cleanup grammar file - 3f26afa 2024-07-19 Regex filter multithreading patch - 9965ceb 2024-07-19 Fix AS mmdb lookup for flow addregation - 62b8fb1 2024-07-11 Fix inherit compression bug. #525 - 64759bd 2024-07-11 Implement #543 and moved fragment flags - 53f9fa0 2024-07-07 Cleanup fixes, and fix gcc complains - bc3c2c9 2024-07-07 Merge pull request #545 from dceara/issue544-fix-typo-domain-id - 44c2fe5 2024-07-05 output_json: Fix observationDoaminID typo in json output. - 0659254 2024-07-05 Wire dedup into optional packet dump -p - 9562322 2024-06-29 Add metrohash to nflowcache - fb660f7 2024-06-29 Fix action script - 69f5d13 2024-06-29 Update c-cpp.yml - 745c60b 2024-06-29 Change hash to metrohash for de-duplication - 65ad2f9 2024-06-29 Add packet de-duplication for nfpcapd - 3f8fcdd 2024-06-28 Cleanup Makefiles - 483e780 2024-06-25 Wire new csv format into aggregation output. #529 - e56f7f1 2024-06-24 Fix compiler warnings on some Linux systems - ce52547 2024-06-24 Fix minor format issues - 2c661f6 2024-06-24 Fix minor format issues - a78db7f 2024-06-24 Fix minor format issues - 23c7f4a 2024-06-23 Switch to new csv format definition - 35bcbff 2024-06-19 Fix ja3/ja4 printing - e44d934 2024-06-10 Fix format printing in packet-linux - 8b1416f 2024-06-10 Add csv headers and config - 595c3bd 2024-06-09 Fix runtest - 2d68eca 2024-06-09 First batch of changes for flexible csv format output mode - still compatible - 0b20860 2024-06-09 First batch of changes for flexible csv format output mode - still compatible - e7df924 2024-06-03 update .gitignore - 3b06350 2024-06-03 Remove vcs_track in repo. Created automatically - 109860b 2024-06-02 Remove debug output - 2728a91 2024-06-02 Block formats other than auto fmt for aggregation - 7919b31 2024-06-02 Add json output for element stat. #528 - f4fecaa 2024-06-02 Add size in verify mode -v - b3869bc 2024-06-02 Implement nokia NAT logging. See #533 - f0a5f6f 2024-06-02 Add NOKIA enterprise IDs. Not yet wired. #533 - 1619a60 2024-06-01 Merge pull request #538 from piorek94/fix_srcip6_agg - 558b513 2024-06-01 Remove local files - I hate the desktop client! - bf36a07 2024-06-01 Remove local files - I hate the desktop client! - c96efb9 2024-06-01 Remove local files - I hate the desktop client! - 044b1ae 2024-06-01 Remove local files - I hate the desktop client! - 5c12e57 2024-06-01 Fix some memory leaks, although process ends. - 5118e35 2024-06-01 fix srcip6 aggregation - 2b5db3b 2024-06-01 Fix convert.c from merge - c96f913 2024-06-01 Add multithreading filter processing - 56907f7 2024-06-01 Merge remote-tracking branch 'origin/nfdump-devel' - 3810acf 2024-05-31 Null IPs if inet aggregation does not match flow inet version. #537 - 1d25d32 2024-05-31 Fix aggregation bug with v4/v6 flows #536 - 7b701c9 2024-05-25 Add DLT_LINUX_SLL2 link type to pcap reader - af5d8d8 2024-05-24 Fix man page for 'bgp next ip' #531 - daf20df 2024-05-24 Merge pull request #532 from piorek94/agg_zero_division_fix - 2ac8675 2024-05-24 Merge pull request #530 from piorek94/csv_newline_fix - 74c286f 2024-05-24 Fix #534 typo - 825ec11 2024-05-23 fix zero division issue in aggregation mode - 6b9d320 2024-05-23 remove etherType - 18e174a 2024-05-21 Fix coredump on dynamic exporter mode with no packets. #527 - da06eb0 2024-05-20 Fix help and error text for compression - 564f3a9 2024-05-11 Cleanup minor issues and add example for ft2nfdump - d105409 2024-05-06 Add another dataBlock test - 43fd78d 2024-05-06 Fix #521. Cleanup unclear naming of xlate records - e8e8c38 2024-05-04 Remove heapsort. No longer needed these days - 5cd6645 2024-05-04 Fix ja3 pre-processing in filter - e3f4436 2024-05-03 Improve help text - 2450ace 2024-05-03 Remove hash back reference in nflowcache - d222bc0 2024-05-03 Cleanup hash code for nfstat and nflowcache - 885f7df 2024-05-02 Rework nflowcache. Replace hash code to speedup hash and have cleaner code for later multi-threading -s -A stats. - 73a2d8a 2024-04-20 Merge branch 'nfdump-devel' of ssh://github.com/phaag/nfdump into nfdump-devel - cfca245 2024-04-20 Test new hash in nfstat - f402ba3 2024-04-20 Merge branch 'master' of github.com:phaag/nfdump - 8feced6 2024-04-20 Test new hash in nfstat - f9e9e6a 2024-04-16 Improve boundary checking - edd489a 2024-04-16 Improve boundary checking - 9bc3553 2024-04-14 Sync with devel - def1e91 2024-04-14 Sync changes with master - 686f749 2024-04-14 Remove some old 1.6 code and clean up compat reader - ea0286a 2024-04-14 Finally remove old master_record - 18eff82 2024-04-14 Fix queue_close with multiple producers - 774e29d 2024-04-14 Fix IP lookup in filter - cb88b55 2024-04-14 Fix IP lookup in filter - d6a5d32 2024-04-14 Merge branch 'nfdump-devel' of ssh://github.com/phaag/nfdump into nfdump-devel - c1ba7d2 2024-04-14 Mark some structs as const - 383fa76 2024-04-14 mark some structs as const - 95e70eb 2024-04-14 Clear filter flag after use - b1373fb 2024-04-13 Update AS statistics fix - 833a09d 2024-04-13 Fix element stat for AS statistics. #519 - 122b882 2024-04-12 Sync branch - 5abfd0d 2024-04-12 Work on filter code - 66cd4d3 2024-04-12 More work on threadding code - 97b619a 2024-04-12 refine const definitions in filter code - 63309d6 2024-04-12 Fix tunnel flow fmt printing - 37e70f3 2024-04-11 New convert block type 2 blocks code in pipelining - ff08a2d 2024-04-09 Enable convert1.6 in pipeline - 5071c2f 2024-04-07 Improve record processing - a16f86f 2024-04-07 Fix debugging messages - 020a772 2024-04-07 Test multithreadding nfdump - 1400011 2024-04-06 Fix nfstat ptr offset - 0c9293d 2024-04-06 Cleanup nfdump main loop - e7ef540 2024-04-05 Remove debugging code in tor.c - a541557 2024-04-05 Fix typos in torlookup - 6ccca84 2024-04-05 Make sure to use new compiled geolookup binary to update mmdm - 5cfefa9 2024-04-05 Make sure to use new compiled torlookup binary - 5586eea 2024-04-05 Fix tor.c - 151aeb8 2024-04-05 Fix maxmind.c - 3adace8 2024-04-03 Fix json output - f462e2b 2024-04-02 Address #518 and silence output for normal conditions - b064481 2024-04-02 More readable output - 903f0c6 2024-04-02 Fix runtests - b42bdec 2024-04-02 Fix raw output for ip version - d36ecc5 2024-04-02 Update space to 64bit - 21c61f9 2024-04-02 Reserve space for vxLan element - 8941a79 2024-04-02 Fix nflowcache aggregation (see #515) and cleanup some code - 804d92e 2024-04-01 Cleanup code and fix ChangeIdent - d876444 2024-04-01 Cleanup #517 and fix runtest - fc2fae5 2024-04-01 Merge pull request #517 from jav4/ethertype - 50126db 2024-04-01 Update output_raw.c - f2c7375 2024-04-01 Update nffile_compat.c - 163bf0f 2024-04-01 Update output_json.c - 4a58dd5 2024-04-01 Update output_csv.c - 671e205 2024-04-01 Update nfxV3.h - a0d32aa 2024-04-01 Update output_raw.c - d9683df 2024-04-01 Update output_json.c - 2e13f89 2024-04-01 Update output_json.c - 5a5f00b 2024-04-01 Update output_fmt.c - 0615d34 2024-04-01 Update output_csv.c - 757be79 2024-04-01 Update nfstat.c - a532205 2024-04-01 Update nfx.h - 0c239df 2024-04-01 Update nflowcache.c - d145f87 2024-04-01 Update nfx.c - c0dbeb0 2024-04-01 Update nfdump_1_6_x.h - 0589904 2024-04-01 Update netflow_v9.c - e12da4b 2024-04-01 Update grammar.y - 4d69b07 2024-04-01 Merge branch 'master' into ethertype - 77b04b1 2024-04-01 Merge dot1q and physical extension into a single layer2 extension - 65fe66e 2024-04-01 Fix potential deadlock, if file queue empty - 9289f6a 2024-03-31 Add working threads to nfprofile - 819d8bc 2024-03-31 Remove exporter stuff from profiler. Not needed - d4420f7 2024-03-31 Rename pthread_barrier to avoid collision with Linux version - 9c9b71a 2024-03-31 Cleanup nfanon - 7169029 2024-03-30 Add user defined workers for nfanon - 3202fab 2024-03-30 Move barrier code into own files - 928653c 2024-03-30 Add threadding support to nfanon - 06475c9 2024-03-30 Fix nfreader sample code - ea6322e 2024-03-30 Cleanup nfanon - e7cac3e 2024-03-30 Fix AS range check - 2553d3e 2024-03-30 Sync nfcapd, sfcapd code - dabf79c 2024-03-30 Cleanup collector code and sync sfcapd - 5cffb3a 2024-03-29 Cleanup collector loop - 2d806f6 2024-03-29 Add more detaied error message - 903a8aa 2024-03-29 Handle potential file rotate error - 39a6946 2024-03-29 Remove unneeded check - c6ea78a 2024-03-29 Add IP version in json output - 98b1928 2024-03-29 Implement #515 features - 1b6139e 2024-03-29 Add dot1q in ipfix. Fix for #515 - c4a2575 2024-03-29 Fix #516 - 32770d5 2024-03-29 Dissolve dataBlock in nffile_t for writing in order to prepare for multi threading processing flows - ef928d6 2024-03-29 Add Netflow v9 ethertype field support - fb664fc 2024-03-22 Dissolve dataBlock for reading in nffile_t in order to prepare for mutli-threading processing. - 9198d94 2024-03-17 New FilterSetParam function - d253340 2024-03-17 Improve performance to read and convert nfdump-1.6.x records. See #512 - 3b388b8 2024-03-16 Cleanup configure.ac - 70732b2 2024-03-16 Add conditional build and licensing terms for ja4+ - 282187a 2024-03-16 Update nfdump.1 man page with ssl and ja4 filters - 6f4f6ad 2024-03-16 Add SSL/TLS sni filter - 69959f0 2024-03-16 Add SSL/TLS filter - 45ade57 2024-03-16 Add ja4 tests to nftest - 2e6d172 2024-03-16 Fix nftest - 8c18cff 2024-03-16 Add ja4s to filter syntax - 23fd4a2 2024-03-15 separate ja4, ja4s in nfstat - dedb73a 2024-03-15 Streamline ja3, ja4, ssl code - d5220a9 2024-03-14 Add ssl preproc to filter - 9b7a54a 2024-03-14 Fix getopt parsing - #513 - 77ae680 2024-03-14 Add ja4 to filter. First try - 8fe6a2b 2024-03-11 Work on ja4 in nfstat - 595952a 2024-03-10 Work on ja4 - ab0810d 2024-03-10 Wire ja4/ja4s in output json and do more work on SSL payload - 070cd71 2024-03-10 Wire ja4/ja4s in fmt output format - f09d7a5 2024-03-09 Wire ja4/ja4s in raw output format - b1bf5a1 2024-03-09 Move tor code to libnfdump - c9969ec 2024-03-09 Cleanup Makefiles - 8c97e7e 2024-03-09 Integrate maxmind code into libnfdump - b733d6c 2024-03-09 Fix typo - 84b425b 2024-03-09 Fix library order errors - 2043de7 2024-03-09 Split libnfdump into libnffile and libnfdump - 784e62d 2024-03-09 Merge remote-tracking branch 'origin/nfdump-ja4' - 8a0c883 2024-03-09 Fix typo - d5add6b 2024-03-09 Fix compile errors from pull #511 - 9241fee 2024-03-09 Merge pull request #511 from blkmajik/json-log - f0f9f4b 2024-03-09 Merge branch 'master' into json-log - c5c5e47 2024-03-09 Code cleanup - 0b59bea 2024-03-08 Update nfdump.conf.dist - 3ff30f2 2024-03-08 Fix OS library order - d77c056 2024-03-08 Fix configure.ac - 93ce7fb 2024-03-08 Add torlookup for IPs - b65a3ff 2024-03-08 Maxmind code refactoring - c4f8169 2024-03-08 Streamline ja3/ja4 - fb63274 2024-03-05 Move sampled to end to handle proper syntax on closing. No final , on last field - 23ec1e5 2024-03-05 Use record separator instead of field separator between records - 031b462 2024-03-05 Swap fs/rs for json-log format - 3dfc829 2024-03-05 Make fprintf happy - 432925e 2024-03-05 Const char instead - da3cf0d 2024-03-05 Integrate json-log format into output_json - 9c1021d 2024-03-03 Merge remote-tracking branch 'origin/nfdump-ja4' - cd9b43e 2024-03-03 Fix Makefiles - 626be0b 2024-03-03 Merge remote-tracking branch 'origin/nfdump-ja4' - 17ead4c 2024-03-03 Updeate ChangeLog - c9fe29c 2024-03-03 Prepare nfstat for var length fields such as ja4 - 2a55c3b 2024-03-03 Commit - 109c1c9 2024-03-03 Fix ssl decoder - f991322 2024-03-03 Remove debugging flag - 1e88803 2024-03-01 Implement ja4s - 4a60672 2024-03-01 Update Readme - c129b78 2024-03-01 Add ja4 Readme for license issue and add --enable-ja4, default no for building all ja4 modules - 5c72cc8 2024-03-01 Add ja3 filter in nfdump-ja4 - 5cdc989 2024-03-01 Cleanup include - 539902c 2024-03-01 Insert ja3 filter code - 8ed9f34 2024-03-01 Add ja4_c - 2ded6b5 2024-02-29 Implement ja_a and ja_b of ja - ae92ef6 2024-02-29 Add ja4 files to start implementation - 16148ed 2024-02-29 Add sha256 - a4f6a53 2024-02-26 Refrag ssl extension code - 6ea1b58 2024-02-25 Add ALPN extension decoding to ssl.c - 4115a8b 2024-02-25 Fix missing malloc() type casting - 07136b3 2024-02-25 Use new ssl module for ja3 - 17d127e 2024-02-24 Debug ssl code - Client Hello - 79e9b8a 2024-02-24 Defrag ssl and ja3 - Add plain ssl code - 00e0e45 2024-02-24 Fix nfreader code - eb5bef5 2024-02-22 Cleanup code to handle legacy sampler record - a988a40 2024-02-18 Rework maxmind code - 9a0dddf 2024-02-17 Fix library dependencies on some *nix - 2c987ee 2024-02-17 The previous commit 466c27b is a merge with a working branch to remove the clumsy master_record_t in nfdump. This removes lot of legacy code and updates the code base. Furthermore, the filter engin has been replaced by a more flexible and faster one. The speed gain depends on the filter and the number of filter elements. The overall speed gain with this merge is 10% in average. Further improvements are planned with more worker threats. Please note that the filter syntax had some small changes such as 'icmp-type' is now 'icmp type' etc. - 466c27b 2024-02-17 Merge remote-tracking branch 'origin/nfdump-filter-ng' - bc08a0a 2024-02-17 Sync lz4 code - 4f409e9 2024-02-17 (tag: v1.7.4) Release v1.7.4 - 4a7de41 2024-02-17 Fix compiler warnings for lz4 - 4e98a35 2024-02-17 Update lz4 code - 519a052 2024-02-16 Fix compile issues - d301428 2024-02-16 Cleanup runtest.sh - e5976bd 2024-02-13 Move payload decode to own directory - df94907 2024-02-12 Update filter code, to be multi threading ready - 75d07cb 2024-02-11 Remove last debris from pipe output mode. Pipe output mode is gone now. - 21606f7 2024-02-11 Add DEVEL code - 72dcff4 2024-02-11 work on nflowcache - aa78fee 2024-02-11 Fix stat issues - dcf8499 2024-02-11 Fix nflowcache - 4c3a7e5 2024-02-10 Fix type bug - 89a43a4 2024-02-10 Cleanup and replace version script. - 7997ac4 2024-02-10 Replace Changelog file with git log history. Modify gen_version.sh. See #482 - 0001529 2024-02-10 Honor printPlain Flag for String_evt. See #498 - cf43542 2024-02-09 Cleanup strings - 286eac3 2024-02-09 Clean nfdump and geolookups - 5355fe8 2024-02-07 Wire maxmind geolookup in nfstat - 5b255f5 2024-02-07 Wire Maxmind geo filters in new filter engine - 249ca65 2024-02-06 Work on aggregation und filter issues - 88dda88 2024-02-04 Wrap up loose ends - 9db4215 2024-02-03 Fix buggy sflow code. Fixes #506 - f8381be 2024-02-03 Update sflow - 98437f8 2024-02-03 dissolve code for output - a20249c 2024-02-03 Dissolve code for output - 56919df 2024-02-03 Change link order as some Linux linker do not correctly find static symbols. Fix #505 - e6b9fce 2024-02-03 Fix init - e88056f 2024-02-02 Cleanup and fix nflowcache and nfstat - 05c7fbd 2024-01-29 Fix stat issues in nflowcahe and nfstat - 35d4292 2024-01-29 Fix format issues in output_fmt - 1b6cdd5 2024-01-29 Fix some output_fmt format issues - 627565a 2024-01-29 Remove local m4 files - f0d2750 2024-01-29 Fix err var in nfprofile - dc1b1b2 2024-01-29 Fix #503 - Append records in nfprofile - 1dcb7ae 2024-01-28 Fix fmt time 1970 - c5ddbf0 2024-01-28 Fix fmt cores - 427b08e 2024-01-28 Removed master record from nfgen. Update make check - bbaef64 2024-01-26 master record removed from 1.7.x code - 373e8ad 2024-01-26 Modified nfgen and first cleanup - fb360cd 2024-01-26 removed master record from nfgen - 452c6ce 2024-01-25 Replace nftest. master_record removed - 40267bb 2024-01-25 Cleanup old master_record - b94b43c 2024-01-25 Removed master_record from nfstat - bb9765e 2024-01-24 Start cleanup nfstat - df7605b 2024-01-24 Work on nfstat - e325de6 2024-01-22 Implement #501. Add -X option for sfcapd - c558152 2024-01-21 Start working on nfstat.c - c51748a 2024-01-21 Complete nflowcache.c - 83209d3 2024-01-21 Start to optimise nflowcache - 741addd 2024-01-20 Removed master record from nflowcache - 373ca78 2024-01-20 Removed master record from nflowcache - 7a795a5 2024-01-20 Work on nflowcache - 0208383 2024-01-19 Work on nflowcache - a1ac11b 2024-01-15 Add endian for ICMP for correct decoding - 2b11d66 2024-01-15 Work on nflowcache - ddf605e 2024-01-14 Fix for first test - 51148c6 2024-01-14 Working on nflowcache - 4b961bd 2024-01-14 Fix #498 - event string in output_fmt - a81832c 2024-01-14 Remove master_record from output_fmt - 19a0ec3 2024-01-13 Remove master record from output_json - 174139e 2024-01-13 Remove legacy pipe output format - f042b4c 2024-01-13 Remove master record from output_raw - 85c00ac 2024-01-13 Removed master record from output_csv - ebfc751 2024-01-13 Working on output_csv - fe96d8e 2024-01-11 master record removed from nfreplay - 7cb61a5 2024-01-09 Fixes - dcfd52e 2024-01-08 Add missing files - 400ac03 2024-01-07 Remove master_record from send_v5 - acab1dd 2024-01-07 Work on nfreplay - 90cfd93 2024-01-07 Wire new filter in nftrack, nfprofile - easiest - 9637751 2024-01-07 Move filter files in own lib/filter directory - 1075d66 2024-01-07 Move filter files in own lib/filter directory - 4736178 2024-01-07 Update Readme - 389acc5 2024-01-06 Remove NSEL option from nfanon. NSEL included by default - d49a050 2024-01-06 Fix error message - b78ffba 2024-01-06 Refrag code into userio files. Prepare for next level code update - 05430dd 2024-01-06 Move code. Cleanup - 272c235 2024-01-03 Fix Offset/Size values in nfxV3.h - 5c19ff2 2023-12-31 Fix runtest with new field IPfrag flags - 3981646 2023-12-27 Add IP fragmentflags tag #197 - 71d0afc 2023-12-27 Add cgNAT decoding to IPFIX decoder - b6841f6 2023-12-27 Fix #496 - Add RFC8158 NAT event flags - dec1d92 2023-12-16 Update Offset/Size for header fields - 305f1be 2023-12-15 Merge pull request #489 from g0tar/keep_flowStartMilliseconds - aaaee7e 2023-12-13 Don't clear flowStartMilliseconds when flowEndMilliseconds==0 - 93797b2 2023-12-05 Fixed #486. Pull request #487 - 2fd5df7 2023-12-03 Cleanup grammar.y with useless rule - 295f514 2023-12-03 Implement request #485 in sfcapd to store nat IP/port for sflow records if available - 042e68b 2023-12-02 Cleanup filter. String arguments in filter elements may be single or double quoted. Strings without quotes are accepted as strings as long as the string is not a reserved filter key word.# - 71f888f 2023-11-26 Update nfdump.spec. Thanks rexy74! - 40eb5c9 2023-11-26 Fix grammar - eaf96ce 2023-11-26 More fixes for #484 - df50860 2023-11-26 Fix #484 - workaround not really a fix - 7f75c90 2023-11-18 Fix #481 - expire.c - 469dd81 2023-11-18 Merge branch 'master' of github.com:phaag/nfdump sync local - cc1073a 2023-11-18 Cleanup flist code - cbc617f 2023-11-01 Fix #480 Build error on CentOS - fded574 2023-10-19 Merge pull request #477 from chadf/configure-disable-xxxx - 622670b 2023-10-16 Fixed remaining ./configure --disable-xxxx issues. Corrected use of $enabled_xxxx vs $build_xxxx where appropriete. - ce7ff2c 2023-10-15 Fix ./configure --disable-xxxx handling. - e2b9f43 2023-10-15 Add multiple dir wildcard '@' for multiple dir argument -M - 6b69002 2023-10-14 Fix all HAVE_ZSTD macros - 3ac05de 2023-10-14 Repair version string - ec8b602 2023-10-14 Check time window, if given, of a multi file selection - 94743ee 2023-10-14 Fix compiler warning in kbtree.h - 286d70d 2023-10-14 Update Readme - 3e4a992 2023-10-14 Improve build process for external compression libraries. Make bzip library optional - 9a50550 2023-10-08 Fix #474. Reject unspecified IP addresses and invalid prefix length in filter - 46d2db0 2023-09-25 Fix #469. Update usage and error messages and man pages - 02ee700 2023-09-25 Fix #467. Rework number of workers setting. Set max to 64 - cfaf6ab 2023-09-02 (tag: v1.7.3) Release v1.7.3 - 5e2aef9 2023-09-02 Improve error handling in privsep.c - 584453e 2023-08-20 Fix #459. change vars to uint64_t - 696f563 2023-08-12 Merge branch 'master' of github.com:phaag/nfdump - ec1f121 2023-08-12 Allow direction status > 2, althogh not defined - c2c097f 2023-07-27 Fix #452 - to add GeoInfo - 1163722 2023-06-23 Merge branch 'master' of github.com:phaag/nfdump - c51ce1f 2023-06-23 Fix #448 man page type - de9811c 2023-06-18 Cleanup unused extensions. Implemented as arrays. Collect Juniper inline-monitorig packet data. Data is not yet decoded. - 3a810ad 2023-06-18 Add types for Juniper inline-monitoring. No decoding yet - 130fafe 2023-06-17 Update test sequence for compression levels - 14be8fb 2023-06-17 Cleanup nffile struct - f9515d2 2023-06-17 Fix potential compressed appendix corruption - 4b7c42a 2023-06-17 Update Readme for building instructions on older Ubuntu 18.04 LTS - 837419b 2023-06-17 Fix broken installation of nfdump.conf.dist - df4fc16 2023-06-16 Cleanup all compress files into sub dir - 6c47de5 2023-06-16 Move conf subdir to nfdump library. Fix linker errors - 18f7bc5 2023-06-16 Add maxworkers to nfdump.conf - 336cb05 2023-06-16 Make count check more dynamic in v5 - 1a71629 2023-06-06 Fix nfsen #15 on RH - 65ea877 2023-05-29 Bark if rename fails - 8802fa0 2023-05-29 Add zstd to QueryFile() - 98385f2 2023-05-29 Cleanup and fix minor bugs - 91aeeb8 2023-05-29 Enable multiple writer threads, depending on number of Cores online - a9a4322 2023-05-28 Update Readme - 92f8d01 2023-05-28 Update Readme - 2efd259 2023-05-27 Add zstd compression - cb254b1 2023-05-27 Enable lz4 compression levels 3..12 - 3b7b92f 2023-05-27 Update lz4 code - 8123283 2023-05-27 Add code for compression level handling - c6fedc0 2023-05-26 Update compression code - c8c98d0 2023-05-26 Add compresson level parsing - 7413188 2023-05-21 Fix parsing compression option to work for all possible options - 12a90b4 2023-05-21 Adapt -J option in nfdump to new compression spec, being still compatible with old one. - a1f4f19 2023-05-21 Print usage() if no arguments are given - d8620c0 2023-05-21 Update man pages - e928c42 2023-05-21 Unify compression arguments. Use now -z= for compression. Accept still old -j and -y for now - e8ee2fc 2023-05-19 Remove static var for lzo wrkmem - f2ddf67 2023-05-19 Cleanup nfprofile and fix issue #398 - 69e4d98 2023-05-18 Add syslog by default for nfprofile - 7041498 2023-05-18 Add file verification for nfprofile - efd28ad 2023-05-18 Cleanup nfprofile code - b54e266 2023-05-08 Make geolookup more robust reading buggy files - d90d561 2023-05-08 Add flush() for nfprofile - 399014d 2023-05-07 Move from c11 to c17 compile standard - 7b791a1 2023-05-07 Cleanup profile code - 27d65be 2023-05-06 Prevent loading geoDB if not needed - f3a174f 2023-05-06 change var name - 2c5678f 2023-05-06 Add BlockReports - 18a34c1 2023-05-05 Update nfprofile - 43f3f14 2023-05-04 Fix last commit - 881707e 2023-05-04 Remove blockqueue. Reduce memory footprint - e10c2ef 2023-04-30 Code cleanup - af0f43e 2023-04-30 Code cleanup - 2944ac9 2023-04-30 Make consistent protocol ID for nfd raw - 0742648 2023-04-30 Code cleanup and minor bug fix - 328daaf 2023-04-30 Rework QueryFile code and cleanup - 058cecb 2023-04-29 Merge and cleanup nfpcapd and nfreplay code for sending raw records - 2864358 2023-04-29 Add nfdump protocol for nfreplay - 62ca665 2023-04-23 (tag: v1.7.2) Release v1.7.2 - 2eaac76 2023-04-23 Update ChangeLog - 0080e79 2023-04-23 Update nfcapd/sfcapd man pages for erspan data link - 39ec029 2023-04-15 Fix AddGeoInfo - 8388cb1 2023-04-09 Cleanup linkoffset handling in nfpcapd - 38decb4 2023-04-09 Implement erspan protocol in nfpcapd packet processing - a2cb5e3 2023-04-08 Sync ipfix and netflow_v9 for option field processing - 075dd3a 2023-04-07 Handle buggy option data(!) - c87c892 2023-04-07 minor fixes - d8fe70a 2023-04-07 Fix linux compile warnings - bc3201c 2023-04-07 Fix FreeBSD include issue - 0546452 2023-04-07 Fix v9 option template processing - b7aee0b 2023-04-07 Fix option record processing for multiple records - a197e57 2023-04-07 Fix ipfix nbar processing - 64fc1e1 2023-04-06 Wire bufflen for pcap reader - 2dadbaa 2023-04-06 Add FUNDING - 42dea3e 2023-04-06 Fix compiler warnings - 520c3ee 2023-04-06 Update pcap reader with erspan device - 721f6f3 2023-04-02 Fix fmt argument parsing - 34171af 2023-04-02 Add IPv4 in IPv6 cases in geolookup - 5bb991d 2023-04-01 Cleanup buffsize memory - 771c0c9 2023-03-26 Fix IP version check in geolookup - 26a0f61 2023-03-26 Disable signals in threads. Different OS handle signals differently - 7099d56 2023-03-26 Recongnize old sampler with missing algorithm tag #35 - 5d58d4c 2023-03-26 Fix memory leaks - 3781b43 2023-03-19 Cleanup - c3877c4 2023-03-12 Update pcap_reader and add CISCO application performance monitor tags - 28683f6 2023-03-11 Add ERSPAN decoding to pcap_reader - f41364c 2023-03-11 Fix FreeBSD include issue in pcap reader - 93f1af6 2023-03-11 Remove more autogen m4 files from repo - 488e213 2023-03-11 Remove autogen m4/libtool from repo - 20f2b51 2023-03-11 Check uid root for src spoofing option - 02dc34b 2023-03-06 Fix argument checking in nftrack. #432 - 49661b5 2023-03-06 Fix valgrind error for uninitalised memory. #431 - 99dc96e 2023-03-05 Update lz4 code - 919dd4e 2023-03-05 Update number of enabled tags in v9 and ipfix - ec8649f 2023-03-05 Fix Init message in v9 and ipfix - 175e651 2023-03-05 Fix broken init functions - 035c003 2023-03-05 Add collector option -X to limit stored data. - bffe640 2023-03-05 Add help text for format tokens - 3c03f24 2023-03-05 Implement %sasn, %dasn organisation name printing tags. See #430 - b47eec0 2023-03-05 Rename macro - 1dbfb60 2023-03-05 Check record size in geo DB - a44f6f8 2023-03-04 Implement #428. Needs rebuild of the geoDB. - ebbdf30 2023-03-04 Fix #429. Correct header line for %dloc - 3e5aa64 2023-02-27 Fix launcher argument bug - 4498c9a 2023-02-26 Wire sampling extension for individual sampling - 9f96ec1 2023-02-26 Wire sampling extension for individual sampling. - 096aaef 2023-02-25 Fix #426 - compile bug with nsel option - 984530c 2023-02-25 Fix pcap_reader - 78ce872 2023-02-25 Merge branch 'master' of github.com:phaag/nfdump - 469d388 2023-02-25 Update ICMP type/code handling. Issue #423 - f658456 2023-02-24 Merge pull request #424 from thezoggy/patch-1 - 0f050fb 2023-02-21 Update .gitignore - 428bec0 2023-02-21 Merge pull request #422 from mkorkalo/master - d91a3f1 2023-02-21 Correct spelling correction - f7eb350 2023-02-21 Merge pull request #421 from thezoggy/codespell - 97f0e59 2023-02-21 fix String_LastSeenRaw ms formatting - bf52a99 2023-02-20 codespell - cleanup - 6f16426 2023-02-18 Pimp pcap_reader - 07c9150 2023-02-18 Fix #415. ICMP decoding in netflow v9 - af0fcb3 2023-02-18 Fix exporter printing - ca2c430 2023-02-18 Update Readme - c2b18d7 2023-02-17 Update for #409 for a mixed environment - 5a760c3 2023-02-15 Fix #414. -O bps works correct now - 746c8dd 2023-02-14 Update geo filter test - 64076c8 2023-02-14 Update geofilter settings - d46474b 2023-02-11 Merge pull request #411 from borjam/nfreplay-sourceaddr - 174ec98 2023-02-11 Fix minor issues. - 4d0001b 2023-02-11 Refine sampling to fix #410 - 75f1c1f 2023-02-10 Fix argument processing for -n - dc57aa5 2023-02-10 Added source address support for nfreplay - 33f9a6a 2023-02-07 Update README - e36ab60 2023-02-07 Fix c-cpp.yml - 28f3864 2023-02-07 Fix c-cpp.yml - b93a8d1 2023-02-07 Create c-cpp.yml - 4badf6c 2023-02-05 Fix dst tos bug in output_raw - 56cd416 2023-02-05 Code cleanup. Update nfxV3.h for Golang import - c82f195 2023-02-04 Add icmp type/code elements 176, 177, 178, 179 - 3257543 2023-02-04 Add icmp type/code elements 176, 177, 178, 179 - 8050588 2023-02-04 Fix #402 - Add AS info. - 4a4dac0 2023-02-04 Fix 408. Interchanged time stamps - 68d5a9f 2023-02-04 Add geo info in JSON output when using GeoDB. #402 - 55ebc72 2023-02-04 Fix more FreeBSD include issues - 01b244e 2023-02-04 Fix configure.ac bug - fe1d00a 2023-02-04 Fix FreeBSD include bug. #407 - e0743b3 2023-01-29 Move fwd_status in correct block in output_raw - 23c6daa 2023-01-29 Fix gen_date.sh - 5ed2f8c 2023-01-28 Fix Makefiles - ca33e20 2023-01-28 Add unique version string - b4d0962 2023-01-23 Fix #400 - compile error - 4f49c8e 2023-01-22 Copy event time to flow start/stop - 2224193 2023-01-21 Fix Event display time, if not flagged as event - fcf422b 2023-01-21 Add creator tag in nffile header - ea596c7 2023-01-21 Add creator tag in nffile header - f559c36 2023-01-21 Fix filter concat bug. Add exporter filter - 4fd1909 2023-01-17 Update output_fmt.c - b6839c5 2023-01-14 Fix #396. Code cleanup - 1215e1a 2023-01-08 Fix CentOS compile issue - e74ce26 2023-01-07 Add pflog fmt tokens in man page - fd3e48d 2023-01-07 Fix grammer.y - 76c85d0 2023-01-07 Implement OpenBSD pflog filters elements and -o fmt print tokens - 22548d2 2023-01-04 Fix configure.ac - ce2d8b3 2023-01-04 Add pcap_dump_open_append() code, if missed by some libpcaps - fe45a36 2023-01-03 Disable debugging code - 193834c 2023-01-03 Implement source IP address spoofing for the packet repeater. See #248 - abfab42 2023-01-02 Replace old packet repeater code with more modern privsep code - 5da05ad 2023-01-01 Remove old code - 7a7e15c 2022-12-31 Replace old launcher startup code with more modern privsep code - 3b0d80e 2022-12-29 Fix compile issue #395 on Alpine Linux - fd7ab9c 2022-12-24 (tag: v1.7.1) Release v1.7.1 - 3a37f36 2022-12-23 Fix #394. Add Changelog - 35f9735 2022-12-22 Add NSEL/NEL event flag - 0c45f2d 2022-12-22 Fix compile error - e2e1191 2022-12-22 Update Changelog - 5ba2077 2022-12-22 Merge remote-tracking branch 'origin' - 164aa3c 2022-12-22 Fix #393 consistent logging - 0360d53 2022-12-20 Remove extra : in getopt of nfcapd. - 17a81d7 2022-12-18 Code cleanup - 3550a3f 2022-12-18 Add feature #391. Add country code addgregation - 27102b7 2022-12-18 Fix #392. Fix format options with IPv6 - 9066972 2022-12-18 Fix #390. Aggregation not working for GeoDB's enriched AS data - ad0215a 2022-12-17 Add OpenBSD pflog decoding in nfpcapd and nfdump - c210f2f 2022-12-17 Add pfinfo extension - 29477da 2022-12-17 Fix Ident change - 7908190 2022-12-17 Sync nfcapd, sfcapd code. Cleanup pcaproc - eb6c5be 2022-12-17 Fix #389 receiving IPv4 on IPv6 socket in sfcapd - 70b17cb 2022-12-17 Code cleanup in nfpcapd - cb73d61 2022-12-09 Code cleanup - c475a7d 2022-12-09 Fix #385 bug - i386 32bit alignment - 7922f23 2022-12-09 Fix #384 bug when compile with --enable-nsel - 26cfd10 2022-12-04 Update nfprofile help text - e06830f 2022-12-04 Fix nfprofile record processing loop - 69143ae 2022-12-04 Fix -M for nfprofile - f37abff 2022-12-04 Add missing pflog.h - c878808 2022-12-03 Add OpenBSD pf linktype 117 for pflog - 626d5f2 2022-12-03 Fix #382 build error on certain platforms - 1f03a0b 2022-12-02 Code cleanup - 63e8496 2022-12-02 Code cleanup - 4bc869b 2022-12-02 Fix compile warnings - eeace4d 2022-12-02 Fix compile error - f4ff9ad 2022-12-02 Implement NFLOG link layer - f8b3be8 2022-12-02 Fix #381. pcap overwrite fixed - 5a9f88a 2022-12-02 Fix #380. utf8 string validation - 61c8aa7 2022-11-29 Add missing file id.h - f054d64 2022-11-27 Fix same table structs for ipfix anf v9 - aebca21 2022-11-27 Fix #377. Rework sampling code in general. Switch to packet interval/space notation. Map older sampling to new notation. Fix #375 relative timestamps with sysUptime id 160 - e57f215 2022-11-15 Merge pull request #378 from heiko3/master - 9fbbbf6 2022-11-15 Merge pull request #376 from vrbaji1/patch-1 - c45be96 2022-11-14 Remove debug printf - 4748ac1 2022-11-13 #367 - Add if and vrf name tags 83, 236. Rework vrf ingress/egress outside of NEL records - 4dbdc8d 2022-11-08 stat() correct path for option -M - d6c2bee 2022-11-04 Fix aggregation on xdstip - 79b6700 2022-10-23 Update nbar ipfix code - 163b671 2022-10-23 Reworked nbar code to be more generic for other array records - 9d66b9a 2022-10-22 Fix #369. Legacy -M for NfSen works again - 9141f1c 2022-10-22 Fix #370. Help shows correct option -g - c347da1 2022-10-22 Cleanup unsed var in maxmind - 5cc35c6 2022-10-16 Update nbar field length #361 - f3fc2c0 2022-10-07 Improve nbar handling - d54bce1 2022-10-03 Merge pull request #357 to master - 2d50c67 2022-10-01 Code refactoring and cleanup - 4129950 2022-09-30 Fix typo bug in docker files - ecb8d6b 2022-09-30 (tag: v1.7.0.1) Update to nudump-1.7.0.1 - build issues - 1fb8604 2022-09-30 Add docker file for alpine Linux. - 4707df9 2022-09-30 Update docker file for ubuntu - da6f37f 2022-09-30 Fix build issues on various Linuxes - 486a783 2022-09-29 Update Readme - 1bcd1a9 2022-09-29 Fix snprintf length argument - 42f8d7e 2022-09-29 Handle fscanf return value in pidfile.c - d07c313 2022-09-29 Add missing variable initialization - bef1a16 2022-09-28 (tag: v.1.7.0) Update Readme for CentOS 7.x - 1009e69 2022-09-28 Fix compile issues - c794e93 2022-09-28 Add missing daemon files - 563e8b2 2022-09-28 Release 1.7.0 - cc8680e 2022-09-28 Merge branch 'master' into unicorn Merge unicorn brantch to master - 99242d6 2022-09-27 Update README - 7ea8626 2022-09-27 Update nfdump man page - 02ec100 2022-09-25 Update nfreplay man page - 8099894 2022-09-25 Update sfcapd man page - 5d44eec 2022-09-25 Clean up collector code - 8bf359b 2022-09-24 Cleanup nfcapd code and man page - 8dde91f 2022-09-23 Replace collector -l option with more speaking -w for output flow directory - 6313ed8 2022-09-23 Update nfexpire man page - 7154487 2022-09-23 Update nfanon man page - 1df7c96 2022-09-23 Cleanup nfanon code and man page - d12738b 2022-09-22 Update ft2nfdump man page - aecb79a 2022-09-22 Move reading NFCONF into nfconf.c - 12c5261 2022-09-22 Update geolookup man page - 94c828a 2022-09-20 Add update maxmind DB script - 803b100 2022-09-20 Add missing testfile - 428537c 2022-09-20 Let geolookup use the config geodb.path - ba33828 2022-09-19 Fix propper config file installation and set as default - 21c343f 2022-09-19 Fix man page installation - 0af0c2a 2022-09-19 Fix .gitignore and Makefile.am - 7ad99af 2022-09-19 Fix ckeck script - 1e99265 2022-09-19 Refactor nfcapd code in subdir - 2816bcc 2022-09-19 Cleanup files and update gitignore - f56fb1f 2022-09-19 Cleanup old files - bc3dd8b 2022-09-19 Cleanup Makfiles - d994abe 2022-09-19 Cleanup code - 1ba875b 2022-09-19 Collector code cleanup - ebf9d21 2022-09-19 Make gcc happy - cecbb08 2022-09-19 Add missing Makefile.am - e477e7c 2022-09-19 Cleanup collector code - 297578c 2022-09-19 Fix includes - 9d9f3a4 2022-09-19 Add include dir - 32b2824 2022-09-19 Code cleanup - 713d4da 2022-09-19 Cleanup code for nfreplay - 4d9522a 2022-09-18 Fix print_epilog - a6aa5b5 2022-09-18 Add maxmind subdir - 50c4387 2022-09-18 Move nfanon and nfreader in own sub dir - 17973b9 2022-09-18 Cleanup - d8280fc 2022-09-18 New netflow subdir for protocols - 4caadd0 2022-09-18 Add config file - 33aa5cf 2022-09-17 Cleanup files. Rearrange output processing - 0bd233c 2022-09-04 Add missing DLT_LINUX_SLL for BSD systems - 2f7781b 2022-09-04 Create FUNDING.yml - 87a4c9b 2022-09-01 Fix geolookup IPv6. Concat cmdline args without quotes - 0793925 2022-08-31 Improve ja3 handling/printing. Add sni name in output format - a734670 2022-08-28 Add missing argument getopt arg checks - 977b2ad 2022-08-28 Add geo stat. Minor changes/improvements ja3 and dns. Dump full payload in output raw - 95c6812 2022-08-27 Update man page for payload regex filter - 1ccf438 2022-08-27 Replace payload regex code - 1cd20bd 2022-08-24 Add geo location to stat output - 4746071 2022-08-24 Fix memory leak when for payload records - 80879ef 2022-08-22 Replace payload content matching - ae10427 2022-08-22 Replace getval inline functions - a968f63 2022-08-21 Recognise 6 byte input length in ipfix - 298e6e0 2022-08-21 Improve some link layer protocol discovery in nfpcapd - 9a252d2 2022-08-20 Cleanup sequencer - aaac6c8 2022-08-20 Fix compiler issues and time formats in nfpcapd - 3613641 2022-08-20 Cleanup inline code - 57d3257 2022-08-17 Fix filter bug. #356 - 364c0ab 2022-08-14 Cleanup payload printing - f4ce829 2022-08-13 Some cleanup - 7f7e3cb 2022-08-13 Add payload regex filter - b1811b3 2022-08-11 Fix compiler warnings - ae76cd3 2022-08-06 Add example gnuplot command file to extra directory - d3f504d 2022-08-06 Add gnuplot summary output - 1aa8337 2022-08-06 Add record dynamic record count - 071ee4b 2022-08-06 Change display format for duration in more human readable format - 57d969b 2022-07-30 Correctly decode ether type 0x6558 in nfpcapd - 50b286b 2022-07-07 Fix flow label code - e0bea16 2022-07-05 Make sure existing flow files are not overwritten, but appended in nfcapd, nfpcapd and sfcapd - 2d786aa 2022-07-03 Add ipfix observation domainID/pointID. #351 - 0afa9b9 2022-06-25 Fixed missing newline in CSV output - 7c2dd1b 2022-06-14 State 20220614 - ebfedf2 2022-04-23 Fix #333 with NSEL event record sending flow icmp - fa49d12 2022-04-23 Fix #333 with NSEL event record sending flow icmp - 2dd036f 2022-03-26 (tag: v1.6.24) Release 1.6.24 - 0418e73 2022-03-26 Update m4 files - 51ba781 2022-03-26 Update Doxigen.in file: #332 - 3f8cca0 2022-03-25 Merge pull request #336 from thesamesam/m4-macro-dir - e882722 2022-03-24 Makefile.am: add ACLOCAL_AMFLAGS - 3e61002 2022-03-21 Set ident on OpenNewFile - ec483f0 2022-03-20 Update metric. Add ident. Remove rate - 7438fee 2022-03-19 Fix nfpcapd LDFLAGS - db6b1cd 2022-03-19 Fix nfpcapd LDFLAGS - be244d8 2022-03-19 Calculate metric/s with double - 77342cd 2022-03-11 Fix cmd line processinf in nfanon. #328 - e6cb94b 2022-03-06 Update Readme regarding InfluxDB - 4859557 2022-03-06 Update Readme - ec4b48e 2022-03-06 Update metric code - b574c36 2022-03-06 Update metric code - 3c521ee 2022-03-06 Update metric code - e947298 2022-03-05 Update metric - 3274160 2022-03-05 Fix editing - 609b75a 2022-03-05 Compatibility to autoconf 2.69 - a34890b 2022-03-05 Update metric. Make collector main clock reference - 4652c20 2022-03-03 Make configure.ac autoconf 2.69 compatible - 77f6f40 2022-02-25 Cleanup/update automake files - 67da975 2022-02-25 Cleanup automake files. Fixes #304. - e626109 2022-02-22 Fix issue #304 - accept CFLAGS - 5f13e05 2022-02-19 Fix sflow compile problem - 0c77815 2022-01-29 Fix ja3 bugs. Cleanup ja3 - 38b1d09 2021-10-22 Fix link handling for nfpcapd - 6dab941 2021-10-22 Fix link handling for nfpcapd - 888695f 2021-10-22 Fix link handling for nfpcapd - 335d592 2021-10-22 Update flow_record_short to new format - 553063a 2021-09-19 Add tunnel flow handling (IPIP, GRE etc.) - b06010b 2021-09-12 Update metric to rate and not counters - 59530e4 2021-09-04 Add pppoe proto decoding for nfpcapd. Add tunnel flows in output - 2f2f90e 2021-08-28 Update metrics for multiple exporters on collector - f15f24c 2021-08-27 Revert #304 - does not work - ea1958c 2021-08-27 Fix compile flags #304 - a7b7590 2021-08-27 Update sfcapd and nfpcapd with metric export - 8408f49 2021-08-25 Update metric handling - no more diffing - 896a604 2021-08-24 Update metric code - 4e80f8e 2021-08-24 Enable metric export for v5/v9/ipfix - 1f8e469 2021-08-24 Add POC for metric export - 3c3d044 2021-08-12 Add more fields in colloctor raw output. - b8f3865 2021-08-01 Add NAT elements in IPFIX - cbb4c13 2021-07-31 Add NAT event record support for IPFIX: #298. Fix man page: #301 - 5850f57 2021-07-16 Fix issue #296 - broken json format with option -q - 506330e 2021-07-10 Add bverbose option. Fix minor raw output bugs - 81b3f12 2021-07-10 Reduce memory footprint. Fix nfreplay - 87fb3ba 2021-07-06 Fix dns decoding - 74e495e 2021-07-04 Improve nfreader/writer threads - 4871d29 2021-07-04 Fix memory leaks while rotating files - 1fecb54 2021-07-03 Merge pull request #295 from piorek94/sfcapd_nfcapd_similarity - 202da1e 2021-07-03 Merge branch 'unicorn' into sfcapd_nfcapd_similarity - 3303fb6 2021-07-03 Complete ja3 hash processing - d5d6d7a 2021-06-29 keep code symiliarity (as max as possible) between nfcapd and sfcapd - 5bf9473 2021-06-29 Add ipfix engine type/id tags - 390bdd4 2021-06-25 Fixed json msec formating - 1f61277 2021-06-25 Fix json msec formating - #294 - 8ee9de8 2021-06-25 Fix -t time window - 6f06ea2 2021-06-25 Fix broken time window - 19ddf1b 2021-06-20 Add ja3 code - 0472408 2021-06-13 Fix Debian odd select handling - 9440e4c 2021-06-10 Fix output of nbar ID/name - b66aea9 2021-06-04 Update pidfile check - a0938f0 2021-05-31 Change to new stat_record - b72f644 2021-05-31 Fixed broken bps, pps in pipe and csv output - bec6786 2021-05-30 Fix 'make check' and pid file handling - 67efa0e 2021-05-30 Add missing new line in pipe output format - ef739d8 2021-05-30 Fix debug(devel) output, in collector verbose mode - 3b9731a 2021-05-30 Fix typos and complete man pages - bbd3408 2021-05-30 Remove -T consistent in nfcapd, sfcapd and nfpcapd - 47595c7 2021-05-30 Remove -w in sfcapd to be consistent - b9664db 2021-05-24 Update README.md - 5dc8ec9 2021-05-24 Updated man pages - 62f37d4 2021-05-23 Update Readme - d2d39cc 2021-05-23 Update Readme - 6558007 2021-05-23 Update Readme - 1c6755b 2021-05-23 Update Readme - 37157b3 2021-05-23 Update Readme - a36d1e3 2021-05-23 Update Readme - 30f07a4 2021-05-23 Update Readme - c6fae55 2021-05-23 Status 20210523 - adefae0 2021-05-19 Silence short packet logs due to small snaplen. #221 - 357385b 2021-05-17 Status 20210517 - c6724e6 2021-05-17 Status 20210517 - df8c300 2021-05-12 Fix nftest for patch #289 - 8e192df 2021-05-12 Merge pull request #290 from piorek94/sflow_new_structures - a8a2ac3 2021-05-12 Merge pull request #289 from piorek94/flags_with_tcp_block - 4620ded 2021-05-12 Merge pull request #288 from piorek94/icmp_error_msg - d2eff25 2021-05-11 sflow: add structures for delay,queue depth,egress queue,entities - 71195cd 2021-05-11 imply flags with a proto TCP block - 713633f 2021-05-11 icmp code/type error message code compatibility - dd47446 2021-05-08 Cleanup some code and files - e6d790b 2021-05-07 Status 20210507 - 3e87069 2021-05-06 (tag: v1.6.23) Release 1.6.23 - ffb2599 2021-05-04 Status 20210504 - b29f927 2021-05-03 Status 20210503 - d5dae03 2021-05-02 Status 20210502 - 8b7db62 2021-05-02 Status 20210502 - 121e80d 2021-04-30 Status 20210430 - 1f15c2a 2021-04-30 Status 20210430 - 7f995c2 2021-04-28 Fix potential FreeNode without valid Node in nfpcapd - aacb652 2021-04-23 Add all non TCP/UDP IP protocols as streams in nfpcapd - 2c8921c 2021-04-22 Unwrap MPLS in nfpcad. Handle ESP in nfpcapd - ab0d4f9 2021-04-18 Status 20210418 - b7dfb37 2021-04-17 Status 20210417 - 0ed3859 2021-04-10 Change spin lock to native C11 lock - 250c1ef 2021-04-10 Cleanup code for issue #283 - 6613662 2021-04-10 status 2021-04-10 - 28ad878 2021-04-09 Add mpls unwrap in sflow code - 66df862 2021-04-06 Merge pull request #282 from orbea/bin - 44b6854 2021-03-27 bin: Use the libtool archives to link. - 7850541 2021-03-13 Merge pull request #277 from piorek94/sflow_q_in_q - 6a11a7d 2021-03-13 Update rbtree. Fix potential nfpcapd deadlock - 39f9515 2021-03-12 enable sflow q-in-q, fix ipv6 header skip - 1c72021 2021-03-06 Add packet capture buffer size to nfpcapd - 26c96e4 2021-03-06 state 20210306 - b00603c 2021-02-20 Merge pull request #267 from franciosi/patch-1 - f134b16 2021-02-20 Fix #271 - endless loop of nfexpire, if it does not find files - f2d3dbc 2021-02-20 Fix sflow code extended field parsing. #262 and #273 - 97ffcfe 2021-02-07 Status 20210207 - 385edef 2021-01-31 State 20210131 - 0b8d26f 2021-01-30 Fix yaf decoding error. Zero out tcp flags for non TCP flows - 9f9cb7c 2021-01-30 State 20210130 - 657126f 2021-01-18 State 20210118 - 5095232 2021-01-17 Fix sflow compile errors - 34456d4 2021-01-17 Make -Tall the default for nfcapd to collect extensions - b0c7a5e 2021-01-17 Add flow end reason element 136 - d6aeca9 2021-01-16 Add biFlow direction element 239 - 4465e4c 2021-01-16 Add reverse element enterprise ID 29305 for counter values - 0d515db 2021-01-12 Update README.md - bcebbe3 2020-12-22 Fix typos - a1926a2 2020-12-22 code cleanup and boundary checks in option template processing - 19416dc 2020-12-21 Implement element 160 (SystemInitTime) in option template. Issue #260 - 621c87c 2020-12-19 Fix minor compile issues - 95d0984 2020-12-19 Fix compile/platform issues - 3be22d3 2020-12-19 Fix compile/platform issues - 5efd271 2020-12-19 status 20201219 - b88a077 2020-12-19 Add Element 160 (SystemInitTime) in flow record used by Huawei - 6a78678 2020-12-05 Fix print plain numbers #263 - 8e4964a 2020-12-05 Fix path handling for -l - 0cb13df 2020-12-01 State 20201201 - 21922d4 2020-11-22 Snapshot 20201122 - e8b30c3 2020-11-21 (tag: v1.6.22) Release 1.6.22 - 9b59929 2020-10-24 20201024 - d7a820a 2020-10-19 cleanup - 9b32c31 2020-10-19 Fix nfreplay v5 time shift bug - 0b11531 2020-10-17 code cleanup - 353d6ff 2020-10-17 Fix IPv4/IPv6 statistics representation #252 - 4ce9edd 2020-10-17 Add element 139 for ICMP type/code in IPv6. #250 - b05764e 2020-10-17 Fix syntax error 'flags AS' as 'AS' is a reserved word. #255 - 7b2d510 2020-10-17 Merge pull request #256 from piorek94/new_comparators - 3b300ed 2020-10-14 add support for >=, <= comparators - ee87595 2020-09-21 State 20200921 - 81f80a5 2020-09-12 Cleanup nip/xip filter syntax. Add filter syntax 'nip in [ ]'. Request #246 - 93bb565 2020-09-03 Add nfversion to nfpcapd - 80b9cbb 2020-08-31 Merge pull request #243 from mildis/master - a766080 2020-08-31 Add collected netflow/sflow version in nfdump record. Request #242 - 994cc18 2020-08-31 Fix GuessDir bug - issue #215 - a95906f 2020-08-25 add option N to read multiple flows from file - f5ae2b8 2020-08-08 Re-address issue #231 - remove strict rule rfc 7011 - 49a6469 2020-08-02 (tag: v1.6.21) Release 1.6.21 - 7725402 2020-08-02 Address issue #236 Add token 'dir' equivalent to 'flowdir' in filter syntax - eae6e42 2020-08-02 Address issue #159. Implement rfc 7011 and include sender UDP port into unique template identification - 7a78d34 2020-07-26 State 20200726 - 707e849 2020-07-25 Fix #230 - Avoid use_syslog name clash on certain OS - e7af79f 2020-07-25 Fixed #243 - 801c3c5 2020-07-25 Add optional print direction ascending or descending to -s and -O output. Request #235 - e306baf 2020-07-18 Fix #231 - sampling detection - 6aa5929 2020-07-12 2020711 - 31cd138 2020-06-26 20200626 - 50df654 2020-06-20 Honor -n flag when printing sorted flow cache - a378d83 2020-06-20 Fix uninitialized variable printPlain - e490115 2020-06-20 Fix bug #223 - 63fc4e2 2020-05-23 Merge pull request #222 from irino/nfdump-fix-csv-title - c0ea62b 2020-05-21 Merge pull request #219 from yuriskinfo/man_fixes - 5f0bd07 2020-05-17 Snapshot 202017 - 64d2bbd 2020-05-04 Add \n in csv prolog for separating title and first data. - b78e0f5 2020-04-24 Fixed some typos, missing/extra commas, restructured few ambiguous sentences for better readability - 8d9d528 2020-04-22 Restore old behaviour unlimiting output flows unless in -s stat - ff8e0f2 2020-04-18 Fix ft2nfdump nexthop fields/extension map size bug - 3bc1f07 2020-04-13 Unify all timestamps to msec - 9c4ad8b 2020-04-12 Merge pull request #216 from 2igosha/master - e25cfdf 2020-04-12 Sync GuessDir from master - 3a473dc 2020-04-12 Fix GuessDir bug - issue #215 in flow exporter - 7fb4110 2020-04-12 Fix GuessDir bug - issue #215 - e3d84db 2020-04-08 Allow processing of DLT_RAW links (i.e. for a tun VPN) - 45a502d 2020-04-05 add output parameter struct - bfe19f9 2020-04-05 internal: put output parameters in a single struct - 7eccd20 2020-03-29 (tag: v1.6.20) Release 1.6.20 - adb6b7b 2020-03-29 More cleanup on plain number printing - c65956b 2020-03-28 Fix profiler filer but - 1671401 2020-03-28 Fix plain numbers bug #213 - d993301 2020-03-28 Fix plain numbers bug #213 - 79a2c44 2020-03-22 Introduce file layout V2 - 8a376ba 2020-02-29 Merge pull request #208 from bernhardschmidt/948039-crossbuild - b889a6b 2020-02-29 Merge pull request #207 from bernhardschmidt/909437-typo - 754b545 2020-02-25 Fix crossbuilding - 138eb60 2020-02-25 Fix typo in nfdump.1 - 9c6137d 2020-02-23 Delete extra file - 998c385 2020-02-23 Add V3 extension definition. Generic V2 file types - a0fc169 2020-02-23 Update Readme for UNICORN branch - cb5f761 2020-02-22 Fix README - f86fbfc 2020-02-22 (tag: v1.6.19) Move version to nfdump-1.6.19 - 1de8e38 2020-02-16 Add Push for new sgt tag - dce3e36 2020-02-16 Modify heuristic for bidir flows #59 - 3714bc9 2020-02-16 Add Source security group tag (SGT 34000) issue #192 - ae8ded0 2020-02-16 Remove debugging printf in sflow_process - df447a5 2020-02-16 Cleanup commented code - b394ff5 2020-02-16 Fix minror bug in nfnet - a254a7c 2020-02-14 More spring cleaning - 60efbf3 2020-02-09 Cleanup unused nffile records. Add nffileV2.h - 10d9e73 2020-02-02 Fix various compiler warnings - b0135e0 2020-02-01 Fix make check - a7ed5b8 2020-02-01 Set verbose logging off by default in non daemon mode - 4825c5e 2020-02-01 Remove external global vars - f7e9681 2020-01-31 Remove old legacy records - 6bcf930 2020-01-29 Major code rearrangements - d28bfb7 2020-01-26 More code cleanup - 8740d96 2020-01-26 Cleanup nftest - d5e2b76 2020-01-26 Cleanup header code - 6e46597 2020-01-18 Merge pull request #201 from spenceation/add-egress-vrfid-doc - a076571 2020-01-15 Add missing NF_N_EGRESS_VRFID documentation - a055ba8 2020-01-11 Fix bug for IPv6 network cidr representation in raw and cvs output mode - b3c1362 2019-12-04 Remove unused old code. Fix for #197 - 0428577 2019-12-03 Fix bidir export issues. Cleanup code. Fix for #195 - 0c138be 2019-11-17 Fix typo - Enable small time intervals < 60s. - #185 - 7d5234b 2019-11-17 Enable small time intervals < 300s. - #185 - 68fea3f 2019-11-09 Fix gcc compile issue - f579c73 2019-11-09 merge - 406a210 2019-11-09 Fix minor nfpcapd issues - c2a976e 2019-11-08 Fix corrupt file handling #193 - c5db2c7 2019-11-03 Fix protocol width field - b0b99b5 2019-11-03 Fix protocol width field - a67b75b 2019-11-03 More code cleanup. Move code to dedicated files - 536671d 2019-10-28 Fix print_epilog - 3360ca3 2019-10-28 Cleanup - ff634c2 2019-10-28 Update README - 9994f76 2019-10-28 Fix issue #190. Add compile time option for JunOS. - 07350f2 2019-10-28 Fix bug #189 - valid json output - Restructure code for output into separate files - 955a662 2019-09-01 Cleanup configure.ac - 7a208e6 2019-08-31 Cleanup old compat15 comments - a26e360 2019-08-31 Add c11.m4 macro - 41dae12 2019-08-31 Fix various c11 compile issues. BSD/Linux gcc/clang - 0633e9a 2019-08-24 Fix sflow issue with Arista switches - ecf9b12 2019-08-24 Add vlan tags dot1qVlanId, 243, 254 - #182 - 003a592 2019-08-19 Fix ft2nfdump next hop and ip router fields - 772cbd5 2019-08-17 Work in progress towards v1.7 Start cleanup of old and ugly code. More cleanup will follow Rewrite sampler handling code. Move definitions to correct header files. Move to C11 as global standard for nfdump. Move to -O3 as compile option for nfdump - e9cbaf4 2019-08-16 Cleanup and fix IPv6 network display in war records - bef82c0 2019-08-14 (tag: v1.6.18) Fix output buffer size for lzo1x_decompress_safe. #180 - 3b6ee89 2019-08-14 Fix comple issues - 7029f89 2019-08-13 Fix Readme - 6469157 2019-08-07 Fix VerifyExtensionMap #179 - 74b68ec 2019-08-06 Fix compile errors #178 - 0dbf646 2019-08-05 Cleanup fixes - e1126d5 2019-08-05 Replace depricated pcap_lookupdev call in nfpcapd - 134c969 2019-08-05 Cleanup old code - 4538818 2019-08-05 Merge pull request #167 from mwmix/master - b64f2a6 2019-08-05 Move version to v1.6.18 - a8b460e 2019-08-05 Remove COMPAT15 code - 76dfc7d 2019-08-05 Fix checks in InsertExtensionMap #177 - 7234bcf 2019-08-05 Add bound checks in AddExporterInfo - 8d18888 2019-08-05 Add bound checks in AddSamplerInfo #176 - 859ea2c 2019-08-05 Add bound checks in AddExporterStat #174 - 7dbd3eb 2019-08-05 Fix use after free in ModifyCompressFile - 7bd6d5b 2019-08-05 Fix off by 1 array. #173 - dfca80f 2019-08-05 Fix nfdump.1 man page. #175 - 0b45172 2019-07-31 Add record size sanity check also for nfprofile, nfanona and nfreplay - 7b26ee9 2019-07-28 Change to safe lzo decompress function - 226d10e 2019-07-28 Fix hbo_nfx.c:216_3 segfault. Update minilzo to v2.10 - 833c9bc 2019-07-28 Fix hbo_nffile_inline.c:85_1 - 98d8ba6 2019-07-28 Fix hbo_exporter.c:249_1 segfault - d01083c 2019-07-28 nfpcapd cleanup - 3b006ed 2019-07-27 Fix potential unsigned integer underflow - 7c0d06a 2019-07-27 Rework nfpcapd and add it officially to the nfdump collection - fd3d3db 2019-07-17 Add latency extension if dumping flowcache - a19e18e 2019-07-15 Fix exporter struct inconsistancies. Coredump on ARM otherwise - 7af869d 2019-07-02 Add ipfix element #150, #151 unix time start/end - fb6790b 2019-06-20 Fixed typo with bgp6_next_hop - 4262304 2019-06-02 Add empty m4 directory - keep autoconf happy - 9641295 2019-06-02 Add empty m4 directory - keep autoconf happy - 5325378 2019-06-02 Add empty m4 directory - keep autoconf happy - 439b7e8 2019-06-02 Add empty m4 directory - keep autoconf happy - da2a126 2019-06-02 Add ipfix dyn element handling - b5b42ab 2019-06-01 Fix issue #156 - print flowtable index error - 90bcf77 2019-06-01 Fix issue #162 - ipfix mpls sequece - 52c819e 2019-03-17 Remove non thread safe logging in nfpcapd - 7c3c775 2019-03-17 Fix spec file - #149 - d1b1731 2018-11-26 Merge pull request #137 from farrokhi/master - 4f55abd 2018-11-26 Merge pull request #134 from shigechika/fix-v5_output_record - a8e3586 2018-11-25 Merge pull request #131 from grimmfarmer/issue-130 - d00dffb 2018-11-25 Merge pull request #144 from tsl-karlp/patch-1 - cf63f79 2018-11-25 Fix bug to accept -y compression flag in nfcapd. - #145 - afb6429 2018-11-25 Remove padding byte warning in log #141 - 3e55add 2018-11-25 Add missing -M command line help to nfcapd - 0aa0202 2018-11-25 Merge pull request #139 from whh8b/master - 776a559 2018-11-25 Fix some error messages to be printed to the correct stream #135 - 4963995 2018-11-25 Add TCP flags ECN,CVR - #132 - ddcb5ba 2018-11-25 Merge branch 'master' of github.com:phaag/nfdump - 603302e 2018-11-25 Fix protocol tag for protocol 87 - TCF. #130 - dac7334 2018-11-16 typos and formatting fixes - 7893364 2018-10-11 Document -M in usage for nfcapd - 9a6d629 2018-10-09 Fix bulid against libpcap when `--enable-readpcap` is given - b70496d 2018-10-04 Fix v5_output_record - 3d1e2a4 2018-09-05 Fix typo in protocol list: 87 should be "TCF" but is labeled "TCP". - 8da06b5 2018-08-18 Merge pull request #125 from marekbecka/scale_summary - 49587e6 2018-07-26 Also scale numeric values also in summary unless -N is used. - 4dafc2d 2018-06-24 Update man page nfreplay for -z parameter - 3fd3023 2018-06-24 Merge pull request #120 from LouisSinan/master - 9049c9f 2018-06-24 Cleanup comment - db100d7 2018-06-24 Add CISCO ASA elements initiatorPackets (298) responderPackets (299) - 3c0c3f8 2018-06-24 Ignore OSX .DS_Store files in -R file list - 9d187da 2018-06-24 Add multiple packet repeaters to nfcapd/sfcapd - 214091e 2018-06-24 Fix bookkeeper type - use key_t - 9768760 2018-05-24 Merge pull request #1 from LouisSinan/Distribution-accross-time - eaecb4c 2018-05-24 nfreplay - Distribution accross time - 11f9159 2018-05-06 New bookkeeper hash broke NfSen. Fixed. ported back to release 1.6.17 - ec91b39 2018-04-22 (tag: v1.6.17) Release 1.6.17 - eab0299 2018-04-20 Fix definition for InfluxDB in configure.ac Issue #98 - bddfdb1 2018-04-20 Fix minor bugs - 29fb080 2018-04-20 Update nfdump.1 man page for xsrcport & xdstport aggregations. Request #109 - 2fab2cc 2018-04-20 Merge pull request #109 from simPod/aggregations - 79a9c82 2018-04-20 Merge pull request #108 from simPod/master - 19a7b2d 2018-04-20 Fix bug in sorting when guessing flow direction. Issue #92 - e94fbba 2018-04-03 Add xsrcport & xdstport aggregations - 5849192 2018-04-01 Fix autogen.sh permissions to be executable - 0082088 2018-04-01 Add Fix argument processing of influxDB URL in nfprofile. Issue #99 - 325aea7 2018-04-01 Add missing option -M in man page for nfcapd. Issue #103 - 9f0fe95 2018-04-01 Fix nfdump crashes, when feeded with garbage input. Issue #104 - 27f62a5 2018-02-11 Add missing -v option in nfreplay help text - 9e2e0c4 2018-02-11 Add missing json output format help text - 2b4cfc7 2018-01-06 Merge pull request #51 Influxdb from Luca - 0ea114f 2018-01-01 IPFIX add fwd status tag #89 compatible to v9 (1byte) - c400f52 2018-01-01 IPFIX time stamps - fix offset calculation of unknown time formats - 2a829df 2018-01-01 IPFIX time stamps - Fix elements #21,#22 offset calculation - 31137a3 2017-12-31 Fix sampling for Juniper MX104. No sampling algorithm required - 13131ff 2017-12-30 Add new output format json - 0ec4e21 2017-12-29 Remove unneeded files - 84be3e4 2017-12-29 Update README.md - 1d2ed37 2017-12-29 Update Readme.md formating - 70edef1 2017-12-29 Fix formating errors - f999bfe 2017-12-29 Update Readme - fccabf6 2017-12-29 Activate flowlabel in filter syntax - 746d1bc 2017-12-29 Add sampling tags 302, 304, 305. Add option for filter labels - be29ad7 2017-12-28 Add more detailed autogen.sh - softlink bootstrap - 0a86642 2017-12-28 Fix 64bit fts compat issue in fts_compat.c - cedc847 2017-12-28 Cleanup headers. Satify includes for header file - 9c2e7d6 2017-12-28 Fix compiler warnings from different compilers clang/gcc - 8a9dcb2 2017-12-28 Cleanup sflow code - uncomment unnecessary code - eaa7a85 2017-12-27 Update sflow code to commit 7322984 of https://github.com/sflow/sflowtool - c4e8a5b 2017-12-27 Add ipfix delta timestamp elements 158/159 - 020a4d0 2017-12-22 Fix potential memory leaks in nfpcapd - b776f8d 2017-12-21 Fix wrong offset calculation if unknown options are found - adfd5e9 2017-12-21 Add x-late src/dst ip aggregation, if compiled with NSEL support - f1b91aa 2017-12-21 Fix gcc/clang differences - 959edbc 2017-12-17 Report updates on existing samplers in v9 only if values change. issue 84 - 79d9916 2017-12-17 Add sampling for IPFIX. See issue #47 - a0ac615 2017-12-15 Merge pull request #89 from orca-software/add_doxygen_docs - 99387c0 2017-12-15 Merge pull request #88 from orca-software/remove_autotools_output - dbcf7a6 2017-12-13 Added generated docs to .gitignore - 15afb0a 2017-12-13 Configure building docs - 0874edf 2017-12-13 Fixed issue with HAVE_DOXYGEN define - 4bcdc8d 2017-12-06 Added doc directory for Doxygen files and output - b4f0881 2017-12-13 Added binaries generated by make to .gitignore - db4aa2b 2017-12-13 Added files generated by "configure" to .gitignore - 8214edb 2017-12-13 Added generated files by ./bootstrap to .gitignore - 376b3c8 2017-12-13 Removed lingering references to doc directory - b8111e7 2017-12-13 Removed generated files - 59e0eae 2017-12-12 Add lz4 compression. Remove old and experimental xstat code - cleanup - 3bf7296 2017-12-11 Add lz4 compression. Remove old and experimental xstat code - 235fad2 2017-12-03 Fix minor issues and compiler warnings - 659f582 2017-12-03 Fix sfcapd time slices < 60 are not allowed - 41e5ec8 2017-12-03 Fix version tags. update all to 1.6.16 - 7b9fa68 2017-11-05 Fix readme for release 1.6.16 - 9821114 2017-11-05 (tag: v1.6.16) Release 1.6.16 - 29e80e4 2017-11-05 Change -B behaviour as proposed in issue #59. Should not impact with previous use, but is more flexible - a8bc82d 2017-11-05 Add bzip compress switch in usage output of nfpcapd - a35ecdd 2017-11-05 Fix issue #72 - multiple stat output - f7a4bc5 2017-11-05 Add 8byte timestamps exported by Nexus 7k family - ad62890 2017-03-18 Fix memory leak, if nfcapd can not write into directory - f0666be 2017-03-18 Fix compile issues on some platforms - f67d99e 2016-11-26 For nfpcapd, use more efficient spin locks for thread sync - 4c712ee 2016-11-26 Clean up logging. User Log* routines everywhere - 4cd1ef1 2016-11-26 Merge branch 'master' of github.com:phaag/nfdump - 4aa1272 2016-11-26 Add latency extension to nfpcapd. Streamline nfpcapd. - 88ed508 2016-11-19 Merge pull request #39 from bernhardschmidt/spelling - b1a20cc 2016-11-15 Merge pull request #43 from aapo/typo_in_man - aaa5c69 2016-11-13 Fix nfdump man page #44 - 63e5ee7 2016-11-13 Push fixes - 4be59e0 2016-11-13 Add nfdump.test.out to git. Few debug changes in v9 and ipfix - beae8f5 2016-10-22 Fix typo in man - b22d19a 2016-10-03 Fix man warning in nfdump.1 - 365c300 2016-10-03 Fix spelling errors in sources found by Debian lintian - 05e97ab 2016-10-03 Fix spelling errors in manpages found by Debian lintian - f8db5a9 2016-07-23 Replace unreliable _ftok in bookkeeper - 01bfb78 2016-07-20 Merge pull request #28 from candlerb/candlerb/in_out_bytes - ecf85cf 2016-07-20 Merge pull request #26 from simonflood/patch-7 - 5fab779 2016-06-13 Aggregate using in+out bytes for bidirectional flows - e1120f0 2016-06-07 Update README.md - 812651f 2016-06-05 Cleanup formating of nf_common.c - 0cde713 2016-06-05 Merge pull request #25 from Opmantek/rawts - 68d660e 2016-06-05 (tag: v1.6.15) Release v1.6.15 - 25138d8 2016-06-05 Fix wrong bps type case in cvs output. Fix opbs ipbs typos - 3039c97 2016-06-05 Fix obyte, opps and obps output records - 4237451 2016-05-11 fixed stupid mistake re msec inclusion in start and end timestamps (received was ok) - 69cc9c0 2016-05-11 added formats %tsr, %ter and %trr for printing raw, fractional unix timestamps - 6ef51a7 2016-05-07 Merge pull request #19 from adamlamar/nfxstat-header-guard - 0db0d7f 2016-05-07 Add %ff record flags to custom output format - bca76b9 2016-05-07 Cleanup code in netflow_v9.c - 5d77fad 2016-05-07 Fix email address in AUTHERS file - ff0e855 2016-05-07 Fix security issues in netflow_v9.c and ipfix.c - aeb703c 2016-05-06 Fix shared library build issue. --enable-shared=no and yes are honored correctly. - 83e3180 2016-03-14 Add header guard to nfxstat - 45c669c 2016-02-03 Merge pull request #13 from simonflood/patch-6 - 73a775c 2016-02-03 Merge pull request #10 from simonflood/patch-3 - 16438a2 2016-02-03 Merge pull request #11 from simonflood/patch-4 - 09729c7 2016-02-03 Merge pull request #9 from simonflood/patch-2 - 88f833b 2016-02-03 Merge pull request #8 from simonflood/patch-1 - 089875b 2016-02-03 Merge pull request #12 from simonflood/patch-5 - c3a33fb 2016-02-02 Update nfdump.spec - 3f8b8af 2016-02-02 Update nfdump.spec - 6bc66f6 2016-02-02 Update BSD-license.txt - 5933a03 2016-02-02 Update nfdump.spec - bfa4453 2016-01-29 Update sfcapd.c - 0e7540f 2016-01-29 Update nfcapd.c - ef7697f 2016-01-10 (tag: v1.6.14) Fix build issues on various Linux/*BSD - a12087c 2016-01-10 Add -Z in nfcapd/sfcapd for timezone extension. Breaks expire for now - 3b72bda 2016-01-10 sflow: fix timestamp overflow. Build: cleanup check files. - cc8315e 2015-12-23 Add nfdump library. Fix fragments iin sflow - 6f5ea04 2015-11-21 Fix help for -z -j description - 69d46a7 2015-11-21 (tag: v1.6.14-b2) Add missing nftrack to git - 7ffa3cb 2015-10-03 Fix Readme.md - 7f17ef9 2015-10-03 (tag: v1.6.14-b1) Cleanup - b9641c1 2015-10-03 Add code for 1.6.14 to GitHub - 5174b9f 2015-10-03 beautify README.md - 758237b 2015-10-03 Initial git release 1.6.13 - 752de78 2015-08-09 Update README.md - 3cd8a32 2015-08-09 Initial commit nfdump-1.7.5/LICENSE000066400000000000000000000031141470623444400140310ustar00rootroot00000000000000 The nfdump project is distributed under the BSD license: Copyright (c) 2022, Peter Haag All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.nfdump-1.7.5/Makefile.am000077500000000000000000000010561470623444400150660ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src/libnffile src/libnfdump src/output src/netflow src/collector src/maxmind src/tor SUBDIRS += src/nfdump src/nfcapd SUBDIRS += src/nfanon src/nfexpire src/nfreplay . src src/test src/nfreader src/inline src/include if SFLOW SUBDIRS += src/sflow endif if FT2NFDUMP SUBDIRS += src/ft2nfdump endif if BUILDNFPCAPD SUBDIRS += src/nfpcapd endif if NFPROFILE SUBDIRS += src/nfsen endif SUBDIRS += man doc EXTRA_DIST = extra/CreateSubHierarchy.pl LICENSE BSD-license.txt extra/PortTracker.pm extra/nfdump.spec bootstrap nfdump-1.7.5/NEWS000077700000000000000000000000001470623444400152712ChangeLogustar00rootroot00000000000000nfdump-1.7.5/README000077700000000000000000000000001470623444400151572README.mdustar00rootroot00000000000000nfdump-1.7.5/README.md000077500000000000000000000533441470623444400143200ustar00rootroot00000000000000# nfdump [![buildtest](https://github.com/phaag/nfdump/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/phaag/nfdump/actions/workflows/c-cpp.yml) nfdump-1.7.x or nfdump **unicorn** is the current release of nfdump. ## Introduction nfdump is a toolset in order to collect and process netflow/ipfix and sflow data, sent from netflow/sflow compatible devices. The toolset contains several collectors to collect flow data: - nfcapd supports netflow __v1__, __v5/v7__, __v9__ and __IPFIX__ - sfcapd supports **sflow**. - nfpcapd converts pcap data read from a host interface or from pcap files. The collected flow data is stored into files and can be process afterwards. nfdump processes and lists the flows in many different output formats and can create a wide range of statistics. **nfdump** has a very powerful flow filter to process flows. The filter syn‐ tax is very similar to tcpdump, but adapted and extended for flow filter‐ ing. A flow filter may also contain arrays of *many thousand IP addresses* etc. to search for specific records. **nfdump** can aggreagte flows according to a user defined number of ele‐ ments. This masks certain elements and allows to sum up flow records matching the same values. The combination of flow *filtering* and *aggregation* as input for any flow statistics allows **complex flow processing**. Pre‐filtered and aggregated flow data may also be written back into a binary flow file, which again may be processed with nfdump **nfdump** can enrich the listing of flows with **geo location** information, **AS** information and **TOR** exit node information. AS information is enriched only, if it is not available in the original flow record. IP addresses can be tagged with a two letter **country code**, or with a longer location label containing the geographic region, country and city. The geo location and AS information is retrieved from the optional **geoDB** database, created by the **geolookup** program from the nfdump tools. geolookup uses the **Maxmind** database GeoDB or GeoLite2 to create a binary lookup database for nfdump. Please check the geolooup(1) man page for more details. IP adresses can be tagged as **TOR** exit nodes, from the optional **torDB** database, created by the **torlookup** program. Please chaeck the torlookup(1) man page for details. There is also a [go-nfdump](https://github.com/phaag/go-nfdump) module to read nfdump flows files in Golang. ### Compatibility nfdump-1.7.x is compatible to nfdump-1.6.18, which means it can read files created with nfdump-1.6.18 or newer. Flow files created with earlier nfdump versions may not contain all flow elements. If you have older files, it is recommended to use nfdump-1.6.17 to update the records. If you have lots of flows files from nfdump-1.6.x, it is recommended to convert these to the new format. You can convert any old files from nfdump-1.6.x to nfdump-1.7 format by reading/writing files: __./nfdump -r old-flowfile -y -w new-flowfile__ Please note, that only __nfdump__ may read nfdump-1.6.x flow files. All other programs understand the new file format only. Note for NfSen users: If you use NfSen, you must upgrade NfSen to the latest Github version https://github.com/phaag/nfsen. All specific binaries such as nfprofile and nftrack are still available with nfdump-1.7 but may be removed in future. ### Improvements - **nfdump** is now a multi-threaded program and uses parallel threads mainly for reading, writing and processing flows as well as for sorting. This may result in faster flow processing, depending on the tasks. The speedimprovement also heavily depends on the hardware (SSD/HD) and flow compression option. - For netflow v9 and IPFIX, nfdump now supports **FNF** and flexible length fields. This improves compatibility with some exporters such as yaf and others. - Support for Cisco Network Based Application Recognition (NBAR). - Supports Maxmind geo location information to tag/geolocate IP addresses and AS numbers. - Supports TOR exit node information to IP addresses as TOR exit nodes. - nfpcapd automatically uses TPACKET_V3 for Linux or direct BPF sockets for *BSD. This improves packet processing. It adds new options to collect MAC and VLAN information if requested as well as the payload of the first packet. This creates a lot of new possibilities in order to process and filter flows, such as __nfdump -r flowfile 'payload content "POST"'__ nfpcapd can now store flow files locally or can sent them to a remote nfcapd collector. - Metric exports: By default, every 60s a flow summary statistics can be sent to a UNIX socket. The corresponding program may be [nfinflux](https://github.com/phaag/nfinflux) to insert these metrics into an influxDB or [nfexporter](https://github.com/phaag/nfexporter) for Prometheus monitoring. - nfdump supports a default config file tipically */usr/local/etc/nfdump.conf* to store user defined paths for the **geolookup** and **torlookup** database files as well as for user defined named output formats *( -o 'fmt:%ts .. ', -o 'csv:%ts ..')*. See the default */usr/local/etc/nfdump.conf.dist* file for an example. ### Additional programs The nfdump program suite also contains __geolookup__. It allows either to enrich IP addresses by country codes/locations and may add potential missing AS information. Flows may be filtered according to country codes. *( ex: **src geo US** )*. geolookup may also be used as standalone program to lookup IPs for AS/Geo information, similar to the famous Team Cymru whois service. geolookup uses a local database, which allows to process as many requests as you have. In order to use geolookup, you need either a free or paid Maxmind account in order to convert the Maxmind .csv files into an nfdump vector data file. __geolookup__ needs to be enabled when running configure: __--enable-maxmind__ The nfdump program suite also contains __torlookup__. It allows either to enrich IP addresses by a TOR exit flag. Flows may be filtered according to TOR IP addresses *( ex: **src ip tor** )*. torlookup may also be used as standalone program to lookup IPs for TOR exit node intervals with as many requests as you have. In order to use torlookup or the nfdump output enrichment , you need to create the tordb first. See also the toorlookup(1) man page. __torlookup__ needs to be enabled when running configure: __--enable-tor__ --- ## NSEL/ASA, NEL/NAT support __NSEL__ (Network Event Security Logging) as well as NEL (NAT Event Logging) are technologies invented by __CISCO__ and also use the netflow v9 protocol. However, NSEL and NEL are not flows as commonly known but rather *__Events__!* exported from specific devices such as CISCO ASA. nfdump supports Event looging as part of netflow v9. __Jun OS NAT Event Logging__ is mostly compatible with CISCO's NAT Event Logging - mostly - it needs another data interpretation. See __--enable-jnat__ below ## Installation ### Building and config options The toolset is build upon the autotools framework. Run `./autogen.sh` first. Afterwards `./configure` `make` and `make install` should do the trick. For various older Linuxes need a more modern compiler: #### CentOS 7.x: ```c % yum install centos-release-scl ``` Then you can install GCC 8 and its C++ compiler: ```c % yum install devtoolset-8-gcc devtoolset-8-gcc-c++ ``` To switch to a shell which defaults `gcc` and `g++` to this GCC version, use: ```c % scl enable devtoolset-8 -- bash ``` #### Ubuntu 18.04 LTS: ```c % sudo apt-get install clang-10 % CC=clang-10 ./configure ... ``` The following config options are available: ( see ./configure --help for the complete list) * __--enable-sflow__ Build sflow collector sfcapd; default is __NO__ * __--enable-nfpcapd__ Build nfpcapd collector to create netflow data from interface traffic or precollected pcap traffic; default is __NO__ * __--enable-maxmind__ Build geolookup program; default is __NO__ * __--enable-tor__ Build torlookup program; default is __NO__ * __--enable-nsel__ This switch is no longer needed for nfdump-1.7.x, as **nsel** support is builtin by default. This switch only affects the default output format from *line* to *nsel* and has no other effects otherwise; default is __NO__ * __--enable-jnat__ Compile nfdump, to read and process JunOS NAT event logging __NO__ * __--with-zstdpath=PATH__ Expect libzstd installed in **PATH**; default __/usr/local__ * __--enable-ftconv__ Build the flow-tools to nfdump converter; default is __NO__ * __--enable-nfprofile__ Build nfprofile used by NfSen; default is __NO__ * __--enable-nftrack__ Build nftrack used by PortTracker; default is __NO__ * **--enable-ja4** Enable all ja4 module; default is **NO** See JA4-Fingerprinting [JA4 Fingerprinting](https://github.com/phaag/nfdump/blob/nfdump-ja4/src/decode/ja4/Readme.md) module. Development and beta options * __--enable-devel__ Insert lots of debug and development code into nfdump for testing and debugging; default is __NO__ * __--enable-readpcap__ Add code to nfcapd to read flow data also from pcap files; default is __NO__ ### The tools __nfcapd__ - netflow collector daemon. Collects the netflow data, sent from exporters and stores the flow records into files. Automatically rotates files every n minutes. ( typically every 5 min ) The netflow versions mentioned above are read transparently Multiple netflow streams can be collected by a single or collector. nfcapd can listen on IPv6 or IPv4. Furthermore multicast is supported. __nfdump__ - process collected netflow records. Nfdump reads the netflow data from one or many files stored by nfcapd. It's filter syntax is similar to tcpdump ( pcap like ) but adapted for netflow. If you like tcpdump you will like nfdump. nfdump displays netflow data and/or creates top N statistics of flows, bytes, packets. nfdump has a powerful and flexible flow aggregation including bi-directional flows. The output format is user selectable and also includes a simple csv format for post processing. __nfanon__ - anonymize netflow records IP addresses in flow records are anonimized using the CryptoPAn method. __nfexpire__ - expire old netflow data Manages data expiration. Sets appropriate limits. Used by NfSen. __nfreplay__ - netflow replay Reads the netflow data from the files stored by nfcapd and sends it over the network to another host. #### Optional binaries: __sfcapd__ - sflow collector daemon scfapd collects sflow data and stores it into nfcapd compatible files. "sfcapd includes sFlow(TM) code, freely available from https://github.com/sflow/sflowtool. __nfpcapd__ - pcap to netflow collector daemon nfpcapd listens on a network interface, or reads precollected pcap traffic. It either stores locally flow records into nfcapd compatible files or sends the flows to a remote **nfcapd** collector. It is nfcapd's companion to convert traffic directly into nfdump records. Nfpcap can optionally integrate lots of meta data as well as prt of the payload. ( *-o fat, payload*) __geolookup__ - Geo location lookup program. geolookup converts Maxmind's .csv files into the nfdump vector DB. The converted DB may be used as a standalone lookup tool, or be be used by nfdump in order to automatically lookup country and location. Please note: You need a legitimate Maxmind account (free or paid) in order to download the files. __torlookup__ - TOR location lookup program. torlookup converts tor information files into the nfdump vector DB. The converted DB may be used as a standalone lookup tool, or be be used by nfdump in order to automatically flag tor exit node IPs. __ft2nfdump__ - flow-tools flow converter ft2nfdump converts flow-tools data into nfdump format. __nfprofile__ - netflow profiler. Required by NfSen Reads the netflow data from the files stored by nfcapd. Filters the netflow data according to the specified filter sets ( profiles ) and stores the filtered data into files for later use. __nftrack__ - Port tracking decoder for NfSen plugin PortTracker. __nfreader__ - Framework for programmers nfreader is a framework to read nfdump files for any other purpose. Own C code can be added to process flows. nfreader is not installed #### Notes for sflow users: sfcapd and nfcapd can be used concurrently to collect netflow and sflow data at the same time. Generic command line options apply to both collectors likewise. sfcapd's sflow decoding module is based on InMon's sflowtool code and supports similar fields as nfcapd does for netflow v9, which is a subset of all available sflow fields in an sflow record. More fields may be integrated in future versions of sfcapd. --- ### Compression Binary data files can optionally be compressed by using either LZO1X-1, LZ4, ZSTD or bzip2 compression LZO is fastest but less efficient, LZ4 and ZSTD are fast and pretty efficient and bzip2 is slow but efficient. By default LZO and LZ4 embedded without external dependancies. Bzip2 and ZSTD are optional libraries, which are automatically added, if they are found while configuring and compiling. The standard **configure** process checks for the installed libraries lz4, bz2 and zstd and enables them if they are found. **configure** understands the following options: ``` --with-lz4path=PATH Expect liblz4 installed in PATH; default /usr/local --with-zstdpath=PATH Expect libzstd installed in PATH; default /usr/local --with-bz2path=PATH Expect libbz2 installed in PATH; default /usr/local ``` If no option is given and no library is found that compression algorithm is disabled. For LZ4, if no library is found, the embedded version is used. Compression algorithms can also be explicitly disabled by setting `with-xxxpath=no` In the case of lz4, it disables the system installed version and uses the embedded one. **Recommendation** If you compress automatically flows while they are collected, use LZ4 **-z=lz4** as a standard. **Notes**: Bzip2 uses about 30 times more CPU than LZO1X-1. Use bzip2 to archive netflow data, which may reduce the disk usage again by a factor of 2. The compression of flow files can be changed any time with nfdump -J . You may also apply compression levels to lz4 and zstd such as **-z=zstd:9** or **-z=lz4:5** to improve efficiency at the cose of more CPU and slower compression speed. For more details on each methde, see: LZO1X-1: http://www.oberhumer.com/opensource/lzo LZ4: https://github.com/lz4/lz4 ZSTD: https://github.com/facebook/zstd bzip2: http://www.bzip.org --- ## General Operation of nfdump The goal of the design is to able to analyze netflow data from the past as well as to track interesting traffic patterns continuously. The amount of time back in the past is limited only by the disk storage available for all the netflow data. The tools are optimized for speed for efficient filtering. The filter rules should look familiar to the syntax of tcpdump ( pcap compatible ). All data is stored to disk, before it gets analyzed. This separates the process of storing and analyzing the data. The data is organized in a time-based fashion. Every n minutes - typically 5 min - nfcapd rotates and renames the output file with the timestamp nfcapd.YYYYMMddhhmm of the interval e.g. nfcapd.200907110845 contains data from July 11th 2009 08:45 onward. Based on a 5min time interval, this results in 288 files per day. Analyzing the data can be done for a single file, or by concatenating several files for a single output. The output is either ASCII text or binary data, when saved into a file, ready to be processed again with the same tools. You may have several netflow sources - let's say 'router1' 'router2' and so on. The data is organized as follows: /flow_base_dir/router1 /flow_base_dir/router2 which means router1 and router2 are subdirs of the flow_base_dir. Although several flow sources can be sent to a single collector, It's recommended to have multiple collector on busy networks for each source. Example: Start two collectors on different ports: nfcapd -D -S 2 -B 1024000 -w /flow_base_dir/router1 -p 23456 nfcapd -D -S 2 -B 1024000 -w /flow_base_dir/router2 -p 23457 nfcapd can handle multiple flow sources. All sources can go into a single file or can be split: All into the same file: nfcapd -D -S 2 -w /flow_base_dir/routers -p 23456 Collected on one port and split per source: nfcapd -D -S 2 -n router1,172.16.17.18,/flow_base_dir/router1 \ -n router2,172.16.17.20,/flow_base_dir/router2 -p 23456 See nfcapd(1) for a detailed explanation of all options. Security: none of the tools requires root privileges, unless you have a port < 1024. However, there is no access control mechanism in nfcapd. It is assumed, that host level security is in place to filter the proper IP addresses. See the manual pages or use the -h switch for details on using each of the programs. For any questions send email to peter@people.ops-trust.net Configure your router to export netflow. See the relevant documentation for your model. A generic Cisco sample configuration enabling NetFlow on an interface: ip address 192.168.92.162 255.255.255.224 interface fastethernet 0/0 ip route-cache flow To tell the router where to send the NetFlow data, enter the following global configuration command: ip flow-export 192.168.92.218 9995 ip flow-export version 5 ip flow-cache timeout active 5 This breaks up long-lived flows into 5-minute segments. You can choose any number of minutes between 1 and 60; Netflow v9 full export example of a cisco 7200 with sampling enabled: interface Ethernet1/0 ip address 192.168.92.162 255.255.255.224 duplex half flow-sampler my-map ! ! flow-sampler-map my-map mode random one-out-of 5 ! ip flow-cache timeout inactive 60 ip flow-cache timeout active 1 ip flow-capture fragment-offset ip flow-capture packet-length ip flow-capture ttl ip flow-capture vlan-id ip flow-capture icmp ip flow-capture ip-id ip flow-capture mac-addresses ip flow-export version 9 ip flow-export template options export-stats ip flow-export template options sampler ip flow-export template options timeout-rate 1 ip flow-export template timeout-rate 1 ip flow-export destination 192.168.92.218 9995 See the relevant documentation for a full description of netflow commands Note: Netflow version v5 and v7 have 32 bit counter values. The number of packets or bytes may overflow this value, within the flow-cache timeout on very busy routers. To prevent overflow, you may consider to reduce the flow-cache timeout to lower values. All nfdump tools use 64 bit counters internally, which means, all aggregated values are correctly reported. The binary format of the data files is netflow version independent. For speed reasons the binary format is machine architecture dependent, and as such can not be exchanged between little and big endian systems. Internally nfdump does all processing IP protocol independent, which means everything works for IPv4 as well as IPv6 addresses. See the nfdump(1) man page for details. netflow version 9 and infix: nfcapd supports a large range of netflow v9 and ipfix tags. Version 1.7 of nfdump also supports FNF - flexible netflow, subtemplates and understands a few specific exporters such as **yaf**. ### sfcpad This collector collects sflow https://www.sflow.org exports. It is largely identical to nfcapd except it only understands sflow packets. ### nfpcapd This collector is able to listen on a host interface and generates netflow data from the network data stream on that interface. It make use of **PACKET_RX_RING** to read packets on an interface device level (**TPACKETV3**) on Linux hosts or of the **BPF** interface - Berkeley Packet Filter on ***BSD** hosts which provides raw access to data link layers. Nfpcapd builds an internal netflow cache which is periodically written to disk or forwarded to an nfcapd server. As a special feature, nfpcpad may collect the first few bytes of a network connection, if requested to do so ( **-o payload**), which allows filter and evaluate the flows with nfdump later. Listen on eth0 and store the flows locally. Set flow cache active timeout to 60s, inactive tiemout to 30s: ``` nfpcapd -D -S 2 -w /var/flows -i eth0 -e 60,30 -u daemon -g daemon ``` Listen on eth0 and forward flow data to nfcapd running on a remote host. Add tunnel infos, MAC addr, vlan labels and first packet payload to the flows: ``` nfpcapd -D -S 2 -H 192.168.168.40 -i eth0 -e 60,30 -o fat,payload -u daemon -g daemon ``` In order to evaluate the payload, nfdump has some simple payload decoders for DNS, ja3, ja3s, ja4 and a few other. Alternatively nfpcapd can also convert existing cap files into flow data: ``` nfpcapd -S 2 -w /var/flows -r pcapfile.pcap -e 60,30 -o fat,payload ``` --- ### Flowset record types Links Extensions: nfcapd supports a large number of v9 tags. It automatically add extensions to store data for v9/IPFIX elements which are supported. ### Sampling By default, the sampling rate is set to 1 (unsampled) or to any given value specified by the **-s** cmd line option. If sampling information is found in the netflow stream, it overwrites the default value. Sampling is automatically recognised when announced in v9/ipfix option templates with tags set (**#302, #304, #305, #306**), ( **#48, #49, #50** ), ( **#34, #35**)or in the unofficial v5 header hack. The sampling data is stored in the sampling **PacketInterval/PacketSpace** model. If announced differently, it is converted accordingly. Note: Not all platforms (or vendor software versions) support exporting sampling information in netflow data, even if sampling is configured. The number of bytes/packets in each netflow record is automatically multiplied by the sampling rate. The total number of flows is not changed as this is not accurate enough. (Small flows versus large flows) If you like this project your company may consider sponsoring it :) https://github.com/sponsors/phaag nfdump-1.7.5/UpdateChangelog.sh000077500000000000000000000000711470623444400164140ustar00rootroot00000000000000#!/bin/sh git log --pretty="- %h %as %d %s" > ChangeLog nfdump-1.7.5/autogen.sh000077500000000000000000000041451470623444400150320ustar00rootroot00000000000000#!/bin/sh set -e case "$(uname)" in Darwin) LIBTOOLIZE=${LIBTOOLIZE:-glibtoolize} ;; *) LIBTOOLIZE=${LIBTOOLIZE:-libtoolize} ;; esac AUTORECONF=${AUTORECONF:-autoreconf} ACLOCAL=${ACLOCAL:-aclocal} AUTOCONF=${AUTOCONF:-autoconf} AUTOHEADER=${AUTOHEADER:-autoheader} AUTOMAKE=${AUTOMAKE:-automake} # Check we have all tools installed check_command() { command -v "${1}" > /dev/null 2>&1 || { >&2 echo "autogen.sh: could not find \`$1'. \`$1' is required to run autogen.sh." exit 1 } } check_command "$LIBTOOLIZE" check_command "$AUTORECONF" check_command "$ACLOCAL" check_command "$AUTOCONF" check_command "$AUTOHEADER" check_command "$AUTOMAKE" # Absence of pkg-config or misconfiguration can make some odd error # messages, we check if it is installed correctly. See: # https://blogs.oracle.com/mandy/entry/autoconf_weirdness # # We cannot just check for pkg-config command, we need to check for # PKG_* macros. The pkg-config command can be defined in ./configure, # we cannot tell anything when not present. check_pkg_config() { grep -q '^AC_DEFUN.*PKG_CHECK_MODULES' aclocal.m4 || { cat <&2 autogen.sh: could not find PKG_CHECK_MODULES macro. Either pkg-config is not installed on your system or \`pkg.m4' is missing or not found by aclocal. If \`pkg.m4' is installed at an unusual location, re-run \`autogen.sh' by setting \`ACLOCAL_FLAGS': ACLOCAL_FLAGS="-I /share/aclocal" ./autogen.sh EOF exit 1 } } echo "autogen.sh: reconfigure with autoreconf" ${AUTORECONF} -vif -I m4 || { echo "autogen.sh: autoreconf has failed ($?), let's do it manually" [ -f ./configure.ac ] || [ -f ./configure.in ] || continue echo "autogen.sh: configure `basename $PWD`" ${ACLOCAL} -I m4 ${ACLOCAL_FLAGS} check_pkg_config ${LIBTOOLIZE} --automake --copy --force ${ACLOCAL} -I m4 ${ACLOCAL_FLAGS} ${AUTOCONF} --force ${AUTOHEADER} ${AUTOMAKE} --add-missing --copy --force-missing } echo "autogen.sh: for the next step, run './configure' [or './configure --help' to check available options]" exit 0 nfdump-1.7.5/bootstrap000077700000000000000000000000001470623444400167562autogen.shustar00rootroot00000000000000nfdump-1.7.5/configure.ac000066400000000000000000000472541470623444400153270ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_REVISION($Revision: 244 $)dnl AC_INIT([nfdump],[1.7.5],[peter@people.ops-trust.net]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_MACRO_DIR([m4]) if test "x$CFLAGS" = "x"; then CFLAGS="-g -O3" fi # Checks for programs. AC_PROG_CC([clang gcc]) AX_CHECK_C17 AX_APPEND_FLAG([-Wall], [CFLAGS]) AX_APPEND_FLAG([-Wstrict-prototypes], [CFLAGS]) AX_APPEND_FLAG([-Wmissing-prototypes], [CFLAGS]) AX_APPEND_FLAG([-Wmissing-declarations], [CFLAGS]) AX_APPEND_FLAG([-Wmissing-noreturn], [CFLAGS]) AX_APPEND_FLAG([-fno-strict-aliasing], [CFLAGS]) LT_INIT dnl dnl Check to see if -latomic is need for GCC atomic built-ins. AC_DEFUN([OVS_CHECK_ATOMIC_LIBS], [AC_SEARCH_LIBS([__atomic_load_8], [atomic], [ATOMIC_LIBS=-latomic])]) AC_ARG_ENABLE(devel, [ --enable-devel compile debug and development code into nfdump; default is NO]) # Which way is better? if test "${enable_devel}" = "yes" ; then CFLAGS="$CFLAGS -DDEVEL" fi AC_ARG_ENABLE(nsel, [ --enable-nsel compile nfdump, to read and process ASA/NSEL/NEL event data; default is NO]) if test "${enable_nsel}" = "yes" ; then CFLAGS="$CFLAGS -DNSEL" fi AC_ARG_ENABLE(jnat, [ --enable-jnat compile nfdump, to read and process Junos NAT event logging; default is NO]) if test "${enable_jnat}" = "yes" ; then CFLAGS="$CFLAGS -DNSEL -DJUNOS" fi if test "${enable_nsel}" = "yes" -a "${enable_jnat}" = "yes"; then AC_MSG_ERROR(You can use only one of --enable-nsel or --enable-jnat. CISCO and Juniper are not compatible.) fi AC_ARG_ENABLE(nel, [ --enable-nel (deprecated) compile nfdump, to read and process NAT/NSEL/NEL event data; default is NO]) if test "${enable_nel}" = "yes" ; then CFLAGS="$CFLAGS -DNSEL" fi AC_PROG_YACC AC_PROG_LEX(noyywrap) which $LEX > /dev/null 2>&1 if test $? = 1; then AC_MSG_ERROR(No lex or flex found on system) fi AC_PROG_INSTALL if test "x$ac_cv_prog_LEX" = "xflex"; then LFLAGS=-i fi AC_ARG_WITH(lz4path, [ --with-lz4path=PATH Expect liblz4 installed in PATH; default /usr/local], if test "x$with_lz4path" != "xno" ; then CPPFLAGS="${CPPFLAGS} -I${with_lz4path}/include" LDFLAGS="${LDFLAGS} -L${with_lz4path}/lib" fi , ) AC_ARG_WITH(zstdpath, [ --with-zstdpath=PATH Expect libzstd installed in PATH; default /usr/local], if test "x$with_zstdpath" != "xno" ; then CPPFLAGS="${CPPFLAGS} -I${with_zstdpath}/include" LDFLAGS="${LDFLAGS} -L${with_zstdpath}/lib" fi , ) AC_ARG_WITH(bz2path, [ --with-bz2path=PATH Expect libbz2 installed in PATH; default /usr/local], if test "x$with_bz2path" != "xno" ; then CPPFLAGS="${CPPFLAGS} -I${with_bz2path}/include" LDFLAGS="${LDFLAGS} -L${with_bz2path}/lib" fi , ) # Check if we need to build the flow-tools converter # FIXME? This should use flow-tools-dev if possible, not local sources.. AC_ARG_WITH(ftpath, [ --with-ftpath=PATH Expect flow-tool sources in PATH; default /usr/local/flow-tools/], if test "x$with_ftpath" = "xyes" ; then WHERE_FTPATH="/usr/local/flow-tools/" else WHERE_FTPATH=$with_ftpath fi , WHERE_FTPATH="/usr/local/flow-tools/" ) AC_ARG_WITH(rrdpath, [ --with-rrdpath=PATH Expect RRD installed in PATH; default /usr/local], if test "x$with_rrdpath" = "xyes" ; then CPPFLAGS="${CPPFLAGS} -I/usr/local/include" LDFLAGS="${LDFLAGS} -L/usr/local/lib" else CPPFLAGS="${CPPFLAGS} -I${with_rrdpath}/include" LDFLAGS="${LDFLAGS} -L${with_rrdpath}/lib" fi , ) AC_ARG_WITH(pcappath, [ --with-pcappath=PATH Expect libpcap installed in PATH; default /usr/local], if test "x$with_pcappath" = "xyes" ; then CPPFLAGS="${CPPFLAGS} -I/usr/local/include" LDFLAGS="${LDFLAGS} -L/usr/local/lib" else CPPFLAGS="${CPPFLAGS} -I${with_pcappath}/include" LDFLAGS="${LDFLAGS} -L${with_pcappath}/lib" fi , ) #Tidz up? esp not using in source dist flow-tools AC_ARG_ENABLE(ftconv, [ --enable-ftconv Build the flow-tools to nfdump converter; default is NO]) AS_IF([test "x$enable_ftconv" = "xyes"], AC_CHECK_LIB(z, zlibVersion,, AC_MSG_ERROR(Link with "-lz" failed! (Need zlib >= 1.0.2)) ) if test -d "$WHERE_FTPATH"; then if test ! -f "$WHERE_FTPATH/include/ftlib.h"; then AC_MSG_ERROR(ftlib.h file not found in flow-tools directory '$WHERE_FTPATH'. Use --with-ftpath=PATH) fi if test -f "$WHERE_FTPATH/lib/libft.a" -o -f "$WHERE_FTPATH/lib64/libft.a" -o -f "$WHERE_FTPATH/lib/libft.so" -o -f "$WHERE_FTPATH/lib64/libft.so"; then FT_INCLUDES="-I$WHERE_FTPATH/include -I$WHERE_FTPATH/lib" FT_LDFLAGS="-L$WHERE_FTPATH/lib" else AC_MSG_ERROR(libft.a not found in flow-tools directory '$WHERE_FTPATH'. Build flow tools first) fi else AC_MSG_ERROR(flow-tools directory '$WHERE_FTPATH' does not exists. Use --with-ftpath=PATH) fi build_ftconv="yes" , build_ftconv="no" ) AM_CONDITIONAL([FT2NFDUMP], [test "x$build_ftconv" = "xyes"]) AC_ARG_ENABLE(maxmind, [ --enable-maxmind Build geolookup for MaxMind GeoDB; default is NO], build_maxmind="yes" AM_CONDITIONAL([MAXMIND], true) , build_maxmind="no" AM_CONDITIONAL([MAXMIND], false) ) AC_ARG_ENABLE(tor, [ --enable-tor Build torlookup for tor onion lookups; default is NO], build_tor="yes" AM_CONDITIONAL(TORLOOKUP, true) CFLAGS="$CFLAGS -DBUILDTOR" , build_tor="no" AM_CONDITIONAL(TORLOOKUP, false) ) AC_ARG_ENABLE(ja4, [ --enable-ja4 Build with ja4+ fingerprinting code; https://github.com/FoxIO-LLC/ja4/blob/main/LICENSE; default is NO], build_ja4="yes" AM_CONDITIONAL(JA4, true) CFLAGS="$CFLAGS -DBUILDJA4" , build_ja4="no" AM_CONDITIONAL(JA4, false) ) AC_ARG_ENABLE(nfprofile, [ --enable-nfprofile Build nfprofile used by NfSen; default is NO]) AS_IF([test "x$enable_nfprofile" = "xyes"], [ AC_CHECK_LIB(rrd, rrd_update,[ cat >>config.h <<_ACEOF #define HAVE_LIBRRD 1 _ACEOF RRD_LIBS="-lrrd" saved_LIBS=$LIBS LIBS="${LIBS} -lrrd" AC_SUBST(RRD_LIBS) ] , AC_MSG_ERROR(Can not link librrd. Please specify --with-rrdpath=.. configure failed! )) AC_CHECK_HEADERS([rrd.h]) if test "$ac_cv_header_rrd_h" = yes; then build_nfprofile="yes" else AC_MSG_ERROR(Required rrd.h header file not found!) fi AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include int main(int argc, char **argv) { char *s = rrd_strversion(); if ( s != NULL && strlen(s) == 5 ) { if ( s[0] == '1' && s[1] == '.' ) { int ver = s[2] - 0x30; if ( argc > 1 ) printf("%d\n", ver); } } else { exit(255); } return 0; } ]]) ],rrdversion=$(./conftest$EXEEXT print 2>&1) LIBS=$saved_LIBS AC_DEFINE_UNQUOTED(HAVE_RRDVERSION, $rrdversion, [ ]) , AC_MSG_ERROR(Can not load rrd library. Not in loader search path! )) ] , build_nfprofile="no" ) AM_CONDITIONAL([NFPROFILE], [test "x$build_nfprofile" = "xyes"]) AC_ARG_ENABLE(influxdb, [AS_HELP_STRING([--enable-influxdb], [enable stats to influxdb (default is no)])]) AS_IF([test "x$enable_influxdb" = xyes], [ PKG_CHECK_MODULES([curl], [libcurl],, [AC_MSG_ERROR([No pkg-config for libcurl])]) AC_SUBST(CURL_CFLAGS) AC_SUBST(CURL_LIBS) #CFLAGS="${CFLAGS} ${CURL_CFLAGS}" #LIBS="${LIBS} ${LIBS_CFLAGS}" AC_CHECK_LIB([curl], [curl_easy_init],,[AC_MSG_ERROR([libcurl required!])]) AC_CHECK_LIB([curl], [curl_easy_escape],,[AC_MSG_ERROR([libcurl required!])]) AC_CHECK_LIB([curl], [curl_easy_setopt],,[AC_MSG_ERROR([libcurl required!])]) AC_CHECK_LIB([curl], [curl_easy_cleanup],,[AC_MSG_ERROR([libcurl required!])]) AC_CHECK_LIB([curl], [curl_free],,[AC_MSG_ERROR([libcurl required!])]) AC_DEFINE_UNQUOTED(HAVE_INFLUXDB, 1, [enable stats to influxdb]) AM_CONDITIONAL(INFLXDB, true) ], AM_CONDITIONAL(INFLXDB, false) ) AC_ARG_ENABLE(nftrack, [ --enable-nftrack Build nftrack used by PortTracker; default is NO]) AS_IF([test "x$enable_nftrack" = "xyes"], [ AC_CHECK_LIB(rrd, rrd_update,[ cat >>config.h <<_ACEOF #define HAVE_LIBRRD 1 _ACEOF RRD_LIBS="-lrrd" AC_SUBST(RRD_LIBS) ] , AC_MSG_ERROR(Can not link librrd. Please specify --with-rrdpath=.. configure failed! )) AC_CHECK_HEADERS([rrd.h]) if test "$ac_cv_header_rrd_h" = yes; then AM_CONDITIONAL(NFTRACK, true) else AC_MSG_ERROR(Required rrd.h header file not found!) fi AC_RUN_IFELSE( [ AC_LANG_PROGRAM( [[ #include #include ]], [[ rrd_value_t d; ]]) ],, AC_MSG_ERROR(Can not load rrd library. Not in loader search path! )) ] , AM_CONDITIONAL(NFTRACK, false) ) AC_ARG_ENABLE(sflow, [ --enable-sflow Build sflow collector sfcpad; default is NO]) build_sflow="$enable_sflow" # No dependencies AM_CONDITIONAL(SFLOW, test "$build_sflow" = yes) AC_ARG_ENABLE(readpcap, [ --enable-readpcap Build nfcapd collector to read from pcap file instead of network data; default is NO]) AM_CONDITIONAL(READPCAP, test "$enable_readpcap" = yes) AC_ARG_ENABLE(nfpcapd, [ --enable-nfpcapd Build nfpcapd collector to create netflow data from interface or pcap data; default is NO]) AS_IF([test "x$enable_nfpcapd" = "xyes"], [ AC_CHECK_LIB(pcap, pcap_create,[ cat >>config.h <<_ACEOF #define HAVE_LIBPCAP 1 _ACEOF PCAP_LIBS="-lpcap" AC_SUBST(PCAP_LIBS) ] , AC_MSG_ERROR(Can not link libpcap. Please specify --with-pcappath=.. configure failed! )) AC_CHECK_LIB(pcap, pcap_dump_open_append, AM_CONDITIONAL(HAVEPCAPAPPEND, true), AM_CONDITIONAL(HAVEPCAPAPPEND, false)) AC_CHECK_HEADERS([pcap.h]) if test "$ac_cv_header_pcap_h" = yes; then build_nfpcapd="yes" else AC_MSG_ERROR(Required pcap.h header file not found!) fi AC_RUN_IFELSE( [ AC_LANG_PROGRAM( [[ #include #include ]], [[ struct pcap_pkthdr p; ]]) ],, AC_MSG_ERROR(Can not load pcap library. Not in loader search path! )) ] , AM_CONDITIONAL(HAVEPCAPAPPEND, false) build_nfpcapd="no" ) AM_CONDITIONAL(BUILDNFPCAPD, test "$build_nfpcapd" = yes) ## Check for BSD socket or TPACKET_V3 AM_COND_IF([BUILDNFPCAPD], [AC_CHECK_HEADERS([net/bpf.h], [AM_CONDITIONAL(BSDBPF, true) AM_CONDITIONAL(TPACKETV3, false) AM_CONDITIONAL(PLAINPCAP, false)], [AC_CHECK_DECL([TPACKET_V3], [AM_CONDITIONAL(TPACKETV3, true) AM_CONDITIONAL(BSDBPF, false) AM_CONDITIONAL(PLAINPCAP, false)], [AM_CONDITIONAL(PLAINPCAP, true) AM_CONDITIONAL(BSDBPF, false) AM_CONDITIONAL(TPACKETV3, false)], [[ #include #include ]])] )], [AM_CONDITIONAL(BSDBPF, false) AM_CONDITIONAL(TPACKETV3, false) AM_CONDITIONAL(PLAINPCAP, false)], ) OVS_CHECK_ATOMIC_LIBS AX_PTHREAD([],AC_MSG_ERROR(No valid pthread configuration found)) LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" # Check for structures AC_CHECK_MEMBER([struct sockaddr.sa_len], AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, define if socket address structures have length fields),,[ #include #include ]) AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family, struct sockaddr_storage.__ss_family, struct sockaddr_storage.ss_len, struct sockaddr_storage.__ss_len, struct sockaddr.sa_len], [], [], [ #include #include ]) #AC_SUBST(opt_objects) AC_SUBST(FT_INCLUDES) AC_SUBST(FT_LDFLAGS) AC_SUBST(LFLAGS) # Checks for libraries. AC_CHECK_FUNCS(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname,,[AC_CHECK_LIB(socket,gethostbyname)])]) AC_CHECK_FUNCS(setsockopt,,[AC_CHECK_LIB(socket,setsockopt)]) dnl checks for fpurge or __fpurge AC_CHECK_FUNCS(fpurge __fpurge) AC_MSG_CHECKING([if htonll is defined]) dnl # Check for htonll AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include ]], [[ return htonll(0); ]] )], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_HTONLL, 1, [Define to 1 if the function (or macro) htonll exists.]) ], [ AC_MSG_RESULT(no) ] ) # Checks for header files. AC_HEADER_DIRENT # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. AC_CHECK_INCLUDES_DEFAULT AC_PROG_EGREP AC_CHECK_HEADERS(stdio_ext.h) AC_CHECK_HEADERS([nameser8_compat.h]) AC_CHECK_HEADERS([features.h arpa/inet.h fcntl.h netinet/in.h fts.h stdint.h stdlib.h stddef.h string.h sys/socket.h syslog.h unistd.h iso/limits_iso.h]) AC_CHECK_HEADERS(pcap-bpf.h net/bpf.h net/ethernet.h net/ethertypes.h net/if_pflog.h) AC_CHECK_HEADERS(sys/types.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h netdb.h resolv.h netinet/in_systm.h, [], [], [[#ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_NETINET_IN_H # include /* inet_ functions / structs */ #endif #ifdef HAVE_ARPA_NAMESER_H # include /* DNS HEADER struct */ #endif #ifdef HAVE_NETDB_H # include #endif]]) if test "x$with_lz4path" != "xno"; then AC_CHECK_HEADER(lz4.h, [ AC_CHECK_LIB(lz4, LZ4_compress, [ AC_DEFINE(HAVE_LZ4, 1, [Define if you have lz4 library]) LIBS="$LIBS -llz4" AM_CONDITIONAL(LZ4EMBEDDED, false) use_lz4="yes" ], [ AM_CONDITIONAL(LZ4EMBEDDED, true) use_lz4="embedded" ]) ], [ AM_CONDITIONAL(LZ4EMBEDDED, true) use_lz4="embedded" ] ) else AM_CONDITIONAL(LZ4EMBEDDED, true) use_lz4="embedded" fi if test "x$with_bz2path" != "xno"; then AC_CHECK_HEADER(bzlib.h, [ AC_CHECK_LIB(bz2, BZ2_bzCompressInit, [ AC_DEFINE(HAVE_BZIP2, 1, [Define if you have bz2 library]) LIBS="$LIBS -lbz2" AM_CONDITIONAL(HAVE_BZIP2, true) use_bzip2="yes" ], [ AM_CONDITIONAL(HAVE_BZIP2, false) use_bzip2="no" ]) ], [ AM_CONDITIONAL(HAVE_BZIP2, false) use_bzip2="no" ] ) else AM_CONDITIONAL(HAVE_BZIP2, false) use_bzip2="disabled" fi if test "x$with_zstdpath" != "xno"; then AC_CHECK_HEADER(zstd.h, [ AC_CHECK_LIB(zstd, ZSTD_decompress, [ AC_DEFINE(HAVE_ZSTD, 1, [Define if you have zstd library]) LIBS="$LIBS -lzstd" AM_CONDITIONAL(HAVE_ZSTD, true) use_zstd="yes" ], [ AM_CONDITIONAL(HAVE_ZSTD, false) use_zstd="no" ]) ], [ AM_CONDITIONAL(HAVE_ZSTD, false) use_zstd="no" ] ) else AM_CONDITIONAL(HAVE_ZSTD, false) use_zstd="disabled" fi if test "$ac_cv_header_fts_h" != yes; then FTS_OBJ=fts_compat.o AM_CONDITIONAL(NEEDFTSCOMPAT, true) else AM_CONDITIONAL(NEEDFTSCOMPAT, false) fi # Checks for typedefs, structures, and compiler characteristics. AC_CHECK_SIZEOF(void *) AC_C_CONST AC_C_INLINE AC_C_BIGENDIAN AC_TYPE_PID_T AC_TYPE_SIZE_T AC_STRUCT_TM AC_HEADER_STDBOOL # Checks for library functions. AC_FUNC_CLOSEDIR_VOID AC_FUNC_FORK AC_FUNC_MALLOC AC_FUNC_MKTIME AC_FUNC_REALLOC AC_FUNC_STAT AC_FUNC_STRFTIME AC_CHECK_FUNCS(inet_ntoa socket strchr strdup strerror strrchr strstr scandir) AC_CHECK_FUNCS(setresgid setresuid) dnl The res_search may be in libsocket as well, and if it is dnl make sure to check for dn_skipname in libresolv, or if res_search dnl is in neither of these libs, still check for dn_skipname in libresolv AC_CHECK_LIB(socket, res_search, [ AC_CHECK_LIB(resolv, dn_skipname) AC_CHECK_LIB(resolv, __dn_skipname) LIBS="$LIBS -lsocket" AC_DEFINE(HAVE_LIBSOCKET,1,[ ]) ], [ AC_CHECK_LIB(resolv, res_search, [ LIBS="$LIBS -lresolv" AC_DEFINE(HAVE_LIBRESOLV,1,[ ]) ], [ AC_CHECK_LIB(resolv, dn_skipname) AC_CHECK_LIB(resolv, __dn_skipname) ]) ]) # lzo compression requirements AC_CHECK_TYPE(ptrdiff_t, long) AC_TYPE_SIZE_T AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF(__int64) AC_CHECK_SIZEOF(void *) AC_CHECK_SIZEOF(size_t) AC_CHECK_SIZEOF(time_t) AC_CHECK_SIZEOF(ptrdiff_t) AC_C_CONST AC_CHECK_FUNCS(memcmp memcpy memmove memset) AC_MSG_CHECKING([for union semun]) AC_CACHE_VAL(ac_cv_struct_semun, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #include ; ]], [[ union semun semdat; ]])],[ac_cv_struct_semun=yes],[ac_cv_struct_semun=no ]) ] ) AC_MSG_RESULT($ac_cv_struct_semun) if test "$ac_cv_struct_semun" = "yes"; then AC_DEFINE(HAVE_SEMUN, 1, [Define if sys/sem.h defines struct semun]) fi AC_MSG_CHECKING([whether netinet/ip.h needs extra include]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #include ; ]], [[ ]])],[ac_fix_include_order=no],[ac_fix_include_order=yes] ) AC_MSG_RESULT($ac_fix_include_order) if test "$ac_fix_include_order" = "yes"; then AC_DEFINE(FIX_INCLUDE, 1, [Fix sys/stat.h include]) fi AC_MSG_CHECKING([for correct include order in ip.h ]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #include ; ]], [[ ]])],[ac_fix_include_order=no],[ac_fix_include_order=yes] ) AC_MSG_RESULT($ac_fix_include_order) if test "$ac_fix_include_order" = "yes"; then AC_DEFINE(FIX_INCLUDE, 1, [Fix sys/stat.h include]) fi AC_MSG_CHECKING(for the %z format string in printf()) AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include int main() { int i; size_t s; char string[16]; s = 12345; i = snprintf(string,16,"%zu", s); return i == 5 ? 0 : 1; } ]])],[ AC_MSG_RESULT(yes) AC_DEFINE([HAVE_SIZE_T_Z_FORMAT], [1], [Define to 1 if you have a printf() that supports the %z format string.]) ],[ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(no) ]) AC_PATH_PROG([DOXYGEN], [doxygen], []) AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) AM_COND_IF([HAVE_DOXYGEN], AC_CONFIG_FILES([doc/Doxyfile])) AC_CONFIG_FILES([doc/Makefile]) AC_OUTPUT AC_CONFIG_FILES([Makefile src/libnffile/Makefile src/libnfdump/Makefile src/Makefile src/test/Makefile src/output/Makefile src/netflow/Makefile src/collector/Makefile src/maxmind/Makefile src/tor/Makefile src/nfdump/Makefile src/nfcapd/Makefile src/nfexpire/Makefile src/nfanon/Makefile src/nfreplay/Makefile src/nfreader/Makefile src/inline/Makefile src/include/Makefile man/Makefile ]) if test "x$enable_ftconv" = "xyes"; then AC_CONFIG_FILES([src/ft2nfdump/Makefile]) fi if test "x$build_sflow" = "xyes"; then AC_CONFIG_FILES([src/sflow/Makefile]) else build_sflow="no" fi if test "x$build_nfpcapd" = "xyes"; then AC_CONFIG_FILES([src/nfpcapd/Makefile]) fi if test "x$build_nfprofile" = "xyes"; then AC_CONFIG_FILES([src/nfsen/Makefile]) fi AC_OUTPUT echo "" echo "----------------------------------" echo " Build Settings for ${PACKAGE_TARNAME} v${PACKAGE_VERSION}" echo "----------------------------------" echo " host type = $host_os" echo " install dir = $prefix" echo " CC = $CC" echo " CFLAGS = $AM_CFLAGS $CFLAGS" echo " CPPFLAGS = $AM_CPPFLAGS $CPPFLAGS" echo " LDFLAGS = $AM_LDFLAGS $LDFLAGS" echo " LIBS = $LIBS" echo " Enable liblz4 = $use_lz4" echo " Enable libbz2 = $use_bzip2" echo " Enable libzstd = $use_zstd" echo " Enable ja4 = $build_ja4" echo " Build geolookup = $build_maxmind" echo " Build torlookup = $build_tor" echo " Build sflow = $build_sflow" echo " Build nfpcapd = $build_nfpcapd" echo " Build nfprofile = $build_nfprofile" echo " Build ft2nfdump = $build_ftconv" echo "----------------------------------" echo "" echo " You can run ./make now." echo "" if test "x$build_ja4" = "xyes"; then echo "* Ja4 code enabled." echo "* JA4: TLS Client Fingerprinting is open-source, BSD 3-Clause" echo "* All other JA4+ additions are licensed under the FoxIO License 1.1" echo "* See https://github.com/FoxIO-LLC/ja4/blob/main/LICENSE" echo "* as well as the license FAQ:" echo "* https://github.com/FoxIO-LLC/ja4/blob/main/License%20FAQ.md" fi echo "" echo "* Many thanks for using nfdump tools" echo "* See https://github.com/phaag/nfdump/issues" echo "* For bug open a ticket or send a bug report to peter@people.ops-trust.net" nfdump-1.7.5/doc/000077500000000000000000000000001470623444400135725ustar00rootroot00000000000000nfdump-1.7.5/doc/Doxyfile.in000066400000000000000000003423041470623444400157130ustar00rootroot00000000000000# Doxyfile 1.9.3 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the configuration # file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = nfdump # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = @VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = "NetFlow storage and analysis tools" # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be # interpreted by doxygen. # The default value is: NO. JAVADOC_BANNER = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # By default Python docstrings are displayed as preformatted text and doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the # doxygen's special commands can be used and the contents of the docstring # documentation blocks is shown as doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". Note that you cannot put \n's in the value part of an alias # to insert newlines (in the resulting output). You can put ^^ in the value part # of an alias to insert a newline as if a physical newline was in the original # file. When you need a literal { or } or , in the value part of an alias you # have to escape them by means of a backslash (\), this can lead to conflicts # with the commands \{ and \} for these it is advised to use the version @{ and # @} or use a double escape (\\{ and \\}) ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice # sources only. Doxygen will then generate output that is more tailored for that # language. For instance, namespaces will be presented as modules, types will be # separated into more groups, etc. # The default value is: NO. OPTIMIZE_OUTPUT_SLICE = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. # Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 5 # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 # The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, # which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual # methods of a class will be included in the documentation. # The default value is: NO. EXTRACT_PRIV_VIRTUAL = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If this flag is set to YES, the name of an unnamed parameter in a declaration # will be determined by the corresponding definition. By default unnamed # parameters remain unnamed in the output. # The default value is: YES. RESOLVE_UNNAMED_PARAMS = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = YES # With the correct setting of option CASE_SENSE_NAMES doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that # are not case sensitive the option should be be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On # Windows (including Cygwin) and MacOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_HEADERFILE tag is set to YES then the documentation for a class # will show which file needs to be included to use the class. # The default value is: YES. SHOW_HEADERFILE = YES # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete # function parameter documentation. If set to NO, doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. # Possible values are: NO, YES and FAIL_ON_WARNINGS. # The default value is: NO. WARN_AS_ERROR = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). In case the file specified cannot be opened for writing the # warning and error messages are written to standard error. When as file - is # specified the warning and error messages are written to standard output # (stdout). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = @top_srcdir@/src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, # *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C # comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, # *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ *.h # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = Makefile.* \ ChangeLog \ CHANGES \ CHANGES.* \ README \ README.* \ *.png \ AUTHORS \ DESIGN \ DESIGN.* \ *.desktop \ DESKTOP* \ COMMENTS \ HOWTO \ magic \ NOTES \ TODO \ THANKS # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = NO # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML # page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To # create a documentation set, doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag determines the URL of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDURL = # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with # a.o. the download links, offline the HTML help workshop was already many years # in maintenance mode). You can download the HTML help workshop from the web # archives at Installation executable (see: # http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo # ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path # including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an # example, the default style sheet generated by doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the # FULL_SIDEBAR option determines if the side bar is limited to only the treeview # area (value NO) or if it should extend to the full height of the window (value # YES). Setting this to YES gives a layout similar to # https://docs.readthedocs.io with more room for contents, but less room for the # project logo, title, and description. If either GENERATE_TREEVIEW or # DISABLE_INDEX is set to NO, this option has no effect. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. # Possible values are: png (the default) and svg (looks nicer but requires the # pdf2svg or inkscape tool). # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # With MATHJAX_VERSION it is possible to specify the MathJax version to be used. # Note that the different versions of MathJax have different requirements with # regards to the different settings, so it is possible that also other MathJax # settings have to be changed when switching between the different MathJax # versions. # Possible values are: MathJax_2 and MathJax_3. # The default value is: MathJax_2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_VERSION = MathJax_2 # When MathJax is enabled you can set the default output format to be used for # the MathJax output. For more details about the output format see MathJax # version 2 (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 # (see: # http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported # for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. The default value is: # - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 # - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # for MathJax version 2 (see # https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # For example for MathJax version 3 (see # http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): # MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /