|
@@ -570,9 +570,9 @@ static struct tc_cookie *nla_memdup_cookie(struct nlattr **tb)
|
|
|
return c;
|
|
|
}
|
|
|
|
|
|
-struct tc_action *tcf_action_init_1(struct net *net, struct nlattr *nla,
|
|
|
- struct nlattr *est, char *name, int ovr,
|
|
|
- int bind)
|
|
|
+struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp,
|
|
|
+ struct nlattr *nla, struct nlattr *est,
|
|
|
+ char *name, int ovr, int bind)
|
|
|
{
|
|
|
struct tc_action *a;
|
|
|
struct tc_action_ops *a_o;
|
|
@@ -680,8 +680,9 @@ static void cleanup_a(struct list_head *actions, int ovr)
|
|
|
a->tcfa_refcnt--;
|
|
|
}
|
|
|
|
|
|
-int tcf_action_init(struct net *net, struct nlattr *nla, struct nlattr *est,
|
|
|
- char *name, int ovr, int bind, struct list_head *actions)
|
|
|
+int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla,
|
|
|
+ struct nlattr *est, char *name, int ovr, int bind,
|
|
|
+ struct list_head *actions)
|
|
|
{
|
|
|
struct nlattr *tb[TCA_ACT_MAX_PRIO + 1];
|
|
|
struct tc_action *act;
|
|
@@ -693,7 +694,7 @@ int tcf_action_init(struct net *net, struct nlattr *nla, struct nlattr *est,
|
|
|
return err;
|
|
|
|
|
|
for (i = 1; i <= TCA_ACT_MAX_PRIO && tb[i]; i++) {
|
|
|
- act = tcf_action_init_1(net, tb[i], est, name, ovr, bind);
|
|
|
+ act = tcf_action_init_1(net, tp, tb[i], est, name, ovr, bind);
|
|
|
if (IS_ERR(act)) {
|
|
|
err = PTR_ERR(act);
|
|
|
goto err;
|
|
@@ -1020,7 +1021,7 @@ static int tcf_action_add(struct net *net, struct nlattr *nla,
|
|
|
int ret = 0;
|
|
|
LIST_HEAD(actions);
|
|
|
|
|
|
- ret = tcf_action_init(net, nla, NULL, NULL, ovr, 0, &actions);
|
|
|
+ ret = tcf_action_init(net, NULL, nla, NULL, NULL, ovr, 0, &actions);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|