H A D | flow_netlink.c | 1536 struct sw_flow_actions *sfa; nla_alloc_flow_actions() local 1543 sfa = kmalloc(sizeof(*sfa) + size, GFP_KERNEL); nla_alloc_flow_actions() 1544 if (!sfa) nla_alloc_flow_actions() 1547 sfa->actions_len = 0; nla_alloc_flow_actions() 1548 return sfa; nla_alloc_flow_actions() 1558 static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa, reserve_sfa_size() argument 1566 (*sfa)->actions_len; reserve_sfa_size() 1568 if (req_size <= (ksize(*sfa) - next_offset)) reserve_sfa_size() 1571 new_acts_size = ksize(*sfa) * 2; reserve_sfa_size() 1583 memcpy(acts->actions, (*sfa)->actions, (*sfa)->actions_len); reserve_sfa_size() 1584 acts->actions_len = (*sfa)->actions_len; reserve_sfa_size() 1585 kfree(*sfa); reserve_sfa_size() 1586 *sfa = acts; reserve_sfa_size() 1589 (*sfa)->actions_len += req_size; reserve_sfa_size() 1590 return (struct nlattr *) ((unsigned char *)(*sfa) + next_offset); reserve_sfa_size() 1593 static struct nlattr *__add_action(struct sw_flow_actions **sfa, __add_action() argument 1598 a = reserve_sfa_size(sfa, nla_attr_size(len), log); __add_action() 1612 static int add_action(struct sw_flow_actions **sfa, int attrtype, add_action() argument 1617 a = __add_action(sfa, attrtype, data, len, log); add_action() 1622 static inline int add_nested_action_start(struct sw_flow_actions **sfa, add_nested_action_start() argument 1625 int used = (*sfa)->actions_len; add_nested_action_start() 1628 err = add_action(sfa, attrtype, NULL, 0, log); add_nested_action_start() 1635 static inline void add_nested_action_end(struct sw_flow_actions *sfa, add_nested_action_end() argument 1638 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions + add_nested_action_end() 1641 a->nla_len = sfa->actions_len - st_offset; add_nested_action_end() 1646 int depth, struct sw_flow_actions **sfa, 1651 struct sw_flow_actions **sfa, validate_and_copy_sample() 1678 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_SAMPLE, log); 1681 err = add_action(sfa, OVS_SAMPLE_ATTR_PROBABILITY, 1685 st_acts = add_nested_action_start(sfa, OVS_SAMPLE_ATTR_ACTIONS, log); 1689 err = __ovs_nla_copy_actions(actions, key, depth + 1, sfa, 1694 add_nested_action_end(*sfa, st_acts); 1695 add_nested_action_end(*sfa, start); 1745 struct sw_flow_actions **sfa, bool log) validate_and_copy_set_tun() 1770 start = add_nested_action_start(sfa, OVS_ACTION_ATTR_SET, log); validate_and_copy_set_tun() 1774 a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, validate_and_copy_set_tun() 1795 add_nested_action_end(*sfa, start); validate_and_copy_set_tun() 1816 struct sw_flow_actions **sfa, validate_set() 1857 err = validate_and_copy_set_tun(a, sfa, log); validate_set() 1951 start = add_nested_action_start(sfa, validate_set() 1957 at = __add_action(sfa, key_type, NULL, len, log); validate_set() 1969 add_nested_action_end(*sfa, start); validate_set() 1998 struct sw_flow_actions **sfa, bool log) copy_action() 2003 to = reserve_sfa_size(sfa, from->nla_len, log); copy_action() 2013 int depth, struct sw_flow_actions **sfa, __ovs_nla_copy_actions() 2128 err = validate_set(a, key, sfa, nla_for_each_nested() 2135 err = validate_set(a, key, sfa, nla_for_each_nested() 2142 err = validate_and_copy_sample(a, key, depth, sfa, nla_for_each_nested() 2154 err = copy_action(a, sfa, log); nla_for_each_nested() 2169 struct sw_flow_actions **sfa, bool log) ovs_nla_copy_actions() 2173 *sfa = nla_alloc_flow_actions(nla_len(attr), log); ovs_nla_copy_actions() 2174 if (IS_ERR(*sfa)) ovs_nla_copy_actions() 2175 return PTR_ERR(*sfa); ovs_nla_copy_actions() 2177 err = __ovs_nla_copy_actions(attr, key, 0, sfa, key->eth.type, ovs_nla_copy_actions() 2180 kfree(*sfa); ovs_nla_copy_actions() 1649 validate_and_copy_sample(const struct nlattr *attr, const struct sw_flow_key *key, int depth, struct sw_flow_actions **sfa, __be16 eth_type, __be16 vlan_tci, bool log) validate_and_copy_sample() argument 1744 validate_and_copy_set_tun(const struct nlattr *attr, struct sw_flow_actions **sfa, bool log) validate_and_copy_set_tun() argument 1814 validate_set(const struct nlattr *a, const struct sw_flow_key *flow_key, struct sw_flow_actions **sfa, bool *skip_copy, __be16 eth_type, bool masked, bool log) validate_set() argument 1997 copy_action(const struct nlattr *from, struct sw_flow_actions **sfa, bool log) copy_action() argument 2011 __ovs_nla_copy_actions(const struct nlattr *attr, const struct sw_flow_key *key, int depth, struct sw_flow_actions **sfa, __be16 eth_type, __be16 vlan_tci, bool log) __ovs_nla_copy_actions() argument 2167 ovs_nla_copy_actions(const struct nlattr *attr, const struct sw_flow_key *key, struct sw_flow_actions **sfa, bool log) ovs_nla_copy_actions() argument
|