Functions
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

struct iter_donotqdonotq_create (void)
 Create donotqueryaddresses structure. More...
 
void donotq_delete (struct iter_donotq *dq)
 Delete donotqueryaddresses structure. More...
 
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
 
int donotq_apply_cfg (struct iter_donotq *dq, struct config_file *cfg)
 Process donotqueryaddresses config. More...
 
int donotq_lookup (struct iter_donotq *donotq, struct sockaddr_storage *addr, socklen_t addrlen)
 See if an address is blocked. More...
 
size_t donotq_get_mem (struct iter_donotq *donotq)
 Get memory used by donotqueryaddresses structure. More...
 

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

◆ donotq_create()

struct iter_donotq* donotq_create ( void  )

Create donotqueryaddresses structure.

Returns
new structure or NULL on error.

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

Referenced by iter_apply_cfg().

◆ donotq_delete()

void donotq_delete ( struct iter_donotq donotq)

Delete donotqueryaddresses structure.

Parameters
donotqto delete.

References iter_donotq::region, and regional_destroy().

Referenced by donotq_create(), and iter_deinit().

◆ donotq_apply_cfg()

int donotq_apply_cfg ( struct iter_donotq donotq,
struct config_file cfg 
)

Process donotqueryaddresses config.

Parameters
donotqwhere to store.
cfgconfig options.
Returns
0 on error.

References addr_tree_init(), addr_tree_init_parents(), config_file::do_ip6, donotq_str_cfg(), config_file::donotquery_localhost, read_donotq(), iter_donotq::region, regional_free_all(), and iter_donotq::tree.

Referenced by iter_apply_cfg().

◆ donotq_lookup()

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

See if an address is blocked.

Parameters
donotqstructure for address storage.
addraddress to check
addrlenlength of addr.
Returns
: true if the address must not be queried. false if unlisted.

References addr_tree_lookup(), and iter_donotq::tree.

Referenced by iter_filter_unsuitable().

◆ donotq_get_mem()

size_t donotq_get_mem ( struct iter_donotq donotq)

Get memory used by donotqueryaddresses structure.

Parameters
donotqstructure for address storage.
Returns
bytes in use.

References iter_donotq::region, and regional_get_mem().

Referenced by iter_get_mem().