| 645 | } |
| 646 | |
| 647 | static struct linear_network * |
| 648 | init_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) |
no test coverage detected