Signed-off-by: Thomas Graf <tg...@redhat.com>
---
 lib/vlog.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/vlog.h b/lib/vlog.h
index 0f791af..e5af21d 100644
--- a/lib/vlog.h
+++ b/lib/vlog.h
@@ -205,6 +205,11 @@ void vlog_rate_limit(const struct vlog_module *, enum 
vlog_level,
 #define VLOG_INFO_RL(RL, ...) VLOG_RL(RL, VLL_INFO, __VA_ARGS__)
 #define VLOG_DBG_RL(RL, ...) VLOG_RL(RL, VLL_DBG, __VA_ARGS__)
 
+/* Convenience macros to additionally store log message in buffer
+ * Caller is responsible for freeing *ERRP afterwards */
+#define VLOG_ERR_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_ERR, __VA_ARGS__)
+#define VLOG_WARN_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_WARN, __VA_ARGS__)
+
 #define VLOG_DROP_ERR(RL) vlog_should_drop(THIS_MODULE, VLL_ERR, RL)
 #define VLOG_DROP_WARN(RL) vlog_should_drop(THIS_MODULE, VLL_WARN, RL)
 #define VLOG_DROP_INFO(RL) vlog_should_drop(THIS_MODULE, VLL_INFO, RL)
@@ -262,6 +267,13 @@ void vlog_usage(void);
             ovsthread_once_done(&once);                                 \
         }                                                               \
     } while (0)
+#define VLOG_ERRP(ERRP, LEVEL, ...)                                     \
+    do {                                                                \
+        VLOG(LEVEL, __VA_ARGS__);                                       \
+        if (ERRP) {                                                     \
+            *(ERRP) = xasprintf(__VA_ARGS__);                           \
+        }                                                               \
+    } while (0)
 
 #define VLOG_DEFINE_MODULE__(MODULE)                                    \
         extern struct vlog_module VLM_##MODULE;                         \
-- 
1.8.3.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to