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