From 8812f224fd3d5da88a7a4270f9d9027b21bcd980 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 23 Jul 2015 16:28:50 -0700 Subject: [PATCH] ofpbuf: New macro OFPBUF_STUB_INITIALIZER. To be used in an upcoming commit. Signed-off-by: Ben Pfaff Acked-by: Jarno Rajahalme --- lib/ofpbuf.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/ofpbuf.h b/lib/ofpbuf.h index b30cbdb2c..9e82de2cb 100644 --- a/lib/ofpbuf.h +++ b/lib/ofpbuf.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2015 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,6 +64,25 @@ struct ofpbuf { enum ofpbuf_source source; /* Source of memory allocated as 'base'. */ }; +/* An initializer for a struct ofpbuf that will be initially empty and + * uses the space in STUB (which should be an array) as a stub. + * + * Usage example: + * + * uint64_t stub[1024 / 8]; // 1 kB stub properly aligned for 64-bit data. + * struct ofpbuf ofpbuf = OFPBUF_STUB_INITIALIZER(stub); + */ +#define OFPBUF_STUB_INITIALIZER(STUB) { \ + .base = (STUB), \ + .data = (STUB), \ + .size = 0, \ + .allocated = sizeof (STUB), \ + .header = NULL, \ + .msg = NULL, \ + .list_node = OVS_LIST_POISON, \ + .source = OFPBUF_STUB, \ + } + void ofpbuf_use(struct ofpbuf *, void *, size_t); void ofpbuf_use_stack(struct ofpbuf *, void *, size_t); void ofpbuf_use_stub(struct ofpbuf *, void *, size_t); -- 2.39.5