ISC DHCP 4.4.3-P1
A reference DHCPv4 and DHCPv6 implementation
 
Loading...
Searching...
No Matches
support.c
Go to the documentation of this file.
1/* support.c
2
3 Subroutines providing general support for objects. */
4
5/*
6 * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC")
7 * Copyright (c) 1999-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 * PO Box 360
23 * Newmarket, NH 03857 USA
24 * <info@isc.org>
25 * https://www.isc.org/
26 *
27 */
28
29#include "dhcpd.h"
30
31#include <omapip/omapip_p.h>
32
44
47
48#if defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
50{
52
53 for (t = omapi_object_types; t; t = n) {
54 n = t -> next;
55 dfree (t, MDL);
56 }
58}
59#endif
60
61isc_result_t omapi_init (void)
62{
63 isc_result_t status;
64
65 /* Register all the standard object types... */
67 "connection",
73 0, 0, 0, 0, 0, 0,
74 sizeof
76 RC_MISC);
77 if (status != ISC_R_SUCCESS)
78 return status;
79
81 "listener",
87 0, 0, 0, 0, 0, 0,
89 0, RC_MISC);
90 if (status != ISC_R_SUCCESS)
91 return status;
92
94 "io",
100 0, 0, 0, 0, 0, 0,
101 sizeof (omapi_io_object_t),
102 0, RC_MISC);
103 if (status != ISC_R_SUCCESS)
104 return status;
105
107 "generic",
113 0, 0, 0, 0, 0, 0,
114 sizeof (omapi_generic_object_t),
115 0, RC_MISC);
116 if (status != ISC_R_SUCCESS)
117 return status;
118
120 "protocol",
126 0, 0, 0, 0, 0, 0,
128 0, RC_MISC);
129 if (status != ISC_R_SUCCESS)
130 return status;
131
133 (&omapi_type_protocol_listener, "protocol-listener",
139 0, 0, 0, 0, 0, 0,
141 if (status != ISC_R_SUCCESS)
142 return status;
143
145 "message",
151 0, 0, 0, 0, 0, 0,
152 sizeof (omapi_message_object_t),
153 0, RC_MISC);
154 if (status != ISC_R_SUCCESS)
155 return status;
156
158 "waiter",
159 0,
160 0,
161 0,
163 0, 0, 0, 0, 0, 0,
164 sizeof (omapi_waiter_object_t),
165 0, RC_MISC);
166 if (status != ISC_R_SUCCESS)
167 return status;
168
170 "authenticator",
171 0,
174 0,
177 0, 0, 0, 0, 0,
178 sizeof (omapi_auth_key_t), 0,
179 RC_MISC);
180 if (status != ISC_R_SUCCESS)
181 return status;
182
183#if defined (TRACING)
187#endif
188
189 /* This seems silly, but leave it. */
190 return ISC_R_SUCCESS;
191}
192
194 const char *name,
195 isc_result_t (*set_value)
200 isc_result_t (*get_value)
204 omapi_value_t **),
205 isc_result_t (*destroy)
207 const char *, int),
208 isc_result_t (*signal_handler)
210 const char *, va_list),
211 isc_result_t (*stuff_values)
215 isc_result_t (*lookup)
216 (omapi_object_t **,
219 isc_result_t (*create)
220 (omapi_object_t **,
222 isc_result_t (*remove)
225 isc_result_t (*freer)
227 const char *, int),
228 isc_result_t (*allocator)
229 (omapi_object_t **,
230 const char *, int),
231 isc_result_t (*sizer) (size_t),
232 size_t size,
233 isc_result_t (*initialize)
235 const char *, int),
236 int rc_flag)
237{
239
240 t = dmalloc (sizeof *t, MDL);
241 if (!t)
242 return ISC_R_NOMEMORY;
243 memset (t, 0, sizeof *t);
244
245 t -> name = name;
246 t -> set_value = set_value;
247 t -> get_value = get_value;
248 t -> destroy = destroy;
249 t -> signal_handler = signal_handler;
250 t -> stuff_values = stuff_values;
251 t -> lookup = lookup;
252 t -> create = create;
253 t -> remove = remove;
254 t -> next = omapi_object_types;
255 t -> sizer = sizer;
256 t -> size = size;
257 t -> freer = freer;
258 t -> allocator = allocator;
259 t -> initialize = initialize;
260 t -> rc_flag = rc_flag;
262 if (type)
263 *type = t;
264 return ISC_R_SUCCESS;
265}
266
267isc_result_t omapi_signal (omapi_object_t *handle, const char *name, ...)
268{
269 va_list ap;
270 omapi_object_t *outer;
271 isc_result_t status;
272
273 va_start (ap, name);
274 for (outer = handle; outer -> outer; outer = outer -> outer)
275 ;
276 if (outer -> type -> signal_handler)
277 status = (*(outer -> type -> signal_handler)) (outer,
278 name, ap);
279 else
280 status = ISC_R_NOTFOUND;
281 va_end (ap);
282 return status;
283}
284
285isc_result_t omapi_signal_in (omapi_object_t *handle, const char *name, ...)
286{
287 va_list ap;
288 isc_result_t status;
289
290 if (!handle)
291 return ISC_R_NOTFOUND;
292 va_start (ap, name);
293
294 if (handle -> type -> signal_handler)
295 status = (*(handle -> type -> signal_handler)) (handle,
296 name, ap);
297 else
298 status = ISC_R_NOTFOUND;
299 va_end (ap);
300 return status;
301}
302
304 omapi_object_t *id,
307{
308 omapi_object_t *outer;
309 isc_result_t status;
310
311#if defined (DEBUG_PROTOCOL)
312 if (!value) {
313 log_info ("omapi_set_value (%.*s, NULL)",
314 (int)name -> len, name -> value);
315 } else if (value -> type == omapi_datatype_int) {
316 log_info ("omapi_set_value (%.*s, %ld)",
317 (int)name -> len, name -> value,
318 (long)value -> u.integer);
319 } else if (value -> type == omapi_datatype_string) {
320 log_info ("omapi_set_value (%.*s, %.*s)",
321 (int)name -> len, name -> value,
322 (int)value -> u.buffer.len, value -> u.buffer.value);
323 } else if (value -> type == omapi_datatype_data) {
324 log_info ("omapi_set_value (%.*s, %ld %lx)",
325 (int)name -> len, name -> value,
326 (long)value -> u.buffer.len,
327 (unsigned long)value -> u.buffer.value);
328 } else if (value -> type == omapi_datatype_object) {
329 log_info ("omapi_set_value (%.*s, %s)",
330 (int)name -> len, name -> value,
331 value -> u.object
332 ? (value -> u.object -> type
333 ? value -> u.object -> type -> name
334 : "(unknown object)")
335 : "(unknown object)");
336 }
337#endif
338
339 for (outer = h; outer -> outer; outer = outer -> outer)
340 ;
341 if (outer -> type -> set_value)
342 status = (*(outer -> type -> set_value)) (outer,
343 id, name, value);
344 else
345 status = ISC_R_NOTFOUND;
346#if defined (DEBUG_PROTOCOL)
347 log_info (" ==> %s", isc_result_totext (status));
348#endif
349 return status;
350}
351
353 omapi_object_t *id,
354 const char *name,
356{
358 isc_result_t status;
359
360 nds = (omapi_data_string_t *)0;
361 status = omapi_data_string_new (&nds, strlen (name), MDL);
362 if (status != ISC_R_SUCCESS)
363 return status;
364 memcpy (nds -> value, name, strlen (name));
365
366 status = omapi_set_value (h, id, nds, value);
368 return status;
369}
370
372 const char *name, int value)
373{
374 isc_result_t status;
377
378 status = omapi_data_string_new (&n, strlen (name), MDL);
379 if (status != ISC_R_SUCCESS)
380 return status;
381 memcpy (n -> value, name, strlen (name));
382
384 if (status != ISC_R_SUCCESS) {
386 return status;
387 }
388
389 status = omapi_set_value (h, id, n, tv);
392 return status;
393}
394
396 const char *name, int value)
397{
398 isc_result_t status;
401
402 status = omapi_data_string_new (&n, strlen (name), MDL);
403 if (status != ISC_R_SUCCESS)
404 return status;
405 memcpy (n -> value, name, strlen (name));
406
408 if (status != ISC_R_SUCCESS) {
410 return status;
411 }
412
413 status = omapi_set_value (h, id, n, tv);
416 return status;
417}
418
420 const char *name, omapi_object_t *value)
421{
422 isc_result_t status;
425
426 status = omapi_data_string_new (&n, strlen (name), MDL);
427 if (status != ISC_R_SUCCESS)
428 return status;
429 memcpy (n -> value, name, strlen (name));
430
432 if (status != ISC_R_SUCCESS) {
434 return status;
435 }
436
437 status = omapi_set_value (h, id, n, tv);
440 return status;
441}
442
444 const char *name, const char *value)
445{
446 isc_result_t status;
449
450 status = omapi_data_string_new (&n, strlen (name), MDL);
451 if (status != ISC_R_SUCCESS)
452 return status;
453 memcpy (n -> value, name, strlen (name));
454
456 if (status != ISC_R_SUCCESS) {
458 return status;
459 }
460
461 status = omapi_set_value (h, id, n, tv);
464 return status;
465}
466
468 omapi_object_t *id,
471{
472 omapi_object_t *outer;
473
474 for (outer = h; outer -> outer; outer = outer -> outer)
475 ;
476 if (outer -> type -> get_value)
477 return (*(outer -> type -> get_value)) (outer,
478 id, name, value);
479 return ISC_R_NOTFOUND;
480}
481
483 omapi_object_t *id,
484 const char *name,
486{
487 omapi_object_t *outer;
489 isc_result_t status;
490
491 nds = (omapi_data_string_t *)0;
492 status = omapi_data_string_new (&nds, strlen (name), MDL);
493 if (status != ISC_R_SUCCESS)
494 return status;
495 memcpy (nds -> value, name, strlen (name));
496
497 for (outer = h; outer -> outer; outer = outer -> outer)
498 ;
499 if (outer -> type -> get_value)
500 status = (*(outer -> type -> get_value)) (outer,
501 id, nds, value);
502 else
503 status = ISC_R_NOTFOUND;
505 return status;
506}
507
509 omapi_object_t *id,
511{
512 omapi_object_t *outer;
513
514 for (outer = o; outer -> outer; outer = outer -> outer)
515 ;
516 if (outer -> type -> stuff_values)
517 return (*(outer -> type -> stuff_values)) (c, id, outer);
518 return ISC_R_NOTFOUND;
519}
520
523{
524 if (!type -> create)
526 return (*(type -> create)) (obj, id);
527}
528
531{
533 isc_result_t status;
534 int i;
535
536 if (!src)
537 return DHCP_R_INVALIDARG;
538 if (src -> type != omapi_type_generic)
540 gsrc = (omapi_generic_object_t *)src;
541 for (i = 0; i < gsrc -> nvalues; i++) {
542 status = omapi_set_value (obj, id,
543 gsrc -> values [i] -> name,
544 gsrc -> values [i] -> value);
545 if (status != ISC_R_SUCCESS && status != DHCP_R_UNCHANGED)
546 return status;
547 }
548
549 /*
550 * For now ignore the return value. I'm not sure if we want to
551 * generate an error if we can't set the handle value. If we
552 * do add a check we probably should allow unchanged and notfound
553 */
554 if (handle)
555 (void) omapi_set_int_value (obj, id, "remote-handle", (int)handle);
556 status = omapi_signal (obj, "updated");
557 if (status != ISC_R_NOTFOUND)
558 return status;
559 return ISC_R_SUCCESS;
560}
561
563{
564 unsigned len;
565 int rv;
566
567 if (s1 -> len > s2 -> len)
568 len = s2 -> len;
569 else
570 len = s1 -> len;
571 rv = memcmp (s1 -> value, s2 -> value, len);
572 if (rv)
573 return rv;
574 if (s1 -> len > s2 -> len)
575 return 1;
576 else if (s1 -> len < s2 -> len)
577 return -1;
578 return 0;
579}
580
581int omapi_ds_strcmp (omapi_data_string_t *s1, const char *s2)
582{
583 unsigned len, slen;
584 int rv;
585
586 slen = strlen (s2);
587 if (slen > s1 -> len)
588 len = s1 -> len;
589 else
590 len = slen;
591 rv = memcmp (s1 -> value, s2, len);
592 if (rv)
593 return rv;
594 if (s1 -> len > slen)
595 return 1;
596 else if (s1 -> len < slen)
597 return -1;
598 return 0;
599}
600
601int omapi_td_strcmp (omapi_typed_data_t *s1, const char *s2)
602{
603 unsigned len, slen;
604 int rv;
605
606 /* If the data type is not compatible, never equal. */
607 if (s1 -> type != omapi_datatype_data &&
608 s1 -> type != omapi_datatype_string)
609 return -1;
610
611 slen = strlen (s2);
612 if (slen > s1 -> u.buffer.len)
613 len = s1 -> u.buffer.len;
614 else
615 len = slen;
616 rv = memcmp (s1 -> u.buffer.value, s2, len);
617 if (rv)
618 return rv;
619 if (s1 -> u.buffer.len > slen)
620 return 1;
621 else if (s1 -> u.buffer.len < slen)
622 return -1;
623 return 0;
624}
625
627{
628 unsigned len, slen;
629 int rv;
630
631 /* If the data type is not compatible, never equal. */
632 if (s1 -> type != omapi_datatype_data &&
633 s1 -> type != omapi_datatype_string)
634 return -1;
635
636 slen = strlen (s2);
637 if (slen > s1 -> u.buffer.len)
638 len = s1 -> u.buffer.len;
639 else
640 len = slen;
641 rv = casecmp (s1 -> u.buffer.value, s2, len);
642 if (rv)
643 return rv;
644 if (s1 -> u.buffer.len > slen)
645 return 1;
646 else if (s1 -> u.buffer.len < slen)
647 return -1;
648 return 0;
649}
650
654 const char *file, int line)
655{
656 isc_result_t status;
657
658 status = omapi_value_new (vp, file, line);
659 if (status != ISC_R_SUCCESS)
660 return status;
661
662 status = omapi_data_string_reference (&(*vp) -> name,
663 name, file, line);
664 if (status != ISC_R_SUCCESS) {
666 return status;
667 }
668 if (value) {
669 status = omapi_typed_data_reference (&(*vp) -> value,
670 value, file, line);
671 if (status != ISC_R_SUCCESS) {
673 return status;
674 }
675 }
676 return ISC_R_SUCCESS;
677}
678
681 const unsigned char *value,
682 unsigned len,
683 const char *file, int line)
684{
685 isc_result_t status;
686
687 status = omapi_value_new (vp, file, line);
688 if (status != ISC_R_SUCCESS)
689 return status;
690
691 status = omapi_data_string_reference (&(*vp) -> name,
692 name, file, line);
693 if (status != ISC_R_SUCCESS) {
695 return status;
696 }
697 if (value) {
698 status = omapi_typed_data_new (file, line, &(*vp) -> value,
700 if (status != ISC_R_SUCCESS) {
702 return status;
703 }
704 memcpy ((*vp) -> value -> u.buffer.value, value, len);
705 }
706 return ISC_R_SUCCESS;
707}
708
711 int value, const char *file, int line)
712{
713 isc_result_t status;
714
715 status = omapi_value_new (vp, file, line);
716 if (status != ISC_R_SUCCESS)
717 return status;
718
719 status = omapi_data_string_reference (&(*vp) -> name,
720 name, file, line);
721 if (status != ISC_R_SUCCESS) {
723 return status;
724 }
725 status = omapi_typed_data_new (file, line, &(*vp) -> value,
727 if (status != ISC_R_SUCCESS) {
729 return status;
730 }
731 return ISC_R_SUCCESS;
732}
733
736 unsigned int value,
737 const char *file, int line)
738{
739 return omapi_make_int_value (vp, name, (int)value, file, line);
740}
741
745 const char *file, int line)
746{
747 isc_result_t status;
748
749 status = omapi_value_new (vp, file, line);
750 if (status != ISC_R_SUCCESS)
751 return status;
752
753 status = omapi_data_string_reference (&(*vp) -> name,
754 name, file, line);
755 if (status != ISC_R_SUCCESS) {
757 return status;
758 }
759
760 if (value) {
761 status = omapi_typed_data_new (file, line, &(*vp) -> value,
763 if (status != ISC_R_SUCCESS) {
765 return status;
766 }
767 }
768
769 return ISC_R_SUCCESS;
770}
771
775 const char *file, int line)
776{
777 isc_result_t status;
778
779 status = omapi_value_new (vp, file, line);
780 if (status != ISC_R_SUCCESS)
781 return status;
782
783 status = omapi_data_string_reference (&(*vp) -> name,
784 name, file, line);
785 if (status != ISC_R_SUCCESS) {
787 return status;
788 }
789 if (value) {
790 status = omapi_typed_data_new (file, line, &(*vp) -> value,
792 if (status != ISC_R_SUCCESS) {
794 return status;
795 }
796 status = (omapi_object_handle
797 ((omapi_handle_t *)&(*vp) -> value -> u.integer,
798 value));
799 if (status != ISC_R_SUCCESS) {
801 return status;
802 }
803 }
804 return ISC_R_SUCCESS;
805}
806
809 const char *value,
810 const char *file, int line)
811{
812 isc_result_t status;
813
814 status = omapi_value_new (vp, file, line);
815 if (status != ISC_R_SUCCESS)
816 return status;
817
818 status = omapi_data_string_reference (&(*vp) -> name,
819 name, file, line);
820 if (status != ISC_R_SUCCESS) {
822 return status;
823 }
824 if (value) {
825 status = omapi_typed_data_new (file, line, &(*vp) -> value,
827 if (status != ISC_R_SUCCESS) {
829 return status;
830 }
831 }
832 return ISC_R_SUCCESS;
833}
834
835isc_result_t omapi_get_int_value (unsigned long *v, omapi_typed_data_t *t)
836{
837 u_int32_t rv;
838
839 if (t -> type == omapi_datatype_int) {
840 *v = t -> u.integer;
841 return ISC_R_SUCCESS;
842 } else if (t -> type == omapi_datatype_string ||
843 t -> type == omapi_datatype_data) {
844 if (t -> u.buffer.len != sizeof (rv))
845 return DHCP_R_INVALIDARG;
846 memcpy (&rv, t -> u.buffer.value, sizeof rv);
847 *v = ntohl (rv);
848 return ISC_R_SUCCESS;
849 }
850 return DHCP_R_INVALIDARG;
851}
#define RC_MISC
Definition alloc.h:56
struct element * create(void)
Definition data.c:432
const char int line
Definition dhcpd.h:3802
const char * file
Definition dhcpd.h:3802
int casecmp(const void *s, const void *t, size_t len)
Definition hash.c:534
#define ISC_R_NOTIMPLEMENTED
#define ISC_R_SUCCESS
isc_result_t omapi_value_dereference(omapi_value_t **, const char *, int)
Definition alloc.c:1060
#define MDL
Definition omapip.h:567
isc_result_t omapi_connection_set_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *)
Definition connection.c:891
isc_result_t omapi_generic_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition generic.c:243
isc_result_t omapi_message_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition message.c:254
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_message_destroy(omapi_object_t *, const char *, int)
Definition message.c:205
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_protocol_destroy(omapi_object_t *, const char *, int)
Definition protocol.c:909
isc_result_t omapi_io_destroy(omapi_object_t *, const char *, int)
Definition dispatch.c:862
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
struct __omapi_object omapi_object_t
Definition omapip.h:39
omapi_object_type_t * omapi_type_waiter
Definition support.c:40
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:960
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:826
omapi_object_type_t * omapi_type_remote
Definition support.c:41
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
isc_result_t omapi_connection_stuff_values(omapi_object_t *, omapi_object_t *, 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_protocol_listener_destroy(omapi_object_t *, const char *, int)
Definition protocol.c:1116
@ 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_typed_data_dereference(omapi_typed_data_t **, const char *, int)
Definition alloc.c:901
omapi_object_type_t * omapi_type_generic
Definition support.c:37
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_connection_destroy(omapi_object_t *, const char *, int)
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)
omapi_object_type_t * omapi_type_protocol
Definition support.c:38
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_io_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition dispatch.c:909
isc_result_t omapi_io_signal_handler(omapi_object_t *, const char *, va_list)
Definition dispatch.c:894
isc_result_t omapi_listener_stuff_values(omapi_object_t *, omapi_object_t *, omapi_object_t *)
Definition listener.c:476
unsigned int omapi_handle_t
Definition omapip.h:36
isc_result_t omapi_io_get_value(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **)
Definition dispatch.c:840
void omapi_type_relinquish(void)
omapi_object_type_t * omapi_type_connection
Definition support.c:33
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
void * dmalloc(size_t, const char *, int)
Definition alloc.c:57
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
omapi_object_type_t * omapi_type_listener
Definition support.c:34
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_generic_signal_handler(omapi_object_t *, const char *, va_list)
Definition generic.c:228
struct auth_key omapi_auth_key_t
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_auth_key_destroy(omapi_object_t *, const char *, int)
Definition auth.c:49
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_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:922
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_protocol_listener_signal(omapi_object_t *, const char *, va_list)
Definition protocol.c:1032
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_message_object omapi_message_object_t
Definition omapip_p.h:261
struct __omapi_generic_object omapi_generic_object_t
struct __omapi_connection_object omapi_connection_object_t
void omapi_buffer_trace_setup(void)
void omapi_connection_trace_setup(void)
void omapi_listener_trace_setup(void)
struct __omapi_listener_object omapi_listener_object_t
Definition omapip_p.h:253
struct __omapi_io_object omapi_io_object_t
struct __omapi_protocol_object omapi_protocol_object_t
struct __omapi_waiter_object omapi_waiter_object_t
Definition omapip_p.h:257
int int log_info(const char *,...) __attribute__((__format__(__printf__
#define DHCP_R_UNCHANGED
Definition result.h:51
#define DHCP_R_INVALIDARG
Definition result.h:49
Definition data.h:289
struct omapi_typed_data_t::@005330231110240362320041053235346164005276246221::@131374275124060200224243254021133345104025056044 buffer
unsigned char value[1]
Definition omapip.h:57
unsigned len
Definition omapip.h:53
isc_result_t omapi_make_object_value(omapi_value_t **vp, omapi_data_string_t *name, omapi_object_t *value, const char *file, int line)
Definition support.c:742
isc_result_t omapi_get_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value)
Definition support.c:467
isc_result_t omapi_signal_in(omapi_object_t *handle, const char *name,...)
Definition support.c:285
isc_result_t omapi_set_value_str(omapi_object_t *h, omapi_object_t *id, const char *name, omapi_typed_data_t *value)
Definition support.c:352
isc_result_t omapi_stuff_values(omapi_object_t *c, omapi_object_t *id, omapi_object_t *o)
Definition support.c:508
isc_result_t omapi_set_boolean_value(omapi_object_t *h, omapi_object_t *id, const char *name, int value)
Definition support.c:371
isc_result_t omapi_set_object_value(omapi_object_t *h, omapi_object_t *id, const char *name, omapi_object_t *value)
Definition support.c:419
int omapi_td_strcmp(omapi_typed_data_t *s1, const char *s2)
Definition support.c:601
isc_result_t omapi_make_string_value(omapi_value_t **vp, omapi_data_string_t *name, const char *value, const char *file, int line)
Definition support.c:807
int omapi_data_string_cmp(omapi_data_string_t *s1, omapi_data_string_t *s2)
Definition support.c:562
isc_result_t omapi_set_string_value(omapi_object_t *h, omapi_object_t *id, const char *name, const char *value)
Definition support.c:443
isc_result_t omapi_object_update(omapi_object_t *obj, omapi_object_t *id, omapi_object_t *src, omapi_handle_t handle)
Definition support.c:529
isc_result_t omapi_make_uint_value(omapi_value_t **vp, omapi_data_string_t *name, unsigned int value, const char *file, int line)
Definition support.c:734
isc_result_t omapi_init(void)
Definition support.c:61
int omapi_ds_strcmp(omapi_data_string_t *s1, const char *s2)
Definition support.c:581
isc_result_t omapi_object_create(omapi_object_t **obj, omapi_object_t *id, omapi_object_type_t *type)
Definition support.c:521
isc_result_t omapi_make_value(omapi_value_t **vp, omapi_data_string_t *name, omapi_typed_data_t *value, const char *file, int line)
Definition support.c:651
isc_result_t omapi_object_type_register(omapi_object_type_t **type, const char *name, isc_result_t(*set_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_typed_data_t *), isc_result_t(*get_value)(omapi_object_t *, omapi_object_t *, omapi_data_string_t *, omapi_value_t **), isc_result_t(*destroy)(omapi_object_t *, const char *, int), isc_result_t(*signal_handler)(omapi_object_t *, const char *, va_list), isc_result_t(*stuff_values)(omapi_object_t *, omapi_object_t *, omapi_object_t *), isc_result_t(*lookup)(omapi_object_t **, omapi_object_t *, omapi_object_t *), isc_result_t(*create)(omapi_object_t **, omapi_object_t *), isc_result_t(*remove)(omapi_object_t *, omapi_object_t *), isc_result_t(*freer)(omapi_object_t *, const char *, int), isc_result_t(*allocator)(omapi_object_t **, const char *, int), isc_result_t(*sizer)(size_t), size_t size, isc_result_t(*initialize)(omapi_object_t *, const char *, int), int rc_flag)
Definition support.c:193
isc_result_t omapi_get_value_str(omapi_object_t *h, omapi_object_t *id, const char *name, omapi_value_t **value)
Definition support.c:482
isc_result_t omapi_set_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_typed_data_t *value)
Definition support.c:303
isc_result_t omapi_make_const_value(omapi_value_t **vp, omapi_data_string_t *name, const unsigned char *value, unsigned len, const char *file, int line)
Definition support.c:679
int omapi_td_strcasecmp(omapi_typed_data_t *s1, const char *s2)
Definition support.c:626
isc_result_t omapi_set_int_value(omapi_object_t *h, omapi_object_t *id, const char *name, int value)
Definition support.c:395
isc_result_t omapi_get_int_value(unsigned long *v, omapi_typed_data_t *t)
Definition support.c:835
omapi_object_type_t * omapi_type_datagram
Definition support.c:36
isc_result_t omapi_signal(omapi_object_t *handle, const char *name,...)
Definition support.c:267
int omapi_object_type_count
Definition support.c:46
isc_result_t omapi_make_handle_value(omapi_value_t **vp, omapi_data_string_t *name, omapi_object_t *value, const char *file, int line)
Definition support.c:772
isc_result_t omapi_make_int_value(omapi_value_t **vp, omapi_data_string_t *name, int value, const char *file, int line)
Definition support.c:709
Definition data.h:205