diff options
author | Vadim Kochan <vadim4j@gmail.com> | 2016-01-26 22:24:59 +0200 |
---|---|---|
committer | Tobias Klauser <tklauser@distanz.ch> | 2016-01-28 16:04:39 +0100 |
commit | e476a36e65cd8508c6473a19e497fb04487e2214 (patch) | |
tree | fda95e71b99c875684d84e103ee5e510e1a5016f /trafgen | |
parent | bc412cb595d8a06ae47ffc90602a25ecbde81e0d (diff) |
trafgen: Add basic protocol generation logic
Add new trafgen_proto.c module with basic protocol header fields
generation logic. This will allow to support protocol specific keywords
in the trafgen configuration language.
Each protocol must implement struct proto_hdr and register it to the
global proto list.
Protocol headers consist of a set of fields, and each field must be
described via struct proto_field by specifying unique id, length and
offset (relative to the header start). Fields smaller than 8 bits can be
described via left shift & mask.
The following callbacks are invoked to perform special actions to build
the header during parsing:
1) header_init - required fields must be added to the packet and
initialized with default values.
2) header_finish - it is invoked when header is specified, all user
specified fields are set.
3) packet_finish - callback is invoked from upper to lower header
to calculate fields depending on upper layers such as total
length or checksum.
The protocol generation API provides convenience protocol field
setters/getters to to be used in the parser while crafting the packet.
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
[tk: wordsmithing on commit message, minor variable type changes]
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen')
-rw-r--r-- | trafgen/Makefile | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/trafgen/Makefile b/trafgen/Makefile index bc256b2..2ea684f 100644 --- a/trafgen/Makefile +++ b/trafgen/Makefile @@ -19,6 +19,7 @@ trafgen-objs = xmalloc.o \ timer.o \ sysctl.o \ cpp.o \ + trafgen_proto.o \ trafgen_lexer.yy.o \ trafgen_parser.tab.o \ trafgen.o |