]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
expr: payload: fix printing of base
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 9 Jul 2013 18:42:58 +0000 (20:42 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 9 Jul 2013 18:42:58 +0000 (20:42 +0200)
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>
src/expr/payload.c

index 449fbd6e7335963ec7ff4e28b56d1df6a4a46a9c..776b0e31261433f0307a71f365bfa0271cb68446 100644 (file)
@@ -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);