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