Signed-off-by: Thomas Graf <[email protected]>
---
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev