Hi, This is the 1-st "try" version of how I see the protocol generation API for the trafgen util as mz replacement (at least for better performance).
I am sending this just because to get your feedback about conceptual idea, and as soon as I got some basic working version I decided to share the code just to get know if I am moving in the right direction. Added high-level command line protocol packet building intreface, which allows to specify protocol parameters to build the header and payload. Each protocol is represented by proto_gen struct which is responsible only for providing field info (size, data) by name to trafgen's low level packet generation layer. All packet generation routine is performed by the generic code in trafgen.c which parses the command line, obtains proto name, param=value list and calls the specific protocol handler to get protocol field info by name, so the TX routine remains the same. The command line syntax looks like: trafgen/trafgen --dev lo eth da = AA:BB:CC:DD:EE:FF sa=11:22:33:44:55:66, arp op=rep tip=192.168.1.1 -n 1 so the first is proto name and after there are param value pairs which are separated by space, in case if there are multiple protocols specified - their should be separated by "," after last param value of the previous protocol. I think the picture will be more clear after adding IP protocol with checksum handling. Vadim Kochan (10): trafgen: Move ctx struct to separated header str: Add converting cmdline args vector to str trafgen: Export packet manipulation funcs for proto gen trafgen: Add helper to get current packet str: Add converting hex string to bytes net_utils: Add net_utils module for net helper funcs dev: Add func to get device's hw address trafgen: Add basic protocol generation API layer2_gen: Add Ethernet L2 layer proto generation layer2_gen: Add ARP L2 layer protocol generation dev.c | 23 +++++ dev.h | 1 + layer2_gen.c | 310 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ net_utils.c | 41 ++++++++ net_utils.h | 7 ++ netsniff-ng.c | 18 +--- proto_gen.c | 160 ++++++++++++++++++++++++++++ proto_gen.h | 68 ++++++++++++ str.c | 87 ++++++++++++++++ str.h | 2 + trafgen.c | 254 +++++++++++++++++++++++++++++++++++++++++---- trafgen.h | 21 ++++ trafgen/Makefile | 3 + trafgen_conf.h | 7 ++ trafgen_parser.y | 13 ++- 15 files changed, 975 insertions(+), 40 deletions(-) create mode 100644 layer2_gen.c create mode 100644 net_utils.c create mode 100644 net_utils.h create mode 100644 proto_gen.c create mode 100644 proto_gen.h create mode 100644 trafgen.h -- 2.4.2 -- 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.