src: only xfree when appropriate, remove cli
[netsniff-ng.git] / INSTALL
blob0c4e71fdf186a9eea195422a90257f44dd9191dd
1 Currently only operating systems running on Linux kernels with
2 CONFIG_PACKET_MMAP enabled. This feature can be found even back to the days of
3 2.4 kernels. Most operating systems ship pre-compiled kernels that have this
4 config option enabled and even the latest kernel versions got rid of this
5 option and have this functionality already built-in. However, we recommend a
6 kernel >= 2.6.31, because the TX_RING is officially integrated since then.
8 netsniff-ng has been successfully tested on x86 and x86_64. Please drop
9 us a short mail, if it runs successfully on hardware other than that.
11 What libraries / tools are required?
13  - glibc (all)
14  - cmake (all)
15  - libpthread (curvetun, netsniff-ng, flowtop)
16  - libncurses (ifpps, flowtop)
17  - libGeoIP and its database (ashunt, flowtop)
18  - flex, bison (bpfc, trafgen)
19  - libnacl (curvetun)
20  - libnetfilter-conntrack (flowtop)
21  - liburcu (flowtop)
22  - libcli (trafgen)
23  - libnl (netsniff-ng, trafgen)
25 What additional tools are recommended?
27  - ntpd, tlsdate or equivalent (curvetun)
29 It is common, that these libraries are shipped as distribution packages
30 for an easy installation. We try to keep this as minimal as possible.
32 For downloading the latest GeoIP database, you can use the script that
33 is located at scripts/geoip-database-update.
35 The installation process done by cmake is fairly simple:
37   $ cd netsniff-ng/src/
38   $ mkdir build
39   $ cd build
40   $ cmake ..
41   $ make
42   # make install
44 Man pages are generated out of the corresponding source files by cmake.
45 They are written in POD format as a C header comment within those files.
46 For this, you need the tool pod2man which is distributed with Perl and
47 should therefore be available on most systems.
49 To uninstall, simply remove all files refered in install_manifest.txt
51 For bpfc, we also have a Vim syntax highlighting file. Have a look at
52 scripts/bpf.vim for installation instructions.
54 In order to build curvetun, libnacl must be built first. A helper script
55 called build_nacl.sh is there to facilitate this process. If you want to
56 build NaCl in the directory ~/nacl, the script should be called this way:
58   $ cd src/curvetun
59   $ ./build_nacl.sh ~/nacl
61 This gives an initial output such as "Building NaCl for arch amd64 on host
62 fuuubar (grab a coffee, this takes a while) ...". If the automatically
63 detected architecture (such as amd64) is not the one you intend to compile
64 for, then edit the (cc="gcc") variable within the build_nacl.sh script to
65 your cross compiler.
67 If NaCl already has been built on the target, it is quicker to use nacl_path.sh
68 this way:
70   $ cd src/curvetun
71   $ ./nacl_path.sh ~/nacl/build/include/x86 ~/nacl/build/lib/x86
73 When done, netsniff-ng build infrastructure will read nacl_path.cmake to get
74 the needed paths to NaCl.
76 For using TUN/TAP devices as a user, e.g. create a file called
77 src/50-tuntap.rules in /etc/udev/rules.d/ with:
78 KERNEL=="tun", NAME="net/%k", GROUP="netdev", MODE="0660", OPTIONS+="ignore_remove"
79  and restart the udev daemon. Add yourself to the "netdev" group.
81 NOTES
83 Add the flag -D__WITH_HARDWARE_TIMESTAMPING=1 into src/CMakeLists.txt for hardware
84 timestamping support. Note that your kernel must be configured for this (e.g. to
85 ship the linux/net_tstamp.h header file).
87 If you are a package distribution maintainer, have a look at the patch set under
88 contrib/patches which makes packaging a little easier for you.
90 The following warnings can be seen when compiling bpfc with flex 2.5.35 and
91 bison 2.4.1:
92  - redundant redeclaration of ‘isatty’
93  - cannot optimize loop, the loop counter may overflow
95 Those two warnings occur on generated C code produced by flex and bison
96 and there is no possibility on our side to fix them.
98 Similar to that, gcc will throw a warning on strchr(3) which is a false
99 positive (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36513) from glibc:
100  - warning: logical ‘&&’ with non-zero constant will always evaluate as true