]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
bridge: Fix garbled json output seen if a vlan filter is specified
authoranuradhak <anuradhak@cumulusnetworks.com>
Fri, 7 Oct 2016 16:40:18 +0000 (09:40 -0700)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 10 Oct 2016 01:49:32 +0000 (18:49 -0700)
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 <anuradhak@cumulusnetworks.com>
bridge/fdb.c

index c6e03793a2d91571caa9b3b3c2abd205b5b3edb5..90f4b154c5dc2473fefcc2ab1255802cf68def2e 100644 (file)
@@ -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");