diff options
author | brooks <brooks@FreeBSD.org> | 2005-06-29 01:46:40 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2005-06-29 01:46:40 +0000 |
commit | bd7fc02cf00f7446a4fc2151d3367d5e935dacae (patch) | |
tree | c334ad76a77de064f9dde5e545e004461813e6a5 /contrib/isc-dhcp/omapip/support.c | |
parent | 37efc775b590475026ff6366785a1b78bcb697f5 (diff) | |
download | FreeBSD-src-bd7fc02cf00f7446a4fc2151d3367d5e935dacae.zip FreeBSD-src-bd7fc02cf00f7446a4fc2151d3367d5e935dacae.tar.gz |
Remove isc-dhcp files from HEAD now that we're using the OpenBSD
dhclient.
Reminded by: ru
Approved by: re (blanket dhclient)
Diffstat (limited to 'contrib/isc-dhcp/omapip/support.c')
-rw-r--r-- | contrib/isc-dhcp/omapip/support.c | 863 |
1 files changed, 0 insertions, 863 deletions
diff --git a/contrib/isc-dhcp/omapip/support.c b/contrib/isc-dhcp/omapip/support.c deleted file mode 100644 index 4efde41..0000000 --- a/contrib/isc-dhcp/omapip/support.c +++ /dev/null @@ -1,863 +0,0 @@ -/* support.c - - Subroutines providing general support for objects. */ - -/* - * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1999-2003 by Internet Software Consortium - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Internet Systems Consortium, Inc. - * 950 Charter Street - * Redwood City, CA 94063 - * <info@isc.org> - * http://www.isc.org/ - * - * This software has been written for Internet Systems Consortium - * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc. - * To learn more about Internet Systems Consortium, see - * ``http://www.isc.org/''. To learn more about Vixie Enterprises, - * see ``http://www.vix.com''. To learn more about Nominum, Inc., see - * ``http://www.nominum.com''. - */ - -#include <omapip/omapip_p.h> - -omapi_object_type_t *omapi_type_connection; -omapi_object_type_t *omapi_type_listener; -omapi_object_type_t *omapi_type_io_object; -omapi_object_type_t *omapi_type_datagram; -omapi_object_type_t *omapi_type_generic; -omapi_object_type_t *omapi_type_protocol; -omapi_object_type_t *omapi_type_protocol_listener; -omapi_object_type_t *omapi_type_waiter; -omapi_object_type_t *omapi_type_remote; -omapi_object_type_t *omapi_type_message; -omapi_object_type_t *omapi_type_auth_key; - -omapi_object_type_t *omapi_object_types; -int omapi_object_type_count; -static int ot_max; - -#if defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT) -void omapi_type_relinquish () -{ - omapi_object_type_t *t, *n; - - for (t = omapi_object_types; t; t = n) { - n = t -> next; - dfree (t, MDL); - } - omapi_object_types = (omapi_object_type_t *)0; -} -#endif - -isc_result_t omapi_init (void) -{ - isc_result_t status; - - dst_init(); - - /* Register all the standard object types... */ - status = omapi_object_type_register (&omapi_type_connection, - "connection", - omapi_connection_set_value, - omapi_connection_get_value, - omapi_connection_destroy, - omapi_connection_signal_handler, - omapi_connection_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof - (omapi_connection_object_t), 0, - RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_listener, - "listener", - omapi_listener_set_value, - omapi_listener_get_value, - omapi_listener_destroy, - omapi_listener_signal_handler, - omapi_listener_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_listener_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_io_object, - "io", - omapi_io_set_value, - omapi_io_get_value, - omapi_io_destroy, - omapi_io_signal_handler, - omapi_io_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_io_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_generic, - "generic", - omapi_generic_set_value, - omapi_generic_get_value, - omapi_generic_destroy, - omapi_generic_signal_handler, - omapi_generic_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_generic_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_protocol, - "protocol", - omapi_protocol_set_value, - omapi_protocol_get_value, - omapi_protocol_destroy, - omapi_protocol_signal_handler, - omapi_protocol_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_protocol_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = (omapi_object_type_register - (&omapi_type_protocol_listener, "protocol-listener", - omapi_protocol_listener_set_value, - omapi_protocol_listener_get_value, - omapi_protocol_listener_destroy, - omapi_protocol_listener_signal, - omapi_protocol_listener_stuff, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_protocol_listener_object_t), 0, RC_MISC)); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_message, - "message", - omapi_message_set_value, - omapi_message_get_value, - omapi_message_destroy, - omapi_message_signal_handler, - omapi_message_stuff_values, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_message_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_waiter, - "waiter", - 0, - 0, - 0, - omapi_waiter_signal_handler, 0, - 0, 0, 0, 0, 0, 0, - sizeof (omapi_waiter_object_t), - 0, RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_object_type_register (&omapi_type_auth_key, - "authenticator", - 0, - omapi_auth_key_get_value, - omapi_auth_key_destroy, - 0, - omapi_auth_key_stuff_values, - omapi_auth_key_lookup, - 0, 0, 0, 0, 0, - sizeof (omapi_auth_key_t), 0, - RC_MISC); - if (status != ISC_R_SUCCESS) - return status; - -#if defined (TRACING) - omapi_listener_trace_setup (); - omapi_connection_trace_setup (); - omapi_buffer_trace_setup (); - trace_mr_init (); -#endif - - /* This seems silly, but leave it. */ - return ISC_R_SUCCESS; -} - -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) -{ - omapi_object_type_t *t; - - t = dmalloc (sizeof *t, MDL); - if (!t) - return ISC_R_NOMEMORY; - memset (t, 0, sizeof *t); - - t -> name = name; - t -> set_value = set_value; - t -> get_value = get_value; - t -> destroy = destroy; - t -> signal_handler = signal_handler; - t -> stuff_values = stuff_values; - t -> lookup = lookup; - t -> create = create; - t -> remove = remove; - t -> next = omapi_object_types; - t -> sizer = sizer; - t -> size = size; - t -> freer = freer; - t -> allocator = allocator; - t -> initialize = initialize; - t -> rc_flag = rc_flag; - omapi_object_types = t; - if (type) - *type = t; - return ISC_R_SUCCESS; -} - -isc_result_t omapi_signal (omapi_object_t *handle, const char *name, ...) -{ - va_list ap; - omapi_object_t *outer; - isc_result_t status; - - va_start (ap, name); - for (outer = handle; outer -> outer; outer = outer -> outer) - ; - if (outer -> type -> signal_handler) - status = (*(outer -> type -> signal_handler)) (outer, - name, ap); - else - status = ISC_R_NOTFOUND; - va_end (ap); - return status; -} - -isc_result_t omapi_signal_in (omapi_object_t *handle, const char *name, ...) -{ - va_list ap; - omapi_object_t *outer; - isc_result_t status; - - if (!handle) - return ISC_R_NOTFOUND; - va_start (ap, name); - - if (handle -> type -> signal_handler) - status = (*(handle -> type -> signal_handler)) (handle, - name, ap); - else - status = ISC_R_NOTFOUND; - va_end (ap); - return status; -} - -isc_result_t omapi_set_value (omapi_object_t *h, - omapi_object_t *id, - omapi_data_string_t *name, - omapi_typed_data_t *value) -{ - omapi_object_t *outer; - isc_result_t status; - -#if defined (DEBUG) - if (!value) { - log_info ("omapi_set_value (%.*s, NULL)", - (int)name -> len, name -> value); - } else if (value -> type == omapi_datatype_int) { - log_info ("omapi_set_value (%.*s, %ld)", - (int)name -> len, name -> value, - (long)value -> u.integer); - } else if (value -> type == omapi_datatype_string) { - log_info ("omapi_set_value (%.*s, %.*s)", - (int)name -> len, name -> value, - (int)value -> u.buffer.len, value -> u.buffer.value); - } else if (value -> type == omapi_datatype_data) { - log_info ("omapi_set_value (%.*s, %ld %lx)", - (int)name -> len, name -> value, - (long)value -> u.buffer.len, - (unsigned long)value -> u.buffer.value); - } else if (value -> type == omapi_datatype_object) { - log_info ("omapi_set_value (%.*s, %s)", - (int)name -> len, name -> value, - value -> u.object - ? (value -> u.object -> type - ? value -> u.object -> type -> name - : "(unknown object)") - : "(unknown object)"); - } -#endif - - for (outer = h; outer -> outer; outer = outer -> outer) - ; - if (outer -> type -> set_value) - status = (*(outer -> type -> set_value)) (outer, - id, name, value); - else - status = ISC_R_NOTFOUND; -#if defined (DEBUG) - log_info (" ==> %s", isc_result_totext (status)); -#endif - return status; -} - -isc_result_t omapi_set_value_str (omapi_object_t *h, - omapi_object_t *id, - const char *name, - omapi_typed_data_t *value) -{ - omapi_object_t *outer; - omapi_data_string_t *nds; - isc_result_t status; - - nds = (omapi_data_string_t *)0; - status = omapi_data_string_new (&nds, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (nds -> value, name, strlen (name)); - - status = omapi_set_value (h, id, nds, value); - omapi_data_string_dereference (&nds, MDL); - return status; -} - -isc_result_t omapi_set_boolean_value (omapi_object_t *h, omapi_object_t *id, - const char *name, int value) -{ - isc_result_t status; - omapi_typed_data_t *tv = (omapi_typed_data_t *)0; - omapi_data_string_t *n = (omapi_data_string_t *)0; - int len; - int ip; - - status = omapi_data_string_new (&n, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (n -> value, name, strlen (name)); - - status = omapi_typed_data_new (MDL, &tv, omapi_datatype_int, value); - if (status != ISC_R_SUCCESS) { - omapi_data_string_dereference (&n, MDL); - return status; - } - - status = omapi_set_value (h, id, n, tv); - omapi_data_string_dereference (&n, MDL); - omapi_typed_data_dereference (&tv, MDL); - return status; -} - -isc_result_t omapi_set_int_value (omapi_object_t *h, omapi_object_t *id, - const char *name, int value) -{ - isc_result_t status; - omapi_typed_data_t *tv = (omapi_typed_data_t *)0; - omapi_data_string_t *n = (omapi_data_string_t *)0; - int len; - int ip; - - status = omapi_data_string_new (&n, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (n -> value, name, strlen (name)); - - status = omapi_typed_data_new (MDL, &tv, omapi_datatype_int, value); - if (status != ISC_R_SUCCESS) { - omapi_data_string_dereference (&n, MDL); - return status; - } - - status = omapi_set_value (h, id, n, tv); - omapi_data_string_dereference (&n, MDL); - omapi_typed_data_dereference (&tv, MDL); - return status; -} - -isc_result_t omapi_set_object_value (omapi_object_t *h, omapi_object_t *id, - const char *name, omapi_object_t *value) -{ - isc_result_t status; - omapi_typed_data_t *tv = (omapi_typed_data_t *)0; - omapi_data_string_t *n = (omapi_data_string_t *)0; - int len; - int ip; - - status = omapi_data_string_new (&n, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (n -> value, name, strlen (name)); - - status = omapi_typed_data_new (MDL, &tv, omapi_datatype_object, value); - if (status != ISC_R_SUCCESS) { - omapi_data_string_dereference (&n, MDL); - return status; - } - - status = omapi_set_value (h, id, n, tv); - omapi_data_string_dereference (&n, MDL); - omapi_typed_data_dereference (&tv, MDL); - return status; -} - -isc_result_t omapi_set_string_value (omapi_object_t *h, omapi_object_t *id, - const char *name, const char *value) -{ - isc_result_t status; - omapi_typed_data_t *tv = (omapi_typed_data_t *)0; - omapi_data_string_t *n = (omapi_data_string_t *)0; - int len; - int ip; - - status = omapi_data_string_new (&n, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (n -> value, name, strlen (name)); - - status = omapi_typed_data_new (MDL, &tv, omapi_datatype_string, value); - if (status != ISC_R_SUCCESS) { - omapi_data_string_dereference (&n, MDL); - return status; - } - - status = omapi_set_value (h, id, n, tv); - omapi_data_string_dereference (&n, MDL); - omapi_typed_data_dereference (&tv, MDL); - return status; -} - -isc_result_t omapi_get_value (omapi_object_t *h, - omapi_object_t *id, - omapi_data_string_t *name, - omapi_value_t **value) -{ - omapi_object_t *outer; - - for (outer = h; outer -> outer; outer = outer -> outer) - ; - if (outer -> type -> get_value) - return (*(outer -> type -> get_value)) (outer, - id, name, value); - return ISC_R_NOTFOUND; -} - -isc_result_t omapi_get_value_str (omapi_object_t *h, - omapi_object_t *id, - const char *name, - omapi_value_t **value) -{ - omapi_object_t *outer; - omapi_data_string_t *nds; - isc_result_t status; - - nds = (omapi_data_string_t *)0; - status = omapi_data_string_new (&nds, strlen (name), MDL); - if (status != ISC_R_SUCCESS) - return status; - memcpy (nds -> value, name, strlen (name)); - - for (outer = h; outer -> outer; outer = outer -> outer) - ; - if (outer -> type -> get_value) - status = (*(outer -> type -> get_value)) (outer, - id, nds, value); - else - status = ISC_R_NOTFOUND; - omapi_data_string_dereference (&nds, MDL); - return status; -} - -isc_result_t omapi_stuff_values (omapi_object_t *c, - omapi_object_t *id, - omapi_object_t *o) -{ - omapi_object_t *outer; - - for (outer = o; outer -> outer; outer = outer -> outer) - ; - if (outer -> type -> stuff_values) - return (*(outer -> type -> stuff_values)) (c, id, outer); - return ISC_R_NOTFOUND; -} - -isc_result_t omapi_object_create (omapi_object_t **obj, omapi_object_t *id, - omapi_object_type_t *type) -{ - if (!type -> create) - return ISC_R_NOTIMPLEMENTED; - return (*(type -> create)) (obj, id); -} - -isc_result_t omapi_object_update (omapi_object_t *obj, omapi_object_t *id, - omapi_object_t *src, omapi_handle_t handle) -{ - omapi_generic_object_t *gsrc; - isc_result_t status; - int i; - - if (!src) - return ISC_R_INVALIDARG; - if (src -> type != omapi_type_generic) - return ISC_R_NOTIMPLEMENTED; - gsrc = (omapi_generic_object_t *)src; - for (i = 0; i < gsrc -> nvalues; i++) { - status = omapi_set_value (obj, id, - gsrc -> values [i] -> name, - gsrc -> values [i] -> value); - if (status != ISC_R_SUCCESS && status != ISC_R_UNCHANGED) - return status; - } - if (handle) - omapi_set_int_value (obj, id, "remote-handle", (int)handle); - status = omapi_signal (obj, "updated"); - if (status != ISC_R_NOTFOUND) - return status; - return ISC_R_SUCCESS; -} - -int omapi_data_string_cmp (omapi_data_string_t *s1, omapi_data_string_t *s2) -{ - unsigned len; - int rv; - - if (s1 -> len > s2 -> len) - len = s2 -> len; - else - len = s1 -> len; - rv = memcmp (s1 -> value, s2 -> value, len); - if (rv) - return rv; - if (s1 -> len > s2 -> len) - return 1; - else if (s1 -> len < s2 -> len) - return -1; - return 0; -} - -int omapi_ds_strcmp (omapi_data_string_t *s1, const char *s2) -{ - unsigned len, slen; - int rv; - - slen = strlen (s2); - if (slen > s1 -> len) - len = s1 -> len; - else - len = slen; - rv = memcmp (s1 -> value, s2, len); - if (rv) - return rv; - if (s1 -> len > slen) - return 1; - else if (s1 -> len < slen) - return -1; - return 0; -} - -int omapi_td_strcmp (omapi_typed_data_t *s1, const char *s2) -{ - unsigned len, slen; - int rv; - - /* If the data type is not compatible, never equal. */ - if (s1 -> type != omapi_datatype_data && - s1 -> type != omapi_datatype_string) - return -1; - - slen = strlen (s2); - if (slen > s1 -> u.buffer.len) - len = s1 -> u.buffer.len; - else - len = slen; - rv = memcmp (s1 -> u.buffer.value, s2, len); - if (rv) - return rv; - if (s1 -> u.buffer.len > slen) - return 1; - else if (s1 -> u.buffer.len < slen) - return -1; - return 0; -} - -int omapi_td_strcasecmp (omapi_typed_data_t *s1, const char *s2) -{ - unsigned len, slen; - int rv; - - /* If the data type is not compatible, never equal. */ - if (s1 -> type != omapi_datatype_data && - s1 -> type != omapi_datatype_string) - return -1; - - slen = strlen (s2); - if (slen > s1 -> u.buffer.len) - len = s1 -> u.buffer.len; - else - len = slen; - rv = casecmp (s1 -> u.buffer.value, s2, len); - if (rv) - return rv; - if (s1 -> u.buffer.len > slen) - return 1; - else if (s1 -> u.buffer.len < slen) - return -1; - return 0; -} - -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) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - if (value) { - status = omapi_typed_data_reference (&(*vp) -> value, - value, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - } - return ISC_R_SUCCESS; -} - -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) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - if (value) { - status = omapi_typed_data_new (file, line, &(*vp) -> value, - omapi_datatype_data, len); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - memcpy ((*vp) -> value -> u.buffer.value, value, len); - } - return ISC_R_SUCCESS; -} - -isc_result_t omapi_make_int_value (omapi_value_t **vp, - omapi_data_string_t *name, - int value, const char *file, int line) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - status = omapi_typed_data_new (file, line, &(*vp) -> value, - omapi_datatype_int, value); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - return ISC_R_SUCCESS; -} - -isc_result_t omapi_make_uint_value (omapi_value_t **vp, - omapi_data_string_t *name, - unsigned int value, - const char *file, int line) -{ - return omapi_make_int_value (vp, name, (int)value, file, line); -} - -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) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - - if (value) { - status = omapi_typed_data_new (file, line, &(*vp) -> value, - omapi_datatype_object, value); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - } - - return ISC_R_SUCCESS; -} - -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) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - if (value) { - status = omapi_typed_data_new (file, line, &(*vp) -> value, - omapi_datatype_int); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - status = (omapi_object_handle - ((omapi_handle_t *)&(*vp) -> value -> u.integer, - value)); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - } - return ISC_R_SUCCESS; -} - -isc_result_t omapi_make_string_value (omapi_value_t **vp, - omapi_data_string_t *name, - const char *value, - const char *file, int line) -{ - isc_result_t status; - - status = omapi_value_new (vp, file, line); - if (status != ISC_R_SUCCESS) - return status; - - status = omapi_data_string_reference (&(*vp) -> name, - name, file, line); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - if (value) { - status = omapi_typed_data_new (file, line, &(*vp) -> value, - omapi_datatype_string, value); - if (status != ISC_R_SUCCESS) { - omapi_value_dereference (vp, file, line); - return status; - } - } - return ISC_R_SUCCESS; -} - -isc_result_t omapi_get_int_value (unsigned long *v, omapi_typed_data_t *t) -{ - u_int32_t rv; - - if (t -> type == omapi_datatype_int) { - *v = t -> u.integer; - return ISC_R_SUCCESS; - } else if (t -> type == omapi_datatype_string || - t -> type == omapi_datatype_data) { - if (t -> u.buffer.len != sizeof (rv)) - return ISC_R_INVALIDARG; - memcpy (&rv, t -> u.buffer.value, sizeof rv); - *v = ntohl (rv); - return ISC_R_SUCCESS; - } - return ISC_R_INVALIDARG; -} |