LCOV - code coverage report
Current view: top level - app/shared - fd_config_parse.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 299 0.0 %
Date: 2026-03-19 18:19:27 Functions: 0 4 0.0 %

          Line data    Source code
       1             : #include "../platform/fd_config_extract.h"
       2             : #include "../platform/fd_config_macros.c"
       3             : #include "fd_config_private.h"
       4             : 
       5             : static void
       6             : fd_config_check_configf( fd_config_t *  config,
       7           0 :                          fd_configf_t * config_f ) {
       8           0 :   (void)config_f;
       9           0 :   if( FD_UNLIKELY( strlen( config->paths.snapshots )>PATH_MAX-1UL ) ) {
      10           0 :     FD_LOG_ERR(( "[config->paths.snapshots] is too long (max %lu)", PATH_MAX-1UL ));
      11           0 :   }
      12           0 :   if( FD_UNLIKELY( config->paths.snapshots[ 0 ]!='\0' && config->paths.snapshots[ 0 ]!='/' ) ) {
      13           0 :     FD_LOG_ERR(( "[config->paths.snapshots] must be an absolute path and hence start with a '/'"));
      14           0 :   }
      15           0 : }
      16             : 
      17             : fd_configh_t *
      18             : fd_config_extract_podh( uchar *        pod,
      19           0 :                         fd_configh_t * config ) {
      20           0 :   CFG_POP      ( cstr,   dynamic_port_range                               );
      21             : 
      22           0 :   CFG_POP      ( cstr,   reporting.solana_metrics_config                  );
      23             : 
      24           0 :   CFG_POP      ( cstr,   layout.agave_affinity                            );
      25           0 :   CFG_POP      ( uint,   layout.agave_unified_scheduler_handler_threads   );
      26           0 :   CFG_POP      ( uint,   layout.resolh_tile_count                         );
      27           0 :   CFG_POP      ( uint,   layout.bank_tile_count                           );
      28             : 
      29           0 :   CFG_POP1      ( cstr,  ledger.accounts_path,             paths.accounts_path          );
      30           0 :   CFG_POP1_ARRAY( cstr,  consensus.authorized_voter_paths, paths.authorized_voter_paths );
      31             : 
      32           0 :   CFG_POP      ( uint,   ledger.limit_size                                );
      33           0 :   CFG_POP_ARRAY( cstr,   ledger.account_indexes                           );
      34           0 :   CFG_POP_ARRAY( cstr,   ledger.account_index_include_keys                );
      35           0 :   CFG_POP_ARRAY( cstr,   ledger.account_index_exclude_keys                );
      36           0 :   CFG_POP      ( bool,   ledger.enable_accounts_disk_index                );
      37           0 :   CFG_POP      ( cstr,   ledger.accounts_index_path                       );
      38           0 :   CFG_POP      ( cstr,   ledger.accounts_hash_cache_path                  );
      39           0 :   CFG_POP      ( bool,   ledger.require_tower                             );
      40           0 :   CFG_POP      ( cstr,   ledger.snapshot_archive_format                   );
      41             : 
      42           0 :   CFG_POP      ( bool,   gossip.port_check                                );
      43             : 
      44           0 :   CFG_POP      ( bool,   consensus.snapshot_fetch                         );
      45           0 :   CFG_POP      ( bool,   consensus.genesis_fetch                          );
      46           0 :   CFG_POP      ( bool,   consensus.poh_speed_test                         );
      47           0 :   CFG_POP      ( uint,   consensus.wait_for_supermajority_at_slot         );
      48           0 :   CFG_POP      ( cstr,   consensus.expected_bank_hash                     );
      49           0 :   CFG_POP      ( bool,   consensus.wait_for_vote_to_start_leader          );
      50           0 :   CFG_POP_ARRAY( uint,   consensus.hard_fork_at_slots                     );
      51           0 :   CFG_POP_ARRAY( cstr,   consensus.known_validators                       );
      52           0 :   CFG_POP      ( bool,   consensus.os_network_limits_test                 );
      53             : 
      54           0 :   CFG_POP      ( ushort, rpc.port                                         );
      55           0 :   CFG_POP      ( bool,   rpc.extended_tx_metadata_storage                 );
      56           0 :   CFG_POP      ( bool,   rpc.full_api                                     );
      57           0 :   CFG_POP      ( bool,   rpc.private                                      );
      58           0 :   CFG_POP      ( cstr,   rpc.bind_address                                 );
      59           0 :   CFG_POP      ( cstr,   rpc.public_address                               );
      60           0 :   CFG_POP      ( bool,   rpc.transaction_history                          );
      61           0 :   CFG_POP      ( bool,   rpc.only_known                                   );
      62           0 :   CFG_POP      ( bool,   rpc.pubsub_enable_block_subscription             );
      63           0 :   CFG_POP      ( bool,   rpc.pubsub_enable_vote_subscription              );
      64           0 :   CFG_POP      ( bool,   rpc.bigtable_ledger_storage                      );
      65             : 
      66           0 :   CFG_POP      ( bool,   snapshots.enabled                                );
      67           0 :   CFG_POP      ( bool,   snapshots.incremental_snapshots                  );
      68           0 :   CFG_POP      ( uint,   snapshots.full_snapshot_interval_slots           );
      69           0 :   CFG_POP      ( uint,   snapshots.incremental_snapshot_interval_slots    );
      70           0 :   CFG_POP      ( uint,   snapshots.minimum_snapshot_download_speed        );
      71           0 :   CFG_POP      ( uint,   snapshots.maximum_snapshot_download_abort        );
      72           0 :   CFG_POP      ( uint,   snapshots.maximum_full_snapshots_to_retain       );
      73           0 :   CFG_POP      ( uint,   snapshots.maximum_incremental_snapshots_to_retain);
      74           0 :   CFG_POP      ( cstr,   snapshots.path                                   );
      75           0 :   CFG_POP      ( cstr,   snapshots.incremental_path                       );
      76             : 
      77           0 :   return config;
      78           0 : }
      79             : 
      80             : fd_configf_t *
      81             : fd_config_extract_podf( uchar *        pod,
      82           0 :                         fd_configf_t * config ) {
      83           0 :   CFG_POP_ARRAY( cstr,   paths.authorized_voter_paths                        );
      84             : 
      85           0 :   CFG_POP      ( cstr,   gossip.host                                         );
      86             : 
      87           0 :   CFG_POP      ( bool,   layout.enable_block_production                      );
      88           0 :   CFG_POP      ( uint,   layout.execrp_tile_count                            );
      89           0 :   CFG_POP      ( uint,   layout.sign_tile_count                              );
      90           0 :   CFG_POP      ( uint,   layout.resolv_tile_count                            );
      91           0 :   CFG_POP      ( uint,   layout.execle_tile_count                            );
      92           0 :   CFG_POP      ( uint,   layout.gossvf_tile_count                            );
      93           0 :   CFG_POP      ( uint,   layout.snapshot_hash_tile_count                     );
      94           0 :   CFG_POP      ( uint,   layout.snapwr_tile_count                            );
      95             : 
      96           0 :   CFG_POP      ( ulong,  accounts.max_accounts                               );
      97           0 :   CFG_POP      ( ulong,  accounts.file_size_gib                              );
      98           0 :   CFG_POP      ( ulong,  accounts.max_unrooted_account_size_gib              );
      99           0 :   CFG_POP      ( ulong,  accounts.cache_size_gib                             );
     100           0 :   CFG_POP      ( ulong,  accounts.write_delay_slots                          );
     101           0 :   CFG_POP      ( bool,   accounts.in_memory_only                             );
     102           0 :   CFG_POP      ( cstr,   accounts.io_provider                                );
     103           0 :   CFG_POP      ( ulong,  accounts.mean_account_footprint                     );
     104           0 :   CFG_POP      ( uint,   accounts.io_uring.queue_depth                       );
     105             : 
     106           0 :   CFG_POP      ( ulong,  runtime.max_live_slots                              );
     107           0 :   CFG_POP      ( ulong,  runtime.max_account_cnt                             );
     108           0 :   CFG_POP      ( ulong,  runtime.max_fork_width                              );
     109             : 
     110           0 :   CFG_POP      ( ulong,  runtime.program_cache.heap_size_mib                 );
     111           0 :   CFG_POP      ( ulong,  runtime.program_cache.mean_cache_entry_size         );
     112             : 
     113           0 :   CFG_POP      ( cstr,   consensus.wait_for_supermajority_with_bank_hash     );
     114             : 
     115           0 :   CFG_POP      ( uint,   snapshots.sources.max_local_full_effective_age      );
     116           0 :   CFG_POP      ( uint,   snapshots.sources.max_local_incremental_age         );
     117           0 :   CFG_POP      ( bool,   snapshots.sources.gossip.allow_any                  );
     118           0 :   CFG_POP_ARRAY( cstr,   snapshots.sources.gossip.allow_list                 );
     119           0 :   CFG_POP_ARRAY( cstr,   snapshots.sources.gossip.block_list                 );
     120           0 :   CFG_POP_ARRAY( cstr,   snapshots.sources.servers                           );
     121           0 :   CFG_POP      ( bool,   snapshots.incremental_snapshots                     );
     122           0 :   CFG_POP      ( bool,   snapshots.genesis_download                          );
     123           0 :   CFG_POP      ( uint,   snapshots.max_full_snapshots_to_keep                );
     124           0 :   CFG_POP      ( uint,   snapshots.max_incremental_snapshots_to_keep         );
     125           0 :   CFG_POP      ( uint,   snapshots.max_retry_abort                           );
     126           0 :   CFG_POP      ( uint,   snapshots.min_download_speed_mibs                   );
     127             : 
     128           0 :   CFG_POP      ( bool,   development.hard_fork_fatal                         );
     129           0 :   CFG_POP      ( ulong,  development.replay.scheduler_depth                  );
     130           0 :   CFG_POP      ( bool,   development.genesis.validate_genesis_hash           );
     131             : 
     132           0 :   return config;
     133           0 : }
     134             : 
     135             : fd_config_t *
     136             : fd_config_extract_pod( uchar *       pod,
     137           0 :                        fd_config_t * config ) {
     138           0 :   CFG_POP      ( cstr,   name                                             );
     139           0 :   CFG_POP      ( cstr,   user                                             );
     140             : 
     141           0 :   CFG_POP      ( bool,   telemetry                                        );
     142             : 
     143           0 :   CFG_POP      ( cstr,   log.path                                         );
     144           0 :   CFG_POP      ( cstr,   log.colorize                                     );
     145           0 :   CFG_POP      ( cstr,   log.level_logfile                                );
     146           0 :   CFG_POP      ( cstr,   log.level_stderr                                 );
     147           0 :   CFG_POP      ( cstr,   log.level_flush                                  );
     148             : 
     149           0 :   if( FD_UNLIKELY( config->is_firedancer ) ) {
     150           0 :     CFG_POP    ( cstr,   paths.base                                       );
     151           0 :     CFG_POP    ( cstr,   paths.identity_key                               );
     152           0 :     CFG_POP    ( cstr,   paths.vote_account                               );
     153           0 :     CFG_POP    ( cstr,   paths.snapshots                                  );
     154           0 :     CFG_POP    ( cstr,   paths.genesis                                    );
     155           0 :     CFG_POP    ( cstr,   paths.accounts                                   );
     156           0 :   } else {
     157           0 :     CFG_POP1   ( cstr,   scratch_directory,           paths.base          );
     158           0 :     CFG_POP1   ( cstr,   ledger.path,                 frankendancer.paths.ledger );
     159           0 :     CFG_POP1   ( cstr,   consensus.identity_path,     paths.identity_key  );
     160           0 :     CFG_POP1   ( cstr,   consensus.vote_account_path, paths.vote_account  );
     161           0 :   }
     162             : 
     163           0 :   CFG_POP_ARRAY( cstr,   gossip.entrypoints                               );
     164           0 :   CFG_POP      ( ushort, gossip.port                                      );
     165             : 
     166           0 :   CFG_POP      ( ushort, consensus.expected_shred_version                 );
     167           0 :   CFG_POP      ( cstr,   consensus.expected_genesis_hash                  );
     168           0 :   CFG_POP      ( bool,   consensus.wait_for_vote_to_start_leader          );
     169             : 
     170           0 :   CFG_POP      ( cstr,   layout.affinity                                  );
     171           0 :   CFG_POP      ( cstr,   layout.blocklist_cores                           );
     172           0 :   CFG_POP      ( uint,   layout.net_tile_count                            );
     173           0 :   CFG_POP      ( uint,   layout.quic_tile_count                           );
     174           0 :   CFG_POP      ( uint,   layout.verify_tile_count                         );
     175           0 :   CFG_POP      ( uint,   layout.shred_tile_count                          );
     176             : 
     177           0 :   CFG_POP      ( cstr,   hugetlbfs.mount_path                             );
     178           0 :   CFG_POP      ( cstr,   hugetlbfs.max_page_size                          );
     179           0 :   CFG_POP      ( ulong,  hugetlbfs.gigantic_page_threshold_mib            );
     180             : 
     181           0 :   CFG_POP      ( cstr,   net.interface                                    );
     182           0 :   CFG_POP      ( cstr,   net.bind_address                                 );
     183           0 :   CFG_POP      ( cstr,   net.provider                                     );
     184           0 :   CFG_POP      ( uint,   net.ingress_buffer_size                          );
     185           0 :   CFG_POP      ( cstr,   net.xdp.xdp_mode                                 );
     186           0 :   CFG_POP      ( bool,   net.xdp.xdp_zero_copy                            );
     187           0 :   CFG_POP      ( uint,   net.xdp.xdp_rx_queue_size                        );
     188           0 :   CFG_POP      ( uint,   net.xdp.xdp_tx_queue_size                        );
     189           0 :   CFG_POP      ( uint,   net.xdp.flush_timeout_micros                     );
     190           0 :   CFG_POP      ( cstr,   net.xdp.rss_queue_mode                           );
     191           0 :   CFG_POP      ( bool,   net.xdp.native_bond                              );
     192           0 :   CFG_POP      ( uint,   net.socket.receive_buffer_size                   );
     193           0 :   CFG_POP      ( uint,   net.socket.send_buffer_size                      );
     194             : 
     195           0 :   CFG_POP      ( ulong,  tiles.netlink.max_routes                         );
     196           0 :   CFG_POP      ( ulong,  tiles.netlink.max_peer_routes                    );
     197           0 :   CFG_POP      ( ulong,  tiles.netlink.max_neighbors                      );
     198             : 
     199           0 :   CFG_POP      ( ulong,  tiles.gossip.max_entries                         );
     200             : 
     201           0 :   CFG_POP      ( ushort, tiles.quic.regular_transaction_listen_port       );
     202           0 :   CFG_POP      ( ushort, tiles.quic.quic_transaction_listen_port          );
     203           0 :   CFG_POP      ( uint,   tiles.quic.txn_reassembly_count                  );
     204           0 :   CFG_POP      ( uint,   tiles.quic.max_concurrent_connections            );
     205           0 :   CFG_POP      ( uint,   tiles.quic.max_concurrent_handshakes             );
     206           0 :   CFG_POP      ( uint,   tiles.quic.idle_timeout_millis                   );
     207           0 :   CFG_POP      ( uint,   tiles.quic.ack_delay_millis                      );
     208           0 :   CFG_POP      ( bool,   tiles.quic.retry                                 );
     209           0 :   CFG_POP      ( cstr,   tiles.quic.ssl_key_log_file                      );
     210             : 
     211           0 :   CFG_POP      ( uint,   tiles.verify.signature_cache_size                );
     212           0 :   CFG_POP      ( uint,   tiles.verify.receive_buffer_size                 );
     213           0 :   CFG_POP      ( uint,   tiles.verify.mtu                                 );
     214             : 
     215           0 :   CFG_POP      ( uint,   tiles.dedup.signature_cache_size                 );
     216             : 
     217           0 :   CFG_POP      ( bool,   tiles.bundle.enabled                             );
     218           0 :   CFG_POP      ( cstr,   tiles.bundle.url                                 );
     219           0 :   CFG_POP      ( cstr,   tiles.bundle.tls_domain_name                     );
     220           0 :   CFG_POP      ( cstr,   tiles.bundle.tip_distribution_program_addr       );
     221           0 :   CFG_POP      ( cstr,   tiles.bundle.tip_payment_program_addr            );
     222           0 :   CFG_POP      ( cstr,   tiles.bundle.tip_distribution_authority          );
     223           0 :   CFG_POP      ( uint,   tiles.bundle.commission_bps                      );
     224           0 :   CFG_POP      ( ulong,  tiles.bundle.keepalive_interval_millis           );
     225           0 :   CFG_POP      ( bool,   tiles.bundle.tls_cert_verify                     );
     226             : 
     227           0 :   CFG_POP      ( uint,   tiles.pack.max_pending_transactions              );
     228           0 :   CFG_POP      ( bool,   tiles.pack.use_consumed_cus                      );
     229           0 :   CFG_POP      ( cstr,   tiles.pack.schedule_strategy                     );
     230             : 
     231           0 :   CFG_POP      ( bool,   tiles.pohh.lagged_consecutive_leader_start       );
     232             : 
     233           0 :   CFG_POP      ( uint,   tiles.shred.max_pending_shred_sets                   );
     234           0 :   CFG_POP      ( ushort, tiles.shred.shred_listen_port                        );
     235           0 :   CFG_POP_ARRAY( cstr,   tiles.shred.additional_shred_destinations_retransmit );
     236           0 :   CFG_POP_ARRAY( cstr,   tiles.shred.additional_shred_destinations_leader     );
     237             : 
     238           0 :   CFG_POP      ( cstr,   tiles.metric.prometheus_listen_address           );
     239           0 :   CFG_POP      ( ushort, tiles.metric.prometheus_listen_port              );
     240             : 
     241           0 :   CFG_POP      ( cstr,   tiles.event.url                                  );
     242             : 
     243           0 :   CFG_POP      ( bool,   tiles.gui.enabled                                );
     244           0 :   CFG_POP      ( cstr,   tiles.gui.gui_listen_address                     );
     245           0 :   CFG_POP      ( ushort, tiles.gui.gui_listen_port                        );
     246           0 :   CFG_POP      ( ulong,  tiles.gui.max_http_connections                   );
     247           0 :   CFG_POP      ( ulong,  tiles.gui.max_websocket_connections              );
     248           0 :   CFG_POP      ( ulong,  tiles.gui.max_http_request_length                );
     249           0 :   CFG_POP      ( ulong,  tiles.gui.send_buffer_size_mb                    );
     250             : 
     251           0 :   CFG_POP      ( bool,   tiles.rpc.enabled                                );
     252           0 :   CFG_POP      ( cstr,   tiles.rpc.rpc_listen_address                     );
     253           0 :   CFG_POP      ( ushort, tiles.rpc.rpc_listen_port                        );
     254           0 :   CFG_POP      ( ulong,  tiles.rpc.max_http_connections                   );
     255           0 :   CFG_POP      ( ulong,  tiles.rpc.max_http_request_length                );
     256           0 :   CFG_POP      ( ulong,  tiles.rpc.send_buffer_size_mb                    );
     257           0 :   CFG_POP      ( bool,   tiles.rpc.delay_startup                          );
     258             : 
     259           0 :   CFG_POP      ( ushort, tiles.repair.repair_intake_listen_port           );
     260           0 :   CFG_POP      ( ushort, tiles.repair.repair_serve_listen_port            );
     261           0 :   CFG_POP      ( ulong,  tiles.repair.slot_max                            );
     262             : 
     263           0 :   CFG_POP      ( ulong,  capture.capture_start_slot                       );
     264           0 :   CFG_POP      ( cstr,   capture.solcap_capture                           );
     265           0 :   CFG_POP      ( bool,   capture.recent_only                              );
     266           0 :   CFG_POP      ( ulong,  capture.recent_slots_per_file                    );
     267           0 :   CFG_POP      ( cstr,   capture.dump_proto_dir                           );
     268           0 :   CFG_POP      ( cstr,   capture.dump_syscall_name_filter                 );
     269           0 :   CFG_POP      ( cstr,   capture.dump_instr_program_id_filter             );
     270           0 :   CFG_POP      ( bool,   capture.dump_syscall_to_pb                       );
     271           0 :   CFG_POP      ( bool,   capture.dump_instr_to_pb                         );
     272           0 :   CFG_POP      ( bool,   capture.dump_txn_to_pb                           );
     273           0 :   CFG_POP      ( bool,   capture.dump_txn_as_fixture                      );
     274           0 :   CFG_POP      ( bool,   capture.dump_block_to_pb                         );
     275             : 
     276           0 :   CFG_POP_ARRAY( cstr,   tiles.replay.enable_features                     );
     277             : 
     278           0 :   CFG_POP      ( ushort, tiles.txsend.txsend_src_port                     );
     279             : 
     280           0 :   CFG_POP      ( bool,   tiles.archiver.enabled                           );
     281           0 :   CFG_POP      ( bool,   tiles.archiver.ingest_dead_slots                 );
     282           0 :   CFG_POP      ( ulong,  tiles.archiver.end_slot                          );
     283           0 :   CFG_POP      ( ulong,  tiles.archiver.root_distance                     );
     284           0 :   CFG_POP      ( cstr,   tiles.archiver.rocksdb_path                      );
     285           0 :   CFG_POP      ( cstr,   tiles.archiver.shredcap_path                     );
     286           0 :   CFG_POP      ( cstr,   tiles.archiver.ingest_mode                       );
     287             : 
     288           0 :   if( FD_UNLIKELY( config->is_firedancer ) ) {
     289           0 :     CFG_POP      ( bool,    tiles.shredcap.enabled                        );
     290           0 :     CFG_POP      ( cstr,    tiles.shredcap.folder_path                    );
     291           0 :     CFG_POP      ( ulong,   tiles.shredcap.write_buffer_size              );
     292           0 :   }
     293             : 
     294           0 :   CFG_POP      ( bool,   development.sandbox                              );
     295           0 :   CFG_POP      ( bool,   development.no_clone                             );
     296           0 :   CFG_POP      ( cstr,   development.core_dump                            );
     297           0 :   CFG_POP      ( bool,   development.no_agave                             );
     298           0 :   CFG_POP      ( bool,   development.bootstrap                            );
     299             : 
     300           0 :   CFG_POP      ( bool,   development.gossip.allow_private_address         );
     301             : 
     302           0 :   CFG_POP      ( ulong,  development.genesis.hashes_per_tick              );
     303           0 :   CFG_POP      ( ulong,  development.genesis.target_tick_duration_micros  );
     304           0 :   CFG_POP      ( ulong,  development.genesis.ticks_per_slot               );
     305           0 :   CFG_POP      ( ulong,  development.genesis.fund_initial_accounts        );
     306           0 :   CFG_POP      ( ulong,  development.genesis.fund_initial_amount_lamports );
     307           0 :   CFG_POP      ( ulong,  development.genesis.vote_account_stake_lamports  );
     308           0 :   CFG_POP      ( bool,   development.genesis.warmup_epochs                );
     309             : 
     310           0 :   CFG_POP      ( uint,   development.bench.benchg_tile_count              );
     311           0 :   CFG_POP      ( uint,   development.bench.benchs_tile_count              );
     312           0 :   CFG_POP      ( cstr,   development.bench.affinity                       );
     313           0 :   CFG_POP      ( bool,   development.bench.larger_max_cost_per_block      );
     314           0 :   CFG_POP      ( bool,   development.bench.larger_shred_limits_per_block  );
     315           0 :   CFG_POP      ( ulong,  development.bench.disable_blockstore_from_slot   );
     316           0 :   CFG_POP      ( bool,   development.bench.disable_status_cache           );
     317             : 
     318           0 :   CFG_POP      ( cstr,   development.bundle.ssl_key_log_file              );
     319           0 :   CFG_POP      ( uint,   development.bundle.buffer_size_kib               );
     320           0 :   CFG_POP      ( uint,   development.bundle.ssl_heap_size_mib             );
     321             : 
     322           0 :   CFG_POP      ( bool,   development.event.report_shreds                  );
     323           0 :   CFG_POP      ( bool,   development.event.report_transactions            );
     324             : 
     325           0 :   CFG_POP      ( cstr,   development.pktgen.affinity                      );
     326           0 :   CFG_POP      ( cstr,   development.pktgen.fake_dst_ip                   );
     327             : 
     328           0 :   CFG_POP      ( cstr,   development.udpecho.affinity                     );
     329           0 :   CFG_POP      ( bool,   development.snapshots.disable_lthash_verification );
     330             : 
     331           0 :   if( FD_UNLIKELY( !config->is_firedancer ) ) {
     332           0 :     CFG_POP    ( bool,   development.gui.websocket_compression            );
     333           0 :   }
     334           0 :   CFG_POP      ( cstr,   development.gui.frontend_release_channel         );
     335             : 
     336           0 :   if( FD_UNLIKELY( config->is_firedancer ) ) {
     337           0 :     if( FD_UNLIKELY( !fd_config_extract_podf( pod, &config->firedancer ) ) ) return NULL;
     338           0 :     fd_config_check_configf( config, &config->firedancer );
     339           0 :   } else {
     340           0 :     if( FD_UNLIKELY( !fd_config_extract_podh( pod, &config->frankendancer ) ) ) return NULL;
     341           0 :   }
     342             : 
     343             :   /* Renamed config options */
     344             : 
     345           0 : # define CFG_RENAMED( old_path, new_path )                             \
     346           0 :   do {                                                                 \
     347           0 :     char const * key = #old_path;                                      \
     348           0 :     fd_pod_info_t info[1];                                             \
     349           0 :     if( FD_UNLIKELY( !fd_pod_query( pod, key, info ) ) ) {             \
     350           0 :       FD_LOG_WARNING(( "Config option `%s` was renamed to `%s`. "      \
     351           0 :                        "Please update your config file.",              \
     352           0 :                        #old_path, #new_path ));                        \
     353           0 :       return NULL;                                                     \
     354           0 :     }                                                                  \
     355           0 :     (void)config->new_path; /* assert new path exists */               \
     356           0 :   } while(0)
     357             : 
     358           0 :   CFG_RENAMED( tiles.net.interface,            net.interface                );
     359           0 :   CFG_RENAMED( tiles.net.bind_address,         net.bind_address             );
     360           0 :   CFG_RENAMED( tiles.net.provider,             net.provider                 );
     361           0 :   CFG_RENAMED( tiles.net.xdp_mode,             net.xdp.xdp_mode             );
     362           0 :   CFG_RENAMED( tiles.net.xdp_zero_copy,        net.xdp.xdp_zero_copy        );
     363           0 :   CFG_RENAMED( tiles.net.xdp_rx_queue_size,    net.xdp.xdp_rx_queue_size    );
     364           0 :   CFG_RENAMED( tiles.net.xdp_tx_queue_size,    net.xdp.xdp_tx_queue_size    );
     365           0 :   CFG_RENAMED( tiles.net.flush_timeout_micros, net.xdp.flush_timeout_micros );
     366           0 :   CFG_RENAMED( tiles.net.send_buffer_size,     net.ingress_buffer_size      );
     367             : 
     368           0 :   CFG_RENAMED( development.net.provider,                 net.provider                   );
     369           0 :   CFG_RENAMED( development.net.sock_receive_buffer_size, net.socket.receive_buffer_size );
     370           0 :   CFG_RENAMED( development.net.sock_send_buffer_size,    net.socket.send_buffer_size    );
     371             : 
     372           0 : # undef CFG_RENAMED
     373             : 
     374           0 :   if( FD_UNLIKELY( !fdctl_pod_find_leftover( pod ) ) ) return NULL;
     375           0 :   return config;
     376           0 : }
     377             : 
     378             : #undef CFG_POP
     379             : #undef CFG_ARRAY

Generated by: LCOV version 1.14