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