[NETFILTER]: x_tables: pass registered match/target data to match/target functions
This allows to make decisions based on the revision (and address family with a follow-up patch) at runtime. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5d04bff096
commit
1c524830d0
@ -70,7 +70,8 @@ ipt_init_target(struct ipt_entry_target *t, char *table, unsigned int hook)
|
||||
t->u.kernel.target = target;
|
||||
|
||||
if (t->u.kernel.target->checkentry
|
||||
&& !t->u.kernel.target->checkentry(table, NULL, t->data,
|
||||
&& !t->u.kernel.target->checkentry(table, NULL,
|
||||
t->u.kernel.target, t->data,
|
||||
t->u.target_size - sizeof(*t),
|
||||
hook)) {
|
||||
DPRINTK("ipt_init_target: check failed for `%s'.\n",
|
||||
@ -86,7 +87,7 @@ static void
|
||||
ipt_destroy_target(struct ipt_entry_target *t)
|
||||
{
|
||||
if (t->u.kernel.target->destroy)
|
||||
t->u.kernel.target->destroy(t->data,
|
||||
t->u.kernel.target->destroy(t->u.kernel.target, t->data,
|
||||
t->u.target_size - sizeof(*t));
|
||||
module_put(t->u.kernel.target->me);
|
||||
}
|
||||
@ -224,8 +225,9 @@ tcf_ipt(struct sk_buff *skb, struct tc_action *a, struct tcf_result *res)
|
||||
/* iptables targets take a double skb pointer in case the skb
|
||||
* needs to be replaced. We don't own the skb, so this must not
|
||||
* happen. The pskb_expand_head above should make sure of this */
|
||||
ret = p->t->u.kernel.target->target(&skb, skb->dev, NULL,
|
||||
p->hook, p->t->data, NULL);
|
||||
ret = p->t->u.kernel.target->target(&skb, skb->dev, NULL, p->hook,
|
||||
p->t->u.kernel.target, p->t->data,
|
||||
NULL);
|
||||
switch (ret) {
|
||||
case NF_ACCEPT:
|
||||
result = TC_ACT_OK;
|
||||
|
Reference in New Issue
Block a user