[ovs-dev] [PATCH 4/7] ofpbuf: New function ofpbuf_clone_data_with_headroom().
Ben Pfaff
blp at nicira.com
Mon Dec 27 22:36:53 UTC 2010
On Mon, Dec 27, 2010 at 05:00:15PM -0500, Jesse Gross wrote:
> On Thu, Dec 23, 2010 at 8:15 PM, Ben Pfaff <blp at nicira.com> wrote:
> > This will be used in upcoming commits.
> > ---
> > lib/ofpbuf.c | 13 +++++++++----
> > lib/ofpbuf.h | 2 ++
> > 2 files changed, 11 insertions(+), 4 deletions(-)
>
> Can you comment this function and add it to the patch description?
OK, thanks, here's the new version, now with bonus comments.
--8<--------------------------cut here-------------------------->8--
From: Ben Pfaff <blp at nicira.com>
Date: Mon, 27 Dec 2010 14:36:16 -0800
Subject: [PATCH] ofpbuf: New function ofpbuf_clone_data_with_headroom().
This new function is a simple helper that creates a new ofpbuf with some
initial contents plus a caller-specified amount of headroom.
This will be used in upcoming commits.
Acked-by: Jesse Gross <jesse at nicira.com>
---
lib/ofpbuf.c | 21 +++++++++++++++++----
lib/ofpbuf.h | 2 ++
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c
index 8191c87..34aad93 100644
--- a/lib/ofpbuf.c
+++ b/lib/ofpbuf.c
@@ -123,6 +123,9 @@ ofpbuf_new_with_headroom(size_t size, size_t headroom)
return b;
}
+/* Creates and returns a new ofpbuf that initially contains a copy of the
+ * 'buffer->size' bytes of data starting at 'buffer->data' with no headroom or
+ * tailroom. */
struct ofpbuf *
ofpbuf_clone(const struct ofpbuf *buffer)
{
@@ -134,15 +137,25 @@ ofpbuf_clone(const struct ofpbuf *buffer)
struct ofpbuf *
ofpbuf_clone_with_headroom(const struct ofpbuf *buffer, size_t headroom)
{
- struct ofpbuf *b = ofpbuf_new_with_headroom(buffer->size, headroom);
- ofpbuf_put(b, buffer->data, buffer->size);
- return b;
+ return ofpbuf_clone_data_with_headroom(buffer->data, buffer->size,
+ headroom);
}
+/* Creates and returns a new ofpbuf that initially contains a copy of the
+ * 'size' bytes of data starting at 'data' with no headroom or tailroom. */
struct ofpbuf *
ofpbuf_clone_data(const void *data, size_t size)
{
- struct ofpbuf *b = ofpbuf_new(size);
+ return ofpbuf_clone_data_with_headroom(data, size, 0);
+}
+
+/* Creates and returns a new ofpbuf that initially contains 'headroom' bytes of
+ * headroom followed by a copy of the 'size' bytes of data starting at
+ * 'data'. */
+struct ofpbuf *
+ofpbuf_clone_data_with_headroom(const void *data, size_t size, size_t headroom)
+{
+ struct ofpbuf *b = ofpbuf_new_with_headroom(size, headroom);
ofpbuf_put(b, data, size);
return b;
}
diff --git a/lib/ofpbuf.h b/lib/ofpbuf.h
index 15f0ab1..442c90c 100644
--- a/lib/ofpbuf.h
+++ b/lib/ofpbuf.h
@@ -69,6 +69,8 @@ struct ofpbuf *ofpbuf_clone(const struct ofpbuf *);
struct ofpbuf *ofpbuf_clone_with_headroom(const struct ofpbuf *,
size_t headroom);
struct ofpbuf *ofpbuf_clone_data(const void *, size_t);
+struct ofpbuf *ofpbuf_clone_data_with_headroom(const void *, size_t,
+ size_t headroom);
void ofpbuf_delete(struct ofpbuf *);
void *ofpbuf_at(const struct ofpbuf *, size_t offset, size_t size);
--
1.7.1
More information about the dev
mailing list