From: Numan Siddique <[email protected]>

Signed-off-by: Numan Siddique <[email protected]>
---
 controller/binding.c        | 13 +++++++++++++
 controller/binding.h        |  2 +-
 controller/ovn-controller.c | 16 ++++++++++++++++
 3 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/controller/binding.c b/controller/binding.c
index cbd7749494..470aa8c536 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -1128,6 +1128,19 @@ binding_dump_local_bindings(struct local_binding_data 
*lbinding_data,
     free(nodes);
 }
 
+void
+binding_dump_local_datapaths(struct hmap *local_datapaths,
+                             struct ds *out_data)
+{
+    ds_put_cstr(out_data, "Local datapaths:\n");
+    struct local_datapath *ld;
+    HMAP_FOR_EACH (ld, hmap_node, local_datapaths) {
+        ds_put_format(out_data, "Datapath: %s, type: %s\n",
+                      smap_get(&ld->datapath->external_ids, "name"),
+                      ld->is_switch ? "switch" : "router");
+    }
+}
+
 void
 set_pb_chassis_in_sbrec(const struct sbrec_port_binding *pb,
                         const struct sbrec_chassis *chassis_rec,
diff --git a/controller/binding.h b/controller/binding.h
index d13ae36c79..00dd9dbf51 100644
--- a/controller/binding.h
+++ b/controller/binding.h
@@ -201,7 +201,7 @@ bool binding_handle_port_binding_changes(struct 
binding_ctx_in *,
 void binding_tracked_dp_destroy(struct hmap *tracked_datapaths);
 
 void binding_dump_local_bindings(struct local_binding_data *, struct ds *);
-
+void binding_dump_local_datapaths(struct hmap *local_datapaths, struct ds *);
 void binding_dump_related_lports(struct related_lports *related_lports,
                                  struct ds *);
 
diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index c0f167c548..f49caa8372 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -104,6 +104,7 @@ static unixctl_cb_func debug_pause_execution;
 static unixctl_cb_func debug_resume_execution;
 static unixctl_cb_func debug_status_execution;
 static unixctl_cb_func debug_dump_local_bindings;
+static unixctl_cb_func debug_dump_local_datapaths;
 static unixctl_cb_func debug_dump_related_lports;
 static unixctl_cb_func debug_dump_local_template_vars;
 static unixctl_cb_func debug_dump_local_mac_bindings;
@@ -5954,6 +5955,10 @@ main(int argc, char *argv[])
                              debug_dump_local_bindings,
                              &runtime_data->lbinding_data);
 
+    unixctl_command_register("debug/dump-local-datapaths", "", 0, 0,
+                             debug_dump_local_datapaths,
+                             &runtime_data->local_datapaths);
+
     unixctl_command_register("debug/dump-related-ports", "", 0, 0,
                              debug_dump_related_lports,
                              &runtime_data->related_lports);
@@ -6928,6 +6933,17 @@ debug_dump_local_bindings(struct unixctl_conn *conn, int 
argc OVS_UNUSED,
     ds_destroy(&binding_data);
 }
 
+static void
+debug_dump_local_datapaths(struct unixctl_conn *conn, int argc OVS_UNUSED,
+                           const char *argv[] OVS_UNUSED,
+                           void *local_datapaths)
+{
+    struct ds local_dps_data = DS_EMPTY_INITIALIZER;
+    binding_dump_local_datapaths(local_datapaths, &local_dps_data);
+    unixctl_command_reply(conn, ds_cstr(&local_dps_data));
+    ds_destroy(&local_dps_data);
+}
+
 static void
 debug_dump_related_lports(struct unixctl_conn *conn, int argc OVS_UNUSED,
                           const char *argv[] OVS_UNUSED, void *related_lports)
-- 
2.48.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to