trafgen: parser: Add syntax for IPv4 protocol generation
commitbe21df123309c83cd47a1fa5f2c0ee1cf4657810
authorVadim Kochan <vadim4j@gmail.com>
Thu, 28 Jan 2016 22:06:25 +0000 (29 00:06 +0200)
committerTobias Klauser <tklauser@distanz.ch>
Fri, 29 Jan 2016 07:58:54 +0000 (29 08:58 +0100)
tree5330fb556f0f2825a4a5d4a174dc31951ba8fb98
parentbaf47305fabce02017642b0f43472ab5a4eaa533
trafgen: parser: Add syntax for IPv4 protocol generation

Add 'ip4(), ipv4()' function to build IPv4 header.

Fields supported:

ihl IPv4 header length (default 5 )
ver|version IPv4 version (default 4)
ttl Time To Live (TTL) field (default 0)
dscp DiffServ field (default 0)
ecn ECN bits (default 0)
tos TOS (DSCP + ECN) field (default 0)
len|length IPv4 header + payload length (calculated by default)
id Identifier (default 0)
flags Flags field (default 0)
frag Fragment offset (default 0)
csum IPv4 header checksum (calculated by default)
df Set DF (Dont Fragment) bit to 1 (default is 0)
mf Set MF (More Fragments) bit to 1 (default is 0)
sa|saddr        IPv4 source address (default used from output device)
da|daddr IPv4 destination address (default 0.0.0.0)
proto IPv4 protocol id (default 0)

Example:

    { ip4(df, mf, frag=100, prot=0x1, ecn=2, dscp=20) }
    { ip4(da=1.1.1.1), ip4(sa=3.3.3.3, da=3.3.3.4) }

Last example generates IP-in-IP packet.

Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
trafgen_lexer.l
trafgen_parser.y