iter_donotq.c File Reference

This file contains functions to assist the iterator module. More...

#include "config.h"
#include "iterator/iter_donotq.h"
#include "util/regional.h"
#include "util/log.h"
#include "util/config_file.h"
#include "util/net_help.h"

Functions

int donotq_cmp (const void *k1, const void *k2)
 compare two donotq entries
struct iter_donotqdonotq_create ()
 Create donotqueryaddresses structure.
void donotq_delete (struct iter_donotq *dq)
 Delete donotqueryaddresses structure.
static int donotq_insert (struct iter_donotq *dq, struct sockaddr_storage *addr, socklen_t addrlen, int net)
 insert new address into donotq structure
static int donotq_str_cfg (struct iter_donotq *dq, const char *str)
 apply donotq string
static int read_donotq (struct iter_donotq *dq, struct config_file *cfg)
 read donotq config
static void donotq_init_parents (struct iter_donotq *donotq)
 initialise parent pointers in the tree
int donotq_apply_cfg (struct iter_donotq *dq, struct config_file *cfg)
 Process donotqueryaddresses config.
int donotq_lookup (struct iter_donotq *donotq, struct sockaddr_storage *addr, socklen_t addrlen)
 See if an address is blocked.
size_t donotq_get_mem (struct iter_donotq *donotq)
 Get memory used by donotqueryaddresses structure.


Detailed Description

This file contains functions to assist the iterator module.

The donotqueryaddresses are stored and looked up. These addresses (like 127.0.0.1) must not be used to send queries to, and can be discarded immediately from the server selection.


Function Documentation

struct iter_donotq* donotq_create (  )  [read]

Create donotqueryaddresses structure.

Returns:
new structure or NULL on error.

References donotq_delete(), iter_donotq::region, and regional_create().

Referenced by iter_apply_cfg().

void donotq_delete ( struct iter_donotq donotq  ) 

Delete donotqueryaddresses structure.

Parameters:
donotq,: to delete.

References iter_donotq::region, regional_destroy(), and iter_donotq::tree.

Referenced by donotq_create(), and iter_deinit().

int donotq_apply_cfg ( struct iter_donotq donotq,
struct config_file cfg 
)

Process donotqueryaddresses config.

Parameters:
donotq,: where to store.
cfg,: config options.
Returns:
0 on error.

References config_file::do_ip6, donotq_cmp(), donotq_init_parents(), donotq_str_cfg(), config_file::donotquery_localhost, rbtree_create(), read_donotq(), and iter_donotq::tree.

Referenced by iter_apply_cfg().

int donotq_lookup ( struct iter_donotq donotq,
struct sockaddr_storage *  addr,
socklen_t  addrlen 
)

See if an address is blocked.

Parameters:
donotq,: structure for address storage.
addr,: address to check
addrlen,: length of addr.
Returns:
: true if the address must not be queried. false if unlisted.

References iter_donotq_addr::addr, addr_in_common(), addr_is_ip6(), iter_donotq_addr::addrlen, rbnode_t::key, iter_donotq_addr::net, iter_donotq_addr::node, iter_donotq_addr::parent, rbtree_find_less_equal(), and iter_donotq::tree.

Referenced by iter_filter_unsuitable().

size_t donotq_get_mem ( struct iter_donotq donotq  ) 

Get memory used by donotqueryaddresses structure.

Parameters:
donotq,: structure for address storage.
Returns:
bytes in use.

References iter_donotq::region, and regional_get_mem().

Referenced by iter_get_mem().


Generated on Sun Sep 21 16:23:29 2008 for unbound by  doxygen 1.5.6