Github user ganeshmurthy commented on a diff in the pull request:

    https://github.com/apache/qpid-dispatch/pull/252#discussion_r165080053
  
    --- Diff: src/router_core/route_control.c ---
    @@ -266,6 +266,117 @@ static void qdr_auto_link_deactivate_CT(qdr_core_t 
*core, qdr_auto_link_t *al, q
     }
     
     
    +static void qdr_router_add_link_route_pattern_CT(qdr_core_t *core, 
qdr_connection_t *conn, const char *pattern, qd_direction_t dir)
    +{
    +    if (*pattern == '\0')
    +        return;
    +
    +    char          *addr_hash = qdr_link_route_pattern_to_address(pattern, 
dir);
    +    qd_iterator_t *iter      = qd_iterator_string(addr_hash + 1, 
ITER_VIEW_ADDRESS_HASH);
    +    qdr_address_t *addr      = 0;
    +
    +    qd_iterator_annotate_prefix(iter, addr_hash[0]);
    +    if (conn->tenant_space)
    +        qd_iterator_annotate_space(iter, conn->tenant_space, 
conn->tenant_space_len);
    +
    +    qd_hash_retrieve(core->addr_hash, iter, (void*) &addr);
    +    if (!addr) {
    +        addr = qdr_address_CT(core, QD_TREATMENT_LINK_BALANCED);
    +        DEQ_INSERT_TAIL(core->addrs, addr);
    +        qd_hash_insert(core->addr_hash, iter, addr, &addr->hash_handle);
    +        qdr_link_route_map_pattern_CT(core, iter, addr);
    +    }
    +
    +    qdr_add_address_ref(&conn->addr_refs, addr);
    +    qdr_add_connection_ref(&addr->conns, conn);
    +    if (DEQ_SIZE(addr->conns) == 1) {
    +        char *hash_key = (char*) qd_iterator_copy(iter);
    +        qdr_post_mobile_added_CT(core, hash_key);
    +        free(hash_key);
    +    }
    +
    +    free(addr_hash);
    +}
    +
    +
    +static void qdr_route_use_connection_properties_CT(qdr_core_t *core, 
qdr_connection_t *conn)
    +{
    +    pn_data_t *p = conn->connection_info->connection_properties;
    +
    +    //
    +    // If there are no connection properties, we have nothing to do.
    +    //
    +    if (!p)
    +        return;
    +
    +    pn_data_rewind(p);
    +    pn_data_next(p);
    +
    +    //
    +    // If the connection properties are not a map, there's no point in 
continuing.
    +    //
    +    if (pn_data_type(p) != PN_MAP)
    +        return;
    +
    +    pn_data_enter(p);
    +    pn_data_next(p);
    +
    +    //
    +    // Work across the map looking for keys that are relevant for route 
modification.
    +    //
    +    while (pn_data_type(p) == PN_SYMBOL) {
    --- End diff --
    
    After a little bit thought, I do feel that these link routes must show up 
when you do a qdstat --linkRoutes. Maybe these link routes can have a boolean 
flag on them called "dynamic" which can be set to true for these link routes 
which will distinguish them from the pre-configured link routes which will have 
that flag set to false.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to