mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	netfilter: nft_meta: place prandom handling in a helper
Move this out of the main eval loop, the numgen expression provides a better alternative to meta random. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
		
							parent
							
								
									8724e819cc
								
							
						
					
					
						commit
						6b2faee0ca
					
				
					 1 changed files with 9 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -266,6 +266,13 @@ static bool nft_meta_get_eval_ifname(enum nft_meta_keys key, u32 *dest,
 | 
			
		|||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static noinline u32 nft_prandom_u32(void)
 | 
			
		||||
{
 | 
			
		||||
	struct rnd_state *state = this_cpu_ptr(&nft_prandom_state);
 | 
			
		||||
 | 
			
		||||
	return prandom_u32_state(state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void nft_meta_get_eval(const struct nft_expr *expr,
 | 
			
		||||
		       struct nft_regs *regs,
 | 
			
		||||
		       const struct nft_pktinfo *pkt)
 | 
			
		||||
| 
						 | 
				
			
			@ -344,11 +351,9 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 | 
			
		|||
			goto err;
 | 
			
		||||
		break;
 | 
			
		||||
#endif
 | 
			
		||||
	case NFT_META_PRANDOM: {
 | 
			
		||||
		struct rnd_state *state = this_cpu_ptr(&nft_prandom_state);
 | 
			
		||||
		*dest = prandom_u32_state(state);
 | 
			
		||||
	case NFT_META_PRANDOM:
 | 
			
		||||
		*dest = nft_prandom_u32();
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
#ifdef CONFIG_XFRM
 | 
			
		||||
	case NFT_META_SECPATH:
 | 
			
		||||
		nft_reg_store8(dest, secpath_exists(skb));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue