xref: /minix3/external/bsd/dhcp/dist/includes/omapip/omapip.h (revision d56f51ea7d8b9045e5c8e2028422523d3f9a5840)
1 /*	$NetBSD: omapip.h,v 1.1.1.3 2014/07/12 11:57:57 spz Exp $	*/
2 /* omapip.h
3 
4    Definitions for the object management API and protocol... */
5 
6 /*
7  * Copyright (c) 2009,2013-2014 by Internet Systems Consortium, Inc. ("ISC")
8  * Copyright (c) 2004,2007 by Internet Systems Consortium, Inc. ("ISC")
9  * Copyright (c) 1996-2003 by Internet Software Consortium
10  *
11  * Permission to use, copy, modify, and distribute this software for any
12  * purpose with or without fee is hereby granted, provided that the above
13  * copyright notice and this permission notice appear in all copies.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
16  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
18  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  *   Internet Systems Consortium, Inc.
24  *   950 Charter Street
25  *   Redwood City, CA 94063
26  *   <info@isc.org>
27  *   https://www.isc.org/
28  *
29  */
30 
31 #ifndef _OMAPIP_H_
32 #define _OMAPIP_H_
33 #include "result.h"
34 #include <stdarg.h>
35 
36 #include <dns/tsec.h>
37 
38 typedef unsigned int omapi_handle_t;
39 
40 struct __omapi_object;
41 typedef struct __omapi_object omapi_object_t;
42 
43 typedef enum {
44 	omapi_datatype_int,
45 	omapi_datatype_string,
46 	omapi_datatype_data,
47 	omapi_datatype_object
48 } omapi_datatype_t;
49 
50 typedef struct {
51 	int refcnt;
52 	omapi_datatype_t type;
53 	union {
54 		struct {
55 			unsigned len;
56 #define OMAPI_TYPED_DATA_NOBUFFER_LEN (sizeof (int) + \
57 				       sizeof (omapi_datatype_t) + \
58 				       sizeof (int))
59 			unsigned char value [1];
60 		} buffer;
61 #define OMAPI_TYPED_DATA_OBJECT_LEN (sizeof (int) + \
62 				     sizeof (omapi_datatype_t) + \
63 				     sizeof (omapi_object_t *))
64 		omapi_object_t *object;
65 #define OMAPI_TYPED_DATA_REF_LEN (sizeof (int) + \
66 				  sizeof (omapi_datatype_t) + \
67 				  3 * sizeof (void *))
68 		struct {
69 			void *ptr;
70 			isc_result_t (*reference) (void *,
71 						   void *, const char *, int);
72 			isc_result_t (*dereference) (void *,
73 						     const char *, int);
74 		} ref;
75 #define OMAPI_TYPED_DATA_INT_LEN (sizeof (int) + \
76 				  sizeof (omapi_datatype_t) + \
77 				  sizeof (int))
78 		int integer;
79 	} u;
80 } omapi_typed_data_t;
81 
82 typedef struct {
83 	int refcnt;
84 	unsigned len;
85 #define OMAPI_DATA_STRING_EMPTY_SIZE (2 * sizeof (int))
86 	unsigned char value [1];
87 } omapi_data_string_t;
88 
89 typedef struct {
90 	int refcnt;
91 	omapi_data_string_t *name;
92 	omapi_typed_data_t *value;
93 } omapi_value_t;
94 
95 typedef struct __omapi_object_type_t {
96 	const char *name;
97 	struct __omapi_object_type_t *next;
98 
99 	isc_result_t (*set_value) (omapi_object_t *, omapi_object_t *,
100 				   omapi_data_string_t *,
101 				   omapi_typed_data_t *);
102 	isc_result_t (*get_value) (omapi_object_t *,
103 				   omapi_object_t *,
104 				   omapi_data_string_t *, omapi_value_t **);
105 	isc_result_t (*destroy) (omapi_object_t *, const char *, int);
106 	isc_result_t (*signal_handler) (omapi_object_t *,
107 					const char *, va_list);
108 	isc_result_t (*stuff_values) (omapi_object_t *,
109 				      omapi_object_t *, omapi_object_t *);
110 	isc_result_t (*lookup) (omapi_object_t **, omapi_object_t *,
111 				omapi_object_t *);
112 	isc_result_t (*create) (omapi_object_t **, omapi_object_t *);
113 	isc_result_t (*remove) (omapi_object_t *, omapi_object_t *);
114 	isc_result_t (*freer) (omapi_object_t *, const char *, int);
115 	isc_result_t (*allocator) (omapi_object_t **, const char *, int);
116 	isc_result_t (*sizer) (size_t);
117 	size_t size;
118 	int rc_flag;
119 	isc_result_t (*initialize) (omapi_object_t *, const char *, int);
120 } omapi_object_type_t;
121 
122 #define OMAPI_OBJECT_PREAMBLE \
123 	omapi_object_type_t *type; \
124 	int refcnt; \
125 	omapi_handle_t handle; \
126 	omapi_object_t *outer, *inner
127 
128 /* The omapi handle structure. */
129 struct __omapi_object {
130 	OMAPI_OBJECT_PREAMBLE;
131 };
132 
133 /* The port on which applications should listen for OMAPI connections. */
134 #define OMAPI_PROTOCOL_PORT	7911
135 
136 typedef struct {
137 	unsigned addrtype;
138 	unsigned addrlen;
139 	unsigned char address [16];
140 	unsigned port;
141 } omapi_addr_t;
142 
143 typedef struct {
144 	int refcnt;
145 	unsigned count;
146 	omapi_addr_t *addresses;
147 } omapi_addr_list_t;
148 
149 typedef struct auth_key {
150 	OMAPI_OBJECT_PREAMBLE;
151 	char *name;
152 	char *algorithm;
153 	omapi_data_string_t *key;
154 	dns_tsec_t *tsec_key;
155 } omapi_auth_key_t;
156 
157 #define OMAPI_CREATE          1
158 #define OMAPI_UPDATE          2
159 #define OMAPI_EXCL            4
160 #define OMAPI_NOTIFY_PROTOCOL 8
161 
162 #define OMAPI_OBJECT_ALLOC(name, stype, type) \
163 isc_result_t name##_allocate (stype **p, const char *file, int line)	      \
164 {									      \
165 	return omapi_object_allocate ((omapi_object_t **)p,		      \
166 				      type, 0, file, line);		      \
167 }									      \
168 									      \
169 isc_result_t name##_reference (stype **pptr, stype *ptr,		      \
170 			       const char *file, int line)		      \
171 {									      \
172 	return omapi_object_reference ((omapi_object_t **)pptr,		      \
173 				       (omapi_object_t *)ptr, file, line);    \
174 }									      \
175 									      \
176 isc_result_t name##_dereference (stype **ptr, const char *file, int line)     \
177 {									      \
178 	return omapi_object_dereference ((omapi_object_t **)ptr, file, line); \
179 }
180 
181 #define OMAPI_OBJECT_ALLOC_DECL(name, stype, type) \
182 isc_result_t name##_allocate (stype **p, const char *file, int line); \
183 isc_result_t name##_reference (stype **pptr, stype *ptr, \
184 			       const char *file, int line); \
185 isc_result_t name##_dereference (stype **ptr, const char *file, int line);
186 
187 typedef isc_result_t (*omapi_array_ref_t) (char **, char *, const char *, int);
188 typedef isc_result_t (*omapi_array_deref_t) (char **, const char *, int);
189 
190 /* An extensible array type. */
191 typedef struct {
192 	char **data;
193 	omapi_array_ref_t ref;
194 	omapi_array_deref_t deref;
195 	int count;
196 	int max;
197 } omapi_array_t;
198 
199 #define OMAPI_ARRAY_TYPE(name, stype)					      \
200 isc_result_t name##_array_allocate (omapi_array_t **p,			      \
201 				    const char *file, int line)		      \
202 {									      \
203 	return (omapi_array_allocate					      \
204 		(p,							      \
205 		 (omapi_array_ref_t)name##_reference,			      \
206 		 (omapi_array_deref_t)name##_dereference,		      \
207 		 file, line));						      \
208 }									      \
209 									      \
210 isc_result_t name##_array_free (omapi_array_t **p,			      \
211 				const char *file, int line)		      \
212 {									      \
213 	return omapi_array_free (p, file, line);			      \
214 }									      \
215 									      \
216 isc_result_t name##_array_extend (omapi_array_t *pptr, stype *ptr, int *index,\
217 				  const char *file, int line)		      \
218 {									      \
219 	return omapi_array_extend (pptr, (char *)ptr, index, file, line);     \
220 }									      \
221 									      \
222 isc_result_t name##_array_set (omapi_array_t *pptr, stype *ptr,	int index,    \
223 			       const char *file, int line)		      \
224 {									      \
225 	return omapi_array_set (pptr, (char *)ptr, index, file, line);	      \
226 }									      \
227 									      \
228 isc_result_t name##_array_lookup (stype **ptr, omapi_array_t *pptr,	      \
229 				  int index, const char *file, int line)      \
230 {									      \
231 	return omapi_array_lookup ((char **)ptr, pptr, index, file, line);    \
232 }
233 
234 #define OMAPI_ARRAY_TYPE_DECL(name, stype) \
235 isc_result_t name##_array_allocate (omapi_array_t **, const char *, int);     \
236 isc_result_t name##_array_free (omapi_array_t **, const char *, int);	      \
237 isc_result_t name##_array_extend (omapi_array_t *, stype *, int *,	      \
238 				  const char *, int);			      \
239 isc_result_t name##_array_set (omapi_array_t *,				      \
240 			       stype *, int, const char *, int);	      \
241 isc_result_t name##_array_lookup (stype **,				      \
242 				  omapi_array_t *, int, const char *, int)
243 
244 #define	omapi_array_foreach_begin(array, stype, var)			      \
245 	{								      \
246 		int omapi_array_foreach_index;				      \
247 		stype *var = (stype *)0;				      \
248 		for (omapi_array_foreach_index = 0;			      \
249 			     array &&					      \
250 			     omapi_array_foreach_index < (array) -> count;    \
251 		     omapi_array_foreach_index++) {			      \
252 			if ((array) -> data [omapi_array_foreach_index]) {    \
253 				((*(array) -> ref)			      \
254 				 ((char **)&var,			      \
255 				  (array) -> data [omapi_array_foreach_index],\
256 				  MDL));
257 
258 #define	omapi_array_foreach_end(array, stype, var)			      \
259 				(*(array) -> deref) ((char **)&var, MDL);     \
260 			}						      \
261 		}							      \
262 	}
263 
264 isc_result_t omapi_protocol_connect (omapi_object_t *,
265 				     const char *, unsigned, omapi_object_t *);
266 isc_result_t omapi_connect_list (omapi_object_t *, omapi_addr_list_t *,
267 				 omapi_addr_t *);
268 isc_result_t omapi_protocol_listen (omapi_object_t *, unsigned, int);
269 isc_boolean_t omapi_protocol_authenticated (omapi_object_t *);
270 isc_result_t omapi_protocol_configure_security (omapi_object_t *,
271 						isc_result_t (*)
272 						(omapi_object_t *,
273 						 omapi_addr_t *),
274 						isc_result_t (*)
275 						(omapi_object_t *,
276 						 omapi_auth_key_t *));
277 isc_result_t omapi_protocol_accept (omapi_object_t *);
278 isc_result_t omapi_protocol_send_intro (omapi_object_t *, unsigned, unsigned);
279 isc_result_t omapi_protocol_ready (omapi_object_t *);
280 isc_result_t omapi_protocol_add_auth (omapi_object_t *, omapi_object_t *,
281 				      omapi_handle_t);
282 isc_result_t omapi_protocol_lookup_auth (omapi_object_t **, omapi_object_t *,
283 					 omapi_handle_t);
284 isc_result_t omapi_protocol_set_value (omapi_object_t *, omapi_object_t *,
285 				       omapi_data_string_t *,
286 				       omapi_typed_data_t *);
287 isc_result_t omapi_protocol_get_value (omapi_object_t *, omapi_object_t *,
288 				       omapi_data_string_t *,
289 				       omapi_value_t **);
290 isc_result_t omapi_protocol_stuff_values (omapi_object_t *,
291 					  omapi_object_t *,
292 					  omapi_object_t *);
293 
294 isc_result_t omapi_protocol_destroy (omapi_object_t *, const char *, int);
295 isc_result_t omapi_protocol_send_message (omapi_object_t *,
296 					  omapi_object_t *,
297 					  omapi_object_t *,
298 					  omapi_object_t *);
299 isc_result_t omapi_protocol_signal_handler (omapi_object_t *,
300 					    const char *, va_list);
301 isc_result_t omapi_protocol_listener_set_value (omapi_object_t *,
302 						omapi_object_t *,
303 						omapi_data_string_t *,
304 						omapi_typed_data_t *);
305 isc_result_t omapi_protocol_listener_get_value (omapi_object_t *,
306 						omapi_object_t *,
307 						omapi_data_string_t *,
308 						omapi_value_t **);
309 isc_result_t omapi_protocol_listener_destroy (omapi_object_t *,
310 					      const char *, int);
311 isc_result_t omapi_protocol_listener_signal (omapi_object_t *,
312 					     const char *, va_list);
313 isc_result_t omapi_protocol_listener_stuff (omapi_object_t *,
314 					    omapi_object_t *,
315 					    omapi_object_t *);
316 isc_result_t omapi_protocol_send_status (omapi_object_t *, omapi_object_t *,
317 					 isc_result_t, unsigned, const char *);
318 isc_result_t omapi_protocol_send_open (omapi_object_t *, omapi_object_t *,
319 				       const char *, omapi_object_t *,
320 				       unsigned);
321 isc_result_t omapi_protocol_send_update (omapi_object_t *, omapi_object_t *,
322 					 unsigned, omapi_object_t *);
323 
324 isc_result_t omapi_connect (omapi_object_t *, const char *, unsigned);
325 isc_result_t omapi_disconnect (omapi_object_t *, int);
326 int omapi_connection_readfd (omapi_object_t *);
327 int omapi_connection_writefd (omapi_object_t *);
328 isc_result_t omapi_connection_connect (omapi_object_t *);
329 isc_result_t omapi_connection_reader (omapi_object_t *);
330 isc_result_t omapi_connection_writer (omapi_object_t *);
331 isc_result_t omapi_connection_reaper (omapi_object_t *);
332 isc_result_t omapi_connection_output_auth_length (omapi_object_t *,
333                                                   unsigned *);
334 isc_result_t omapi_connection_set_value (omapi_object_t *, omapi_object_t *,
335 					 omapi_data_string_t *,
336 					 omapi_typed_data_t *);
337 isc_result_t omapi_connection_get_value (omapi_object_t *, omapi_object_t *,
338 					 omapi_data_string_t *,
339 					 omapi_value_t **);
340 isc_result_t omapi_connection_destroy (omapi_object_t *, const char *, int);
341 isc_result_t omapi_connection_signal_handler (omapi_object_t *,
342 					      const char *, va_list);
343 isc_result_t omapi_connection_stuff_values (omapi_object_t *,
344 					    omapi_object_t *,
345 					    omapi_object_t *);
346 isc_result_t omapi_connection_write_typed_data (omapi_object_t *,
347 						omapi_typed_data_t *);
348 isc_result_t omapi_connection_put_name (omapi_object_t *, const char *);
349 isc_result_t omapi_connection_put_string (omapi_object_t *, const char *);
350 isc_result_t omapi_connection_put_handle (omapi_object_t *c,
351 					  omapi_object_t *h);
352 isc_result_t omapi_connection_put_named_uint32 (omapi_object_t *,
353 						const char *,
354 						u_int32_t);
355 isc_result_t omapi_listen (omapi_object_t *, unsigned, int);
356 isc_result_t omapi_listen_addr (omapi_object_t *,
357 				omapi_addr_t *, int);
358 isc_result_t omapi_listener_accept (omapi_object_t *);
359 int omapi_listener_readfd (omapi_object_t *);
360 isc_result_t omapi_accept (omapi_object_t *);
361 isc_result_t omapi_listener_configure_security (omapi_object_t *,
362 						isc_result_t (*)
363 						(omapi_object_t *,
364 						 omapi_addr_t *));
365 isc_result_t omapi_listener_set_value (omapi_object_t *, omapi_object_t *,
366 				       omapi_data_string_t *,
367 				       omapi_typed_data_t *);
368 isc_result_t omapi_listener_get_value (omapi_object_t *, omapi_object_t *,
369 				       omapi_data_string_t *,
370 				       omapi_value_t **);
371 isc_result_t omapi_listener_destroy (omapi_object_t *, const char *, int);
372 isc_result_t omapi_listener_signal_handler (omapi_object_t *,
373 					    const char *, va_list);
374 isc_result_t omapi_listener_stuff_values (omapi_object_t *,
375 					  omapi_object_t *,
376 					  omapi_object_t *);
377 
378 isc_result_t omapi_register_io_object (omapi_object_t *,
379 				       int (*)(omapi_object_t *),
380 				       int (*)(omapi_object_t *),
381 				       isc_result_t (*)(omapi_object_t *),
382 				       isc_result_t (*)(omapi_object_t *),
383 				       isc_result_t (*)(omapi_object_t *));
384 isc_result_t omapi_reregister_io_object (omapi_object_t *,
385 					 int (*)(omapi_object_t *),
386 					 int (*)(omapi_object_t *),
387 					 isc_result_t (*)(omapi_object_t *),
388 					 isc_result_t (*)(omapi_object_t *),
389 					 isc_result_t (*)(omapi_object_t *));
390 isc_result_t omapi_unregister_io_object (omapi_object_t *);
391 isc_result_t omapi_dispatch (struct timeval *);
392 isc_result_t omapi_wait_for_completion (omapi_object_t *, struct timeval *);
393 isc_result_t omapi_one_dispatch (omapi_object_t *, struct timeval *);
394 isc_result_t omapi_io_set_value (omapi_object_t *, omapi_object_t *,
395 				 omapi_data_string_t *,
396 				 omapi_typed_data_t *);
397 isc_result_t omapi_io_get_value (omapi_object_t *, omapi_object_t *,
398 				 omapi_data_string_t *, omapi_value_t **);
399 isc_result_t omapi_io_destroy (omapi_object_t *, const char *, int);
400 isc_result_t omapi_io_signal_handler (omapi_object_t *, const char *, va_list);
401 isc_result_t omapi_io_stuff_values (omapi_object_t *,
402 				    omapi_object_t *,
403 				    omapi_object_t *);
404 isc_result_t omapi_waiter_signal_handler (omapi_object_t *,
405 					  const char *, va_list);
406 isc_result_t omapi_io_state_foreach (isc_result_t (*func) (omapi_object_t *,
407 							   void *),
408 				     void *p);
409 
410 isc_result_t omapi_generic_new (omapi_object_t **, const char *, int);
411 isc_result_t omapi_generic_set_value  (omapi_object_t *, omapi_object_t *,
412 				       omapi_data_string_t *,
413 				       omapi_typed_data_t *);
414 isc_result_t omapi_generic_get_value (omapi_object_t *, omapi_object_t *,
415 				      omapi_data_string_t *,
416 				      omapi_value_t **);
417 isc_result_t omapi_generic_destroy (omapi_object_t *, const char *, int);
418 isc_result_t omapi_generic_signal_handler (omapi_object_t *,
419 					   const char *, va_list);
420 isc_result_t omapi_generic_stuff_values (omapi_object_t *,
421 					 omapi_object_t *,
422 					 omapi_object_t *);
423 isc_result_t omapi_generic_clear_flags (omapi_object_t *);
424 
425 isc_result_t omapi_message_new (omapi_object_t **, const char *, int);
426 isc_result_t omapi_message_set_value  (omapi_object_t *, omapi_object_t *,
427 				       omapi_data_string_t *,
428 				       omapi_typed_data_t *);
429 isc_result_t omapi_message_get_value (omapi_object_t *, omapi_object_t *,
430 				      omapi_data_string_t *,
431 				      omapi_value_t **);
432 isc_result_t omapi_message_destroy (omapi_object_t *, const char *, int);
433 isc_result_t omapi_message_signal_handler (omapi_object_t *,
434 					   const char *, va_list);
435 isc_result_t omapi_message_stuff_values (omapi_object_t *,
436 					 omapi_object_t *,
437 					 omapi_object_t *);
438 isc_result_t omapi_message_register (omapi_object_t *);
439 isc_result_t omapi_message_unregister (omapi_object_t *);
440 isc_result_t omapi_message_process (omapi_object_t *, omapi_object_t *);
441 
442 OMAPI_OBJECT_ALLOC_DECL (omapi_auth_key,
443 			 omapi_auth_key_t, omapi_type_auth_key)
444 isc_result_t omapi_auth_key_new (omapi_auth_key_t **, const char *, int);
445 isc_result_t omapi_auth_key_destroy (omapi_object_t *, const char *, int);
446 isc_result_t omapi_auth_key_enter (omapi_auth_key_t *);
447 isc_result_t omapi_auth_key_lookup_name (omapi_auth_key_t **, const char *);
448 isc_result_t omapi_auth_key_lookup (omapi_object_t **,
449 				    omapi_object_t *,
450 				    omapi_object_t *);
451 isc_result_t omapi_auth_key_get_value (omapi_object_t *, omapi_object_t *,
452 				       omapi_data_string_t *,
453 				       omapi_value_t **);
454 isc_result_t omapi_auth_key_stuff_values (omapi_object_t *,
455 					  omapi_object_t *,
456 					  omapi_object_t *);
457 
458 extern omapi_object_type_t *omapi_type_connection;
459 extern omapi_object_type_t *omapi_type_listener;
460 extern omapi_object_type_t *omapi_type_io_object;
461 extern omapi_object_type_t *omapi_type_generic;
462 extern omapi_object_type_t *omapi_type_protocol;
463 extern omapi_object_type_t *omapi_type_protocol_listener;
464 extern omapi_object_type_t *omapi_type_waiter;
465 extern omapi_object_type_t *omapi_type_remote;
466 extern omapi_object_type_t *omapi_type_message;
467 extern omapi_object_type_t *omapi_type_auth_key;
468 
469 extern omapi_object_type_t *omapi_object_types;
470 
471 void omapi_type_relinquish (void);
472 isc_result_t omapi_init (void);
473 isc_result_t omapi_object_type_register (omapi_object_type_t **,
474 					 const char *,
475 					 isc_result_t (*)
476 						(omapi_object_t *,
477 						 omapi_object_t *,
478 						 omapi_data_string_t *,
479 						 omapi_typed_data_t *),
480 					 isc_result_t (*)
481 						(omapi_object_t *,
482 						 omapi_object_t *,
483 						 omapi_data_string_t *,
484 						 omapi_value_t **),
485 					 isc_result_t (*) (omapi_object_t *,
486 							   const char *, int),
487 					 isc_result_t (*) (omapi_object_t *,
488 							   const char *,
489 							   va_list),
490 					 isc_result_t (*) (omapi_object_t *,
491 							   omapi_object_t *,
492 							   omapi_object_t *),
493 					 isc_result_t (*) (omapi_object_t **,
494 							   omapi_object_t *,
495 							   omapi_object_t *),
496 					 isc_result_t (*) (omapi_object_t **,
497 							   omapi_object_t *),
498 					 isc_result_t (*) (omapi_object_t *,
499 							   omapi_object_t *),
500 					 isc_result_t (*) (omapi_object_t *,
501 							   const char *, int),
502 					 isc_result_t (*) (omapi_object_t **,
503 							   const char *, int),
504 					 isc_result_t (*) (size_t), size_t,
505 					 isc_result_t (*) (omapi_object_t *,
506 							   const char *, int),
507 					 int);
508 isc_result_t omapi_signal (omapi_object_t *, const char *, ...);
509 isc_result_t omapi_signal_in (omapi_object_t *, const char *, ...);
510 isc_result_t omapi_set_value (omapi_object_t *, omapi_object_t *,
511 			      omapi_data_string_t *,
512 			      omapi_typed_data_t *);
513 isc_result_t omapi_set_value_str (omapi_object_t *, omapi_object_t *,
514 				  const char *, omapi_typed_data_t *);
515 isc_result_t omapi_set_boolean_value (omapi_object_t *, omapi_object_t *,
516 				      const char *, int);
517 isc_result_t omapi_set_int_value (omapi_object_t *, omapi_object_t *,
518 				  const char *, int);
519 isc_result_t omapi_set_object_value (omapi_object_t *, omapi_object_t *,
520 				     const char *, omapi_object_t *);
521 isc_result_t omapi_set_string_value (omapi_object_t *, omapi_object_t *,
522 				     const char *, const char *);
523 isc_result_t omapi_get_value (omapi_object_t *, omapi_object_t *,
524 			      omapi_data_string_t *,
525 			      omapi_value_t **);
526 isc_result_t omapi_get_value_str (omapi_object_t *, omapi_object_t *,
527 				  const char *, omapi_value_t **);
528 isc_result_t omapi_stuff_values (omapi_object_t *,
529 				 omapi_object_t *,
530 				 omapi_object_t *);
531 isc_result_t omapi_object_create (omapi_object_t **, omapi_object_t *,
532 				  omapi_object_type_t *);
533 isc_result_t omapi_object_update (omapi_object_t *, omapi_object_t *,
534 				  omapi_object_t *, omapi_handle_t);
535 int omapi_data_string_cmp (omapi_data_string_t *, omapi_data_string_t *);
536 int omapi_ds_strcmp (omapi_data_string_t *, const char *);
537 int omapi_td_strcmp (omapi_typed_data_t *, const char *);
538 int omapi_td_strcasecmp (omapi_typed_data_t *, const char *);
539 isc_result_t omapi_make_value (omapi_value_t **, omapi_data_string_t *,
540 			       omapi_typed_data_t *, const char *, int);
541 isc_result_t omapi_make_const_value (omapi_value_t **, omapi_data_string_t *,
542 				     const unsigned char *,
543 				     unsigned, const char *, int);
544 isc_result_t omapi_make_int_value (omapi_value_t **, omapi_data_string_t *,
545 				   int, const char *, int);
546 isc_result_t omapi_make_uint_value (omapi_value_t **, omapi_data_string_t *,
547 				    unsigned int, const char *, int);
548 isc_result_t omapi_make_object_value (omapi_value_t **, omapi_data_string_t *,
549 				      omapi_object_t *, const char *, int);
550 isc_result_t omapi_make_handle_value (omapi_value_t **, omapi_data_string_t *,
551 				      omapi_object_t *, const char *, int);
552 isc_result_t omapi_make_string_value (omapi_value_t **, omapi_data_string_t *,
553 				      const char *, const char *, int);
554 isc_result_t omapi_get_int_value (unsigned long *, omapi_typed_data_t *);
555 
556 isc_result_t omapi_object_handle (omapi_handle_t *, omapi_object_t *);
557 isc_result_t omapi_handle_lookup (omapi_object_t **, omapi_handle_t);
558 isc_result_t omapi_handle_td_lookup (omapi_object_t **, omapi_typed_data_t *);
559 
560 void * dmalloc (unsigned, const char *, int);
561 void dfree (void *, const char *, int);
562 #if defined (DEBUG_MEMORY_LEAKAGE) || defined (DEBUG_MALLOC_POOL) || \
563 		defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
564 void dmalloc_reuse (void *, const char *, int, int);
565 void dmalloc_dump_outstanding (void);
566 #else
567 #define dmalloc_reuse(x,y,l,z)
568 #endif
569 #define MDL __FILE__, __LINE__
570 #if defined (DEBUG_RC_HISTORY)
571 void dump_rc_history (void *);
572 void rc_history_next (int);
573 #endif
574 void omapi_print_dmalloc_usage_by_caller (void);
575 isc_result_t omapi_object_allocate (omapi_object_t **,
576 				    omapi_object_type_t *,
577 				    size_t, const char *, int);
578 isc_result_t omapi_object_initialize (omapi_object_t *,
579 				      omapi_object_type_t *,
580 				      size_t, size_t, const char *, int);
581 isc_result_t omapi_object_reference (omapi_object_t **,
582 				     omapi_object_t *, const char *, int);
583 isc_result_t omapi_object_dereference (omapi_object_t **, const char *, int);
584 isc_result_t omapi_typed_data_new (const char *, int, omapi_typed_data_t **,
585 				   omapi_datatype_t, ...);
586 isc_result_t omapi_typed_data_reference (omapi_typed_data_t **,
587 					 omapi_typed_data_t *,
588 					 const char *, int);
589 isc_result_t omapi_typed_data_dereference (omapi_typed_data_t **,
590 					   const char *, int);
591 isc_result_t omapi_data_string_new (omapi_data_string_t **,
592 				    unsigned, const char *, int);
593 isc_result_t omapi_data_string_reference (omapi_data_string_t **,
594 					  omapi_data_string_t *,
595 					  const char *, int);
596 isc_result_t omapi_data_string_dereference (omapi_data_string_t **,
597 					    const char *, int);
598 isc_result_t omapi_value_new (omapi_value_t **, const char *, int);
599 isc_result_t omapi_value_reference (omapi_value_t **,
600 				    omapi_value_t *, const char *, int);
601 isc_result_t omapi_value_dereference (omapi_value_t **, const char *, int);
602 isc_result_t omapi_addr_list_new (omapi_addr_list_t **, unsigned,
603 				  const char *, int);
604 isc_result_t omapi_addr_list_reference (omapi_addr_list_t **,
605 					omapi_addr_list_t *,
606 					const char *, int);
607 isc_result_t omapi_addr_list_dereference (omapi_addr_list_t **,
608 					  const char *, int);
609 
610 isc_result_t omapi_array_allocate (omapi_array_t **, omapi_array_ref_t,
611 				   omapi_array_deref_t, const char *, int);
612 isc_result_t omapi_array_free (omapi_array_t **, const char *, int);
613 isc_result_t omapi_array_extend (omapi_array_t *, char *, int *,
614 				 const char *, int);
615 isc_result_t omapi_array_set (omapi_array_t *, void *, int, const char *, int);
616 isc_result_t omapi_array_lookup (char **,
617 				 omapi_array_t *, int, const char *, int);
618 OMAPI_ARRAY_TYPE_DECL(omapi_object, omapi_object_t);
619 #endif /* _OMAPIP_H_ */
620