X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv4%2Fnetfilter%2Fipt_dscp.c;fp=net%2Fipv4%2Fnetfilter%2Fipt_dscp.c;h=92063b4f8602c8de8c34b2dcf33426fcf7ce7353;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=47177591aeb6582e276600a792fdab158bf88722;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/net/ipv4/netfilter/ipt_dscp.c b/net/ipv4/netfilter/ipt_dscp.c index 47177591a..92063b4f8 100644 --- a/net/ipv4/netfilter/ipt_dscp.c +++ b/net/ipv4/netfilter/ipt_dscp.c @@ -19,9 +19,8 @@ MODULE_AUTHOR("Harald Welte "); MODULE_DESCRIPTION("iptables DSCP matching module"); MODULE_LICENSE("GPL"); -static int match(const struct sk_buff *skb, - const struct net_device *in, const struct net_device *out, - const struct xt_match *match, const void *matchinfo, +static int match(const struct sk_buff *skb, const struct net_device *in, + const struct net_device *out, const void *matchinfo, int offset, unsigned int protoff, int *hotdrop) { const struct ipt_dscp_info *info = matchinfo; @@ -32,23 +31,33 @@ static int match(const struct sk_buff *skb, return ((iph->tos&IPT_DSCP_MASK) == sh_dscp) ^ info->invert; } +static int checkentry(const char *tablename, const void *ip, + void *matchinfo, unsigned int matchsize, + unsigned int hook_mask) +{ + if (matchsize != IPT_ALIGN(sizeof(struct ipt_dscp_info))) + return 0; + + return 1; +} + static struct ipt_match dscp_match = { .name = "dscp", - .match = match, - .matchsize = sizeof(struct ipt_dscp_info), + .match = &match, + .checkentry = &checkentry, .me = THIS_MODULE, }; -static int __init ipt_dscp_init(void) +static int __init init(void) { return ipt_register_match(&dscp_match); } -static void __exit ipt_dscp_fini(void) +static void __exit fini(void) { ipt_unregister_match(&dscp_match); } -module_init(ipt_dscp_init); -module_exit(ipt_dscp_fini); +module_init(init); +module_exit(fini);