[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #31625 [Core Tor/Tor]: config refactoring: fix hierarchy of configuration variable flags
#31625: config refactoring: fix hierarchy of configuration variable flags
-----------------------------------------+---------------------------------
Reporter: nickm | Owner: nickm
Type: defect | Status: assigned
Priority: Medium | Milestone: Tor:
| 0.4.2.x-final
Component: Core Tor/Tor | Version:
Severity: Normal | Resolution:
Keywords: network-team-roadmap-august | Actual Points:
Parent ID: #29211 | Points: .5
Reviewer: | Sponsor:
-----------------------------------------+---------------------------------
Comment (by nickm):
Here's a proposed design -- what do you think?
== The current situation ==
Currently we have two kinds of flags:
* flags for types
* flags for variables.
If a flag is set on a type, it applies to every variable of that type.
If a flag is set on a variable, it applies only to that variable.
The type flags are:
unsettable -- cannot be set directly by name. (LINELIST_V, OBSOLETE)
contained -- addresses part of another type. (LINELIST_S, OBSOLETE)
cumulative -- setting a variable of this type does not override older
values set to this type. (all LINELIST, LINELIST_V, LINELIST_S)
The variable flags are:
invisible -- does not show up on lists of variables, does not get
written to disk, and is not visible to the controller.
obsolete -- produce a warning on any attempt to set or fetch the
option. Do not list it as a valid option.
nodump -- do not write to disk. These are mostly testing options.
== The refactoring ==
The new orthogonal low-level options are:
* NOSET -- cannot be set by name.
* NOLIST -- does not appear in lists of options.
* NODUMP -- do not dump this option to disk from config_dump() -- either
because it is a testing option, or because it is contained in another
option.
* NOCOPY -- do not try to copy this option in config_dup, because it is
contained in another option, or has no storage.
* NOGET -- cannot be fetched by the controller.
* CUMULATIVE -- remains unchanged. We might call it NOREPLACE or
NOOVERWRITE if that's clearer?
With this set of options:
"cumulative" remains CUMULATIVE.
"nodump" remains "NODUMP".
"unsettable" becomes NOSET.
"contained" becomes NODUMP + NOCOPY
"invisible" becomes NOGET + NOSET + NODUMP + NOLIST
"obsolete" becomes NOGET + NOSET + NODUMP + NOCOPY + NOLIST.
== How flags are set ==
Flags can be set either on a type or on a variable. Variable flags are
or'd with the flags of their type before checking them.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/31625#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs