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, .inst_destroy = fr_coord_pair_inst_destroy }
 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, module_ctx_t *mctx, void *uctx)
 

Functions

int fr_coord_pair_coord_request_start (fr_coord_pair_t *coord_pair, fr_pair_list_t *list, fr_time_t now)
 Start a coordinator request to run through a coord_pair process module.
 
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)
 Instance creation called during coordinator creation.
 
void fr_coord_pair_inst_destroy (UNUSED fr_coord_t *coord, fr_coord_cb_inst_t *inst, bool single_thread, UNUSED void *uctx)
 
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.
 
fr_coord_pair_tfr_coord_pair_request_coord_pair (request_t *request)
 Return the coord_pair associated with a coord_pair internal request.
 
int fr_coord_to_worker_reply_broadcast (request_t *request)
 Send a reply list from a coordinator to all workers.
 
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, module_ctx_t *mctx, 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
3cc55b20d1cc1cb0811cf1e79c4cd3bbbbb13b11

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, .inst_destroy = fr_coord_pair_inst_destroy }

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

Parameters
_idCallback ID to use

Definition at line 80 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 92 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 85 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, module_ctx_t *mctx, void *uctx)

Definition at line 35 of file coord_pair.h.

Function Documentation

◆ fr_coord_pair_coord_request_start()

int fr_coord_pair_coord_request_start ( fr_coord_pair_t coord_pair,
fr_pair_list_t list,
fr_time_t  now 
)

Start a coordinator request to run through a coord_pair process module.

Parameters
coord_pairwith the process module to run the request.
listPairs to populate the request.
nowRequest time.
Returns
0 on success -1 on failure

Definition at line 884 of file coord_pair.c.

+ Here is the call graph for this function:

◆ 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 
)

Instance creation called during coordinator creation.

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

Definition at line 839 of file coord_pair.c.

+ Here is the call graph for this function:

◆ fr_coord_pair_inst_destroy()

void fr_coord_pair_inst_destroy ( UNUSED fr_coord_t coord,
fr_coord_cb_inst_t inst,
bool  single_thread,
UNUSED void *  uctx 
)

Definition at line 552 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:
+ Here is the caller graph for this function:

◆ fr_coord_pair_request_coord_pair()

fr_coord_pair_t * fr_coord_pair_request_coord_pair ( request_t request)

Return the coord_pair associated with a coord_pair internal request.

Parameters
requestto fetch associated coordinator for.
Returns
fr_coord_t

Definition at line 869 of file coord_pair.c.

◆ fr_coord_to_worker_reply_broadcast()

int fr_coord_to_worker_reply_broadcast ( request_t request)

Send a reply list from a coordinator to all workers.

Parameters
requestcontaining the reply to send.
Returns
  • 0 on success
  • < 0 on failure

Definition at line 780 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 752 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,
module_ctx_t mctx,
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 713 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 811 of file coord_pair.c.

+ Here is the call graph for this function: