#include <tr_util.h>
#include <tr_debug.h>
-/**
- * Convert TR_NAME n to a JSON string, returning the empty string if n is null
- */
-static json_t *safe_name_to_json_string(TR_NAME *n)
-{
- if (n)
- return tr_name_to_json_string(n);
- else
- return json_string("");
-}
-
static json_t *expiry_to_json_string(TR_COMM_MEMB *memb)
{
struct timespec ts_zero = {0, 0};
OBJECT_SET_OR_FAIL(memb_json, "origin", json_string("file"));
} else {
OBJECT_SET_OR_FAIL(memb_json, "origin",
- safe_name_to_json_string(tr_comm_memb_get_origin(memb)));
+ tr_name_to_json_string(tr_comm_memb_get_origin(memb)));
OBJECT_SET_OR_FAIL(memb_json, "provenance",
provenance_to_json(memb));
OBJECT_SET_OR_FAIL(memb_json, "expires",
}
OBJECT_SET_OR_FAIL(comm_json, "name",
tr_name_to_json_string(tr_comm_get_id(comm)));
- OBJECT_SET_OR_FAIL(comm_json, "owner_realm",
- safe_name_to_json_string(tr_comm_get_owner_realm(comm)));
- OBJECT_SET_OR_FAIL(comm_json, "owner_contact",
- safe_name_to_json_string(tr_comm_get_owner_contact(comm)));
-
+ if (tr_comm_get_owner_realm(comm)) {
+ OBJECT_SET_OR_FAIL(comm_json, "owner_realm",
+ tr_name_to_json_string(tr_comm_get_owner_realm(comm)));
+ }
+ if (tr_comm_get_owner_contact(comm)) {
+ OBJECT_SET_OR_FAIL(comm_json, "owner_contact",
+ tr_name_to_json_string(tr_comm_get_owner_contact(comm)));
+ }
OBJECT_SET_OR_FAIL(comm_json, "idp_realms",
tr_comm_realms_to_json(ctable, tr_comm_get_id(comm), TR_ROLE_IDP));
OBJECT_SET_OR_FAIL(comm_json, "rp_realms",
// System information
OPT_TYPE_SHOW_VERSION,
- OPT_TYPE_SHOW_SERIAL,
+ OPT_TYPE_SHOW_CONFIG_FILES,
// System statistics
OPT_TYPE_SHOW_UPTIME,
case OPT_TYPE_SHOW_VERSION:
return "version";
- case OPT_TYPE_SHOW_SERIAL:
- return "serial";
+ case OPT_TYPE_SHOW_CONFIG_FILES:
+ return "config_files";
case OPT_TYPE_SHOW_UPTIME:
return "uptime";
MON_OPT_TYPE mon_opt_type_from_string(const char *s)
{
return_if_matches(s, OPT_TYPE_SHOW_VERSION);
- return_if_matches(s, OPT_TYPE_SHOW_SERIAL);
+ return_if_matches(s, OPT_TYPE_SHOW_CONFIG_FILES);
return_if_matches(s, OPT_TYPE_SHOW_UPTIME);
return_if_matches(s, OPT_TYPE_SHOW_TID_REQ_COUNT);
return_if_matches(s, OPT_TYPE_SHOW_TID_REQ_ERR_COUNT);
static MON_REQ *show_all_options()
{
MON_OPT_TYPE opts[] = {
- OPT_TYPE_SHOW_SERIAL,
+ OPT_TYPE_SHOW_CONFIG_FILES,
OPT_TYPE_SHOW_VERSION,
OPT_TYPE_SHOW_UPTIME,
OPT_TYPE_SHOW_TID_REQ_COUNT,
free(expected);
// Test show with many options
- opts[0] = OPT_TYPE_SHOW_SERIAL;
+ opts[0] = OPT_TYPE_SHOW_CONFIG_FILES;
opts[1] = OPT_TYPE_SHOW_VERSION;
opts[2] = OPT_TYPE_SHOW_UPTIME;
opts[3] = OPT_TYPE_SHOW_TID_REQ_COUNT;
mon_opt_type_to_string(OPT_TYPE_SHOW_VERSION),
json_string("1.2.3-4")));
assert(! json_object_set_new(payload,
- mon_opt_type_to_string(OPT_TYPE_SHOW_SERIAL),
+ mon_opt_type_to_string(OPT_TYPE_SHOW_CONFIG_FILES),
json_integer(1234567890)));
assert(! json_object_set_new(payload,
- mon_opt_type_to_string(OPT_TYPE_SHOW_SERIAL),
+ mon_opt_type_to_string(OPT_TYPE_SHOW_CONFIG_FILES),
json_integer(86400)));
assert(! json_object_set_new(payload,
mon_opt_type_to_string(OPT_TYPE_SHOW_TID_REQ_PENDING),
/* Register monitoring handlers */
mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_VERSION, tr_handle_version, NULL);
- mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_SERIAL, tr_handle_show_cfg_serial, tr->cfg_mgr);
+ mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_CONFIG_FILES, tr_handle_show_cfg_serial, tr->cfg_mgr);
mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_UPTIME, tr_handle_uptime, &start_time);
mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_RP_CLIENTS, tr_handle_show_rp_clients, tr->cfg_mgr);
tr_tid_register_mons_handlers(tr->tids, tr->mons);
char *s = NULL;
json_t *jstr = NULL;
- if (tr_cmp_timespec(trp_route_get_expiry(route), &ts_zero) == 0) {
- s = strdup("");
- } else {
+ if (tr_cmp_timespec(trp_route_get_expiry(route), &ts_zero) > 0) {
s = timespec_to_str(trp_route_get_expiry(route));
- }
- if (s) {
- jstr = json_string(s);
- free(s);
+ if (s) {
+ jstr = json_string(s);
+ free(s);
+ }
}
return jstr;
goto cleanup; \
} while (0)
+#define OBJECT_SET_OR_SKIP(jobj, key, val) \
+do { \
+ if (val) \
+ json_object_set_new((jobj),(key),(val)); \
+} while (0)
+
json_t *trp_route_to_json(TRP_ROUTE *route)
{
json_t *route_json = NULL;
OBJECT_SET_OR_FAIL(route_json, "community", tr_name_to_json_string(trp_route_get_comm(route)));
OBJECT_SET_OR_FAIL(route_json, "realm", tr_name_to_json_string(trp_route_get_realm(route)));
- OBJECT_SET_OR_FAIL(route_json, "peer", tr_name_to_json_string(trp_route_get_peer(route)));
+ if (trp_route_get_peer(route)->len > 0)
+ OBJECT_SET_OR_FAIL(route_json, "peer", tr_name_to_json_string(trp_route_get_peer(route)));
OBJECT_SET_OR_FAIL(route_json, "metric", json_integer(trp_route_get_metric(route)));
OBJECT_SET_OR_FAIL(route_json, "trust_router", tr_name_to_json_string(trp_route_get_trust_router(route)));
- OBJECT_SET_OR_FAIL(route_json, "next_hop", tr_name_to_json_string(trp_route_get_next_hop(route)));
+ if (trp_route_get_next_hop(route)->len > 0)
+ OBJECT_SET_OR_FAIL(route_json, "next_hop", tr_name_to_json_string(trp_route_get_next_hop(route)));
OBJECT_SET_OR_FAIL(route_json, "selected", json_boolean(trp_route_is_selected(route)));
OBJECT_SET_OR_FAIL(route_json, "local", json_boolean(trp_route_is_local(route)));
- OBJECT_SET_OR_FAIL(route_json, "expires", expiry_to_json_string(route));
+ OBJECT_SET_OR_SKIP(route_json, "expires", expiry_to_json_string(route));
/* succeeded - set the return value and increment the reference count */
retval = route_json;