summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-12-16str: Avoid trailing space in string returng by argv2str()Tobias Klauser1-2/+4
Don't add a trailing whitespace to the string returned by argv2str(). Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-16trafgen: proto: Zero out the correct packet slotTobias Klauser1-3/+3
In the third attempt, finally do the packet slot zeroing correctly. Zero the struct packet in __init_new_packet_slot() not the struct packet_dyn in __init_new_counter_slot(). Don't know what hit me yesterday... Fixes: d6d511ecff24 ("trafgen: proto: Zero out newly allocated struct packet") Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-16bpf: Fix confusing panic() messageTobias Klauser2-2/+2
When using a filter with netsniff-ng without libpcap support, e.g. $ netsniff-ng --in eth0 tcp or udp we get the error: Cannot compile filter tcp or udp which isn't correct and might be confusing for the user as the intention wasn't to specify a filter file but a filter string. Correct the error message accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-16bpfc: Remove unnecessary prototype for compile_filter()Tobias Klauser1-3/+0
compile_filter() is defined in bpf_parser.y (and thus the generated parser), no need for a prototype beforehand. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-15trafgen: proto: Add missing braceTobias Klauser1-1/+1
Fix the fat-fingered previous commit which I pushed out too early ;( Fixes: d6d511ecff24 ("trafgen: proto: Zero out newly allocated struct packet") Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-15trafgen: proto: Zero out newly allocated struct packetTobias Klauser1-2/+1
When allocating a new struct packet, the headers and headers_count fields are not zeroed and retain whatever value the allocator returned. Incidentally, this usually seems to have been zero. But on some systems (e.g. Ubuntu 16.04 with a self-compiled 4.9) it is not and we hit the following bug_on: trafgen: trafgen_proto.c:135: proto_header_push: Assertion `!(pkt->headers_count >= 16)' failed. Fix this by properly zeroing the entire struct packet. Fixes: e7dd63060e44 ("trafgen: proto: Update field value at runtime") Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-13zsh: trafgen: Add missing option -q/--qdisc-path to zsh completionTobias Klauser2-1/+2
Also sightly adjust the description in the usage text. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-10sock: change type of verbose parameter to set_sock_qdisc_bypass()Tobias Klauser2-3/+6
Verbose mode is a boolean option and is already defined as type bool in trafgen, so make the corresponding parameter to set_sock_qdisc_bypass() of type bool too. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-10bpfc: make verbose parameter booleanTobias Klauser2-6/+6
Verbose mode is a boolean option, so make the variable and parameters carrying it of type bool. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-09Revert "mausezahn: Add error handling for mismatched address families"Tobias Klauser1-10/+1
This reverts commit bf0df3ec1875df4b167aedd0fff25e7e56408b6b. It turns out, just checking for "." in the IPv4 source will prevent the user from providing an FQDN (which is explicitely allowed and supported). Also, an FQDN would be a valid argument for the IPv6 source, so the check for ":" is also not sufficient. Reference: #166 Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-08netsniff-ng: proto_ipv4: Move sockaddr_in declarations to narrower scopeTobias Klauser1-8/+9
Move the sockaddr_in definitions and preparations to the scope where they're used, i.e. only if geoip is enabled and working. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-08all: Remove unused longindex parameter to getopt_long()Tobias Klauser7-15/+15
All tools (except mausezahn) use getopt_long() and pass a pointer to a local opt_index variable for the longindex parameter. However, this variable is never read afterwards. According to getopt(3) it's perfectly fine to pass NULL as the longindex parameter instead, so do that. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-08mausezahn: Add error handling for mismatched address familiesMandar Gokhale1-1/+10
Currently, mausezahn fails silently if, say the user has specified IPv6 addresses using `-A` and `-B` but has forgotten the -6 option. Add error handling for this and the (probably uncommon) reverse case, i.e. v4 src/dst specified, but used with the -6 option. Signed-off-by: Mandar Gokhale <mandarg@mandarg.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-05AUTHORS: Add Ken WuTobias Klauser1-0/+1
Add Ken Wu for commit c4e07d5142 ("trafgen: l3: Support interface without IP address"), submitted via PR #165 Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-05trafgen: l3: Support interface without IP addressKen Wu2-6/+10
Move default source address setting to packet_finish so that we do not need to get the device's address if the source address is set in the packet. Without this, trafgen does not work with an interface without address configured. In addition, in the case failing to get the address for an interface, intead of panic, it now prints a warning and uses a value of 0.0.0.0. Signed-off-by: Ken Wu <abawwu@gmail.com> Reviewed-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-01build: configure: rewrap missing defs warningTobias Klauser1-3/+3
...and remove a superflous whitespace. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-12-01build: configure: clearify missing defs warningTobias Klauser1-3/+3
Missing definitions don't necessarily mean that certain tools won't be built. There might just be reduced functionality (e.g. geoip missing means still all tools will be compiled but they don't perform geoip lookups). Clearify the configure warning accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-23mausezahn: Use all-nodes link local address for IPv6Mandar Gokhale1-3/+1
Use all-nodes link local address for IPv6 when destination is not specified. There is a comment that says this should be done anyway. According to RFC 4291, FF01:0:0:0:0:0:0:1 should be the correct address. Signed-off-by: Mandar Gokhale <mandarg@mandarg.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-23trafgen: parser: Fix undefined ETH_P_802AD on 2.6.x LinuxVadim Kochan1-0/+4
ETH_P_8021AD might be undefined on 2.6.x Linux version (tested on Ubuntu 10 with 2.6.32 Linux), so lets check and define it. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-18AUTHORS: Add Mandar GokhaleTobias Klauser1-0/+1
Add Mandar Gokhale for: c31566c6fa90 ("man: mausezahn: Add -6 option to manpage") e548da7232d4 ("mausezahn: Typofix & grammar change") submitted via pull requests #161 and #162. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-18man: mausezahn: Add -6 option to manpageMandar Gokhale1-0/+3
Closes #162 Signed-off-by: Mandar Gokhale <mandarg@mandarg.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-18mausezahn: Typofix & grammar changeMandar Gokhale1-4/+4
Closes #161 Signed-off-by: Mandar Gokhale <mandarg@mandarg.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-11-07netsniff-ng v0.5.2v0.6.2Tobias Klauser1-2/+2
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-21trafgen: proto: Don't drop const qualifier during castTobias Klauser1-2/+2
Don't drop const qualifier during cast to uint32_t * Found by compiling with -Wcast-qual. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-21csum: Don't drop const qualifier during castTobias Klauser1-3/+3
Don't drop const qualifier during cast to void * Found by compiling with -Wcast-qual. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04AUTHORS: Add Yousong Zhou for his contributionTobias Klauser1-0/+1
Add Yousong Zhou for commits 47493936 ("build: configure: fix checking CC containing -i option") and 70079759 ("all: fix build on CentOS 6 by checking presence of several macros"), submitted via #160. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04build: Unify default values for PREFIX and ETCDIR in configureTobias Klauser2-15/+6
The netsniff-ng make system is no longer usable without the `Config' file generated by the ^configure' script. Thus it's now possible to move default value definitions for PREFIX and ETCDIR to the configure script, so we they're not duplicated in `configure' and the Makefile. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04build: Simplify checking for PREFIX originTobias Klauser1-7/+3
Use the $(filter ...) make function to simplify the detection of the origin of the PREFIX variable. This allows to merge two duplicate definitions for the INSTX command. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: man: Highlight packet functions sectionVadim Kochan1-6/+8
Make the each packet functions section name to be bold. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: man: Add description for 'pfc()' functionVadim Kochan1-0/+27
Add explanation for 'pfc()' function parameters. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: parser: Add 'pfc()' function for PFC headerVadim Kochan2-2/+42
Add 'pfc()' function for PFC header creation with fields: code - MAC Control opcode prio - Priority enable vector prio(0)..prio(7) - Enable/disable pause for prio X time(0)..time(7) - Set pause time for prio X Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: l2: Add support for PFC headerVadim Kochan3-0/+64
Add PFC header fields setting (prio vector, time per priority). By default Ethernet header is pushed with required fields. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: man: Add description for 'pause()' proto functionVadim Kochan1-0/+22
Add explanation for PAUSE(802.3X) header fields. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: parser: Add 'pause()' function for IEEE 802.3X PAUSE headerVadim Kochan2-0/+31
Add 'pause()' proto header function for IEEE 802.3X PAUSE header generation with the fields: code - MAC Control opcode (default 0x0001) time - PAUSE time (default 0) Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-10-04trafgen: l2: Add support for IEEE 802.3X PAUSE headerVadim Kochan3-0/+33
Add EEE802.3X Ethernet MAC Control PAUSE frame proto header with two fields - opcode & time. By default Ethernet header is pushed on header init. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-29all: fix build on CentOS 6 by checking presence of several macrosYousong Zhou4-1/+15
Protect usage of macros not present in pre-3.x kernels. Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-29build: configure: fix checking CC containing -i optionYousong Zhou1-5/+12
On CentOS 6, the configure process may hang there reading stdin if the we have CC='gcc -isystem'. This can be reproduced with bash -c 'which gcc -i' Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-23man: trafgen: Fix link to Jesper's exampleVadim Kochan1-1/+1
The link: http://thread.gmane.org/gmane.linux.network/257155 does not work anymore, so replace it with another one at: https://marc.info/?l=linux-netdev&m=135903630614184 Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Suggested-by: Tobias Klauser <tklauser@distanz.ch> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: man: Simplify example of Jasper's UDP packet by proto functionsVadim Kochan1-3/+3
Removed unneeded fields which are calcuated by default: <udp.len> <ipv4.len> <ipv4.proto> Fixed <ipv4.id> field by changing drnd(2) -> drnd() as proto field <drnd> function does not support bytes length value but randomizes specified field by its length. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: man: Add description for 'dinc' and 'drnd' field functionsVadim Kochan1-0/+43
Add explanation about 'drnd' and 'dinc' functions which might be used for proto field functions. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: parser: Add 'drnd()' function for proto fieldsVadim Kochan1-0/+9
Add syntax for specify dynamic random function for proto field: drnd() | drnd(min, max) EXAMPLE: { udp(sport=drnd()) } { udp(sport=drnd(1000, 2000)) } Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: parser: Add support of 'dinc' function for proto fieldsVadim Kochan1-0/+53
Add 'dinc()' function in 'field_expr' rules to be used for dynamically incrementing of any specified field: SYNTAX := dinc() | dinc(step) | dinc(min, max) | dinc(min, max, step) EXAMPLES: { udp(sport=dinc() } { udp(sport=dinc(1) } { udp(sport=dinc(100, 125, 5) } Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: parser: Unify proto field value parsingVadim Kochan3-147/+218
Changed parsing logic of field value expression to be more generic. Such approach will allow to easy extend field value expression to support dynamic field functions. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: tcp: Update csum at runtime if it neededVadim Kochan2-5/+17
Update TCP checksum field if any TCP of fields was changed. Use same checksum update function on 'packet_finish' and 'header update'. Set 'is_csum_valid = false' if lower IPv4/IPv6 pseudo header was changed. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: udp: Update csum at runtime if neededVadim Kochan2-8/+47
Update UDP csum field at runtime if: 1) UDP field was changed. 2) IPv4/6 source/destination addresses were changed (which is a part of UDP pseudo header), this is handled by IPv4/6 protocols. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: proto: Introduce proto_upper_header() functionVadim Kochan2-0/+13
Added proto_upper_header() function to fetch upper proto header. It will be used by IPv4/IPv6 proto header to notify UDP/TCP proto headers to invalidate L4 csum when L3 pseudo header field was changed. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: proto: Improve to find lower header by indexVadim Kochan2-14/+12
Extended struct proto_hdr with 'index' field which is used for faster lookup of lower header without doing a loop. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: icmpv6: Update csum at runtime if neededVadim Kochan1-13/+19
Use same function to calculate csum for packet_update and for packet_finish events. Allow update csum if one of the ICMPv6 fields was changed. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: icmpv4: Update csum at runtime if neededVadim Kochan1-4/+16
Update csum if any of the ICMPv4 field was changed. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-09-21trafgen: ipv4: Update csum at runtime if neededVadim Kochan2-6/+28
Handle 'field_changed' callback to check if IPv4 csum is needed to be recalculated, if so - update it on 'packet_update' event. Added 'is_csum_valid' to proto_hdr struct to check if csum needs to be updated. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>