summaryrefslogtreecommitdiff
path: root/trafgen
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2016-01-26 22:24:59 +0200
committerTobias Klauser <tklauser@distanz.ch>2016-01-28 16:04:39 +0100
commite476a36e65cd8508c6473a19e497fb04487e2214 (patch)
treefda95e71b99c875684d84e103ee5e510e1a5016f /trafgen
parentbc412cb595d8a06ae47ffc90602a25ecbde81e0d (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/Makefile1
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