ISC DHCP  4.4.2-P1
A reference DHCPv4 and DHCPv6 implementation
omapip.h
Go to the documentation of this file.
1 /* omapip.h
2 
3  Definitions for the object management API and protocol... */
4 
5 /*
6  * Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC")
7  * Copyright (c) 1996-2003 by Internet Software Consortium
8  *
9  * This Source Code Form is subject to the terms of the Mozilla Public
10  * License, v. 2.0. If a copy of the MPL was not distributed with this
11  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
14  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
16  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
19  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  *
21  * Internet Systems Consortium, Inc.
22  * 950 Charter Street
23  * Redwood City, CA 94063
24  * <info@isc.org>
25  * https://www.isc.org/
26  *
27  */
28 
29 #ifndef _OMAPIP_H_
30 #define _OMAPIP_H_
31 #include "result.h"
32 #include <stdarg.h>
33 
34 #include <dns/tsec.h>
35 
36 typedef unsigned int omapi_handle_t;
37 
38 struct __omapi_object;
39 typedef struct __omapi_object omapi_object_t;
40 
41 typedef enum {
47 
48 typedef struct {
49  int refcnt;
51  union {
52  struct {
53  unsigned len;
54 #define OMAPI_TYPED_DATA_NOBUFFER_LEN (sizeof (int) + \
55  sizeof (omapi_datatype_t) + \
56  sizeof (int))
57  unsigned char value [1];
58  } buffer;
59 #define OMAPI_TYPED_DATA_OBJECT_LEN (sizeof (int) + \
60  sizeof (omapi_datatype_t) + \
61  sizeof (omapi_object_t *))
63 #define OMAPI_TYPED_DATA_REF_LEN (sizeof (int) + \
64  sizeof (omapi_datatype_t) + \
65  3 * sizeof (void *))
66  struct {
67  void *ptr;
68  isc_result_t (*reference) (void *,
69  void *, const char *, int);
70  isc_result_t (*dereference) (void *,
71  const char *, int);
72  } ref;
73 #define OMAPI_TYPED_DATA_INT_LEN (sizeof (int) + \
74  sizeof (omapi_datatype_t) + \
75  sizeof (int))
76  int integer;
77  } u;
79 
80 typedef struct {
81  int refcnt;
82  unsigned len;
83 #define OMAPI_DATA_STRING_EMPTY_SIZE (2 * sizeof (int))
84  unsigned char value [1];
86 
87 typedef struct {
88  int refcnt;
92 
93 typedef struct __omapi_object_type_t {
94  const char *name;
96 
97  isc_result_t (*set_value) (omapi_object_t *, omapi_object_t *,
100  isc_result_t (*get_value) (omapi_object_t *,
101  omapi_object_t *,
103  isc_result_t (*destroy) (omapi_object_t *, const char *, int);
104  isc_result_t (*signal_handler) (omapi_object_t *,
105  const char *, va_list);
106  isc_result_t (*stuff_values) (omapi_object_t *,
108  isc_result_t (*lookup) (omapi_object_t **, omapi_object_t *,
109  omapi_object_t *);
110  isc_result_t (*create) (omapi_object_t **, omapi_object_t *);
111  isc_result_t (*remove) (omapi_object_t *, omapi_object_t *);
112  isc_result_t (*freer) (omapi_object_t *, const char *, int);
113  isc_result_t (*allocator) (omapi_object_t **, const char *, int);
114  isc_result_t (*sizer) (size_t);
115  size_t size;
116  int rc_flag;
117  isc_result_t (*initialize) (omapi_object_t *, const char *, int);
119 
120 #define OMAPI_OBJECT_PREAMBLE \
121  omapi_object_type_t *type; \
122  int refcnt; \
123  omapi_handle_t handle; \
124  omapi_object_t *outer, *inner
125 
126 /* The omapi handle structure. */
129 };
130 
131 /* The port on which applications should listen for OMAPI connections. */
132 #define OMAPI_PROTOCOL_PORT 7911
133 
134 typedef struct {
135  unsigned addrtype;
136  unsigned addrlen;
137  unsigned char address [16];
138  unsigned port;
139 } omapi_addr_t;
140 
141 typedef struct {
142  int refcnt;
143  unsigned count;
146 
147 typedef struct auth_key {
149  char *name;
150  char *algorithm;
152  dns_tsec_t *tsec_key;
154 
155 #define OMAPI_CREATE 1
156 #define OMAPI_UPDATE 2
157 #define OMAPI_EXCL 4
158 #define OMAPI_NOTIFY_PROTOCOL 8
159 
160 #define OMAPI_OBJECT_ALLOC(name, stype, type) \
161 isc_result_t name##_allocate (stype **p, const char *file, int line) \
162 { \
163  return omapi_object_allocate ((omapi_object_t **)p, \
164  type, 0, file, line); \
165 } \
166  \
167 isc_result_t name##_reference (stype **pptr, stype *ptr, \
168  const char *file, int line) \
169 { \
170  return omapi_object_reference ((omapi_object_t **)pptr, \
171  (omapi_object_t *)ptr, file, line); \
172 } \
173  \
174 isc_result_t name##_dereference (stype **ptr, const char *file, int line) \
175 { \
176  return omapi_object_dereference ((omapi_object_t **)ptr, file, line); \
177 }
178 
179 #define OMAPI_OBJECT_ALLOC_DECL(name, stype, type) \
180 isc_result_t name##_allocate (stype **p, const char *file, int line); \
181 isc_result_t name##_reference (stype **pptr, stype *ptr, \
182  const char *file, int line); \
183 isc_result_t name##_dereference (stype **ptr, const char *file, int line);
184 
185 typedef isc_result_t (*omapi_array_ref_t) (char **, char *, const char *, int);
186 typedef isc_result_t (*omapi_array_deref_t) (char **, const char *, int);
187 
188 /* An extensible array type. */
189 typedef struct {
190  char **data;
193  int count;
194  int max;
195 } omapi_array_t;
196 
197 #define OMAPI_ARRAY_TYPE(name, stype) \
198 isc_result_t name##_array_allocate (omapi_array_t **p, \
199  const char *file, int line) \
200 { \
201  return (omapi_array_allocate \
202  (p, \
203  (omapi_array_ref_t)name##_reference, \
204  (omapi_array_deref_t)name##_dereference, \
205  file, line)); \
206 } \
207  \
208 isc_result_t name##_array_free (omapi_array_t **p, \
209  const char *file, int line) \
210 { \
211  return omapi_array_free (p, file, line); \
212 } \
213  \
214 isc_result_t name##_array_extend (omapi_array_t *pptr, stype *ptr, int *index,\
215  const char *file, int line) \
216 { \
217  return omapi_array_extend (pptr, (char *)ptr, index, file, line); \
218 } \
219  \
220 isc_result_t name##_array_set (omapi_array_t *pptr, stype *ptr, int index, \
221  const char *file, int line) \
222 { \
223  return omapi_array_set (pptr, (char *)ptr, index, file, line); \
224 } \
225  \
226 isc_result_t name##_array_lookup (stype **ptr, omapi_array_t *pptr, \
227  int index, const char *file, int line) \
228 { \
229  return omapi_array_lookup ((char **)ptr, pptr, index, file, line); \
230 }
231 
232 #define OMAPI_ARRAY_TYPE_DECL(name, stype) \
233 isc_result_t name##_array_allocate (omapi_array_t **, const char *, int); \
234 isc_result_t name##_array_free (omapi_array_t **, const char *, int); \
235 isc_result_t name##_array_extend (omapi_array_t *, stype *, int *, \
236  const char *, int); \
237 isc_result_t name##_array_set (omapi_array_t *, \
238  stype *, int, const char *, int); \
239 isc_result_t name##_array_lookup (stype **, \
240  omapi_array_t *, int, const char *, int)
241 
242 #define omapi_array_foreach_begin(array, stype, var) \
243  { \
244  int omapi_array_foreach_index; \
245  stype *var = (stype *)0; \
246  for (omapi_array_foreach_index = 0; \
247  array && \
248  omapi_array_foreach_index < (array) -> count; \
249  omapi_array_foreach_index++) { \
250  if ((array) -> data [omapi_array_foreach_index]) { \
251  ((*(array) -> ref) \
252  ((char **)&var, \
253  (array) -> data [omapi_array_foreach_index],\
254  MDL));
255 
256 #define omapi_array_foreach_end(array, stype, var) \
257  (*(array) -> deref) ((char **)&var, MDL); \
258  } \
259  } \
260  }
261 
263  const char *, unsigned, omapi_object_t *);
265  omapi_addr_t *);
266 isc_result_t omapi_protocol_listen (omapi_object_t *, unsigned, int);
269  isc_result_t (*)
270  (omapi_object_t *,
271  omapi_addr_t *),
272  isc_result_t (*)
273  (omapi_object_t *,
274  omapi_auth_key_t *));
276 isc_result_t omapi_protocol_send_intro (omapi_object_t *, unsigned, unsigned);
287  omapi_value_t **);
289  omapi_object_t *,
290  omapi_object_t *);
291 
292 isc_result_t omapi_protocol_destroy (omapi_object_t *, const char *, int);
294  omapi_object_t *,
295  omapi_object_t *,
296  omapi_object_t *);
298  const char *, va_list);
300  omapi_object_t *,
304  omapi_object_t *,
306  omapi_value_t **);
308  const char *, int);
310  const char *, va_list);
312  omapi_object_t *,
313  omapi_object_t *);
315  isc_result_t, unsigned, const char *);
317  const char *, omapi_object_t *,
318  unsigned);
320  unsigned, omapi_object_t *);
321 
322 isc_result_t omapi_connect (omapi_object_t *, const char *, unsigned);
323 isc_result_t omapi_disconnect (omapi_object_t *, int);
327 isc_result_t omapi_connection_reader (omapi_object_t *);
328 isc_result_t omapi_connection_writer (omapi_object_t *);
329 isc_result_t omapi_connection_reaper (omapi_object_t *);
331  unsigned *);
337  omapi_value_t **);
338 isc_result_t omapi_connection_destroy (omapi_object_t *, const char *, int);
340  const char *, va_list);
342  omapi_object_t *,
343  omapi_object_t *);
346 isc_result_t omapi_connection_put_name (omapi_object_t *, const char *);
347 isc_result_t omapi_connection_put_string (omapi_object_t *, const char *);
349  omapi_object_t *h);
351  const char *,
352  u_int32_t);
353 isc_result_t omapi_listen (omapi_object_t *, unsigned, int);
354 isc_result_t omapi_listen_addr (omapi_object_t *,
355  omapi_addr_t *, int);
358 isc_result_t omapi_accept (omapi_object_t *);
360  isc_result_t (*)
361  (omapi_object_t *,
362  omapi_addr_t *));
368  omapi_value_t **);
369 isc_result_t omapi_listener_destroy (omapi_object_t *, const char *, int);
371  const char *, va_list);
373  omapi_object_t *,
374  omapi_object_t *);
375 
377  int (*)(omapi_object_t *),
378  int (*)(omapi_object_t *),
379  isc_result_t (*)(omapi_object_t *),
380  isc_result_t (*)(omapi_object_t *),
381  isc_result_t (*)(omapi_object_t *));
383  int (*)(omapi_object_t *),
384  int (*)(omapi_object_t *),
385  isc_result_t (*)(omapi_object_t *),
386  isc_result_t (*)(omapi_object_t *),
387  isc_result_t (*)(omapi_object_t *));
389 isc_result_t omapi_dispatch (struct timeval *);
390 isc_result_t omapi_wait_for_completion (omapi_object_t *, struct timeval *);
391 isc_result_t omapi_one_dispatch (omapi_object_t *, struct timeval *);
397 isc_result_t omapi_io_destroy (omapi_object_t *, const char *, int);
398 isc_result_t omapi_io_signal_handler (omapi_object_t *, const char *, va_list);
399 isc_result_t omapi_io_stuff_values (omapi_object_t *,
400  omapi_object_t *,
401  omapi_object_t *);
403  const char *, va_list);
404 isc_result_t omapi_io_state_foreach (isc_result_t (*func) (omapi_object_t *,
405  void *),
406  void *p);
407 
408 isc_result_t omapi_generic_new (omapi_object_t **, const char *, int);
414  omapi_value_t **);
415 isc_result_t omapi_generic_destroy (omapi_object_t *, const char *, int);
417  const char *, va_list);
419  omapi_object_t *,
420  omapi_object_t *);
422 
423 isc_result_t omapi_message_new (omapi_object_t **, const char *, int);
429  omapi_value_t **);
430 isc_result_t omapi_message_destroy (omapi_object_t *, const char *, int);
432  const char *, va_list);
434  omapi_object_t *,
435  omapi_object_t *);
436 isc_result_t omapi_message_register (omapi_object_t *);
439 
440 OMAPI_OBJECT_ALLOC_DECL (omapi_auth_key,
442 isc_result_t omapi_auth_key_new (omapi_auth_key_t **, const char *, int);
443 isc_result_t omapi_auth_key_destroy (omapi_object_t *, const char *, int);
444 isc_result_t omapi_auth_key_enter (omapi_auth_key_t *);
445 isc_result_t omapi_auth_key_lookup_name (omapi_auth_key_t **, const char *);
446 isc_result_t omapi_auth_key_lookup (omapi_object_t **,
447  omapi_object_t *,
448  omapi_object_t *);
451  omapi_value_t **);
453  omapi_object_t *,
454  omapi_object_t *);
455 
466 
468 
470 isc_result_t omapi_init (void);
472  const char *,
473  isc_result_t (*)
474  (omapi_object_t *,
475  omapi_object_t *,
478  isc_result_t (*)
479  (omapi_object_t *,
480  omapi_object_t *,
482  omapi_value_t **),
483  isc_result_t (*) (omapi_object_t *,
484  const char *, int),
485  isc_result_t (*) (omapi_object_t *,
486  const char *,
487  va_list),
488  isc_result_t (*) (omapi_object_t *,
489  omapi_object_t *,
490  omapi_object_t *),
491  isc_result_t (*) (omapi_object_t **,
492  omapi_object_t *,
493  omapi_object_t *),
494  isc_result_t (*) (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  const char *, int),
500  isc_result_t (*) (omapi_object_t **,
501  const char *, int),
502  isc_result_t (*) (size_t), size_t,
503  isc_result_t (*) (omapi_object_t *,
504  const char *, int),
505  int);
506 isc_result_t omapi_signal (omapi_object_t *, const char *, ...);
507 isc_result_t omapi_signal_in (omapi_object_t *, const char *, ...);
512  const char *, omapi_typed_data_t *);
514  const char *, int);
516  const char *, int);
518  const char *, omapi_object_t *);
520  const char *, const char *);
523  omapi_value_t **);
525  const char *, omapi_value_t **);
526 isc_result_t omapi_stuff_values (omapi_object_t *,
527  omapi_object_t *,
528  omapi_object_t *);
534 int omapi_ds_strcmp (omapi_data_string_t *, const char *);
535 int omapi_td_strcmp (omapi_typed_data_t *, const char *);
536 int omapi_td_strcasecmp (omapi_typed_data_t *, const char *);
538  omapi_typed_data_t *, const char *, int);
540  const unsigned char *,
541  unsigned, const char *, int);
543  int, const char *, int);
545  unsigned int, const char *, int);
547  omapi_object_t *, const char *, int);
549  omapi_object_t *, const char *, int);
551  const char *, const char *, int);
552 isc_result_t omapi_get_int_value (unsigned long *, omapi_typed_data_t *);
553 
557 
558 void * dmalloc (size_t, const char *, int);
559 void dfree (void *, const char *, int);
560 #if defined (DEBUG_MEMORY_LEAKAGE) || defined (DEBUG_MALLOC_POOL) || \
561  defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
562 void dmalloc_reuse (void *, const char *, int, int);
563 void dmalloc_dump_outstanding (void);
564 #else
565 #define dmalloc_reuse(x,y,l,z)
566 #endif
567 #define MDL __FILE__, __LINE__
568 #if defined (DEBUG_RC_HISTORY)
569 void dump_rc_history (void *);
570 void rc_history_next (int);
571 #endif
573 isc_result_t omapi_object_allocate (omapi_object_t **,
575  size_t, const char *, int);
578  size_t, size_t, const char *, int);
579 isc_result_t omapi_object_reference (omapi_object_t **,
580  omapi_object_t *, const char *, int);
581 isc_result_t omapi_object_dereference (omapi_object_t **, const char *, int);
582 isc_result_t omapi_typed_data_new (const char *, int, omapi_typed_data_t **,
583  omapi_datatype_t, ...);
586  const char *, int);
588  const char *, int);
590  unsigned, const char *, int);
593  const char *, int);
595  const char *, int);
596 isc_result_t omapi_value_new (omapi_value_t **, const char *, int);
597 isc_result_t omapi_value_reference (omapi_value_t **,
598  omapi_value_t *, const char *, int);
599 isc_result_t omapi_value_dereference (omapi_value_t **, const char *, int);
600 isc_result_t omapi_addr_list_new (omapi_addr_list_t **, unsigned,
601  const char *, int);
604  const char *, int);
606  const char *, int);
607 
609  omapi_array_deref_t, const char *, int);
610 isc_result_t omapi_array_free (omapi_array_t **, const char *, int);
611 isc_result_t omapi_array_extend (omapi_array_t *, char *, int *,
612  const char *, int);
613 isc_result_t omapi_array_set (omapi_array_t *, void *, int, const char *, int);
614 isc_result_t omapi_array_lookup (char **,
615  omapi_array_t *, int, const char *, int);
617 #endif /* _OMAPIP_H_ */
isc_boolean_t
Definition: data.h:150
isc_result_t omapi_value_dereference(omapi_value_t **, const char *, int)
Definition: alloc.c:1060
isc_result_t omapi_protocol_connect(omapi_object_t *, const char *, unsigned, omapi_object_t *)
isc_result_t omapi_connection_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: connection.c:911
isc_result_t omapi_generic_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: generic.c:243
void omapi_print_dmalloc_usage_by_caller(void)
isc_result_t omapi_generic_clear_flags(omapi_object_t *)
Definition: generic.c:286
isc_result_t omapi_message_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: message.c:254
isc_result_t omapi_protocol_send_message(omapi_object_t *, omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:148
isc_result_t omapi_protocol_send_open(omapi_object_t *, omapi_object_t *, const char *, omapi_object_t *, unsigned)
Definition: protocol.c:1197
isc_result_t omapi_generic_new(omapi_object_t **, const char *, int)
isc_result_t omapi_make_object_value(omapi_value_t **, omapi_data_string_t *, omapi_object_t *, const char *, int)
Definition: support.c:742
isc_result_t omapi_connection_put_string(omapi_object_t *, const char *)
Definition: buffer.c:689
int omapi_data_string_cmp(omapi_data_string_t *, omapi_data_string_t *)
Definition: support.c:562
isc_result_t omapi_one_dispatch(omapi_object_t *, struct timeval *)
Definition: dispatch.c:479
isc_result_t omapi_typed_data_reference(omapi_typed_data_t **, omapi_typed_data_t *, const char *, int)
Definition: alloc.c:880
omapi_object_type_t * omapi_type_io_object
Definition: support.c:35
struct __omapi_object_type_t omapi_object_type_t
isc_result_t omapi_set_boolean_value(omapi_object_t *, omapi_object_t *, const char *, int)
Definition: support.c:371
isc_result_t omapi_connect_list(omapi_object_t *, omapi_addr_list_t *, omapi_addr_t *)
Definition: connection.c:101
isc_result_t omapi_message_destroy(omapi_object_t *, const char *, int)
Definition: message.c:205
isc_result_t omapi_register_io_object(omapi_object_t *, int(*)(omapi_object_t *), int(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *))
Definition: dispatch.c:198
isc_result_t omapi_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: support.c:303
isc_result_t omapi_message_process(omapi_object_t *, omapi_object_t *)
Definition: message.c:358
isc_result_t omapi_object_dereference(omapi_object_t **, const char *, int)
Definition: alloc.c:593
isc_result_t omapi_set_object_value(omapi_object_t *, omapi_object_t *, const char *, omapi_object_t *)
Definition: support.c:419
int omapi_connection_writefd(omapi_object_t *)
Definition: connection.c:594
isc_result_t omapi_unregister_io_object(omapi_object_t *)
Definition: dispatch.c:355
isc_result_t omapi_protocol_listen(omapi_object_t *, unsigned, int)
Definition: protocol.c:997
isc_result_t omapi_message_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: message.c:165
isc_result_t omapi_data_string_new(omapi_data_string_t **, unsigned, const char *, int)
Definition: alloc.c:950
isc_result_t omapi_value_reference(omapi_value_t **, omapi_value_t *, const char *, int)
Definition: alloc.c:1038
const char int
Definition: omapip.h:442
isc_result_t omapi_listen_addr(omapi_object_t *, omapi_addr_t *, int)
Definition: listener.c:64
int omapi_td_strcasecmp(omapi_typed_data_t *, const char *)
Definition: support.c:626
isc_result_t omapi_dispatch(struct timeval *)
Definition: dispatch.c:414
isc_result_t omapi_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: support.c:467
isc_result_t omapi_message_register(omapi_object_t *)
Definition: message.c:267
isc_result_t omapi_protocol_destroy(omapi_object_t *, const char *, int)
Definition: protocol.c:909
isc_result_t omapi_connection_reader(omapi_object_t *)
Definition: buffer.c:131
isc_result_t omapi_addr_list_dereference(omapi_addr_list_t **, const char *, int)
Definition: alloc.c:1142
isc_result_t omapi_make_value(omapi_value_t **, omapi_data_string_t *, omapi_typed_data_t *, const char *, int)
Definition: support.c:651
isc_result_t omapi_io_destroy(omapi_object_t *, const char *, int)
Definition: dispatch.c:805
isc_result_t omapi_protocol_ready(omapi_object_t *)
isc_result_t omapi_auth_key_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: auth.c:192
isc_result_t omapi_object_handle(omapi_handle_t *, omapi_object_t *)
Definition: handle.c:72
isc_result_t omapi_protocol_listener_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: protocol.c:1088
isc_boolean_t omapi_protocol_authenticated(omapi_object_t *)
Definition: protocol.c:953
isc_result_t omapi_addr_list_reference(omapi_addr_list_t **, omapi_addr_list_t *, const char *, int)
Definition: alloc.c:1120
#define dmalloc_reuse(x, y, l, z)
Definition: omapip.h:565
isc_result_t omapi_connection_writer(omapi_object_t *)
Definition: buffer.c:448
int omapi_listener_readfd(omapi_object_t *)
Definition: listener.c:201
isc_result_t omapi_protocol_add_auth(omapi_object_t *, omapi_object_t *, omapi_handle_t)
Definition: protocol.c:768
isc_result_t omapi_disconnect(omapi_object_t *, int)
Definition: connection.c:455
omapi_object_type_t * omapi_type_waiter
Definition: support.c:40
isc_result_t omapi_object_create(omapi_object_t **, omapi_object_t *, omapi_object_type_t *)
Definition: support.c:521
isc_result_t omapi_init(void)
Definition: support.c:61
omapi_object_type_t * omapi_type_auth_key
Definition: support.c:43
isc_result_t omapi_connection_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: connection.c:980
isc_result_t omapi_protocol_send_intro(omapi_object_t *, unsigned, unsigned)
Definition: protocol.c:105
isc_result_t omapi_listener_signal_handler(omapi_object_t *, const char *, va_list)
Definition: listener.c:461
isc_result_t omapi_io_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: dispatch.c:769
isc_result_t omapi_set_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_typed_data_t *)
Definition: support.c:352
isc_result_t omapi_handle_td_lookup(omapi_object_t **, omapi_typed_data_t *)
Definition: handle.c:282
isc_result_t omapi_array_extend(omapi_array_t *, char *, int *, const char *, int)
Definition: array.c:74
isc_result_t omapi_connection_reaper(omapi_object_t *)
Definition: connection.c:741
omapi_object_type_t * omapi_type_remote
Definition: support.c:41
isc_result_t omapi_auth_key_lookup_name(omapi_auth_key_t **, const char *)
Definition: auth.c:121
isc_result_t omapi_listener_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: listener.c:413
int omapi_td_strcmp(omapi_typed_data_t *, const char *)
Definition: support.c:601
isc_result_t omapi_connection_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: connection.c:1094
isc_result_t omapi_protocol_accept(omapi_object_t *)
isc_result_t omapi_auth_key_lookup(omapi_object_t **, omapi_object_t *, omapi_object_t *)
Definition: auth.c:131
isc_result_t omapi_generic_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: generic.c:168
isc_result_t omapi_connect(omapi_object_t *, const char *, unsigned)
isc_result_t omapi_make_uint_value(omapi_value_t **, omapi_data_string_t *, unsigned int, const char *, int)
Definition: support.c:734
#define OMAPI_OBJECT_ALLOC_DECL(name, stype, type)
Definition: omapip.h:179
isc_result_t omapi_object_type_register(omapi_object_type_t **, const char *, isc_result_t(*)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *), isc_result_t(*)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **), isc_result_t(*)(omapi_object_t *, const char *, int), isc_result_t(*)(omapi_object_t *, const char *, va_list), isc_result_t(*)(omapi_object_t *, omapi_object_t *, omapi_object_t *), isc_result_t(*)(omapi_object_t **, omapi_object_t *, omapi_object_t *), isc_result_t(*)(omapi_object_t **, omapi_object_t *), isc_result_t(*)(omapi_object_t *, omapi_object_t *), isc_result_t(*)(omapi_object_t *, const char *, int), isc_result_t(*)(omapi_object_t **, const char *, int), isc_result_t(*)(size_t), size_t, isc_result_t(*)(omapi_object_t *, const char *, int), int)
Definition: support.c:193
isc_result_t omapi_protocol_send_status(omapi_object_t *, omapi_object_t *, isc_result_t, unsigned, const char *)
Definition: protocol.c:1140
isc_result_t omapi_protocol_listener_destroy(omapi_object_t *, const char *, int)
Definition: protocol.c:1116
omapi_datatype_t
Definition: omapip.h:41
@ omapi_datatype_string
Definition: omapip.h:43
@ omapi_datatype_object
Definition: omapip.h:45
@ omapi_datatype_int
Definition: omapip.h:42
@ omapi_datatype_data
Definition: omapip.h:44
isc_result_t omapi_array_set(omapi_array_t *, void *, int, const char *, int)
Definition: array.c:87
isc_result_t omapi_typed_data_dereference(omapi_typed_data_t **, const char *, int)
Definition: alloc.c:901
int omapi_connection_readfd(omapi_object_t *)
Definition: connection.c:577
omapi_object_type_t * omapi_type_generic
Definition: support.c:37
isc_result_t omapi_wait_for_completion(omapi_object_t *, struct timeval *)
Definition: dispatch.c:420
isc_result_t omapi_protocol_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: protocol.c:884
isc_result_t omapi_make_string_value(omapi_value_t **, omapi_data_string_t *, const char *, const char *, int)
Definition: support.c:807
isc_result_t omapi_connection_destroy(omapi_object_t *, const char *, int)
Definition: connection.c:1054
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
Definition: alloc.c:571
isc_result_t omapi_protocol_lookup_auth(omapi_object_t **, omapi_object_t *, omapi_handle_t)
Definition: protocol.c:828
isc_result_t omapi_protocol_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: protocol.c:846
isc_result_t omapi_connection_signal_handler(omapi_object_t *, const char *, va_list)
Definition: connection.c:1075
void * dmalloc(size_t, const char *, int)
Definition: alloc.c:57
omapi_object_type_t * omapi_type_protocol
Definition: support.c:38
isc_result_t omapi_listener_accept(omapi_object_t *)
isc_result_t omapi_io_state_foreach(isc_result_t(*func)(omapi_object_t *, void *), void *p)
calls a given function on every object
Definition: dispatch.c:904
isc_result_t omapi_array_free(omapi_array_t **, const char *, int)
Definition: array.c:53
isc_result_t omapi_data_string_dereference(omapi_data_string_t **, const char *, int)
Definition: alloc.c:988
isc_result_t omapi_protocol_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:937
isc_result_t omapi_array_lookup(char **, omapi_array_t *, int, const char *, int)
Definition: array.c:146
isc_result_t omapi_io_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: dispatch.c:849
isc_result_t omapi_signal_in(omapi_object_t *, const char *,...)
Definition: support.c:285
isc_result_t omapi_io_signal_handler(omapi_object_t *, const char *, va_list)
Definition: dispatch.c:837
isc_result_t omapi_signal(omapi_object_t *, const char *,...)
Definition: support.c:267
isc_result_t omapi_reregister_io_object(omapi_object_t *, int(*)(omapi_object_t *), int(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *), isc_result_t(*)(omapi_object_t *))
Definition: dispatch.c:305
isc_result_t omapi_connection_write_typed_data(omapi_object_t *, omapi_typed_data_t *)
Definition: buffer.c:632
isc_result_t omapi_handle_lookup(omapi_object_t **, omapi_handle_t)
Definition: handle.c:238
isc_result_t omapi_object_update(omapi_object_t *, omapi_object_t *, omapi_object_t *, omapi_handle_t)
Definition: support.c:529
isc_result_t omapi_listener_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: listener.c:476
isc_result_t omapi_addr_list_new(omapi_addr_list_t **, unsigned, const char *, int)
Definition: alloc.c:1104
unsigned int omapi_handle_t
Definition: omapip.h:36
int omapi_ds_strcmp(omapi_data_string_t *, const char *)
Definition: support.c:581
isc_result_t omapi_io_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: dispatch.c:783
void omapi_type_relinquish(void)
isc_result_t(* omapi_array_deref_t)(char **, const char *, int)
Definition: omapip.h:186
isc_result_t omapi_listener_configure_security(omapi_object_t *, isc_result_t(*)(omapi_object_t *, omapi_addr_t *))
Definition: listener.c:397
isc_result_t omapi_make_handle_value(omapi_value_t **, omapi_data_string_t *, omapi_object_t *, const char *, int)
Definition: support.c:772
omapi_object_type_t * omapi_type_connection
Definition: support.c:33
isc_result_t omapi_set_string_value(omapi_object_t *, omapi_object_t *, const char *, const char *)
Definition: support.c:443
isc_result_t omapi_connection_output_auth_length(omapi_object_t *, unsigned *)
Definition: connection.c:896
isc_result_t omapi_typed_data_new(const char *, int, omapi_typed_data_t **, omapi_datatype_t,...)
Definition: alloc.c:803
isc_result_t omapi_protocol_listener_stuff(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:1127
isc_result_t omapi_protocol_signal_handler(omapi_object_t *, const char *, va_list)
Definition: protocol.c:343
isc_result_t omapi_message_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: message.c:79
isc_result_t omapi_generic_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: generic.c:44
isc_result_t omapi_message_unregister(omapi_object_t *)
Definition: message.c:295
isc_result_t omapi_generic_destroy(omapi_object_t *, const char *, int)
Definition: generic.c:202
isc_result_t omapi_data_string_reference(omapi_data_string_t **, omapi_data_string_t *, const char *, int)
Definition: alloc.c:967
isc_result_t omapi_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: support.c:508
omapi_object_type_t * omapi_type_listener
Definition: support.c:34
#define OMAPI_ARRAY_TYPE_DECL(name, stype)
Definition: omapip.h:232
isc_result_t omapi_array_allocate(omapi_array_t **, omapi_array_ref_t, omapi_array_deref_t, const char *, int)
Definition: array.c:35
isc_result_t omapi_connection_put_named_uint32(omapi_object_t *, const char *, u_int32_t)
Definition: buffer.c:726
isc_result_t omapi_protocol_listener_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: protocol.c:1102
void dfree(void *, const char *, int)
Definition: alloc.c:145
isc_result_t omapi_auth_key_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: auth.c:224
isc_result_t omapi_get_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_value_t **)
Definition: support.c:482
isc_result_t omapi_connection_put_handle(omapi_object_t *c, omapi_object_t *h)
Definition: buffer.c:709
isc_result_t omapi_get_int_value(unsigned long *, omapi_typed_data_t *)
Definition: support.c:835
isc_result_t omapi_generic_signal_handler(omapi_object_t *, const char *, va_list)
Definition: generic.c:228
isc_result_t omapi_auth_key_enter(omapi_auth_key_t *)
Definition: auth.c:73
struct auth_key omapi_auth_key_t
isc_result_t omapi_accept(omapi_object_t *)
Definition: listener.c:213
isc_result_t omapi_object_initialize(omapi_object_t *, omapi_object_type_t *, size_t, size_t, const char *, int)
Definition: alloc.c:559
omapi_object_type_t * omapi_type_protocol_listener
Definition: support.c:39
isc_result_t omapi_message_signal_handler(omapi_object_t *, const char *, va_list)
Definition: message.c:228
isc_result_t omapi_listen(omapi_object_t *, unsigned, int)
isc_result_t omapi_auth_key_destroy(omapi_object_t *, const char *, int)
Definition: auth.c:49
isc_result_t omapi_connection_put_name(omapi_object_t *, const char *)
Definition: buffer.c:678
isc_result_t omapi_listener_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: listener.c:427
isc_result_t omapi_protocol_configure_security(omapi_object_t *, isc_result_t(*)(omapi_object_t *, omapi_addr_t *), isc_result_t(*)(omapi_object_t *, omapi_auth_key_t *))
Definition: protocol.c:966
isc_result_t omapi_connection_connect(omapi_object_t *)
Definition: connection.c:603
isc_result_t omapi_object_allocate(omapi_object_t **, omapi_object_type_t *, size_t, const char *, int)
Definition: alloc.c:515
isc_result_t(* omapi_array_ref_t)(char **, char *, const char *, int)
Definition: omapip.h:185
isc_result_t omapi_protocol_send_update(omapi_object_t *, omapi_object_t *, unsigned, omapi_object_t *)
Definition: protocol.c:1257
isc_result_t omapi_message_new(omapi_object_t **, const char *, int)
omapi_object_type_t * omapi_type_message
Definition: support.c:42
isc_result_t omapi_waiter_signal_handler(omapi_object_t *, const char *, va_list)
Definition: dispatch.c:862
isc_result_t omapi_listener_destroy(omapi_object_t *, const char *, int)
Definition: listener.c:441
omapi_object_type_t * omapi_object_types
Definition: support.c:45
isc_result_t omapi_make_int_value(omapi_value_t **, omapi_data_string_t *, int, const char *, int)
Definition: support.c:709
isc_result_t omapi_protocol_listener_signal(omapi_object_t *, const char *, va_list)
Definition: protocol.c:1032
isc_result_t omapi_make_const_value(omapi_value_t **, omapi_data_string_t *, const unsigned char *, unsigned, const char *, int)
Definition: support.c:679
isc_result_t omapi_value_new(omapi_value_t **, const char *, int)
Definition: alloc.c:1026
isc_result_t omapi_set_int_value(omapi_object_t *, omapi_object_t *, const char *, int)
Definition: support.c:395
struct __omapi_object_type_t * next
Definition: omapip.h:95
isc_result_t(* allocator)(omapi_object_t **, const char *, int)
Definition: omapip.h:113
isc_result_t(* set_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: omapip.h:97
isc_result_t(* signal_handler)(omapi_object_t *, const char *, va_list)
Definition: omapip.h:104
isc_result_t(* create)(omapi_object_t **, omapi_object_t *)
Definition: omapip.h:110
isc_result_t(* get_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: omapip.h:100
const char * name
Definition: omapip.h:94
isc_result_t(* stuff_values)(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: omapip.h:106
isc_result_t(* freer)(omapi_object_t *, const char *, int)
Definition: omapip.h:112
isc_result_t(* sizer)(size_t)
Definition: omapip.h:114
isc_result_t(* lookup)(omapi_object_t **, omapi_object_t *, omapi_object_t *)
Definition: omapip.h:108
isc_result_t(* destroy)(omapi_object_t *, const char *, int)
Definition: omapip.h:103
isc_result_t(* remove)(omapi_object_t *, omapi_object_t *)
Definition: omapip.h:111
isc_result_t(* initialize)(omapi_object_t *, const char *, int)
Definition: omapip.h:117
OMAPI_OBJECT_PREAMBLE
Definition: omapip.h:128
char * name
Definition: omapip.h:149
OMAPI_OBJECT_PREAMBLE
Definition: omapip.h:148
dns_tsec_t * tsec_key
Definition: omapip.h:152
omapi_data_string_t * key
Definition: omapip.h:151
char * algorithm
Definition: omapip.h:150
Definition: tree.h:60
unsigned count
Definition: omapip.h:143
omapi_addr_t * addresses
Definition: omapip.h:144
unsigned addrlen
Definition: omapip.h:136
unsigned addrtype
Definition: omapip.h:135
unsigned port
Definition: omapip.h:138
omapi_array_deref_t deref
Definition: omapip.h:192
char ** data
Definition: omapip.h:190
omapi_array_ref_t ref
Definition: omapip.h:191
unsigned len
Definition: omapip.h:82
omapi_datatype_t type
Definition: omapip.h:50
omapi_object_t * object
Definition: omapip.h:62
unsigned len
Definition: omapip.h:53
int refcnt
Definition: omapip.h:88
omapi_data_string_t * name
Definition: omapip.h:89
omapi_typed_data_t * value
Definition: omapip.h:90
Definition: data.h:205