|
@@ -8,7 +8,7 @@
|
|
|
* as published by the Free Software Foundation; either version
|
|
|
* 2 of the License, or (at your option) any later version.
|
|
|
*
|
|
|
- * Copyright: Jamal Hadi Salim (2002-4)
|
|
|
+ * Copyright: Jamal Hadi Salim (2002-13)
|
|
|
*/
|
|
|
|
|
|
#include <linux/types.h>
|
|
@@ -303,17 +303,44 @@ static struct tc_action_ops act_ipt_ops = {
|
|
|
.walk = tcf_generic_walker
|
|
|
};
|
|
|
|
|
|
-MODULE_AUTHOR("Jamal Hadi Salim(2002-4)");
|
|
|
+static struct tc_action_ops act_xt_ops = {
|
|
|
+ .kind = "xt",
|
|
|
+ .hinfo = &ipt_hash_info,
|
|
|
+ .type = TCA_ACT_IPT,
|
|
|
+ .capab = TCA_CAP_NONE,
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .act = tcf_ipt,
|
|
|
+ .dump = tcf_ipt_dump,
|
|
|
+ .cleanup = tcf_ipt_cleanup,
|
|
|
+ .lookup = tcf_hash_search,
|
|
|
+ .init = tcf_ipt_init,
|
|
|
+ .walk = tcf_generic_walker
|
|
|
+};
|
|
|
+
|
|
|
+MODULE_AUTHOR("Jamal Hadi Salim(2002-13)");
|
|
|
MODULE_DESCRIPTION("Iptables target actions");
|
|
|
MODULE_LICENSE("GPL");
|
|
|
+MODULE_ALIAS("act_xt");
|
|
|
|
|
|
static int __init ipt_init_module(void)
|
|
|
{
|
|
|
- return tcf_register_action(&act_ipt_ops);
|
|
|
+ int ret1, ret2;
|
|
|
+ ret1 = tcf_register_action(&act_xt_ops);
|
|
|
+ if (ret1 < 0)
|
|
|
+ printk("Failed to load xt action\n");
|
|
|
+ ret2 = tcf_register_action(&act_ipt_ops);
|
|
|
+ if (ret2 < 0)
|
|
|
+ printk("Failed to load ipt action\n");
|
|
|
+
|
|
|
+ if (ret1 < 0 && ret2 < 0)
|
|
|
+ return ret1;
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static void __exit ipt_cleanup_module(void)
|
|
|
{
|
|
|
+ tcf_unregister_action(&act_xt_ops);
|
|
|
tcf_unregister_action(&act_ipt_ops);
|
|
|
}
|
|
|
|