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.

Reply via email to