summaryrefslogtreecommitdiffstats
path: root/src/expr/payload.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2013-07-09 20:42:58 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2013-07-09 20:42:58 +0200
commit91a2b2ab4753ecb7e6725f2b07d7fa759003fabe (patch)
tree644136428dd11bab12c3778c62488c3c2b73c6c9 /src/expr/payload.c
parent315f2228e89a5247d084a7e8df72e98b8dcb524a (diff)
expr: payload: fix printing of base
In (f95e859 src: improve default text output), it assumes all bases are network, but we may have link and transport as well. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expr/payload.c')
-rw-r--r--src/expr/payload.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/expr/payload.c b/src/expr/payload.c
index 449fbd6..776b0e3 100644
--- a/src/expr/payload.c
+++ b/src/expr/payload.c
@@ -294,6 +294,19 @@ nft_rule_expr_payload_snprintf_xml(char *buf, size_t len, uint32_t flags,
return offset;
}
+static char *base2str_array[NFT_PAYLOAD_TRANSPORT_HEADER+1] = {
+ [NFT_PAYLOAD_LL_HEADER] = "link",
+ [NFT_PAYLOAD_NETWORK_HEADER] = "network",
+ [NFT_PAYLOAD_TRANSPORT_HEADER] = "transport",
+};
+
+static const char *base2str(enum nft_payload_bases base)
+{
+ if (base > NFT_PAYLOAD_TRANSPORT_HEADER)
+ return "unknown";
+
+ return base2str_array[base];
+}
static int
nft_rule_expr_payload_snprintf(char *buf, size_t len, uint32_t type,
@@ -303,8 +316,9 @@ nft_rule_expr_payload_snprintf(char *buf, size_t len, uint32_t type,
switch(type) {
case NFT_RULE_O_DEFAULT:
- return snprintf(buf, len, "load %ub @ network header + %u => reg %u ",
- payload->dreg, payload->offset, payload->len);
+ return snprintf(buf, len, "load %ub @ %s header + %u => reg %u ",
+ payload->dreg, base2str(payload->base),
+ payload->offset, payload->len);
case NFT_RULE_O_XML:
return nft_rule_expr_payload_snprintf_xml(buf, len, flags,
payload);