dissectors: lldp: check for all mandatory TLVs at correct position
[netsniff-ng.git] / INSTALL
blob09a2ae310664e13a1d9e4d20b93bbd1f2133d899
1 Currently only operating systems running on Linux kernels with the option
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. In
7 any case, if you have the possibility, consider getting the latest kernel from
8 Linus' Git repository, tweak and compile it, and run this one!
10 A note for distribution package maintainers can be found at the end of the file.
12 What additional tools are required to build netsniff-ng?
14  - ccache (optional)
15  - flex, bison (bpfc, trafgen)
17 What libraries are required?
19  - libncurses (ifpps, flowtop)
20  - libGeoIP >=1.4.8 (astraceroute, flowtop)
21  - libnacl (curvetun)
22  - libnetfilter-conntrack (flowtop)
23  - libpcap (netsniff-ng, for tcpdump-like filters)
24  - liburcu (flowtop)
25  - libnl3 (netsniff-ng, trafgen)
27 What additional tools are recommended after the build?
29  - cpp (trafgen)
30  - ntpd (curvetun)
31  - setcap (all)
33 It is common, that these libraries are shipped as distribution packages
34 for an easy installation. We try to keep this as minimal as possible.
36 One-liner installation for *all* dependencies on Debian:
38   $ sudo apt-get install ccache flex bison libnl-3-dev \
39   libnl-genl-3-dev libgeoip-dev libnetfilter-conntrack-dev \
40   libncurses5-dev liburcu-dev libnacl-dev libpcap-dev
42 One-liner installation for *all* dependencies on Fedora:
44   $ sudo yum install ccache flex bison ccache libnl3-devel \
45   GeoIP-devel libnetfilter_conntrack-devel ncurses-devel \
46   userspace-rcu-devel nacl-devel libpcap-devel
48 After downloading the netsniff-ng toolkit, you should change to the
49 repository root directory:
51   $ cd netsniff-ng/
53 The installation (deinstallation) process done by make is fairly simple:
55   $ make
56   # make install
58   (# make distclean)
59   ($ make clean)
60   (or for both at once: # make mrproper)
62 You can also build only a particular tool, e.g.:
63   
64   $ make trafgen
65   # make trafgen_install
67   (# make trafgen_distclean)
68   ($ make trafgen_clean)
70 Currently mausezahn is experimental and not included in the default repository
71 resp. build:
73   $ git pull origin with-mausezahn
75 This means if you want to use mausezahn, you have to execute 'make mausezahn'
76 for a build. This will be changed at the time when we have cleaned up and
77 fixed the imported code.
79 If you want to build all tools, but curvetun (i.e. because you don't need
80 the tunneling software and the NaCl build process lasts quite long):
82   $ make allbutcurvetun
83   # make install_allbutcurvetun
85   (# make mrproper)
87 In order to build curvetun, libnacl must be built first. A helper script
88 called build_nacl.sh is there to facilitate this process. If you want to
89 build NaCl in the directory ~/nacl, the script should be called this way:
91   $ cd curvetun
92   $ ./build_nacl.sh ~/nacl
94 There's also an abbreviation for this by simply typing:
96   $ make nacl
98 This gives an initial output such as "Building NaCl for arch amd64 on host
99 fuuubar (grab a coffee, this takes a while) ...". If the automatically
100 detected architecture (such as amd64) is not the one you intend to compile
101 for, then edit the (cc="gcc") variable within the build_nacl.sh script to
102 your cross compiler. Yes, we know, the build system of NaCl is a bit of a
103 pain, so you might check for a pre-built package from your distribution in
104 case you are not cross compiling.
106 If NaCl already has been built on the target, it is quicker to use
107 nacl_path.sh this way:
109   $ cd curvetun
110   $ ./nacl_path.sh ~/nacl/build/include/x86 ~/nacl/build/lib/x86
112 When done, netsniff-ng's build infrastructure will read those evironment
113 variables in order to get the needed paths to NaCl.
115 In case you have to manually install libgeoip in version 1.4.8 or higher, you
116 can also use the provided helper script called build_geoip.sh from the
117 astraceroute directory (depending on your distribution, you might want to
118 adapt paths within the script):
120   $ cd astraceroute
121   # ./build_geoip.sh
123 Again, there's also an abbreviation for this by simply typing:
125   # make geoip
127 For downloading the latest GeoIP database, you should use the script that
128 is located at scripts/geoip-database-update, or use:
130   # make update
132 If you're unsure with any make targets, check out: make help
134 In order to run the toolkit as a normal user, set the following privilege
135 separation after the build/installation:
137   $ sudo setcap cap_net_raw,cap_ipc_lock,cap_sys_admin,cap_net_admin=eip {toolname}
139 Man pages are generated out of the files from Documentation/Manpages dir.
140 They are written in asciidoc format. For this, you need the tool asciidoc which
141 is distributed with on most Linux systems.
143 For bpfc, we also have a Vim syntax highlighting file. Have a look at
144 scripts/bpf.vim for installation instructions.
146 netsniff-ng has been successfully tested on x86 and x86_64. It should also run
147 on most other major architectures. However, since we don't have a possibility
148 to test it, please drop us a short mail, if it runs successfully on hardware
149 other than x86/x86_64.
151 For using TUN/TAP devices as a user, e.g. create a file called 50-tuntap.rules
152 in /etc/udev/rules.d/ with ...
154 KERNEL=="tun",NAME="net/%k",GROUP="netdev",MODE="0660",OPTIONS+="ignore_remove"
156 ... and restart the udev daemon. Add yourself to the "netdev" group.
158 Add the flag -D__WITH_HARDWARE_TIMESTAMPING=1 into Makefile for
159 hardware timestamping support. Note that your kernel must be configured for
160 this (e.g. to ship the linux/net_tstamp.h header file).
162 The following warnings can be seen when compiling bpfc with flex 2.5.35 and
163 bison 2.4.1:
164  - redundant redeclaration of ‘isatty’
165  - cannot optimize loop, the loop counter may overflow
167 Those two warnings occur on generated C code produced by flex and bison and
168 there is no possibility on our side to fix them while staying with both tools.
170 Similar to that, gcc will throw a warning on strchr(3) which is a false
171 positive (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36513) from glibc:
172  - warning: logical ‘&&’ with non-zero constant will always evaluate as true
174 For cross-compiling netsniff-ng, the process is faily simple. Assuming you
175 want to build netsniff-ng for the Microblaze architecture, update the PATH
176 variable first, e.g.:
178   $ export PATH=<cc-tools-path>/microblazeel-unknown-linux-gnu/bin:$PATH
180 And then, build the toolkit like this:
182   $ make CROSS_COMPILE=microblazeel-unknown-linux-gnu- \
183          CROSS_LD_LIBRARY_PATH=<cc-lib-search-path>
185 Note that some adaptations might be necessary regarding the CFLAGS, since not
186 all might be supported by a different architecture.
188 For doing a debug build of the toolkit with less optimizations and non-stripped
189 symbols, do:
191   $ make DEBUG=1
193 For debugging the build system, full commands are shown if every make target is
194 executed with:
196   $ make Q=
198 Concerning packaging the toolkit for a Linux distribution, by default,
199 netsniff-ng has some architecture-specific tuning options enabled that don't
200 belong into a package binary of a distribution. Hence, you might want to adapt
201 some build-related things before starting to package the toolkit. All
202 necessary things (e.g., CFLAGS,WFLAGS) can be found in Makefile. Hence,
203 you need to adapt it there. You can then build and install the toolkit into
204 a prefixed path like:
206   $ make PREFIX=<path-prefix-for-package>
207   $ make PREFIX=<path-prefix-for-package> install
209 Thanks for maintaining netsniff-ng in your distribution. Further questions
210 will be answered on the public mainling list.