[ovs-dev] [PATCH V9 29/31] dpif: Refactor flow logging functions to be used by other modules

Roi Dayan roid at mellanox.com
Sun May 28 12:00:11 UTC 2017


To be reused by other modules.

Signed-off-by: Roi Dayan <roid at mellanox.com>
Reviewed-by: Paul Blakey <paulb at mellanox.com>
---
 lib/dpif.c | 87 +++++++++++++++++++++++++++++++-------------------------------
 lib/dpif.h | 28 ++++++++++++++++++++
 2 files changed, 72 insertions(+), 43 deletions(-)

diff --git a/lib/dpif.c b/lib/dpif.c
index 658830b..bc1f034 100644
--- a/lib/dpif.c
+++ b/lib/dpif.c
@@ -92,24 +92,10 @@ static struct vlog_rate_limit dpmsg_rl = VLOG_RATE_LIMIT_INIT(600, 600);
 /* Not really much point in logging many dpif errors. */
 static struct vlog_rate_limit error_rl = VLOG_RATE_LIMIT_INIT(60, 5);
 
-static void log_flow_message(const struct dpif *dpif, int error,
-                             const char *operation,
-                             const struct nlattr *key, size_t key_len,
-                             const struct nlattr *mask, size_t mask_len,
-                             const ovs_u128 *ufid,
-                             const struct dpif_flow_stats *stats,
-                             const struct nlattr *actions, size_t actions_len);
 static void log_operation(const struct dpif *, const char *operation,
                           int error);
-static bool should_log_flow_message(int error);
-static void log_flow_put_message(struct dpif *, const struct dpif_flow_put *,
-                                 int error);
-static void log_flow_del_message(struct dpif *, const struct dpif_flow_del *,
-                                 int error);
-static void log_execute_message(struct dpif *, const struct dpif_execute *,
-                                bool subexecute, int error);
-static void log_flow_get_message(const struct dpif *,
-                                 const struct dpif_flow_get *, int error);
+static bool should_log_flow_message(const struct vlog_module *module,
+                                    int error);
 
 /* Incremented whenever tnl route, arp, etc changes. */
 struct seq *tnl_conf_seq;
@@ -1123,8 +1109,9 @@ dpif_flow_dump_next(struct dpif_flow_dump_thread *thread,
     if (n > 0) {
         struct dpif_flow *f;
 
-        for (f = flows; f < &flows[n] && should_log_flow_message(0); f++) {
-            log_flow_message(dpif, 0, "flow_dump",
+        for (f = flows; f < &flows[n]
+             && should_log_flow_message(&this_module, 0); f++) {
+            log_flow_message(dpif, 0, &this_module, "flow_dump",
                              f->key, f->key_len, f->mask, f->mask_len,
                              &f->ufid, &f->stats, f->actions, f->actions_len);
         }
@@ -1229,7 +1216,8 @@ dpif_execute_helper_cb(void *aux_, struct dp_packet_batch *packets_,
         execute.probe = false;
         execute.mtu = 0;
         aux->error = dpif_execute(aux->dpif, &execute);
-        log_execute_message(aux->dpif, &execute, true, aux->error);
+        log_execute_message(aux->dpif, &this_module, &execute,
+                            true, aux->error);
 
         dp_packet_delete(clone);
 
@@ -1344,7 +1332,7 @@ dpif_operate(struct dpif *dpif, struct dpif_op **ops, size_t n_ops)
                     struct dpif_flow_put *put = &op->u.flow_put;
 
                     COVERAGE_INC(dpif_flow_put);
-                    log_flow_put_message(dpif, put, error);
+                    log_flow_put_message(dpif, &this_module, put, error);
                     if (error && put->stats) {
                         memset(put->stats, 0, sizeof *put->stats);
                     }
@@ -1358,7 +1346,7 @@ dpif_operate(struct dpif *dpif, struct dpif_op **ops, size_t n_ops)
                     if (error) {
                         memset(get->flow, 0, sizeof *get->flow);
                     }
-                    log_flow_get_message(dpif, get, error);
+                    log_flow_get_message(dpif, &this_module, get, error);
 
                     break;
                 }
@@ -1367,7 +1355,7 @@ dpif_operate(struct dpif *dpif, struct dpif_op **ops, size_t n_ops)
                     struct dpif_flow_del *del = &op->u.flow_del;
 
                     COVERAGE_INC(dpif_flow_del);
-                    log_flow_del_message(dpif, del, error);
+                    log_flow_del_message(dpif, &this_module, del, error);
                     if (error && del->stats) {
                         memset(del->stats, 0, sizeof *del->stats);
                     }
@@ -1376,7 +1364,8 @@ dpif_operate(struct dpif *dpif, struct dpif_op **ops, size_t n_ops)
 
                 case DPIF_OP_EXECUTE:
                     COVERAGE_INC(dpif_execute);
-                    log_execute_message(dpif, &op->u.execute, false, error);
+                    log_execute_message(dpif, &this_module, &op->u.execute,
+                                        false, error);
                     break;
                 }
             }
@@ -1689,14 +1678,16 @@ flow_message_log_level(int error)
 }
 
 static bool
-should_log_flow_message(int error)
+should_log_flow_message(const struct vlog_module *module, int error)
 {
-    return !vlog_should_drop(&this_module, flow_message_log_level(error),
+    return !vlog_should_drop(module, flow_message_log_level(error),
                              error ? &error_rl : &dpmsg_rl);
 }
 
-static void
-log_flow_message(const struct dpif *dpif, int error, const char *operation,
+void
+log_flow_message(const struct dpif *dpif, int error,
+                 const struct vlog_module *module,
+                 const char *operation,
                  const struct nlattr *key, size_t key_len,
                  const struct nlattr *mask, size_t mask_len,
                  const ovs_u128 *ufid, const struct dpif_flow_stats *stats,
@@ -1724,15 +1715,18 @@ log_flow_message(const struct dpif *dpif, int error, const char *operation,
         ds_put_cstr(&ds, ", actions:");
         format_odp_actions(&ds, actions, actions_len);
     }
-    vlog(&this_module, flow_message_log_level(error), "%s", ds_cstr(&ds));
+    vlog(module, flow_message_log_level(error), "%s", ds_cstr(&ds));
     ds_destroy(&ds);
 }
 
-static void
-log_flow_put_message(struct dpif *dpif, const struct dpif_flow_put *put,
+void
+log_flow_put_message(const struct dpif *dpif,
+                     const struct vlog_module *module,
+                     const struct dpif_flow_put *put,
                      int error)
 {
-    if (should_log_flow_message(error) && !(put->flags & DPIF_FP_PROBE)) {
+    if (should_log_flow_message(module, error)
+        && !(put->flags & DPIF_FP_PROBE)) {
         struct ds s;
 
         ds_init(&s);
@@ -1746,7 +1740,7 @@ log_flow_put_message(struct dpif *dpif, const struct dpif_flow_put *put,
         if (put->flags & DPIF_FP_ZERO_STATS) {
             ds_put_cstr(&s, "[zero]");
         }
-        log_flow_message(dpif, error, ds_cstr(&s),
+        log_flow_message(dpif, error, module, ds_cstr(&s),
                          put->key, put->key_len, put->mask, put->mask_len,
                          put->ufid, put->stats, put->actions,
                          put->actions_len);
@@ -1754,12 +1748,15 @@ log_flow_put_message(struct dpif *dpif, const struct dpif_flow_put *put,
     }
 }
 
-static void
-log_flow_del_message(struct dpif *dpif, const struct dpif_flow_del *del,
+void
+log_flow_del_message(const struct dpif *dpif,
+                     const struct vlog_module *module,
+                     const struct dpif_flow_del *del,
                      int error)
 {
-    if (should_log_flow_message(error)) {
-        log_flow_message(dpif, error, "flow_del", del->key, del->key_len,
+    if (should_log_flow_message(module, error)) {
+        log_flow_message(dpif, error, module, "flow_del",
+                         del->key, del->key_len,
                          NULL, 0, del->ufid, !error ? del->stats : NULL,
                          NULL, 0);
     }
@@ -1782,8 +1779,10 @@ log_flow_del_message(struct dpif *dpif, const struct dpif_flow_del *del,
  *
  * It would still be better to avoid the potential problem.  I don't know of a
  * good way to do that, though, that isn't expensive. */
-static void
-log_execute_message(struct dpif *dpif, const struct dpif_execute *execute,
+void
+log_execute_message(const struct dpif *dpif,
+                    const struct vlog_module *module,
+                    const struct dpif_execute *execute,
                     bool subexecute, int error)
 {
     if (!(error ? VLOG_DROP_WARN(&error_rl) : VLOG_DROP_DBG(&dpmsg_rl))
@@ -1810,19 +1809,21 @@ log_execute_message(struct dpif *dpif, const struct dpif_execute *execute,
         ds_put_format(&ds, " with metadata ");
         odp_flow_format(md.data, md.size, NULL, 0, NULL, &ds, true);
         ds_put_format(&ds, " mtu %d", execute->mtu);
-        vlog(&this_module, error ? VLL_WARN : VLL_DBG, "%s", ds_cstr(&ds));
+        vlog(module, error ? VLL_WARN : VLL_DBG, "%s", ds_cstr(&ds));
         ds_destroy(&ds);
         free(packet);
         ofpbuf_uninit(&md);
     }
 }
 
-static void
-log_flow_get_message(const struct dpif *dpif, const struct dpif_flow_get *get,
+void
+log_flow_get_message(const struct dpif *dpif,
+                     const struct vlog_module *module,
+                     const struct dpif_flow_get *get,
                      int error)
 {
-    if (should_log_flow_message(error)) {
-        log_flow_message(dpif, error, "flow_get",
+    if (should_log_flow_message(module, error)) {
+        log_flow_message(dpif, error, module, "flow_get",
                          get->key, get->key_len,
                          get->flow->mask, get->flow->mask_len,
                          get->ufid, &get->flow->stats,
diff --git a/lib/dpif.h b/lib/dpif.h
index 38efd29..d1ac571 100644
--- a/lib/dpif.h
+++ b/lib/dpif.h
@@ -885,6 +885,34 @@ int dpif_get_pmds_for_port(const struct dpif * dpif, odp_port_t port_no,
 
 char *dpif_get_dp_version(const struct dpif *);
 bool dpif_supports_tnl_push_pop(const struct dpif *);
+
+/* Log functions. */
+struct vlog_module;
+
+void log_flow_message(const struct dpif *dpif, int error,
+                      const struct vlog_module *module,
+                      const char *operation,
+                      const struct nlattr *key, size_t key_len,
+                      const struct nlattr *mask, size_t mask_len,
+                      const ovs_u128 *ufid,
+                      const struct dpif_flow_stats *stats,
+                      const struct nlattr *actions, size_t actions_len);
+void log_flow_put_message(const struct dpif *,
+                          const struct vlog_module *,
+                          const struct dpif_flow_put *,
+                          int error);
+void log_flow_del_message(const struct dpif *,
+                          const struct vlog_module *,
+                          const struct dpif_flow_del *,
+                          int error);
+void log_execute_message(const struct dpif *,
+                         const struct vlog_module *,
+                         const struct dpif_execute *,
+                         bool subexecute, int error);
+void log_flow_get_message(const struct dpif *,
+                          const struct vlog_module *,
+                          const struct dpif_flow_get *,
+                          int error);
 #ifdef  __cplusplus
 }
 #endif
-- 
2.7.4



More information about the dev mailing list