xref: /minix3/external/bsd/bind/dist/lib/dns/include/dns/peer.h (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: peer.h,v 1.5 2014/12/10 04:37:58 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004-2009, 2013, 2014  Internet Systems Consortium, Inc. ("ISC")
5*00b67f09SDavid van Moolenbroek  * Copyright (C) 2000, 2001, 2003  Internet Software Consortium.
6*00b67f09SDavid van Moolenbroek  *
7*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
8*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
9*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
10*00b67f09SDavid van Moolenbroek  *
11*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
18*00b67f09SDavid van Moolenbroek  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /* Id: peer.h,v 1.35 2009/01/17 23:47:43 tbox Exp  */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek #ifndef DNS_PEER_H
23*00b67f09SDavid van Moolenbroek #define DNS_PEER_H 1
24*00b67f09SDavid van Moolenbroek 
25*00b67f09SDavid van Moolenbroek /*****
26*00b67f09SDavid van Moolenbroek  ***** Module Info
27*00b67f09SDavid van Moolenbroek  *****/
28*00b67f09SDavid van Moolenbroek 
29*00b67f09SDavid van Moolenbroek /*! \file dns/peer.h
30*00b67f09SDavid van Moolenbroek  * \brief
31*00b67f09SDavid van Moolenbroek  * Data structures for peers (e.g. a 'server' config file statement)
32*00b67f09SDavid van Moolenbroek  */
33*00b67f09SDavid van Moolenbroek 
34*00b67f09SDavid van Moolenbroek /***
35*00b67f09SDavid van Moolenbroek  *** Imports
36*00b67f09SDavid van Moolenbroek  ***/
37*00b67f09SDavid van Moolenbroek 
38*00b67f09SDavid van Moolenbroek #include <isc/lang.h>
39*00b67f09SDavid van Moolenbroek #include <isc/magic.h>
40*00b67f09SDavid van Moolenbroek #include <isc/netaddr.h>
41*00b67f09SDavid van Moolenbroek 
42*00b67f09SDavid van Moolenbroek #include <dns/types.h>
43*00b67f09SDavid van Moolenbroek 
44*00b67f09SDavid van Moolenbroek #define DNS_PEERLIST_MAGIC	ISC_MAGIC('s','e','R','L')
45*00b67f09SDavid van Moolenbroek #define DNS_PEER_MAGIC		ISC_MAGIC('S','E','r','v')
46*00b67f09SDavid van Moolenbroek 
47*00b67f09SDavid van Moolenbroek #define DNS_PEERLIST_VALID(ptr)	ISC_MAGIC_VALID(ptr, DNS_PEERLIST_MAGIC)
48*00b67f09SDavid van Moolenbroek #define DNS_PEER_VALID(ptr)	ISC_MAGIC_VALID(ptr, DNS_PEER_MAGIC)
49*00b67f09SDavid van Moolenbroek 
50*00b67f09SDavid van Moolenbroek /***
51*00b67f09SDavid van Moolenbroek  *** Types
52*00b67f09SDavid van Moolenbroek  ***/
53*00b67f09SDavid van Moolenbroek 
54*00b67f09SDavid van Moolenbroek struct dns_peerlist {
55*00b67f09SDavid van Moolenbroek 	unsigned int		magic;
56*00b67f09SDavid van Moolenbroek 	isc_uint32_t		refs;
57*00b67f09SDavid van Moolenbroek 
58*00b67f09SDavid van Moolenbroek 	isc_mem_t	       *mem;
59*00b67f09SDavid van Moolenbroek 
60*00b67f09SDavid van Moolenbroek 	ISC_LIST(dns_peer_t) elements;
61*00b67f09SDavid van Moolenbroek };
62*00b67f09SDavid van Moolenbroek 
63*00b67f09SDavid van Moolenbroek struct dns_peer {
64*00b67f09SDavid van Moolenbroek 	unsigned int		magic;
65*00b67f09SDavid van Moolenbroek 	isc_uint32_t		refs;
66*00b67f09SDavid van Moolenbroek 
67*00b67f09SDavid van Moolenbroek 	isc_mem_t	       *mem;
68*00b67f09SDavid van Moolenbroek 
69*00b67f09SDavid van Moolenbroek 	isc_netaddr_t		address;
70*00b67f09SDavid van Moolenbroek 	unsigned int		prefixlen;
71*00b67f09SDavid van Moolenbroek 	isc_boolean_t		bogus;
72*00b67f09SDavid van Moolenbroek 	dns_transfer_format_t	transfer_format;
73*00b67f09SDavid van Moolenbroek 	isc_uint32_t		transfers;
74*00b67f09SDavid van Moolenbroek 	isc_boolean_t		support_ixfr;
75*00b67f09SDavid van Moolenbroek 	isc_boolean_t		provide_ixfr;
76*00b67f09SDavid van Moolenbroek 	isc_boolean_t		request_ixfr;
77*00b67f09SDavid van Moolenbroek 	isc_boolean_t		support_edns;
78*00b67f09SDavid van Moolenbroek 	isc_boolean_t		request_nsid;
79*00b67f09SDavid van Moolenbroek 	isc_boolean_t		request_sit;
80*00b67f09SDavid van Moolenbroek 	dns_name_t	       *key;
81*00b67f09SDavid van Moolenbroek 	isc_sockaddr_t	       *transfer_source;
82*00b67f09SDavid van Moolenbroek 	isc_dscp_t		transfer_dscp;
83*00b67f09SDavid van Moolenbroek 	isc_sockaddr_t	       *notify_source;
84*00b67f09SDavid van Moolenbroek 	isc_dscp_t		notify_dscp;
85*00b67f09SDavid van Moolenbroek 	isc_sockaddr_t	       *query_source;
86*00b67f09SDavid van Moolenbroek 	isc_dscp_t		query_dscp;
87*00b67f09SDavid van Moolenbroek 	isc_uint16_t		udpsize;		/* receive size */
88*00b67f09SDavid van Moolenbroek 	isc_uint16_t		maxudp;			/* transmit size */
89*00b67f09SDavid van Moolenbroek 
90*00b67f09SDavid van Moolenbroek 	isc_uint32_t		bitflags;
91*00b67f09SDavid van Moolenbroek 
92*00b67f09SDavid van Moolenbroek 	ISC_LINK(dns_peer_t)	next;
93*00b67f09SDavid van Moolenbroek };
94*00b67f09SDavid van Moolenbroek 
95*00b67f09SDavid van Moolenbroek /***
96*00b67f09SDavid van Moolenbroek  *** Functions
97*00b67f09SDavid van Moolenbroek  ***/
98*00b67f09SDavid van Moolenbroek 
99*00b67f09SDavid van Moolenbroek ISC_LANG_BEGINDECLS
100*00b67f09SDavid van Moolenbroek 
101*00b67f09SDavid van Moolenbroek isc_result_t
102*00b67f09SDavid van Moolenbroek dns_peerlist_new(isc_mem_t *mem, dns_peerlist_t **list);
103*00b67f09SDavid van Moolenbroek 
104*00b67f09SDavid van Moolenbroek void
105*00b67f09SDavid van Moolenbroek dns_peerlist_attach(dns_peerlist_t *source, dns_peerlist_t **target);
106*00b67f09SDavid van Moolenbroek 
107*00b67f09SDavid van Moolenbroek void
108*00b67f09SDavid van Moolenbroek dns_peerlist_detach(dns_peerlist_t **list);
109*00b67f09SDavid van Moolenbroek 
110*00b67f09SDavid van Moolenbroek /*
111*00b67f09SDavid van Moolenbroek  * After return caller still holds a reference to peer.
112*00b67f09SDavid van Moolenbroek  */
113*00b67f09SDavid van Moolenbroek void
114*00b67f09SDavid van Moolenbroek dns_peerlist_addpeer(dns_peerlist_t *peers, dns_peer_t *peer);
115*00b67f09SDavid van Moolenbroek 
116*00b67f09SDavid van Moolenbroek /*
117*00b67f09SDavid van Moolenbroek  * Ditto. */
118*00b67f09SDavid van Moolenbroek isc_result_t
119*00b67f09SDavid van Moolenbroek dns_peerlist_peerbyaddr(dns_peerlist_t *peers, isc_netaddr_t *addr,
120*00b67f09SDavid van Moolenbroek 			dns_peer_t **retval);
121*00b67f09SDavid van Moolenbroek 
122*00b67f09SDavid van Moolenbroek /*
123*00b67f09SDavid van Moolenbroek  * What he said.
124*00b67f09SDavid van Moolenbroek  */
125*00b67f09SDavid van Moolenbroek isc_result_t
126*00b67f09SDavid van Moolenbroek dns_peerlist_currpeer(dns_peerlist_t *peers, dns_peer_t **retval);
127*00b67f09SDavid van Moolenbroek 
128*00b67f09SDavid van Moolenbroek isc_result_t
129*00b67f09SDavid van Moolenbroek dns_peer_new(isc_mem_t *mem, isc_netaddr_t *ipaddr, dns_peer_t **peer);
130*00b67f09SDavid van Moolenbroek 
131*00b67f09SDavid van Moolenbroek isc_result_t
132*00b67f09SDavid van Moolenbroek dns_peer_newprefix(isc_mem_t *mem, isc_netaddr_t *ipaddr,
133*00b67f09SDavid van Moolenbroek 		   unsigned int prefixlen, dns_peer_t **peer);
134*00b67f09SDavid van Moolenbroek 
135*00b67f09SDavid van Moolenbroek void
136*00b67f09SDavid van Moolenbroek dns_peer_attach(dns_peer_t *source, dns_peer_t **target);
137*00b67f09SDavid van Moolenbroek 
138*00b67f09SDavid van Moolenbroek void
139*00b67f09SDavid van Moolenbroek dns_peer_detach(dns_peer_t **list);
140*00b67f09SDavid van Moolenbroek 
141*00b67f09SDavid van Moolenbroek isc_result_t
142*00b67f09SDavid van Moolenbroek dns_peer_setbogus(dns_peer_t *peer, isc_boolean_t newval);
143*00b67f09SDavid van Moolenbroek 
144*00b67f09SDavid van Moolenbroek isc_result_t
145*00b67f09SDavid van Moolenbroek dns_peer_getbogus(dns_peer_t *peer, isc_boolean_t *retval);
146*00b67f09SDavid van Moolenbroek 
147*00b67f09SDavid van Moolenbroek isc_result_t
148*00b67f09SDavid van Moolenbroek dns_peer_setrequestixfr(dns_peer_t *peer, isc_boolean_t newval);
149*00b67f09SDavid van Moolenbroek 
150*00b67f09SDavid van Moolenbroek isc_result_t
151*00b67f09SDavid van Moolenbroek dns_peer_getrequestixfr(dns_peer_t *peer, isc_boolean_t *retval);
152*00b67f09SDavid van Moolenbroek 
153*00b67f09SDavid van Moolenbroek isc_result_t
154*00b67f09SDavid van Moolenbroek dns_peer_setprovideixfr(dns_peer_t *peer, isc_boolean_t newval);
155*00b67f09SDavid van Moolenbroek 
156*00b67f09SDavid van Moolenbroek isc_result_t
157*00b67f09SDavid van Moolenbroek dns_peer_getprovideixfr(dns_peer_t *peer, isc_boolean_t *retval);
158*00b67f09SDavid van Moolenbroek 
159*00b67f09SDavid van Moolenbroek isc_result_t
160*00b67f09SDavid van Moolenbroek dns_peer_setrequestnsid(dns_peer_t *peer, isc_boolean_t newval);
161*00b67f09SDavid van Moolenbroek 
162*00b67f09SDavid van Moolenbroek isc_result_t
163*00b67f09SDavid van Moolenbroek dns_peer_getrequestnsid(dns_peer_t *peer, isc_boolean_t *retval);
164*00b67f09SDavid van Moolenbroek 
165*00b67f09SDavid van Moolenbroek isc_result_t
166*00b67f09SDavid van Moolenbroek dns_peer_setrequestsit(dns_peer_t *peer, isc_boolean_t newval);
167*00b67f09SDavid van Moolenbroek 
168*00b67f09SDavid van Moolenbroek isc_result_t
169*00b67f09SDavid van Moolenbroek dns_peer_getrequestsit(dns_peer_t *peer, isc_boolean_t *retval);
170*00b67f09SDavid van Moolenbroek 
171*00b67f09SDavid van Moolenbroek isc_result_t
172*00b67f09SDavid van Moolenbroek dns_peer_setsupportedns(dns_peer_t *peer, isc_boolean_t newval);
173*00b67f09SDavid van Moolenbroek 
174*00b67f09SDavid van Moolenbroek isc_result_t
175*00b67f09SDavid van Moolenbroek dns_peer_getsupportedns(dns_peer_t *peer, isc_boolean_t *retval);
176*00b67f09SDavid van Moolenbroek 
177*00b67f09SDavid van Moolenbroek isc_result_t
178*00b67f09SDavid van Moolenbroek dns_peer_settransfers(dns_peer_t *peer, isc_uint32_t newval);
179*00b67f09SDavid van Moolenbroek 
180*00b67f09SDavid van Moolenbroek isc_result_t
181*00b67f09SDavid van Moolenbroek dns_peer_gettransfers(dns_peer_t *peer, isc_uint32_t *retval);
182*00b67f09SDavid van Moolenbroek 
183*00b67f09SDavid van Moolenbroek isc_result_t
184*00b67f09SDavid van Moolenbroek dns_peer_settransferformat(dns_peer_t *peer, dns_transfer_format_t newval);
185*00b67f09SDavid van Moolenbroek 
186*00b67f09SDavid van Moolenbroek isc_result_t
187*00b67f09SDavid van Moolenbroek dns_peer_gettransferformat(dns_peer_t *peer, dns_transfer_format_t *retval);
188*00b67f09SDavid van Moolenbroek 
189*00b67f09SDavid van Moolenbroek isc_result_t
190*00b67f09SDavid van Moolenbroek dns_peer_setkeybycharp(dns_peer_t *peer, const char *keyval);
191*00b67f09SDavid van Moolenbroek 
192*00b67f09SDavid van Moolenbroek isc_result_t
193*00b67f09SDavid van Moolenbroek dns_peer_getkey(dns_peer_t *peer, dns_name_t **retval);
194*00b67f09SDavid van Moolenbroek 
195*00b67f09SDavid van Moolenbroek isc_result_t
196*00b67f09SDavid van Moolenbroek dns_peer_setkey(dns_peer_t *peer, dns_name_t **keyval);
197*00b67f09SDavid van Moolenbroek 
198*00b67f09SDavid van Moolenbroek isc_result_t
199*00b67f09SDavid van Moolenbroek dns_peer_settransfersource(dns_peer_t *peer,
200*00b67f09SDavid van Moolenbroek 			   const isc_sockaddr_t *transfer_source);
201*00b67f09SDavid van Moolenbroek 
202*00b67f09SDavid van Moolenbroek isc_result_t
203*00b67f09SDavid van Moolenbroek dns_peer_gettransfersource(dns_peer_t *peer, isc_sockaddr_t *transfer_source);
204*00b67f09SDavid van Moolenbroek 
205*00b67f09SDavid van Moolenbroek isc_result_t
206*00b67f09SDavid van Moolenbroek dns_peer_setudpsize(dns_peer_t *peer, isc_uint16_t udpsize);
207*00b67f09SDavid van Moolenbroek 
208*00b67f09SDavid van Moolenbroek isc_result_t
209*00b67f09SDavid van Moolenbroek dns_peer_getudpsize(dns_peer_t *peer, isc_uint16_t *udpsize);
210*00b67f09SDavid van Moolenbroek 
211*00b67f09SDavid van Moolenbroek isc_result_t
212*00b67f09SDavid van Moolenbroek dns_peer_setmaxudp(dns_peer_t *peer, isc_uint16_t maxudp);
213*00b67f09SDavid van Moolenbroek 
214*00b67f09SDavid van Moolenbroek isc_result_t
215*00b67f09SDavid van Moolenbroek dns_peer_getmaxudp(dns_peer_t *peer, isc_uint16_t *maxudp);
216*00b67f09SDavid van Moolenbroek 
217*00b67f09SDavid van Moolenbroek isc_result_t
218*00b67f09SDavid van Moolenbroek dns_peer_setnotifysource(dns_peer_t *peer, const isc_sockaddr_t *notify_source);
219*00b67f09SDavid van Moolenbroek 
220*00b67f09SDavid van Moolenbroek isc_result_t
221*00b67f09SDavid van Moolenbroek dns_peer_getnotifysource(dns_peer_t *peer, isc_sockaddr_t *notify_source);
222*00b67f09SDavid van Moolenbroek 
223*00b67f09SDavid van Moolenbroek isc_result_t
224*00b67f09SDavid van Moolenbroek dns_peer_setquerysource(dns_peer_t *peer, const isc_sockaddr_t *query_source);
225*00b67f09SDavid van Moolenbroek 
226*00b67f09SDavid van Moolenbroek isc_result_t
227*00b67f09SDavid van Moolenbroek dns_peer_getquerysource(dns_peer_t *peer, isc_sockaddr_t *query_source);
228*00b67f09SDavid van Moolenbroek 
229*00b67f09SDavid van Moolenbroek isc_result_t
230*00b67f09SDavid van Moolenbroek dns_peer_setnotifydscp(dns_peer_t *peer, isc_dscp_t dscp);
231*00b67f09SDavid van Moolenbroek 
232*00b67f09SDavid van Moolenbroek isc_result_t
233*00b67f09SDavid van Moolenbroek dns_peer_getnotifydscp(dns_peer_t *peer, isc_dscp_t *dscpp);
234*00b67f09SDavid van Moolenbroek 
235*00b67f09SDavid van Moolenbroek isc_result_t
236*00b67f09SDavid van Moolenbroek dns_peer_settransferdscp(dns_peer_t *peer, isc_dscp_t dscp);
237*00b67f09SDavid van Moolenbroek 
238*00b67f09SDavid van Moolenbroek isc_result_t
239*00b67f09SDavid van Moolenbroek dns_peer_gettransferdscp(dns_peer_t *peer, isc_dscp_t *dscpp);
240*00b67f09SDavid van Moolenbroek 
241*00b67f09SDavid van Moolenbroek isc_result_t
242*00b67f09SDavid van Moolenbroek dns_peer_setquerydscp(dns_peer_t *peer, isc_dscp_t dscp);
243*00b67f09SDavid van Moolenbroek 
244*00b67f09SDavid van Moolenbroek isc_result_t
245*00b67f09SDavid van Moolenbroek dns_peer_getquerydscp(dns_peer_t *peer, isc_dscp_t *dscpp);
246*00b67f09SDavid van Moolenbroek ISC_LANG_ENDDECLS
247*00b67f09SDavid van Moolenbroek 
248*00b67f09SDavid van Moolenbroek #endif /* DNS_PEER_H */
249