1 #include <linux/module.h>
2 #include <linux/skbuff.h>
4 #include <net/checksum.h>
5 #include <linux/vs_network.h>
7 #include <linux/netfilter/x_tables.h>
8 #include <linux/netfilter/xt_SETXID.h>
10 MODULE_LICENSE("GPL");
12 MODULE_DESCRIPTION("");
13 MODULE_ALIAS("ipt_SETXID");
16 target_v1(struct sk_buff **pskb,
17 const struct net_device *in,
18 const struct net_device *out,
20 const struct xt_target *target,
23 const struct xt_setxid_target_info_v1 *setxidinfo = targinfo;
25 switch (setxidinfo->mode) {
26 case XT_SET_PACKET_XID:
27 (*pskb)->skb_tag = setxidinfo->mark;
35 checkentry_v1(const char *tablename,
37 const struct xt_target *target,
39 unsigned int hook_mask)
41 struct xt_setxid_target_info_v1 *setxidinfo = targinfo;
43 if (setxidinfo->mode != XT_SET_PACKET_XID) {
44 printk(KERN_WARNING "SETXID: unknown mode %u\n",
52 static struct xt_target xt_setxid_target[] = {
57 .checkentry = checkentry_v1,
59 .targetsize = sizeof(struct xt_setxid_target_info_v1),
65 static int __init init(void)
69 err = xt_register_targets(xt_setxid_target, ARRAY_SIZE(xt_setxid_target));
73 static void __exit fini(void)
75 xt_unregister_targets(xt_setxid_target, ARRAY_SIZE(xt_setxid_target));