The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
coord_pair.h File Reference

Sending pair lists to and from coordination threads. More...

#include <freeradius-devel/io/coord.h>
#include <freeradius-devel/server/request.h>
#include <freeradius-devel/util/pair.h>
+ Include dependency graph for coord_pair.h:

Go to the source code of this file.

Data Structures

struct  fr_coord_pair_reg_ctx_t
 
struct  fr_coord_worker_pair_cb_reg_t
 

Macros

#define FR_COORD_PAIR_CALLBACK(_id)   [_id] = { .callback = fr_coord_pair_data_recv, .inst_create = fr_coord_pair_inst_create }
 Set callback for handling worker -> coordinator pair list data.
 
#define FR_COORD_PAIR_CB_CTX_SET(_in_cb, _out_cb, _reg)
 Set up ctx on pair list callbacks.
 
#define FR_COORD_WORKER_PAIR_CALLBACK(_id)   [_id] = { .callback = fr_coord_worker_pair_data_recv }
 Set callback for handling coordinator -> worker pair list data.
 

Typedefs

typedef struct fr_coord_pair_reg_s fr_coord_pair_reg_t
 
typedef struct fr_coord_pair_s fr_coord_pair_t
 
typedef void(* fr_coord_worker_pair_cb_t) (fr_coord_worker_t *cw, fr_coord_pair_reg_t *coord_pair_reg, fr_pair_list_t const *list, fr_time_t now, void *uctx)
 

Functions

void fr_coord_pair_data_recv (fr_coord_t *coord, uint32_t worker_id, fr_dbuff_t *dbuff, fr_time_t now, void *parent, void *uctx)
 
fr_coord_cb_inst_tfr_coord_pair_inst_create (TALLOC_CTX *ctx, fr_coord_t *coord, fr_event_list_t *el, bool single_thread, void *uctx)
 Plugin creation called during coordinator creation.
 
uint32_t fr_coord_pair_reg_cb_id (fr_coord_pair_reg_t *coord_pair_reg)
 Return the coordinator callback ID associated with a coord_pair_reg_t.
 
fr_coord_pair_reg_tfr_coord_pair_register (TALLOC_CTX *ctx, fr_coord_pair_reg_ctx_t *reg_ctx)
 Register a set of callbacks for pair list based coordinator messages.
 
int fr_coord_to_worker_reply_send (request_t *request, uint32_t worker_id)
 Send a reply list from a coordinator to a worker.
 
void fr_coord_worker_pair_data_recv (fr_coord_worker_t *cw, fr_dbuff_t *dbuff, fr_time_t now, void *uctx)
 Callback run when a worker receives pair list data.
 
int fr_worker_to_coord_pair_send (fr_coord_worker_t *cw, fr_coord_pair_reg_t *coord_pair_reg, fr_pair_list_t *list)
 Send a pair list from a worker to a coordinator.
 

Detailed Description

Sending pair lists to and from coordination threads.

Id
8362d4872ac0ccf1b6a70ac38c97372da1a7f164

Definition in file coord_pair.h.


Data Structure Documentation

◆ fr_coord_pair_reg_ctx_t

struct fr_coord_pair_reg_ctx_t

Definition at line 43 of file coord_pair.h.

+ Collaboration diagram for fr_coord_pair_reg_ctx_t:
Data Fields
uint32_t cb_id Coordinator callback id used for pair list messages.
CONF_SECTION * cs Module conf section.
fr_time_delta_t max_request_time Maximum time for coordinator request processing.

Defaults to main config max request time.

fr_dict_attr_t const * root Root attribute for decoding pair list messages.
fr_coord_worker_pair_cb_reg_t * worker_cb Callbacks for coordinator -> worker pair messages.

◆ fr_coord_worker_pair_cb_reg_t

struct fr_coord_worker_pair_cb_reg_t

Definition at line 37 of file coord_pair.h.

+ Collaboration diagram for fr_coord_worker_pair_cb_reg_t:
Data Fields
fr_coord_worker_pair_cb_t callback Function to call.
uint32_t packet_type Packet type value for this callback.
void * uctx Ctx to pass to callback.

Macro Definition Documentation

◆ FR_COORD_PAIR_CALLBACK

#define FR_COORD_PAIR_CALLBACK (   _id)    [_id] = { .callback = fr_coord_pair_data_recv, .inst_create = fr_coord_pair_inst_create }

Set callback for handling worker -> coordinator pair list data.

Parameters
_idCallback ID to use

Definition at line 72 of file coord_pair.h.

◆ FR_COORD_PAIR_CB_CTX_SET

#define FR_COORD_PAIR_CB_CTX_SET (   _in_cb,
  _out_cb,
  _reg 
)
Value:
do { \
_in_cb[fr_coord_pair_reg_cb_id(_reg)].uctx = _reg; \
_out_cb[fr_coord_pair_reg_cb_id(_reg)].uctx = _reg; \
} while (0)
uint32_t fr_coord_pair_reg_cb_id(fr_coord_pair_reg_t *coord_pair_reg)
Return the coordinator callback ID associated with a coord_pair_reg_t.
Definition coord_pair.c:220

Set up ctx on pair list callbacks.

Parameters
_in_cbArray of worker -> coordinator callbacks.
_out_cbArray of coordinator -> worker callbacks.
_regRegistered coordinator pair list callback data.

Definition at line 84 of file coord_pair.h.

◆ FR_COORD_WORKER_PAIR_CALLBACK

#define FR_COORD_WORKER_PAIR_CALLBACK (   _id)    [_id] = { .callback = fr_coord_worker_pair_data_recv }

Set callback for handling coordinator -> worker pair list data.

Parameters
_idCallback ID to use

Definition at line 77 of file coord_pair.h.

Typedef Documentation

◆ fr_coord_pair_reg_t

typedef struct fr_coord_pair_reg_s fr_coord_pair_reg_t

Definition at line 32 of file coord_pair.h.

◆ fr_coord_pair_t

Definition at line 33 of file coord_pair.h.

◆ fr_coord_worker_pair_cb_t

typedef void(* fr_coord_worker_pair_cb_t) (fr_coord_worker_t *cw, fr_coord_pair_reg_t *coord_pair_reg, fr_pair_list_t const *list, fr_time_t now, void *uctx)

Definition at line 35 of file coord_pair.h.

Function Documentation

◆ fr_coord_pair_data_recv()

void fr_coord_pair_data_recv ( fr_coord_t coord,
uint32_t  worker_id,
fr_dbuff_t dbuff,
fr_time_t  now,
void *  parent,
void *  uctx 
)

◆ fr_coord_pair_inst_create()

fr_coord_cb_inst_t * fr_coord_pair_inst_create ( TALLOC_CTX *  ctx,
fr_coord_t coord,
fr_event_list_t el,
bool  single_thread,
void *  uctx 
)

Plugin creation called during coordinator creation.

Parameters
ctxto allocate the plugin in.
elEvent list for plugin to use.
single_threadis the server in single thread mode.
uctxconfigured for the callback this plugin relates to.
Returns
  • fr_coord_plugin_t on success
  • NULL on failure

Definition at line 783 of file coord_pair.c.

+ Here is the call graph for this function:

◆ fr_coord_pair_reg_cb_id()

uint32_t fr_coord_pair_reg_cb_id ( fr_coord_pair_reg_t coord_pair_reg)

Return the coordinator callback ID associated with a coord_pair_reg_t.

Definition at line 220 of file coord_pair.c.

◆ fr_coord_pair_register()

fr_coord_pair_reg_t * fr_coord_pair_register ( TALLOC_CTX *  ctx,
fr_coord_pair_reg_ctx_t reg_ctx 
)

Register a set of callbacks for pair list based coordinator messages.

Returns a structure to pass as uctx to fr_coord_cb_t using the macro FR_COORD_PAIR_CB_CTX_SET.

Parameters
ctxto allocate the registration under.
reg_ctxCallback details to register.

Definition at line 113 of file coord_pair.c.

+ Here is the call graph for this function:

◆ fr_coord_to_worker_reply_send()

int fr_coord_to_worker_reply_send ( request_t request,
uint32_t  worker_id 
)

Send a reply list from a coordinator to a worker.

Parameters
requestcontaining the reply to send.
worker_idto send the reply to.
Returns
  • 0 on success
  • -1 on failure

Definition at line 724 of file coord_pair.c.

+ Here is the call graph for this function:

◆ fr_coord_worker_pair_data_recv()

void fr_coord_worker_pair_data_recv ( fr_coord_worker_t cw,
fr_dbuff_t dbuff,
fr_time_t  now,
void *  uctx 
)

Callback run when a worker receives pair list data.

Finds the packet type attribute in the data and calls the callback registered against the value of that attribute.

Parameters
cwWorker which received the message.
dbuffData received.
nowTime the data is received.
uctxThe coord_pair registration.

Definition at line 685 of file coord_pair.c.

+ Here is the call graph for this function:

◆ fr_worker_to_coord_pair_send()

int fr_worker_to_coord_pair_send ( fr_coord_worker_t cw,
fr_coord_pair_reg_t coord_pair_reg,
fr_pair_list_t list 
)

Send a pair list from a worker to a coordinator.

The pair list must include an attribute indicating the packet type

Parameters
cwThe coord worker sending the data.
listof pairs to send.
Returns
  • 0 on success
  • -1 on failure

Definition at line 755 of file coord_pair.c.

+ Here is the call graph for this function: