1/* 2 * This is a module which is used for setting the skb->priority field 3 * of an skb for qdisc classification. 4 */ 5 6/* (C) 2001-2002 Patrick McHardy <kaber@trash.net> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 */ 12 13#include <linux/module.h> 14#include <linux/skbuff.h> 15#include <linux/ip.h> 16#include <net/checksum.h> 17 18#include <linux/netfilter_ipv4.h> 19#include <linux/netfilter_ipv6.h> 20#include <linux/netfilter/x_tables.h> 21#include <linux/netfilter/xt_CLASSIFY.h> 22 23MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>"); 24MODULE_LICENSE("GPL"); 25MODULE_DESCRIPTION("iptables qdisc classification target module"); 26MODULE_ALIAS("ipt_CLASSIFY"); 27 28static unsigned int 29target(struct sk_buff **pskb, 30 const struct net_device *in, 31 const struct net_device *out, 32 unsigned int hooknum, 33 const struct xt_target *target, 34 const void *targinfo) 35{ 36 const struct xt_classify_target_info *clinfo = targinfo; 37 38 (*pskb)->priority = clinfo->priority; 39 return XT_CONTINUE; 40} 41 42static struct xt_target xt_classify_target[] = { 43 { 44 .family = AF_INET, 45 .name = "CLASSIFY", 46 .target = target, 47 .targetsize = sizeof(struct xt_classify_target_info), 48 .table = "mangle", 49 .hooks = (1 << NF_IP_LOCAL_OUT) | 50 (1 << NF_IP_FORWARD) | 51 (1 << NF_IP_POST_ROUTING), 52 .me = THIS_MODULE, 53 }, 54 { 55 .name = "CLASSIFY", 56 .family = AF_INET6, 57 .target = target, 58 .targetsize = sizeof(struct xt_classify_target_info), 59 .table = "mangle", 60 .hooks = (1 << NF_IP6_LOCAL_OUT) | 61 (1 << NF_IP6_FORWARD) | 62 (1 << NF_IP6_POST_ROUTING), 63 .me = THIS_MODULE, 64 }, 65}; 66 67static int __init xt_classify_init(void) 68{ 69 return xt_register_targets(xt_classify_target, 70 ARRAY_SIZE(xt_classify_target)); 71} 72 73static void __exit xt_classify_fini(void) 74{ 75 xt_unregister_targets(xt_classify_target, 76 ARRAY_SIZE(xt_classify_target)); 77} 78 79module_init(xt_classify_init); 80module_exit(xt_classify_fini); 81