From: Zhang Chen <chen.zh...@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.zh...@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