]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/sched/act_ipt.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[karo-tx-linux.git] / net / sched / act_ipt.c
index 39a22a3ffe78822636cad6306536916c368e5f19..37640c6fc014c4c8a53a01609cbc78a51cbc7de6 100644 (file)
@@ -69,8 +69,14 @@ ipt_init_target(struct ipt_entry_target *t, char *table, unsigned int hook)
        DPRINTK("ipt_init_target: found %s\n", target->name);
        t->u.kernel.target = target;
 
+       ret = xt_check_target(target, AF_INET, t->u.target_size - sizeof(*t),
+                             table, hook, 0, 0);
+       if (ret)
+               return ret;
+
        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 +92,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 +230,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;