From: Nikolay Aleksandrov Date: Fri, 23 Apr 2021 12:10:18 +0000 (+0300) Subject: bridge: vlan: dump port only if there are any vlans X-Git-Tag: v5.13.0~9^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c72de3713d633f9f72e7832f7e9e63479f516d13;p=thirdparty%2Fiproute2.git bridge: vlan: dump port only if there are any vlans When I added support for new vlan rtm dumping, I made a mistake in the output format when there are no vlans on the port. This patch fixes it by not printing ports without vlan entries (similar to current situation). Example (no vlans): $ bridge -d vlan show port vlan-id Fixes: e5f87c834193 ("bridge: vlan: add support for the new rtm dump call") Signed-off-by: Nikolay Aleksandrov Signed-off-by: David Ahern --- diff --git a/bridge/vlan.c b/bridge/vlan.c index 9bb9e28d1..9b6511f18 100644 --- a/bridge/vlan.c +++ b/bridge/vlan.c @@ -626,7 +626,6 @@ int print_vlan_rtm(struct nlmsghdr *n, void *arg, bool monitor) struct rtattr *vtb[BRIDGE_VLANDB_ENTRY_MAX + 1], *a; struct br_vlan_msg *bvm = NLMSG_DATA(n); int len = n->nlmsg_len; - bool newport = false; int rem; if (n->nlmsg_type != RTM_NEWVLAN && n->nlmsg_type != RTM_DELVLAN && @@ -654,12 +653,9 @@ int print_vlan_rtm(struct nlmsghdr *n, void *arg, bool monitor) if (monitor) vlan_rtm_cur_ifidx = -1; - if (vlan_rtm_cur_ifidx == -1 || vlan_rtm_cur_ifidx != bvm->ifindex) { - if (vlan_rtm_cur_ifidx != -1) - close_vlan_port(); - open_vlan_port(bvm->ifindex, VLAN_SHOW_VLAN); - vlan_rtm_cur_ifidx = bvm->ifindex; - newport = true; + if (vlan_rtm_cur_ifidx != -1 && vlan_rtm_cur_ifidx != bvm->ifindex) { + close_vlan_port(); + vlan_rtm_cur_ifidx = -1; } rem = len; @@ -707,11 +703,14 @@ int print_vlan_rtm(struct nlmsghdr *n, void *arg, bool monitor) vstats.tx_bytes = rta_getattr_u64(attr); } } - open_json_object(NULL); - if (!newport) + if (vlan_rtm_cur_ifidx != bvm->ifindex) { + open_vlan_port(bvm->ifindex, VLAN_SHOW_VLAN); + open_json_object(NULL); + vlan_rtm_cur_ifidx = bvm->ifindex; + } else { + open_json_object(NULL); print_string(PRINT_FP, NULL, "%-" __stringify(IFNAMSIZ) "s ", ""); - else - newport = false; + } print_range("vlan", vinfo->vid, vrange); print_vlan_flags(vinfo->flags); print_nl();