]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: fix json display for database command 15947/head
authoranlan_cs <anlan_cs@tom.com>
Tue, 7 May 2024 02:16:00 +0000 (10:16 +0800)
committeranlan_cs <anlan_cs@tom.com>
Tue, 7 May 2024 06:23:06 +0000 (14:23 +0800)
The current json display lost a lot of LSPs, added them.

Fixed the json format for two commands:
"show isis database detail json"
"show isis database json"

Signed-off-by: anlan_cs <anlan_cs@tom.com>
isisd/isis_lsp.c
isisd/isisd.c

index 77573cdfacb4c313e50dd100a73b4b5ebc700bc9..9d671137e945ed32d72963916013d8120257079f 100644 (file)
@@ -822,15 +822,24 @@ int lsp_print_all(struct vty *vty, struct json_object *json,
 {
        struct isis_lsp *lsp;
        int lsp_count = 0;
+       struct json_object *lsp_json = NULL;
 
        if (detail == ISIS_UI_LEVEL_BRIEF) {
                frr_each (lspdb, head, lsp) {
-                       lsp_print_common(lsp, vty, json, dynhost, isis);
+                       if (json) {
+                               lsp_json = json_object_new_object();
+                               json_object_array_add(json, lsp_json);
+                       }
+                       lsp_print_common(lsp, vty, lsp_json, dynhost, isis);
                        lsp_count++;
                }
        } else if (detail == ISIS_UI_LEVEL_DETAIL) {
                frr_each (lspdb, head, lsp) {
-                       lsp_print_detail(lsp, vty, json, dynhost, isis);
+                       if (json) {
+                               lsp_json = json_object_new_object();
+                               json_object_array_add(json, lsp_json);
+                       }
+                       lsp_print_detail(lsp, vty, lsp_json, dynhost, isis);
                        lsp_count++;
                }
        }
index c1eda4822a439eb80a6558959373c39929a1cbca..6535b8fcc0701250848384c6d73d7e050885d5cd 100644 (file)
@@ -2681,6 +2681,7 @@ void show_isis_database_lspdb_json(struct json_object *json,
 {
        struct isis_lsp *lsp;
        int lsp_count;
+       struct json_object *lsp_arr_json;
 
        if (lspdb_count(lspdb) > 0) {
                lsp = lsp_for_sysid(lspdb, sysid_str, area->isis);
@@ -2697,9 +2698,12 @@ void show_isis_database_lspdb_json(struct json_object *json,
                                lsp_print_json(lsp, json, area->dynhostname,
                                               area->isis);
                } else if (sysid_str == NULL) {
-                       lsp_count =
-                               lsp_print_all(NULL, json, lspdb, ui_level,
-                                             area->dynhostname, area->isis);
+                       lsp_arr_json = json_object_new_array();
+                       json_object_object_add(json, "lsps", lsp_arr_json);
+
+                       lsp_count = lsp_print_all(NULL, lsp_arr_json, lspdb,
+                                                 ui_level, area->dynhostname,
+                                                 area->isis);
 
                        json_object_int_add(json, "count", lsp_count);
                }