26 RCSIDH(detail_h,
"$Id: d6e360a7de23fac314f6fa4fc5e936df68e54441 $")
28 #include <freeradius-devel/io/application.h>
29 #include <freeradius-devel/server/module_rlm.h>
30 #include <freeradius-devel/util/retry.h>
31 #include <freeradius-devel/util/dlist.h>
Public structure describing an I/O path for a protocol.
Describes a new application (protocol)
A section grouping multiple CONF_PAIR.
Head of a doubly linked list.
Describes a host allowed to send packets to the server.
Stores all information relating to an event list.
size_t last_search
where we last searched in the buffer MUST be offset, as the buffers can change.
proto_detail_t * parent
The module that spawned us!
proto_detail_work_thread_t * file_parent
thread instance of the directory reader that spawned us
CONF_SECTION * work_io_conf
Easy access to the app_io's config secti.
bool immediate
start reading the detail files immediately
fr_rb_node_t filename_node
for dedup
fr_dict_attr_t const * attr_packet_type
char const * directory
containing the file below
char const * filename_work
work file name
bool paused
Is reading paused?
uint32_t max_packet_size
for message ring buffer
fr_time_delta_t lock_interval
interval between trying the locks.
int count
number of packets we read from this file.
bool track_progress
do we track progress by writing?
unsigned int last_line
line number of the last record read.
bool eof
are we at EOF on reading?
bool exit_when_done
Hacked in functionality to allow easy testing of the detail reader.
fr_listen_t * listen
talloc_parent() is slow
void * work_io_instance
Easy access to the app_io instance.
char const * filename
file name, usually with wildcards
CONF_SECTION * server_cs
server CS for this listener
fr_client_t * client
so the rest of the server doesn't complain
char const * name
debug name for printing
bool retransmit
are we retransmitting on error?
module_instance_t * io_submodule
As provided by the transport_parse callback.
fr_event_timer_t const * ev
for detail file timers.
int num_workers
number of workers
CONF_SECTION * app_io_conf
Easy access to the app_io's config section.
uint16_t max_outstanding
number of packets to run in parallel
fr_event_list_t * el
for various timers
fr_app_io_t const * work_io
Easy access to the app_io handle.
CONF_SECTION * cs
our configuration section
off_t file_size
size of the file
uint8_t * leftover_buffer
pthread_mutex_t worker_mutex
for the workers
fr_dict_t const * dict
root dictionary
fr_app_io_t const * app_io
Easy access to the app_io handle.
fr_schedule_t * sc
the scheduler, where we insert new readers
char const * filename_work
work file name
module_instance_t * work_submodule
the worker
off_t header_offset
offset of the current header we're reading
uint32_t poll_interval
interval between polling
proto_detail_work_t const * inst
instance data
fr_dlist_head_t list
for retransmissions
uint32_t code
packet code to use for incoming packets
fr_retry_config_t retry_config
retry config with irt, mrt, etc.
uint32_t num_messages
for message ring buffer
int mode
O_RDWR or O_RDONLY.
char const * type
packet type name
bool closing
we should be closing the file
void * app_io_instance
Easy access to the app_io instance.
uint32_t priority
for packet processing, larger == higher
int vnode_fd
file descriptor for vnode_delete
fr_listen_t * listen
The listener structure which describes the I/O path.
off_t read_offset
where we're reading from in filename_work
uint32_t outstanding
number of currently outstanding records;
fr_network_t * nr
for Linux-specific callbacks
A time delta, a difference in time measured in nanoseconds.