mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-26 15:42:34 +01:00
Add a consensus_method argument to routerstatus_format_entry()
And pass ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD when it's not applicable. Preparation for #23826.
This commit is contained in:
parent
305f947671
commit
b8d4588c90
5 changed files with 22 additions and 5 deletions
|
@ -1897,21 +1897,28 @@ version_from_platform(const char *platform)
|
|||
/** Helper: write the router-status information in <b>rs</b> into a newly
|
||||
* allocated character buffer. Use the same format as in network-status
|
||||
* documents. If <b>version</b> is non-NULL, add a "v" line for the platform.
|
||||
*
|
||||
* consensus_method is the current consensus method when format is
|
||||
* NS_V3_CONSENSUS or NS_V3_CONSENSUS_MICRODESC. It is ignored for other
|
||||
* formats: pass ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD.
|
||||
*
|
||||
* Return 0 on success, -1 on failure.
|
||||
*
|
||||
* The format argument has one of the following values:
|
||||
* NS_V2 - Output an entry suitable for a V2 NS opinion document
|
||||
* NS_V3_CONSENSUS - Output the first portion of a V3 NS consensus entry
|
||||
* for consensus_method.
|
||||
* NS_V3_CONSENSUS_MICRODESC - Output the first portion of a V3 microdesc
|
||||
* consensus entry.
|
||||
* consensus entry for consensus_method.
|
||||
* NS_V3_VOTE - Output a complete V3 NS vote. If <b>vrs</b> is present,
|
||||
* it contains additional information for the vote.
|
||||
* NS_CONTROL_PORT - Output a NS document for the control port
|
||||
* NS_CONTROL_PORT - Output a NS document for the control port.
|
||||
*/
|
||||
char *
|
||||
routerstatus_format_entry(const routerstatus_t *rs, const char *version,
|
||||
const char *protocols,
|
||||
routerstatus_format_type_t format,
|
||||
int consensus_method,
|
||||
const vote_routerstatus_t *vrs)
|
||||
{
|
||||
char *summary;
|
||||
|
|
|
@ -150,6 +150,7 @@ char *routerstatus_format_entry(
|
|||
const char *version,
|
||||
const char *protocols,
|
||||
routerstatus_format_type_t format,
|
||||
int consensus_method,
|
||||
const vote_routerstatus_t *vrs);
|
||||
void dirserv_free_all(void);
|
||||
void cached_dir_decref(cached_dir_t *d);
|
||||
|
|
|
@ -278,7 +278,9 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
|
|||
vote_microdesc_hash_t *h;
|
||||
rsf = routerstatus_format_entry(&vrs->status,
|
||||
vrs->version, vrs->protocols,
|
||||
NS_V3_VOTE, vrs);
|
||||
NS_V3_VOTE,
|
||||
ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD,
|
||||
vrs);
|
||||
if (rsf)
|
||||
smartlist_add(chunks, rsf);
|
||||
|
||||
|
@ -2100,7 +2102,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
|||
char *buf;
|
||||
/* Okay!! Now we can write the descriptor... */
|
||||
/* First line goes into "buf". */
|
||||
buf = routerstatus_format_entry(&rs_out, NULL, NULL, rs_format, NULL);
|
||||
buf = routerstatus_format_entry(&rs_out, NULL, NULL,
|
||||
rs_format, consensus_method, NULL);
|
||||
if (buf)
|
||||
smartlist_add(chunks, buf);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,10 @@
|
|||
#define MIN_VOTE_INTERVAL_TESTING_INITIAL \
|
||||
((MIN_VOTE_SECONDS_TESTING)+(MIN_DIST_SECONDS_TESTING)+1)
|
||||
|
||||
/* A placeholder for routerstatus_format_entry() when the consensus method
|
||||
* argument is not applicable. */
|
||||
#define ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD 0
|
||||
|
||||
/** The lowest consensus method that we currently support. */
|
||||
#define MIN_SUPPORTED_CONSENSUS_METHOD 13
|
||||
|
||||
|
|
|
@ -2193,7 +2193,9 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs)
|
|||
char *
|
||||
networkstatus_getinfo_helper_single(const routerstatus_t *rs)
|
||||
{
|
||||
return routerstatus_format_entry(rs, NULL, NULL, NS_CONTROL_PORT, NULL);
|
||||
return routerstatus_format_entry(rs, NULL, NULL, NS_CONTROL_PORT,
|
||||
ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD,
|
||||
NULL);
|
||||
}
|
||||
|
||||
/** Alloc and return a string describing routerstatuses for the most
|
||||
|
|
Loading…
Add table
Reference in a new issue