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