diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-09 20:42:58 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-09 20:42:58 +0200 |
commit | 91a2b2ab4753ecb7e6725f2b07d7fa759003fabe (patch) | |
tree | 644136428dd11bab12c3778c62488c3c2b73c6c9 /src | |
parent | 315f2228e89a5247d084a7e8df72e98b8dcb524a (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')
-rw-r--r-- | src/expr/payload.c | 18 |
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); |