]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
src: display offset only if present in hash and numgen expressions
authorPablo Neira Ayuso <pablo@netfilter.org>
Fri, 23 Sep 2016 08:16:53 +0000 (10:16 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 23 Sep 2016 08:16:53 +0000 (10:16 +0200)
So nft payload python tests don't break.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/expr/hash.c
src/expr/numgen.c

index 08f09f51e4863d777a534f3903c7411907e1efc5..c235502870e6f70b90402fe48cd33e74a314083a 100644 (file)
@@ -214,12 +214,16 @@ nftnl_expr_hash_snprintf_default(char *buf, size_t size,
        struct nftnl_expr_hash *hash = nftnl_expr_data(e);
        int len = size, offset = 0, ret;
 
-       ret = snprintf(buf, len,
-                      "reg %u = %u + jhash(reg %u, %u, 0x%x) %% mod %u ",
-                      hash->offset, hash->dreg, hash->sreg, hash->len,
-                      hash->seed, hash->modulus);
+       ret = snprintf(buf, len, "reg %u = jhash(reg %u, %u, 0x%x) %% mod %u ",
+                      hash->dreg, hash->sreg, hash->len, hash->seed,
+                      hash->modulus);
        SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
 
+       if (hash->offset) {
+               ret = snprintf(buf, len, "offset %u ", hash->offset);
+               SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+       }
+
        return offset;
 }
 
index f5ca3fde025e7306965f7e5e6299a41c549425a5..e4e055e347a324667c003f714205520a075dd215 100644 (file)
@@ -180,17 +180,22 @@ nftnl_expr_ng_snprintf_default(char *buf, size_t size,
 
        switch (ng->type) {
        case NFT_NG_INCREMENTAL:
-               ret = snprintf(buf, len, "reg %u = %u + inc mod %u ", ng->dreg,
-                              ng->offset, ng->modulus);
+               ret = snprintf(buf, len, "reg %u = inc mod %u ",
+                              ng->dreg, ng->modulus);
                SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
                break;
        case NFT_NG_RANDOM:
-               ret = snprintf(buf, len, "reg %u = %u + random mod %u ",
-                              ng->dreg, ng->offset, ng->modulus);
+               ret = snprintf(buf, len, "reg %u = random mod %u ",
+                              ng->dreg, ng->modulus);
                SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
                break;
        default:
-               break;
+               return 0;
+       }
+
+       if (ng->offset) {
+               ret = snprintf(buf, len, "offset %u ", ng->offset);
+               SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
        }
 
        return offset;