mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 13:43:47 +01:00
Make "invisibility" and "undumpability" properties of variables.
Previously, these were magical things that we detected by checking whether a variable's name was prefixed with two or three underscores.
This commit is contained in:
parent
a7835202cf
commit
f3330d2be3
@ -265,6 +265,13 @@ DUMMY_TYPECHECK_INSTANCE(or_options_t);
|
||||
#define VAR_D(varname,conftype,member,initvalue) \
|
||||
CONFIG_VAR_DEFN(or_options_t, varname, conftype, member, 0, initvalue)
|
||||
|
||||
#define VAR_NODUMP(varname,conftype,member,initvalue) \
|
||||
CONFIG_VAR_ETYPE(or_options_t, varname, conftype, member, \
|
||||
CVFLAG_NODUMP, initvalue)
|
||||
#define VAR_INVIS(varname,conftype,member,initvalue) \
|
||||
CONFIG_VAR_ETYPE(or_options_t, varname, conftype, member, \
|
||||
CVFLAG_NODUMP|CVFLAG_INVISIBLE, initvalue)
|
||||
|
||||
#define V(member,conftype,initvalue) \
|
||||
VAR(#member, conftype, member, initvalue)
|
||||
|
||||
@ -285,7 +292,7 @@ DUMMY_TYPECHECK_INSTANCE(or_options_t);
|
||||
#define VPORT(member) \
|
||||
VAR(#member "Lines", LINELIST_V, member ## _lines, NULL), \
|
||||
VAR(#member, LINELIST_S, member ## _lines, NULL), \
|
||||
VAR("__" #member, LINELIST_S, member ## _lines, NULL)
|
||||
VAR_NODUMP("__" #member, LINELIST_S, member ## _lines, NULL)
|
||||
|
||||
/** UINT64_MAX as a decimal string */
|
||||
#define UINT64_MAX_STRING "18446744073709551615"
|
||||
@ -682,15 +689,17 @@ static config_var_t option_vars_[] = {
|
||||
V(WarnPlaintextPorts, CSV, "23,109,110,143"),
|
||||
OBSOLETE("UseFilteringSSLBufferevents"),
|
||||
OBSOLETE("__UseFilteringSSLBufferevents"),
|
||||
VAR("__ReloadTorrcOnSIGHUP", BOOL, ReloadTorrcOnSIGHUP, "1"),
|
||||
VAR("__AllDirActionsPrivate", BOOL, AllDirActionsPrivate, "0"),
|
||||
VAR("__DisablePredictedCircuits",BOOL,DisablePredictedCircuits, "0"),
|
||||
VAR("__DisableSignalHandlers", BOOL, DisableSignalHandlers, "0"),
|
||||
VAR("__LeaveStreamsUnattached",BOOL, LeaveStreamsUnattached, "0"),
|
||||
VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword,
|
||||
VAR_NODUMP("__ReloadTorrcOnSIGHUP", BOOL, ReloadTorrcOnSIGHUP, "1"),
|
||||
VAR_NODUMP("__AllDirActionsPrivate", BOOL, AllDirActionsPrivate, "0"),
|
||||
VAR_NODUMP("__DisablePredictedCircuits",BOOL,DisablePredictedCircuits, "0"),
|
||||
VAR_NODUMP("__DisableSignalHandlers", BOOL, DisableSignalHandlers, "0"),
|
||||
VAR_NODUMP("__LeaveStreamsUnattached",BOOL, LeaveStreamsUnattached, "0"),
|
||||
VAR_NODUMP("__HashedControlSessionPassword", LINELIST,
|
||||
HashedControlSessionPassword,
|
||||
NULL),
|
||||
VAR("__OwningControllerProcess",STRING,OwningControllerProcess, NULL),
|
||||
VAR("__OwningControllerFD", UINT64, OwningControllerFD, UINT64_MAX_STRING),
|
||||
VAR_NODUMP("__OwningControllerProcess",STRING,OwningControllerProcess, NULL),
|
||||
VAR_NODUMP("__OwningControllerFD", UINT64, OwningControllerFD,
|
||||
UINT64_MAX_STRING),
|
||||
V(MinUptimeHidServDirectoryV2, INTERVAL, "96 hours"),
|
||||
V(TestingServerDownloadInitialDelay, CSV_INTERVAL, "0"),
|
||||
V(TestingClientDownloadInitialDelay, CSV_INTERVAL, "0"),
|
||||
@ -743,7 +752,8 @@ static config_var_t option_vars_[] = {
|
||||
V(TestingDirAuthVoteGuardIsStrict, BOOL, "0"),
|
||||
V_D(TestingDirAuthVoteHSDir, ROUTERSET, NULL),
|
||||
V(TestingDirAuthVoteHSDirIsStrict, BOOL, "0"),
|
||||
VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "0"),
|
||||
VAR_INVIS("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_,
|
||||
"0"),
|
||||
|
||||
END_OF_CONFIG_VARS
|
||||
};
|
||||
@ -783,7 +793,8 @@ static const config_var_t testing_tor_network_defaults[] = {
|
||||
V(TestingDirConnectionMaxStall, INTERVAL, "30 seconds"),
|
||||
V(TestingEnableConnBwEvent, BOOL, "1"),
|
||||
V(TestingEnableCellStatsEvent, BOOL, "1"),
|
||||
VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "1"),
|
||||
VAR_INVIS("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_,
|
||||
"1"),
|
||||
V(RendPostPeriod, INTERVAL, "2 minutes"),
|
||||
|
||||
END_OF_CONFIG_VARS
|
||||
@ -8180,7 +8191,7 @@ getinfo_helper_config(control_connection_t *conn,
|
||||
for (i = 0; option_vars_[i].member.name; ++i) {
|
||||
const config_var_t *var = &option_vars_[i];
|
||||
/* don't tell controller about triple-underscore options */
|
||||
if (!strncmp(option_vars_[i].member.name, "___", 3))
|
||||
if (option_vars_[i].flags & CVFLAG_INVISIBLE)
|
||||
continue;
|
||||
const char *type = struct_var_get_typename(&var->member);
|
||||
if (!type)
|
||||
|
@ -642,7 +642,7 @@ config_dump(const config_format_t *fmt, const void *default_options,
|
||||
continue;
|
||||
}
|
||||
/* Don't save 'hidden' control variables. */
|
||||
if (!strcmpstart(fmt->vars[i].member.name, "__"))
|
||||
if (fmt->vars[i].flags & CVFLAG_NODUMP)
|
||||
continue;
|
||||
if (minimal && config_is_same(fmt, options, defaults,
|
||||
fmt->vars[i].member.name))
|
||||
|
@ -110,6 +110,16 @@ typedef struct struct_magic_decl_t {
|
||||
* fetch this option should produce a warning.
|
||||
**/
|
||||
#define CVFLAG_OBSOLETE (1u<<0)
|
||||
/**
|
||||
* Flag to indicate that an option is undumpable. An undumpable option is
|
||||
* never saved to disk, and is prefixed with __.
|
||||
**/
|
||||
#define CVFLAG_NODUMP (1u<<1)
|
||||
/**
|
||||
* Flag to indicate that an option is "invisible". An invisible option
|
||||
* is always undumpable, and we don't tell the controller about it.
|
||||
**/
|
||||
#define CVFLAG_INVISIBLE (1u<<2)
|
||||
|
||||
/** A variable allowed in the configuration file or on the command line. */
|
||||
typedef struct config_var_t {
|
||||
|
Loading…
Reference in New Issue
Block a user