X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fofpbuf.c;h=9cb2ceb80f7adc0d03b906d3b6552a78a65138d3;hb=c6278d208924bb04c41266ddca276712f95533bc;hp=fd01ea8d0227b5af4e8062ff17ee367feccc4c0d;hpb=5019f688d4e3117960503d57978ff2e0fb3771e0;p=openvswitch diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c index fd01ea8d..9cb2ceb8 100644 --- a/lib/ofpbuf.c +++ b/lib/ofpbuf.c @@ -19,6 +19,7 @@ #include #include #include +#include "dynamic-string.h" #include "util.h" /* Initializes 'b' as an empty ofpbuf that contains the 'allocated' bytes of @@ -286,3 +287,18 @@ ofpbuf_try_pull(struct ofpbuf *b, size_t size) { return b->size >= size ? ofpbuf_pull(b, size) : NULL; } + +/* 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 * +ofpbuf_to_string(const struct ofpbuf *b, size_t maxbytes) +{ + struct ds s; + + ds_init(&s); + ds_put_format(&s, "size=%zu, allocated=%zu, head=%zu, tail=%zu\n", + b->size, b->allocated, + ofpbuf_headroom(b), ofpbuf_tailroom(b)); + ds_put_hex_dump(&s, b->data, MIN(b->size, maxbytes), 0, false); + return ds_cstr(&s); +}