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 117 : fd_configf_t * config_f ) {
8 117 : (void)config_f;
9 117 : 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 117 : 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 117 : if( FD_UNLIKELY( config->paths.vote_history[ 0 ]!='\0' && config->paths.vote_history[ 0 ]!='/' ) ) {
16 3 : FD_LOG_ERR(( "[config->paths.vote_history] must be an absolute path and hence start with a '/'"));
17 3 : }
18 117 : }
19 :
20 : fd_configh_t *
21 : fd_config_extract_podh( uchar * pod,
22 177 : fd_configh_t * config ) {
23 177 : CFG_POP ( cstr, dynamic_port_range );
24 :
25 177 : CFG_POP ( cstr, reporting.solana_metrics_config );
26 :
27 177 : CFG_POP ( cstr, layout.agave_affinity );
28 177 : CFG_POP ( uint, layout.agave_unified_scheduler_handler_threads );
29 177 : CFG_POP ( uint, layout.resolh_tile_count );
30 177 : CFG_POP ( uint, layout.bank_tile_count );
31 :
32 177 : CFG_POP1 ( cstr, ledger.accounts_path, paths.accounts_path );
33 177 : CFG_POP1_ARRAY( cstr, consensus.authorized_voter_paths, paths.authorized_voter_paths );
34 :
35 147 : CFG_POP ( uint, ledger.limit_size );
36 147 : CFG_POP_ARRAY( cstr, ledger.account_indexes );
37 117 : CFG_POP_ARRAY( cstr, ledger.account_index_include_keys );
38 117 : CFG_POP_ARRAY( cstr, ledger.account_index_exclude_keys );
39 117 : CFG_POP ( bool, ledger.enable_accounts_disk_index );
40 117 : CFG_POP ( cstr, ledger.accounts_index_path );
41 117 : CFG_POP ( cstr, ledger.accounts_hash_cache_path );
42 117 : CFG_POP ( bool, ledger.require_tower );
43 117 : CFG_POP ( cstr, ledger.snapshot_archive_format );
44 :
45 117 : CFG_POP ( bool, gossip.port_check );
46 :
47 117 : CFG_POP ( bool, consensus.snapshot_fetch );
48 117 : CFG_POP ( bool, consensus.genesis_fetch );
49 117 : CFG_POP ( bool, consensus.poh_speed_test );
50 117 : CFG_POP ( uint, consensus.wait_for_supermajority_at_slot );
51 117 : CFG_POP ( cstr, consensus.expected_bank_hash );
52 117 : CFG_POP ( boolau, consensus.wait_for_vote_to_start_leader );
53 117 : CFG_POP_ARRAY( uint, consensus.hard_fork_at_slots );
54 117 : CFG_POP_ARRAY( cstr, consensus.known_validators );
55 117 : CFG_POP ( bool, consensus.os_network_limits_test );
56 :
57 117 : CFG_POP ( ushort, rpc.port );
58 117 : CFG_POP ( bool, rpc.extended_tx_metadata_storage );
59 117 : CFG_POP ( bool, rpc.full_api );
60 117 : CFG_POP ( bool, rpc.private );
61 117 : CFG_POP ( cstr, rpc.bind_address );
62 117 : CFG_POP ( cstr, rpc.public_address );
63 117 : CFG_POP ( bool, rpc.transaction_history );
64 117 : CFG_POP ( bool, rpc.only_known );
65 117 : CFG_POP ( bool, rpc.pubsub_enable_block_subscription );
66 117 : CFG_POP ( bool, rpc.pubsub_enable_vote_subscription );
67 117 : CFG_POP ( bool, rpc.bigtable_ledger_storage );
68 :
69 117 : CFG_POP ( bool, snapshots.enabled );
70 117 : CFG_POP ( bool, snapshots.incremental_snapshots );
71 117 : CFG_POP ( uint, snapshots.full_snapshot_interval_slots );
72 117 : CFG_POP ( uint, snapshots.incremental_snapshot_interval_slots );
73 117 : CFG_POP ( uint, snapshots.minimum_snapshot_download_speed );
74 117 : CFG_POP ( uint, snapshots.maximum_snapshot_download_abort );
75 117 : CFG_POP ( uint, snapshots.maximum_full_snapshots_to_retain );
76 117 : CFG_POP ( uint, snapshots.maximum_incremental_snapshots_to_retain);
77 117 : CFG_POP ( cstr, snapshots.path );
78 117 : CFG_POP ( cstr, snapshots.incremental_path );
79 :
80 117 : return config;
81 117 : }
82 :
83 : fd_configf_t *
84 : fd_config_extract_podf( uchar * pod,
85 117 : fd_configf_t * config ) {
86 117 : CFG_POP_ARRAY( cstr, paths.authorized_voter_paths );
87 :
88 117 : CFG_POP ( cstr, gossip.host );
89 :
90 117 : CFG_POP ( bool, layout.enable_block_production );
91 117 : CFG_POP ( bool, layout.enable_snapshot_production );
92 117 : CFG_POP ( uint, layout.execrp_tile_count );
93 117 : CFG_POP ( uint, layout.sign_tile_count );
94 117 : CFG_POP ( uint, layout.resolv_tile_count );
95 117 : CFG_POP ( uint, layout.execle_tile_count );
96 117 : CFG_POP ( uint, layout.gossvf_tile_count );
97 117 : CFG_POP ( uint, layout.snapdc_tile_count );
98 117 : CFG_POP ( uint, layout.snapin_tile_count );
99 117 : CFG_POP ( uint, layout.snapzp_tile_count );
100 117 : CFG_POP ( uint, layout.snapsv_tile_count );
101 117 : CFG_POP ( uint, layout.snapsv_io_worker_count );
102 :
103 117 : CFG_POP ( cstr, layout.mode );
104 :
105 117 : CFG_POP ( ulong, accounts.max_accounts );
106 117 : CFG_POP ( ulong, accounts.cache_size_gib );
107 :
108 117 : CFG_POP ( ulong, runtime.max_live_slots );
109 117 : CFG_POP ( ulong, runtime.stake_delegation_cache_cnt );
110 :
111 117 : CFG_POP ( ulong, runtime.program_cache_size_mib );
112 :
113 117 : CFG_POP ( ulong, runtime.bank_cache_cnt );
114 :
115 117 : CFG_POP ( ulong, consensus.wait_for_supermajority_at_slot );
116 117 : CFG_POP ( cstr, consensus.wait_for_supermajority_with_bank_hash );
117 117 : CFG_POP ( bool, consensus.alpenglow );
118 :
119 117 : CFG_POP ( uint, snapshots.sources.max_local_full_effective_age );
120 117 : CFG_POP ( uint, snapshots.sources.max_local_incremental_age );
121 117 : CFG_POP ( bool, snapshots.sources.gossip.allow_any );
122 117 : CFG_POP_ARRAY( cstr, snapshots.sources.gossip.allow_list );
123 117 : CFG_POP_ARRAY( cstr, snapshots.sources.gossip.block_list );
124 117 : CFG_POP_ARRAY( cstr, snapshots.sources.servers );
125 117 : CFG_POP ( bool, snapshots.incremental_snapshots );
126 117 : CFG_POP ( bool, snapshots.genesis_download );
127 117 : CFG_POP ( uint, snapshots.max_full_snapshots_to_keep );
128 117 : CFG_POP ( uint, snapshots.max_incremental_snapshots_to_keep );
129 117 : CFG_POP ( uint, snapshots.max_retry_abort );
130 117 : CFG_POP ( uint, snapshots.min_download_speed_mibs );
131 117 : CFG_POP ( ulong, snapshots.wait_for_peers_timeout_seconds );
132 117 : CFG_POP ( ulong, snapshots.full_snapshot_interval_blocks );
133 117 : CFG_POP ( ulong, snapshots.incremental_snapshot_interval_blocks );
134 117 : CFG_POP ( ulong, snapshots.max_incremental_snapshot_accounts );
135 :
136 117 : CFG_POP ( bool, snapshots.server.enabled );
137 117 : CFG_POP ( cstr, snapshots.server.http_listen_address );
138 117 : CFG_POP ( uint, snapshots.server.http_listen_port );
139 117 : CFG_POP ( ulong, snapshots.server.max_http_connections );
140 117 : CFG_POP ( ulong, snapshots.server.idle_timeout_millis );
141 117 : CFG_POP ( ulong, snapshots.server.send_timeout_millis );
142 117 : CFG_POP ( ulong, snapshots.server.send_buffer_size_kib );
143 :
144 117 : CFG_POP ( bool, development.hard_fork_fatal );
145 117 : CFG_POP ( bool, development.fixed_fec_sets );
146 :
147 117 : CFG_POP ( ushort, development.votor.quic_client_listen_port );
148 117 : CFG_POP ( ushort, development.votor.quic_server_listen_port );
149 :
150 117 : CFG_POP ( bool, development.genesis.validate_genesis_hash );
151 117 : CFG_POP ( ulong, development.genesis.max_file_size_mib );
152 :
153 117 : CFG_POP ( cstr, development.ledger_input.format );
154 117 : CFG_POP ( cstr, development.ledger_input.path );
155 117 : CFG_POP ( ulong, development.ledger_input.end_slot );
156 :
157 117 : CFG_POP ( cstr, development.backtest.affinity );
158 117 : CFG_POP ( ulong, development.backtest.root_distance );
159 :
160 :
161 117 : return config;
162 117 : }
163 :
164 : fd_config_t *
165 : fd_config_extract_pod( uchar * pod,
166 321 : fd_config_t * config ) {
167 321 : CFG_POP ( cstr, name );
168 321 : CFG_POP ( cstr, user );
169 :
170 321 : CFG_POP ( bool, telemetry );
171 :
172 321 : CFG_POP ( cstr, log.path );
173 321 : CFG_POP ( cstr, log.colorize );
174 321 : CFG_POP ( cstr, log.level_logfile );
175 321 : CFG_POP ( cstr, log.level_stderr );
176 321 : CFG_POP ( cstr, log.level_flush );
177 :
178 321 : if( FD_UNLIKELY( config->is_firedancer ) ) {
179 117 : CFG_POP ( cstr, paths.base );
180 117 : CFG_POP ( cstr, paths.identity_key );
181 117 : CFG_POP ( cstr, paths.vote_account );
182 117 : CFG_POP ( cstr, paths.snapshots );
183 117 : CFG_POP ( cstr, paths.genesis );
184 117 : CFG_POP ( cstr, paths.accounts );
185 117 : CFG_POP ( cstr, paths.stake_delegations );
186 117 : CFG_POP ( cstr, paths.epoch_credits );
187 117 : CFG_POP ( cstr, paths.cost_tracker );
188 117 : CFG_POP ( cstr, paths.vote_stakes );
189 117 : CFG_POP ( cstr, paths.shredb );
190 117 : CFG_POP ( cstr, paths.guidb );
191 117 : CFG_POP ( cstr, paths.vote_history );
192 204 : } else {
193 204 : CFG_POP1 ( cstr, scratch_directory, paths.base );
194 204 : CFG_POP1 ( cstr, ledger.path, frankendancer.paths.ledger );
195 204 : CFG_POP1 ( cstr, consensus.identity_path, paths.identity_key );
196 204 : CFG_POP1 ( cstr, consensus.vote_account_path, paths.vote_account );
197 204 : }
198 :
199 321 : CFG_POP_ARRAY( cstr, gossip.entrypoints );
200 321 : CFG_POP ( ushort, gossip.port );
201 :
202 321 : CFG_POP ( ushort, consensus.expected_shred_version );
203 321 : CFG_POP ( cstr, consensus.expected_genesis_hash );
204 321 : CFG_POP ( boolau, consensus.wait_for_vote_to_start_leader );
205 :
206 321 : CFG_POP ( cstr, layout.affinity );
207 321 : CFG_POP ( cstr, layout.blocklist_cores );
208 321 : CFG_POP ( uint, layout.net_tile_count );
209 321 : CFG_POP ( uint, layout.quic_tile_count );
210 321 : CFG_POP ( uint, layout.verify_tile_count );
211 321 : CFG_POP ( uint, layout.shred_tile_count );
212 :
213 321 : CFG_POP ( cstr, hugetlbfs.mount_path );
214 321 : CFG_POP ( cstr, hugetlbfs.max_page_size );
215 321 : CFG_POP ( ulong, hugetlbfs.gigantic_page_threshold_mib );
216 :
217 321 : CFG_POP ( cstr, net.interface );
218 321 : CFG_POP ( cstr, net.bind_address );
219 321 : CFG_POP ( cstr, net.provider );
220 321 : CFG_POP ( uint, net.ingress_buffer_size );
221 321 : CFG_POP ( cstr, net.xdp.xdp_mode );
222 321 : CFG_POP ( boolau, net.xdp.xdp_zero_copy );
223 294 : CFG_POP ( cstr, net.xdp.poll_mode );
224 294 : CFG_POP ( uint, net.xdp.xdp_rx_queue_size );
225 294 : CFG_POP ( uint, net.xdp.xdp_tx_queue_size );
226 294 : CFG_POP ( uint, net.xdp.flush_timeout_micros );
227 294 : CFG_POP ( cstr, net.xdp.rss_queue_mode );
228 294 : CFG_POP ( boolau, net.xdp.listen_gre );
229 294 : CFG_POP ( boolau, net.xdp.native_bond );
230 294 : CFG_POP ( uint, net.mlx5.rx_queue_size );
231 294 : CFG_POP ( uint, net.mlx5.tx_queue_size );
232 294 : CFG_POP ( uint, net.socket.receive_buffer_size );
233 294 : CFG_POP ( uint, net.socket.send_buffer_size );
234 :
235 294 : CFG_POP ( ulong, tiles.netlink.max_routes );
236 294 : CFG_POP ( ulong, tiles.netlink.max_peer_routes );
237 294 : CFG_POP ( ulong, tiles.netlink.max_neighbors );
238 :
239 294 : CFG_POP ( ulong, tiles.gossip.max_entries );
240 :
241 294 : CFG_POP ( ushort, tiles.quic.regular_transaction_listen_port );
242 294 : CFG_POP ( ushort, tiles.quic.quic_transaction_listen_port );
243 294 : CFG_POP ( uint, tiles.quic.txn_reassembly_count );
244 294 : CFG_POP ( uint, tiles.quic.max_concurrent_connections );
245 294 : CFG_POP ( uint, tiles.quic.max_concurrent_handshakes );
246 294 : CFG_POP ( uint, tiles.quic.idle_timeout_millis );
247 294 : CFG_POP ( uint, tiles.quic.ack_delay_millis );
248 294 : CFG_POP ( bool, tiles.quic.retry );
249 294 : CFG_POP ( cstr, tiles.quic.ssl_key_log_file );
250 :
251 294 : CFG_POP ( uint, tiles.verify.signature_cache_size );
252 294 : CFG_POP ( uint, tiles.verify.receive_buffer_size );
253 294 : CFG_POP ( uint, tiles.verify.mtu );
254 :
255 294 : CFG_POP ( uint, tiles.dedup.signature_cache_size );
256 :
257 294 : CFG_POP ( bool, tiles.bundle.enabled );
258 294 : CFG_POP ( cstr, tiles.bundle.url );
259 294 : CFG_POP ( cstr, tiles.bundle.tls_domain_name );
260 294 : CFG_POP ( cstr, tiles.bundle.tip_distribution_program_addr );
261 294 : CFG_POP ( cstr, tiles.bundle.tip_payment_program_addr );
262 294 : CFG_POP ( cstr, tiles.bundle.tip_distribution_authority );
263 294 : CFG_POP ( uint, tiles.bundle.commission_bps );
264 294 : CFG_POP ( ulong, tiles.bundle.keepalive_interval_millis );
265 294 : CFG_POP ( bool, tiles.bundle.tls_cert_verify );
266 :
267 294 : CFG_POP ( uint, tiles.pack.max_pending_transactions );
268 294 : CFG_POP ( bool, tiles.pack.use_consumed_cus );
269 294 : CFG_POP ( cstr, tiles.pack.schedule_strategy );
270 294 : CFG_POP_ARRAY( cstr, tiles.pack.account_blocklist );
271 :
272 294 : CFG_POP ( ulong, tiles.replay.max_transaction_lookahead_buffer_size );
273 294 : CFG_POP_ARRAY( cstr, tiles.replay.enable_features );
274 :
275 294 : CFG_POP ( bool, tiles.pohh.lagged_consecutive_leader_start );
276 :
277 294 : CFG_POP ( uint, tiles.shred.max_pending_shred_sets );
278 294 : CFG_POP ( ushort, tiles.shred.shred_listen_port );
279 294 : CFG_POP_ARRAY( cstr, tiles.shred.additional_shred_destinations_retransmit );
280 294 : CFG_POP_ARRAY( cstr, tiles.shred.additional_shred_destinations_leader );
281 294 : CFG_POP ( ulong, tiles.shred.shred_cache_size_mib );
282 :
283 294 : CFG_POP ( cstr, tiles.metric.prometheus_listen_address );
284 294 : CFG_POP ( ushort, tiles.metric.prometheus_listen_port );
285 :
286 294 : CFG_POP ( cstr, tiles.event.url );
287 :
288 294 : CFG_POP ( bool, tiles.gui.enabled );
289 294 : CFG_POP ( cstr, tiles.gui.gui_listen_address );
290 294 : CFG_POP ( ushort, tiles.gui.gui_listen_port );
291 294 : CFG_POP ( ulong, tiles.gui.max_http_connections );
292 294 : CFG_POP ( ulong, tiles.gui.max_websocket_connections );
293 294 : CFG_POP ( ulong, tiles.gui.send_buffer_size_mb );
294 294 : CFG_POP ( ulong, tiles.gui.db_size_gib );
295 :
296 294 : CFG_POP ( bool, tiles.rpc.enabled );
297 294 : CFG_POP ( cstr, tiles.rpc.rpc_listen_address );
298 294 : CFG_POP ( ushort, tiles.rpc.rpc_listen_port );
299 294 : CFG_POP ( ulong, tiles.rpc.max_http_connections );
300 294 : CFG_POP ( ulong, tiles.rpc.max_websocket_connections );
301 294 : CFG_POP ( ulong, tiles.rpc.send_buffer_size_mb );
302 294 : CFG_POP ( bool, tiles.rpc.delay_startup );
303 :
304 294 : CFG_POP ( ushort, tiles.repair.repair_client_listen_port );
305 294 : CFG_POP ( ulong, tiles.repair.slot_max );
306 :
307 294 : CFG_POP ( bool, tiles.rserve.enabled );
308 294 : CFG_POP ( ushort, tiles.rserve.repair_serve_listen_port );
309 294 : CFG_POP ( ulong, tiles.rserve.shred_storage_limit_gib );
310 :
311 294 : CFG_POP ( bool, tiles.tower.write_vote_history_file );
312 :
313 294 : CFG_POP ( ulong, capture.capture_start_slot );
314 294 : CFG_POP ( cstr, capture.solcap_capture );
315 294 : CFG_POP ( bool, capture.recent_only );
316 294 : CFG_POP ( ulong, capture.recent_slots_per_file );
317 294 : CFG_POP ( cstr, capture.dump_proto_dir );
318 294 : CFG_POP ( cstr, capture.dump_syscall_name_filter );
319 294 : CFG_POP ( cstr, capture.dump_instr_program_id_filter );
320 294 : CFG_POP ( bool, capture.dump_syscall_to_pb );
321 294 : CFG_POP ( bool, capture.dump_instr_to_pb );
322 294 : CFG_POP ( bool, capture.dump_txn_to_pb );
323 294 : CFG_POP ( bool, capture.dump_txn_as_fixture );
324 294 : CFG_POP ( bool, capture.dump_block_to_pb );
325 :
326 294 : CFG_POP ( ushort, tiles.txsend.txsend_src_port );
327 :
328 294 : CFG_POP ( bool, development.sandbox );
329 294 : CFG_POP ( bool, development.no_clone );
330 294 : CFG_POP ( cstr, development.core_dump );
331 294 : CFG_POP ( bool, development.no_agave );
332 294 : CFG_POP ( bool, development.bootstrap );
333 :
334 294 : CFG_POP ( bool, development.gossip.allow_private_address );
335 :
336 294 : CFG_POP ( ulong, development.genesis.hashes_per_tick );
337 294 : CFG_POP ( ulong, development.genesis.target_tick_duration_micros );
338 294 : CFG_POP ( ulong, development.genesis.ticks_per_slot );
339 294 : CFG_POP ( ulong, development.genesis.fund_initial_accounts );
340 294 : CFG_POP ( ulong, development.genesis.fund_initial_amount_lamports );
341 294 : CFG_POP ( ulong, development.genesis.vote_account_stake_lamports );
342 294 : CFG_POP ( bool, development.genesis.warmup_epochs );
343 :
344 294 : CFG_POP ( uint, development.bench.benchg_tile_count );
345 294 : CFG_POP ( uint, development.bench.benchs_tile_count );
346 294 : CFG_POP ( cstr, development.bench.affinity );
347 294 : CFG_POP ( cstr, development.bench.transaction_mode );
348 294 : CFG_POP ( ulong, development.bench.max_cost_per_block );
349 294 : CFG_POP ( ulong, development.bench.max_shreds_per_block );
350 294 : CFG_POP ( ulong, development.bench.disable_blockstore_from_slot );
351 294 : CFG_POP ( bool, development.bench.disable_status_cache );
352 :
353 294 : CFG_POP ( cstr, development.bundle.ssl_key_log_file );
354 294 : CFG_POP ( uint, development.bundle.buffer_size_kib );
355 :
356 294 : CFG_POP ( bool, development.event.report_shreds );
357 294 : CFG_POP ( bool, development.event.report_transactions );
358 294 : CFG_POP ( bool, development.event.report_runtime_diffs );
359 :
360 294 : CFG_POP ( cstr, development.pktgen.affinity );
361 294 : CFG_POP ( cstr, development.pktgen.fake_dst_ip );
362 :
363 294 : CFG_POP ( cstr, development.udpecho.affinity );
364 :
365 294 : if( FD_UNLIKELY( !config->is_firedancer ) ) {
366 177 : CFG_POP ( bool, development.gui.websocket_compression );
367 177 : }
368 :
369 294 : CFG_POP ( ulong, development.accdb.partition_size_gib );
370 :
371 294 : CFG_POP ( bool, development.hugetlbfs.min_size );
372 :
373 294 : if( FD_UNLIKELY( config->is_firedancer ) ) {
374 117 : if( FD_UNLIKELY( !fd_config_extract_podf( pod, &config->firedancer ) ) ) return NULL;
375 117 : fd_config_check_configf( config, &config->firedancer );
376 177 : } else {
377 177 : if( FD_UNLIKELY( !fd_config_extract_podh( pod, &config->frankendancer ) ) ) return NULL;
378 177 : }
379 :
380 : /* Renamed config options */
381 :
382 234 : # define CFG_RENAMED( old_path, new_path ) \
383 3042 : do { \
384 3042 : char const * key = #old_path; \
385 3042 : fd_pod_info_t info[1]; \
386 3042 : if( FD_UNLIKELY( !fd_pod_query( pod, key, info ) ) ) { \
387 0 : FD_LOG_WARNING(( "Config option `%s` was renamed to `%s`. " \
388 0 : "Please update your config file.", \
389 0 : #old_path, #new_path )); \
390 0 : return NULL; \
391 0 : } \
392 3042 : (void)config->new_path; /* assert new path exists */ \
393 3042 : } while(0)
394 :
395 234 : CFG_RENAMED( tiles.net.interface, net.interface );
396 234 : CFG_RENAMED( tiles.net.bind_address, net.bind_address );
397 234 : CFG_RENAMED( tiles.net.provider, net.provider );
398 234 : CFG_RENAMED( tiles.net.xdp_mode, net.xdp.xdp_mode );
399 234 : CFG_RENAMED( tiles.net.xdp_zero_copy, net.xdp.xdp_zero_copy );
400 234 : CFG_RENAMED( tiles.net.xdp_rx_queue_size, net.xdp.xdp_rx_queue_size );
401 234 : CFG_RENAMED( tiles.net.xdp_tx_queue_size, net.xdp.xdp_tx_queue_size );
402 234 : CFG_RENAMED( tiles.net.flush_timeout_micros, net.xdp.flush_timeout_micros );
403 234 : CFG_RENAMED( tiles.net.send_buffer_size, net.ingress_buffer_size );
404 :
405 234 : CFG_RENAMED( development.net.provider, net.provider );
406 234 : CFG_RENAMED( development.net.sock_receive_buffer_size, net.socket.receive_buffer_size );
407 234 : CFG_RENAMED( development.net.sock_send_buffer_size, net.socket.send_buffer_size );
408 :
409 234 : CFG_RENAMED( tiles.repair.repair_intake_listen_port, tiles.repair.repair_client_listen_port );
410 :
411 234 : # undef CFG_RENAMED
412 :
413 234 : # define CFG_DEPRECATED( path ) \
414 234 : do { \
415 234 : char const * key = #path; \
416 234 : if( FD_UNLIKELY( !fd_pod_query( pod, key, NULL ) ) ) { \
417 0 : FD_LOG_WARNING(( "ignoring deprecated config option `%s`", key ));\
418 0 : if( FD_UNLIKELY( fd_pod_remove( pod, key ) ) ) \
419 0 : FD_LOG_ERR(( "failed to remove deprecated key `%s`", key )); \
420 0 : } \
421 234 : } while(0)
422 :
423 234 : CFG_DEPRECATED( development.bundle.ssl_heap_size_mib );
424 :
425 234 : # undef CFG_DEPRECATED
426 :
427 234 : if( FD_UNLIKELY( !fdctl_pod_find_leftover( pod ) ) ) return NULL;
428 204 : return config;
429 234 : }
430 :
431 : #undef CFG_POP
432 : #undef CFG_ARRAY
|