diff --git a/changes/ticket40164 b/changes/ticket40164 new file mode 100644 index 0000000000000000000000000000000000000000..206ebefc488564035bd68717f1d270e6a1962549 --- /dev/null +++ b/changes/ticket40164 @@ -0,0 +1,6 @@ + o Minor features: + - Make it possible to specify multiple ConsensusParams torrc lines. + Now directory authority operators can for example put the main + ConsensusParams config in one torrc file and then add to it from + a different torrc file. Closes ticket 40164. + diff --git a/doc/tor.1.txt b/doc/tor.1.txt index f2a1aceb2ff493ada85be0eccceaca61b438e850..3dc8c7a034ff5db1de3e9c0ee5d90f3e45acd992 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -3014,7 +3014,8 @@ on the public Tor network. [[ConsensusParams]] **ConsensusParams** __STRING__:: STRING is a space-separated list of key=value pairs that Tor will include - in the "params" line of its networkstatus vote. + in the "params" line of its networkstatus vote. This directive can be + specified multiple times so you don't have to put it all on one line. [[DirAllowPrivateAddresses]] **DirAllowPrivateAddresses** **0**|**1**:: If set to 1, Tor will accept server descriptors with arbitrary "Address" diff --git a/src/feature/dirauth/dirauth_options.inc b/src/feature/dirauth/dirauth_options.inc index 21f4996c39e43536dbf86e3061062688176769fc..2aa07a6c88df3fe893d7426465fb351f7250a71a 100644 --- a/src/feature/dirauth/dirauth_options.inc +++ b/src/feature/dirauth/dirauth_options.inc @@ -46,7 +46,7 @@ CONF_VAR(AuthDirTestEd25519LinkKeys, BOOL, 0, "1") /** Authority only: key=value pairs that we add to our networkstatus * consensus vote on the 'params' line. */ -CONF_VAR(ConsensusParams, STRING, 0, NULL) +CONF_VAR(ConsensusParams, LINELIST, 0, NULL) /** Authority only: minimum number of measured bandwidths we must see * before we only believe measured bandwidths to assign flags. */ diff --git a/src/feature/dirauth/dirvote.c b/src/feature/dirauth/dirvote.c index 79651563b409e23282244e523b9e58a2475f0025..828ecbc3724b610328997d12341127aba9307008 100644 --- a/src/feature/dirauth/dirvote.c +++ b/src/feature/dirauth/dirvote.c @@ -4709,9 +4709,12 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, smartlist_sort_strings(v3_out->known_flags); if (d_options->ConsensusParams) { + config_line_t *paramline = d_options->ConsensusParams; v3_out->net_params = smartlist_new(); - smartlist_split_string(v3_out->net_params, - d_options->ConsensusParams, NULL, 0, 0); + for ( ; paramline; paramline = paramline->next) { + smartlist_split_string(v3_out->net_params, + paramline->value, NULL, 0, 0); + } smartlist_sort_strings(v3_out->net_params); } v3_out->bw_file_headers = bw_file_headers;