Turn get_first_advertised_v4_port_by_type() into get_first_advertised_port_by_type_af().

This commit is contained in:
Linus Nordberg 2011-11-24 17:49:31 +01:00 committed by Nick Mathewson
parent 1c2c3314a9
commit 5bee213d23
2 changed files with 13 additions and 8 deletions

View File

@ -5907,19 +5907,24 @@ get_configured_ports(void)
return configured_ports; return configured_ports;
} }
/** DOCDOC */ /** Return the first advertised port of type <b>listener_type</b> in
<b>address_family</b>. */
int int
get_first_advertised_v4_port_by_type(int listener_type) get_first_advertised_port_by_type_af(int listener_type, int address_family)
{ {
if (!configured_ports) if (!configured_ports)
return 0; return 0;
SMARTLIST_FOREACH_BEGIN(configured_ports, const port_cfg_t *, cfg) { SMARTLIST_FOREACH_BEGIN(configured_ports, const port_cfg_t *, cfg) {
if (cfg->type == listener_type && if (cfg->type == listener_type &&
!cfg->no_advertise && !cfg->no_advertise &&
(tor_addr_family(&cfg->addr) == AF_INET || (tor_addr_family(&cfg->addr) == address_family ||
(tor_addr_family(&cfg->addr) == AF_UNSPEC && !cfg->ipv6_only))) { tor_addr_family(&cfg->addr) == AF_UNSPEC)) {
if (tor_addr_family(&cfg->addr) != AF_UNSPEC ||
(address_family == AF_INET && !cfg->ipv6_only) ||
(address_family == AF_INET6 && !cfg->ipv4_only)) {
return cfg->port; return cfg->port;
} }
}
} SMARTLIST_FOREACH_END(cfg); } SMARTLIST_FOREACH_END(cfg);
return 0; return 0;
} }

View File

@ -65,11 +65,11 @@ int did_last_state_file_write_fail(void);
int or_state_save(time_t now); int or_state_save(time_t now);
const smartlist_t *get_configured_ports(void); const smartlist_t *get_configured_ports(void);
int get_first_advertised_v4_port_by_type(int listener_type); int get_first_advertised_port_by_type_af(int listener_type, int address_family);
#define get_primary_or_port() \ #define get_primary_or_port() \
(get_first_advertised_v4_port_by_type(CONN_TYPE_OR_LISTENER)) (get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER, AF_INET))
#define get_primary_dir_port() \ #define get_primary_dir_port() \
(get_first_advertised_v4_port_by_type(CONN_TYPE_DIR_LISTENER)) (get_first_advertised_port_by_type_af(CONN_TYPE_DIR_LISTENER, AF_INET))
int options_need_geoip_info(const or_options_t *options, int options_need_geoip_info(const or_options_t *options,
const char **reason_out); const char **reason_out);