mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Make routerset_contains_router() support IPv6
This commit is contained in:
parent
3cb77a9cca
commit
0a3e6d81bb
@ -223,11 +223,11 @@ routerset_len(const routerset_t *set)
|
|||||||
*
|
*
|
||||||
* (If country is -1, then we take the country
|
* (If country is -1, then we take the country
|
||||||
* from addr.) */
|
* from addr.) */
|
||||||
STATIC int
|
static int
|
||||||
routerset_contains(const routerset_t *set, const tor_addr_t *addr,
|
routerset_contains2(const routerset_t *set, const tor_addr_t *addr,
|
||||||
uint16_t orport,
|
uint16_t orport, const tor_addr_t *addr2,
|
||||||
const char *nickname, const char *id_digest,
|
uint16_t orport2, const char *nickname,
|
||||||
country_t country)
|
const char *id_digest, country_t country)
|
||||||
{
|
{
|
||||||
if (!set || !set->list)
|
if (!set || !set->list)
|
||||||
return 0;
|
return 0;
|
||||||
@ -238,6 +238,9 @@ routerset_contains(const routerset_t *set, const tor_addr_t *addr,
|
|||||||
if (addr && compare_tor_addr_to_addr_policy(addr, orport, set->policies)
|
if (addr && compare_tor_addr_to_addr_policy(addr, orport, set->policies)
|
||||||
== ADDR_POLICY_REJECTED)
|
== ADDR_POLICY_REJECTED)
|
||||||
return 3;
|
return 3;
|
||||||
|
if (addr2 && compare_tor_addr_to_addr_policy(addr2, orport2, set->policies)
|
||||||
|
== ADDR_POLICY_REJECTED)
|
||||||
|
return 3;
|
||||||
if (set->countries) {
|
if (set->countries) {
|
||||||
if (country < 0 && addr)
|
if (country < 0 && addr)
|
||||||
country = geoip_get_country_by_addr(addr);
|
country = geoip_get_country_by_addr(addr);
|
||||||
@ -249,6 +252,17 @@ routerset_contains(const routerset_t *set, const tor_addr_t *addr,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Helper. Like routerset_contains2() but for a single IP/port combo.
|
||||||
|
*/
|
||||||
|
STATIC int
|
||||||
|
routerset_contains(const routerset_t *set, const tor_addr_t *addr,
|
||||||
|
uint16_t orport, const char *nickname,
|
||||||
|
const char *id_digest, country_t country)
|
||||||
|
{
|
||||||
|
return routerset_contains2(set, addr, orport, NULL, 0,
|
||||||
|
nickname, id_digest, country);
|
||||||
|
}
|
||||||
|
|
||||||
/** If *<b>setp</b> includes at least one country code, or if
|
/** If *<b>setp</b> includes at least one country code, or if
|
||||||
* <b>only_some_cc_set</b> is 0, add the ?? and A1 country codes to
|
* <b>only_some_cc_set</b> is 0, add the ?? and A1 country codes to
|
||||||
* *<b>setp</b>, creating it as needed. Return true iff *<b>setp</b> changed.
|
* *<b>setp</b>, creating it as needed. Return true iff *<b>setp</b> changed.
|
||||||
@ -306,14 +320,11 @@ int
|
|||||||
routerset_contains_router(const routerset_t *set, const routerinfo_t *ri,
|
routerset_contains_router(const routerset_t *set, const routerinfo_t *ri,
|
||||||
country_t country)
|
country_t country)
|
||||||
{
|
{
|
||||||
tor_addr_t addr;
|
tor_addr_t addr_v4;
|
||||||
tor_addr_from_ipv4h(&addr, ri->addr);
|
tor_addr_from_ipv4h(&addr_v4, ri->addr);
|
||||||
return routerset_contains(set,
|
return routerset_contains2(set, &addr_v4, ri->or_port, &ri->ipv6_addr,
|
||||||
&addr,
|
ri->ipv6_orport, ri->nickname,
|
||||||
ri->or_port,
|
ri->cache_info.identity_digest, country);
|
||||||
ri->nickname,
|
|
||||||
ri->cache_info.identity_digest,
|
|
||||||
country);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return true iff <b>rs</b> is in <b>set</b>. If country is <b>-1</b>, we
|
/** Return true iff <b>rs</b> is in <b>set</b>. If country is <b>-1</b>, we
|
||||||
|
Loading…
Reference in New Issue
Block a user