![]() |
The FreeRADIUS server $Id: f3670dba8951ca10eb4948feb3dc3db9423a334f $
|
Common functions for interacting with Redis via hiredis. More...
#include <freeradius-devel/server/base.h>#include <freeradius-devel/server/map.h>#include <freeradius-devel/server/module.h>#include <freeradius-devel/server/trunk.h>#include <hiredis/hiredis.h>
Include dependency graph for base.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | fr_redis_conf_t |
| Configuration parameters for a redis connection. More... | |
| struct | fr_redis_conn_t |
| Connection handle, holding a redis context. More... | |
Macros | |
| #define | MAX_REDIS_ARGS 256 |
| #define | MAX_REDIS_COMMAND_LEN 4096 |
| #define | REDIS_COMMON_CONFIG |
| #define | REDIS_DEFAULT_PORT 6379 |
| #define | REDIS_ERROR_ASK_STR "ASK" |
| #define | REDIS_ERROR_MOVED_STR "MOVED" |
| #define | REDIS_ERROR_NO_SCRIPT_STR "NOSCRIPT" |
| #define | REDIS_ERROR_TRY_AGAIN_STR "TRYAGAIN" |
| #define | REDIS_VERSION(_max, _min, _patch) (uint32_t) (_max << 24) | (_min << 16) | _patch |
Typedefs | |
| typedef struct fr_redis_cluster_node_s | fr_redis_cluster_node_t |
| typedef struct fr_redis_ct_s | fr_redis_ct_t |
Enumerations | |
| enum | fr_redis_async_rcode_t { REDIS_ASYNC_RCODE_SUCCESS = 0 , REDIS_ASYNC_RCODE_ERROR = -1 , REDIS_ASYNC_RCODE_BOOTSTRAP = -2 , REDIS_ASYNC_RCODE_GETMAP = -3 , REDIS_ASYNC_RCODE_TRY_AGAIN = -4 , REDIS_ASYNC_RCODE_ASK = -5 , REDIS_ASYNC_RCODE_MOVE = -6 , REDIS_ASYNC_RCODE_NO_SCRIPT = -7 , REDIS_ASYNC_RCODE_FAIL = -8 } |
| enum | fr_redis_packet_code_t { FR_REDIS_INVALID = 0 , FR_REDIS_CLUSTER_MAP_BOOTSTRAP , FR_REDIS_CLUSTER_MAP_GET , FR_REDIS_CLUSTER_MAP_UPDATE , FR_REDIS_CLUSTER_MAP_FAIL , FR_REDIS_CODE_MAX , FR_REDIS_DO_NOT_RESPOND = 255 } |
| enum | fr_redis_rcode_t { REDIS_RCODE_SUCCESS = 0 , REDIS_RCODE_ERROR = -1 , REDIS_RCODE_TRY_AGAIN = -2 , REDIS_RCODE_RECONNECT = -3 , REDIS_RCODE_ASK = -4 , REDIS_RCODE_MOVE = -5 , REDIS_RCODE_NO_SCRIPT = -6 } |
| Codes are ordered inversely by priority. More... | |
Functions | |
| int | fr_redis_parse_version (char *out, size_t out_len, redisReply *reply) |
| Parse the reply from the Redis command INFO SERVER to extract the version. | |
| void | fr_redis_reply_print (fr_log_lvl_t lvl, redisReply *reply, request_t *request, int idx, fr_redis_rcode_t status) |
| Print the response data in a useful treelike form. | |
| int | fr_redis_reply_to_map (TALLOC_CTX *ctx, map_list_t *out, request_t *request, redisReply *key, redisReply *op, redisReply *value) |
| Convert a pair of redis reply objects to a map. | |
| int | fr_redis_reply_to_value_box (TALLOC_CTX *ctx, fr_value_box_t *out, redisReply *reply, fr_type_t dst_type, fr_dict_attr_t const *dst_enumv, bool box_error, bool shallow)) |
| Convert a string or integer type to fr_value_box_t of specified type. | |
| int | fr_redis_tuple_from_map (TALLOC_CTX *pool, char const *out[], size_t out_len[], map_t *map) |
| Add a single map pair to an existing command string as three elements. | |
| uint32_t | fr_redis_version_num (char const *version) |
| Convert version string into a 32bit unsigned integer for comparisons. | |
| void | fr_redis_version_print (void) |
| Print the version of libhiredis the server was built against. | |
| int | redis_dict_init (void) |
| Load the Redis dictionaries. | |
Variables | |
| fr_table_num_sorted_t const | redis_rcodes [] |
| size_t | redis_rcodes_len |
| fr_table_num_sorted_t const | redis_reply_types [] |
| size_t | redis_reply_types_len |
Common functions for interacting with Redis via hiredis.
Definition in file base.h.
| struct fr_redis_conf_t |
Configuration parameters for a redis connection.
Collaboration diagram for fr_redis_conf_t:| Data Fields | ||
|---|---|---|
| fr_time_delta_t | connection_timeout | |
| uint32_t | database | number on Redis server. |
| char const ** | hostname | of Redis server. |
| char const * | inst_name | Instance name for triggers. |
| char const * | log_prefix | |
| uint32_t | max_alt | Maximum alternative nodes to try. |
| uint8_t | max_nodes | Maximum number of cluster nodes to connect to. |
| uint32_t | max_redirects | Maximum number of times we can be redirected. |
| uint32_t | max_retries | Maximum number of times we attempt a command when receiving successive -TRYAGAIN messages. |
| char const * | module_name | Module name for triggers. |
| char const * | password | to authenticate to Redis. |
| uint16_t | port | of Redis daemon. |
| fr_time_delta_t | reconnection_delay | |
| fr_time_delta_t | retry_delay | How long to wait when we received a -TRYAGAIN message. |
| trunk_conf_t | trunk_conf | Configuration for trunk connections. |
| bool | use_cluster_map | use cluster map. |
| bool | use_tls | use TLS. |
| char const * | username | for acls. |
| struct fr_redis_conn_t |
| Data Fields | ||
|---|---|---|
| redisContext * | handle | Hiredis context used when issuing commands. |
| fr_redis_cluster_node_t * | node | Node this connection is to. |
| #define REDIS_COMMON_CONFIG |
| typedef struct fr_redis_cluster_node_s fr_redis_cluster_node_t |
| typedef struct fr_redis_ct_s fr_redis_ct_t |
| enum fr_redis_rcode_t |
Codes are ordered inversely by priority.
To simplify handling the return codes from pipelined commands, the lowest status code, and the reply which accompanies it should be returned to the redis cluster code.
| int fr_redis_parse_version | ( | char * | out, |
| size_t | out_len, | ||
| redisReply * | reply | ||
| ) |
Parse the reply from the Redis command INFO SERVER to extract the version.
| [out] | out | Where to write the version string. |
| [in] | out_len | Length of the version string buffer. |
| [in] | reply | Redis reply to parse |
Definition at line 535 of file redis.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void fr_redis_reply_print | ( | fr_log_lvl_t | lvl, |
| redisReply * | reply, | ||
| request_t * | request, | ||
| int | idx, | ||
| fr_redis_rcode_t | status | ||
| ) |
Print the response data in a useful treelike form.
| [in] | lvl | to print data at. |
| [in] | reply | to print. |
| [in] | request | The current request. |
| [in] | idx | Response number. |
| [in] | status | code from processing last reply. |
Definition at line 153 of file redis.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_redis_reply_to_map | ( | TALLOC_CTX * | ctx, |
| map_list_t * | out, | ||
| request_t * | request, | ||
| redisReply * | key, | ||
| redisReply * | op, | ||
| redisReply * | value | ||
| ) |
Convert a pair of redis reply objects to a map.
The maps can then be applied using map_to_request.
| [in,out] | ctx | to allocate maps in. |
| [out] | out | Where to write the head of the new maps list. |
| [in] | request | The current request. |
| [in] | key | to process. |
| [in] | op | to process. |
| [in] | value | to process. |
Definition at line 381 of file redis.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_redis_reply_to_value_box | ( | TALLOC_CTX * | ctx, |
| fr_value_box_t * | out, | ||
| redisReply * | reply, | ||
| fr_type_t | dst_type, | ||
| fr_dict_attr_t const * | dst_enumv, | ||
| bool | box_error, | ||
| bool | shallow | ||
| ) |
Convert a string or integer type to fr_value_box_t of specified type.
Will work with REDIS_REPLY_STRING (which is converted to FR_TYPE_STRING then cast to dst_type), or REDIS_REPLY_INTEGER (which is converted to FR_TYPE_UINT64, then cast to dst_type).
| [in,out] | ctx | to allocate any buffers in. |
| [out] | out | Where to write the cast type. |
| [in] | reply | to process. |
| [in] | dst_type | to convert to. May be FR_TYPE_VOID to infer type. |
| [in] | dst_enumv | Used to convert string types to integers for attribute with enumerated values. |
| [in] | box_error | If true then REDIS_REPLY_ERROR will be copied to a box, otherwise we'll return and error with the contents of the error available on the thread local error stack. |
| [in] | shallow | If true, we shallow copy strings. |
Definition at line 222 of file redis.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_redis_tuple_from_map | ( | TALLOC_CTX * | pool, |
| char const * | out[], | ||
| size_t | out_len[], | ||
| map_t * | map | ||
| ) |
Add a single map pair to an existing command string as three elements.
| pool | to allocate any buffers in. |
| out | Where to write pointers to the member of the tuple. Unused elements should be a multiple of three, and it should have at least three unused elements. |
| out_len | Where to write the size of the data pointed to by the equivalent index in the out array. |
| map | to convert. |
Definition at line 474 of file redis.c.
Here is the call graph for this function:
Here is the caller graph for this function:| uint32_t fr_redis_version_num | ( | char const * | version | ) |
| void fr_redis_version_print | ( | void | ) |
| int redis_dict_init | ( | void | ) |
|
extern |
|
extern |
1.9.8