Repository: qpid-dispatch Updated Branches: refs/heads/master 2b17c00f7 -> 01a2c5fb9
DISPATCH-335 - Added code to balance link routes over remote routers (cherry picked from commit 2b284971d5c3dcc7d379809f0a1fe753e561e72d) Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/01a2c5fb Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/01a2c5fb Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/01a2c5fb Branch: refs/heads/master Commit: 01a2c5fb9f2bcf2660bec57b7f5ac4306beb5d0a Parents: 2b17c00 Author: Ganesh Murthy <[email protected]> Authored: Fri May 13 16:11:48 2016 -0400 Committer: Ganesh Murthy <[email protected]> Committed: Mon May 16 15:14:54 2016 -0400 ---------------------------------------------------------------------- src/router_core/forwarder.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/01a2c5fb/src/router_core/forwarder.c ---------------------------------------------------------------------- diff --git a/src/router_core/forwarder.c b/src/router_core/forwarder.c index 836bc02..43c966f 100644 --- a/src/router_core/forwarder.c +++ b/src/router_core/forwarder.c @@ -559,12 +559,29 @@ bool qdr_forward_link_balanced_CT(qdr_core_t *core, // // Look for a next-hop we can use to forward the link-attach. // - int router_bit; qdr_node_t *next_node; - if (qd_bitmask_first_set(addr->rnodes, &router_bit)) { - qdr_node_t *rnode = core->routers_by_mask_bit[router_bit]; + if (addr->cost_epoch != core->cost_epoch) { + addr->next_remote = -1; + addr->cost_epoch = core->cost_epoch; + } + + if (addr->next_remote < 0) { + qd_bitmask_first_set(addr->rnodes, &addr->next_remote); + } + + if (addr->next_remote >= 0) { + + qdr_node_t *rnode = core->routers_by_mask_bit[addr->next_remote]; + if (rnode) { + // + // Advance the addr->next_remote so there will be link balance across containers + // + _qdbm_next(addr->rnodes, &addr->next_remote); + if (addr->next_remote == -1) + qd_bitmask_first_set(addr->rnodes, &addr->next_remote); + if (rnode->next_hop) next_node = rnode->next_hop; else --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
