Distribute config.c functionality across more modules
The config.c module and the or_options_t type are a layering problem: They initialize many other modules, and provide what amounts to a set of global variables for the configuration settings.
Instead, we could use the subsystems design to give modules the ability to declare and listen to various configuration options of their own, without requiring all the option handling to be in a single place.
Child tickets:
-
#32003 (closed) Unify handling of command-line option parsing -
#31494 (closed) config refactoring: follow-ups from merged commits -
#31495 (closed) cannot configure bridges -
#31240 (closed) Make confparse able to handle multiple config_format_t objects at once -
#31241 (closed) Refactor config validation -
#31624 (closed) Explain config_type_extended usage and purpose -
#31625 (closed) config refactoring: fix hierarchy of configuration variable flags -
#31626 (closed) Move confparse.[ch] into lib/confmgt -
#31627 (closed) Fill in all missing documentation in config, confparse, etc. -
#31502 (closed) Revise authority and fallback code so that they use the same "defaults" logic as other code -
#31629 (closed) Remove non-_ex typedvar.c function -
#30864 (closed) Move variable manipulation code out of confparse.c -
#30865 (closed) Move option-listing, setting, validation code out of confparse.c -
#30866 (closed) Teach config.c to work with options configured in other modules -
#31630 (closed) Remove unused assign/encode functions in structvar. -
#31508 (closed) config refactor: create simple summaries for each refactor step -
#31509 (closed) config refactor: make test-stem should pass -
#31631 (closed) Write a test for round-trip encode/decode operations on configuration objects. -
#31511 (closed) config refactor: split mass change commits into automated and manual steps -
#31637 (closed) Make sure we have test coverage for Option, +Option and /Option across defaults, torrc, command line -
#31638 (closed) config: Always check for valid function arguments at the start of each function -
#32279 (closed) Replace config_suite_offset = -1 with a constant -
#32404 (closed) Add a CFLG_OBSOLETE flag, and handle it at the confvar layer -
#31516 (closed) config refactor: every function table entry should be documented and unit tested -
#32408 (closed) Handle options_act_reversible() in new config system. -
#31527 (closed) In Tor Browser nightly, Tor fails to boostrap, hangs at 50% -
#32295 (closed) "Skipping obsolete configuration option." doesn't say which one -
#31529 (closed) config refactoring: fix redundant reset logic -
#31532 (closed) Use ptrdiff_t for struct_member_t.offset, etc -
#30893 (closed) Refactor and improve test coverage in confparse.c -
#32304 (closed) Preliminary movement and renaming for confmgt. -
#32396 (closed) Add state file support to test_parseconf.sh -
#32397 (closed) Add lzma, nss, and zstd support to test_parseconf.sh -
#31544 (closed) sr: Check why some sr_disk_state fields need to be cleared -
#32399 (closed) Fix "make test-stem" after merging #32339 (closed) and #32344 (closed) -
#30914 (closed) Move struct manipulation code out of confparse.c -
#32450 (closed) test/parseconf: Document include behaviour, and add basic parsing tests -
#32451 (closed) test/parseconf: Add support for required log messages on success -
#32339 (closed) Use a table to drive options_check_transition and warn_about_relative_paths -
#32467 (closed) Document tor's --dump-config command in the man page -
#30935 (closed) Move variable definition code out of confparse.c, and refactor -
#32344 (closed) Make immutability into a config_var_t flag -
#31078 (closed) improve docs for config var abstraction -
#32373 (closed) Create a way to scan all configured file paths -
#32374 (closed) Create a test framework for options_act*() -
#31611 (closed) Work out why chutney didn't fail due to #31495 (closed) cannot configure bridges
Edited by Nick Mathewson