in src/router_core/agent_config_auto_link.c [68:178]
static void qdr_config_auto_link_insert_column_CT(qdr_auto_link_t *al, int col, qd_composed_field_t *body, bool as_map)
{
const char *text = 0;
const char *key;
char id_str[100];
if (!al)
return;
if (as_map)
qd_compose_insert_string(body, qdr_config_auto_link_columns[col]);
switch(col) {
case QDR_CONFIG_AUTO_LINK_NAME:
if (al->name)
qd_compose_insert_string(body, al->name);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_IDENTITY:
snprintf(id_str, 100, "%"PRId64, al->identity);
qd_compose_insert_string(body, id_str);
break;
case QDR_CONFIG_AUTO_LINK_TYPE:
qd_compose_insert_string(body, CONFIG_AUTOLINK_TYPE);
break;
case QDR_CONFIG_AUTO_LINK_ADDR:
case QDR_CONFIG_AUTO_LINK_ADDRESS:
key = (const char*) qd_hash_key_by_handle(al->addr->hash_handle);
if (key && key[0] == 'M')
qd_compose_insert_string(body, &key[2]);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_DIR:
case QDR_CONFIG_AUTO_LINK_DIRECTION:
text = al->dir == QD_INCOMING ? "in" : "out";
qd_compose_insert_string(body, text);
break;
case QDR_CONFIG_AUTO_LINK_PHASE:
qd_compose_insert_int(body, al->phase);
break;
case QDR_CONFIG_AUTO_LINK_CONNECTION:
case QDR_CONFIG_AUTO_LINK_CONTAINER_ID:
if (al->conn_id) {
key = (const char*) qd_hash_key_by_handle(al->conn_id->connection_hash_handle);
if (!key)
key = (const char*) qd_hash_key_by_handle(al->conn_id->container_hash_handle);
if (key && key[0] == 'L' && col == QDR_CONFIG_AUTO_LINK_CONNECTION) {
qd_compose_insert_string(body, &key[1]);
break;
}
if (key && key[0] == 'C' && col == QDR_CONFIG_AUTO_LINK_CONTAINER_ID) {
qd_compose_insert_string(body, &key[1]);
break;
}
}
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_EXT_ADDR:
case QDR_CONFIG_AUTO_LINK_EXT_ADDRESS:
if (al->external_addr)
qd_compose_insert_string(body, al->external_addr);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_LINK_REF:
if (al->link) {
snprintf(id_str, 100, "%"PRId64, al->link->identity);
qd_compose_insert_string(body, id_str);
} else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_OPER_STATUS:
switch (al->state) {
case QDR_AUTO_LINK_STATE_INACTIVE: text = "inactive"; break;
case QDR_AUTO_LINK_STATE_ATTACHING: text = "attaching"; break;
case QDR_AUTO_LINK_STATE_FAILED: text = "failed"; break;
case QDR_AUTO_LINK_STATE_ACTIVE: text = "active"; break;
case QDR_AUTO_LINK_STATE_QUIESCING: text = "quiescing"; break;
case QDR_AUTO_LINK_STATE_IDLE: text = "idle"; break;
}
if (text)
qd_compose_insert_string(body, text);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_LAST_ERROR:
if (al->last_error)
qd_compose_insert_string(body, al->last_error);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_AUTO_LINK_FALLBACK:
qd_compose_insert_bool(body, al->fallback);
break;
}
}