X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv6%2Fnetfilter%2Fip6t_HL.c;h=306200c3505788fd8675c5c4a8bdd839f0ff6cc0;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=b8eff8ee69b1fb71ed044f47bae88f564c78d61a;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/net/ipv6/netfilter/ip6t_HL.c b/net/ipv6/netfilter/ip6t_HL.c index b8eff8ee6..306200c35 100644 --- a/net/ipv6/netfilter/ip6t_HL.c +++ b/net/ipv6/netfilter/ip6t_HL.c @@ -21,7 +21,6 @@ static unsigned int ip6t_hl_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) { struct ipv6hdr *ip6h; @@ -64,44 +63,56 @@ static unsigned int ip6t_hl_target(struct sk_buff **pskb, static int ip6t_hl_checkentry(const char *tablename, const void *entry, - const struct xt_target *target, void *targinfo, unsigned int targinfosize, unsigned int hook_mask) { struct ip6t_HL_info *info = targinfo; + if (targinfosize != IP6T_ALIGN(sizeof(struct ip6t_HL_info))) { + printk(KERN_WARNING "ip6t_HL: targinfosize %u != %Zu\n", + targinfosize, + IP6T_ALIGN(sizeof(struct ip6t_HL_info))); + return 0; + } + + if (strcmp(tablename, "mangle")) { + printk(KERN_WARNING "ip6t_HL: can only be called from " + "\"mangle\" table, not \"%s\"\n", tablename); + return 0; + } + if (info->mode > IP6T_HL_MAXMODE) { printk(KERN_WARNING "ip6t_HL: invalid or unknown Mode %u\n", info->mode); return 0; } + if ((info->mode != IP6T_HL_SET) && (info->hop_limit == 0)) { printk(KERN_WARNING "ip6t_HL: increment/decrement doesn't " "make sense with value 0\n"); return 0; } + return 1; } static struct ip6t_target ip6t_HL = { .name = "HL", .target = ip6t_hl_target, - .targetsize = sizeof(struct ip6t_HL_info), - .table = "mangle", .checkentry = ip6t_hl_checkentry, .me = THIS_MODULE }; -static int __init ip6t_hl_init(void) +static int __init init(void) { return ip6t_register_target(&ip6t_HL); } -static void __exit ip6t_hl_fini(void) +static void __exit fini(void) { ip6t_unregister_target(&ip6t_HL); } -module_init(ip6t_hl_init); -module_exit(ip6t_hl_fini); +module_init(init); +module_exit(fini);