in src/router_core/agent_config_address.c [56:138]
static void qdr_config_address_insert_column_CT(qdr_address_config_t *addr, int col, qd_composed_field_t *body, bool as_map)
{
const char *text = 0;
if (as_map)
qd_compose_insert_string(body, qdr_config_address_columns[col]);
switch(col) {
case QDR_CONFIG_ADDRESS_NAME:
if (addr->name)
qd_compose_insert_string(body, addr->name);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_ADDRESS_IDENTITY: {
char id_str[100];
snprintf(id_str, 100, "%"PRId64, addr->identity);
qd_compose_insert_string(body, id_str);
break;
}
case QDR_CONFIG_ADDRESS_TYPE:
qd_compose_insert_string(body, CONFIG_ADDRESS_TYPE);
break;
case QDR_CONFIG_ADDRESS_PREFIX:
if (addr->is_prefix && addr->pattern) {
// Note (kgiusti): internally we prepend a '/#' to the configured
// prefix and treat it like a pattern. Remove trailing '/#' to put
// it back into its original form
const size_t len = strlen(addr->pattern);
assert(len > 1);
qd_compose_insert_string_n(body, addr->pattern, len - 2);
} else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_ADDRESS_PATTERN:
if (!addr->is_prefix && addr->pattern)
qd_compose_insert_string(body, addr->pattern);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_ADDRESS_DISTRIBUTION:
switch (addr->treatment) {
case QD_TREATMENT_MULTICAST_FLOOD:
case QD_TREATMENT_MULTICAST_ONCE: text = "multicast"; break;
case QD_TREATMENT_ANYCAST_CLOSEST: text = "closest"; break;
case QD_TREATMENT_ANYCAST_BALANCED: text = "balanced"; break;
default:
text = 0;
}
if (text)
qd_compose_insert_string(body, text);
else
qd_compose_insert_null(body);
break;
case QDR_CONFIG_ADDRESS_WAYPOINT:
qd_compose_insert_bool(body, addr->in_phase == 0 && addr->out_phase == 1);
break;
case QDR_CONFIG_ADDRESS_IN_PHASE:
qd_compose_insert_int(body, addr->in_phase);
break;
case QDR_CONFIG_ADDRESS_OUT_PHASE:
qd_compose_insert_int(body, addr->out_phase);
break;
case QDR_CONFIG_ADDRESS_PRIORITY:
qd_compose_insert_int(body, addr->priority);
break;
case QDR_CONFIG_ADDRESS_FALLBACK:
qd_compose_insert_bool(body, addr->fallback);
break;
}
}