53 log_debug (
"omapi_listen(port=%d, max=%d)", port, max);
100 obj -> address.sin_port =
htons (addr -> port);
102 addr -> address,
sizeof obj -> address.sin_addr);
103#if defined (HAVE_SA_LEN)
104 obj -> address.sin_len =
109 sizeof obj -> address.sin_zero);
120 if (
obj->socket == -1) {
129#if defined (HAVE_SETFD)
140 (
char *)&
i,
sizeof i) < 0) {
149 sizeof obj -> address);
187 if (
obj->inner == h) {
191 if (
obj->socket != -1) {
228 socket =
accept (listener -> socket,
229 ((
struct sockaddr *)&(addr)), &len);
245 iov [0].
buf = (
char *)&addr.sin_port;
246 iov [0].len =
sizeof addr.sin_port;
247 iov [1].buf = (
char *)&addr.sin_addr;
248 iov [1].len =
sizeof addr.sin_addr;
249 iov [2].buf = (
char *)&listener -> address.sin_port;
250 iov [2].len =
sizeof listener -> address.sin_port;
297 (*obj) -> remote_addr = *remote_addr;
298 (*obj) -> socket = socket;
301 if (listener -> verify_addr) {
308 status = (listener -> verify_addr) (h, &addr);
343 log_error (
"trace_listener_remember: %s",
355 unsigned length,
char *buf)
368 memset (&remote_addr, 0,
sizeof remote_addr);
369 remote_addr.sin_addr = *addr;
377 lp, 0, &remote_addr);
379 log_error(
"%s:%d: OMAPI: Failed to connect "
387 log_error (
"trace_listener_accept: %s from %s/%d to port %d",
388 "unexpected connect",
408 l -> verify_addr = verify_addr;
421 if (h ->
inner && h ->
inner -> type -> set_value)
422 return (*(h ->
inner -> type -> set_value))
435 if (h ->
inner && h ->
inner -> type -> get_value)
436 return (*(h ->
inner -> type -> get_value))
454 if (
l -> socket != -1) {
467 if (h ->
inner && h ->
inner -> type -> signal_handler)
468 return (*(h ->
inner -> type -> signal_handler)) (h ->
inner,
484 return (*(
l ->
inner -> type -> stuff_values)) (
c, id,
isc_result_t omapi_accept(omapi_object_t *h)
isc_result_t omapi_listener_connect(omapi_connection_object_t **obj, omapi_listener_object_t *listener, int socket, struct sockaddr_in *remote_addr)
isc_result_t omapi_listener_destroy(omapi_object_t *h, const char *file, int line)
isc_result_t omapi_listener_get_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value)
isc_result_t omapi_listen_addr(omapi_object_t *h, omapi_addr_t *addr, int max)
int omapi_listener_readfd(omapi_object_t *h)
isc_result_t omapi_listener_set_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_typed_data_t *value)
isc_result_t omapi_listener_signal_handler(omapi_object_t *h, const char *name, va_list ap)
isc_result_t omapi_listener_stuff_values(omapi_object_t *c, omapi_object_t *id, omapi_object_t *l)
isc_result_t omapi_listener_configure_security(omapi_object_t *h, isc_result_t(*verify_addr)(omapi_object_t *, omapi_addr_t *))
#define omapi_array_foreach_begin(array, stype, var)
#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)
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_disconnect(omapi_object_t *, int)
isc_result_t omapi_connection_reaper(omapi_object_t *)
int omapi_connection_readfd(omapi_object_t *)
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
isc_result_t omapi_signal(omapi_object_t *, const char *,...)
#define omapi_array_foreach_end(array, stype, var)
omapi_object_type_t * omapi_type_listener
#define OMAPI_ARRAY_TYPE(name, stype)
isc_result_t omapi_listen(omapi_object_t *, unsigned, int)
int log_error(const char *,...) __attribute__((__format__(__printf__
int int int log_debug(const char *,...) __attribute__((__format__(__printf__
void omapi_listener_trace_setup(void)
void omapi_connection_register(omapi_connection_object_t *, const char *, int)
@ omapi_connection_connected
#define DHCP_R_INVALIDARG
unsigned char address[16]
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_iov(trace_type_t *, int, trace_iov_t *, const char *, int)