Return to omapip.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcp / includes / omapip |
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_ */