summaryrefslogtreecommitdiff
path: root/trafgen_proto.h
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2016-08-13 02:11:11 +0300
committerTobias Klauser <tklauser@distanz.ch>2016-09-21 09:53:42 +0200
commit208db0e4a3ceb21a65527d87198cf6f49c4b06dc (patch)
tree98b5a9105a0ac701ca659af655218303e9e8936e /trafgen_proto.h
parente7dd63060e448bf6667c92a3b774cec0feeff452 (diff)
trafgen: proto: Increment proto field at runtime
Implement incrementing of proto field at runtime with min & max parameters, by default if the 'min' parameter is not specified then original value is used. For fields which len is greater than 4 - last 4 bytes are incremented as 4 byte value (this trick is used to increment MAC/IPv6 addresses). Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen_proto.h')
-rw-r--r--trafgen_proto.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/trafgen_proto.h b/trafgen_proto.h
index 6cdc51f..0a1c3de 100644
--- a/trafgen_proto.h
+++ b/trafgen_proto.h
@@ -51,7 +51,18 @@ struct proto_hdr {
size_t len;
};
+enum proto_field_func_t {
+ PROTO_FIELD_FUNC_INC = 1 << 0,
+ PROTO_FIELD_FUNC_MIN = 1 << 1,
+};
+
struct proto_field_func {
+ enum proto_field_func_t type;
+ uint32_t min;
+ uint32_t max;
+ int32_t inc;
+ uint32_t val;
+
void (*update_field)(struct proto_field *field);
};