summaryrefslogtreecommitdiff
path: root/trafgen_lexer.l
AgeCommit message (Collapse)AuthorFilesLines
2016-01-28trafgen: parser: Add syntax to generate Ethernet header fieldsVadim Kochan1-0/+15
Add function 'eth()' to support generating Ethernet header fields from the trafgen configuration language. Supported fields: da|daddr destination address, default: 00:00:00:00:00:00 sa|saddr source address, default: device MAC prot|proto protocol number, default: 0x0000 Example usage: { eth(prot=0x0800, da=11:22:33:44:55:66), fill(0xff, 60) } { eth(prot=0x0800) } { eth() } It is important that proto_init is called before fields will be filled to initialize the specified proto with header fields. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> [tk: document supported keywords in commit message] Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2015-10-13trafgen: Add checksum helpers for TCP/UDP over IPv6Tobias Klauser1-0/+2
Add the csumudp6 and csumtcp6 helper functions in order to simplify checksum generation for TCP/UDP packets sent over IPv6. trafgen example for TCP over IPv6: { /* MAC Destination */ fill(0xff, 6), /* MAC Source */ 0x00, 0x02, 0xb3, drnd(3), /* IPv6 Protocol */ c16(0x86DD), /* Version, Traffic Class, Flow Label */ 0b01100000, c8(0), c16(0), /* Payload Length */ c16(54), /* Next Header (TCP) */ c8(6), /* Hop Limit */ c8(64), /* Source IPv6 */ 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xac, 0x6f, 0xff, 0xfe, 0xa4, 0x12, 0xe3, /* Destination IPv6 */ 0xfe, 0x80, 0x82, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0xfe, 0x00, 0x06, 0xde, /* TCP Source Port */ c16(55042), /* TCP Destination Port */ c16(55043), /* TCP Sequence Number */ drnd(4), /* TCP Ackn. Number */ c32(0), /* TCP Header length + TCP SYN/ECN Flag */ c16((8 << 12) | (1 << 1) | (1 << 6)) /* Window Size */ c16(16), /* TCP Checksum (offset IPv6, offset TCP) */ csumtcp6(14, 54), /* TCP Options */ 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x06, 0x91, 0x68, 0x7d, 0x06, 0x91, 0x68, 0x6f, /* Data blob */ "foobar!", } Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-05-24misc: fix some minor compile warnings all overDaniel Borkmann1-2/+1
Some regarding unused parameter, some regarding signed/unsigned comparison. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-13trafgen: lexer: return original string if no shellcodeDaniel Borkmann1-3/+3
When do not detect any shellcode, make sure we return the original string only. Reported-by: Jon Schipp <jonschipp@gmail.com> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-10trafgen: lexer: also allow short forms for hex and binaryDaniel Borkmann1-4/+6
Also allow for ... - hex: 0xff, xff - binary: 0b11110000, b11110000 Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-27trafgen: lexer: return if no needle foundDaniel Borkmann1-4/+5
Also return if no needle has been found in the shell code haystack. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-26trafgen: update help descriptionDaniel Borkmann1-0/+1
After commit f9591eebe40c (trafgen: lexer/parser: fix cpu() selection and whitespacing), we also need to fixup the help description, so that users start using the cpu(X-Y) notation instead. Also, reintroduce the alias csum16 for csumip. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-25trafgen: lexer/parser: fix cpu() selection and whitespacingDaniel Borkmann1-2/+2
It looks unintuitive when once needs to write cpu(0:3), so also allow cpu(0-3). Then it's quite stupid to enforce whitespace after the double colon before the curley braces open. So make this rather optional here. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-16trafgen: add csumicmp for ICMP checksum calculationDaniel Borkmann1-0/+2
Both, the IP and ICMP checksums use the same algorithm from RFC1071. Thus, it's enough if we give csumip an alias to csumicmp, so that it can be used in trafgen packet configurations. It's calculated from the ICMP header + data, with value 0 for this field. Suggested-by: Jon Schipp <jonschipp@gmail.com> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-15all: import netsniff-ng 0.5.8-rc0 sourceDaniel Borkmann1-0/+152
We decided to get rid of the old Git history and start a new one for several reasons: *) Allow / enforce only high-quality commits (which was not the case for many commits in the history), have a policy that is more close to the one from the Linux kernel. With high quality commits, we mean code that is logically split into commits and commit messages that are signed-off and have a proper subject and message body. We do not allow automatic Github merges anymore, since they are total bullshit. However, we will either cherry-pick your patches or pull them manually. *) The old archive was about ~27MB for no particular good reason. This basically derived from the bad decision that also some PDF files where stored there. From this moment onwards, no binary objects are allowed to be stored in this repository anymore. The old archive is not wiped away from the Internet. You will still be able to find it, e.g. on git.cryptoism.org etc. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>