in src/router_core/agent_config_link_route.c [65:171]
static void qdr_config_link_route_insert_column_CT(qdr_link_route_t *lr, int col, qd_composed_field_t *body, bool as_map)
{
const char *text = 0;
const char *key;
if (!lr)
return;
if (as_map)
qd_compose_insert_string(body, qdr_config_link_route_columns[col]);
switch(col) {
case QDR_CONFIG_LINK_ROUTE_NAME:
if (lr->name)
qd_compose_insert_string(body, lr->name);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_IDENTITY: {
char id_str[100];
snprintf(id_str, 100, "%"PRId64, lr->identity);
qd_compose_insert_string(body, id_str);
break;
}
case QDR_CONFIG_LINK_ROUTE_TYPE:
qd_compose_insert_string(body, CONFIG_LINKROUTE_TYPE);
break;
case QDR_CONFIG_LINK_ROUTE_PATTERN:
if (lr->pattern && !lr->is_prefix)
qd_compose_insert_string(body, lr->pattern);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_PREFIX:
if (lr->pattern && lr->is_prefix) {
// the prefix is converted to a pattern by appending '.#' to the
// prefix, so strip it off
const size_t len = strlen(lr->pattern);
assert(len > 2);
qd_compose_insert_string_n(body, lr->pattern, len - 2);
} else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_ADD_EXTERNAL_PREFIX:
if (lr->add_prefix)
qd_compose_insert_string(body, lr->add_prefix);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_DEL_EXTERNAL_PREFIX:
if (lr->del_prefix)
qd_compose_insert_string(body, lr->del_prefix);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_DISTRIBUTION:
switch (lr->treatment) {
case QD_TREATMENT_LINK_BALANCED: text = "linkBalanced"; break;
default:
text = 0;
}
if (text)
qd_compose_insert_string(body, text);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_CONNECTION:
case QDR_CONFIG_LINK_ROUTE_CONTAINER_ID:
if (lr->conn_id) {
key = (const char*) qd_hash_key_by_handle(lr->conn_id->connection_hash_handle);
if (!key)
key = (const char*) qd_hash_key_by_handle(lr->conn_id->container_hash_handle);
if (key && key[0] == 'L' && col == QDR_CONFIG_LINK_ROUTE_CONNECTION) {
qd_compose_insert_string(body, &key[1]);
break;
}
if (key && key[0] == 'C' && col == QDR_CONFIG_LINK_ROUTE_CONTAINER_ID) {
qd_compose_insert_string(body, &key[1]);
break;
}
}
qd_compose_insert_null(body);
break;
case QDR_CONFIG_LINK_ROUTE_DIR:
case QDR_CONFIG_LINK_ROUTE_DIRECTION:
text = lr->dir == QD_INCOMING ? "in" : "out";
qd_compose_insert_string(body, text);
break;
case QDR_CONFIG_LINK_ROUTE_OPER_STATUS:
text = lr->active ? "active" : "inactive";
qd_compose_insert_string(body, text);
break;
}
}