It has been almost a year now since our last release, we realize this is quite some time, but it has paid off. As most development on netsniff-ng happened during spare time, we really haven't been lazy. ;-) Furthermore, Tobias Klauser has joined as a new maintainer for netsniff-ng. It is now maintained by Tobias Klauser and Daniel Borkmann together.
So here's a rc1 release that we throw at you with more than 1,000 changes. During that time, netsniff-ng has matured quite a lot. Expect a few smaller follow-up rc releases in the near future before the final 0.5.8 will be released. There's still some work on curvetun that we need to do. In case you don't need curvetun, feel free to use this one already. We hope we haven't forgotten some of the highlights to mention. In any case, just go ahead and try it out. Thanks ! -- netsniff-ng 0.5.8-rc1 has been released to the public (http://netsniff-ng.org/). It can be fetched via Git: git clone git://github.com/borkmann/netsniff-ng.git git checkout v0.5.8-rc1 Or via HTTP: wget http://pub.netsniff-ng.org/netsniff-ng/netsniff-ng-0.5.8-rc1.tar.gz The release can be verified via Git (see README): git tag -v v0.5.8-rc1 Major high-level changes since the last release are: 1) Introduction of a new build system based on classical make and a customized configure file, which eventually removes the previous cmake system once and for all and avoids using autotools. Support for cross-compilation and various other options such as debug, distribution or hardening builds. From Tobias Klauser and Daniel Borkmann. 2) Inclusion of the mausezahn high-level traffic generator. This one is unmaintained, so we decided to take up maintainer-ship and continue development on it. It's currently in our staging area as the code is not yet in a quality that we accept, but that will change over the next releases. From Tobias Klauser and Daniel Borkmann. 3) Complete rewrite of all man-pages and removal of Documentation section. All important things that need to be said can now be found in our man-pages. Written by Daniel Borkmann, many many improvements by Tobias Klauser, Jon Schipp, Kartik Mistry and Stephen Wadeley. 4) Initial zsh autocompletion support for all tools. From Hideo Hattori. 5) PF_PACKET TPACKET_V3 conversion of netsniff-ng pcap capturing handler. This results in a better capturing throughout as zero-copy data is stored linear instead of slot-wise, which will result in fewer page cache misses. From Daniel Borkmann. 6) ifpps now can handle an arbitrary number of CPUs and no longer fails on systems with more than 32 CPUs. By default now only the data for the 5 most-used CPUs is displayed, as well as the least-used CPU and average values (median can optionally be displayed). From Tobias Klauser and Daniel Borkmann. 7) Support for different pcap types (tcpdump-capable, tcpdump-capable with ns resolution, Alexey Kuznetzov's pcap format, netsniff-ng's pcap format), introduction of a netsniff-ng internal pcap format with the following features: timeval in nanoseconds, the original packet length, the captured packet length, the timestamp hw/sw source, the interface index (sll_ifindex), the packet's protocol (sll_protocol), the packet type (sll_pkttype) and the hardware type (sll_hatype) and support for multiple link-types, from Daniel Borkmann. 8) Add support for raw 802.11 in netsniff-ng and in trafgen, which also allows injection, from Daniel Borkmann. Next to that we have added a packet dissector for raw 802.11 frames. It is currently in an initial stage and will be further developed, from Markus Amend. 9) Add a new dissector for the Link Layer Discovery protocol, from Tobias Klauser. 10) Make astraceroute independant of active geoip lookups to Team CYMRU and rather use geoip library in order to not "leak" any traffic, from Daniel Borkmann. 11) Geoip database update mechanism for astraceroute, flowtop and netsniff-ng, from Daniel Borkmann. 12) Let netsniff-ng's dissector use geoip libary, from Daniel Borkmann. 13) Added several Linux extensions for bpfc and the possibility to use cpp as a preprocessor like in trafgen. Moreover, added support for different output formats (e.g. for usage with xt_bpf). From Daniel Borkmann. 14) Minimal stand-alone BPF JIT image disassembler, from Daniel Borkmann. 15) Support for tcpdump-like high-level filter expressions next to bpfc filters in netsniff-ng, from Daniel Borkmann. 16) trafgen got a new, powerful configuration language, it's configs can be passed through cpp, and it is now multithreaded. Moreover, trafgen also got a built-in protocol fuzzer. From Daniel Borkmann. 17) Last but not least, numerous code cleanups and code simplifications all over the place as well as smaller features not mentioned here, from Tobias Klauser and Daniel Borkmann, and smaller fixes by Stefan Seering, Jesper Dangaard Brouer, Jim Binder, Peter Stuge, Teguh, Scott Moeller, Jon Schipp. Contributions since last release: 914 Daniel Borkmann 158 Tobias Klauser 49 Markus Amend 16 Stephen Wadeley 13 Jon Schipp 6 Scott Moeller 4 Kartik Mistry 2 Hideo Hattori 2 Teguh 1 Peter Stuge 1 Stefan Seering 1 Jesper Dangaard Brouer 1 Jim Binder Git changelog since last release (note: only since new Git history): Daniel Borkmann (313): all: import netsniff-ng 0.5.8-rc0 source build: Find libncurses by using pkg-config build: add make release target docs: add initial workflow document build: get latest release tag via git-describe build: minor: do announcement before tagging docs: update git mirror urls geoip: make sure we null-terminate after read netsniff-ng: do not leak file descriptors on exit geoip: reorder statements, so that file handles are closed first flowtop: close dir handle first before returning back astraceroute: fix getnameinfo arguments netsniff-ng trafgen: check return value of pull_and_flush_ring netsniff-ng: if we cannot get intermediate pcap statistics, panic ring: check return value of setsockopt xutils: check various return values flowtop: rcu: omit rcu_assign_pointer misc: remove dead/unreachable code from switch statements hash: simplify code and fix whitespacing ifpps: remove state from enum, since never used ring: don't care if we cannot active hw timestamping build: respect PREFIX_STRING on config file locations docs: AUTHORS: add Peter Stuge for his commit bpfc: support different output formats trafgen: add csumicmp for ICMP checksum calculation dissector_fuzz: minor: add header file description nacl scripts: include common header and rename build_nacl.sh bpfc: filter: add poff ancillary operation ring: first unmap, then destroy ring buffer trafgen: fix bug in packet scheduling trafgen: lexer/parser: fix cpu() selection and whitespacing trafgen: parser: add possibility for negative numbers trafgen: update help description trafgen: lexer: return if no needle found trafgen: parser: do not enforce whitesapce ring: purge timer before we unmap tx ring buffers make: when mrproper, also remove Git tree unrelated files make: also credit involved people in mail message man: add ifpps.8 man page netsniff-ng: also capture if NIC is currently down man: man page updates for bpfc, curvetun man: finish bpfc man page man: start netsniff-ng.8 man page man: netsniff-ng: finish usage examples and add filter examples man: netsniff-ng: add description paragraph and some options man: finish netsniff-ng man page man: ifpps: add bugs section trafgen: do not care if device is running yet pcap_io: introduce init_once helper that is called with priviledges trafgen: parser: fix regression on last pkt element netsniff-ng: mlock: only lock current and future pages when root man: netsniff-ng: include known bug from docs docs: move some of them to the root directory docs: readme: add steps to verify a Git release build: currently do not copy docs to shared docs docs: install: update mausezahn location gitignore: minor: remove obsolete file man: netsniff-ng: add geoip db mirror conf file man: add flowtop's man page ring_tx: user_may_pull_from_tx: fix check for user frame man: netsniff-ng: refine ethtool section netsniff-ng: remove set_sockopt_hwtimestamp call ring: tstamp: no need for tx ts dissector: show sw/hw timestamp source man: netsniff-ng: add documentation for option man: trafgen: add initial version man: trafgen: finish options section man: trafgen: configuration syntax section man: trafgen: finish syntax section man: trafgen: finish trafgen manpage misc: move file to source root oui: minor: rename update file make: rename trafgen stddef.h file bpf_comp: minor: fix linebreak man: start man page of astraceroute man: finish astraceroute man page docs: install: mention recommended tools make: force to overwrite symlink pcap: let netsniff-ng also record pkt timestamp source man: add description about different pcap formats pcap_io: minor: fix some quirks trafgen: lexer: also allow short forms for hex and binary man: trafgen: update documentation for hex, bin forms docs: minor: fix mentioning of Documentation/ make: allow to overwrite CFLAGS, CCACHE vim: add bpf syntax highlighting file trafgen: lexer: return original string if no shellcode ring: break out timestamping since not directly related zsh: add netsniff-ng zsh auto completion support staging: add mausezahn staging directory docs: update install document to current repo status build: remove some unused stuff and clean up a bit docs: add note about zsh and vim files build: install man pages man: add mausezahn man-page Merge branch 'master' of github.com:borkmann/netsniff-ng docs: authors: add Stephen Wadeley for his man page patches mac802.11: only wait for nl ack if unfinished mausezahn: do not show version in prompt man: mausezahn: add howto for interactive mode man: mausezahn: minor updates all over man: curvetun: add option and usage example section man: curvetun: finish up initial draft of curvetun curvetun: use free instead of xfree docs: minor: say it's staging area, not a branch bpfc: allow bpf programs to be passed to cpp bpfc: minor: do a line-break before 80-column make: include build name misc: fix some minor compile warnings all over make: minor update in cflags make: add HARDENING build option man: netsniff-ng: add note about multithreading make: minor cleanups in Makefile mausezahn: show long version on cli man: minor: astraceroute: add .PPs man: minor: flowtop: add .PPs man: minor: trafgen: add .PPs and modify BUGS section man: mausezahn: initial formatting and fixups bpf: add minimal BPF JIT emitted image disassembler docs: readme: just shortly also mention JIT disassembler ifpps: beautify output with > 10 cpus ifpps: fix bug_on trigger when parsing irq number man: ifpps: document ifpps behaviour when CPU > 10 ifpps: minor: minor output formatting adaption ifpps: remove unused function snr_to_str ifpps: also show total number of cpus ifpps: support mq devices in /proc/interrupts ifpps: fix segfault in terminal mode make: allow to append CFLAGS in addition to overwrite make: add DISTRO=1 for compilation on distributions docs: move sponsor names into authors docs: minor: fix whitespacing in copying file conf: oui: run oui-update.py script over config file ring: remove fanout related bits ring: set_sockopt_tpacket: rename to set_sockopt_tpacket_v2 Merge branch 'master' of github.com:borkmann/netsniff-ng ring: add set_sockopt_tpacket_v3 and refactor others ring: minor: remove define since only used once ring: move poll related fallback define to built_in.h ring: add necessary structures and helper functions for v3 ring: prepare setup_rx_ring_layout for support in v2/v3 ring: setup_{rx,tx}_ring_layout: use bool for jumbo_support ring: implement setup of tpacket v3 ring ring: fix wrong error message text in __get_sockopt_tpacket ring: move duplicate/generic code parts from rx/tx into ring.c ring: setup frame structure for v2/v3 in a generic way ring: netsniff-ng: migrate capture only to TPACKET_V3 ring_rx: if v3, free it in kernel space during close netsniff-ng: enable jumbo frames on default in tpacket_v3 man: netsniff-ng: update man page to document when -J is needed netsniff-ng: minor: update help description irq: break out from xutils and save + restore netsniff-ng: v3: fix packet accounting on --num iosched: break out io scheduling functions from xutils xutils: break out string handling and locking cpus: break out cpu related functions from xutils xutils: remove unused declaration corking: break out udp/tcp cork functions cpusched: remove useless header comment trie: remove useless header comment corking: use bool instead of int rnd: break out prng from xutils xio: refactor fopencookie related functions xio: add ioexact operations xio: rename xio to ioops and reduce its includes irq: rename device_bind_irq_to_cpu to device_set_irq_affinity xutils: break out promisc mode functions xutils: move device management functions out of xutils privs: move drop_privileges out of xutils proc: move out process specific management functions sock: add socket management functions link: add link management functions sig: add signal handling functions timer: add time management functions xutils: eliminate xutils, move rest to epoll2 stun: add header file rnd: move entropy source definition to rnd tstamping: add header file for packet timestamping misc: cleanup header comments crypto: add crypto header with includes and defines rnd: add gen_key_bytes to generate key from good entropy source ioops: Add {read,write}_blob_or_die for reading/writing binary blobs keypair: Add routines to generate and verify a keypair ioops: fix build error by renaming 'len' variable bpf: split up instructions and extensions from header curve: move taia related functions into own header taia: move taia evaluation out of curve. curve: also really remove taia functions from here bpfc: also allow to load skb len into X ifpps: minor: fix ncurses alignment taia: minor: small cleanup and comment taia: minor: add comment about window irq: do not process non-existant irq number of lo curve: move selftest to own file keypair: do selftest before generating and verifying keypair man: astraceroute: minor: remove two trailing whitespaces stun: memset saddr before binding keypair: add missing include file stun: close socket before returning in error case cpus: let it always return an unsigned int and bail out on error flowtop: set bug if screen is NULL netsniff-ng: walk_t3_block: prevent fd from double close ioops: misc: add dup{,2}_or_die to ioops ioops: mark failure path as unlikely man: curvetun.8: minor: fix typo adress man: mausezahn.8: minor: fix trailing whitespace Merge branch 'man' man: trafgen: fix remaining `` occurences trafgen: fix -n1 bug for packet scheduling trafgen: check offsets for all kind of csums trafgen: fix checksumming in trafgen example config bpf: add missing decode for poff man: bpf: also mention that bpfc can be used for seccomp-BPF man: bpfc: add example of loadable x86_64 seccomp-BPF filter bpfc: stress that also seccomp-BPF can be generated with bpfc docs: readme: also stress bpf seccomp in the README page bpf: very minor style fixups and paths marked unlikely misc: remove two header comments cpusched: cleanups, refactoring and fix one bug curve: rename encode/decode buffers curve: simplify curve25519_proto_init and others curve: curve25519_encode/curve25519_decode: simplify crypto transforms curve: fix crypto_box_beforenmbytes length curve: minor: fix up formatting curve: minor: fix typo in variable curve: directly include config.h for FILE_PRIVKEY curve: curve25519_tfm_alloc/curve25519_tfm_free helpers curve: free buffers in reverse order to allocation bpf: use Linux' define of BPF_MAXINSNS dev: bail out if ifindex could not be retrieved dev: make paths unlikely, simplify code die: minor: simplify code a bit dissector: explicitly init array man: add colophon to the end of each document. ioexact: make mayexit a bool dev: mark paths likely/unlikely man: netsniff-ng: add section about netlink traffic debugging netsniff-ng: tpacketv3: 'fix' packet accounting output man: bpfc: add netlink arp header man: netsniff-ng: elaborate on capturing netlink traffic pcap_io: add LINKTYPE_NETLINK for netlink pcaps pcap: support for various linktypes dissector: do not panic on unknown hatype pcap: fix build error pcap: invoke dev->type to pcap linktype mapper netsniff-ng: ctx: init and destruct methods for ctx dev: linktype: use ARPHRD_ETHER for "any" device conntrack: consolidate all conntrack header includes into conntrack.h config: check for available databases config: execute check_libnf_ct function to check for conntrack config: check for libz config: check for liburcu configure: two fixes on dependencies configure: test also tpacket flags e.g. used in TX_RING configure: make: misc: update header comment configure: netsniff-ng: libpcap is not a hard dependency configure: when we have all deps rather tell "all tools will be built" configure: let configure script generate config.h file all: show git id in --version information configure: fix multiple issues in build configuration configure: check for flex and bison dissector: print hex_ascii combination in unkown linktypes curvetun: renamed client, server, and management files curvetun_client: include crypto instead of single nacl header curvetun_mgmt: consolidate the two mgmt include files into one docs: authors: move Tobias one position higher docs: authors: minor: fix spelling mistake docs: install: simplify dependency description docs: describe how to build bpf_jit_disasm make: help: consolidate <toolnames> to <tool> oui: update oui file from oui-update.py docs: install: state that we do have an option for distro build docs: install: recommend gnuplot for ifpps configure, netsniff-ng: make netsniff-ng's geoip dependency optional netsniff-ng: fix recognition of -U command line option configure, netsniff-ng: if no libgeopip, do not link against libz curvetun: give short note in version info build: for an -rc release exclude curvetun for now build: refactor tool specific flags into <tool>/Makefile dissector: rename __WITH_PROTOS into HAVE_DISSECTOR_PROTOS man: ifpps: emphasize gnuplot output format ifpps: align string to format string ifpps: align avg numbers and remove unit ifpps: make '+' to '-' sort more clear link: allow future ethtool speed formats to be supported ifpps: show kernel version and machine type ifpps: show machine type only if not in already release name ifpps: warn about increase -t when high speed ifpps: align avg on systems with >8 CPUs configure: fix libnetfilter_conntrack dependency removal configure: do not use bash's expr match configure: redirect all compile output to our local config.log configure: fix wrong whitespacing bpf_comp: pass NEED_TCPDUMP_LIKE_FILTER through gcc gitignore: add config.log file to git ignore ifpps: median: add whitespace padding in one occurence ifpps: warn when 1Gbit/s and interval < 1sec ifpps: release stats on exit ifpps: help: reduce option description to one line dissector_eth: sparse: fix sparse warning misc: fix multiple NULL pointer sparse warnings ring_rx: fix format string sparse warning trafgen: setup_shared_var: fix couple of things trafgen: sparse: make seed static proto_80211_mac_hdr: fix sparse warning trafgen: setup_shared_var: fix reamainders sparse: netsniff-ng, trafgen: fix remaining time(0) warnings trafgen: switch for skipping cpu time statistics on exit oui-update.py: oui: minor config updates build: use git describe --always make: put newline after Git people ifpps: update options for zsh completion trafgen: update options for zsh completion Tobias Klauser (110): flowtop: Omit return value in flow_entry_get_sain{4,6}_obj() curvetun: Only close() file descriptor if open man: netsniff-ng: Fix a typo man: netsniff-ng: Fix typo of 'privileges' man: netsniff-ng: Do some wordsmithing man: flowtop: Fix typo of flowtop's name dissector: ip_authentication_hdr: Remove trailing whitespaces dissector: ip_ipv6_mobility_hdr: NULL check before dereference flowtop: Use size of destination buffer in memcpy dissector: lldp: NULL check before dereference geoip: Don't leak file/socket descriptor in error case xmalloc: Make xfree a two part macro/inline dissector: igmp: Fix erroneous null pointer check xutils: Make set_nonblocking() void man: netsniff-ng: Minor fixes man: trafgen: Complete documentation for option -p/--cpp man: trafgen: Minor fixes man: astraceroute: Make wording in description for --version consistent man: flowtop: Make wording in description for --version consistent astraceroute: Mention exit after printing information in built-in help curvetun: Mention exit after printing information in built-in help dissector: igmp: Fix another erroneous null pointer check built_in: Add __noreturn marker die.h: Add __noreturn attribute to exiting functions netsniff-ng: Add __noreturn attribute to exiting functions trafgen: Add __noreturn attribute to exiting functions astraceroute: Add __noreturn attribute to exiting functions bpfc: Add __noreturn attribute to exiting functions curvetun: Add __noreturn attribute to exiting functions ifpps: Add __noreturn attribute to exiting functions trafgen: Add __noreturn attribute previously missed misc: Ignore files generated by cscope/ctags trafgen: Remove unnecessary reinitialization of icmp packet tprintf: Rename parameter to avoid shadowing global declaration ifpps: Convert mem_free/mem_total members of struct ifstat to uint64_t man: netsniff-ng: Reword a few sentences ifpps: Don't assume a maximum of 32 CPUs ifpps: Add myself to the copyright holders in --version/--help ifpps: Use strtoul() to convert unsigned value ifpps: Properly zero out allocated stats ifpps: Allocate cpu dependent stats in one place netsniff-ng: Add __maybe_unused attribute to timer functions ifpps: Allow to select number of top hitter CPUs by command line option man: ifpps: Mention CPU limit in first section and remove BUGS section ifpps: Rename variable containing top number of CPUs ifpps: Always display the least heavy hitter CPU ifpps: Also display min hitter for IRQs ifpps: Don't re-initialize stats value index counter in CSV mode ifpps: Don't diff tx_bytes twice ifpps: Don't calculate diff for stats values not used for relative values ifpps: Report more detailed memory stats and number of total processes man: ifpps: Reword a few sentences or make them shorter ifpps: Rename cpu number parameter to stats_top() ifpps: Remove unused 'forks' member from struct ifstat oui: Make parsing of oui.conf more robust oui: minor: Fix comments dissector: eth: Make port file parsing more robust oui: Free allocated record if line is skipped dissector: eth: Free allocated record if line is skipped dissector: icmpv6: Fix possible null pointer dereferences dissector: ip_auth_hdr: Fix possible null pointer dereference dissector: icmpv6: Fix another possible null pointer dereference flowtop: Remove unnecessary bug_on() and rework presenter_screen_init() dissector: icmpv6: Fix yet another possible null pointer dereference sock: Check return value of setsockopt() in set_tcp_nodelay() dissector: lldp: Rework capability printing die: minor: Remove trailing whitespace conf: oui: run oui-update.py script to update OUI config file netsniff-ng: Report if HW timestamping is enabled configure: Add configure script used to detect NaCl README, INSTALL: minor: Remove trailing whitespaces gitignore: Ignore generated Config configure: Check for tpacket, ncurses, libgeoip ifpps, flowtop: Move ncurses init and end to common module configure: Add linker flags for ncursestest to correct position configure: Check for presence of pkg-config and ccache binaries configure: Improve check for libnl/libnl-genl Merge branch 'config' configure: Silence pkg-config calls configure, Makefile: Fail in Makefile if Config is not complete INSTALL: minor: Fix typo 'mainling list' Makefile, INSTALL: Simplify clean/uninstall Makefile targets configure: Don't redirect output of pkg-config configure: Fix check for libnetfilter-conntrack configure: Call a function from zlib in check_zlib() configure: Call a function from libgeoip in check_libgeoip() configure: Add check for libpcap configure, Makefile: Conditionally build tools README: Adjust mention of sponsors ifpps: Calculate and show average values across all CPUs ifpps: Reduce default number of top hitter CPUs to 5 ifpps: Remove unecessary whitespaces in mvwprintw() calls ifpps: Remove unnecessary memset() configure: Redirect pkg-config errors to log file ifpps: Optionally display median values for CPU load and interrupts ifpps: Update usage with respect to median values ifpps: Consistently list command line options ifpps: Correct calculation of median values for CPU load ifpps: Use unsigned int to store number of CPUs ifpps: Remove unused parameter to term_csv() bpf: Use iterator variable of correct type dissector: Mark unused parameters with __maybe_unused tprintf: Fix compiler warnings pcap_mm: Mark unused parameters with __maybe_unused pcap_io: Use iterator variable of correct type pcap_io: Remove unused parameter sll from pcap_pkthdr_to_tpacket_hdr() astraceroute.zsh: Fix typo of ``numeric'' geoip: Fix sign compare warnings flowtop: Mark unused parameters with __maybe_unused pcap_sg: Fix various compiler warnings Stephen Wadeley (16): man: improvements to language and markup for bpfc.8 man: improvements to language and markup for curvetun.8 man: improvements to bpfc.8, inconsistent use of `` and '' man: improvements to curvetun.8, inconsistent use of `` and '' man: improvements to language and markup for ifpps.8 man: improvements to language and markup for netsniff-ng.8 man: improvements to language for astraceroute.8 man: improvements to astraceroute.8, inconsistent use of and '' man: improvements to language for curvetun.8 man: improvements to curvetun.8, inconsistent use of `` and '' marks. man: improvements to language for flowtop.8 man: improvements to language for mausezahn.8 man: improvements to mausezahn.8, inconsistent use of `` and '' marks. man: improvements to mausezahn.8: 802.1D not 802.1d man: improvements to mausezahn.8: No need to mention CST or STP for BPDU man: improvements to mausezahn.8: CoS (PCP), DEI (CFI) Jon Schipp (9): man: minor fixups in flowtop's man page docs: minor: Add missing word 'it' man: netsniff-ng: edits to the netsniff-ng man page man: astraceroute: minor edits all over man: trafgen: corrections and various edits to manual page man: curvetun: grammer, spelling, and other minor corrections mausezahn: man: fixed typo and minor sentence edits mausezahn: man: various updates man: edits to ifpps man page Kartik Mistry (4): misc: Fixed spelling mistakes man: manpages hyphen and spelling mistakes man: manpage hyphen fixes, take two man: manpage hyphen fixes, take three Hideo Hattori (2): zsh: update zsh autocompletion functions to implementation zsh: add zsh completion function for mausezahn Peter Stuge (1): netsniff-ng trafgen: Find libnl-3.0 and libnl-genl-3.0 using pkg-config -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
