compat_xtables: move to 2.6.35 xt_action_param (1/3)

This commit is contained in:
Jan Engelhardt
2010-05-13 16:22:36 +02:00
parent 4dd35fb564
commit 5b472be9bb
27 changed files with 115 additions and 68 deletions

View File

@@ -478,7 +478,7 @@ static void ipt_acc_depth2_insert(struct ipt_acc_mask_8 *mask_8,
} }
} }
static unsigned int ipt_acc_target(struct sk_buff **pskb, const struct xt_target_param *par) static unsigned int ipt_acc_target(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct ipt_acc_info *info = const struct ipt_acc_info *info =
par->targinfo; par->targinfo;

View File

@@ -1,6 +1,6 @@
/* /*
* API compat layer * API compat layer
* written by Jan Engelhardt <jengelh [at] medozas de>, 2008 * written by Jan Engelhardt <jengelh [at] medozas de>, 2008 - 2010
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License, either * modify it under the terms of the GNU General Public License, either
@@ -35,16 +35,15 @@ static bool xtnu_match_run(const struct sk_buff *skb,
{ {
struct xtnu_match *nm = xtcompat_numatch(cm); struct xtnu_match *nm = xtcompat_numatch(cm);
bool lo_drop = false, lo_ret; bool lo_drop = false, lo_ret;
struct xt_match_param local_par = { struct xt_action_param local_par;
.in = in, local_par.in = in;
.out = out, local_par.out = out;
.match = cm, local_par.match = cm;
.matchinfo = matchinfo, local_par.matchinfo = matchinfo;
.fragoff = offset, local_par.fragoff = offset;
.thoff = protoff, local_par.thoff = protoff;
.hotdrop = &lo_drop, local_par.hotdrop = &lo_drop;
.family = NFPROTO_UNSPEC, /* don't have that info */ local_par.family = NFPROTO_UNSPEC; /* don't have that info */
};
if (nm == NULL || nm->match == NULL) if (nm == NULL || nm->match == NULL)
return false; return false;
@@ -53,6 +52,28 @@ static bool xtnu_match_run(const struct sk_buff *skb,
return lo_ret; return lo_ret;
} }
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) && \
LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 34)
static bool xtnu_match_run(const struct sk_buff *skb,
const struct xt_match_param *par)
{
struct xtnu_match *nm = xtcompat_numatch(par->match);
struct xt_action_param local_par;
local_par.in = par->in;
local_par.out = par->out;
local_par.match = par->match;
local_par.matchinfo = par->matchinfo;
local_par.fragoff = par->fragoff;
local_par.thoff = par->thoff;
local_par.hotdrop = par->hotdrop;
local_par.family = par->family;
if (nm == NULL || nm->match == NULL)
return false;
return nm->match(skb, &local_par);
}
#endif
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18) #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)
static int xtnu_match_check(const char *table, const void *entry, static int xtnu_match_check(const char *table, const void *entry,
@@ -144,6 +165,10 @@ int xtnu_register_match(struct xtnu_match *nt)
ct->match = xtnu_match_run; ct->match = xtnu_match_run;
ct->checkentry = xtnu_match_check; ct->checkentry = xtnu_match_check;
ct->destroy = xtnu_match_destroy; ct->destroy = xtnu_match_destroy;
#elif LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 34)
ct->match = xtnu_match_run;
ct->checkentry = xtnu_match_check;
ct->destroy = nt->destroy;
#else #else
ct->match = nt->match; ct->match = nt->match;
ct->checkentry = xtnu_match_check; ct->checkentry = xtnu_match_check;
@@ -211,14 +236,14 @@ static unsigned int xtnu_target_run(struct sk_buff *skb,
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 27) #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 27)
{ {
struct xtnu_target *nt = xtcompat_nutarget(ct); struct xtnu_target *nt = xtcompat_nutarget(ct);
struct xt_target_param local_par = { struct xt_action_param local_par;
.in = in,
.out = out, local_par.in = in;
.hooknum = hooknum, local_par.out = out;
.target = ct, local_par.hooknum = hooknum;
.targinfo = targinfo, local_par.target = ct;
.family = NFPROTO_UNSPEC, local_par.targinfo = targinfo;
}; local_par.family = NFPROTO_UNSPEC;
if (nt != NULL && nt->target != NULL) if (nt != NULL && nt->target != NULL)
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 23) #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 23)
@@ -235,7 +260,16 @@ static unsigned int
xtnu_target_run(struct sk_buff *skb, const struct xt_target_param *par) xtnu_target_run(struct sk_buff *skb, const struct xt_target_param *par)
{ {
struct xtnu_target *nt = xtcompat_nutarget(par->target); struct xtnu_target *nt = xtcompat_nutarget(par->target);
return nt->target(&skb, par); struct xt_action_param local_par;
local_par.in = par->in;
local_par.out = par->out;
local_par.hooknum = par->hooknum;
local_par.target = par->target;
local_par.targinfo = par->targinfo;
local_par.family = par->family;
return nt->target(&skb, &local_par);
} }
#endif #endif

View File

@@ -32,16 +32,6 @@ enum {
NFPROTO_NUMPROTO, NFPROTO_NUMPROTO,
}; };
struct xt_match_param {
const struct net_device *in, *out;
const struct xt_match *match;
const void *matchinfo;
int fragoff;
unsigned int thoff;
bool *hotdrop;
u_int8_t family;
};
struct xt_mtchk_param { struct xt_mtchk_param {
const char *table; const char *table;
const void *entryinfo; const void *entryinfo;
@@ -81,6 +71,23 @@ struct xt_tgdtor_param {
}; };
#endif #endif
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 34)
struct xt_action_param {
union {
const struct xt_match *match;
const struct xt_target *target;
};
union {
const void *matchinfo, *targinfo;
};
const struct net_device *in, *out;
int fragoff;
unsigned int thoff, hooknum;
u_int8_t family;
bool *hotdrop;
};
#endif
struct xtnu_match { struct xtnu_match {
/* /*
* Making it smaller by sizeof(void *) on purpose to catch * Making it smaller by sizeof(void *) on purpose to catch
@@ -88,7 +95,7 @@ struct xtnu_match {
*/ */
char name[sizeof(((struct xt_match *)NULL)->name) - 1 - sizeof(void *)]; char name[sizeof(((struct xt_match *)NULL)->name) - 1 - sizeof(void *)];
uint8_t revision; uint8_t revision;
bool (*match)(const struct sk_buff *, const struct xt_match_param *); bool (*match)(const struct sk_buff *, const struct xt_action_param *);
int (*checkentry)(const struct xt_mtchk_param *); int (*checkentry)(const struct xt_mtchk_param *);
void (*destroy)(const struct xt_mtdtor_param *); void (*destroy)(const struct xt_mtdtor_param *);
struct module *me; struct module *me;
@@ -103,7 +110,7 @@ struct xtnu_target {
char name[sizeof(((struct xt_target *)NULL)->name) - 1 - sizeof(void *)]; char name[sizeof(((struct xt_target *)NULL)->name) - 1 - sizeof(void *)];
uint8_t revision; uint8_t revision;
unsigned int (*target)(struct sk_buff **, unsigned int (*target)(struct sk_buff **,
const struct xt_target_param *); const struct xt_action_param *);
int (*checkentry)(const struct xt_tgchk_param *); int (*checkentry)(const struct xt_tgchk_param *);
void (*destroy)(const struct xt_tgdtor_param *); void (*destroy)(const struct xt_tgdtor_param *);
struct module *me; struct module *me;

View File

@@ -29,7 +29,7 @@
#include "../compat_xtables.h" #include "../compat_xtables.h"
static unsigned int static unsigned int
target(struct sk_buff **pskb, const struct xt_target_param *par) target(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct ipt_set_info_target *info = par->targinfo; const struct ipt_set_info_target *info = par->targinfo;

View File

@@ -38,7 +38,7 @@ match_set(const struct ipt_set_info *info,
} }
static bool static bool
match(const struct sk_buff *skb, const struct xt_match_param *par) match(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct ipt_set_info_match *info = par->matchinfo; const struct ipt_set_info_match *info = par->matchinfo;

View File

@@ -958,7 +958,7 @@ is_close_knock(const struct peer *peer, const struct xt_pknock_mtinfo *info,
} }
static bool pknock_mt(const struct sk_buff *skb, static bool pknock_mt(const struct sk_buff *skb,
const struct xt_match_param *par) const struct xt_action_param *par)
{ {
const struct xt_pknock_mtinfo *info = par->matchinfo; const struct xt_pknock_mtinfo *info = par->matchinfo;
struct xt_pknock_rule *rule; struct xt_pknock_rule *rule;

View File

@@ -45,7 +45,7 @@ static const struct xt_tcp tcp_params = {
/* CHAOS functions */ /* CHAOS functions */
static void static void
xt_chaos_total(struct sk_buff *skb, const struct xt_target_param *par) xt_chaos_total(struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_chaos_tginfo *info = par->targinfo; const struct xt_chaos_tginfo *info = par->targinfo;
const struct iphdr *iph = ip_hdr(skb); const struct iphdr *iph = ip_hdr(skb);
@@ -88,15 +88,21 @@ xt_chaos_total(struct sk_buff *skb, const struct xt_target_param *par)
destiny->target(skb, par->in, par->out, par->hooknum, destiny, NULL); destiny->target(skb, par->in, par->out, par->hooknum, destiny, NULL);
#else #else
{ {
struct xt_target_param local_par = *par; struct xt_target_param local_par = {
local_par.target = destiny; .in = par->in,
.out = par->out,
.hooknum = par->hooknum,
.target = destiny,
.targinfo = par->targinfo,
.family = par->family,
};
destiny->target(skb, &local_par); destiny->target(skb, &local_par);
} }
#endif #endif
} }
static unsigned int static unsigned int
chaos_tg(struct sk_buff **pskb, const struct xt_target_param *par) chaos_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
/* /*
* Equivalent to: * Equivalent to:

View File

@@ -143,7 +143,7 @@ static void delude_send_reset(struct sk_buff *oldskb, unsigned int hook)
} }
static unsigned int static unsigned int
delude_tg(struct sk_buff **pskb, const struct xt_target_param *par) delude_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
/* WARNING: This code causes reentry within iptables. /* WARNING: This code causes reentry within iptables.
This means that the iptables jump stack is now crap. We This means that the iptables jump stack is now crap. We

View File

@@ -69,7 +69,7 @@ static bool ether_cmp(const unsigned char *lh, const unsigned char *rh,
} }
static bool static bool
dhcpmac_mt(const struct sk_buff *skb, const struct xt_match_param *par) dhcpmac_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct dhcpmac_info *info = par->matchinfo; const struct dhcpmac_info *info = par->matchinfo;
const struct dhcp_message *dh; const struct dhcp_message *dh;
@@ -89,7 +89,7 @@ dhcpmac_mt(const struct sk_buff *skb, const struct xt_match_param *par)
} }
static unsigned int static unsigned int
dhcpmac_tg(struct sk_buff **pskb, const struct xt_target_param *par) dhcpmac_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct dhcpmac_info *info = par->targinfo; const struct dhcpmac_info *info = par->targinfo;
struct dhcp_message dhcpbuf, *dh; struct dhcp_message dhcpbuf, *dh;

View File

@@ -21,7 +21,7 @@
#include "compat_xtables.h" #include "compat_xtables.h"
static unsigned int static unsigned int
echo_tg4(struct sk_buff **poldskb, const struct xt_target_param *par) echo_tg4(struct sk_buff **poldskb, const struct xt_action_param *par)
{ {
const struct sk_buff *oldskb = *poldskb; const struct sk_buff *oldskb = *poldskb;
const struct udphdr *oldudp; const struct udphdr *oldudp;

View File

@@ -25,7 +25,7 @@ MODULE_ALIAS("ipt_IPMARK");
MODULE_ALIAS("ip6t_IPMARK"); MODULE_ALIAS("ip6t_IPMARK");
static unsigned int static unsigned int
ipmark_tg4(struct sk_buff **pskb, const struct xt_target_param *par) ipmark_tg4(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_ipmark_tginfo *ipmarkinfo = par->targinfo; const struct xt_ipmark_tginfo *ipmarkinfo = par->targinfo;
const struct sk_buff *skb = *pskb; const struct sk_buff *skb = *pskb;
@@ -61,7 +61,7 @@ static __u32 ipmark_from_ip6(const struct in6_addr *a, unsigned int s)
} }
static unsigned int static unsigned int
ipmark_tg6(struct sk_buff **pskb, const struct xt_target_param *par) ipmark_tg6(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_ipmark_tginfo *info = par->targinfo; const struct xt_ipmark_tginfo *info = par->targinfo;
const struct sk_buff *skb = *pskb; const struct sk_buff *skb = *pskb;

View File

@@ -30,7 +30,7 @@ static const char *const dir_names[] = {
}; };
static unsigned int static unsigned int
logmark_tg(struct sk_buff **pskb, const struct xt_target_param *par) logmark_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct sk_buff *skb = *pskb; const struct sk_buff *skb = *pskb;
const struct xt_logmark_tginfo *info = par->targinfo; const struct xt_logmark_tginfo *info = par->targinfo;

View File

@@ -125,7 +125,7 @@ static unsigned int rawnat4_writable_part(const struct iphdr *iph)
} }
static unsigned int static unsigned int
rawsnat_tg4(struct sk_buff **pskb, const struct xt_target_param *par) rawsnat_tg4(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_rawnat_tginfo *info = par->targinfo; const struct xt_rawnat_tginfo *info = par->targinfo;
struct iphdr *iph; struct iphdr *iph;
@@ -147,7 +147,7 @@ rawsnat_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
} }
static unsigned int static unsigned int
rawdnat_tg4(struct sk_buff **pskb, const struct xt_target_param *par) rawdnat_tg4(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_rawnat_tginfo *info = par->targinfo; const struct xt_rawnat_tginfo *info = par->targinfo;
struct iphdr *iph; struct iphdr *iph;
@@ -241,7 +241,7 @@ static void rawnat6_update_l4(struct sk_buff *skb, unsigned int l4proto,
} }
static unsigned int static unsigned int
rawsnat_tg6(struct sk_buff **pskb, const struct xt_target_param *par) rawsnat_tg6(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_rawnat_tginfo *info = par->targinfo; const struct xt_rawnat_tginfo *info = par->targinfo;
unsigned int l4offset, l4proto; unsigned int l4offset, l4proto;
@@ -262,7 +262,7 @@ rawsnat_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
} }
static unsigned int static unsigned int
rawdnat_tg6(struct sk_buff **pskb, const struct xt_target_param *par) rawdnat_tg6(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_rawnat_tginfo *info = par->targinfo; const struct xt_rawnat_tginfo *info = par->targinfo;
unsigned int l4offset, l4proto; unsigned int l4offset, l4proto;

View File

@@ -8,7 +8,7 @@
#include "compat_xtables.h" #include "compat_xtables.h"
static unsigned int static unsigned int
steal_tg(struct sk_buff **pskb, const struct xt_target_param *par) steal_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
kfree_skb(*pskb); kfree_skb(*pskb);
return NF_STOLEN; return NF_STOLEN;

View File

@@ -197,7 +197,7 @@ static unsigned int sysrq_tg(const void *pdata, uint16_t len)
#endif #endif
static unsigned int static unsigned int
sysrq_tg4(struct sk_buff **pskb, const struct xt_target_param *par) sysrq_tg4(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
struct sk_buff *skb = *pskb; struct sk_buff *skb = *pskb;
const struct iphdr *iph; const struct iphdr *iph;
@@ -224,7 +224,7 @@ sysrq_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
#ifdef WITH_IPV6 #ifdef WITH_IPV6
static unsigned int static unsigned int
sysrq_tg6(struct sk_buff **pskb, const struct xt_target_param *par) sysrq_tg6(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
struct sk_buff *skb = *pskb; struct sk_buff *skb = *pskb;
const struct ipv6hdr *iph; const struct ipv6hdr *iph;

View File

@@ -188,7 +188,7 @@ static void tarpit_tcp(struct sk_buff *oldskb, unsigned int hook)
} }
static unsigned int static unsigned int
tarpit_tg(struct sk_buff **pskb, const struct xt_target_param *par) tarpit_tg(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct sk_buff *skb = *pskb; const struct sk_buff *skb = *pskb;
const struct iphdr *iph = ip_hdr(skb); const struct iphdr *iph = ip_hdr(skb);

View File

@@ -103,7 +103,7 @@ static void tee_tg_send(struct sk_buff *skb)
} }
static unsigned int static unsigned int
tee_tg4(struct sk_buff **pskb, const struct xt_target_param *par) tee_tg4(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_tee_tginfo *info = par->targinfo; const struct xt_tee_tginfo *info = par->targinfo;
struct sk_buff *skb = *pskb; struct sk_buff *skb = *pskb;
@@ -205,7 +205,7 @@ tee_tg_route6(struct sk_buff *skb, const struct xt_tee_tginfo *info)
} }
static unsigned int static unsigned int
tee_tg6(struct sk_buff **pskb, const struct xt_target_param *par) tee_tg6(struct sk_buff **pskb, const struct xt_action_param *par)
{ {
const struct xt_tee_tginfo *info = par->targinfo; const struct xt_tee_tginfo *info = par->targinfo;
struct sk_buff *skb = *pskb; struct sk_buff *skb = *pskb;

View File

@@ -96,7 +96,7 @@ static int condition_proc_write(struct file *file, const char __user *buffer,
} }
static bool static bool
condition_mt(const struct sk_buff *skb, const struct xt_match_param *par) condition_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_condition_mtinfo *info = par->matchinfo; const struct xt_condition_mtinfo *info = par->matchinfo;
const struct condition_variable *var = info->condvar; const struct condition_variable *var = info->condvar;

View File

@@ -60,7 +60,7 @@ static uint8_t mf_low(uint32_t tx, uint32_t mini, uint32_t maxi)
} }
static bool static bool
fuzzy_mt(const struct sk_buff *skb, const struct xt_match_param *par) fuzzy_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
struct xt_fuzzy_mtinfo *info = (void *)par->matchinfo; struct xt_fuzzy_mtinfo *info = (void *)par->matchinfo;
unsigned long amount; unsigned long amount;

View File

@@ -141,7 +141,7 @@ static bool geoip_bsearch(const struct geoip_subnet *range,
} }
static bool static bool
xt_geoip_mt(const struct sk_buff *skb, const struct xt_match_param *par) xt_geoip_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_geoip_match_info *info = par->matchinfo; const struct xt_geoip_match_info *info = par->matchinfo;
const struct geoip_country_kernel *node; const struct geoip_country_kernel *node;

View File

@@ -41,7 +41,7 @@ static const struct xt_iface_flag_pairs xt_iface_lookup[] =
}; };
static bool xt_iface_mt(const struct sk_buff *skb, static bool xt_iface_mt(const struct sk_buff *skb,
const struct xt_match_param *par) const struct xt_action_param *par)
{ {
const struct xt_iface_mtinfo *info = par->matchinfo; const struct xt_iface_mtinfo *info = par->matchinfo;
struct net_device *dev; struct net_device *dev;

View File

@@ -808,7 +808,7 @@ static const struct {
}; };
static bool static bool
ipp2p_mt(const struct sk_buff *skb, const struct xt_match_param *par) ipp2p_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct ipt_p2p_info *info = par->matchinfo; const struct ipt_p2p_info *info = par->matchinfo;
const unsigned char *haystack; const unsigned char *haystack;

View File

@@ -29,7 +29,7 @@ static uint32_t ipv4options_rd(const uint8_t *data, int len)
} }
static bool ipv4options_mt(const struct sk_buff *skb, static bool ipv4options_mt(const struct sk_buff *skb,
const struct xt_match_param *par) const struct xt_action_param *par)
{ {
const struct xt_ipv4options_mtinfo1 *info = par->matchinfo; const struct xt_ipv4options_mtinfo1 *info = par->matchinfo;
const struct iphdr *iph = ip_hdr(skb); const struct iphdr *iph = ip_hdr(skb);

View File

@@ -137,7 +137,7 @@ static bool xtlength_layer7(unsigned int *length, const struct sk_buff *skb,
} }
static bool static bool
length2_mt(const struct sk_buff *skb, const struct xt_match_param *par) length2_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_length_mtinfo2 *info = par->matchinfo; const struct xt_length_mtinfo2 *info = par->matchinfo;
const struct iphdr *iph = ip_hdr(skb); const struct iphdr *iph = ip_hdr(skb);
@@ -198,7 +198,7 @@ llayer4_proto(const struct sk_buff *skb, unsigned int *offset, bool *hotdrop)
} }
static bool static bool
length2_mt6(const struct sk_buff *skb, const struct xt_match_param *par) length2_mt6(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_length_mtinfo2 *info = par->matchinfo; const struct xt_length_mtinfo2 *info = par->matchinfo;
const struct ipv6hdr *iph = ipv6_hdr(skb); const struct ipv6hdr *iph = ipv6_hdr(skb);

View File

@@ -171,7 +171,7 @@ static inline unsigned int lscan_mt_full(int mark,
} }
static bool static bool
lscan_mt(const struct sk_buff *skb, const struct xt_match_param *par) lscan_mt(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
const struct xt_lscan_mtinfo *info = par->matchinfo; const struct xt_lscan_mtinfo *info = par->matchinfo;
enum ip_conntrack_info ctstate; enum ip_conntrack_info ctstate;

View File

@@ -100,7 +100,7 @@ static inline int hashfunc(struct in_addr addr)
} }
static bool static bool
xt_psd_match(const struct sk_buff *pskb, const struct xt_match_param *match) xt_psd_match(const struct sk_buff *pskb, const struct xt_action_param *match)
{ {
const struct iphdr *iph; const struct iphdr *iph;
const struct tcphdr *tcph; const struct tcphdr *tcph;

View File

@@ -189,7 +189,7 @@ static void quota_mt2_destroy(const struct xt_mtdtor_param *par)
} }
static bool static bool
quota_mt2(const struct sk_buff *skb, const struct xt_match_param *par) quota_mt2(const struct sk_buff *skb, const struct xt_action_param *par)
{ {
struct xt_quota_mtinfo2 *q = (void *)par->matchinfo; struct xt_quota_mtinfo2 *q = (void *)par->matchinfo;
struct xt_quota_counter *e = q->master; struct xt_quota_counter *e = q->master;