NF_BR_PRE_ROUTING
if (!static_key_false(&nf_hooks_needed[NFPROTO_BRIDGE][NF_BR_PRE_ROUTING]))
e = rcu_dereference(net->nf.hooks_bridge[NF_BR_PRE_ROUTING]);
nf_hook_state_init(&state, NF_BR_PRE_ROUTING,
.hooknum = NF_BR_PRE_ROUTING,
br_nf_hook_thresh(NF_BR_PRE_ROUTING,
br_nf_hook_thresh(NF_BR_PRE_ROUTING, net, sk, skb, skb->dev, NULL,
br_nf_hook_thresh(NF_BR_PRE_ROUTING,
br_nf_hook_thresh(NF_BR_PRE_ROUTING, net, sk, skb,
.hooks = (1 << NF_BR_NUMHOOKS) | (1 << NF_BR_PRE_ROUTING),
case NF_BR_PRE_ROUTING:
(hook_mask & ~((1 << NF_BR_PRE_ROUTING) |
.hooks = (1 << NF_BR_NUMHOOKS) | (1 << NF_BR_PRE_ROUTING) |
hook_mask & ~(1 << NF_BR_PRE_ROUTING)) &&
.hooks = (1 << NF_BR_NUMHOOKS) | (1 << NF_BR_PRE_ROUTING) |
.hooknum = NF_BR_PRE_ROUTING,
#define NAT_VALID_HOOKS ((1 << NF_BR_PRE_ROUTING) | (1 << NF_BR_LOCAL_OUT) | \
[NF_BR_PRE_ROUTING] = &initial_chains[0],
.hooknum = NF_BR_PRE_ROUTING,
.hooknum = NF_BR_PRE_ROUTING,
hooks = 1 << NF_BR_PRE_ROUTING;
hooks = 1 << NF_BR_PRE_ROUTING;
return nft_chain_validate_hooks(ctx->chain, (1 << NF_BR_PRE_ROUTING) |
.hook_mask = (1 << NF_BR_PRE_ROUTING) |
[NF_BR_PRE_ROUTING] = nft_do_chain_bridge,
hooks = 1 << NF_BR_PRE_ROUTING;