summaryrefslogtreecommitdiff
path: root/ofproto
diff options
context:
space:
mode:
authorJoe Stringer <joe@ovn.org>2016-08-11 12:36:16 -0700
committerJoe Stringer <joe@ovn.org>2016-08-11 14:54:07 -0700
commita716ef9a7a73e82957e890a61783cb3bedf371c8 (patch)
tree80c7e7034b990fbddc0a7647973fae4a8abe946e /ofproto
parent51f4f3f8917aacff1600fea38fc7ffbeae59101d (diff)
downloadopenvswitch-a716ef9a7a73e82957e890a61783cb3bedf371c8.tar.gz
ofproto-dpif-xlate: Log flow in XLATE_REPORT_ERROR.
To assist debugging pipelines when resubmit resource checks fail, print the base_flow from the translation context. This base flow can then be used from ofproto/trace to figure out which parts of the pipeline lead to this translation error. Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ofproto')
-rw-r--r--ofproto/ofproto-dpif-xlate.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index 393854e4b..1e375b58f 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -627,13 +627,19 @@ xlate_report(struct xlate_ctx *ctx, const char *format, ...)
static struct vlog_rate_limit error_report_rl = VLOG_RATE_LIMIT_INIT(1, 5);
-#define XLATE_REPORT_ERROR(CTX, ...) \
- do { \
- if (OVS_UNLIKELY((CTX)->xin->report_hook)) { \
- xlate_report(CTX, __VA_ARGS__); \
- } else { \
- VLOG_ERR_RL(&error_report_rl, __VA_ARGS__); \
- } \
+#define XLATE_REPORT_ERROR(CTX, ...) \
+ do { \
+ if (OVS_UNLIKELY((CTX)->xin->report_hook)) { \
+ xlate_report(CTX, __VA_ARGS__); \
+ } else { \
+ struct ds ds = DS_EMPTY_INITIALIZER; \
+ \
+ ds_put_format(&ds, __VA_ARGS__); \
+ ds_put_cstr(&ds, ": "); \
+ flow_format(&ds, &ctx->base_flow); \
+ VLOG_ERR_RL(&error_report_rl, ds_cstr(&ds)); \
+ ds_destroy(&ds); \
+ } \
} while (0)
static inline void