/contrib/bind9/bin/named/include/named/lwresd.h

https://bitbucket.org/freebsd/freebsd-head/ · C Header · 121 lines · 55 code · 26 blank · 40 comment · 0 complexity · f7b965244011bdb22f4f39f4d1c7bba0 MD5 · raw file

  1. /*
  2. * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
  3. * Copyright (C) 2000, 2001 Internet Software Consortium.
  4. *
  5. * Permission to use, copy, modify, and/or 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. /* $Id: lwresd.h,v 1.19 2007/06/19 23:46:59 tbox Exp $ */
  18. #ifndef NAMED_LWRESD_H
  19. #define NAMED_LWRESD_H 1
  20. /*! \file */
  21. #include <isc/types.h>
  22. #include <isc/sockaddr.h>
  23. #include <isccfg/cfg.h>
  24. #include <dns/types.h>
  25. struct ns_lwresd {
  26. unsigned int magic;
  27. isc_mutex_t lock;
  28. dns_view_t *view;
  29. ns_lwsearchlist_t *search;
  30. unsigned int ndots;
  31. isc_mem_t *mctx;
  32. isc_boolean_t shutting_down;
  33. unsigned int refs;
  34. };
  35. struct ns_lwreslistener {
  36. unsigned int magic;
  37. isc_mutex_t lock;
  38. isc_mem_t *mctx;
  39. isc_sockaddr_t address;
  40. ns_lwresd_t *manager;
  41. isc_socket_t *sock;
  42. unsigned int refs;
  43. ISC_LIST(ns_lwdclientmgr_t) cmgrs;
  44. ISC_LINK(ns_lwreslistener_t) link;
  45. };
  46. /*%
  47. * Configure lwresd.
  48. */
  49. isc_result_t
  50. ns_lwresd_configure(isc_mem_t *mctx, const cfg_obj_t *config);
  51. isc_result_t
  52. ns_lwresd_parseeresolvconf(isc_mem_t *mctx, cfg_parser_t *pctx,
  53. cfg_obj_t **configp);
  54. /*%
  55. * Trigger shutdown.
  56. */
  57. void
  58. ns_lwresd_shutdown(void);
  59. /*
  60. * Manager functions
  61. */
  62. /*% create manager */
  63. isc_result_t
  64. ns_lwdmanager_create(isc_mem_t *mctx, const cfg_obj_t *lwres,
  65. ns_lwresd_t **lwresdp);
  66. /*% attach to manager */
  67. void
  68. ns_lwdmanager_attach(ns_lwresd_t *source, ns_lwresd_t **targetp);
  69. /*% detach from manager */
  70. void
  71. ns_lwdmanager_detach(ns_lwresd_t **lwresdp);
  72. /*
  73. * Listener functions
  74. */
  75. /*% attach to listener */
  76. void
  77. ns_lwreslistener_attach(ns_lwreslistener_t *source,
  78. ns_lwreslistener_t **targetp);
  79. /*% detach from lister */
  80. void
  81. ns_lwreslistener_detach(ns_lwreslistener_t **listenerp);
  82. /*% link client manager */
  83. void
  84. ns_lwreslistener_unlinkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
  85. /*% unlink client manager */
  86. void
  87. ns_lwreslistener_linkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
  88. /*
  89. * INTERNAL FUNCTIONS.
  90. */
  91. void *
  92. ns__lwresd_memalloc(void *arg, size_t size);
  93. void
  94. ns__lwresd_memfree(void *arg, void *mem, size_t size);
  95. #endif /* NAMED_LWRESD_H */