The FreeRADIUS server $Id: f3670dba8951ca10eb4948feb3dc3db9423a334f $
Loading...
Searching...
No Matches
Data Structures | Macros | Enumerations | Functions | Variables
base.c File Reference

State machine for Redis cluster coordinator thread. More...

#include <freeradius-devel/redis/attrs.h>
#include <freeradius-devel/redis/base.h>
#include <freeradius-devel/redis/cluster_async.h>
#include <freeradius-devel/io/coord_pair.h>
#include <freeradius-devel/server/main_config.h>
#include <freeradius-devel/unlang/function.h>
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/server/process.h>
+ Include dependency graph for base.c:

Go to the source code of this file.

Data Structures

struct  process_redis_cluster_t
 Coordinator representation of a Redis cluster. More...
 
struct  process_redis_node_rctx_t
 Resume context for node specific calls. More...
 
struct  process_redis_node_t
 Individual cluster node. More...
 
struct  process_redis_pending_t
 
struct  process_redis_rctx_t
 Resume context for Redis requests. More...
 
struct  process_redis_sections_t
 
struct  process_redis_t
 
struct  process_redis_thread_t
 

Macros

#define FR_REDIS_PACKET_CODE_VALID(_code)   (((_code) > 0) && ((_code) < FR_REDIS_CODE_MAX))
 
#define FR_REDIS_PROCESS_CODE_VALID(_code)   (FR_REDIS_PACKET_CODE_VALID(_code) || (_code == FR_REDIS_DO_NOT_RESPOND))
 
#define PROCESS_CODE_DO_NOT_RESPOND   FR_REDIS_DO_NOT_RESPOND
 
#define PROCESS_CODE_MAX   FR_REDIS_CODE_MAX
 
#define PROCESS_INST   process_redis_t
 
#define PROCESS_PACKET_CODE_VALID   FR_REDIS_PROCESS_CODE_VALID
 
#define PROCESS_PACKET_TYPE   fr_redis_packet_code_t
 
#define PROCESS_RCTX   process_redis_rctx_t
 

Enumerations

enum  map_get_status_t {
  CLUSTER_MAP_GET_INFO = 0 ,
  CLUSTER_MAP_GOT_INFO ,
  CLUSTER_MAP_GET_MAP ,
  CLUSTER_MAP_GOT_MAP ,
  CLUSTER_MAP_GET_FAILED ,
  CLUSTER_MAP_GET_TIMEOUT
}
 State of cluster map fetching from each node. More...
 

Functions

static int _process_redis_cluster_free (process_redis_cluster_t *cluster)
 
static fr_cmp_ret_t cluster_id_cmp (void const *a, void const *b)
 
static fr_cmp_ret_t cluster_server_cmp (void const *a, void const *b)
 
static int fr_redis_cluster_shards_nodes_to_pairs (redisReply *reply, fr_pair_t *shard_vp)
 Convert the "nodes" array in CLUSTER SHARDS replies into pairs.
 
static int fr_redis_cluster_shards_slots_to_pairs (redisReply *reply, fr_pair_t *shard_vp, bool slots_covered[KEY_SLOTS])
 Convert the "slots" array in CLUSTER SHARDS replies into pairs.
 
static int fr_redis_cluster_shards_to_pairs (TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *list, redisReply *reply)
 Convert the reply to CLUSTER SHARDS into pairs.
 
static int fr_redis_cluster_slots_to_pairs (TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *list, redisReply *reply)
 Convert the reply to CLUSER SLOTS into pairs.
 
static int mod_instantiate (module_inst_ctx_t const *mctx)
 
static int mod_load (void)
 
static unlang_action_t mod_process (unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request)
 
static int mod_thread_instantiate (module_thread_inst_ctx_t const *mctx)
 
static int process_redis_cluster_node_add (TALLOC_CTX *ctx, process_redis_cluster_t *cluster, process_redis_t const *inst, fr_redis_conf_t *conf, fr_pair_t *host_vp, fr_pair_t *port_vp)
 
static void process_redis_pending_cancel (module_ctx_t const *mctx, request_t *request, UNUSED fr_signal_t action)
 
static fr_cmp_ret_t process_redis_pending_cmp (void const *a, void const *b)
 
static unlang_action_t process_redis_return_existing (request_t *request, process_redis_cluster_t *cluster, uint32_t worker_id)
 
static unlang_action_t process_redis_return_failed (request_t *request, process_redis_cluster_t *cluster, uint32_t worker_id)
 Send a Cluster-Failed message to a worker.
 
 RECV (cluster_map_bootstrap)
 
 RECV (cluster_map_get)
 
static void redis_cluster_info_results (request_t *request, UNUSED fr_redis_command_t *cmd, redisReply *reply, void *rctx)
 
static void redis_cluster_info_server_results (request_t *request, UNUSED fr_redis_command_t *cmd, redisReply *reply, void *rctx)
 
static unlang_action_t redis_cluster_map_get (UNUSED unlang_result_t *p_result, request_t *request, void *uctx)
 
static void redis_cluster_map_get_cancel (request_t *request, UNUSED fr_signal_t action, void *uctx)
 
static void redis_cluster_map_get_refetch (UNUSED fr_timer_list_t *tl, fr_time_t now, void *uctx)
 
static unlang_action_t redis_cluster_map_get_resume (UNUSED unlang_result_t *p_result, request_t *request, void *uctx)
 
static void redis_cluster_map_get_timeout (UNUSED fr_timer_list_t *el, UNUSED fr_time_t now, void *uctx)
 
static void redis_cluster_slots_results (request_t *request, UNUSED fr_redis_command_t *cmd, redisReply *reply, void *rctx)
 

Variables

static fr_dict_attr_t const * attr_packet_type
 
static fr_dict_attr_t const * attr_worker_id
 
static uint16_t cluster_id = 1
 
static const conf_parser_t config []
 
static fr_dict_t const * dict_freeradius
 
fr_process_module_t process_redis
 
fr_dict_autoload_t process_redis_dict []
 
fr_dict_attr_autoload_t process_redis_dict_attr []
 
static fr_process_state_t const process_state []
 
static const uint32_t redis_shards_version = REDIS_VERSION(7, 0, 0)
 

Detailed Description

State machine for Redis cluster coordinator thread.

Id
3364fe9a7bfcc6fcac732dcee16bb50397a9a64e

Definition in file base.c.


Data Structure Documentation

◆ process_redis_cluster_t

struct process_redis_cluster_t

Coordinator representation of a Redis cluster.

Definition at line 75 of file base.c.

+ Collaboration diagram for process_redis_cluster_t:
Data Fields
fr_ipaddr_t addr IP address of the first bootstrap server.
fr_rb_node_t cluster_by_id Entry in the tree of clusters by ID.
fr_rb_node_t cluster_by_server Entry in the tree of clusters by bootstrap server.
uint16_t cluster_id Numeric ID assigned by the coordinator.
fr_pair_list_t cluster_pairs Pairs built from the last fetch.
fr_redis_conf_t * conf Redis config for this cluster.
fr_coord_pair_t * coord_pair The coord_pair which requested this cluster map.
fr_timer_t * ev Timer event for retry / refresh.
bool failed Has the cluster failed.
bool fetching The map is being fetched.
fr_time_t last_update When was the map last updated.
bool no_trigger[FR_REDIS_CODE_MAX] Cached trigger conf status;.
fr_dlist_head_t nodes List of current nodes in the cluster.
fr_rb_tree_t pending Requests waiting for custer map update.
uint16_t port Port of the first bootstrap server.
fr_redis_ct_t * rtcluster Cluster used to allocate redis trunk connections.
fr_pair_list_t trigger_args Pair list to pass to cluster triggers.
CONF_PAIR * trigger_cp[FR_REDIS_CODE_MAX] Cached trigger conf pairs;.

◆ process_redis_node_rctx_t

struct process_redis_node_rctx_t

Resume context for node specific calls.

Definition at line 167 of file base.c.

+ Collaboration diagram for process_redis_node_rctx_t:
Data Fields
bool cluster_ok Does CLUSTER INFO say the cluster is OK.
fr_redis_command_set_t * cmds Command set for fetching cluster map.
fr_dlist_t entry In list of resume contexts.
fr_timer_t * ev Timeout event for this node.
fr_pair_list_t list To populate with parsed reply data.
process_redis_node_t * node Node being queried.
map_get_status_t status Status of the node calls.

◆ process_redis_node_t

struct process_redis_node_t

Individual cluster node.

Definition at line 63 of file base.c.

+ Collaboration diagram for process_redis_node_t:
Data Fields
uint64_t current_epoch Redis cluster epoch as reported by this node.
fr_dlist_t entry Entry in the list of cluster nodes.
bool in_cluster Has the node been found in the latest cluster map.
fr_redis_io_conf_t io_conf Connection config for this node.
fr_pair_list_t trigger_args Pair list to pass to trigger.
fr_redis_trunk_t * trunk Trunk connection for this node.
uint32_t version Redis version on this node.

◆ process_redis_pending_t

struct process_redis_pending_t

Definition at line 96 of file base.c.

+ Collaboration diagram for process_redis_pending_t:
Data Fields
fr_rb_node_t node
request_t * request

◆ process_redis_rctx_t

struct process_redis_rctx_t

Resume context for Redis requests.

Definition at line 178 of file base.c.

+ Collaboration diagram for process_redis_rctx_t:
Data Fields
process_redis_cluster_t * cluster Cluster which is being updated.
uint64_t cluster_epoch Largest epoch value returned by any node.
process_redis_node_t * current_node Node currently being queried.
process_redis_t const * inst Module instance.
fr_dlist_head_t rctx_list List of per-node resume contexts.
unlang_result_t result Where results are written to.
process_redis_thread_t * thread Thread instance.
int32_t worker_id The worker which sent the data leading to this request.

◆ process_redis_sections_t

struct process_redis_sections_t

Definition at line 56 of file base.c.

+ Collaboration diagram for process_redis_sections_t:
Data Fields
CONF_SECTION * cluster_map_get
uint64_t nothing

◆ process_redis_t

struct process_redis_t

Definition at line 129 of file base.c.

+ Collaboration diagram for process_redis_t:
Data Fields
CONF_SECTION * conf
char const * inst_name
module_method_t const * method
fr_time_delta_t refresh_interval
fr_time_delta_t retry_interval
process_redis_sections_t sections
fr_time_delta_t timeout
trunk_conf_t trunk_conf

◆ process_redis_thread_t

struct process_redis_thread_t

Definition at line 140 of file base.c.

+ Collaboration diagram for process_redis_thread_t:
Data Fields
fr_rb_tree_t cluster_by_id Tree of clusters by ID.
fr_rb_tree_t cluster_by_server Tree of clusters by primary bootstrap server.
fr_event_list_t * el

Macro Definition Documentation

◆ FR_REDIS_PACKET_CODE_VALID

#define FR_REDIS_PACKET_CODE_VALID (   _code)    (((_code) > 0) && ((_code) < FR_REDIS_CODE_MAX))

Definition at line 189 of file base.c.

◆ FR_REDIS_PROCESS_CODE_VALID

#define FR_REDIS_PROCESS_CODE_VALID (   _code)    (FR_REDIS_PACKET_CODE_VALID(_code) || (_code == FR_REDIS_DO_NOT_RESPOND))

Definition at line 190 of file base.c.

◆ PROCESS_CODE_DO_NOT_RESPOND

#define PROCESS_CODE_DO_NOT_RESPOND   FR_REDIS_DO_NOT_RESPOND

Definition at line 194 of file base.c.

◆ PROCESS_CODE_MAX

#define PROCESS_CODE_MAX   FR_REDIS_CODE_MAX

Definition at line 193 of file base.c.

◆ PROCESS_INST

#define PROCESS_INST   process_redis_t

Definition at line 196 of file base.c.

◆ PROCESS_PACKET_CODE_VALID

#define PROCESS_PACKET_CODE_VALID   FR_REDIS_PROCESS_CODE_VALID

Definition at line 195 of file base.c.

◆ PROCESS_PACKET_TYPE

#define PROCESS_PACKET_TYPE   fr_redis_packet_code_t

Definition at line 192 of file base.c.

◆ PROCESS_RCTX

#define PROCESS_RCTX   process_redis_rctx_t

Definition at line 197 of file base.c.

Enumeration Type Documentation

◆ map_get_status_t

State of cluster map fetching from each node.

Enumerator
CLUSTER_MAP_GET_INFO 
CLUSTER_MAP_GOT_INFO 
CLUSTER_MAP_GET_MAP 
CLUSTER_MAP_GOT_MAP 
CLUSTER_MAP_GET_FAILED 
CLUSTER_MAP_GET_TIMEOUT 

Definition at line 156 of file base.c.

Function Documentation

◆ _process_redis_cluster_free()

static int _process_redis_cluster_free ( process_redis_cluster_t *  cluster)
static

Definition at line 986 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cluster_id_cmp()

static fr_cmp_ret_t cluster_id_cmp ( void const *  a,
void const *  b 
)
static

Definition at line 113 of file base.c.

+ Here is the caller graph for this function:

◆ cluster_server_cmp()

static fr_cmp_ret_t cluster_server_cmp ( void const *  a,
void const *  b 
)
static

Definition at line 101 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_redis_cluster_shards_nodes_to_pairs()

static int fr_redis_cluster_shards_nodes_to_pairs ( redisReply *  reply,
fr_pair_t *  shard_vp 
)
static

Convert the "nodes" array in CLUSTER SHARDS replies into pairs.

Parameters
replyRedis reply containing the "nodes" array.
shard_vpPair representing shard to build ndoes pairs under.
Returns
  • number of nodes found
  • -1 on error

Definition at line 255 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_redis_cluster_shards_slots_to_pairs()

static int fr_redis_cluster_shards_slots_to_pairs ( redisReply *  reply,
fr_pair_t *  shard_vp,
bool  slots_covered[KEY_SLOTS] 
)
static

Convert the "slots" array in CLUSTER SHARDS replies into pairs.

Parameters
replyRedis reply containing the "slots" array.
shard_vpPair representing shard to build slots pairs under.
slots_coveredArray recording which slots have been covered.
Returns
  • number of slot ranges found
  • -1 on error

Definition at line 210 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_redis_cluster_shards_to_pairs()

static int fr_redis_cluster_shards_to_pairs ( TALLOC_CTX *  ctx,
request_t *  request,
fr_pair_list_t *  list,
redisReply *  reply 
)
static

Convert the reply to CLUSTER SHARDS into pairs.

The CLUSTER SHARDS reply is designed as an extensible structure using arrays containing named fields. i.e. an element which is the field name, followed by the value in the next element.

The fields for node entries are specifically described as being extensible.

The CLUSTER SHARDS reply structure

  [0] -> Shard 0
      [0] -> "slots"
      [1] -> Array of slot entries in pairs of start / end values.
          [0] -> key_slot0_start
          [1] -> key_slot0_end
          [2] -> key_slot1_start
          [3] -> key_slot1_end
          [4 .. n] -> key_slot2_start .. key_slotm_end
      [2] -> "nodes"
      [3] -> Array of nodes which cover the slots in the "slots" array.
          [0] -> Node 0
              [0]  -> "id"
              [1]  -> Node ID
              [2]  -> "port"
              [3]  -> (integer) port number
              [4]  -> "ip"
              [5]  -> IP address of node
              [6]  -> "endpoint"
              [7]  -> Preferred endpoint to connect to node
              [8]  -> "role"
              [9]  -> ("master"|"replica")
              [10] -> "replication-offset"
              [11] -> (integer) replication offset
              [12] -> "health"
              [13] -> ("online"|"failed"|"loading")
          [1] -> Node 1
              [0 .. n] -> Entries for Node 1
  [1] -> Shard 1
      [...]

Definition at line 361 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_redis_cluster_slots_to_pairs()

static int fr_redis_cluster_slots_to_pairs ( TALLOC_CTX *  ctx,
request_t *  request,
fr_pair_list_t *  list,
redisReply *  reply 
)
static

Convert the reply to CLUSER SLOTS into pairs.

The CLUSTER SLOTS reply structure

  [0] -> key slot range 0
      [0] -> key_slot_start
      [1] -> key_slot_end
      [2] -> master_node
          [0] -> master 0 ip (string)
          [1] -> master 0 port (number)
      [3..n] -> replica_node(s)
  [1] -> key slot range 1)
      [0]  -> key_slot_start
      [1] -> key_slot_end
      [2] -> master_node
          [0] -> master 1 ip (string)
          [1] -> master 1 port (number)
      [3..n] -> replica_node(s)
  [n] -> key slot range n
      [0] -> key_slot_start
      [1] -> key_slot_end
      [2] -> master_node
          [0] -> master n ip (string)
          [1] -> master n port (number)
      [3..n] -> replica_node(s)
Parameters
[in]ctxto allocate pairs in.
[in,out]listto populate with pairs.
[in]replyfrom CLUSTER SLOTS

Definition at line 454 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mod_instantiate()

static int mod_instantiate ( module_inst_ctx_t const *  mctx)
static

Definition at line 1259 of file base.c.

◆ mod_load()

static int mod_load ( void  )
static

Definition at line 1268 of file base.c.

+ Here is the call graph for this function:

◆ mod_process()

static unlang_action_t mod_process ( unlang_result_t *  p_result,
module_ctx_t const *  mctx,
request_t *  request 
)
static

Definition at line 1220 of file base.c.

◆ mod_thread_instantiate()

static int mod_thread_instantiate ( module_thread_inst_ctx_t const *  mctx)
static

Definition at line 1249 of file base.c.

+ Here is the call graph for this function:

◆ process_redis_cluster_node_add()

static int process_redis_cluster_node_add ( TALLOC_CTX *  ctx,
process_redis_cluster_t *  cluster,
process_redis_t const *  inst,
fr_redis_conf_t *  conf,
fr_pair_t *  host_vp,
fr_pair_t *  port_vp 
)
static

Definition at line 532 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_redis_pending_cancel()

static void process_redis_pending_cancel ( module_ctx_t const *  mctx,
request_t *  request,
UNUSED fr_signal_t  action 
)
static

Definition at line 997 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_redis_pending_cmp()

static fr_cmp_ret_t process_redis_pending_cmp ( void const *  a,
void const *  b 
)
static

Definition at line 121 of file base.c.

+ Here is the caller graph for this function:

◆ process_redis_return_existing()

static unlang_action_t process_redis_return_existing ( request_t *  request,
process_redis_cluster_t *  cluster,
uint32_t  worker_id 
)
static

Definition at line 1010 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_redis_return_failed()

static unlang_action_t process_redis_return_failed ( request_t *  request,
process_redis_cluster_t *  cluster,
uint32_t  worker_id 
)
static

Send a Cluster-Failed message to a worker.

Definition at line 696 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RECV() [1/2]

RECV ( cluster_map_bootstrap  )

Definition at line 1027 of file base.c.

+ Here is the call graph for this function:

◆ RECV() [2/2]

RECV ( cluster_map_get  )

Definition at line 1178 of file base.c.

+ Here is the call graph for this function:

◆ redis_cluster_info_results()

static void redis_cluster_info_results ( request_t *  request,
UNUSED fr_redis_command_t *  cmd,
redisReply *  reply,
void *  rctx 
)
static

Definition at line 586 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_info_server_results()

static void redis_cluster_info_server_results ( request_t *  request,
UNUSED fr_redis_command_t *  cmd,
redisReply *  reply,
void *  rctx 
)
static

Definition at line 574 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_map_get()

static unlang_action_t redis_cluster_map_get ( UNUSED unlang_result_t *  p_result,
request_t *  request,
void *  uctx 
)
static

Definition at line 711 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_map_get_cancel()

static void redis_cluster_map_get_cancel ( request_t *  request,
UNUSED fr_signal_t  action,
void *  uctx 
)
static

Definition at line 974 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_map_get_refetch()

static void redis_cluster_map_get_refetch ( UNUSED fr_timer_list_t *  tl,
fr_time_t  now,
void *  uctx 
)
static

Definition at line 668 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_map_get_resume()

static unlang_action_t redis_cluster_map_get_resume ( UNUSED unlang_result_t *  p_result,
request_t *  request,
void *  uctx 
)
static

Definition at line 766 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_map_get_timeout()

static void redis_cluster_map_get_timeout ( UNUSED fr_timer_list_t *  el,
UNUSED fr_time_t  now,
void *  uctx 
)
static

Definition at line 659 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redis_cluster_slots_results()

static void redis_cluster_slots_results ( request_t *  request,
UNUSED fr_redis_command_t *  cmd,
redisReply *  reply,
void *  rctx 
)
static

Definition at line 638 of file base.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ attr_packet_type

fr_dict_attr_t const* attr_packet_type
static

Definition at line 44 of file base.c.

◆ attr_worker_id

fr_dict_attr_t const* attr_worker_id
static

Definition at line 45 of file base.c.

◆ cluster_id

uint16_t cluster_id = 1
static

Definition at line 34 of file base.c.

◆ config

const conf_parser_t config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("timeout", process_redis_t, timeout), .dflt = "5s" },
{ FR_CONF_OFFSET("retry_interval", process_redis_t, retry_interval), .dflt = "30s" },
{ FR_CONF_OFFSET("refresh_interval", process_redis_t, refresh_interval) },
}
#define CONF_PARSER_TERMINATOR
Definition cf_parse.h:673
#define FR_CONF_OFFSET(_name, _struct, _field)
conf_parser_t which parses a single CONF_PAIR, writing the result to a field in a struct
Definition cf_parse.h:280
#define FR_CONF_OFFSET_SUBSECTION(_name, _flags, _struct, _field, _subcs)
conf_parser_t which populates a sub-struct using a CONF_SECTION
Definition cf_parse.h:309
conf_parser_t const trunk_config[]
Config parser definitions to populate a trunk_conf_t.
Definition trunk.c:345

Definition at line 146 of file base.c.

◆ dict_freeradius

fr_dict_t const* dict_freeradius
static

Definition at line 36 of file base.c.

◆ process_redis

fr_process_module_t process_redis
Initial value:
= {
.common = {
.name = "redis",
.config = config,
.onload = mod_load,
.instantiate = mod_instantiate,
.thread_instantiate = mod_thread_instantiate,
},
.process = mod_process,
.dict = &dict_redis,
.packet_type = &attr_redis_packet_type
}
#define MODULE_MAGIC_INIT
Stop people using different module/library/server versions together.
Definition dl_module.h:63
fr_dict_attr_t const * attr_redis_packet_type
Definition redis.c:59
fr_dict_t const * dict_redis
Definition redis.c:51
static unlang_action_t mod_process(unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request)
Definition base.c:168
static int mod_instantiate(module_inst_ctx_t const *mctx)
Definition base.c:213
static int mod_load(void)
Definition base.c:229
static const conf_parser_t config[]
Definition base.c:162
Resume context for Redis requests.
Definition base.c:178
static int mod_thread_instantiate(module_thread_inst_ctx_t const *mctx)
#define MODULE_THREAD_INST(_ctype)
Definition module.h:260
#define MODULE_RCTX(_ctype)
Definition module.h:261
#define MODULE_INST(_ctype)
Definition module.h:259

Definition at line 1290 of file base.c.

◆ process_redis_dict

fr_dict_autoload_t process_redis_dict
Initial value:
= {
{ .out = &dict_freeradius, .proto = "freeradius" },
}
#define DICT_AUTOLOAD_TERMINATOR
Definition dict.h:335
static fr_dict_t const * dict_freeradius
Definition base.c:37

Definition at line 39 of file base.c.

◆ process_redis_dict_attr

fr_dict_attr_autoload_t process_redis_dict_attr
Initial value:
= {
{ .out = &attr_worker_id, .name = "Worker-Id", .type = FR_TYPE_INT32, .dict = &dict_freeradius },
}
@ FR_TYPE_INT32
32 Bit signed integer.
static fr_dict_attr_t const * attr_worker_id
Definition base.c:45

Definition at line 48 of file base.c.

◆ process_state

fr_process_state_t const process_state[]
static
Initial value:
= {
.default_reply = FR_REDIS_CLUSTER_MAP_UPDATE,
.default_rcode = RLM_MODULE_NOOP,
.recv = recv_cluster_map_bootstrap,
},
.default_reply = FR_REDIS_CLUSTER_MAP_UPDATE,
.default_rcode = RLM_MODULE_NOOP,
.recv = recv_cluster_map_get,
}
}
@ RLM_MODULE_NOOP
Module succeeded without doing anything.
Definition rcode.h:54
@ FR_REDIS_CLUSTER_MAP_BOOTSTRAP
Definition base.h:102
@ FR_REDIS_CLUSTER_MAP_GET
Definition base.h:103
@ FR_REDIS_CLUSTER_MAP_UPDATE
Definition base.h:104

Definition at line 1276 of file base.c.

◆ redis_shards_version

const uint32_t redis_shards_version = REDIS_VERSION(7, 0, 0)
static

Definition at line 54 of file base.c.