Merge branch 'master' of /repos/git/net-next-2.6
[safe/jmp/linux-2.6] / net / bridge / netfilter / ebt_dnat.c
index bb5d79e..6b49ea9 100644 (file)
@@ -26,19 +26,20 @@ ebt_dnat_tg(struct sk_buff *skb, const struct xt_target_param *par)
        return info->target;
 }
 
-static bool
-ebt_dnat_tg_check(const char *tablename, const void *entry,
-                 const struct xt_target *target, void *data,
-                 unsigned int hookmask)
+static bool ebt_dnat_tg_check(const struct xt_tgchk_param *par)
 {
-       const struct ebt_nat_info *info = data;
+       const struct ebt_nat_info *info = par->targinfo;
+       unsigned int hook_mask;
 
        if (BASE_CHAIN && info->target == EBT_RETURN)
                return false;
-       CLEAR_BASE_CHAIN_BIT;
-       if ( (strcmp(tablename, "nat") ||
-          (hookmask & ~((1 << NF_BR_PRE_ROUTING) | (1 << NF_BR_LOCAL_OUT)))) &&
-          (strcmp(tablename, "broute") || hookmask & ~(1 << NF_BR_BROUTING)) )
+
+       hook_mask = par->hook_mask & ~(1 << NF_BR_NUMHOOKS);
+       if ((strcmp(par->table, "nat") != 0 ||
+           (hook_mask & ~((1 << NF_BR_PRE_ROUTING) |
+           (1 << NF_BR_LOCAL_OUT)))) &&
+           (strcmp(par->table, "broute") != 0 ||
+           hook_mask & ~(1 << NF_BR_BROUTING)))
                return false;
        if (INVALID_TARGET)
                return false;