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 / peer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-09-17  |  5.1 KB  |  213 lines

  1. /*
  2.  * Copyright (C) 2004-2006  Internet Systems Consortium, Inc. ("ISC")
  3.  * Copyright (C) 2000, 2001, 2003  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: peer.h,v 1.20.18.8 2006/02/28 03:10:48 marka Exp $ */
  19.  
  20. #ifndef DNS_PEER_H
  21. #define DNS_PEER_H 1
  22.  
  23. /*****
  24.  ***** Module Info
  25.  *****/
  26.  
  27. /*! \file
  28.  * \brief
  29.  * Data structures for peers (e.g. a 'server' config file statement)
  30.  */
  31.  
  32. /***
  33.  *** Imports
  34.  ***/
  35.  
  36. #include <isc/lang.h>
  37. #include <isc/magic.h>
  38. #include <isc/netaddr.h>
  39.  
  40. #include <dns/types.h>
  41.  
  42. #define DNS_PEERLIST_MAGIC    ISC_MAGIC('s','e','R','L')
  43. #define DNS_PEER_MAGIC        ISC_MAGIC('S','E','r','v')
  44.  
  45. #define DNS_PEERLIST_VALID(ptr)    ISC_MAGIC_VALID(ptr, DNS_PEERLIST_MAGIC)
  46. #define DNS_PEER_VALID(ptr)    ISC_MAGIC_VALID(ptr, DNS_PEER_MAGIC)
  47.  
  48. /***
  49.  *** Types
  50.  ***/
  51.  
  52. struct dns_peerlist {
  53.     unsigned int        magic;
  54.     isc_uint32_t        refs;
  55.  
  56.     isc_mem_t           *mem;
  57.  
  58.     ISC_LIST(dns_peer_t) elements;
  59. };
  60.  
  61. struct dns_peer {
  62.     unsigned int        magic;
  63.     isc_uint32_t        refs;
  64.  
  65.     isc_mem_t           *mem;
  66.  
  67.     isc_netaddr_t        address;
  68.     unsigned int        prefixlen;
  69.     isc_boolean_t        bogus;
  70.     dns_transfer_format_t    transfer_format;
  71.     isc_uint32_t        transfers;
  72.     isc_boolean_t        support_ixfr;
  73.     isc_boolean_t        provide_ixfr;
  74.     isc_boolean_t        request_ixfr;
  75.     isc_boolean_t        support_edns;
  76.     dns_name_t           *key;
  77.     isc_sockaddr_t           *transfer_source;
  78.     isc_sockaddr_t           *notify_source;  
  79.     isc_sockaddr_t           *query_source;  
  80.     isc_uint16_t        udpsize;        /* recieve size */
  81.     isc_uint16_t        maxudp;            /* transmit size */
  82.  
  83.     isc_uint32_t        bitflags;
  84.  
  85.     ISC_LINK(dns_peer_t)    next;
  86. };
  87.  
  88. /***
  89.  *** Functions
  90.  ***/
  91.  
  92. ISC_LANG_BEGINDECLS
  93.  
  94. isc_result_t
  95. dns_peerlist_new(isc_mem_t *mem, dns_peerlist_t **list);
  96.  
  97. void
  98. dns_peerlist_attach(dns_peerlist_t *source, dns_peerlist_t **target);
  99.  
  100. void
  101. dns_peerlist_detach(dns_peerlist_t **list);
  102.  
  103. /*
  104.  * After return caller still holds a reference to peer.
  105.  */
  106. void
  107. dns_peerlist_addpeer(dns_peerlist_t *peers, dns_peer_t *peer);
  108.  
  109. /*
  110.  * Ditto. */
  111. isc_result_t
  112. dns_peerlist_peerbyaddr(dns_peerlist_t *peers, isc_netaddr_t *addr,
  113.             dns_peer_t **retval);
  114.  
  115. /*
  116.  * What he said.
  117.  */
  118. isc_result_t
  119. dns_peerlist_currpeer(dns_peerlist_t *peers, dns_peer_t **retval);
  120.  
  121. isc_result_t
  122. dns_peer_new(isc_mem_t *mem, isc_netaddr_t *ipaddr, dns_peer_t **peer);
  123.  
  124. isc_result_t
  125. dns_peer_newprefix(isc_mem_t *mem, isc_netaddr_t *ipaddr,
  126.            unsigned int prefixlen, dns_peer_t **peer);
  127.  
  128. void
  129. dns_peer_attach(dns_peer_t *source, dns_peer_t **target);
  130.  
  131. void
  132. dns_peer_detach(dns_peer_t **list);
  133.  
  134. isc_result_t
  135. dns_peer_setbogus(dns_peer_t *peer, isc_boolean_t newval);
  136.  
  137. isc_result_t
  138. dns_peer_getbogus(dns_peer_t *peer, isc_boolean_t *retval);
  139.  
  140. isc_result_t
  141. dns_peer_setrequestixfr(dns_peer_t *peer, isc_boolean_t newval);
  142.  
  143. isc_result_t
  144. dns_peer_getrequestixfr(dns_peer_t *peer, isc_boolean_t *retval);
  145.  
  146. isc_result_t
  147. dns_peer_setprovideixfr(dns_peer_t *peer, isc_boolean_t newval);
  148.  
  149. isc_result_t
  150. dns_peer_getprovideixfr(dns_peer_t *peer, isc_boolean_t *retval);
  151.  
  152. isc_result_t
  153. dns_peer_setsupportedns(dns_peer_t *peer, isc_boolean_t newval);
  154.  
  155. isc_result_t
  156. dns_peer_getsupportedns(dns_peer_t *peer, isc_boolean_t *retval);
  157.  
  158. isc_result_t
  159. dns_peer_settransfers(dns_peer_t *peer, isc_uint32_t newval);
  160.  
  161. isc_result_t
  162. dns_peer_gettransfers(dns_peer_t *peer, isc_uint32_t *retval);
  163.  
  164. isc_result_t
  165. dns_peer_settransferformat(dns_peer_t *peer, dns_transfer_format_t newval);
  166.  
  167. isc_result_t
  168. dns_peer_gettransferformat(dns_peer_t *peer, dns_transfer_format_t *retval);
  169.  
  170. isc_result_t
  171. dns_peer_setkeybycharp(dns_peer_t *peer, const char *keyval);
  172.  
  173. isc_result_t
  174. dns_peer_getkey(dns_peer_t *peer, dns_name_t **retval);
  175.  
  176. isc_result_t
  177. dns_peer_setkey(dns_peer_t *peer, dns_name_t **keyval);
  178.  
  179. isc_result_t
  180. dns_peer_settransfersource(dns_peer_t *peer,
  181.                const isc_sockaddr_t *transfer_source);
  182.  
  183. isc_result_t
  184. dns_peer_gettransfersource(dns_peer_t *peer, isc_sockaddr_t *transfer_source);
  185.  
  186. isc_result_t
  187. dns_peer_setudpsize(dns_peer_t *peer, isc_uint16_t udpsize);
  188.  
  189. isc_result_t
  190. dns_peer_getudpsize(dns_peer_t *peer, isc_uint16_t *udpsize);
  191.  
  192. isc_result_t
  193. dns_peer_setmaxudp(dns_peer_t *peer, isc_uint16_t maxudp);
  194.  
  195. isc_result_t
  196. dns_peer_getmaxudp(dns_peer_t *peer, isc_uint16_t *maxudp);
  197.  
  198. isc_result_t
  199. dns_peer_setnotifysource(dns_peer_t *peer, const isc_sockaddr_t *notify_source);
  200.  
  201. isc_result_t
  202. dns_peer_getnotifysource(dns_peer_t *peer, isc_sockaddr_t *notify_source);
  203.  
  204. isc_result_t
  205. dns_peer_setquerysource(dns_peer_t *peer, const isc_sockaddr_t *query_source);
  206.  
  207. isc_result_t
  208. dns_peer_getquerysource(dns_peer_t *peer, isc_sockaddr_t *query_source);
  209.  
  210. ISC_LANG_ENDDECLS
  211.  
  212. #endif /* DNS_PEER_H */
  213.