2 * This target marks packets to be enqueued to an imq device
4 #include <linux/module.h>
5 #include <linux/skbuff.h>
6 #include <linux/netfilter/x_tables.h>
7 #include <linux/netfilter/xt_IMQ.h>
10 static unsigned int imq_target(struct sk_buff
*pskb
,
11 const struct xt_action_param
*par
)
13 const struct xt_imq_info
*mr
= par
->targinfo
;
15 pskb
->imq_flags
= (mr
->todev
& IMQ_F_IFMASK
) | IMQ_F_ENQUEUE
;
20 static int imq_checkentry(const struct xt_tgchk_param
*par
)
22 struct xt_imq_info
*mr
= par
->targinfo
;
24 if (mr
->todev
> IMQ_MAX_DEVS
- 1) {
26 "IMQ: invalid device specified, highest is %u\n",
34 static struct xt_target xt_imq_reg
[] __read_mostly
= {
38 .checkentry
= imq_checkentry
,
40 .targetsize
= sizeof(struct xt_imq_info
),
47 .checkentry
= imq_checkentry
,
49 .targetsize
= sizeof(struct xt_imq_info
),
55 static int __init
imq_init(void)
57 return xt_register_targets(xt_imq_reg
, ARRAY_SIZE(xt_imq_reg
));
60 static void __exit
imq_fini(void)
62 xt_unregister_targets(xt_imq_reg
, ARRAY_SIZE(xt_imq_reg
));
65 module_init(imq_init
);
66 module_exit(imq_fini
);
68 MODULE_AUTHOR("http://www.linuximq.net");
69 MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. "
70 "See http://www.linuximq.net/ for more information.");
71 MODULE_LICENSE("GPL");
72 MODULE_ALIAS("ipt_IMQ");
73 MODULE_ALIAS("ip6t_IMQ");