MCPcopy Create free account
hub / github.com/ElementsProject/lightning / init_linear_network

Function init_linear_network

plugins/renepay/mcf.c:647–804  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

645}
646
647static struct linear_network *
648init_linear_network(const tal_t *ctx, const struct pay_parameters *params,
649 char **fail)
650{
651 tal_t *this_ctx = tal(ctx,tal_t);
652
653 struct linear_network * linear_network = tal(ctx, struct linear_network);
654 if (!linear_network) {
655 if (fail)
656 *fail = tal_fmt(ctx, "bad allocation of linear_network");
657 goto function_fail;
658 }
659
660 const size_t max_num_chans = gossmap_max_chan_idx(params->gossmap);
661 const size_t max_num_arcs = max_num_chans * ARCS_PER_CHANNEL;
662 const size_t max_num_nodes = gossmap_max_node_idx(params->gossmap);
663
664 linear_network->max_num_arcs = max_num_arcs;
665 linear_network->max_num_nodes = max_num_nodes;
666
667 linear_network->arc_tail_node = tal_arr(linear_network,u32,max_num_arcs);
668 if(!linear_network->arc_tail_node)
669 {
670 if (fail)
671 *fail = tal_fmt(ctx, "bad allocation of arc_tail_node");
672 goto function_fail;
673 }
674 for(size_t i=0;i<tal_count(linear_network->arc_tail_node);++i)
675 linear_network->arc_tail_node[i]=INVALID_INDEX;
676
677 linear_network->node_adjacency_next_arc = tal_arr(linear_network,struct arc,max_num_arcs);
678 if(!linear_network->node_adjacency_next_arc)
679 {
680 if (fail)
681 *fail = tal_fmt(ctx, "bad allocation of node_adjacency_next_arc");
682 goto function_fail;
683 }
684 for(size_t i=0;i<tal_count(linear_network->node_adjacency_next_arc);++i)
685 linear_network->node_adjacency_next_arc[i].idx=INVALID_INDEX;
686
687 linear_network->node_adjacency_first_arc = tal_arr(linear_network,struct arc,max_num_nodes);
688 if(!linear_network->node_adjacency_first_arc)
689 {
690 if (fail)
691 *fail = tal_fmt(ctx, "bad allocation of node_adjacency_first_arc");
692 goto function_fail;
693 }
694 for(size_t i=0;i<tal_count(linear_network->node_adjacency_first_arc);++i)
695 linear_network->node_adjacency_first_arc[i].idx=INVALID_INDEX;
696
697 linear_network->arc_prob_cost = tal_arr(linear_network,s64,max_num_arcs);
698 if(!linear_network->arc_prob_cost)
699 {
700 if (fail)
701 *fail = tal_fmt(ctx, "bad allocation of arc_prob_cost");
702 goto function_fail;
703 }
704 for(size_t i=0;i<tal_count(linear_network->arc_prob_cost);++i)

Callers 1

minflowFunction · 0.70

Calls 15

gossmap_max_chan_idxFunction · 0.85
gossmap_max_node_idxFunction · 0.85
gossmap_first_nodeFunction · 0.85
gossmap_next_nodeFunction · 0.85
gossmap_node_idxFunction · 0.85
gossmap_nth_chanFunction · 0.85
gossmap_chan_idxFunction · 0.85
gossmap_nth_nodeFunction · 0.85
tal_freeFunction · 0.85
channel_is_availableFunction · 0.70
linearize_channelFunction · 0.70

Tested by

no test coverage detected