Thanks, I'll push this soon.

On Fri, Aug 03, 2012 at 06:04:42PM -0700, Ethan Jackson wrote:
> Looks good to me, thanks.
> 
> Ethan
> 
> On Fri, Aug 3, 2012 at 3:56 PM, Ben Pfaff <b...@nicira.com> wrote:
> > Commit 982697a4d2 "ofp-msgs: New approach to encoding and decoding OpenFlow
> > headers." introduced a bug in multipart message composition such that, when
> > a multipart message actually requires multiple parts, the OFPSF_REPLY_MORE
> > bit failed to be set on any of the parts, which in turn caused the receiver
> > to see a truncated reply.  This commit fixes the problem.
> >
> > This commit also adds a test case that would have detected the problem and
> > fixes a minor bug in that test case (if an error actually occurred, then
> > the test case would hang).
> >
> > Bug #12766.
> > Reported-by: James Schmidt <jschm...@nicira.com>
> > Signed-off-by: Ben Pfaff <b...@nicira.com>
> > ---
> >  lib/ofp-msgs.c   |    4 ++++
> >  tests/ofproto.at |    3 +++
> >  2 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/lib/ofp-msgs.c b/lib/ofp-msgs.c
> > index 07ee87a..00e1a84 100644
> > --- a/lib/ofp-msgs.c
> > +++ b/lib/ofp-msgs.c
> > @@ -789,6 +789,8 @@ ofpmsg_body(const struct ofp_header *oh)
> >      return (const uint8_t *) oh + ofphdrs_len(&hdrs);
> >  }
> >
> > +static ovs_be16 *ofpmp_flags__(const struct ofp_header *);
> > +
> >  /* Initializes 'replies' as a new list of stats messages that reply to
> >   * 'request', which must be a stats request message.  Initially the list 
> > will
> >   * consist of only a single reply part without any body.  The caller should
> > @@ -832,6 +834,8 @@ ofpmp_reserve(struct list *replies, size_t len)
> >          ofpbuf_put(next, msg->data, hdrs_len);
> >          list_push_back(replies, &next->list_node);
> >
> > +        *ofpmp_flags__(msg->data) |= htons(OFPSF_REPLY_MORE);
> > +
> >          return next;
> >      }
> >  }
> > diff --git a/tests/ofproto.at b/tests/ofproto.at
> > index 2528a73..46675bc 100644
> > --- a/tests/ofproto.at
> > +++ b/tests/ofproto.at
> > @@ -910,6 +910,7 @@ echo n_msgs=$n_msgs
> >  OVS_VSWITCHD_START
> >
> >  # Start a monitor watching the flow table, then make it block.
> > +trap 'kill `cat ovsdb-server.pid ovs-vswitchd.pid ovs-ofctl.pid`' 0
> >  ovs-ofctl monitor br0 watch: --detach --no-chdir --pidfile >monitor.log 
> > 2>&1
> >  AT_CAPTURE_FILE([monitor.log])
> >  ovs-appctl -t ovs-ofctl ofctl/block
> > @@ -922,6 +923,8 @@ perl -e '
> >      }
> >  ') > flows.txt
> >  AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
> > +# Check that multipart flow dumps work properly:
> > +AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
> >  AT_CHECK([ovs-ofctl add-flow br0 in_port=1,cookie=3,actions=drop])
> >  AT_CHECK([ovs-ofctl mod-flows br0 in_port=2,cookie=2,actions=output:2])
> >  AT_CHECK([ovs-ofctl del-flows br0 cookie=1/-1])
> > --
> > 1.7.2.5
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to