@@ -342,6 +342,39 @@ struct getroutes_info {
342342 struct layer * local_layer ;
343343};
344344
345+ static void apply_layers (struct askrene * askrene , struct route_query * rq ,
346+ const struct node_id * source ,
347+ struct amount_msat amount ,
348+ struct gossmap_localmods * localmods ,
349+ const char * * layers ,
350+ const struct layer * local_layer )
351+ {
352+ /* Layers must exist, but might be special ones! */
353+ for (size_t i = 0 ; i < tal_count (layers ); i ++ ) {
354+ const struct layer * l = find_layer (askrene , layers [i ]);
355+ if (!l ) {
356+ if (streq (layers [i ], "auto.localchans" )) {
357+ plugin_log (rq -> plugin , LOG_DBG , "Adding auto.localchans" );
358+ l = local_layer ;
359+ } else if (streq (layers [i ], "auto.no_mpp_support" )) {
360+ plugin_log (rq -> plugin , LOG_DBG , "Adding auto.no_mpp_support, sorry" );
361+ l = remove_small_channel_layer (layers , askrene , amount , localmods );
362+ } else {
363+ assert (streq (layers [i ], "auto.sourcefree" ));
364+ plugin_log (rq -> plugin , LOG_DBG , "Adding auto.sourcefree" );
365+ l = source_free_layer (layers , askrene , source , localmods );
366+ }
367+ }
368+
369+ tal_arr_expand (& rq -> layers , l );
370+ /* FIXME: Implement localmods_merge, and cache this in layer? */
371+ layer_add_localmods (l , rq -> gossmap , localmods );
372+
373+ /* Clear any entries in capacities array if we
374+ * override them (incl local channels) */
375+ layer_clear_overridden_capacities (l , askrene -> gossmap , rq -> capacities );
376+ }
377+ }
345378/* Returns an error message, or sets *routes */
346379static const char * get_routes (const tal_t * ctx ,
347380 struct command * cmd ,
@@ -382,31 +415,7 @@ static const char *get_routes(const tal_t *ctx,
382415 rq -> capacities = tal_dup_talarr (rq , fp16_t , askrene -> capacities );
383416 rq -> additional_costs = additional_costs ;
384417
385- /* Layers must exist, but might be special ones! */
386- for (size_t i = 0 ; i < tal_count (layers ); i ++ ) {
387- const struct layer * l = find_layer (askrene , layers [i ]);
388- if (!l ) {
389- if (streq (layers [i ], "auto.localchans" )) {
390- plugin_log (rq -> plugin , LOG_DBG , "Adding auto.localchans" );
391- l = local_layer ;
392- } else if (streq (layers [i ], "auto.no_mpp_support" )) {
393- plugin_log (rq -> plugin , LOG_DBG , "Adding auto.no_mpp_support, sorry" );
394- l = remove_small_channel_layer (layers , askrene , amount , localmods );
395- } else {
396- assert (streq (layers [i ], "auto.sourcefree" ));
397- plugin_log (rq -> plugin , LOG_DBG , "Adding auto.sourcefree" );
398- l = source_free_layer (layers , askrene , source , localmods );
399- }
400- }
401-
402- tal_arr_expand (& rq -> layers , l );
403- /* FIXME: Implement localmods_merge, and cache this in layer? */
404- layer_add_localmods (l , rq -> gossmap , localmods );
405-
406- /* Clear any entries in capacities array if we
407- * override them (incl local channels) */
408- layer_clear_overridden_capacities (l , askrene -> gossmap , rq -> capacities );
409- }
418+ apply_layers (askrene , rq , source , amount , localmods , layers , local_layer );
410419
411420 /* Clear scids with reservations, too, so we don't have to look up
412421 * all the time! */
0 commit comments