]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
fib: Add support for NFTA_FIB_F_PRESENT flag
authorPhil Sutter <phil@nwl.cc>
Sat, 11 Mar 2017 13:27:16 +0000 (14:27 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 13 Mar 2017 11:13:04 +0000 (12:13 +0100)
Reflect existence of flag in debug output so testsuite can check for it.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/linux/netfilter/nf_tables.h
src/expr/fib.c

index 4f7d75682c5917cf9b26e70d9ac09b2e02d8ed7c..a9280a6541ac6104586e4c86c90466a087b13db6 100644 (file)
@@ -1257,6 +1257,7 @@ enum nft_fib_flags {
        NFTA_FIB_F_MARK         = 1 << 2,       /* use skb->mark */
        NFTA_FIB_F_IIF          = 1 << 3,       /* restrict to iif */
        NFTA_FIB_F_OIF          = 1 << 4,       /* restrict to oif */
+       NFTA_FIB_F_PRESENT      = 1 << 5,       /* check existence only */
 };
 
 #define NFT_OBJECT_UNSPEC      0
index 9e63621e72877ca94e2d39b5377b92208f7d9a82..f3be0810d3250527482fc25a0e7e08ab342b75c5 100644 (file)
@@ -173,7 +173,8 @@ nftnl_expr_fib_snprintf_default(char *buf, size_t size,
 {
        struct nftnl_expr_fib *fib = nftnl_expr_data(e);
        int len = size, offset = 0, ret, i;
-       uint32_t flags = fib->flags;
+       uint32_t flags = fib->flags & ~NFTA_FIB_F_PRESENT;
+       uint32_t present_flag = fib->flags & NFTA_FIB_F_PRESENT;
        static const struct {
                int bit;
                const char *name;
@@ -203,7 +204,10 @@ nftnl_expr_fib_snprintf_default(char *buf, size_t size,
                SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
        }
 
-       ret = snprintf(buf + offset, len, "%s => reg %d ", fib_type_str(fib->result), fib->dreg);
+       ret = snprintf(buf + offset, len, "%s%s => reg %d ",
+                      fib_type_str(fib->result),
+                      present_flag ? " present" : "",
+                      fib->dreg);
        SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
 
        return offset;