28 #include <freeradius-devel/util/dlist.h>
87 # define radius_track_entry_reserve(_te_out, _ctx, _tt, _request, _code, _uctx) \
88 _radius_track_entry_reserve( __FILE__, __LINE__, _te_out, _ctx, _tt, _request, _code, _uctx)
95 # define radius_track_entry_release(_te) \
96 _radius_track_entry_release( __FILE__, __LINE__, _te)
fr_dcursor_eval_t void const * uctx
Head of a doubly linked list.
Entry in a doubly linked list.
#define RADIUS_AUTH_VECTOR_LENGTH
The main red black tree structure.
char const * file
Where the entry was allocated.
void radius_track_state_log(fr_log_t const *log, fr_log_type_t log_type, char const *file, int line, radius_track_t *tt, radius_track_log_extra_t extra)
Print out the state of every tracking entry.
fr_dlist_head_t free_list
so we allocate by least recently used
int _radius_track_entry_release(char const *file, int line, radius_track_entry_t **te)
Release a tracking entry.
int radius_track_entry_update(radius_track_entry_t *te, uint8_t const *vector)
Update a tracking entry with the authentication vector.
#define radius_track_entry_release(_te)
bool use_authenticator
whether to use the request authenticator as an ID
void * uctx
Result/resumption context.
void radius_track_use_authenticator(radius_track_t *te, bool flag)
Use Request Authenticator (or not) as an Identifier.
fr_rb_tree_t * subtree[UINT8_MAX+1]
for Original-Request-Authenticator
int line
Where the entry was freed.
uint64_t operation
Incremented each alloc and de-alloc.
unsigned int num_requests
number of requests in the allocation
fr_rb_node_t node
Entry in the tracking tree.
radius_track_t * radius_track_alloc(TALLOC_CTX *ctx)
Create an radius_track_t.
uint8_t code
packet code (sigh)
int _radius_track_entry_reserve(char const *file, int line, radius_track_entry_t **te_out, TALLOC_CTX *ctx, radius_track_t *tt, request_t *request, uint8_t code, void *uctx))
Allocate a tracking entry.
radius_track_entry_t * radius_track_entry_find(radius_track_t *tt, uint8_t packet_id, uint8_t const *vector))
Find a tracking entry from a request authenticator.
#define radius_track_entry_reserve(_te_out, _ctx, _tt, _request, _code, _uctx)
int next_id
next ID to allocate
void(* radius_track_log_extra_t)(fr_log_t const *log, fr_log_type_t log_type, char const *file, int line, radius_track_entry_t *te)
uint64_t operation
Used to give an idea of the alloc/free timeline.
request_t * request
as always...
radius_track_entry_t *** binding
Binding chunk we use to release the entry when its parent is freed.
Track one request to a response.