mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-26 23:52:30 +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
|
/** Helper: write the router-status information in <b>rs</b> into a newly
|
||||||
* allocated character buffer. Use the same format as in network-status
|
* 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.
|
* 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.
|
* Return 0 on success, -1 on failure.
|
||||||
*
|
*
|
||||||
* The format argument has one of the following values:
|
* The format argument has one of the following values:
|
||||||
* NS_V2 - Output an entry suitable for a V2 NS opinion document
|
* 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
|
* 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
|
* 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,
|
* NS_V3_VOTE - Output a complete V3 NS vote. If <b>vrs</b> is present,
|
||||||
* it contains additional information for the vote.
|
* 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 *
|
char *
|
||||||
routerstatus_format_entry(const routerstatus_t *rs, const char *version,
|
routerstatus_format_entry(const routerstatus_t *rs, const char *version,
|
||||||
const char *protocols,
|
const char *protocols,
|
||||||
routerstatus_format_type_t format,
|
routerstatus_format_type_t format,
|
||||||
|
int consensus_method,
|
||||||
const vote_routerstatus_t *vrs)
|
const vote_routerstatus_t *vrs)
|
||||||
{
|
{
|
||||||
char *summary;
|
char *summary;
|
||||||
|
|
|
@ -150,6 +150,7 @@ char *routerstatus_format_entry(
|
||||||
const char *version,
|
const char *version,
|
||||||
const char *protocols,
|
const char *protocols,
|
||||||
routerstatus_format_type_t format,
|
routerstatus_format_type_t format,
|
||||||
|
int consensus_method,
|
||||||
const vote_routerstatus_t *vrs);
|
const vote_routerstatus_t *vrs);
|
||||||
void dirserv_free_all(void);
|
void dirserv_free_all(void);
|
||||||
void cached_dir_decref(cached_dir_t *d);
|
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;
|
vote_microdesc_hash_t *h;
|
||||||
rsf = routerstatus_format_entry(&vrs->status,
|
rsf = routerstatus_format_entry(&vrs->status,
|
||||||
vrs->version, vrs->protocols,
|
vrs->version, vrs->protocols,
|
||||||
NS_V3_VOTE, vrs);
|
NS_V3_VOTE,
|
||||||
|
ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD,
|
||||||
|
vrs);
|
||||||
if (rsf)
|
if (rsf)
|
||||||
smartlist_add(chunks, rsf);
|
smartlist_add(chunks, rsf);
|
||||||
|
|
||||||
|
@ -2100,7 +2102,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
||||||
char *buf;
|
char *buf;
|
||||||
/* Okay!! Now we can write the descriptor... */
|
/* Okay!! Now we can write the descriptor... */
|
||||||
/* First line goes into "buf". */
|
/* 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)
|
if (buf)
|
||||||
smartlist_add(chunks, buf);
|
smartlist_add(chunks, buf);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,10 @@
|
||||||
#define MIN_VOTE_INTERVAL_TESTING_INITIAL \
|
#define MIN_VOTE_INTERVAL_TESTING_INITIAL \
|
||||||
((MIN_VOTE_SECONDS_TESTING)+(MIN_DIST_SECONDS_TESTING)+1)
|
((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. */
|
/** The lowest consensus method that we currently support. */
|
||||||
#define MIN_SUPPORTED_CONSENSUS_METHOD 13
|
#define MIN_SUPPORTED_CONSENSUS_METHOD 13
|
||||||
|
|
||||||
|
|
|
@ -2193,7 +2193,9 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs)
|
||||||
char *
|
char *
|
||||||
networkstatus_getinfo_helper_single(const routerstatus_t *rs)
|
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
|
/** Alloc and return a string describing routerstatuses for the most
|
||||||
|
|
Loading…
Add table
Reference in a new issue