ofp-msgs: ensure that l2 is set in ofpmp_reserve()
authorBen Pfaff <blp@nicira.com>
Tue, 12 Feb 2013 23:49:12 +0000 (15:49 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 12 Feb 2013 23:53:04 +0000 (15:53 -0800)
Ensure that the buffer returned by ofpmp_reserve() has buf->l2 set
as this may be required by nxm_reg_load_to_nxast() when generating
the reply to an stats request

This problem was observed when dumping a large number of flows
with set_field actions using ovs-ofctl dump-flows.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Co-authored-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Simon Horman <horms@verge.net.au>
lib/ofp-msgs.c

index 00e1a84..702f68f 100644 (file)
@@ -832,6 +832,8 @@ ofpmp_reserve(struct list *replies, size_t len)
 
         next = ofpbuf_new(MAX(1024, hdrs_len + len));
         ofpbuf_put(next, msg->data, hdrs_len);
+        next->l2 = next->data;
+        next->l3 = ofpbuf_tail(next);
         list_push_back(replies, &next->list_node);
 
         *ofpmp_flags__(msg->data) |= htons(OFPSF_REPLY_MORE);