path: root/include
diff options
authorPatrick McHardy <>2014-01-08 13:02:15 +0000
committerPatrick McHardy <>2014-01-08 13:02:15 +0000
commit77ef4d83c8d030b183ff763605b2c3026545fc9c (patch)
tree8ad321d7a8d5f285d84f3873c75f65c408ec11be /include
parent8f86606efe82489945db1706bd1d1a4d524afcad (diff)
expr: add protocol context update callback
Add a callback function to the expression ops to update the protocol context for relational protocol expressions (EXPR_F_PROTOCOL). Also set the EXPR_F_PROTOCOL flag for IIFTYPE meta expressions to make sure the callback is invoked when necessary. Signed-off-by: Patrick McHardy <>
Diffstat (limited to 'include')
3 files changed, 4 insertions, 5 deletions
diff --git a/include/expression.h b/include/expression.h
index 2b7b3795..59b27c08 100644
--- a/include/expression.h
+++ b/include/expression.h
@@ -118,7 +118,9 @@ static inline void expr_set_context(struct expr_ctx *ctx,
* @destroy: destructor, must release inner expressions
* @set_type: function to promote type and byteorder of inner types
* @print: function to print the expression
+ * @pctx_update:update protocol context
+struct proto_ctx;
struct expr_ops {
enum expr_types type;
const char *name;
@@ -128,6 +130,8 @@ struct expr_ops {
const struct datatype *dtype,
enum byteorder byteorder);
void (*print)(const struct expr *expr);
+ void (*pctx_update)(struct proto_ctx *ctx,
+ const struct expr *expr);
diff --git a/include/meta.h b/include/meta.h
index 23f78cf1..459221fb 100644
--- a/include/meta.h
+++ b/include/meta.h
@@ -25,7 +25,5 @@ struct meta_template {
extern struct expr *meta_expr_alloc(const struct location *loc,
enum nft_meta_keys key);
-extern void meta_expr_pctx_update(struct proto_ctx *ctx,
- const struct expr *expr);
#endif /* NFTABLES_META_H */
diff --git a/include/payload.h b/include/payload.h
index 54d8d547..d47e5645 100644
--- a/include/payload.h
+++ b/include/payload.h
@@ -10,9 +10,6 @@ extern struct expr *payload_expr_alloc(const struct location *loc,
extern void payload_init_raw(struct expr *expr, enum proto_bases base,
unsigned int offset, unsigned int len);
-extern void payload_expr_pctx_update(struct proto_ctx *ctx,
- const struct expr *expr);
struct eval_ctx;
extern int payload_gen_dependency(struct eval_ctx *ctx, const struct expr *expr,
struct expr **res);