initial copy from the DHCP source pool
This commit is contained in:
26
lib/omapi/include/omapi/alloc.h
Normal file
26
lib/omapi/include/omapi/alloc.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/* alloc.h
|
||||
|
||||
Definitions for the object management API protocol memory allocation... */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1999 Internet Software Consortium.
|
||||
* Use is subject to license terms which appear in the file named
|
||||
* ISC-LICENSE that should have accompanied this file when you
|
||||
* received it. If a file named ISC-LICENSE did not accompany this
|
||||
* file, or you are not sure the one you have is correct, you may
|
||||
* obtain an applicable copy of the license at:
|
||||
*
|
||||
* http://www.isc.org/isc-license-1.0.html.
|
||||
*
|
||||
* This file is part of the ISC DHCP distribution. The documentation
|
||||
* associated with this file is listed in the file DOCUMENTATION,
|
||||
* included in the top-level directory of this release.
|
||||
*
|
||||
* Support and other services are available for ISC products - see
|
||||
* http://www.isc.org for more information.
|
||||
*/
|
||||
|
||||
isc_result_t omapi_buffer_new (omapi_buffer_t **, const char *);
|
||||
isc_result_t omapi_buffer_reference (omapi_buffer_t **,
|
||||
omapi_buffer_t *, const char *);
|
||||
isc_result_t omapi_buffer_dereference (omapi_buffer_t **, const char *);
|
||||
71
lib/omapi/include/omapi/buffer.h
Normal file
71
lib/omapi/include/omapi/buffer.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/* buffer.h
|
||||
|
||||
Definitions for the object management API protocol buffering... */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1999 Internet Software Consortium.
|
||||
* Use is subject to license terms which appear in the file named
|
||||
* ISC-LICENSE that should have accompanied this file when you
|
||||
* received it. If a file named ISC-LICENSE did not accompany this
|
||||
* file, or you are not sure the one you have is correct, you may
|
||||
* obtain an applicable copy of the license at:
|
||||
*
|
||||
* http://www.isc.org/isc-license-1.0.html.
|
||||
*
|
||||
* This file is part of the ISC DHCP distribution. The documentation
|
||||
* associated with this file is listed in the file DOCUMENTATION,
|
||||
* included in the top-level directory of this release.
|
||||
*
|
||||
* Support and other services are available for ISC products - see
|
||||
* http://www.isc.org for more information.
|
||||
*/
|
||||
|
||||
/* OMAPI buffers are ring buffers, which means that the beginning of the
|
||||
buffer and the end of the buffer chase each other around. As long as
|
||||
the tail never catches up to the head, there's room in the buffer for
|
||||
data.
|
||||
|
||||
- If the tail and the head are equal, the buffer is empty.
|
||||
|
||||
- If the tail is less than the head, the contents of the buffer
|
||||
are the bytes from the head to the end of buffer, and in addition,
|
||||
the bytes between the beginning of the buffer and the tail, not
|
||||
including the byte addressed by the tail.
|
||||
|
||||
- If the tail is greater than the head, then the buffer contains
|
||||
valid bytes starting with the byte addressed by the head, and
|
||||
ending with the byte before the byte addressed by the tail.
|
||||
|
||||
There will always be at least one byte of waste, because the tail can't
|
||||
increase so that it's equal to the head (that would represent an empty
|
||||
buffer. */
|
||||
#define OMAPI_BUF_SIZE 4048
|
||||
typedef struct _omapi_buffer {
|
||||
struct _omapi_buffer *next; /* Buffers can be chained. */
|
||||
u_int32_t refcnt; /* Buffers are reference counted. */
|
||||
u_int16_t head, tail; /* Buffers are organized in a ring. */
|
||||
char buf [OMAPI_BUF_SIZE]; /* The actual buffer is included in
|
||||
the buffer data structure. */
|
||||
} omapi_buffer_t;
|
||||
|
||||
#define BUFFER_BYTES_FREE(x) \
|
||||
((x) -> tail > (x) -> head \
|
||||
? sizeof ((x) -> buf) - ((x) -> tail - (x) -> head) \
|
||||
: (x) -> head - (x) -> tail)
|
||||
|
||||
#define BYTES_IN_BUFFER(x) \
|
||||
((x) -> tail > (x) -> head \
|
||||
? (x) -> tail - (x) -> head - 1 \
|
||||
: sizeof ((x) -> buf) - ((x) -> head - (x) -> tail) - 1)
|
||||
|
||||
isc_result_t omapi_connection_require (omapi_object_t *, unsigned);
|
||||
isc_result_t omapi_connection_copyout (unsigned char *,
|
||||
omapi_object_t *, unsigned);
|
||||
isc_result_t omapi_connection_copyin (omapi_object_t *,
|
||||
const unsigned char *, unsigned);
|
||||
isc_result_t omapi_connection_flush (omapi_object_t *);
|
||||
isc_result_t omapi_connection_get_uint32 (omapi_object_t *, u_int32_t *);
|
||||
isc_result_t omapi_connection_put_uint32 (omapi_object_t *, u_int32_t);
|
||||
isc_result_t omapi_connection_get_uint16 (omapi_object_t *, u_int16_t *);
|
||||
isc_result_t omapi_connection_put_uint16 (omapi_object_t *, u_int32_t);
|
||||
|
||||
365
lib/omapi/include/omapi/omapip.h
Normal file
365
lib/omapi/include/omapi/omapip.h
Normal file
@@ -0,0 +1,365 @@
|
||||
/* omapip.h
|
||||
|
||||
Definitions for the object management API and protocol... */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1999 Internet Software Consortium.
|
||||
* Use is subject to license terms which appear in the file named
|
||||
* ISC-LICENSE that should have accompanied this file when you
|
||||
* received it. If a file named ISC-LICENSE did not accompany this
|
||||
* file, or you are not sure the one you have is correct, you may
|
||||
* obtain an applicable copy of the license at:
|
||||
*
|
||||
* http://www.isc.org/isc-license-1.0.html.
|
||||
*
|
||||
* This file is part of the ISC DHCP distribution. The documentation
|
||||
* associated with this file is listed in the file DOCUMENTATION,
|
||||
* included in the top-level directory of this release.
|
||||
*
|
||||
* Support and other services are available for ISC products - see
|
||||
* http://www.isc.org for more information.
|
||||
*/
|
||||
|
||||
#ifndef _OMAPIP_H_
|
||||
#define _OMAPIP_H_
|
||||
#include <isc/result.h>
|
||||
|
||||
typedef unsigned int omapi_handle_t;
|
||||
|
||||
struct __omapi_object;
|
||||
typedef struct __omapi_object omapi_object_t;
|
||||
|
||||
typedef enum {
|
||||
omapi_datatype_int,
|
||||
omapi_datatype_string,
|
||||
omapi_datatype_data,
|
||||
omapi_datatype_object
|
||||
} omapi_datatype_t;
|
||||
|
||||
typedef struct {
|
||||
int refcnt;
|
||||
omapi_datatype_t type;
|
||||
union {
|
||||
struct {
|
||||
unsigned len;
|
||||
#define OMAPI_TYPED_DATA_NOBUFFER_LEN (sizeof (int) + \
|
||||
sizeof (omapi_datatype_t) + \
|
||||
sizeof (int))
|
||||
unsigned char value [1];
|
||||
} buffer;
|
||||
#define OMAPI_TYPED_DATA_OBJECT_LEN (sizeof (int) + \
|
||||
sizeof (omapi_datatype_t) + \
|
||||
sizeof (omapi_object_t *))
|
||||
omapi_object_t *object;
|
||||
#define OMAPI_TYPED_DATA_REF_LEN (sizeof (int) + \
|
||||
sizeof (omapi_datatype_t) + \
|
||||
3 * sizeof (void *))
|
||||
struct {
|
||||
void *ptr;
|
||||
isc_result_t (*reference) (void *,
|
||||
void *, char *);
|
||||
isc_result_t (*dereference) (void *, char *);
|
||||
} ref;
|
||||
#define OMAPI_TYPED_DATA_INT_LEN (sizeof (int) + \
|
||||
sizeof (omapi_datatype_t) + \
|
||||
sizeof (int))
|
||||
int integer;
|
||||
} u;
|
||||
} omapi_typed_data_t;
|
||||
|
||||
typedef struct {
|
||||
int refcnt;
|
||||
unsigned len;
|
||||
#define OMAPI_DATA_STRING_EMPTY_SIZE (2 * sizeof (int))
|
||||
unsigned char value [1];
|
||||
} omapi_data_string_t;
|
||||
|
||||
typedef struct {
|
||||
int refcnt;
|
||||
omapi_data_string_t *name;
|
||||
omapi_typed_data_t *value;
|
||||
} omapi_value_t;
|
||||
|
||||
typedef struct __omapi_object_type_t {
|
||||
const char *name;
|
||||
struct __omapi_object_type_t *next;
|
||||
|
||||
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 *);
|
||||
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 *);
|
||||
} omapi_object_type_t;
|
||||
|
||||
#define OMAPI_OBJECT_PREAMBLE \
|
||||
omapi_object_type_t *type; \
|
||||
int refcnt; \
|
||||
omapi_handle_t handle; \
|
||||
omapi_object_t *outer, *inner
|
||||
|
||||
/* The omapi handle structure. */
|
||||
struct __omapi_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
};
|
||||
|
||||
/* The port on which applications should listen for OMAPI connections. */
|
||||
#define OMAPI_PROTOCOL_PORT 7911
|
||||
|
||||
isc_result_t omapi_protocol_connect (omapi_object_t *,
|
||||
const char *, int, omapi_object_t *);
|
||||
isc_result_t omapi_protocol_listen (omapi_object_t *, int, int);
|
||||
isc_result_t omapi_protocol_accept (omapi_object_t *);
|
||||
isc_result_t omapi_protocol_send_intro (omapi_object_t *, unsigned, unsigned);
|
||||
isc_result_t omapi_protocol_ready (omapi_object_t *);
|
||||
isc_result_t omapi_protocol_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_protocol_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_protocol_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
|
||||
isc_result_t omapi_protocol_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_protocol_send_message (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_protocol_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_protocol_listener_set_value (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_protocol_listener_get_value (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_protocol_listener_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_protocol_listener_signal (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_protocol_listener_stuff (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_protocol_send_status (omapi_object_t *, omapi_object_t *,
|
||||
isc_result_t, unsigned, const char *);
|
||||
isc_result_t omapi_protocol_send_update (omapi_object_t *, omapi_object_t *,
|
||||
unsigned, omapi_object_t *);
|
||||
|
||||
isc_result_t omapi_connect (omapi_object_t *, const char *, int);
|
||||
isc_result_t omapi_disconnect (omapi_object_t *, int);
|
||||
int omapi_connection_readfd (omapi_object_t *);
|
||||
int omapi_connection_writefd (omapi_object_t *);
|
||||
isc_result_t omapi_connection_reader (omapi_object_t *);
|
||||
isc_result_t omapi_connection_writer (omapi_object_t *);
|
||||
isc_result_t omapi_connection_reaper (omapi_object_t *);
|
||||
isc_result_t omapi_connection_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_connection_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_connection_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_connection_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_connection_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_connection_write_typed_data (omapi_object_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_connection_put_name (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_connection_put_string (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_connection_put_handle (omapi_object_t *c,
|
||||
omapi_object_t *h);
|
||||
|
||||
|
||||
isc_result_t omapi_listen (omapi_object_t *, int, int);
|
||||
isc_result_t omapi_listener_accept (omapi_object_t *);
|
||||
int omapi_listener_readfd (omapi_object_t *);
|
||||
isc_result_t omapi_accept (omapi_object_t *);
|
||||
isc_result_t omapi_listener_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_listener_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_listener_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_listener_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_listener_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
|
||||
isc_result_t omapi_register_io_object (omapi_object_t *,
|
||||
int (*)(omapi_object_t *),
|
||||
int (*)(omapi_object_t *),
|
||||
isc_result_t (*)(omapi_object_t *),
|
||||
isc_result_t (*)(omapi_object_t *),
|
||||
isc_result_t (*)(omapi_object_t *));
|
||||
isc_result_t omapi_dispatch (struct timeval *);
|
||||
isc_result_t omapi_wait_for_completion (omapi_object_t *, struct timeval *);
|
||||
isc_result_t omapi_one_dispatch (omapi_object_t *, struct timeval *);
|
||||
isc_result_t omapi_io_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_io_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *, omapi_value_t **);
|
||||
isc_result_t omapi_io_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_io_signal_handler (omapi_object_t *, const char *, va_list);
|
||||
isc_result_t omapi_io_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_waiter_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
|
||||
isc_result_t omapi_generic_new (omapi_object_t **, const char *);
|
||||
isc_result_t omapi_generic_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_generic_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_generic_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_generic_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_generic_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
|
||||
isc_result_t omapi_message_new (omapi_object_t **, const char *);
|
||||
isc_result_t omapi_message_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_message_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_message_destroy (omapi_object_t *, const char *);
|
||||
isc_result_t omapi_message_signal_handler (omapi_object_t *,
|
||||
const char *, va_list);
|
||||
isc_result_t omapi_message_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_message_register (omapi_object_t *);
|
||||
isc_result_t omapi_message_unregister (omapi_object_t *);
|
||||
isc_result_t omapi_message_process (omapi_object_t *, omapi_object_t *);
|
||||
|
||||
extern omapi_object_type_t *omapi_type_connection;
|
||||
extern omapi_object_type_t *omapi_type_listener;
|
||||
extern omapi_object_type_t *omapi_type_io_object;
|
||||
extern omapi_object_type_t *omapi_type_generic;
|
||||
extern omapi_object_type_t *omapi_type_protocol;
|
||||
extern omapi_object_type_t *omapi_type_protocol_listener;
|
||||
extern omapi_object_type_t *omapi_type_waiter;
|
||||
extern omapi_object_type_t *omapi_type_remote;
|
||||
extern omapi_object_type_t *omapi_type_message;
|
||||
|
||||
extern omapi_object_type_t *omapi_object_types;
|
||||
|
||||
isc_result_t omapi_init (void);
|
||||
isc_result_t omapi_object_type_register (omapi_object_type_t **,
|
||||
const char *,
|
||||
isc_result_t (*)
|
||||
(omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *),
|
||||
isc_result_t (*)
|
||||
(omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **),
|
||||
isc_result_t (*) (omapi_object_t *,
|
||||
const char *),
|
||||
isc_result_t (*) (omapi_object_t *,
|
||||
const char *,
|
||||
va_list),
|
||||
isc_result_t (*) (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *),
|
||||
isc_result_t (*) (omapi_object_t **,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *),
|
||||
isc_result_t (*) (omapi_object_t **,
|
||||
omapi_object_t *),
|
||||
isc_result_t (*) (omapi_object_t *,
|
||||
omapi_object_t *));
|
||||
isc_result_t omapi_signal (omapi_object_t *, const char *, ...);
|
||||
isc_result_t omapi_signal_in (omapi_object_t *, const char *, ...);
|
||||
isc_result_t omapi_set_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_typed_data_t *);
|
||||
isc_result_t omapi_set_value_str (omapi_object_t *, omapi_object_t *,
|
||||
const char *, omapi_typed_data_t *);
|
||||
isc_result_t omapi_set_boolean_value (omapi_object_t *, omapi_object_t *,
|
||||
const char *, int);
|
||||
isc_result_t omapi_set_int_value (omapi_object_t *, omapi_object_t *,
|
||||
const char *, int);
|
||||
isc_result_t omapi_set_object_value (omapi_object_t *, omapi_object_t *,
|
||||
const char *, omapi_object_t *);
|
||||
isc_result_t omapi_set_string_value (omapi_object_t *, omapi_object_t *,
|
||||
const char *, const char *);
|
||||
isc_result_t omapi_get_value (omapi_object_t *, omapi_object_t *,
|
||||
omapi_data_string_t *,
|
||||
omapi_value_t **);
|
||||
isc_result_t omapi_get_value_str (omapi_object_t *, omapi_object_t *,
|
||||
const char *, omapi_value_t **);
|
||||
isc_result_t omapi_stuff_values (omapi_object_t *,
|
||||
omapi_object_t *,
|
||||
omapi_object_t *);
|
||||
isc_result_t omapi_object_create (omapi_object_t **, omapi_object_t *,
|
||||
omapi_object_type_t *);
|
||||
isc_result_t omapi_object_update (omapi_object_t *, omapi_object_t *,
|
||||
omapi_object_t *, omapi_handle_t);
|
||||
int omapi_data_string_cmp (omapi_data_string_t *, omapi_data_string_t *);
|
||||
int omapi_ds_strcmp (omapi_data_string_t *, const char *);
|
||||
int omapi_td_strcmp (omapi_typed_data_t *, const char *);
|
||||
isc_result_t omapi_make_value (omapi_value_t **, omapi_data_string_t *,
|
||||
omapi_typed_data_t *, const char *);
|
||||
isc_result_t omapi_make_const_value (omapi_value_t **, omapi_data_string_t *,
|
||||
const unsigned char *,
|
||||
unsigned, const char *);
|
||||
isc_result_t omapi_make_int_value (omapi_value_t **, omapi_data_string_t *,
|
||||
int, const char *);
|
||||
isc_result_t omapi_make_handle_value (omapi_value_t **, omapi_data_string_t *,
|
||||
omapi_object_t *, const char *);
|
||||
isc_result_t omapi_make_string_value (omapi_value_t **, omapi_data_string_t *,
|
||||
char *, const char *);
|
||||
isc_result_t omapi_get_int_value (unsigned long *, omapi_typed_data_t *);
|
||||
|
||||
isc_result_t omapi_object_handle (omapi_handle_t *, omapi_object_t *);
|
||||
isc_result_t omapi_handle_lookup (omapi_object_t **, omapi_handle_t);
|
||||
isc_result_t omapi_handle_td_lookup (omapi_object_t **, omapi_typed_data_t *);
|
||||
|
||||
isc_result_t omapi_object_reference (omapi_object_t **,
|
||||
omapi_object_t *, const char *);
|
||||
isc_result_t omapi_object_dereference (omapi_object_t **, const char *);
|
||||
isc_result_t omapi_typed_data_new (omapi_typed_data_t **,
|
||||
omapi_datatype_t, ...);
|
||||
isc_result_t omapi_typed_data_reference (omapi_typed_data_t **,
|
||||
omapi_typed_data_t *, const char *);
|
||||
isc_result_t omapi_typed_data_dereference (omapi_typed_data_t **,
|
||||
const char *);
|
||||
isc_result_t omapi_data_string_new (omapi_data_string_t **,
|
||||
unsigned, const char *);
|
||||
isc_result_t omapi_data_string_reference (omapi_data_string_t **,
|
||||
omapi_data_string_t *, const char *);
|
||||
isc_result_t omapi_data_string_dereference (omapi_data_string_t **,
|
||||
const char *);
|
||||
isc_result_t omapi_value_new (omapi_value_t **, const char *);
|
||||
isc_result_t omapi_value_reference (omapi_value_t **,
|
||||
omapi_value_t *, const char *);
|
||||
isc_result_t omapi_value_dereference (omapi_value_t **, const char *);
|
||||
|
||||
|
||||
#endif /* _OMAPIP_H_ */
|
||||
189
lib/omapi/include/omapi/omapip_p.h
Normal file
189
lib/omapi/include/omapi/omapip_p.h
Normal file
@@ -0,0 +1,189 @@
|
||||
/* omapip_p.h
|
||||
|
||||
Private master include file for the OMAPI library. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1999 Internet Software Consortium.
|
||||
* Use is subject to license terms which appear in the file named
|
||||
* ISC-LICENSE that should have accompanied this file when you
|
||||
* received it. If a file named ISC-LICENSE did not accompany this
|
||||
* file, or you are not sure the one you have is correct, you may
|
||||
* obtain an applicable copy of the license at:
|
||||
*
|
||||
* http://www.isc.org/isc-license-1.0.html.
|
||||
*
|
||||
* This file is part of the ISC DHCP distribution. The documentation
|
||||
* associated with this file is listed in the file DOCUMENTATION,
|
||||
* included in the top-level directory of this release.
|
||||
*
|
||||
* Support and other services are available for ISC products - see
|
||||
* http://www.isc.org for more information.
|
||||
*/
|
||||
|
||||
#ifndef __OMAPIP_OMAPIP_P_H__
|
||||
#define __OMAPIP_OMAPIP_P_H__
|
||||
|
||||
#ifndef __CYGWIN32__
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#if defined (NSUPDATE)
|
||||
# include <arpa/nameser.h>
|
||||
# include <resolv.h>
|
||||
#endif
|
||||
|
||||
#include <netdb.h>
|
||||
#else
|
||||
#define fd_set cygwin_fd_set
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "cdefs.h"
|
||||
#include "osdep.h"
|
||||
|
||||
#include <isc/result.h>
|
||||
|
||||
#include <omapip/omapip.h>
|
||||
|
||||
/* OMAPI protocol header, version 1.00 */
|
||||
typedef struct {
|
||||
unsigned authlen; /* Length of authenticator. */
|
||||
unsigned authid; /* Authenticator object ID. */
|
||||
unsigned op; /* Opcode. */
|
||||
omapi_handle_t handle; /* Handle of object being operated on,
|
||||
or zero. */
|
||||
unsigned id; /* Transaction ID. */
|
||||
unsigned rid; /* ID of transaction to which this is a response. */
|
||||
} omapi_protocol_header_t;
|
||||
|
||||
#define OMAPI_PROTOCOL_VERSION 100
|
||||
|
||||
#define OMAPI_OP_OPEN 1
|
||||
#define OMAPI_OP_REFRESH 2
|
||||
#define OMAPI_OP_UPDATE 3
|
||||
#define OMAPI_OP_NOTIFY 4
|
||||
#define OMAPI_OP_STATUS 5
|
||||
#define OMAPI_OP_DELETE 6
|
||||
|
||||
typedef enum {
|
||||
omapi_connection_unconnected,
|
||||
omapi_connection_connecting,
|
||||
omapi_connection_connected,
|
||||
omapi_connection_disconnecting,
|
||||
omapi_connection_closed
|
||||
} omapi_connection_state_t;
|
||||
|
||||
typedef enum {
|
||||
omapi_protocol_intro_wait,
|
||||
omapi_protocol_header_wait,
|
||||
omapi_protocol_signature_wait,
|
||||
omapi_protocol_name_wait,
|
||||
omapi_protocol_name_length_wait,
|
||||
omapi_protocol_value_wait,
|
||||
omapi_protocol_value_length_wait
|
||||
} omapi_protocol_state_t;
|
||||
|
||||
typedef struct __omapi_message_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
struct __omapi_message_object *next, *prev;
|
||||
omapi_object_t *object;
|
||||
omapi_object_t *notify_object;
|
||||
unsigned authlen;
|
||||
omapi_typed_data_t *authenticator;
|
||||
unsigned authid;
|
||||
omapi_object_t *id_object;
|
||||
unsigned op;
|
||||
omapi_handle_t h;
|
||||
unsigned id;
|
||||
unsigned rid;
|
||||
} omapi_message_object_t;
|
||||
|
||||
typedef struct {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
unsigned header_size;
|
||||
unsigned protocol_version;
|
||||
u_int32_t next_xid;
|
||||
omapi_object_t *authinfo; /* Default authinfo to use. */
|
||||
|
||||
omapi_protocol_state_t state; /* Input state. */
|
||||
int reading_message_values; /* True if reading message-specific
|
||||
values. */
|
||||
omapi_message_object_t *message; /* Incoming message. */
|
||||
omapi_data_string_t *name; /* Incoming name. */
|
||||
omapi_typed_data_t *value; /* Incoming value. */
|
||||
} omapi_protocol_object_t;
|
||||
|
||||
typedef struct {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
} omapi_protocol_listener_object_t;
|
||||
|
||||
#include <omapip/buffer.h>
|
||||
|
||||
typedef struct __omapi_connection_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
int socket; /* Connection socket. */
|
||||
omapi_connection_state_t state;
|
||||
struct sockaddr_in remote_addr;
|
||||
struct sockaddr_in local_addr;
|
||||
u_int32_t bytes_needed; /* Bytes of input needed before wakeup. */
|
||||
u_int32_t in_bytes; /* Bytes of input already buffered. */
|
||||
omapi_buffer_t *inbufs;
|
||||
u_int32_t out_bytes; /* Bytes of output in buffers. */
|
||||
omapi_buffer_t *outbufs;
|
||||
omapi_object_t *listener; /* Listener that accepted this
|
||||
connection, if any. */
|
||||
} omapi_connection_object_t;
|
||||
|
||||
typedef struct __omapi_listener_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
int socket; /* Connection socket. */
|
||||
struct sockaddr_in address;
|
||||
} omapi_listener_object_t;
|
||||
|
||||
typedef struct __omapi_io_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
struct __omapi_io_object *next;
|
||||
int (*readfd) (omapi_object_t *);
|
||||
int (*writefd) (omapi_object_t *);
|
||||
isc_result_t (*reader) (omapi_object_t *);
|
||||
isc_result_t (*writer) (omapi_object_t *);
|
||||
isc_result_t (*reaper) (omapi_object_t *);
|
||||
} omapi_io_object_t;
|
||||
|
||||
typedef struct __omapi_generic_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
omapi_value_t **values;
|
||||
int nvalues, va_max;
|
||||
} omapi_generic_object_t;
|
||||
|
||||
typedef struct __omapi_waiter_object {
|
||||
OMAPI_OBJECT_PREAMBLE;
|
||||
int ready;
|
||||
struct __omapi_waiter_object *next;
|
||||
} omapi_waiter_object_t;
|
||||
|
||||
#define OMAPI_HANDLE_TABLE_SIZE 120
|
||||
|
||||
typedef struct __omapi_handle_table {
|
||||
omapi_handle_t first, limit;
|
||||
omapi_handle_t next;
|
||||
int leafp;
|
||||
union {
|
||||
omapi_object_t *object;
|
||||
struct __omapi_handle_table *table;
|
||||
} children [OMAPI_HANDLE_TABLE_SIZE];
|
||||
} omapi_handle_table_t;
|
||||
|
||||
#include <omapip/alloc.h>
|
||||
#endif /* __OMAPIP_OMAPIP_P_H__ */
|
||||
Reference in New Issue
Block a user