Looks Good.
On Fri, Mar 11, 2011 at 1:20 PM, Ben Pfaff <[email protected]> wrote: > This will have its first use in an upcoming commit. > --- > lib/ofpbuf.c | 21 ++++++++++++++++++++- > lib/ofpbuf.h | 4 +++- > 2 files changed, 23 insertions(+), 2 deletions(-) > > diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c > index 34aad93..7e96536 100644 > --- a/lib/ofpbuf.c > +++ b/lib/ofpbuf.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010 Nicira Networks. > + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -462,6 +462,25 @@ ofpbuf_try_pull(struct ofpbuf *b, size_t size) > return b->size >= size ? ofpbuf_pull(b, size) : NULL; > } > > +/* Returns the data in 'b' as a block of malloc()'d memory and frees the > buffer > + * within 'b'. (If 'b' itself was dynamically allocated, e.g. with > + * ofpbuf_new(), then it should still be freed with, e.g., ofpbuf_delete().) > */ > +void * > +ofpbuf_steal_data(struct ofpbuf *b) > +{ > + void *p; > + if (b->source == OFPBUF_MALLOC && b->data == b->base) { > + p = b->data; > + } else { > + p = xmemdup(b->data, b->size); > + if (b->source == OFPBUF_MALLOC) { > + free(b->base); > + } > + } > + b->base = b->data = NULL; > + return p; > +} > + > /* Returns a string that describes some of 'b''s metadata plus a hex dump of > up > * to 'maxbytes' from the start of the buffer. */ > char * > diff --git a/lib/ofpbuf.h b/lib/ofpbuf.h > index 442c90c..b8e3670 100644 > --- a/lib/ofpbuf.h > +++ b/lib/ofpbuf.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010 Nicira Networks. > + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -97,6 +97,8 @@ void ofpbuf_clear(struct ofpbuf *); > void *ofpbuf_pull(struct ofpbuf *, size_t); > void *ofpbuf_try_pull(struct ofpbuf *, size_t); > > +void *ofpbuf_steal_data(struct ofpbuf *); > + > char *ofpbuf_to_string(const struct ofpbuf *, size_t maxbytes); > > static inline struct ofpbuf *ofpbuf_from_list(const struct list *list) > -- > 1.7.1 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
