diff options
| -rw-r--r-- | sharpd/sharp_vty.c | 47 | ||||
| -rwxr-xr-x | tests/topotests/srv6_locator/test_srv6_locator.py | 2 |
2 files changed, 33 insertions, 16 deletions
diff --git a/sharpd/sharp_vty.c b/sharpd/sharp_vty.c index 72bc7d16b9..a6fcb8d58c 100644 --- a/sharpd/sharp_vty.c +++ b/sharpd/sharp_vty.c @@ -988,37 +988,54 @@ DEFPY (sharp_srv6_manager_release_locator_chunk, DEFPY (show_sharp_segment_routing_srv6, show_sharp_segment_routing_srv6_cmd, - "show sharp segment-routing srv6", + "show sharp segment-routing srv6 [json]", SHOW_STR SHARP_STR "Segment-Routing\n" - "Segment-Routing IPv6\n") + "Segment-Routing IPv6\n" + JSON_STR) { char str[256]; struct listnode *loc_node; struct listnode *chunk_node; struct sharp_srv6_locator *loc; struct prefix_ipv6 *chunk; + bool uj = use_json(argc, argv); json_object *jo_locs = NULL; json_object *jo_loc = NULL; json_object *jo_chunks = NULL; - jo_locs = json_object_new_array(); - for (ALL_LIST_ELEMENTS_RO(sg.srv6_locators, loc_node, loc)) { - jo_loc = json_object_new_object(); - json_object_array_add(jo_locs, jo_loc); - json_object_string_add(jo_loc, "name", loc->name); - jo_chunks = json_object_new_array(); - json_object_object_add(jo_loc, "chunks", jo_chunks); - for (ALL_LIST_ELEMENTS_RO(loc->chunks, chunk_node, chunk)) { - prefix2str(chunk, str, sizeof(str)); - json_array_string_add(jo_chunks, str); + if (uj) { + jo_locs = json_object_new_array(); + for (ALL_LIST_ELEMENTS_RO(sg.srv6_locators, loc_node, loc)) { + jo_loc = json_object_new_object(); + json_object_array_add(jo_locs, jo_loc); + json_object_string_add(jo_loc, "name", loc->name); + jo_chunks = json_object_new_array(); + json_object_object_add(jo_loc, "chunks", jo_chunks); + for (ALL_LIST_ELEMENTS_RO(loc->chunks, chunk_node, + chunk)) { + prefix2str(chunk, str, sizeof(str)); + json_array_string_add(jo_chunks, str); + } + } + + vty_out(vty, "%s\n", json_object_to_json_string_ext( + jo_locs, JSON_C_TO_STRING_PRETTY)); + json_object_free(jo_locs); + } else { + for (ALL_LIST_ELEMENTS_RO(sg.srv6_locators, loc_node, loc)) { + vty_out(vty, "Locator %s has %d prefix chunks\n", + loc->name, listcount(loc->chunks)); + for (ALL_LIST_ELEMENTS_RO(loc->chunks, chunk_node, + chunk)) { + prefix2str(chunk, str, sizeof(str)); + vty_out(vty, " %s\n", str); + } + vty_out(vty, "\n"); } } - vty_out(vty, "%s\n", json_object_to_json_string_ext( - jo_locs, JSON_C_TO_STRING_PRETTY)); - json_object_free(jo_locs); return CMD_SUCCESS; } diff --git a/tests/topotests/srv6_locator/test_srv6_locator.py b/tests/topotests/srv6_locator/test_srv6_locator.py index 91850b5045..a7416ce085 100755 --- a/tests/topotests/srv6_locator/test_srv6_locator.py +++ b/tests/topotests/srv6_locator/test_srv6_locator.py @@ -89,7 +89,7 @@ def test_srv6(): def _check_sharpd_chunk(router, expected_chunk_file): logger.info("checking sharpd locator chunk status") - output = json.loads(router.vtysh_cmd("show sharp segment-routing srv6")) + output = json.loads(router.vtysh_cmd("show sharp segment-routing srv6 json")) expected = open_json_file("{}/{}".format(CWD, expected_chunk_file)) return topotest.json_cmp(output, expected) |
