unbound: iterator/iter_donotq.c File Reference

unbound 0.1

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_donotq * | donotq_create (void)
| 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
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

## ◆ 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 fr_construct_from_config(), and iter_apply_cfg().

## ◆ donotq_delete()

void donotq_delete | ( | struct iter_donotq * | donotq | ) |

Delete donotqueryaddresses structure.

Parameters

  donotq | to delete.

References iter_donotq::region, and regional_destroy().

Referenced by donotq_create(), fr_construct_clear(), and iter_deinit().

## ◆ donotq_apply_cfg()

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 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 fr_construct_from_config(), and 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

  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 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

  donotq | structure for address storage.

Returns
  bytes in use.

References iter_donotq::region, and regional_get_mem().

Referenced by iter_get_mem().