ISC DHCP  4.4.2b1
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;
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 
262 isc_result_t omapi_protocol_connect (omapi_object_t *,
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 *));
275 isc_result_t omapi_protocol_accept (omapi_object_t *);
276 isc_result_t omapi_protocol_send_intro (omapi_object_t *, unsigned, unsigned);
277 isc_result_t omapi_protocol_ready (omapi_object_t *);
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);
356 isc_result_t omapi_listener_accept (omapi_object_t *);
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 
469 void omapi_type_relinquish (void);
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_ */
__omapi_object_type_t::create
isc_result_t(* create)(omapi_object_t **, omapi_object_t *)
Definition: omapip.h:110
omapi_auth_key_t
struct auth_key omapi_auth_key_t
omapi_protocol_connect
isc_result_t omapi_protocol_connect(omapi_object_t *, const char *, unsigned, omapi_object_t *)
omapi_object_reference
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
Definition: alloc.c:571
omapi_message_new
isc_result_t omapi_message_new(omapi_object_t **, const char *, int)
omapi_addr_list_new
isc_result_t omapi_addr_list_new(omapi_addr_list_t **, unsigned, const char *, int)
Definition: alloc.c:1104
omapi_type_protocol_listener
omapi_object_type_t * omapi_type_protocol_listener
Definition: support.c:39
omapi_auth_key_destroy
isc_result_t omapi_auth_key_destroy(omapi_object_t *, const char *, int)
Definition: auth.c:49
omapi_make_const_value
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
omapi_data_string_t::len
unsigned len
Definition: omapip.h:82
omapi_generic_stuff_values
isc_result_t omapi_generic_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: generic.c:243
omapi_message_set_value
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
omapi_array_t::deref
omapi_array_deref_t deref
Definition: omapip.h:192
omapi_value_reference
isc_result_t omapi_value_reference(omapi_value_t **, omapi_value_t *, const char *, int)
Definition: alloc.c:1038
omapi_type_waiter
omapi_object_type_t * omapi_type_waiter
Definition: support.c:40
omapi_typed_data_new
isc_result_t omapi_typed_data_new(const char *, int, omapi_typed_data_t **, omapi_datatype_t,...)
Definition: alloc.c:803
omapi_set_value
isc_result_t omapi_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: support.c:303
__omapi_object_type_t
Definition: omapip.h:93
omapi_message_process
isc_result_t omapi_message_process(omapi_object_t *, omapi_object_t *)
Definition: message.c:358
omapi_protocol_listen
isc_result_t omapi_protocol_listen(omapi_object_t *, unsigned, int)
Definition: protocol.c:997
omapi_set_int_value
isc_result_t omapi_set_int_value(omapi_object_t *, omapi_object_t *, const char *, int)
Definition: support.c:395
omapi_type_relinquish
void omapi_type_relinquish(void)
omapi_connection_readfd
int omapi_connection_readfd(omapi_object_t *)
Definition: connection.c:577
omapi_object_update
isc_result_t omapi_object_update(omapi_object_t *, omapi_object_t *, omapi_object_t *, omapi_handle_t)
Definition: support.c:529
__omapi_object_type_t::destroy
isc_result_t(* destroy)(omapi_object_t *, const char *, int)
Definition: omapip.h:103
omapi_waiter_signal_handler
isc_result_t omapi_waiter_signal_handler(omapi_object_t *, const char *, va_list)
Definition: dispatch.c:862
__omapi_object_type_t::allocator
isc_result_t(* allocator)(omapi_object_t **, const char *, int)
Definition: omapip.h:113
omapi_auth_key_get_value
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
omapi_data_string_t
Definition: omapip.h:80
omapi_addr_t::addrlen
unsigned addrlen
Definition: omapip.h:136
omapi_typed_data_t::object
omapi_object_t * object
Definition: omapip.h:62
omapi_connection_put_name
isc_result_t omapi_connection_put_name(omapi_object_t *, const char *)
Definition: buffer.c:678
omapi_protocol_get_value
isc_result_t omapi_protocol_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: protocol.c:884
auth_key::OMAPI_OBJECT_PREAMBLE
OMAPI_OBJECT_PREAMBLE
Definition: omapip.h:148
omapi_set_object_value
isc_result_t omapi_set_object_value(omapi_object_t *, omapi_object_t *, const char *, omapi_object_t *)
Definition: support.c:419
omapi_td_strcasecmp
int omapi_td_strcasecmp(omapi_typed_data_t *, const char *)
Definition: support.c:626
omapi_message_register
isc_result_t omapi_message_register(omapi_object_t *)
Definition: message.c:267
omapi_typed_data_t::refcnt
int refcnt
Definition: omapip.h:49
omapi_typed_data_t::integer
int integer
Definition: omapip.h:76
omapi_listen
isc_result_t omapi_listen(omapi_object_t *, unsigned, int)
isc_boolean_t
isc_boolean_t
Definition: data.h:150
omapi_protocol_add_auth
isc_result_t omapi_protocol_add_auth(omapi_object_t *, omapi_object_t *, omapi_handle_t)
Definition: protocol.c:768
omapi_register_io_object
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
omapi_init
isc_result_t omapi_init(void)
Definition: support.c:61
omapi_connection_writefd
int omapi_connection_writefd(omapi_object_t *)
Definition: connection.c:594
omapi_protocol_listener_get_value
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
omapi_generic_get_value
isc_result_t omapi_generic_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: generic.c:168
omapi_make_int_value
isc_result_t omapi_make_int_value(omapi_value_t **, omapi_data_string_t *, int, const char *, int)
Definition: support.c:709
__omapi_object::OMAPI_OBJECT_PREAMBLE
OMAPI_OBJECT_PREAMBLE
Definition: omapip.h:128
omapi_protocol_authenticated
isc_boolean_t omapi_protocol_authenticated(omapi_object_t *)
Definition: protocol.c:953
value
Definition: data.h:205
__omapi_object_type_t::lookup
isc_result_t(* lookup)(omapi_object_t **, omapi_object_t *, omapi_object_t *)
Definition: omapip.h:108
omapi_addr_list_t
Definition: omapip.h:141
omapi_data_string_cmp
int omapi_data_string_cmp(omapi_data_string_t *, omapi_data_string_t *)
Definition: support.c:562
omapi_set_string_value
isc_result_t omapi_set_string_value(omapi_object_t *, omapi_object_t *, const char *, const char *)
Definition: support.c:443
omapi_io_signal_handler
isc_result_t omapi_io_signal_handler(omapi_object_t *, const char *, va_list)
Definition: dispatch.c:837
omapi_listener_set_value
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
omapi_protocol_send_open
isc_result_t omapi_protocol_send_open(omapi_object_t *, omapi_object_t *, const char *, omapi_object_t *, unsigned)
Definition: protocol.c:1197
omapi_connection_reader
isc_result_t omapi_connection_reader(omapi_object_t *)
Definition: buffer.c:131
omapi_connection_output_auth_length
isc_result_t omapi_connection_output_auth_length(omapi_object_t *, unsigned *)
Definition: connection.c:896
__omapi_object_type_t::rc_flag
int rc_flag
Definition: omapip.h:116
__omapi_object_type_t::sizer
isc_result_t(* sizer)(size_t)
Definition: omapip.h:114
omapi_stuff_values
isc_result_t omapi_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: support.c:508
omapi_addr_list_t::refcnt
int refcnt
Definition: omapip.h:142
__omapi_object_type_t::size
size_t size
Definition: omapip.h:115
omapi_protocol_send_status
isc_result_t omapi_protocol_send_status(omapi_object_t *, omapi_object_t *, isc_result_t, unsigned, const char *)
Definition: protocol.c:1140
omapi_connection_put_named_uint32
isc_result_t omapi_connection_put_named_uint32(omapi_object_t *, const char *, u_int32_t)
Definition: buffer.c:726
omapi_get_value
isc_result_t omapi_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: support.c:467
omapi_array_t::data
char ** data
Definition: omapip.h:190
omapi_array_t::count
int count
Definition: omapip.h:193
omapi_object_type_t
struct __omapi_object_type_t omapi_object_type_t
omapi_array_t::max
int max
Definition: omapip.h:194
omapi_type_message
omapi_object_type_t * omapi_type_message
Definition: support.c:42
omapi_make_string_value
isc_result_t omapi_make_string_value(omapi_value_t **, omapi_data_string_t *, const char *, const char *, int)
Definition: support.c:807
omapi_generic_set_value
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
omapi_addr_list_dereference
isc_result_t omapi_addr_list_dereference(omapi_addr_list_t **, const char *, int)
Definition: alloc.c:1142
omapi_disconnect
isc_result_t omapi_disconnect(omapi_object_t *, int)
Definition: connection.c:455
omapi_value_new
isc_result_t omapi_value_new(omapi_value_t **, const char *, int)
Definition: alloc.c:1026
omapi_message_get_value
isc_result_t omapi_message_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: message.c:165
omapi_td_strcmp
int omapi_td_strcmp(omapi_typed_data_t *, const char *)
Definition: support.c:601
omapi_array_set
isc_result_t omapi_array_set(omapi_array_t *, void *, int, const char *, int)
Definition: array.c:87
omapi_typed_data_reference
isc_result_t omapi_typed_data_reference(omapi_typed_data_t **, omapi_typed_data_t *, const char *, int)
Definition: alloc.c:880
omapi_connection_write_typed_data
isc_result_t omapi_connection_write_typed_data(omapi_object_t *, omapi_typed_data_t *)
Definition: buffer.c:632
omapi_object_initialize
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_allocate
isc_result_t omapi_object_allocate(omapi_object_t **, omapi_object_type_t *, size_t, const char *, int)
Definition: alloc.c:515
omapi_array_t
Definition: omapip.h:189
omapi_connection_stuff_values
isc_result_t omapi_connection_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: connection.c:1094
__omapi_object_type_t::name
const char * name
Definition: omapip.h:94
omapi_connection_signal_handler
isc_result_t omapi_connection_signal_handler(omapi_object_t *, const char *, va_list)
Definition: connection.c:1075
OMAPI_ARRAY_TYPE_DECL
#define OMAPI_ARRAY_TYPE_DECL(name, stype)
Definition: omapip.h:232
omapi_array_lookup
isc_result_t omapi_array_lookup(char **, omapi_array_t *, int, const char *, int)
Definition: array.c:146
omapi_object_handle
isc_result_t omapi_object_handle(omapi_handle_t *, omapi_object_t *)
Definition: handle.c:72
omapi_listener_get_value
isc_result_t omapi_listener_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: listener.c:427
omapi_data_string_dereference
isc_result_t omapi_data_string_dereference(omapi_data_string_t **, const char *, int)
Definition: alloc.c:988
omapi_listener_configure_security
isc_result_t omapi_listener_configure_security(omapi_object_t *, isc_result_t(*)(omapi_object_t *, omapi_addr_t *))
Definition: listener.c:397
__omapi_object_type_t::stuff_values
isc_result_t(* stuff_values)(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: omapip.h:106
omapi_type_listener
omapi_object_type_t * omapi_type_listener
Definition: support.c:34
omapi_make_object_value
isc_result_t omapi_make_object_value(omapi_value_t **, omapi_data_string_t *, omapi_object_t *, const char *, int)
Definition: support.c:742
omapi_auth_key_stuff_values
isc_result_t omapi_auth_key_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: auth.c:192
omapi_signal_in
isc_result_t omapi_signal_in(omapi_object_t *, const char *,...)
Definition: support.c:285
auth_key::algorithm
char * algorithm
Definition: omapip.h:150
omapi_object_dereference
isc_result_t omapi_object_dereference(omapi_object_t **, const char *, int)
Definition: alloc.c:593
omapi_wait_for_completion
isc_result_t omapi_wait_for_completion(omapi_object_t *, struct timeval *)
Definition: dispatch.c:420
omapi_typed_data_t::len
unsigned len
Definition: omapip.h:53
omapi_handle_lookup
isc_result_t omapi_handle_lookup(omapi_object_t **, omapi_handle_t)
Definition: handle.c:238
omapi_generic_new
isc_result_t omapi_generic_new(omapi_object_t **, const char *, int)
omapi_addr_list_t::count
unsigned count
Definition: omapip.h:143
omapi_listener_stuff_values
isc_result_t omapi_listener_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: listener.c:476
omapi_type_auth_key
omapi_object_type_t * omapi_type_auth_key
Definition: support.c:43
omapi_array_extend
isc_result_t omapi_array_extend(omapi_array_t *, char *, int *, const char *, int)
Definition: array.c:74
dfree
void dfree(void *, const char *, int)
Definition: alloc.c:145
omapi_protocol_listener_signal
isc_result_t omapi_protocol_listener_signal(omapi_object_t *, const char *, va_list)
Definition: protocol.c:1032
omapi_connection_reaper
isc_result_t omapi_connection_reaper(omapi_object_t *)
Definition: connection.c:741
dmalloc_reuse
#define dmalloc_reuse(x, y, l, z)
Definition: omapip.h:565
omapi_io_stuff_values
isc_result_t omapi_io_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: dispatch.c:849
omapi_protocol_lookup_auth
isc_result_t omapi_protocol_lookup_auth(omapi_object_t **, omapi_object_t *, omapi_handle_t)
Definition: protocol.c:828
omapi_listen_addr
isc_result_t omapi_listen_addr(omapi_object_t *, omapi_addr_t *, int)
Definition: listener.c:64
omapi_listener_signal_handler
isc_result_t omapi_listener_signal_handler(omapi_object_t *, const char *, va_list)
Definition: listener.c:461
omapi_print_dmalloc_usage_by_caller
void omapi_print_dmalloc_usage_by_caller(void)
__omapi_object_type_t::remove
isc_result_t(* remove)(omapi_object_t *, omapi_object_t *)
Definition: omapip.h:111
omapi_make_value
isc_result_t omapi_make_value(omapi_value_t **, omapi_data_string_t *, omapi_typed_data_t *, const char *, int)
Definition: support.c:651
auth_key::name
char * name
Definition: omapip.h:149
buffer
Definition: tree.h:60
omapi_ds_strcmp
int omapi_ds_strcmp(omapi_data_string_t *, const char *)
Definition: support.c:581
omapi_auth_key_lookup
isc_result_t omapi_auth_key_lookup(omapi_object_t **, omapi_object_t *, omapi_object_t *)
Definition: auth.c:131
omapi_make_handle_value
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_array_t::ref
omapi_array_ref_t ref
Definition: omapip.h:191
omapi_protocol_listener_destroy
isc_result_t omapi_protocol_listener_destroy(omapi_object_t *, const char *, int)
Definition: protocol.c:1116
int
const char int
Definition: omapip.h:442
omapi_typed_data_dereference
isc_result_t omapi_typed_data_dereference(omapi_typed_data_t **, const char *, int)
Definition: alloc.c:901
omapi_value_dereference
isc_result_t omapi_value_dereference(omapi_value_t **, const char *, int)
Definition: alloc.c:1060
omapi_type_remote
omapi_object_type_t * omapi_type_remote
Definition: support.c:41
omapi_connection_connect
isc_result_t omapi_connection_connect(omapi_object_t *)
Definition: connection.c:603
omapi_object_type_register
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
omapi_object_create
isc_result_t omapi_object_create(omapi_object_t **, omapi_object_t *, omapi_object_type_t *)
Definition: support.c:521
omapi_type_protocol
omapi_object_type_t * omapi_type_protocol
Definition: support.c:38
omapi_listener_destroy
isc_result_t omapi_listener_destroy(omapi_object_t *, const char *, int)
Definition: listener.c:441
omapi_addr_list_reference
isc_result_t omapi_addr_list_reference(omapi_addr_list_t **, omapi_addr_list_t *, const char *, int)
Definition: alloc.c:1120
__omapi_object_type_t::signal_handler
isc_result_t(* signal_handler)(omapi_object_t *, const char *, va_list)
Definition: omapip.h:104
omapi_io_set_value
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
omapi_io_state_foreach
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
omapi_datatype_string
@ omapi_datatype_string
Definition: omapip.h:43
omapi_protocol_send_message
isc_result_t omapi_protocol_send_message(omapi_object_t *, omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:148
omapi_type_io_object
omapi_object_type_t * omapi_type_io_object
Definition: support.c:35
omapi_datatype_data
@ omapi_datatype_data
Definition: omapip.h:44
omapi_type_generic
omapi_object_type_t * omapi_type_generic
Definition: support.c:37
auth_key
Definition: omapip.h:147
omapi_protocol_listener_set_value
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
omapi_data_string_new
isc_result_t omapi_data_string_new(omapi_data_string_t **, unsigned, const char *, int)
Definition: alloc.c:950
omapi_make_uint_value
isc_result_t omapi_make_uint_value(omapi_value_t **, omapi_data_string_t *, unsigned int, const char *, int)
Definition: support.c:734
result.h
omapi_addr_t::port
unsigned port
Definition: omapip.h:138
omapi_signal
isc_result_t omapi_signal(omapi_object_t *, const char *,...)
Definition: support.c:267
omapi_connection_put_string
isc_result_t omapi_connection_put_string(omapi_object_t *, const char *)
Definition: buffer.c:689
omapi_protocol_signal_handler
isc_result_t omapi_protocol_signal_handler(omapi_object_t *, const char *, va_list)
Definition: protocol.c:343
omapi_connection_set_value
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
omapi_io_destroy
isc_result_t omapi_io_destroy(omapi_object_t *, const char *, int)
Definition: dispatch.c:805
omapi_value_t::refcnt
int refcnt
Definition: omapip.h:88
omapi_connection_destroy
isc_result_t omapi_connection_destroy(omapi_object_t *, const char *, int)
Definition: connection.c:1054
omapi_connect
isc_result_t omapi_connect(omapi_object_t *, const char *, unsigned)
omapi_datatype_t
omapi_datatype_t
Definition: omapip.h:41
omapi_typed_data_t
Definition: omapip.h:48
omapi_value_t::name
omapi_data_string_t * name
Definition: omapip.h:89
omapi_get_int_value
isc_result_t omapi_get_int_value(unsigned long *, omapi_typed_data_t *)
Definition: support.c:835
__omapi_object_type_t::set_value
isc_result_t(* set_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition: omapip.h:97
omapi_typed_data_t::ptr
void * ptr
Definition: omapip.h:67
__omapi_object_type_t::freer
isc_result_t(* freer)(omapi_object_t *, const char *, int)
Definition: omapip.h:112
omapi_connection_writer
isc_result_t omapi_connection_writer(omapi_object_t *)
Definition: buffer.c:448
omapi_protocol_listener_stuff
isc_result_t omapi_protocol_listener_stuff(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:1127
__omapi_object_type_t::initialize
isc_result_t(* initialize)(omapi_object_t *, const char *, int)
Definition: omapip.h:117
__omapi_object_type_t::next
struct __omapi_object_type_t * next
Definition: omapip.h:95
omapi_protocol_accept
isc_result_t omapi_protocol_accept(omapi_object_t *)
omapi_io_get_value
isc_result_t omapi_io_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: dispatch.c:783
omapi_addr_list_t::addresses
omapi_addr_t * addresses
Definition: omapip.h:144
auth_key::key
omapi_data_string_t * key
Definition: omapip.h:151
omapi_handle_t
unsigned int omapi_handle_t
Definition: omapip.h:36
__omapi_object
Definition: omapip.h:127
dmalloc
void * dmalloc(size_t, const char *, int)
Definition: alloc.c:57
omapi_set_value_str
isc_result_t omapi_set_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_typed_data_t *)
Definition: support.c:352
omapi_protocol_send_intro
isc_result_t omapi_protocol_send_intro(omapi_object_t *, unsigned, unsigned)
Definition: protocol.c:105
auth_key::tsec_key
dns_tsec_t * tsec_key
Definition: omapip.h:152
omapi_object_types
omapi_object_type_t * omapi_object_types
Definition: support.c:45
omapi_auth_key_enter
isc_result_t omapi_auth_key_enter(omapi_auth_key_t *)
Definition: auth.c:73
__omapi_object_type_t::get_value
isc_result_t(* get_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: omapip.h:100
omapi_one_dispatch
isc_result_t omapi_one_dispatch(omapi_object_t *, struct timeval *)
Definition: dispatch.c:479
omapi_data_string_reference
isc_result_t omapi_data_string_reference(omapi_data_string_t **, omapi_data_string_t *, const char *, int)
Definition: alloc.c:967
omapi_protocol_destroy
isc_result_t omapi_protocol_destroy(omapi_object_t *, const char *, int)
Definition: protocol.c:909
omapi_protocol_stuff_values
isc_result_t omapi_protocol_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: protocol.c:937
omapi_addr_t::addrtype
unsigned addrtype
Definition: omapip.h:135
omapi_array_deref_t
isc_result_t(* omapi_array_deref_t)(char **, const char *, int)
Definition: omapip.h:186
omapi_message_unregister
isc_result_t omapi_message_unregister(omapi_object_t *)
Definition: message.c:295
omapi_protocol_configure_security
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
omapi_auth_key_lookup_name
isc_result_t omapi_auth_key_lookup_name(omapi_auth_key_t **, const char *)
Definition: auth.c:121
omapi_listener_accept
isc_result_t omapi_listener_accept(omapi_object_t *)
omapi_set_boolean_value
isc_result_t omapi_set_boolean_value(omapi_object_t *, omapi_object_t *, const char *, int)
Definition: support.c:371
omapi_array_allocate
isc_result_t omapi_array_allocate(omapi_array_t **, omapi_array_ref_t, omapi_array_deref_t, const char *, int)
Definition: array.c:35
omapi_protocol_send_update
isc_result_t omapi_protocol_send_update(omapi_object_t *, omapi_object_t *, unsigned, omapi_object_t *)
Definition: protocol.c:1257
omapi_get_value_str
isc_result_t omapi_get_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_value_t **)
Definition: support.c:482
omapi_message_destroy
isc_result_t omapi_message_destroy(omapi_object_t *, const char *, int)
Definition: message.c:205
omapi_reregister_io_object
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
omapi_connect_list
isc_result_t omapi_connect_list(omapi_object_t *, omapi_addr_list_t *, omapi_addr_t *)
Definition: connection.c:101
OMAPI_OBJECT_ALLOC_DECL
#define OMAPI_OBJECT_ALLOC_DECL(name, stype, type)
Definition: omapip.h:179
omapi_handle_td_lookup
isc_result_t omapi_handle_td_lookup(omapi_object_t **, omapi_typed_data_t *)
Definition: handle.c:282
omapi_protocol_ready
isc_result_t omapi_protocol_ready(omapi_object_t *)
omapi_generic_clear_flags
isc_result_t omapi_generic_clear_flags(omapi_object_t *)
Definition: generic.c:286
omapi_generic_destroy
isc_result_t omapi_generic_destroy(omapi_object_t *, const char *, int)
Definition: generic.c:202
omapi_generic_signal_handler
isc_result_t omapi_generic_signal_handler(omapi_object_t *, const char *, va_list)
Definition: generic.c:228
omapi_addr_t
Definition: omapip.h:134
omapi_datatype_object
@ omapi_datatype_object
Definition: omapip.h:45
omapi_array_ref_t
isc_result_t(* omapi_array_ref_t)(char **, char *, const char *, int)
Definition: omapip.h:185
omapi_message_stuff_values
isc_result_t omapi_message_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition: message.c:254
omapi_dispatch
isc_result_t omapi_dispatch(struct timeval *)
Definition: dispatch.c:414
omapi_value_t
Definition: omapip.h:87
omapi_array_free
isc_result_t omapi_array_free(omapi_array_t **, const char *, int)
Definition: array.c:53
omapi_connection_get_value
isc_result_t omapi_connection_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition: connection.c:980
omapi_message_signal_handler
isc_result_t omapi_message_signal_handler(omapi_object_t *, const char *, va_list)
Definition: message.c:228
omapi_listener_readfd
int omapi_listener_readfd(omapi_object_t *)
Definition: listener.c:201
omapi_accept
isc_result_t omapi_accept(omapi_object_t *)
Definition: listener.c:213
omapi_datatype_int
@ omapi_datatype_int
Definition: omapip.h:42
omapi_unregister_io_object
isc_result_t omapi_unregister_io_object(omapi_object_t *)
Definition: dispatch.c:355
omapi_protocol_set_value
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
omapi_type_connection
omapi_object_type_t * omapi_type_connection
Definition: support.c:33
omapi_data_string_t::refcnt
int refcnt
Definition: omapip.h:81
omapi_typed_data_t::type
omapi_datatype_t type
Definition: omapip.h:50
omapi_connection_put_handle
isc_result_t omapi_connection_put_handle(omapi_object_t *c, omapi_object_t *h)
Definition: buffer.c:709
omapi_value_t::value
omapi_typed_data_t * value
Definition: omapip.h:90