diff options
| -rw-r--r-- | bgpd/bgp_evpn_vty.c | 46 | 
1 files changed, 23 insertions, 23 deletions
diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index 1bd153639b..4296604c4a 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -1048,7 +1048,20 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,  		rd_header = 1;  		tbl_ver = table->version; -		for (rm = bgp_table_top(table); rm; rm = bgp_route_next(rm)) +		for (rm = bgp_table_top(table); rm; rm = bgp_route_next(rm)) { +			if (use_json) { +				json_array = json_object_new_array(); +				json_prefix_info = json_object_new_object(); + +				json_object_string_add(json_prefix_info, +					"prefix", bgp_evpn_route2str( +					(struct prefix_evpn *)&rm->p, buf, +					BUFSIZ)); + +				json_object_int_add(json_prefix_info, +					"prefixLen", rm->p.prefixlen); +			} +  			for (pi = bgp_node_get_bgp_path_info(rm); pi;  			     pi = pi->next) {  				total_count++; @@ -1121,10 +1134,6 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,  					if (use_json) {  						json_nroute =  						      json_object_new_object(); -						json_prefix_info = -						       json_object_new_object(); -						json_array = -							json_object_new_array();  						if (type == RD_TYPE_AS  						    || type == RD_TYPE_AS4)  							sprintf(rd_str, "%u:%d", @@ -1140,18 +1149,6 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,  							"rd",  							rd_str); -						json_object_string_add( -							json_prefix_info, -							"prefix", -							bgp_evpn_route2str( -							(struct prefix_evpn *) -							&rm->p, buf, BUFSIZ)); - -						json_object_int_add( -							json_prefix_info, -							"prefixLen", -							rm->p.prefixlen); -  					} else {  						vty_out(vty,  							"Route Distinguisher: "); @@ -1174,6 +1171,7 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,  					}  					rd_header = 0;  				} +  				if (option == SHOW_DISPLAY_TAGS)  					route_vty_out_tag(vty, &rm->p, pi, 0,  							  SAFI_EVPN, @@ -1186,14 +1184,16 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,  						      SAFI_EVPN, json_array);  				output_count++;  			} +			if (use_json) { +				json_object_object_add(json_prefix_info, +					"paths", json_array); +				json_object_object_add(json_nroute, buf, +					json_prefix_info); +			} +		} -		if (use_json) { -			json_object_object_add(json_prefix_info, "paths", -				json_array); -			json_object_object_add(json_nroute, buf, -				json_prefix_info); +		if (use_json)  			json_object_object_add(json, rd_str, json_nroute); -		}  	}  	if (use_json) {  | 
