[PATCH dpdk] graph: make graphviz export more readable

Robin Jarry rjarry at redhat.com
Wed Aug 28 15:42:27 CEST 2024


Change the color of arrows leading to sink nodes to dark orange. Remove
the node oval shape around the sink nodes and make their text dark
orange. This results in a much more readable output for large graphs.
See the link below for an example.

Link: https://f.jarry.cc/rte-graph-dot/ipv6.svg
Signed-off-by: Robin Jarry <rjarry at redhat.com>
---
 lib/graph/graph.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/graph/graph.c b/lib/graph/graph.c
index d5b8c9f918cf..dff8e690a80d 100644
--- a/lib/graph/graph.c
+++ b/lib/graph/graph.c
@@ -745,7 +745,7 @@ graph_to_dot(FILE *f, struct graph *graph)
 			if (rc < 0)
 				goto end;
 		} else if (graph_node->node->nb_edges == 0) {
-			rc = fprintf(f, " [color=darkorange]");
+			rc = fprintf(f, " [fontcolor=darkorange shape=plain]");
 			if (rc < 0)
 				goto end;
 		}
@@ -753,9 +753,12 @@ graph_to_dot(FILE *f, struct graph *graph)
 		if (rc < 0)
 			goto end;
 		for (i = 0; i < graph_node->node->nb_edges; i++) {
+			const char *node_attrs = attrs;
+			if (graph_node->adjacency_list[i]->node->nb_edges == 0)
+				node_attrs = " [color=darkorange]";
 			rc = fprintf(f, "\t\"%s\" -> \"%s\"%s;\n", node_name,
 				     graph_node->adjacency_list[i]->node->name,
-				     attrs);
+				     node_attrs);
 			if (rc < 0)
 				goto end;
 		}
-- 
2.46.0



More information about the dev mailing list