Lines Matching refs:actions

115 /* XXX: For standalone actions, we don't need a RCU grace period either, because
116 * actions are always connected to filters and filters are already destroyed in
117 * RCU callbacks, so after a RCU grace period actions are already disconnected
252 struct tc_action *actions[TCA_ACT_MAX_PRIO] = {
271 err = tc_setup_action(&fl_action->action, actions, 0, extack);
274 "Failed to setup tc actions for offload");
619 NL_SET_ERR_MSG(extack, "Unable to flush all TC actions");
796 /* Set cpustats according to actions flags. */
815 /* Check if action with specified index exists. If actions is found, increments
817 * error pointer (to prevent concurrent users from inserting actions with same
1053 int tcf_action_exec(struct sk_buff *skb, struct tc_action **actions,
1057 u32 jmp_ttl = TCA_ACT_MAX_PRIO; /*matches actions per filter */
1066 const struct tc_action *a = actions[i];
1115 int tcf_action_destroy(struct tc_action *actions[], int bind)
1121 for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) {
1122 a = actions[i];
1123 actions[i] = NULL;
1139 /* Put all actions in this array, skip those NULL's. */
1140 static void tcf_action_put_many(struct tc_action *actions[])
1145 struct tc_action *a = actions[i];
1207 int tcf_action_dump(struct sk_buff *skb, struct tc_action *actions[],
1214 for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) {
1215 a = actions[i];
1277 void tcf_idr_insert_many(struct tc_action *actions[])
1282 struct tc_action *a = actions[i];
1425 /* Returns numbers of initialized actions or negative error. */
1428 struct nlattr *est, struct tc_action *actions[],
1467 actions[i - 1] = act;
1491 tcf_idr_insert_many(actions);
1498 tcf_action_destroy(actions, flags & TCA_ACT_FLAGS_BIND);
1575 static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[],
1600 if (tcf_action_dump(skb, actions, bind, ref, false) < 0)
1616 struct tc_action *actions[], int event,
1624 if (tca_get_fill(skb, actions, portid, n->nlmsg_seq, 0, event,
1659 if (!ops) { /* could happen in batch of actions */
1754 static int tcf_action_delete(struct net *net, struct tc_action *actions[])
1758 for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) {
1759 struct tc_action *a = actions[i];
1767 actions[i] = NULL;
1787 struct tc_action *actions[TCA_ACT_MAX_PRIO] = {
1799 if (tca_get_fill(skb, actions, 0, 0, 0, RTM_DELACTION, 0, 1, NULL) <= 0) {
1874 tcf_del_notify(struct net *net, struct nlmsghdr *n, struct tc_action *actions[],
1885 if (tca_get_fill(skb, actions, portid, n->nlmsg_seq, 0, RTM_DELACTION,
1893 ret = tcf_action_delete(net, actions);
1913 struct tc_action *actions[TCA_ACT_MAX_PRIO] = {};
1935 actions[i - 1] = act;
1941 ret = tcf_get_notify(net, portid, n, actions, event, extack);
1943 ret = tcf_del_notify(net, n, actions, portid, attr_size, extack);
1949 tcf_action_put_many(actions);
1954 tcf_add_notify(struct net *net, struct nlmsghdr *n, struct tc_action *actions[],
1964 if (tca_get_fill(skb, actions, portid, n->nlmsg_seq, n->nlmsg_flags,
1981 struct tc_action *actions[TCA_ACT_MAX_PRIO] = {};
1985 ret = tcf_action_init(net, NULL, nla, NULL, actions, init_res,
1993 ret = tcf_add_notify(net, n, actions, portid, attr_size, extack);
1995 /* only put existing actions */
1998 actions[i] = NULL;
1999 tcf_action_put_many(actions);