net_sched: act_ipt forward compat with xtables
Deal with changes in newer xtables while maintaining backward compatibility. Thanks to Jan Engelhardt for suggestions. Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fe86d71416
commit
0dcffd0964
|
@ -8,7 +8,7 @@
|
||||||
* as published by the Free Software Foundation; either version
|
* as published by the Free Software Foundation; either version
|
||||||
* 2 of the License, or (at your option) any later 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>
|
#include <linux/types.h>
|
||||||
|
@ -303,17 +303,44 @@ static struct tc_action_ops act_ipt_ops = {
|
||||||
.walk = tcf_generic_walker
|
.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_DESCRIPTION("Iptables target actions");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("act_xt");
|
||||||
|
|
||||||
static int __init ipt_init_module(void)
|
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)
|
static void __exit ipt_cleanup_module(void)
|
||||||
{
|
{
|
||||||
|
tcf_unregister_action(&act_xt_ops);
|
||||||
tcf_unregister_action(&act_ipt_ops);
|
tcf_unregister_action(&act_ipt_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue