ovn-northd: Refactor main loop to use ovsdb_idl_loop_* functions
[cascardo/ovs.git] / lib / ofpbuf.h
index b30cbdb..873065e 100644 (file)
@@ -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,7 +64,26 @@ struct ofpbuf {
     enum ofpbuf_source source;  /* Source of memory allocated as 'base'. */
 };
 
-void ofpbuf_use(struct ofpbuf *, void *, size_t);
+/* 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_ds(struct ofpbuf *, const struct ds *);
 void ofpbuf_use_stack(struct ofpbuf *, void *, size_t);
 void ofpbuf_use_stub(struct ofpbuf *, void *, size_t);
 void ofpbuf_use_const(struct ofpbuf *, const void *, size_t);