summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_rpki.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2022-05-24 14:43:47 +0200
committerDonatas Abraitis <donatas@opensourcerouting.org>2022-05-24 18:31:11 +0200
commitcc4d121f9f0fca40141425ef9af739ba4b385e36 (patch)
tree8337bede5c09490a2384bf66b10388349b02206d /bgpd/bgp_rpki.c
parentMerge pull request #11265 from opensourcerouting/fix/ssh_config_rpki (diff)
downloadfrr-cc4d121f9f0fca40141425ef9af739ba4b385e36.tar.xz
frr-cc4d121f9f0fca40141425ef9af739ba4b385e36.zip
bgpd: Add JSON support for `show rpki cache-server`
``` spine1-debian-11# sh rpki cache-server json { "servers":[ { "mode":"tcp", "host":"192.168.10.17", "port":"8283" }, { "mode":"tcp", "host":"192.168.10.17", "port":"8282" } ] } spine1-debian-11# sh rpki cache-server host: 192.168.10.17 port: 8283 host: 192.168.10.17 port: 8282 spine1-debian-11# ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Diffstat (limited to 'bgpd/bgp_rpki.c')
-rw-r--r--bgpd/bgp_rpki.c82
1 files changed, 67 insertions, 15 deletions
diff --git a/bgpd/bgp_rpki.c b/bgpd/bgp_rpki.c
index e20ea15e0..1acb36127 100644
--- a/bgpd/bgp_rpki.c
+++ b/bgpd/bgp_rpki.c
@@ -1278,37 +1278,89 @@ DEFPY (show_rpki_prefix,
return CMD_SUCCESS;
}
-DEFUN (show_rpki_cache_server,
+DEFPY (show_rpki_cache_server,
show_rpki_cache_server_cmd,
- "show rpki cache-server",
+ "show rpki cache-server [json$uj]",
SHOW_STR
RPKI_OUTPUT_STRING
- "SHOW configured cache server\n")
+ "Show configured cache server\n"
+ JSON_STR)
{
+ struct json_object *json = NULL;
+ struct json_object *json_server = NULL;
+ struct json_object *json_servers = NULL;
struct listnode *cache_node;
struct cache *cache;
+ if (uj) {
+ json = json_object_new_object();
+ json_servers = json_object_new_array();
+ json_object_object_add(json, "servers", json_servers);
+ }
+
for (ALL_LIST_ELEMENTS_RO(cache_list, cache_node, cache)) {
if (cache->type == TCP) {
- vty_out(vty, "host: %s port: %s\n",
- cache->tr_config.tcp_config->host,
- cache->tr_config.tcp_config->port);
+ if (!json) {
+ vty_out(vty, "host: %s port: %s\n",
+ cache->tr_config.tcp_config->host,
+ cache->tr_config.tcp_config->port);
+ } else {
+ json_server = json_object_new_object();
+ json_object_string_add(json_server, "mode",
+ "tcp");
+ json_object_string_add(
+ json_server, "host",
+ cache->tr_config.tcp_config->host);
+ json_object_string_add(
+ json_server, "port",
+ cache->tr_config.tcp_config->port);
+ json_object_array_add(json_servers,
+ json_server);
+ }
#if defined(FOUND_SSH)
} else if (cache->type == SSH) {
- vty_out(vty,
- "host: %s port: %d username: %s server_hostkey_path: %s client_privkey_path: %s\n",
- cache->tr_config.ssh_config->host,
- cache->tr_config.ssh_config->port,
- cache->tr_config.ssh_config->username,
- cache->tr_config.ssh_config
- ->server_hostkey_path,
- cache->tr_config.ssh_config
- ->client_privkey_path);
+ if (!json) {
+ vty_out(vty,
+ "host: %s port: %d username: %s server_hostkey_path: %s client_privkey_path: %s\n",
+ cache->tr_config.ssh_config->host,
+ cache->tr_config.ssh_config->port,
+ cache->tr_config.ssh_config->username,
+ cache->tr_config.ssh_config
+ ->server_hostkey_path,
+ cache->tr_config.ssh_config
+ ->client_privkey_path);
+ } else {
+ json_server = json_object_new_object();
+ json_object_string_add(json_server, "mode",
+ "ssh");
+ json_object_string_add(
+ json_server, "host",
+ cache->tr_config.ssh_config->host);
+ json_object_int_add(
+ json_server, "port",
+ cache->tr_config.ssh_config->port);
+ json_object_string_add(
+ json_server, "username",
+ cache->tr_config.ssh_config->username);
+ json_object_string_add(
+ json_server, "serverHostkeyPath",
+ cache->tr_config.ssh_config
+ ->server_hostkey_path);
+ json_object_string_add(
+ json_server, "clientPrivkeyPath",
+ cache->tr_config.ssh_config
+ ->client_privkey_path);
+ json_object_array_add(json_servers,
+ json_server);
+ }
#endif
}
}
+ if (json)
+ vty_json(vty, json);
+
return CMD_SUCCESS;
}