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 & UDP 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:

    { ip4(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.

v2:
   1) Reworked to allow specify same header multiple times and in any order.

   2) Replaced int's -> uint32_t, uses size_t for len variables.

   3) All field setters/getters changed signature so they take
      proto_hdr pointer istead of proto id.

   4) Used ip4/ipv4 for IPv4 header name.

   5) use K_ for all newer added keywords instead of P_, F_.

   6) Add UDP header generation backend + syntax.

   7) Add description of proto header syntax usage to trafgen.8 .

   8) Extended IPv4 version field name to "version".

   9) Extended IPv4 length field name to "length".

Vadim Kochan (16):
  trafgen: Export set_fill func
  trafgen: Add helper to get current packet
  trafgen: Add basic proto generation logic
  dev: Add func to get device's hw address
  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
  trafgen: l4: Add UDP header generation logic
  trafgen: parser: Add syntax to build UDP header
  trafgen: man: Add help for Ethernet, ARP, IPv4, UDP headers

 dev.c            |  23 ++++
 dev.h            |   1 +
 str.c            |  25 ++++
 str.h            |   1 +
 trafgen.8        | 174 ++++++++++++++++++++++++
 trafgen.c        |   3 +
 trafgen/Makefile |   4 +
 trafgen_conf.h   |   4 +
 trafgen_l2.c     |  84 ++++++++++++
 trafgen_l2.h     |  24 ++++
 trafgen_l3.c     |  82 ++++++++++++
 trafgen_l3.h     |  26 ++++
 trafgen_l4.c     |  71 ++++++++++
 trafgen_l4.h     |  14 ++
 trafgen_lexer.l  |  49 +++++++
 trafgen_parser.y | 180 ++++++++++++++++++++++++-
 trafgen_proto.c  | 401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 trafgen_proto.h  | 102 ++++++++++++++
 18 files changed, 1266 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_l4.c
 create mode 100644 trafgen_l4.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.

Reply via email to