forward.c File Reference

#include <config.h>
#include <isc/magic.h>
#include <isc/mem.h>
#include <isc/rwlock.h>
#include <isc/sockaddr.h>
#include <isc/util.h>
#include <dns/forward.h>
#include <dns/rbt.h>
#include <dns/result.h>
#include <dns/types.h>

Go to the source code of this file.

Data Structures

struct  dns_fwdtable

Defines

#define FWDTABLEMAGIC   ISC_MAGIC('F', 'w', 'd', 'T')
#define VALID_FWDTABLE(ft)   ISC_MAGIC_VALID(ft, FWDTABLEMAGIC)

Functions

static void auto_detach (void *, void *)
isc_result_t dns_fwdtable_create (isc_mem_t *mctx, dns_fwdtable_t **fwdtablep)
 Creates a new forwarding table.
isc_result_t dns_fwdtable_addfwd (dns_fwdtable_t *fwdtable, dns_name_t *name, dns_forwarderlist_t *fwdrs, dns_fwdpolicy_t fwdpolicy)
isc_result_t dns_fwdtable_add (dns_fwdtable_t *fwdtable, dns_name_t *name, isc_sockaddrlist_t *addrs, dns_fwdpolicy_t fwdpolicy)
 Adds an entry to the forwarding table. The entry associates a domain with a list of forwarders and a forwarding policy. The addrs/fwdrs list is copied if not empty, so the caller should free its copy.
isc_result_t dns_fwdtable_delete (dns_fwdtable_t *fwdtable, dns_name_t *name)
 Removes an entry for 'name' from the forwarding table. If an entry that exactly matches 'name' does not exist, ISC_R_NOTFOUND will be returned.
isc_result_t dns_fwdtable_find (dns_fwdtable_t *fwdtable, dns_name_t *name, dns_forwarders_t **forwardersp)
 Finds a domain in the forwarding table. The closest matching parent domain is returned.
isc_result_t dns_fwdtable_find2 (dns_fwdtable_t *fwdtable, dns_name_t *name, dns_name_t *foundname, dns_forwarders_t **forwardersp)
 Finds a domain in the forwarding table. The closest matching parent domain is returned.
void dns_fwdtable_destroy (dns_fwdtable_t **fwdtablep)
 Destroys a forwarding table.


Detailed Description

Definition in file forward.c.


Define Documentation

#define FWDTABLEMAGIC   ISC_MAGIC('F', 'w', 'd', 'T')

Definition at line 44 of file forward.c.

Referenced by dns_fwdtable_create().

#define VALID_FWDTABLE ( ft   )     ISC_MAGIC_VALID(ft, FWDTABLEMAGIC)

Definition at line 45 of file forward.c.

Referenced by dns_fwdtable_add(), dns_fwdtable_addfwd(), dns_fwdtable_delete(), dns_fwdtable_destroy(), and dns_fwdtable_find2().


Function Documentation

static void auto_detach ( void *  data,
void *  arg 
) [static]

Definition at line 253 of file forward.c.

References dns_forwarders::fwdrs, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_UNLINK, isc_mem_put, dns_fwdtable::mctx, and UNUSED.

Referenced by dns_fwdtable_create(), and dns_zt_create().

isc_result_t dns_fwdtable_create ( isc_mem_t mctx,
dns_fwdtable_t **  fwdtablep 
)

Creates a new forwarding table.

Requires:

Returns:

Definition at line 51 of file forward.c.

References auto_detach(), dns_rbt_create(), dns_rbt_destroy(), FWDTABLEMAGIC, isc_mem_attach(), isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_rwlock_init(), dns_fwdtable::magic, dns_fwdtable::mctx, REQUIRE, dns_fwdtable::rwlock, and dns_fwdtable::table.

Referenced by dns_view_create().

isc_result_t dns_fwdtable_addfwd ( dns_fwdtable_t fwdtable,
dns_name_t name,
dns_forwarderlist_t *  fwdrs,
dns_fwdpolicy_t  fwdpolicy 
)

Definition at line 87 of file forward.c.

References cleanup(), dns_rbt_addname(), dns_forwarders::fwdpolicy, dns_forwarders::fwdrs, ISC_LINK_INIT, ISC_LIST_APPEND, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_INIT, ISC_LIST_NEXT, ISC_LIST_UNLINK, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_rwlocktype_write, dns_fwdtable::mctx, REQUIRE, dns_fwdtable::rwlock, RWLOCK, RWUNLOCK, dns_fwdtable::table, and VALID_FWDTABLE.

Referenced by configure_forward().

isc_result_t dns_fwdtable_add ( dns_fwdtable_t fwdtable,
dns_name_t name,
isc_sockaddrlist_t *  addrs,
dns_fwdpolicy_t  policy 
)

Adds an entry to the forwarding table. The entry associates a domain with a list of forwarders and a forwarding policy. The addrs/fwdrs list is copied if not empty, so the caller should free its copy.

Requires:

Returns:

Definition at line 136 of file forward.c.

References dns_forwarder::addr, cleanup(), dns_rbt_addname(), dns_forwarder::dscp, dns_forwarders::fwdpolicy, dns_forwarders::fwdrs, ISC_LINK_INIT, ISC_LIST_APPEND, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_INIT, ISC_LIST_NEXT, ISC_LIST_UNLINK, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_rwlocktype_write, dns_fwdtable::mctx, REQUIRE, dns_fwdtable::rwlock, RWLOCK, RWUNLOCK, dns_fwdtable::table, and VALID_FWDTABLE.

Referenced by dns_client_setservers().

isc_result_t dns_fwdtable_delete ( dns_fwdtable_t fwdtable,
dns_name_t name 
)

Removes an entry for 'name' from the forwarding table. If an entry that exactly matches 'name' does not exist, ISC_R_NOTFOUND will be returned.

Requires:

Returns:

Definition at line 187 of file forward.c.

References DNS_R_PARTIALMATCH, dns_rbt_deletename(), ISC_FALSE, ISC_R_NOTFOUND, isc_rwlocktype_write, REQUIRE, dns_fwdtable::rwlock, RWLOCK, RWUNLOCK, dns_fwdtable::table, and VALID_FWDTABLE.

Referenced by dns_client_clearservers().

isc_result_t dns_fwdtable_find ( dns_fwdtable_t fwdtable,
dns_name_t name,
dns_forwarders_t **  forwardersp 
)

Finds a domain in the forwarding table. The closest matching parent domain is returned.

Requires:

Returns:

Definition at line 203 of file forward.c.

References dns_fwdtable_find2().

Referenced by configure_view().

isc_result_t dns_fwdtable_find2 ( dns_fwdtable_t fwdtable,
dns_name_t name,
dns_name_t foundname,
dns_forwarders_t **  forwardersp 
)

Finds a domain in the forwarding table. The closest matching parent domain is returned.

Requires:

Returns:

Definition at line 210 of file forward.c.

References DNS_R_PARTIALMATCH, dns_rbt_findname(), ISC_R_SUCCESS, isc_rwlocktype_read, REQUIRE, dns_fwdtable::rwlock, RWLOCK, RWUNLOCK, dns_fwdtable::table, and VALID_FWDTABLE.

Referenced by dns_fwdtable_find(), fctx_create(), and fctx_getaddresses().

void dns_fwdtable_destroy ( dns_fwdtable_t **  fwdtablep  ) 

Destroys a forwarding table.

Requires:

Ensures:

Definition at line 230 of file forward.c.

References dns_rbt_destroy(), isc_mem_detach(), isc_mem_put, isc_rwlock_destroy(), dns_fwdtable::magic, dns_fwdtable::mctx, mctx, REQUIRE, dns_fwdtable::rwlock, dns_fwdtable::table, and VALID_FWDTABLE.

Referenced by destroy(), and dns_view_create().


Generated on Tue Apr 28 17:41:08 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha