static void qdr_config_address_insert_column_CT()

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;
    }
}