#include #include #include #include #include #include "ebt_imq.h" static unsigned int ebt_target_imq(struct sk_buff *pskb, const struct xt_target_param *par) { const struct ebt_imq_info *info = par->targinfo; if (!skb_make_writable(pskb, 0)) return EBT_DROP; pskb->imq_flags = info->todev | IMQ_F_ENQUEUE; return EBT_CONTINUE; } static bool ebt_target_imq_check(const struct xt_tgchk_param *par) { return true; } static struct xt_target imq_target = { .name = "imq", .revision = 0, .family = NFPROTO_BRIDGE, .target = ebt_target_imq, .checkentry = ebt_target_imq_check, .targetsize = XT_ALIGN(sizeof(struct ebt_imq_info)), .me = THIS_MODULE, }; static int __init init(void) { return xt_register_target(&imq_target); } static void __exit fini(void) { xt_unregister_target(&imq_target); } module_init(init); module_exit(fini); MODULE_LICENSE("GPL");