Add new trafgen proto generation framework which allows to describe proto header fields and easy build the proto header by set/get proto header fields value.
Meanwhile implemented Ethernet, ARP & IPv4 proto headers generation, with fixed header size. Each proto has its own syntax rules to specify header field, but really looks similary: { <proto>(<field_1>=<value>,<flag>, <field_2>=<value>) } Proto statement might be combined with other packet funcs like: { ip(mf, proto=0x1), fill(0xff, 100) } Each proto generates some default header so it is not possible to fill packet only with some set of header fields and rest - via fill(..) func. Currently there is no runtime invoking of proto fields description but is planned to be added in separate series. Vadim Kochan (13): trafgen: Export set_fill func trafgen: Add helper to get current packet dev: Add func to get device's hw address trafgen: Add basic proto generation logic trafgen: proto: Add func for set device mac to field trafgen: l2: Add Ethernet proto header generation str: Add str2mac helper function trafgen: parser: Add syntax to generate Ethernet header trafgen: proto: Add func to fill field with device ipv4 addr trafgen: l2: Add ARP header generation logic trafgen: parser: Add syntax to generate ARP header fields trafgen: l3: Add IPv4 header generation backend trafgen: parser: Add syntax for IPv4 proto dev.c | 23 ++++ dev.h | 1 + str.c | 25 ++++ str.h | 1 + trafgen.c | 3 + trafgen/Makefile | 3 + trafgen_conf.h | 4 + trafgen_l2.c | 76 ++++++++++++ trafgen_l2.h | 24 ++++ trafgen_l3.c | 71 +++++++++++ trafgen_l3.h | 26 ++++ trafgen_lexer.l | 45 +++++++ trafgen_parser.y | 151 ++++++++++++++++++++++- trafgen_proto.c | 360 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ trafgen_proto.h | 88 ++++++++++++++ 15 files changed, 899 insertions(+), 2 deletions(-) create mode 100644 trafgen_l2.c create mode 100644 trafgen_l2.h create mode 100644 trafgen_l3.c create mode 100644 trafgen_l3.h create mode 100644 trafgen_proto.c create mode 100644 trafgen_proto.h -- 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.