It could be 'error' is nonzero but 'success' is true when look into the function ofproto_flow_mod_learn(). The logic is too complex here, sorry I can't reason if this makes sense.
Thanks, Yifeng On Wed, Nov 29, 2017 at 1:53 PM, Ben Pfaff <[email protected]> wrote: > On Mon, Nov 20, 2017 at 04:26:39AM -0800, Yifeng Sun wrote: > > When ofm is not referenced by xc_entry, we should release its > > resources by calling ofproto_flow_mod_uninit because no one is > > going to use it in this function. > > > > Signed-off-by: Yifeng Sun <[email protected]> > > --- > > ofproto/ofproto-dpif-xlate.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c > > index 468cd160c60e..fcced344ed8a 100644 > > --- a/ofproto/ofproto-dpif-xlate.c > > +++ b/ofproto/ofproto-dpif-xlate.c > > @@ -5123,6 +5123,8 @@ xlate_learn_action(struct xlate_ctx *ctx, const > struct ofpact_learn *learn) > > entry->learn.ofm = ofm; > > entry->learn.limit = learn->limit; > > ofm = NULL; > > + } else { > > + ofproto_flow_mod_uninit(ofm); > > } > > > > if (OVS_UNLIKELY(ctx->xin->trace && !success)) { > > Thank you for finding this issue. > > The code in xlate_learn_action() is very hard to understand. (I'm sure > that this is partly my fault.) There appear to be cases where 'error' > is nonzero but 'success' is true. Does this combination make sense, > that is, should error != 0 imply success == false? > > Thanks, > > Ben. > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
