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
13a53235e534252f784c11e6043d0b637256bab7

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.
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.

◆ process_redis_node_rctx_t

struct process_redis_node_rctx_t

Resume context for node specific calls.

Definition at line 163 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 93 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 174 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 126 of file base.c.

+ Collaboration diagram for process_redis_t:
Data Fields
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 136 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 185 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 186 of file base.c.

◆ PROCESS_CODE_DO_NOT_RESPOND

#define PROCESS_CODE_DO_NOT_RESPOND   FR_REDIS_DO_NOT_RESPOND

Definition at line 190 of file base.c.

◆ PROCESS_CODE_MAX

#define PROCESS_CODE_MAX   FR_REDIS_CODE_MAX

Definition at line 189 of file base.c.

◆ PROCESS_INST

#define PROCESS_INST   process_redis_t

Definition at line 192 of file base.c.

◆ PROCESS_PACKET_CODE_VALID

#define PROCESS_PACKET_CODE_VALID   FR_REDIS_PROCESS_CODE_VALID

Definition at line 191 of file base.c.

◆ PROCESS_PACKET_TYPE

#define PROCESS_PACKET_TYPE   fr_redis_packet_code_t

Definition at line 188 of file base.c.

◆ PROCESS_RCTX

#define PROCESS_RCTX   process_redis_rctx_t

Definition at line 193 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 152 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 955 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 110 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 98 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 251 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 206 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 357 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 450 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 1206 of file base.c.

◆ mod_load()

static int mod_load ( void  )
static

Definition at line 1214 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 1167 of file base.c.

◆ mod_thread_instantiate()

static int mod_thread_instantiate ( module_thread_inst_ctx_t const *  mctx)
static

Definition at line 1196 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 528 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 966 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 118 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 979 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 692 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 996 of file base.c.

+ Here is the call graph for this function:

◆ RECV() [2/2]

RECV ( cluster_map_get  )

Definition at line 1133 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 582 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 570 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 707 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 943 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 664 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 762 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 655 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 634 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:669
#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 142 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_load(void)
Definition base.c:228
static int mod_instantiate(module_inst_ctx_t const *mctx)
Definition base.c:213
static const conf_parser_t config[]
Definition base.c:162
Resume context for Redis requests.
Definition base.c:174
static int mod_thread_instantiate(module_thread_inst_ctx_t const *mctx)
#define MODULE_THREAD_INST(_ctype)
Definition module.h:258
#define MODULE_RCTX(_ctype)
Definition module.h:259
#define MODULE_INST(_ctype)
Definition module.h:257

Definition at line 1236 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:311
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 1222 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.