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=898cdf79ce18258eb75dc073ee5e228c81a21b60;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=c8e971288dfe6ac7ea8b0ecdf176c205b5333053;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/net/ipv4/netfilter/ipt_DSCP.c b/net/ipv4/netfilter/ipt_DSCP.c index c8e971288..898cdf79c 100644 --- a/net/ipv4/netfilter/ipt_DSCP.c +++ b/net/ipv4/netfilter/ipt_DSCP.c @@ -29,7 +29,6 @@ target(struct sk_buff **pskb, const struct net_device *in, const struct net_device *out, unsigned int hooknum, - const struct xt_target *target, const void *targinfo, void *userinfo) { @@ -59,38 +58,48 @@ target(struct sk_buff **pskb, static int checkentry(const char *tablename, const void *e_void, - const struct xt_target *target, void *targinfo, unsigned int targinfosize, unsigned int hook_mask) { const u_int8_t dscp = ((struct ipt_DSCP_info *)targinfo)->dscp; + if (targinfosize != IPT_ALIGN(sizeof(struct ipt_DSCP_info))) { + printk(KERN_WARNING "DSCP: targinfosize %u != %Zu\n", + targinfosize, + IPT_ALIGN(sizeof(struct ipt_DSCP_info))); + return 0; + } + + if (strcmp(tablename, "mangle") != 0) { + printk(KERN_WARNING "DSCP: can only be called from \"mangle\" table, not \"%s\"\n", tablename); + return 0; + } + if ((dscp > IPT_DSCP_MAX)) { printk(KERN_WARNING "DSCP: dscp %x out of range\n", dscp); return 0; } + return 1; } static struct ipt_target ipt_dscp_reg = { .name = "DSCP", .target = target, - .targetsize = sizeof(struct ipt_DSCP_info), - .table = "mangle", .checkentry = checkentry, .me = THIS_MODULE, }; -static int __init ipt_dscp_init(void) +static int __init init(void) { return ipt_register_target(&ipt_dscp_reg); } -static void __exit ipt_dscp_fini(void) +static void __exit fini(void) { ipt_unregister_target(&ipt_dscp_reg); } -module_init(ipt_dscp_init); -module_exit(ipt_dscp_fini); +module_init(init); +module_exit(fini);