54 const char *server_name,
64 log_debug (
"omapi_connect(%s, port=%d)", server_name, port);
82 for (
i = 0;
i <
hix;
i++) {
85 memcpy (addrs -> addresses [
i].address,
88 addrs -> addresses [
i].port = port;
94 addrs -> addresses [0].addrtype =
AF_INET;
95 addrs -> addresses [0].addrlen =
sizeof foo;
96 memcpy (addrs -> addresses [0].address, &foo,
sizeof foo);
97 addrs -> addresses [0].port = port;
143 if (
obj -> socket < 0) {
154 if (local_addr -> addrtype !=
AF_INET) {
161 local_addr -> address,
162 local_addr -> addrlen);
163#if defined (HAVE_SA_LEN)
325 unsigned length,
char *buf)
335 (
sizeof remote.sin_port) +
336 (
sizeof remote.sin_addr)) * 2) {
337 log_error (
"Trace connect: invalid length %d", length);
342 memset (&local, 0,
sizeof local);
349 memcpy (&local.sin_port,
s,
sizeof local.sin_port);
350 s +=
sizeof local.sin_port;
353 memcpy (&local.sin_addr,
s,
sizeof local.sin_addr);
354 s +=
sizeof local.sin_addr;
367 if (
lp -> address.sin_port == local.sin_port) {
376 "Spurious traced listener connect - index ",
379 ntohs (local.sin_port));
385 log_error (
"traced listener connect: %s",
397 for (
i = 0; (
lp->connect_list &&
398 i <
lp->connect_list->count);
i++) {
400 &
lp->connect_list->addresses[
i].address,
401 sizeof remote.sin_addr) &&
403 lp->connect_list->addresses[
i].port)) {
418 log_error (
"Spurious traced connect - index %ld, addr %s, port %d",
427 unsigned length,
char *buf)
430 if (length !=
sizeof *index) {
431 log_error (
"trace disconnect: wrong length %d", length);
439 if (
lp -> index ==
ntohl (*index)) {
447 log_error (
"trace disconnect: no connection matching index %ld",
448 (
long int)
ntohl (*index));
476 index =
htonl (
c -> index);
478 sizeof index, (
char *)&index,
500 if (
c -> out_bytes > 0) {
525 if (h -> outer ->
inner)
540 if (h->inner !=
NULL) {
541 if (h->inner->outer !=
NULL) {
551 if (
c->inbufs !=
NULL) {
555 if (
c->outbufs !=
NULL) {
571 c -> bytes_needed =
bytes;
618 status = omapi_connection_connect_internal (h);
651 if (
c -> cptr >=
c -> connect_list -> count) {
667 if (
c -> connect_list -> addresses [
c -> cptr].addrtype !=
673 memcpy (&
c -> remote_addr.sin_addr,
674 &
c -> connect_list -> addresses [
c -> cptr].address,
675 sizeof c -> remote_addr.sin_addr);
676 c -> remote_addr.sin_family =
AF_INET;
677 c -> remote_addr.sin_port =
678 htons (
c -> connect_list -> addresses [
c -> cptr].port);
679#if defined (HAVE_SA_LEN)
680 c -> remote_addr.sin_len =
sizeof c -> remote_addr;
682 memset (&
c -> remote_addr.sin_zero, 0,
683 sizeof c -> remote_addr.sin_zero);
688 sizeof c -> remote_addr);
714 sl =
sizeof (
c -> local_addr);
753 c -> out_bytes == 0) {
755 log_debug (
"omapi_connection_reaper(): disconnect");
761 log_debug (
"omapi_connection_reaper(): closed");
775 status = ctring_from_attribute(a,
"name", &
name_str);
778 status = ctring_from_attribute(a,
"algorithm", &
algorithm_str);
811 const unsigned char *data,
830 region.base = (
unsigned char *)data;
885 if (
c->out_key ==
NULL)
907 if (
c -> in_context) {
915 if (
c->in_key !=
NULL) {
920 status = make_dst_key (&
c -> in_key,
932 if (
c -> out_context) {
940 if (
c->out_key !=
NULL) {
945 status = make_dst_key (&
c -> out_key,
954 if (h ->
inner && h ->
inner -> type -> set_value)
955 return (*(h ->
inner -> type -> set_value))
975 if (!
c -> in_key || !
c -> in_context)
990 if (
c->in_key ==
NULL)
1001 if (!
c -> out_key || !
c -> out_context)
1016 if (
c->out_key ==
NULL)
1028 if (h ->
inner && h ->
inner -> type -> get_value)
1029 return (*(h ->
inner -> type -> get_value))
1039#ifdef DEBUG_PROTOCOL
1040 log_debug (
"omapi_connection_destroy()");
1050 if (
c -> connect_list)
1061#ifdef DEBUG_PROTOCOL
1062 log_debug (
"omapi_connection_signal_handler(%s)", name);
1065 if (h ->
inner && h ->
inner -> type -> signal_handler)
1066 return (*(h ->
inner -> type -> signal_handler)) (h ->
inner,
1082 return (*(
m ->
inner -> type -> stuff_values)) (
c, id,
1122 attr->value->u.buffer.len);
1123 (*cstr)[
attr->value->u.buffer.len] = 0;
isc_result_t omapi_buffer_dereference(omapi_buffer_t **, const char *, int)
isc_result_t omapi_connection_destroy(omapi_object_t *h, const char *file, int line)
int omapi_connection_readfd(omapi_object_t *h)
isc_result_t omapi_connection_connect(omapi_object_t *h)
isc_result_t omapi_connection_set_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_typed_data_t *value)
isc_result_t omapi_connection_reaper(omapi_object_t *h)
isc_result_t omapi_connect_list(omapi_object_t *c, omapi_addr_list_t *remote_addrs, omapi_addr_t *local_addr)
isc_result_t omapi_connection_signal_handler(omapi_object_t *h, const char *name, va_list ap)
isc_result_t omapi_connection_output_auth_length(omapi_object_t *h, unsigned *l)
isc_result_t omapi_connection_sign_data(int mode, dst_key_t *key, void **context, const unsigned char *data, const unsigned len, omapi_typed_data_t **result)
isc_result_t omapi_connection_get_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value)
isc_result_t omapi_connection_require(omapi_object_t *h, unsigned bytes)
isc_result_t omapi_connection_stuff_values(omapi_object_t *c, omapi_object_t *id, omapi_object_t *m)
int omapi_connection_writefd(omapi_object_t *h)
isc_result_t omapi_disconnect(omapi_object_t *h, int force)
dhcp_context_t dhcp_gbl_ctx
isc_result_t isclib_make_dst_key(char *inname, char *algorithm, unsigned char *secret, int length, dst_key_t **dstkey)
isc_result_t omapi_value_dereference(omapi_value_t **, const char *, int)
#define omapi_array_foreach_begin(array, stype, var)
isc_result_t omapi_typed_data_reference(omapi_typed_data_t **, omapi_typed_data_t *, const char *, int)
#define OMAPI_OBJECT_ALLOC(name, stype, type)
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_object_dereference(omapi_object_t **, const char *, int)
isc_result_t omapi_unregister_io_object(omapi_object_t *)
isc_result_t omapi_connection_reader(omapi_object_t *)
isc_result_t omapi_addr_list_dereference(omapi_addr_list_t **, const char *, int)
isc_result_t omapi_make_value(omapi_value_t **, omapi_data_string_t *, omapi_typed_data_t *, const char *, int)
isc_result_t omapi_addr_list_reference(omapi_addr_list_t **, omapi_addr_list_t *, const char *, int)
isc_result_t omapi_connection_writer(omapi_object_t *)
isc_result_t omapi_connect(omapi_object_t *, const char *, unsigned)
isc_result_t omapi_typed_data_dereference(omapi_typed_data_t **, const char *, int)
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
isc_result_t omapi_signal_in(omapi_object_t *, const char *,...)
isc_result_t omapi_signal(omapi_object_t *, const char *,...)
isc_result_t omapi_reregister_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_addr_list_new(omapi_addr_list_t **, unsigned, const char *, int)
#define omapi_array_foreach_end(array, stype, var)
int omapi_ds_strcmp(omapi_data_string_t *, const char *)
omapi_object_type_t * omapi_type_connection
isc_result_t omapi_typed_data_new(const char *, int, omapi_typed_data_t **, omapi_datatype_t,...)
void * dmalloc(size_t, const char *, int)
#define OMAPI_ARRAY_TYPE(name, stype)
void dfree(void *, const char *, int)
isc_result_t omapi_get_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_value_t **)
isc_result_t omapi_make_int_value(omapi_value_t **, omapi_data_string_t *, int, const char *, int)
isc_result_t uerr2isc(int)
isc_result_t omapi_listener_connect(omapi_connection_object_t **obj, omapi_listener_object_t *listener, int socket, struct sockaddr_in *remote_addr)
int log_error(const char *,...) __attribute__((__format__(__printf__
int int int log_debug(const char *,...) __attribute__((__format__(__printf__
void omapi_connection_trace_setup(void)
void omapi_connection_register(omapi_connection_object_t *, const char *, int)
@ omapi_connection_unconnected
@ omapi_connection_connected
@ omapi_connection_disconnecting
@ omapi_connection_closed
@ omapi_connection_connecting
#define DHCP_R_INVALIDARG
#define DHCP_R_INCOMPLETE
#define DHCP_R_HOSTUNKNOWN
struct omapi_typed_data_t::@3::@4 buffer
union omapi_typed_data_t::@3 u
omapi_typed_data_t * value
trace_type_t * trace_type_register(const char *, void *, void(*)(trace_type_t *, unsigned, char *), void(*)(trace_type_t *), const char *, int)
isc_result_t trace_write_packet(trace_type_t *, unsigned, const char *, const char *, int)
isc_result_t trace_write_packet_iov(trace_type_t *, int, trace_iov_t *, const char *, int)