From e2b25ccc31b8262a0739b46337fbb354e00aa1d6 Mon Sep 17 00:00:00 2001 From: Liping Zhang Date: Sat, 15 Apr 2017 17:22:17 +0800 Subject: hash: generate a random seed if seed option is empty Typing the "nft add rule x y ct mark set jhash ip saddr mod 2" will not generate a random seed, instead, the seed will always be zero. So if seed option is empty, we shoulde not set the NFTA_HASH_SEED attribute, then a random seed will be generated in the kernel. Signed-off-by: Liping Zhang Signed-off-by: Pablo Neira Ayuso --- src/parser_bison.y | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/parser_bison.y') diff --git a/src/parser_bison.y b/src/parser_bison.y index 9f993fd3..8db887a4 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -520,7 +520,7 @@ static void location_update(struct location *loc, struct location *rhs, int n) %destructor { stmt_free($$); } reject_stmt reject_stmt_alloc %type nat_stmt nat_stmt_alloc masq_stmt masq_stmt_alloc redir_stmt redir_stmt_alloc %destructor { stmt_free($$); } nat_stmt nat_stmt_alloc masq_stmt masq_stmt_alloc redir_stmt redir_stmt_alloc -%type nf_nat_flags nf_nat_flag offset_opt seed_opt +%type nf_nat_flags nf_nat_flag offset_opt %type queue_stmt queue_stmt_alloc %destructor { stmt_free($$); } queue_stmt queue_stmt_alloc %type queue_stmt_flags queue_stmt_flag @@ -3092,18 +3092,19 @@ numgen_expr : NUMGEN numgen_type MOD NUM offset_opt } ; -seed_opt : /* empty */ { $$ = 0; } - | SEED NUM { $$ = $2; } - ; - -hash_expr : JHASH expr MOD NUM seed_opt offset_opt +hash_expr : JHASH expr MOD NUM SEED NUM offset_opt + { + $$ = hash_expr_alloc(&@$, $4, true, $6, $7, NFT_HASH_JENKINS); + $$->hash.expr = $2; + } + | JHASH expr MOD NUM offset_opt { - $$ = hash_expr_alloc(&@$, $4, $5, $6, NFT_HASH_JENKINS); + $$ = hash_expr_alloc(&@$, $4, false, 0, $5, NFT_HASH_JENKINS); $$->hash.expr = $2; } | SYMHASH MOD NUM offset_opt { - $$ = hash_expr_alloc(&@$, $3, 0, $4, NFT_HASH_SYM); + $$ = hash_expr_alloc(&@$, $3, false, 0, $4, NFT_HASH_SYM); } ; -- cgit v1.2.3