netfilter: x_tables: move hook state into xt_action_param structure
Place pointer to hook state in xt_action_param structure instead of copying the fields that we need. After this change xt_action_param fits into one cacheline. This patch also adds a set of new wrapper functions to fetch relevant hook state structure fields. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
@@ -213,6 +213,12 @@ static int tcf_ipt(struct sk_buff *skb, const struct tc_action *a,
|
||||
int ret = 0, result = 0;
|
||||
struct tcf_ipt *ipt = to_ipt(a);
|
||||
struct xt_action_param par;
|
||||
struct nf_hook_state state = {
|
||||
.net = dev_net(skb->dev),
|
||||
.in = skb->dev,
|
||||
.hook = ipt->tcfi_hook,
|
||||
.pf = NFPROTO_IPV4,
|
||||
};
|
||||
|
||||
if (skb_unclone(skb, GFP_ATOMIC))
|
||||
return TC_ACT_UNSPEC;
|
||||
@@ -226,13 +232,9 @@ static int tcf_ipt(struct sk_buff *skb, const struct tc_action *a,
|
||||
* worry later - danger - this API seems to have changed
|
||||
* from earlier kernels
|
||||
*/
|
||||
par.net = dev_net(skb->dev);
|
||||
par.in = skb->dev;
|
||||
par.out = NULL;
|
||||
par.hooknum = ipt->tcfi_hook;
|
||||
par.state = &state;
|
||||
par.target = ipt->tcfi_t->u.kernel.target;
|
||||
par.targinfo = ipt->tcfi_t->data;
|
||||
par.family = NFPROTO_IPV4;
|
||||
ret = par.target->target(skb, &par);
|
||||
|
||||
switch (ret) {
|
||||
|
Reference in New Issue
Block a user