Pravin, I’ll need to send a new version of the rest of the patches due to this change. You may want to hold your review for a while.
Jarno On Mar 24, 2014, at 9:53 AM, Pravin Shelar <pshe...@nicira.com> wrote: > On Mon, Mar 24, 2014 at 9:50 AM, Jarno Rajahalme <jrajaha...@nicira.com> > wrote: >> >> On Mar 21, 2014, at 1:52 PM, Pravin Shelar <pshe...@nicira.com> wrote: >> >>> On Fri, Feb 21, 2014 at 11:41 AM, Jarno Rajahalme <jrajaha...@nicira.com> >>> wrote: >>>> Flow SET can set an empty set of actions by not passing any actions. >>>> Previously, we assigned the flow's actions pointer to NULL in this >>>> case, but we never check for the NULL pointer later on. This patch >>>> modifies this case to allocate a valid but empty set of actions >>>> instead. >>>> >>> Good catch. >>> >>>> Note: If might be prudent to allow missing actions also in >>>> OVS_FLOW_CMD_NEW. >>>> >>> dpif-linux can avoid sending dummy action if we allow that. But for >>> compatibility we need to keep it anyways. So lets keep it as it is. >>> >>>> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> >>>> --- >>>> datapath/datapath.c | 9 ++++++++- >>>> 1 file changed, 8 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/datapath/datapath.c b/datapath/datapath.c >>>> index f7c3391..130300f 100644 >>>> --- a/datapath/datapath.c >>>> +++ b/datapath/datapath.c >>>> @@ -810,7 +810,14 @@ static int ovs_flow_cmd_new_or_set(struct sk_buff >>>> *skb, struct genl_info *info) >>>> OVS_NLERR("Flow actions may not be safe on all >>>> matching packets.\n"); >>>> goto err_kfree; >>>> } >>>> - } else if (info->genlhdr->cmd == OVS_FLOW_CMD_NEW) { >>>> + } else if (info->genlhdr->cmd == OVS_FLOW_CMD_SET) { >>>> + /* Need empty actions. */ >>>> + acts = ovs_nla_alloc_flow_actions(0); >>>> + error = PTR_ERR(acts); >>>> + if (IS_ERR(acts)) >>>> + goto error; >>>> + } else { >>>> + /* OVS_FLOW_CMD_NEW must have actions. */ >>>> error = -EINVAL; >>>> goto error; >>>> } >>> >>> Before this bug (OVS 1.7) set action use to ignore action if they were >>> NULL. In that case set-action was pure stats-clear call. Can we use >>> same semantics now? I mean ignore NULL actions for set-actions. >> >> Do we have this behavior documented somewhere? In >> include/linux/openvswitch.h we currently have: >> > > right, there is not documentation. > >> * @OVS_FLOW_ATTR_ACTIONS: Nested %OVS_ACTION_ATTR_* attributes specifying >> * the actions to take for packets that match the key. Always present in >> * notifications. Required for %OVS_FLOW_CMD_NEW requests, optional for >> * %OVS_FLOW_CMD_SET requests. >> >> How about adding: >> >> "An %OVS_FLOW_CMD_SET without %OVS_FLOW_ATTR_ACTIONS will not modify the >> actions. To clear the actions, an %OVS_FLOW_ATTR_ACTIONS without any nested >> attributes must be given." >> > Sounds good. > > Thanks, > Pravin.
_______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev