Import bind-9.3.4
[dragonfly.git] / contrib / bind-9.3 / bin / named / include / named / lwresd.h
blob2aa1d55ccef7056f80e9ddf16f98303f87746295
1 /*
2 * Copyright (C) 2004, 2006 Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 2000, 2001 Internet Software Consortium.
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.
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.
18 /* $Id: lwresd.h,v 1.12.208.3 2006/03/02 00:37:20 marka Exp $ */
20 #ifndef NAMED_LWRESD_H
21 #define NAMED_LWRESD_H 1
23 #include <isc/types.h>
24 #include <isc/sockaddr.h>
26 #include <isccfg/cfg.h>
28 #include <dns/types.h>
30 struct ns_lwresd {
31 unsigned int magic;
33 isc_mutex_t lock;
34 dns_view_t *view;
35 ns_lwsearchlist_t *search;
36 unsigned int ndots;
37 isc_mem_t *mctx;
38 isc_boolean_t shutting_down;
39 unsigned int refs;
42 struct ns_lwreslistener {
43 unsigned int magic;
45 isc_mutex_t lock;
46 isc_mem_t *mctx;
47 isc_sockaddr_t address;
48 ns_lwresd_t *manager;
49 isc_socket_t *sock;
50 unsigned int refs;
51 ISC_LIST(ns_lwdclientmgr_t) cmgrs;
52 ISC_LINK(ns_lwreslistener_t) link;
56 * Configure lwresd.
58 isc_result_t
59 ns_lwresd_configure(isc_mem_t *mctx, const cfg_obj_t *config);
61 isc_result_t
62 ns_lwresd_parseeresolvconf(isc_mem_t *mctx, cfg_parser_t *pctx,
63 cfg_obj_t **configp);
66 * Trigger shutdown.
68 void
69 ns_lwresd_shutdown(void);
72 * Manager functions
74 isc_result_t
75 ns_lwdmanager_create(isc_mem_t *mctx, const cfg_obj_t *lwres,
76 ns_lwresd_t **lwresdp);
78 void
79 ns_lwdmanager_attach(ns_lwresd_t *source, ns_lwresd_t **targetp);
81 void
82 ns_lwdmanager_detach(ns_lwresd_t **lwresdp);
85 * Listener functions
87 void
88 ns_lwreslistener_attach(ns_lwreslistener_t *source,
89 ns_lwreslistener_t **targetp);
91 void
92 ns_lwreslistener_detach(ns_lwreslistener_t **listenerp);
94 void
95 ns_lwreslistener_unlinkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
97 void
98 ns_lwreslistener_linkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
104 * INTERNAL FUNCTIONS.
106 void *
107 ns__lwresd_memalloc(void *arg, size_t size);
109 void
110 ns__lwresd_memfree(void *arg, void *mem, size_t size);
112 #endif /* NAMED_LWRESD_H */