bool tr_blocklistFileHasAddress (tr_blocklistFile * b, const tr_address * addr) { uint32_t needle; const struct tr_ipv4_range * range; assert (tr_address_is_valid (addr)); if (!b->isEnabled || addr->type == TR_AF_INET6) return false; blocklistEnsureLoaded (b); if (!b->rules || !b->ruleCount) return false; needle = ntohl (addr->addr.addr4.s_addr); range = bsearch (&needle, b->rules, b->ruleCount, sizeof (struct tr_ipv4_range), compareAddressToRange); return range != NULL; }
int tr_blocklistFileGetRuleCount (const tr_blocklistFile * b) { blocklistEnsureLoaded ((tr_blocklistFile*)b); return b->ruleCount; }
bool tr_blocklistFileHasAddress(tr_blocklistFile* b, tr_address const* addr) { TR_ASSERT(tr_address_is_valid(addr)); uint32_t needle; struct tr_ipv4_range const* range; if (!b->isEnabled || addr->type == TR_AF_INET6) { return false; } blocklistEnsureLoaded(b); if (b->rules == NULL || b->ruleCount == 0) { return false; } needle = ntohl(addr->addr.addr4.s_addr); range = bsearch(&needle, b->rules, b->ruleCount, sizeof(struct tr_ipv4_range), compareAddressToRange); return range != NULL; }
int _tr_blocklistGetRuleCount( const tr_blocklist * b ) { blocklistEnsureLoaded( (tr_blocklist*)b ); return b->ruleCount; }
int _tr_blocklistHasAddress( tr_blocklist * b, const tr_address * addr ) { uint32_t needle; const struct tr_ip_range * range; if( !b->isEnabled ) return 0; blocklistEnsureLoaded( b ); if( !b->rules ) return 0; needle = ntohl( addr->addr.addr4.s_addr ); range = bsearch( &needle, b->rules, b->ruleCount, sizeof( struct tr_ip_range ), compareAddressToRange ); return range != NULL; }