Implemented 'dinc' and 'drnd' functions to be used for proto fields, and generate values at runtime. Parsing of proto field values for unified to make extending of field functions more easier w/o copy/paste similar rules for each proto field. Instead of that the field_expr struct is used to keep specified field and value which might be a func in the following form:
<proto>(<field>=<func>()) Fields which has dynamic functions are stored in packet_dyn structure and generated after each packet run. After fields are updated the L3/L4 headers updates its csum if it is needed. Changed field lookup logic to make field set/get operations a little bit faster by using field id as index in the array, as usually fields are defined regarding its index. Example: { eth(sa=11:22:33:44:55:66, sa=dinc()), udp(sp=drnd(), dp=drnd()) } Vadim Kochan (15): trafgen: Move applying dynamic elements to function trafgen: proto: Reference to packet from proto_hdr struct trafgen: proto: Move proto headers into packet trafgen: proto: Force field id to be index in array trafgen: proto: Increment proto field at runtime trafgen: proto: Randomize proto field at runtime trafgen: ipv4: Update csum at runtime if needed trafgen: icmpv4: Update csum at runtime if needed trafgen: icmpv6: Update csum at runtime if needed trafgen: udp: Update csum at runtime if needed trafgen: tcp: Update csum at runtime if it needed trafgen: parser: Unify proto field value parsing trafgen: parser: Add support of 'dinc' function for proto fields trafgen: parser: Add 'drnd()' function for proto fields trafgen: man: Add description for 'dinc' and 'drnd' field functions trafgen.8 | 34 ++++- trafgen.c | 34 +++-- trafgen_conf.h | 15 ++ trafgen_l3.c | 51 ++++++- trafgen_l3.h | 4 +- trafgen_l4.c | 101 +++++++++---- trafgen_parser.y | 445 +++++++++++++++++++++++++++++++++++++------------------ trafgen_proto.c | 205 ++++++++++++++++++++----- trafgen_proto.h | 39 +++++ 9 files changed, 695 insertions(+), 233 deletions(-) -- 2.6.3 -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to netsniff-ng+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.