Lines Matching defs:sfa
2280 struct sw_flow_actions *sfa;
2284 sfa = kmalloc(sizeof(*sfa) + size, GFP_KERNEL);
2285 if (!sfa)
2288 sfa->actions_len = 0;
2289 return sfa;
2424 static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
2432 (*sfa)->actions_len;
2434 if (req_size <= (ksize(*sfa) - next_offset))
2437 new_acts_size = max(next_offset + req_size, ksize(*sfa) * 2);
2452 memcpy(acts->actions, (*sfa)->actions, (*sfa)->actions_len);
2453 acts->actions_len = (*sfa)->actions_len;
2454 acts->orig_len = (*sfa)->orig_len;
2455 kfree(*sfa);
2456 *sfa = acts;
2459 (*sfa)->actions_len += req_size;
2460 return (struct nlattr *) ((unsigned char *)(*sfa) + next_offset);
2463 static struct nlattr *__add_action(struct sw_flow_actions **sfa,
2468 a = reserve_sfa_size(sfa, nla_attr_size(len), log);
2482 int ovs_nla_add_action(struct sw_flow_actions **sfa, int attrtype, void *data,
2487 a = __add_action(sfa, attrtype, data, len, log);
2492 static inline int add_nested_action_start(struct sw_flow_actions **sfa,
2495 int used = (*sfa)->actions_len;
2498 err = ovs_nla_add_action(sfa, attrtype, NULL, 0, log);
2505 static inline void add_nested_action_end(struct sw_flow_actions *sfa,
2508 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions +
2511 a->nla_len = sfa->actions_len - st_offset;
2516 struct sw_flow_actions **sfa,
2523 struct sw_flow_actions **sfa,
2553 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_SAMPLE, log);
2571 err = ovs_nla_add_action(sfa, OVS_SAMPLE_ATTR_ARG, &arg, sizeof(arg),
2576 err = __ovs_nla_copy_actions(net, actions, key, sfa,
2583 add_nested_action_end(*sfa, start);
2591 struct sw_flow_actions **sfa,
2618 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_DEC_TTL, log);
2622 action_start = add_nested_action_start(sfa, OVS_DEC_TTL_ATTR_ACTION, log);
2626 err = __ovs_nla_copy_actions(net, actions, key, sfa, eth_type,
2632 add_nested_action_end(*sfa, action_start);
2633 add_nested_action_end(*sfa, start);
2640 struct sw_flow_actions **sfa,
2651 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_CLONE, log);
2657 err = ovs_nla_add_action(sfa, OVS_CLONE_ATTR_EXEC, &exec,
2662 err = __ovs_nla_copy_actions(net, attr, key, sfa,
2668 add_nested_action_end(*sfa, start);
2720 struct sw_flow_actions **sfa, bool log)
2754 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_SET, log);
2770 a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL,
2795 add_nested_action_end(*sfa, start);
2829 struct sw_flow_actions **sfa, bool *skip_copy,
2870 err = validate_and_copy_set_tun(a, sfa, log);
2975 start = add_nested_action_start(sfa,
2981 at = __add_action(sfa, key_type, NULL, len, log);
2993 add_nested_action_end(*sfa, start);
3030 struct sw_flow_actions **sfa,
3059 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_CHECK_PKT_LEN,
3070 err = ovs_nla_add_action(sfa, OVS_CHECK_PKT_LEN_ATTR_ARG, &arg,
3075 nested_acts_start = add_nested_action_start(sfa,
3080 err = __ovs_nla_copy_actions(net, acts_if_lesser_eq, key, sfa,
3087 add_nested_action_end(*sfa, nested_acts_start);
3089 nested_acts_start = add_nested_action_start(sfa,
3094 err = __ovs_nla_copy_actions(net, acts_if_greater, key, sfa,
3101 add_nested_action_end(*sfa, nested_acts_start);
3102 add_nested_action_end(*sfa, start);
3107 struct sw_flow_actions **sfa, bool log)
3112 to = reserve_sfa_size(sfa, from->nla_len, log);
3122 struct sw_flow_actions **sfa,
3307 err = validate_set(a, key, sfa,
3315 err = validate_set(a, key, sfa,
3325 err = validate_and_copy_sample(net, a, key, sfa,
3336 err = ovs_ct_copy_action(net, a, key, sfa, log);
3396 err = validate_and_copy_clone(net, a, key, sfa,
3409 err = validate_and_copy_check_pkt_len(net, a, key, sfa,
3422 err = validate_and_copy_dec_ttl(net, a, key, sfa,
3436 err = copy_action(a, sfa, log);
3451 struct sw_flow_actions **sfa, bool log)
3456 *sfa = nla_alloc_flow_actions(min(nla_len(attr), MAX_ACTIONS_BUFSIZE));
3457 if (IS_ERR(*sfa))
3458 return PTR_ERR(*sfa);
3463 (*sfa)->orig_len = nla_len(attr);
3464 err = __ovs_nla_copy_actions(net, attr, key, sfa, key->eth.type,
3468 ovs_nla_free_flow_actions(*sfa);