diff mbox series

[iproute2-next,v2] bridge: vlan: dump port only if there are any vlans

Message ID 20210423121018.3662866-1-razor@blackwall.org (mailing list archive)
State Accepted
Delegated to: David Ahern
Headers show
Series [iproute2-next,v2] bridge: vlan: dump port only if there are any vlans | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Nikolay Aleksandrov April 23, 2021, 12:10 p.m. UTC
From: Nikolay Aleksandrov <nikolay@nvidia.com>

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 <nikolay@nvidia.com>
---
v2: sent proper patch version, fixed the vlan port closing only when opened
    added an example

Targeted at next since the patches were applied there recently.

 bridge/vlan.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

Comments

David Ahern April 26, 2021, 2:33 a.m. UTC | #1
On 4/23/21 5:10 AM, Nikolay Aleksandrov wrote:
> From: Nikolay Aleksandrov <nikolay@nvidia.com>
> 
> 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 <nikolay@nvidia.com>
> ---
> v2: sent proper patch version, fixed the vlan port closing only when opened
>     added an example
> 
> Targeted at next since the patches were applied there recently.
> 
>  bridge/vlan.c | 21 ++++++++++-----------
>  1 file changed, 10 insertions(+), 11 deletions(-)
> 

applied to iproute2-next
diff mbox series

Patch

diff --git a/bridge/vlan.c b/bridge/vlan.c
index 9bb9e28d11bb..9b6511f189ff 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();