lwresd.h revision 165071
1135446Strhodes/*
2165071Sdougb * Copyright (C) 2004, 2006  Internet Systems Consortium, Inc. ("ISC")
3135446Strhodes * Copyright (C) 2000, 2001  Internet Software Consortium.
4135446Strhodes *
5135446Strhodes * Permission to use, copy, modify, and distribute this software for any
6135446Strhodes * purpose with or without fee is hereby granted, provided that the above
7135446Strhodes * copyright notice and this permission notice appear in all copies.
8135446Strhodes *
9135446Strhodes * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10135446Strhodes * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11135446Strhodes * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12135446Strhodes * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13135446Strhodes * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14135446Strhodes * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15135446Strhodes * PERFORMANCE OF THIS SOFTWARE.
16135446Strhodes */
17135446Strhodes
18165071Sdougb/* $Id: lwresd.h,v 1.12.208.3 2006/03/02 00:37:20 marka Exp $ */
19135446Strhodes
20135446Strhodes#ifndef NAMED_LWRESD_H
21135446Strhodes#define NAMED_LWRESD_H 1
22135446Strhodes
23135446Strhodes#include <isc/types.h>
24135446Strhodes#include <isc/sockaddr.h>
25135446Strhodes
26135446Strhodes#include <isccfg/cfg.h>
27135446Strhodes
28135446Strhodes#include <dns/types.h>
29135446Strhodes
30135446Strhodesstruct ns_lwresd {
31135446Strhodes	unsigned int magic;
32135446Strhodes
33135446Strhodes	isc_mutex_t lock;
34135446Strhodes	dns_view_t *view;
35135446Strhodes	ns_lwsearchlist_t *search;
36135446Strhodes	unsigned int ndots;
37135446Strhodes	isc_mem_t *mctx;
38135446Strhodes	isc_boolean_t shutting_down;
39135446Strhodes	unsigned int refs;
40135446Strhodes};
41135446Strhodes
42135446Strhodesstruct ns_lwreslistener {
43135446Strhodes	unsigned int magic;
44135446Strhodes
45135446Strhodes	isc_mutex_t lock;
46135446Strhodes	isc_mem_t *mctx;
47135446Strhodes	isc_sockaddr_t address;
48135446Strhodes	ns_lwresd_t *manager;
49135446Strhodes	isc_socket_t *sock;
50135446Strhodes	unsigned int refs;
51135446Strhodes	ISC_LIST(ns_lwdclientmgr_t) cmgrs;
52135446Strhodes	ISC_LINK(ns_lwreslistener_t) link;
53135446Strhodes};
54135446Strhodes
55135446Strhodes/*
56135446Strhodes * Configure lwresd.
57135446Strhodes */
58135446Strhodesisc_result_t
59165071Sdougbns_lwresd_configure(isc_mem_t *mctx, const cfg_obj_t *config);
60135446Strhodes
61135446Strhodesisc_result_t
62135446Strhodesns_lwresd_parseeresolvconf(isc_mem_t *mctx, cfg_parser_t *pctx,
63135446Strhodes			   cfg_obj_t **configp);
64135446Strhodes
65135446Strhodes/*
66135446Strhodes * Trigger shutdown.
67135446Strhodes */
68135446Strhodesvoid
69135446Strhodesns_lwresd_shutdown(void);
70135446Strhodes
71135446Strhodes/*
72135446Strhodes * Manager functions
73135446Strhodes */
74135446Strhodesisc_result_t
75165071Sdougbns_lwdmanager_create(isc_mem_t *mctx, const cfg_obj_t *lwres,
76165071Sdougb		      ns_lwresd_t **lwresdp);
77135446Strhodes
78135446Strhodesvoid
79135446Strhodesns_lwdmanager_attach(ns_lwresd_t *source, ns_lwresd_t **targetp);
80135446Strhodes
81135446Strhodesvoid
82135446Strhodesns_lwdmanager_detach(ns_lwresd_t **lwresdp);
83135446Strhodes
84135446Strhodes/*
85135446Strhodes * Listener functions
86135446Strhodes */
87135446Strhodesvoid
88135446Strhodesns_lwreslistener_attach(ns_lwreslistener_t *source,
89135446Strhodes			ns_lwreslistener_t **targetp);
90135446Strhodes
91135446Strhodesvoid
92135446Strhodesns_lwreslistener_detach(ns_lwreslistener_t **listenerp);
93135446Strhodes
94135446Strhodesvoid
95135446Strhodesns_lwreslistener_unlinkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
96135446Strhodes
97135446Strhodesvoid
98135446Strhodesns_lwreslistener_linkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm);
99135446Strhodes
100135446Strhodes
101135446Strhodes
102135446Strhodes
103135446Strhodes/*
104135446Strhodes * INTERNAL FUNCTIONS.
105135446Strhodes */
106135446Strhodesvoid *
107135446Strhodesns__lwresd_memalloc(void *arg, size_t size);
108135446Strhodes
109135446Strhodesvoid
110135446Strhodesns__lwresd_memfree(void *arg, void *mem, size_t size);
111135446Strhodes
112135446Strhodes#endif /* NAMED_LWRESD_H */
113