1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * This is a module which is used for setting the skb->priority field
- * of an skb for qdisc classification.
- */
- /* (C) 2001-2002 Patrick McHardy <kaber@trash.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #include <linux/module.h>
- #include <linux/skbuff.h>
- #include <linux/ip.h>
- #include <net/checksum.h>
- #include <linux/netfilter_ipv4.h>
- #include <linux/netfilter_ipv6.h>
- #include <linux/netfilter/x_tables.h>
- #include <linux/netfilter/xt_CLASSIFY.h>
- MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>");
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("iptables qdisc classification target module");
- MODULE_ALIAS("ipt_CLASSIFY");
- static unsigned int
- 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)
- {
- const struct xt_classify_target_info *clinfo = targinfo;
- (*pskb)->priority = clinfo->priority;
- return XT_CONTINUE;
- }
- static struct xt_target xt_classify_target[] = {
- {
- .family = AF_INET,
- .name = "CLASSIFY",
- .target = target,
- .targetsize = sizeof(struct xt_classify_target_info),
- .table = "mangle",
- .hooks = (1 << NF_IP_LOCAL_OUT) |
- (1 << NF_IP_FORWARD) |
- (1 << NF_IP_POST_ROUTING),
- .me = THIS_MODULE,
- },
- {
- .name = "CLASSIFY",
- .family = AF_INET6,
- .target = target,
- .targetsize = sizeof(struct xt_classify_target_info),
- .table = "mangle",
- .hooks = (1 << NF_IP6_LOCAL_OUT) |
- (1 << NF_IP6_FORWARD) |
- (1 << NF_IP6_POST_ROUTING),
- .me = THIS_MODULE,
- },
- };
- static int __init xt_classify_init(void)
- {
- return xt_register_targets(xt_classify_target,
- ARRAY_SIZE(xt_classify_target));
- }
- static void __exit xt_classify_fini(void)
- {
- xt_unregister_targets(xt_classify_target,
- ARRAY_SIZE(xt_classify_target));
- }
- module_init(xt_classify_init);
- module_exit(xt_classify_fini);
|