summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2016-01-04 20:53:43 +0100
committerFlorian Westphal <fw@strlen.de>2016-01-04 20:53:43 +0100
commit7ad9e1f8ad4ba637be841d0573bdfdcf397f0815 (patch)
tree1c700561baa465690fb3eb41e1abeab9ac13367d /include
parentb99ec85e32947e337681aef8a29eae1c4c10f14e (diff)
ct: add support for directional keys
A few keys in the ct expression are directional, i.e. we need to tell kernel if it should fetch REPLY or ORIGINAL direction. Split ct_keys into ct_keys & ct_keys_dir, the latter are those keys that the kernel rejects unless also given a direction. During postprocessing we also need to invoke ct_expr_update_type, problem is that e.g. ct saddr can be any family (ip, ipv6) so we need to update the expected data type based on the network base. Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'include')
-rw-r--r--include/ct.h4
-rw-r--r--include/expression.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/include/ct.h b/include/ct.h
index 64366ab7..945fcc4d 100644
--- a/include/ct.h
+++ b/include/ct.h
@@ -24,7 +24,9 @@ struct ct_template {
}
extern struct expr *ct_expr_alloc(const struct location *loc,
- enum nft_ct_keys key);
+ enum nft_ct_keys key, int8_t direction);
extern void ct_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
+extern struct error_record *ct_dir_parse(const struct location *loc,
+ const char *str, int8_t *dir);
#endif /* NFTABLES_CT_H */
diff --git a/include/expression.h b/include/expression.h
index 010cb954..eacbb2d5 100644
--- a/include/expression.h
+++ b/include/expression.h
@@ -273,6 +273,7 @@ struct expr {
struct {
/* EXPR_CT */
enum nft_ct_keys key;
+ int8_t direction;
} ct;
};
};