On Fri, May 03, 2013 at 09:38:29AM -0700, Ben Pfaff wrote:
> On Thu, May 02, 2013 at 06:06:35PM +0900, Simon Horman wrote:
> > Do not perform validation of learn actions during parsing.
> > I believe this is consistent with the handling of all other actions.
> > 
> > Verification of all actions, including learn actions, occurs separately
> > in ofpact_check__().
> > 
> > This the code portion of this patch is larger than might otherwise be
> > expected as the flow argument of learn_parse() is now unused and thus
> > removed.  This propagates up the call-chain some way.
> > 
> > This was suggested by Jesse Gross in response to an enhancement
> > I made to the validation performed during parsing learn actions
> > to allow it to correctly account for changes to the dl_type
> > due to MPLS push and pop actions.
> > 
> > Tests have also been updated to use ovs-ofctl add-flow* instead
> > of ovs-ofctl parse-flow to to allow verification occur using
> > ofpact_check__().
> > 
> > Cc: Jesse Gross <je...@nicira.com>
> > Signed-off-by: Simon Horman <horms+rene...@verge.net.au>
> 
> The problem with this change is that it makes the error messages
> impossible to read.  Just look at the learn.at update from your diff.
> It changes this error message:
> 
>   ovs-ofctl: load:5->NXM_OF_IP_DST[]: cannot specify destination field
>   ip_dst because prerequisites are not satisfied
> 
> into this one:
> 
>   OFPT_ERROR (xid=0x2): OFPBAC_BAD_ARGUMENT
>   OFPT_FLOW_MOD (xid=0x2):
>   (***truncated to 64 bytes from 120***)
>   00000000  01 0e 00 78 00 00 00 02-00 38 20 ff 00 00 00 00 |...x.....8 .....|
>   00000010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |................|
>   00000020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |................|
>   00000030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 00 |................|
> 
> I know we'll get complaints about that.
> 
> Here's a change to ofp-parse.c that changes the error message back
> into:
> 
>   2013-05-03T16:34:21Z|00001|meta_flow|WARN|destination field ip_dst lacks 
> correct prerequisites
> 
> which is less specific than before but at least hints at the problem.
> 
> Can you please work that in?

Sure, I'll see what I can do.

> diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c
> index fce0765..c55bf5f 100644
> --- a/lib/ofp-parse.c
> +++ b/lib/ofp-parse.c
> @@ -1009,6 +1009,8 @@ parse_ofp_str(struct ofputil_flow_mod *fm, int command, 
> const char *str_,
>          str_to_inst_ofpacts(act_str, &ofpacts);
>          fm->ofpacts_len = ofpacts.size;
>          fm->ofpacts = ofpbuf_steal_data(&ofpacts);
> +
> +        ofpacts_check(fm->ofpacts, fm->ofpacts_len, &fm->match.flow, 
> OFPP_MAX);
>      } else {
>          fm->ofpacts_len = 0;
>          fm->ofpacts = NULL;
> 
> Thanks,
> 
> Ben.
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to