Go to the documentation of this file.
78 if (ent->is_authority) {
81 } SMARTLIST_FOREACH_END(ent);
112 router_get_fallback_dir_servers_mutable(
void)
121 router_get_trusted_dir_servers(
void)
127 router_get_fallback_dir_servers(
void)
129 return router_get_fallback_dir_servers_mutable();
231 } SMARTLIST_FOREACH_END(dir);
248 return (!type) || ((type & ent->type) != 0);
268 if (type != NO_DIRINFO && (type & ent->type) == 0) {
272 if ((family == AF_INET &&
tor_addr_eq(addr, &ent->ipv4_addr)) ||
273 (family == AF_INET6 &&
tor_addr_eq(addr, &ent->ipv6_addr))) {
276 } SMARTLIST_FOREACH_END(ent);
287 const char *nickname,
289 const char *hostname,
290 uint16_t ipv4_dirport, uint16_t ipv4_orport,
292 const char *digest,
const char *v3_auth_digest,
297 char *hostname_ = NULL;
311 hostname_ = tor_strdup(hostname);
314 ent->nickname = nickname ? tor_strdup(nickname) : NULL;
322 ent->weight = weight;
323 if (addrport_ipv6 && tor_addr_port_is_valid_ap(addrport_ipv6, 0)) {
325 log_warn(
LD_BUG,
"Hey, I got a non-ipv6 addr as addrport_ipv6.");
340 tor_asprintf(&ent->description,
"directory server \"%s\" at %s:%" PRIu16,
341 nickname, hostname_, ipv4_dirport);
343 tor_asprintf(&ent->description,
"directory server at %s:%" PRIu16,
344 hostname_, ipv4_dirport);
367 uint16_t ipv4_dirport, uint16_t ipv4_orport,
369 const char *digest,
const char *v3_auth_digest,
380 "Couldn't find a suitable address when adding ourself as a "
381 "trusted directory server.");
392 "Unable to lookup address for directory server at '%s'",
396 hostname = tor_strdup(address);
400 ipv4_dirport, ipv4_orport,
403 v3_auth_digest, type, weight);
413 uint16_t ipv4_dirport, uint16_t ipv4_orport,
415 const char *id_digest,
double weight)
417 return dir_server_new(0, NULL, ipv4_addr, NULL, ipv4_dirport, ipv4_orport,
418 addrport_ipv6, id_digest, NULL, ALL_DIRINFO, weight);
437 #define dir_server_free(val) \
438 FREE_AND_NULL(dir_server_t, dir_server_free_, (val))
459 dir_server_free(ent));
473 dirlist_free_all(
void)
Trusted/fallback directory server structure.
static sa_family_t tor_addr_family(const tor_addr_t *a)
#define MOCK_IMPL(rv, funcname, arglist)
Header file for router.c.
static smartlist_t * fallback_dir_servers
int router_digest_is_me(const char *digest)
char v3_identity_digest[DIGEST_LEN]
int tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr)
bool router_addr_is_trusted_dir_type(const tor_addr_t *addr, dirinfo_type_t type)
void smartlist_add(smartlist_t *sl, void *element)
int router_digest_is_fallback_dir(const char *digest)
char nickname[MAX_NICKNAME_LEN+1]
bool find_my_address(const or_options_t *options, int family, int warn_severity, tor_addr_t *addr_out, resolved_addr_method_t *method_out, char **hostname_out)
Attempt to find our IP address that can be used as our external reachable address.
smartlist_t * smartlist_new(void)
void tor_addr_make_unspec(tor_addr_t *a)
dir_server_t * trusted_dir_server_new(const char *nickname, const char *address, uint16_t ipv4_dirport, uint16_t ipv4_orport, const tor_addr_port_t *ipv6_addrport, const char *digest, const char *v3_auth_digest, dirinfo_type_t type, double weight)
#define SMARTLIST_FOREACH(sl, type, var, cmd)
dir_server_t * router_get_trusteddirserver_by_digest(const char *digest)
Header file for networkstatus.c.
int tor_memeq(const void *a, const void *b, size_t sz)
void dirlist_add_trusted_dir_addresses(void)
Header file for dirlist.c.
int get_n_authorities(dirinfo_type_t type)
void nodelist_add_addr_to_address_set(const tor_addr_t *addr)
static void dir_server_free_(dir_server_t *ds)
node_t * node_get_mutable_by_id(const char *identity_digest)
unsigned int is_authority
Header file for directory.c.
static smartlist_t * trusted_dir_servers
int router_digest_is_trusted_dir_type(const char *digest, dirinfo_type_t type)
Header file for directory authority mode.
Header file for nodelist.c.
Header file for routerlist.c.
routerstatus_t fake_status
Header file for routerset.c.
smartlist_t * router_get_trusted_dir_servers_mutable(void)
char * tor_addr_to_str_dup(const tor_addr_t *addr)
dir_server_t * fallback_dir_server_new(const tor_addr_t *ipv4_addr, uint16_t ipv4_dirport, uint16_t ipv4_orport, const tor_addr_port_t *addrport_ipv6, const char *id_digest, double weight)
Header file for control_events.c.
const or_options_t * get_options(void)
static dir_server_t * dir_server_new(int is_authority, const char *nickname, const tor_addr_t *ipv4_addr, const char *hostname, uint16_t ipv4_dirport, uint16_t ipv4_orport, const tor_addr_port_t *addrport_ipv6, const char *digest, const char *v3_auth_digest, dirinfo_type_t type, double weight)
void smartlist_clear(smartlist_t *sl)
Header file for resolve_addr.c.
dir_server_t * trusteddirserver_get_by_v3_auth_digest(const char *digest)
dir_server_t * router_get_fallback_dirserver_by_digest(const char *digest)
void router_reset_status_download_failures(void)
int tor_addr_is_null(const tor_addr_t *addr)
void clear_dir_servers(void)
int tor_asprintf(char **strp, const char *fmt,...)
#define SMARTLIST_FOREACH_BEGIN(sl, type, var)
Node information structure.
static void add_trusted_dir_to_nodelist_addr_set(const dir_server_t *dir)
Header file for policies.c.
Header file for config.c.
routerstatus_t * router_get_mutable_consensus_status_by_id(const char *digest)
void mark_all_dirservers_up(smartlist_t *server_list)
int control_event_networkstatus_changed_single(const routerstatus_t *rs)
char identity_digest[DIGEST_LEN]
void router_dir_info_changed(void)
#define tor_addr_eq(a, b)
int authdir_mode(const or_options_t *options)
void dir_server_add(dir_server_t *ent)
void tor_addr_copy(tor_addr_t *dest, const tor_addr_t *src)
Master header file for Tor-specific functionality.