diff mbox series

net/filter: Add filter order info for "info network"

Message ID 20190903082229.28609-1-chen.zhang@intel.com
State New
Headers show
Series net/filter: Add filter order info for "info network" | expand

Commit Message

Zhang, Chen Sept. 3, 2019, 8:22 a.m. UTC
From: Zhang Chen <chen.zhang@intel.com>

People need a way to know current filter order if they
want to dynamic add/remove netfilter.

For example:
(qemu) info network
.......
filters order:
 m0 ---> redire0 ---> redire1 ---> End
.......

Signed-off-by: Zhang Chen <chen.zhang@intel.com>
---
 net/net.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/net/net.c b/net/net.c
index 84aa6d8d00..496f4aa049 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1253,15 +1253,23 @@  void print_net_client(Monitor *mon, NetClientState *nc)
                    NetClientDriver_str(nc->info->type),
                    nc->info_str);
     if (!QTAILQ_EMPTY(&nc->filters)) {
-        monitor_printf(mon, "filters:\n");
-    }
-    QTAILQ_FOREACH(nf, &nc->filters, next) {
-        char *path = object_get_canonical_path_component(OBJECT(nf));
+        monitor_printf(mon, "filters order:\n");
+        QTAILQ_FOREACH(nf, &nc->filters, next) {
+            char *path = object_get_canonical_path_component(OBJECT(nf));
+
+            monitor_printf(mon, " %s --->", path);
+        }
+        monitor_printf(mon, " End\n");
+        monitor_printf(mon, "filters detail info:\n");
 
-        monitor_printf(mon, "  - %s: type=%s", path,
-                       object_get_typename(OBJECT(nf)));
-        netfilter_print_info(mon, nf);
-        g_free(path);
+        QTAILQ_FOREACH(nf, &nc->filters, next) {
+            char *path = object_get_canonical_path_component(OBJECT(nf));
+
+            monitor_printf(mon, "  - %s: type=%s", path,
+                           object_get_typename(OBJECT(nf)));
+            netfilter_print_info(mon, nf);
+            g_free(path);
+        }
     }
 }