예제 #1
0
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;
}
예제 #2
0
int
tr_blocklistFileGetRuleCount (const tr_blocklistFile * b)
{
  blocklistEnsureLoaded ((tr_blocklistFile*)b);

  return b->ruleCount;
}
예제 #3
0
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;
}
예제 #4
0
int
_tr_blocklistGetRuleCount( const tr_blocklist * b )
{
    blocklistEnsureLoaded( (tr_blocklist*)b );

    return b->ruleCount;
}
예제 #5
0
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;
}