mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Replace _AUTHORITY enum values with _DIRINFO values (automted)
This commit is contained in:
parent
6e58575767
commit
3df22887a3
@ -4649,7 +4649,7 @@ retry_bridge_descriptor_fetch_directly(const char *digest)
|
||||
void
|
||||
fetch_bridge_descriptors(or_options_t *options, time_t now)
|
||||
{
|
||||
int num_bridge_auths = get_n_authorities(BRIDGE_AUTHORITY);
|
||||
int num_bridge_auths = get_n_authorities(BRIDGE_DIRINFO);
|
||||
int ask_bridge_directly;
|
||||
int can_use_bridge_authority;
|
||||
|
||||
|
@ -875,16 +875,16 @@ validate_dir_authorities(or_options_t *options, or_options_t *old_options)
|
||||
/* Now go through the four ways you can configure an alternate
|
||||
* set of directory authorities, and make sure none are broken. */
|
||||
for (cl = options->DirServers; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateDirAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateHSAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@ -915,27 +915,27 @@ consider_adding_dir_authorities(or_options_t *options,
|
||||
|
||||
if (!options->DirServers) {
|
||||
/* then we may want some of the defaults */
|
||||
dirinfo_type_t type = NO_AUTHORITY;
|
||||
dirinfo_type_t type = NO_DIRINFO;
|
||||
if (!options->AlternateBridgeAuthority)
|
||||
type |= BRIDGE_AUTHORITY;
|
||||
type |= BRIDGE_DIRINFO;
|
||||
if (!options->AlternateDirAuthority)
|
||||
type |= V1_AUTHORITY | V2_AUTHORITY | V3_AUTHORITY;
|
||||
type |= V1_DIRINFO | V2_DIRINFO | V3_DIRINFO;
|
||||
if (!options->AlternateHSAuthority)
|
||||
type |= HIDSERV_AUTHORITY;
|
||||
type |= HIDSERV_DIRINFO;
|
||||
add_default_trusted_dir_authorities(type);
|
||||
}
|
||||
|
||||
for (cl = options->DirServers; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateDirAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
|
||||
return -1;
|
||||
for (cl = options->AlternateHSAuthority; cl; cl = cl->next)
|
||||
if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
|
||||
if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@ -2849,23 +2849,23 @@ compute_publishserverdescriptor(or_options_t *options)
|
||||
{
|
||||
smartlist_t *list = options->PublishServerDescriptor;
|
||||
dirinfo_type_t *auth = &options->_PublishServerDescriptor;
|
||||
*auth = NO_AUTHORITY;
|
||||
*auth = NO_DIRINFO;
|
||||
if (!list) /* empty list, answer is none */
|
||||
return 0;
|
||||
SMARTLIST_FOREACH(list, const char *, string, {
|
||||
if (!strcasecmp(string, "v1"))
|
||||
*auth |= V1_AUTHORITY;
|
||||
*auth |= V1_DIRINFO;
|
||||
else if (!strcmp(string, "1"))
|
||||
if (options->BridgeRelay)
|
||||
*auth |= BRIDGE_AUTHORITY;
|
||||
*auth |= BRIDGE_DIRINFO;
|
||||
else
|
||||
*auth |= V2_AUTHORITY | V3_AUTHORITY;
|
||||
*auth |= V2_DIRINFO | V3_DIRINFO;
|
||||
else if (!strcasecmp(string, "v2"))
|
||||
*auth |= V2_AUTHORITY;
|
||||
*auth |= V2_DIRINFO;
|
||||
else if (!strcasecmp(string, "v3"))
|
||||
*auth |= V3_AUTHORITY;
|
||||
*auth |= V3_DIRINFO;
|
||||
else if (!strcasecmp(string, "bridge"))
|
||||
*auth |= BRIDGE_AUTHORITY;
|
||||
*auth |= BRIDGE_DIRINFO;
|
||||
else if (!strcasecmp(string, "hidserv"))
|
||||
log_warn(LD_CONFIG,
|
||||
"PublishServerDescriptor hidserv is invalid. See "
|
||||
@ -3311,9 +3311,9 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
||||
}
|
||||
|
||||
if ((options->BridgeRelay
|
||||
|| options->_PublishServerDescriptor & BRIDGE_AUTHORITY)
|
||||
|| options->_PublishServerDescriptor & BRIDGE_DIRINFO)
|
||||
&& (options->_PublishServerDescriptor
|
||||
& (V1_AUTHORITY|V2_AUTHORITY|V3_AUTHORITY))) {
|
||||
& (V1_DIRINFO|V2_DIRINFO|V3_DIRINFO))) {
|
||||
REJECT("Bridges are not supposed to publish router descriptors to the "
|
||||
"directory authorities. Please correct your "
|
||||
"PublishServerDescriptor line.");
|
||||
@ -4561,7 +4561,7 @@ parse_dir_server_line(const char *line, dirinfo_type_t required_type,
|
||||
uint16_t dir_port = 0, or_port = 0;
|
||||
char digest[DIGEST_LEN];
|
||||
char v3_digest[DIGEST_LEN];
|
||||
dirinfo_type_t type = V2_AUTHORITY;
|
||||
dirinfo_type_t type = V2_DIRINFO;
|
||||
int is_not_hidserv_authority = 0, is_not_v2_authority = 0;
|
||||
|
||||
items = smartlist_create();
|
||||
@ -4582,13 +4582,13 @@ parse_dir_server_line(const char *line, dirinfo_type_t required_type,
|
||||
if (TOR_ISDIGIT(flag[0]))
|
||||
break;
|
||||
if (!strcasecmp(flag, "v1")) {
|
||||
type |= (V1_AUTHORITY | HIDSERV_AUTHORITY);
|
||||
type |= (V1_DIRINFO | HIDSERV_DIRINFO);
|
||||
} else if (!strcasecmp(flag, "hs")) {
|
||||
type |= HIDSERV_AUTHORITY;
|
||||
type |= HIDSERV_DIRINFO;
|
||||
} else if (!strcasecmp(flag, "no-hs")) {
|
||||
is_not_hidserv_authority = 1;
|
||||
} else if (!strcasecmp(flag, "bridge")) {
|
||||
type |= BRIDGE_AUTHORITY;
|
||||
type |= BRIDGE_DIRINFO;
|
||||
} else if (!strcasecmp(flag, "no-v2")) {
|
||||
is_not_v2_authority = 1;
|
||||
} else if (!strcasecmpstart(flag, "orport=")) {
|
||||
@ -4605,7 +4605,7 @@ parse_dir_server_line(const char *line, dirinfo_type_t required_type,
|
||||
log_warn(LD_CONFIG, "Bad v3 identity digest '%s' on DirServer line",
|
||||
flag);
|
||||
} else {
|
||||
type |= V3_AUTHORITY;
|
||||
type |= V3_DIRINFO;
|
||||
}
|
||||
} else {
|
||||
log_warn(LD_CONFIG, "Unrecognized flag '%s' on DirServer line",
|
||||
@ -4615,9 +4615,9 @@ parse_dir_server_line(const char *line, dirinfo_type_t required_type,
|
||||
smartlist_del_keeporder(items, 0);
|
||||
}
|
||||
if (is_not_hidserv_authority)
|
||||
type &= ~HIDSERV_AUTHORITY;
|
||||
type &= ~HIDSERV_DIRINFO;
|
||||
if (is_not_v2_authority)
|
||||
type &= ~V2_AUTHORITY;
|
||||
type &= ~V2_DIRINFO;
|
||||
|
||||
if (smartlist_len(items) < 2) {
|
||||
log_warn(LD_CONFIG, "Too few arguments to DirServer line.");
|
||||
|
@ -1847,7 +1847,7 @@ getinfo_helper_events(control_connection_t *control_conn,
|
||||
} else if (!strcmp(question, "status/version/num-versioning") ||
|
||||
!strcmp(question, "status/version/num-concurring")) {
|
||||
char s[33];
|
||||
tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_AUTHORITY));
|
||||
tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_DIRINFO));
|
||||
*answer = tor_strdup(s);
|
||||
log_warn(LD_GENERAL, "%s is deprecated; it no longer gives useful "
|
||||
"information", question);
|
||||
|
@ -153,15 +153,15 @@ dirinfo_type_to_string(dirinfo_type_t auth)
|
||||
{
|
||||
char *result;
|
||||
smartlist_t *lst = smartlist_create();
|
||||
if (auth & V1_AUTHORITY)
|
||||
if (auth & V1_DIRINFO)
|
||||
smartlist_add(lst, (void*)"V1");
|
||||
if (auth & V2_AUTHORITY)
|
||||
if (auth & V2_DIRINFO)
|
||||
smartlist_add(lst, (void*)"V2");
|
||||
if (auth & V3_AUTHORITY)
|
||||
if (auth & V3_DIRINFO)
|
||||
smartlist_add(lst, (void*)"V3");
|
||||
if (auth & BRIDGE_AUTHORITY)
|
||||
if (auth & BRIDGE_DIRINFO)
|
||||
smartlist_add(lst, (void*)"Bridge");
|
||||
if (auth & HIDSERV_AUTHORITY)
|
||||
if (auth & HIDSERV_DIRINFO)
|
||||
smartlist_add(lst, (void*)"Hidden service");
|
||||
if (smartlist_len(lst)) {
|
||||
result = smartlist_join_strings(lst, ", ", 0, NULL);
|
||||
@ -356,30 +356,30 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
* it elsewhere in directory.c. -RD */
|
||||
switch (dir_purpose) {
|
||||
case DIR_PURPOSE_FETCH_EXTRAINFO:
|
||||
type = EXTRAINFO_CACHE |
|
||||
(router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY :
|
||||
V3_AUTHORITY);
|
||||
type = EXTRAINFO_DIRINFO |
|
||||
(router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO :
|
||||
V3_DIRINFO);
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_V2_NETWORKSTATUS:
|
||||
type = V2_AUTHORITY;
|
||||
type = V2_DIRINFO;
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_SERVERDESC:
|
||||
type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY :
|
||||
V3_AUTHORITY);
|
||||
type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO :
|
||||
V3_DIRINFO);
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_RENDDESC:
|
||||
type = HIDSERV_AUTHORITY;
|
||||
type = HIDSERV_DIRINFO;
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_STATUS_VOTE:
|
||||
case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES:
|
||||
type = V3_AUTHORITY;
|
||||
type = V3_DIRINFO;
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_CONSENSUS:
|
||||
case DIR_PURPOSE_FETCH_CERTIFICATE:
|
||||
type = V3_AUTHORITY;
|
||||
type = V3_DIRINFO;
|
||||
break;
|
||||
case DIR_PURPOSE_FETCH_MICRODESC:
|
||||
type = V3_AUTHORITY;
|
||||
type = V3_DIRINFO;
|
||||
break;
|
||||
default:
|
||||
log_warn(LD_BUG, "Unexpected purpose %d", (int)dir_purpose);
|
||||
@ -407,11 +407,11 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
}
|
||||
}
|
||||
|
||||
if (!options->FetchServerDescriptors && type != HIDSERV_AUTHORITY)
|
||||
if (!options->FetchServerDescriptors && type != HIDSERV_DIRINFO)
|
||||
return;
|
||||
|
||||
if (!get_via_tor) {
|
||||
if (options->UseBridges && type != BRIDGE_AUTHORITY) {
|
||||
if (options->UseBridges && type != BRIDGE_DIRINFO) {
|
||||
/* want to ask a running bridge for which we have a descriptor. */
|
||||
/* XXX023 we assume that all of our bridges can answer any
|
||||
* possible directory question. This won't be true forever. -RD */
|
||||
@ -435,7 +435,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
"nodes are available yet.");
|
||||
return;
|
||||
} else {
|
||||
if (prefer_authority || type == BRIDGE_AUTHORITY) {
|
||||
if (prefer_authority || type == BRIDGE_DIRINFO) {
|
||||
/* only ask authdirservers, and don't ask myself */
|
||||
rs = router_pick_trusteddirserver(type, pds_flags);
|
||||
if (rs == NULL && (pds_flags & (PDS_NO_EXISTING_SERVERDESC_FETCH|
|
||||
@ -457,7 +457,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!rs && type != BRIDGE_AUTHORITY) {
|
||||
if (!rs && type != BRIDGE_DIRINFO) {
|
||||
/* anybody with a non-zero dirport will do */
|
||||
rs = router_pick_directory_server(type, pds_flags);
|
||||
if (!rs) {
|
||||
@ -474,7 +474,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
if (dir_purpose == DIR_PURPOSE_FETCH_RENDDESC) {
|
||||
/* only ask hidserv authorities, any of them will do */
|
||||
pds_flags |= PDS_IGNORE_FASCISTFIREWALL|PDS_ALLOW_SELF;
|
||||
rs = router_pick_trusteddirserver(HIDSERV_AUTHORITY, pds_flags);
|
||||
rs = router_pick_trusteddirserver(HIDSERV_DIRINFO, pds_flags);
|
||||
} else {
|
||||
/* anybody with a non-zero dirport will do. Disregard firewalls. */
|
||||
pds_flags |= PDS_IGNORE_FASCISTFIREWALL;
|
||||
@ -520,7 +520,7 @@ directory_get_from_all_authorities(uint8_t dir_purpose,
|
||||
routerstatus_t *rs;
|
||||
if (router_digest_is_me(ds->digest))
|
||||
continue;
|
||||
if (!(ds->type & V3_AUTHORITY))
|
||||
if (!(ds->type & V3_DIRINFO))
|
||||
continue;
|
||||
rs = &ds->fake_status;
|
||||
directory_initiate_command_routerstatus(rs, dir_purpose, router_purpose,
|
||||
@ -1047,7 +1047,7 @@ directory_get_consensus_url(int supports_conditional_consensus,
|
||||
trusted_dir_server_t *, ds,
|
||||
{
|
||||
char *hex;
|
||||
if (!(ds->type & V3_AUTHORITY))
|
||||
if (!(ds->type & V3_DIRINFO))
|
||||
continue;
|
||||
|
||||
hex = tor_malloc(2*CONDITIONAL_CONSENSUS_FPR_LEN+1);
|
||||
|
@ -1555,8 +1555,8 @@ dirserv_pick_cached_dir_obj(cached_dir_t *cache_src,
|
||||
dirinfo_type_t auth_type)
|
||||
{
|
||||
or_options_t *options = get_options();
|
||||
int authority = (auth_type == V1_AUTHORITY && authdir_mode_v1(options)) ||
|
||||
(auth_type == V2_AUTHORITY && authdir_mode_v2(options));
|
||||
int authority = (auth_type == V1_DIRINFO && authdir_mode_v1(options)) ||
|
||||
(auth_type == V2_DIRINFO && authdir_mode_v2(options));
|
||||
|
||||
if (!authority || authdir_mode_bridge(options)) {
|
||||
return cache_src;
|
||||
@ -1585,7 +1585,7 @@ dirserv_get_directory(void)
|
||||
return dirserv_pick_cached_dir_obj(cached_directory, the_directory,
|
||||
the_directory_is_dirty,
|
||||
dirserv_regenerate_directory,
|
||||
"v1 server directory", V1_AUTHORITY);
|
||||
"v1 server directory", V1_DIRINFO);
|
||||
}
|
||||
|
||||
/** Only called by v1 auth dirservers.
|
||||
@ -1678,7 +1678,7 @@ dirserv_get_runningrouters(void)
|
||||
&cached_runningrouters, &the_runningrouters,
|
||||
runningrouters_is_dirty,
|
||||
generate_runningrouters,
|
||||
"v1 network status list", V1_AUTHORITY);
|
||||
"v1 network status list", V1_DIRINFO);
|
||||
}
|
||||
|
||||
/** Return the latest downloaded consensus networkstatus in encoded, signed,
|
||||
@ -2967,7 +2967,7 @@ dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result,
|
||||
} else {
|
||||
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
|
||||
trusted_dir_server_t *, ds,
|
||||
if (ds->type & V2_AUTHORITY)
|
||||
if (ds->type & V2_DIRINFO)
|
||||
smartlist_add(result, tor_memdup(ds->digest, DIGEST_LEN)));
|
||||
}
|
||||
smartlist_sort_digests(result);
|
||||
|
@ -2742,7 +2742,7 @@ dirvote_perform_vote(void)
|
||||
|
||||
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_VOTE,
|
||||
ROUTER_PURPOSE_GENERAL,
|
||||
V3_AUTHORITY,
|
||||
V3_DIRINFO,
|
||||
pending_vote->vote_body->dir,
|
||||
pending_vote->vote_body->dir_len, 0);
|
||||
log_notice(LD_DIR, "Vote posted.");
|
||||
@ -2761,7 +2761,7 @@ dirvote_fetch_missing_votes(void)
|
||||
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
|
||||
trusted_dir_server_t *, ds,
|
||||
{
|
||||
if (!(ds->type & V3_AUTHORITY))
|
||||
if (!(ds->type & V3_DIRINFO))
|
||||
continue;
|
||||
if (!dirvote_get_vote(ds->v3_identity_digest,
|
||||
DGV_BY_ID|DGV_INCLUDE_PENDING)) {
|
||||
@ -2874,7 +2874,7 @@ list_v3_auth_ids(void)
|
||||
char *keys;
|
||||
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
|
||||
trusted_dir_server_t *, ds,
|
||||
if ((ds->type & V3_AUTHORITY) &&
|
||||
if ((ds->type & V3_DIRINFO) &&
|
||||
!tor_digest_is_zero(ds->v3_identity_digest))
|
||||
smartlist_add(known_v3_keys,
|
||||
tor_strdup(hex_str(ds->v3_identity_digest, DIGEST_LEN))));
|
||||
@ -3069,7 +3069,7 @@ dirvote_compute_consensuses(void)
|
||||
if (!pending_vote_list)
|
||||
pending_vote_list = smartlist_create();
|
||||
|
||||
n_voters = get_n_authorities(V3_AUTHORITY);
|
||||
n_voters = get_n_authorities(V3_DIRINFO);
|
||||
n_votes = smartlist_len(pending_vote_list);
|
||||
if (n_votes <= n_voters/2) {
|
||||
log_warn(LD_DIR, "We don't have enough votes to generate a consensus: "
|
||||
@ -3208,7 +3208,7 @@ dirvote_compute_consensuses(void)
|
||||
|
||||
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_SIGNATURES,
|
||||
ROUTER_PURPOSE_GENERAL,
|
||||
V3_AUTHORITY,
|
||||
V3_DIRINFO,
|
||||
pending_consensus_signatures,
|
||||
strlen(pending_consensus_signatures), 0);
|
||||
log_notice(LD_DIR, "Signature(s) posted.");
|
||||
|
@ -482,7 +482,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
|
||||
int n_bad = 0;
|
||||
int n_unknown = 0;
|
||||
int n_no_signature = 0;
|
||||
int n_v3_authorities = get_n_authorities(V3_AUTHORITY);
|
||||
int n_v3_authorities = get_n_authorities(V3_DIRINFO);
|
||||
int n_required = n_v3_authorities/2 + 1;
|
||||
smartlist_t *need_certs_from = smartlist_create();
|
||||
smartlist_t *unrecognized = smartlist_create();
|
||||
@ -553,7 +553,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
|
||||
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
|
||||
trusted_dir_server_t *, ds,
|
||||
{
|
||||
if ((ds->type & V3_AUTHORITY) &&
|
||||
if ((ds->type & V3_DIRINFO) &&
|
||||
!networkstatus_get_voter_by_id(consensus, ds->v3_identity_digest))
|
||||
smartlist_add(missing_authorities, ds);
|
||||
});
|
||||
@ -736,7 +736,7 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at,
|
||||
base16_encode(fp, HEX_DIGEST_LEN+1, ns->identity_digest, DIGEST_LEN);
|
||||
if (!(trusted_dir =
|
||||
router_get_trusteddirserver_by_digest(ns->identity_digest)) ||
|
||||
!(trusted_dir->type & V2_AUTHORITY)) {
|
||||
!(trusted_dir->type & V2_DIRINFO)) {
|
||||
log_info(LD_DIR, "Network status was signed, but not by an authoritative "
|
||||
"directory we recognize.");
|
||||
source_desc = fp;
|
||||
@ -1130,7 +1130,7 @@ update_v2_networkstatus_cache_downloads(time_t now)
|
||||
{
|
||||
char resource[HEX_DIGEST_LEN+6]; /* fp/hexdigit.z\0 */
|
||||
tor_addr_t addr;
|
||||
if (!(ds->type & V2_AUTHORITY))
|
||||
if (!(ds->type & V2_DIRINFO))
|
||||
continue;
|
||||
if (router_digest_is_me(ds->digest))
|
||||
continue;
|
||||
|
21
src/or/or.h
21
src/or/or.h
@ -2090,23 +2090,24 @@ typedef struct authority_cert_t {
|
||||
uint8_t is_cross_certified;
|
||||
} authority_cert_t;
|
||||
|
||||
/** Bitfield enum type listing types of directory authority/directory
|
||||
* server. */
|
||||
/** Bitfield enum type listing types of information that directory authorities
|
||||
* can be authoritative about, and that directory caches may or may not cache.
|
||||
*/
|
||||
typedef enum {
|
||||
NO_AUTHORITY = 0,
|
||||
NO_DIRINFO = 0,
|
||||
/** Serves/signs v1 directory information: Big lists of routers, and short
|
||||
* routerstatus documents. */
|
||||
V1_AUTHORITY = 1 << 0,
|
||||
V1_DIRINFO = 1 << 0,
|
||||
/** Serves/signs v2 directory information: i.e. v2 networkstatus documents */
|
||||
V2_AUTHORITY = 1 << 1,
|
||||
V2_DIRINFO = 1 << 1,
|
||||
/** Serves/signs v3 directory information: votes, consensuses, certs */
|
||||
V3_AUTHORITY = 1 << 2,
|
||||
V3_DIRINFO = 1 << 2,
|
||||
/** Serves hidden service descriptors. */
|
||||
HIDSERV_AUTHORITY = 1 << 3,
|
||||
HIDSERV_DIRINFO = 1 << 3,
|
||||
/** Serves bridge descriptors. */
|
||||
BRIDGE_AUTHORITY = 1 << 4,
|
||||
/** Serves extrainfo documents. (XXX Not precisely an authority type)*/
|
||||
EXTRAINFO_CACHE = 1 << 5,
|
||||
BRIDGE_DIRINFO = 1 << 4,
|
||||
/** Serves extrainfo documents. */
|
||||
EXTRAINFO_DIRINFO = 1 << 5,
|
||||
} dirinfo_type_t;
|
||||
|
||||
#define CRYPT_PATH_MAGIC 0x70127012u
|
||||
|
@ -697,11 +697,11 @@ init_keys(void)
|
||||
}
|
||||
/* 6b. [authdirserver only] add own key to approved directories. */
|
||||
crypto_pk_get_digest(get_server_identity_key(), digest);
|
||||
type = ((options->V1AuthoritativeDir ? V1_AUTHORITY : NO_AUTHORITY) |
|
||||
(options->V2AuthoritativeDir ? V2_AUTHORITY : NO_AUTHORITY) |
|
||||
(options->V3AuthoritativeDir ? V3_AUTHORITY : NO_AUTHORITY) |
|
||||
(options->BridgeAuthoritativeDir ? BRIDGE_AUTHORITY : NO_AUTHORITY) |
|
||||
(options->HSAuthoritativeDir ? HIDSERV_AUTHORITY : NO_AUTHORITY));
|
||||
type = ((options->V1AuthoritativeDir ? V1_DIRINFO : NO_DIRINFO) |
|
||||
(options->V2AuthoritativeDir ? V2_DIRINFO : NO_DIRINFO) |
|
||||
(options->V3AuthoritativeDir ? V3_DIRINFO : NO_DIRINFO) |
|
||||
(options->BridgeAuthoritativeDir ? BRIDGE_DIRINFO : NO_DIRINFO) |
|
||||
(options->HSAuthoritativeDir ? HIDSERV_DIRINFO : NO_DIRINFO));
|
||||
|
||||
ds = router_get_trusteddirserver_by_digest(digest);
|
||||
if (!ds) {
|
||||
@ -723,7 +723,7 @@ init_keys(void)
|
||||
type, ds->type);
|
||||
ds->type = type;
|
||||
}
|
||||
if (v3_digest_set && (ds->type & V3_AUTHORITY) &&
|
||||
if (v3_digest_set && (ds->type & V3_DIRINFO) &&
|
||||
memcmp(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) {
|
||||
log_warn(LD_DIR, "V3 identity key does not match identity declared in "
|
||||
"DirServer line. Adjusting.");
|
||||
@ -910,7 +910,7 @@ router_orport_found_reachable(void)
|
||||
if (!can_reach_or_port && me) {
|
||||
log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
|
||||
"the outside. Excellent.%s",
|
||||
get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
|
||||
get_options()->_PublishServerDescriptor != NO_DIRINFO ?
|
||||
" Publishing server descriptor." : "");
|
||||
can_reach_or_port = 1;
|
||||
mark_my_descriptor_dirty();
|
||||
@ -1135,7 +1135,7 @@ decide_if_publishable_server(void)
|
||||
|
||||
if (options->ClientOnly)
|
||||
return 0;
|
||||
if (options->_PublishServerDescriptor == NO_AUTHORITY)
|
||||
if (options->_PublishServerDescriptor == NO_DIRINFO)
|
||||
return 0;
|
||||
if (!server_mode(options))
|
||||
return 0;
|
||||
@ -1203,7 +1203,7 @@ router_upload_dir_desc_to_dirservers(int force)
|
||||
return;
|
||||
}
|
||||
ei = router_get_my_extrainfo();
|
||||
if (auth == NO_AUTHORITY)
|
||||
if (auth == NO_DIRINFO)
|
||||
return;
|
||||
if (!force && !desc_needs_upload)
|
||||
return;
|
||||
@ -1220,7 +1220,7 @@ router_upload_dir_desc_to_dirservers(int force)
|
||||
msg[desc_len+extra_len] = 0;
|
||||
|
||||
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_DIR,
|
||||
(auth & BRIDGE_AUTHORITY) ?
|
||||
(auth & BRIDGE_DIRINFO) ?
|
||||
ROUTER_PURPOSE_BRIDGE :
|
||||
ROUTER_PURPOSE_GENERAL,
|
||||
auth, msg, desc_len, extra_len);
|
||||
|
@ -120,7 +120,7 @@ get_n_authorities(dirinfo_type_t type)
|
||||
return n;
|
||||
}
|
||||
|
||||
#define get_n_v2_authorities() get_n_authorities(V2_AUTHORITY)
|
||||
#define get_n_v2_authorities() get_n_authorities(V2_DIRINFO)
|
||||
|
||||
/** Helper: Return the cert_list_t for an authority whose authority ID is
|
||||
* <b>id_digest</b>, allocating a new list if necessary. */
|
||||
@ -518,7 +518,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
|
||||
}
|
||||
SMARTLIST_FOREACH_BEGIN(trusted_dir_servers, trusted_dir_server_t *, ds) {
|
||||
int found = 0;
|
||||
if (!(ds->type & V3_AUTHORITY))
|
||||
if (!(ds->type & V3_DIRINFO))
|
||||
continue;
|
||||
if (smartlist_digest_isin(missing_digests, ds->v3_identity_digest))
|
||||
continue;
|
||||
@ -976,7 +976,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out,
|
||||
/* XXXX This is a bit of a kludge */
|
||||
if (rs->is_v2_dir) {
|
||||
sl_last_total_weighted_bw = 0;
|
||||
router_pick_directory_server(V2_AUTHORITY, pds_flags);
|
||||
router_pick_directory_server(V2_DIRINFO, pds_flags);
|
||||
if (sl_last_total_weighted_bw != 0) {
|
||||
*v2_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) /
|
||||
U64_TO_DBL(sl_last_total_weighted_bw);
|
||||
@ -985,7 +985,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out,
|
||||
|
||||
if (rs->version_supports_v3_dir) {
|
||||
sl_last_total_weighted_bw = 0;
|
||||
router_pick_directory_server(V3_AUTHORITY, pds_flags);
|
||||
router_pick_directory_server(V3_DIRINFO, pds_flags);
|
||||
if (sl_last_total_weighted_bw != 0) {
|
||||
*v3_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) /
|
||||
U64_TO_DBL(sl_last_total_weighted_bw);
|
||||
@ -1026,7 +1026,7 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest)
|
||||
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds,
|
||||
{
|
||||
if (!memcmp(ds->v3_identity_digest, digest, DIGEST_LEN) &&
|
||||
(ds->type & V3_AUTHORITY))
|
||||
(ds->type & V3_DIRINFO))
|
||||
return ds;
|
||||
});
|
||||
|
||||
@ -1115,16 +1115,16 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
|
||||
continue;
|
||||
if (requireother && router_digest_is_me(node->identity))
|
||||
continue;
|
||||
if (type & V3_AUTHORITY) {
|
||||
if (type & V3_DIRINFO) {
|
||||
if (!(status->version_supports_v3_dir ||
|
||||
router_digest_is_trusted_dir_type(node->identity,
|
||||
V3_AUTHORITY)))
|
||||
V3_DIRINFO)))
|
||||
continue;
|
||||
}
|
||||
is_trusted = router_digest_is_trusted_dir(node->identity);
|
||||
if ((type & V2_AUTHORITY) && !(node->rs->is_v2_dir || is_trusted))
|
||||
if ((type & V2_DIRINFO) && !(node->rs->is_v2_dir || is_trusted))
|
||||
continue;
|
||||
if ((type & EXTRAINFO_CACHE) &&
|
||||
if ((type & EXTRAINFO_DIRINFO) &&
|
||||
!router_supports_extrainfo(node->identity, 0))
|
||||
continue;
|
||||
if (try_excluding && options->ExcludeNodes &&
|
||||
@ -1227,7 +1227,7 @@ router_pick_trusteddirserver_impl(dirinfo_type_t type, int flags,
|
||||
if (!d->is_running) continue;
|
||||
if ((type & d->type) == 0)
|
||||
continue;
|
||||
if ((type & EXTRAINFO_CACHE) &&
|
||||
if ((type & EXTRAINFO_DIRINFO) &&
|
||||
!router_supports_extrainfo(d->digest, 1))
|
||||
continue;
|
||||
if (requireother && me && router_digest_is_me(d->digest))
|
||||
@ -4084,7 +4084,7 @@ add_trusted_dir_server(const char *nickname, const char *address,
|
||||
ent->is_running = 1;
|
||||
ent->type = type;
|
||||
memcpy(ent->digest, digest, DIGEST_LEN);
|
||||
if (v3_auth_digest && (type & V3_AUTHORITY))
|
||||
if (v3_auth_digest && (type & V3_DIRINFO))
|
||||
memcpy(ent->v3_identity_digest, v3_auth_digest, DIGEST_LEN);
|
||||
|
||||
dlen = 64 + strlen(hostname) + (nickname?strlen(nickname):0);
|
||||
@ -4163,7 +4163,7 @@ int
|
||||
any_trusted_dir_is_v1_authority(void)
|
||||
{
|
||||
if (trusted_dir_servers)
|
||||
return get_n_authorities(V1_AUTHORITY) > 0;
|
||||
return get_n_authorities(V1_DIRINFO) > 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ int router_digest_version_as_new_as(const char *digest, const char *cutoff);
|
||||
int router_digest_is_trusted_dir_type(const char *digest,
|
||||
dirinfo_type_t type);
|
||||
#define router_digest_is_trusted_dir(d) \
|
||||
router_digest_is_trusted_dir_type((d), NO_AUTHORITY)
|
||||
router_digest_is_trusted_dir_type((d), NO_DIRINFO)
|
||||
|
||||
int router_addr_is_trusted_dir(uint32_t addr);
|
||||
int hexdigest_to_digest(const char *hexdigest, char *digest);
|
||||
|
Loading…
Reference in New Issue
Block a user