home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / dns / dbtable.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-09-17  |  3.6 KB  |  166 lines

  1. /*
  2.  * Copyright (C) 2004, 2005  Internet Systems Consortium, Inc. ("ISC")
  3.  * Copyright (C) 1999-2001  Internet Software Consortium.
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software for any
  6.  * purpose with or without fee is hereby granted, provided that the above
  7.  * copyright notice and this permission notice appear in all copies.
  8.  *
  9.  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  10.  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  11.  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  12.  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  13.  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  14.  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15.  * PERFORMANCE OF THIS SOFTWARE.
  16.  */
  17.  
  18. /* $Id: dbtable.h,v 1.17.18.2 2005/04/29 00:16:11 marka Exp $ */
  19.  
  20. #ifndef DNS_DBTABLE_H
  21. #define DNS_DBTABLE_H 1
  22.  
  23. /*****
  24.  ***** Module Info
  25.  *****/
  26.  
  27. /*! \file
  28.  * \brief
  29.  * DNS DB Tables
  30.  *
  31.  * XXX TBS XXX
  32.  *
  33.  * MP:
  34.  *\li    The module ensures appropriate synchronization of data structures it
  35.  *    creates and manipulates.
  36.  *
  37.  * Reliability:
  38.  *\li    No anticipated impact.
  39.  *
  40.  * Resources:
  41.  *\li    None.
  42.  *
  43.  * Security:
  44.  *\li    No anticipated impact.
  45.  *
  46.  * Standards:
  47.  *\li    None.
  48.  */
  49.  
  50. #include <isc/lang.h>
  51.  
  52. #include <dns/types.h>
  53.  
  54. #define DNS_DBTABLEFIND_NOEXACT        0x01
  55.  
  56. ISC_LANG_BEGINDECLS
  57.  
  58. isc_result_t
  59. dns_dbtable_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
  60.            dns_dbtable_t **dbtablep);
  61. /*%<
  62.  * Make a new dbtable of class 'rdclass'
  63.  *
  64.  * Requires:
  65.  *\li    mctx != NULL
  66.  * \li    dbtablep != NULL && *dptablep == NULL
  67.  *\li    'rdclass' is a valid class
  68.  *
  69.  * Returns:
  70.  *\li    #ISC_R_SUCCESS
  71.  *\li    #ISC_R_NOMEMORY
  72.  *\li    #ISC_R_UNEXPECTED
  73.  */
  74.  
  75. void
  76. dns_dbtable_attach(dns_dbtable_t *source, dns_dbtable_t **targetp);
  77. /*%<
  78.  * Attach '*targetp' to 'source'.
  79.  *
  80.  * Requires:
  81.  *
  82.  *\li    'source' is a valid dbtable.
  83.  *
  84.  *\li    'targetp' points to a NULL dns_dbtable_t *.
  85.  *
  86.  * Ensures:
  87.  *
  88.  *\li    *targetp is attached to source.
  89.  */
  90.  
  91. void
  92. dns_dbtable_detach(dns_dbtable_t **dbtablep);
  93. /*%<
  94.  * Detach *dbtablep from its dbtable.
  95.  *
  96.  * Requires:
  97.  *
  98.  *\li    '*dbtablep' points to a valid dbtable.
  99.  *
  100.  * Ensures:
  101.  *
  102.  *\li    *dbtablep is NULL.
  103.  *
  104.  *\li    If '*dbtablep' is the last reference to the dbtable,
  105.  *        all resources used by the dbtable will be freed
  106.  */
  107.  
  108. isc_result_t
  109. dns_dbtable_add(dns_dbtable_t *dbtable, dns_db_t *db);
  110. /*%<
  111.  * Add 'db' to 'dbtable'.
  112.  *
  113.  * Requires:
  114.  *\li    'dbtable' is a valid dbtable.
  115.  *
  116.  *\li    'db' is a valid database with the same class as 'dbtable'
  117.  */
  118.  
  119. void
  120. dns_dbtable_remove(dns_dbtable_t *dbtable, dns_db_t *db);
  121. /*%<
  122.  * Remove 'db' from 'dbtable'.
  123.  *
  124.  * Requires:
  125.  *\li    'db' was previously added to 'dbtable'.
  126.  */
  127.  
  128. void
  129. dns_dbtable_adddefault(dns_dbtable_t *dbtable, dns_db_t *db);
  130. /*%<
  131.  * Use 'db' as the result of a dns_dbtable_find() if no better match is
  132.  * available.
  133.  */
  134.  
  135. void
  136. dns_dbtable_getdefault(dns_dbtable_t *dbtable, dns_db_t **db);
  137. /*%<
  138.  * Get the 'db' used as the result of a dns_dbtable_find()
  139.  * if no better match is available.
  140.  */
  141.  
  142. void
  143. dns_dbtable_removedefault(dns_dbtable_t *dbtable);
  144. /*%<
  145.  * Remove the default db from 'dbtable'.
  146.  */
  147.  
  148. isc_result_t
  149. dns_dbtable_find(dns_dbtable_t *dbtable, dns_name_t *name,
  150.          unsigned int options, dns_db_t **dbp);
  151. /*%<
  152.  * Find the deepest match to 'name' in the dbtable, and return it
  153.  *
  154.  * Notes:
  155.  *\li    If the DNS_DBTABLEFIND_NOEXACT option is set, the best partial
  156.  *    match (if any) to 'name' will be returned.
  157.  *
  158.  * Returns:  
  159.  * \li #ISC_R_SUCCESS        on success
  160.  *\li         something else:        no default and match
  161.  */
  162.  
  163. ISC_LANG_ENDDECLS
  164.  
  165. #endif /* DNS_DBTABLE_H */
  166.