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 --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);
+ }
}
}
--
2.17.GIT