From 91a2b2ab4753ecb7e6725f2b07d7fa759003fabe Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 9 Jul 2013 20:42:58 +0200 Subject: 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 --- src/expr/payload.c | 18 ++++++++++++++++-- 1 file 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); -- cgit v1.2.3