From c6a30cfe9057a707f5c5b70ee247485872abc56c Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 15 Jan 2013 14:16:38 +0100 Subject: expr: add type and flags to snprintf interface Propagate the type and flags parameter to the expressions, so we can implement outputs in different formats. Signed-off-by: Pablo Neira Ayuso --- src/expr/bitwise.c | 3 ++- src/expr/cmp.c | 3 ++- src/expr/counter.c | 3 ++- src/expr/immediate.c | 3 ++- src/expr/match.c | 3 ++- src/expr/meta.c | 3 ++- src/expr/nat.c | 3 ++- src/expr/payload.c | 3 ++- src/expr/target.c | 3 ++- src/expr_ops.h | 2 +- src/rule.c | 2 +- 11 files changed, 20 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c index 8275758..fdab8e6 100644 --- a/src/expr/bitwise.c +++ b/src/expr/bitwise.c @@ -195,7 +195,8 @@ nft_rule_expr_bitwise_parse(struct nft_rule_expr *e, struct nlattr *attr) } static int -nft_rule_expr_bitwise_snprintf(char *buf, size_t size, struct nft_rule_expr *e) +nft_rule_expr_bitwise_snprintf(char *buf, size_t size, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_bitwise *bitwise = (struct nft_expr_bitwise *)e->data; int len = size, offset = 0, ret, i; diff --git a/src/expr/cmp.c b/src/expr/cmp.c index cabaddd..0849c49 100644 --- a/src/expr/cmp.c +++ b/src/expr/cmp.c @@ -166,7 +166,8 @@ static char *expr_cmp_str[] = { }; static int -nft_rule_expr_cmp_snprintf(char *buf, size_t size, struct nft_rule_expr *e) +nft_rule_expr_cmp_snprintf(char *buf, size_t size, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_cmp *cmp = (struct nft_expr_cmp *)e->data; int len = size, offset = 0, ret, i; diff --git a/src/expr/counter.c b/src/expr/counter.c index 26b7d6f..f0d7617 100644 --- a/src/expr/counter.c +++ b/src/expr/counter.c @@ -125,7 +125,8 @@ nft_rule_expr_counter_parse(struct nft_rule_expr *e, struct nlattr *attr) } static int -nft_rule_expr_counter_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_counter_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_counter *ctr = (struct nft_expr_counter *)e->data; diff --git a/src/expr/immediate.c b/src/expr/immediate.c index 68c27ec..b5ac602 100644 --- a/src/expr/immediate.c +++ b/src/expr/immediate.c @@ -195,7 +195,8 @@ nft_rule_expr_immediate_parse(struct nft_rule_expr *e, struct nlattr *attr) } static int -nft_rule_expr_immediate_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_immediate_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_immediate *imm = (struct nft_expr_immediate *)e->data; diff --git a/src/expr/match.c b/src/expr/match.c index 3fc8787..855d210 100644 --- a/src/expr/match.c +++ b/src/expr/match.c @@ -184,7 +184,8 @@ static int nft_rule_expr_match_parse(struct nft_rule_expr *e, struct nlattr *att } static int -nft_rule_expr_match_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_match_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_match *match = (struct nft_expr_match *)e->data; diff --git a/src/expr/meta.c b/src/expr/meta.c index 0251e43..b7cd201 100644 --- a/src/expr/meta.c +++ b/src/expr/meta.c @@ -125,7 +125,8 @@ nft_rule_expr_meta_parse(struct nft_rule_expr *e, struct nlattr *attr) } static int -nft_rule_expr_meta_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_meta_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_meta *meta = (struct nft_expr_meta *)e->data; diff --git a/src/expr/nat.c b/src/expr/nat.c index acd9839..17f4459 100644 --- a/src/expr/nat.c +++ b/src/expr/nat.c @@ -201,7 +201,8 @@ nft_rule_expr_nat_build(struct nlmsghdr *nlh, struct nft_rule_expr *e) } static int -nft_rule_expr_nat_snprintf(char *buf, size_t size, struct nft_rule_expr *e) +nft_rule_expr_nat_snprintf(char *buf, size_t size, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_nat *nat = (struct nft_expr_nat *)e->data; int len = size, offset = 0, ret = 0; diff --git a/src/expr/payload.c b/src/expr/payload.c index 746a127..f571206 100644 --- a/src/expr/payload.c +++ b/src/expr/payload.c @@ -164,7 +164,8 @@ nft_rule_expr_payload_parse(struct nft_rule_expr *e, struct nlattr *attr) } static int -nft_rule_expr_payload_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_payload_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_payload *payload = (struct nft_expr_payload *)e->data; diff --git a/src/expr/target.c b/src/expr/target.c index c14bf11..1ee7379 100644 --- a/src/expr/target.c +++ b/src/expr/target.c @@ -184,7 +184,8 @@ static int nft_rule_expr_target_parse(struct nft_rule_expr *e, struct nlattr *at } static int -nft_rule_expr_target_snprintf(char *buf, size_t len, struct nft_rule_expr *e) +nft_rule_expr_target_snprintf(char *buf, size_t len, uint32_t type, + uint32_t flags, struct nft_rule_expr *e) { struct nft_expr_target *target = (struct nft_expr_target *)e->data; diff --git a/src/expr_ops.h b/src/expr_ops.h index 2322958..d6e4ec9 100644 --- a/src/expr_ops.h +++ b/src/expr_ops.h @@ -16,7 +16,7 @@ struct expr_ops { const void *(*get)(struct nft_rule_expr *e, uint16_t type, size_t *data_len); int (*parse)(struct nft_rule_expr *e, struct nlattr *attr); void (*build)(struct nlmsghdr *nlh, struct nft_rule_expr *e); - int (*snprintf)(char *buf, size_t len, struct nft_rule_expr *e); + int (*snprintf)(char *buf, size_t len, uint32_t type, uint32_t flags, struct nft_rule_expr *e); }; struct expr_ops *nft_expr_ops_lookup(const char *name); diff --git a/src/rule.c b/src/rule.c index 6dc46f3..f87600d 100644 --- a/src/rule.c +++ b/src/rule.c @@ -336,7 +336,7 @@ int nft_rule_snprintf(char *buf, size_t size, struct nft_rule *r, ret = snprintf(buf+offset, len, "%s ", expr->ops->name); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - ret = expr->ops->snprintf(buf+offset, len, expr); + ret = expr->ops->snprintf(buf+offset, len, type, flags, expr); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); } ret = snprintf(buf+offset-1, len, "\n"); -- cgit v1.2.3