From: anuradhak <anurad...@cumulusnetworks.com>

json objects were started but not completed if the fdb vlan did not
match the specified filter vlan.

Sample output:
$ bridge -j fdb show vlan 111
[{
        "mac": "44:38:39:00:69:88",
        "dev": "br0",
        "vlan": 111,
        "master": "br0",
        "state": "permanent"
    }
]
$ bridge -j fdb show vlan 100
[]
$

Signed-off-by: Anuradha Karuppiah <anurad...@cumulusnetworks.com>
---
 bridge/fdb.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/bridge/fdb.c b/bridge/fdb.c
index c6e0379..90f4b15 100644
--- a/bridge/fdb.c
+++ b/bridge/fdb.c
@@ -100,11 +100,6 @@ int print_fdb(const struct sockaddr_nl *who, struct 
nlmsghdr *n, void *arg)
        if (filter_index && filter_index != r->ndm_ifindex)
                return 0;
 
-       if (jw_global) {
-               jsonw_pretty(jw_global, 1);
-               jsonw_start_object(jw_global);
-       }
-
        parse_rtattr(tb, NDA_MAX, NDA_RTA(r),
                     n->nlmsg_len - NLMSG_LENGTH(sizeof(*r)));
 
@@ -114,6 +109,11 @@ int print_fdb(const struct sockaddr_nl *who, struct 
nlmsghdr *n, void *arg)
        if (filter_vlan && filter_vlan != vid)
                return 0;
 
+       if (jw_global) {
+               jsonw_pretty(jw_global, 1);
+               jsonw_start_object(jw_global);
+       }
+
        if (n->nlmsg_type == RTM_DELNEIGH) {
                if (jw_global)
                        jsonw_string_field(jw_global, "opCode", "deleted");
-- 
2.1.4

Reply via email to