The FreeRADIUS server  $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Data Structures | Macros | Functions | Variables
rlm_sql_cassandra.c File Reference

This is free and unencumbered software released into the public domain. More...

#include <freeradius-devel/server/base.h>
#include <freeradius-devel/util/debug.h>
#include <cassandra.h>
#include "rlm_sql.h"
#include "rlm_sql_trunk.h"
+ Include dependency graph for rlm_sql_cassandra.c:

Go to the source code of this file.

Data Structures

struct  cassandra_query_ctx_t
 Driver specific data to attach to the query ctx. More...
 
struct  cassandra_query_t
 Structure for tracking outstanding queries. More...
 
struct  rlm_sql_cassandra_conn_t
 Cassandra cluster connection. More...
 
struct  rlm_sql_cassandra_t
 Cassandra driver instance. More...
 

Macros

#define DO_CASS_OPTION(_opt, _x)
 
#define LOG_PREFIX   "sql - cassandra"
 
#define RLM_CASS_ERR_DATA_RETRIVE(_t)
 

Functions

static void _rlm_sql_cassandra_log (CassLogMessage const *message, UNUSED void *data)
 Log callback for libcassandra. More...
 
static void _sql_connection_close (UNUSED fr_event_list_t *el, void *h, UNUSED void *uctx)
 
 CC_NO_UBSAN (function)
 
 DIAG_OFF (strict-prototypes) typedef struct
 
static int mod_detach (module_detach_ctx_t const *mctx)
 
static int mod_instantiate (module_inst_ctx_t const *mctx)
 
static int mod_load (void)
 
static int sql_affected_rows (UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static size_t sql_error (UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen, fr_sql_query_t *query_ctx)
 
static unlang_action_t sql_fetch_row (rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)
 
static sql_rcode_t sql_fields (char const **out[], fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_finish_query (fr_sql_query_t *query_ctx, rlm_sql_config_t const *config)
 
static sql_rcode_t sql_free_result (fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static int sql_num_rows (fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static void sql_set_query_error (TALLOC_CTX *ctx, cassandra_query_ctx_t *cass_query_ctx, char const *message, size_t len)
 Store the last error associated with a query. More...
 
static void sql_set_query_error_printf (TALLOC_CTX *ctx, cassandra_query_ctx_t *cass_query_ctx, char const *fmt,...))
 Store the last error associated with a query, using a format string. More...
 
static void sql_trunk_connection_read_poll (UNUSED fr_event_list_t *el, UNUSED fr_time_t now, void *uctx)
 
static void sql_trunk_connection_write_poll (UNUSED fr_event_list_t *el, UNUSED fr_time_t now, void *uctx)
 

Variables

static fr_table_num_sorted_t const consistency_levels []
 
static size_t consistency_levels_len = NUM_ELEMENTS(consistency_levels)
 
static const conf_parser_t driver_config []
 
static conf_parser_t latency_aware_routing_config []
 
static conf_parser_t load_balance_dc_aware_config []
 
rlm_sql_driver_t rlm_sql_cassandra
 
 rlm_sql_cassandra_mutable_t
 
static conf_parser_t tls_config []
 
static fr_table_num_sorted_t const verify_cert_table []
 
static size_t verify_cert_table_len = NUM_ELEMENTS(verify_cert_table)
 

Detailed Description

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to http://unlicense.org

Id
d544f2fe79d4529d712097c97f868aa476ea3aa1

Cassandra SQL driver

Author
Linnaea Von Lavia (le.co.nosp@m.ncor.nosp@m.de.45.nosp@m.90@g.nosp@m.mail..nosp@m.com)
Arran Cudbard-Bell (a.cud.nosp@m.bard.nosp@m.b@fre.nosp@m.erad.nosp@m.ius.o.nosp@m.rg)

Definition in file rlm_sql_cassandra.c.


Data Structure Documentation

◆ cassandra_query_ctx_t

struct cassandra_query_ctx_t

Driver specific data to attach to the query ctx.

Definition at line 162 of file rlm_sql_cassandra.c.

+ Collaboration diagram for cassandra_query_ctx_t:
Data Fields
sql_log_entry_t error Most recent Cassandra error message for this query.
CassResult const * result Cassandra result handle.

◆ cassandra_query_t

struct cassandra_query_t

Structure for tracking outstanding queries.

Definition at line 153 of file rlm_sql_cassandra.c.

+ Collaboration diagram for cassandra_query_t:
Data Fields
fr_dlist_t entry Entry in list of outstanding queries.
CassFuture * future Future produced when submitting query.
fr_sql_query_t * query_ctx SQL query ctx.

◆ rlm_sql_cassandra_conn_t

struct rlm_sql_cassandra_conn_t

Cassandra cluster connection.

Definition at line 135 of file rlm_sql_cassandra.c.

+ Collaboration diagram for rlm_sql_cassandra_conn_t:
Data Fields
rlm_sql_config_t const * config SQL instance config.
connection_t * conn Generic connection structure for managing this handle.
rlm_sql_cassandra_t const * inst Module instance for this connection.
CassIterator * iterator Row set iterator.
TALLOC_CTX * log_ctx Prevent unneeded memory allocation by keeping a permanent pool, to store log entries.
uint poll_count How many consecutive polls had no available results.
uint poll_interval Interval between read polling.
fr_dlist_head_t queries Outstanding queries on this connection.
fr_event_timer_t const * read_ev Polling event for reading query results.
fr_event_timer_t const * write_ev Polling event for sending queries.

◆ rlm_sql_cassandra_t

struct rlm_sql_cassandra_t

Cassandra driver instance.

Definition at line 63 of file rlm_sql_cassandra.c.

+ Collaboration diagram for rlm_sql_cassandra_t:
Data Fields
CassCluster * cluster Configuration of the cassandra cluster connection.
uint32_t connections_per_host Number of connections to each server in each IO thread.
CassConsistency consistency Level of consistency converted to a constant.
char const * consistency_str Level of consistency required.
uint32_t event_queue_size Sets the size of the the fixed size queue that stores events.
uint32_t io_queue_size Size of the the fixed size queue that stores pending requests.
uint32_t io_threads Number of IO threads.
double lar_exclusion_threshold How much worse the latency me be, compared to the average latency of the best performing node before it's penalized.

This gets mangled to a double.

uint64_t lar_min_measured The minimum number of measurements per-host required to be considered by the policy.
fr_time_delta_t lar_retry_period The amount of time a node is penalized by the policy before being given a second chance when the current average latency exceeds the calculated threshold (exclusion_threshold * best_average_latency).
fr_time_delta_t lar_scale Weight given to older latencies when calculating the average latency of a node.

A bigger scale will give more weight to older latency measurements.

fr_time_delta_t lar_update_rate The rate at which the best average latency is recomputed.
bool lbdc_allow_remote_dcs_for_local_cl Allows remote hosts to be used if no local.

dc hosts are available and the consistency level is LOCAL_ONE or LOCAL_QUORUM.

uint32_t lbdc_hosts_per_remote_dc The number of host used in each remote DC if no hosts are available in the local dc.
char const * lbdc_local_dc The primary data center to try first.
bool load_balance_round_robin Enable round robin load balancing.
rlm_sql_cassandra_mutable_t * mutable Instance data which needs to change post instantiation.
uint32_t protocol_version The protocol version.
CassSession * session Cluster's connection pool.
CassSsl * ssl Connection's SSL context.
uint32_t tcp_keepalive How often to send TCP keepalives.
bool tcp_nodelay Disable TCP naggle algorithm.
char const * tls_ca_file Path to the CA used to validate the server's certificate.
char const * tls_certificate_file Public certificate we present to the server.
char const * tls_private_key_file Private key for the certificate we present to the server.
char const * tls_private_key_password String to decrypt private key.
char const * tls_verify_cert_str Whether we validate the cert provided by the server.
bool token_aware_routing Whether to use token aware routing.

Macro Definition Documentation

◆ DO_CASS_OPTION

#define DO_CASS_OPTION (   _opt,
  _x 
)
Value:
do {\
CassError _ret;\
if ((_ret = (_x)) != CASS_OK) {\
ERROR("Error setting " _opt ": %s", cass_error_desc(_ret));\
return -1;\
}\
} while (0)

◆ LOG_PREFIX

#define LOG_PREFIX   "sql - cassandra"

Definition at line 36 of file rlm_sql_cassandra.c.

◆ RLM_CASS_ERR_DATA_RETRIVE

#define RLM_CASS_ERR_DATA_RETRIVE (   _t)
Value:
do {\
char const *_col_name;\
size_t _col_name_len;\
CassError _ret;\
if ((_ret = cass_result_column_name(result, i, &_col_name, &_col_name_len)) != CASS_OK) {\
_col_name = "<INVALID>";\
}\
sql_set_query_error_printf(conn->log_ctx, cass_query_ctx, "Failed to retrieve " _t " data at column %s (%d): %s", \
_col_name, i, cass_error_desc(_ret));\
TALLOC_FREE(query_ctx->row);\
query_ctx->rcode = RLM_SQL_ERROR;\
RETURN_MODULE_FAIL;\
} while(0)
@ RLM_SQL_ERROR
General connection/server error.
Definition: rlm_sql.h:46

Function Documentation

◆ _rlm_sql_cassandra_log()

static void _rlm_sql_cassandra_log ( CassLogMessage const *  message,
UNUSED void *  data 
)
static

Log callback for libcassandra.

libcassandra seems to use this to log global events in the library, other messages like query errors are not logged here, and should be retrieved with functions like cass_future_error_message();

Messages here do not need to be made available via sql_error.

Parameters
messageContains the log message and information about its source.
datauser data (not used).

Definition at line 249 of file rlm_sql_cassandra.c.

+ Here is the caller graph for this function:

◆ _sql_connection_close()

static void _sql_connection_close ( UNUSED fr_event_list_t el,
void *  h,
UNUSED void *  uctx 
)
static

Definition at line 330 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ CC_NO_UBSAN()

CC_NO_UBSAN ( function  )

Definition at line 340 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ DIAG_OFF()

DIAG_OFF ( strict-  prototypes)

< Whether we've connected to a keyspace.

< Mutex to prevent multiple connections attempting to connect to a keyspace concurrently.

Definition at line 44 of file rlm_sql_cassandra.c.

◆ mod_detach()

static int mod_detach ( module_detach_ctx_t const *  mctx)
static

Definition at line 850 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ mod_instantiate()

static int mod_instantiate ( module_inst_ctx_t const *  mctx)
static

Definition at line 864 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ mod_load()

static int mod_load ( void  )
static

Definition at line 1024 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ sql_affected_rows()

static int sql_affected_rows ( UNUSED fr_sql_query_t query_ctx,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 845 of file rlm_sql_cassandra.c.

◆ sql_error()

static size_t sql_error ( UNUSED TALLOC_CTX *  ctx,
sql_log_entry_t  out[],
size_t  outlen,
fr_sql_query_t query_ctx 
)
static

Definition at line 814 of file rlm_sql_cassandra.c.

◆ sql_fetch_row()

static unlang_action_t sql_fetch_row ( rlm_rcode_t p_result,
UNUSED int *  priority,
UNUSED request_t request,
void *  uctx 
)
static

Definition at line 656 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ sql_fields()

static sql_rcode_t sql_fields ( char const **  out[],
fr_sql_query_t query_ctx,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 627 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ sql_finish_query()

static sql_rcode_t sql_finish_query ( fr_sql_query_t query_ctx,
rlm_sql_config_t const *  config 
)
static

Definition at line 829 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ sql_free_result()

static sql_rcode_t sql_free_result ( fr_sql_query_t query_ctx,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 794 of file rlm_sql_cassandra.c.

+ Here is the caller graph for this function:

◆ sql_num_rows()

static int sql_num_rows ( fr_sql_query_t query_ctx,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 620 of file rlm_sql_cassandra.c.

◆ sql_set_query_error()

static void sql_set_query_error ( TALLOC_CTX *  ctx,
cassandra_query_ctx_t cass_query_ctx,
char const *  message,
size_t  len 
)
static

Store the last error associated with a query.

Parameters
ctxto allocate message in
cass_query_ctxcassandra query context to write error message into.
messagefrom libcassandra.
lenof message.

Definition at line 302 of file rlm_sql_cassandra.c.

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

◆ sql_set_query_error_printf()

static void sql_set_query_error_printf ( TALLOC_CTX *  ctx,
cassandra_query_ctx_t cass_query_ctx,
char const *  fmt,
  ... 
)
static

Store the last error associated with a query, using a format string.

Parameters
ctxto allocate messate in.
cass_query_ctxto replace log message in.
fmtof message.
...args.

Definition at line 319 of file rlm_sql_cassandra.c.

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

◆ sql_trunk_connection_read_poll()

static void sql_trunk_connection_read_poll ( UNUSED fr_event_list_t el,
UNUSED fr_time_t  now,
void *  uctx 
)
static

Definition at line 457 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

◆ sql_trunk_connection_write_poll()

static void sql_trunk_connection_write_poll ( UNUSED fr_event_list_t el,
UNUSED fr_time_t  now,
void *  uctx 
)
static

Definition at line 545 of file rlm_sql_cassandra.c.

+ Here is the call graph for this function:

Variable Documentation

◆ consistency_levels

fr_table_num_sorted_t const consistency_levels[]
static
Initial value:
= {
{ L("all"), CASS_CONSISTENCY_ALL },
{ L("any"), CASS_CONSISTENCY_ANY },
{ L("each_quorum"), CASS_CONSISTENCY_EACH_QUORUM },
{ L("local_one"), CASS_CONSISTENCY_LOCAL_ONE },
{ L("local_quorum"), CASS_CONSISTENCY_LOCAL_QUORUM },
{ L("one"), CASS_CONSISTENCY_ONE },
{ L("quorum"), CASS_CONSISTENCY_QUORUM },
{ L("three"), CASS_CONSISTENCY_THREE },
{ L("two"), CASS_CONSISTENCY_TWO }
}
#define L(_str)
Helper for initialising arrays of string literals.
Definition: build.h:207

Definition at line 167 of file rlm_sql_cassandra.c.

◆ consistency_levels_len

size_t consistency_levels_len = NUM_ELEMENTS(consistency_levels)
static

Definition at line 178 of file rlm_sql_cassandra.c.

◆ driver_config

const conf_parser_t driver_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("consistency", rlm_sql_cassandra_t, consistency_str), .dflt = "quorum" },
{ FR_CONF_OFFSET("protocol_version", rlm_sql_cassandra_t, protocol_version) },
{ FR_CONF_OFFSET("connections_per_host", rlm_sql_cassandra_t, connections_per_host) },
{ FR_CONF_OFFSET("io_threads", rlm_sql_cassandra_t, io_threads) },
{ FR_CONF_OFFSET("io_queue_size", rlm_sql_cassandra_t, io_queue_size) },
{ FR_CONF_OFFSET("event_queue_size", rlm_sql_cassandra_t, event_queue_size) },
{ FR_CONF_POINTER("load_balance_dc_aware", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) load_balance_dc_aware_config },
{ FR_CONF_OFFSET("load_balance_round_robin", rlm_sql_cassandra_t, load_balance_round_robin), .dflt = "no" },
{ FR_CONF_OFFSET("token_aware_routing", rlm_sql_cassandra_t, token_aware_routing), .dflt = "yes" },
{ FR_CONF_POINTER("latency_aware_routing", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) latency_aware_routing_config },
{ FR_CONF_OFFSET("tcp_keepalive", rlm_sql_cassandra_t, tcp_keepalive) },
{ FR_CONF_OFFSET("tcp_nodelay", rlm_sql_cassandra_t, tcp_nodelay), .dflt = "no" },
{ FR_CONF_POINTER("tls", 0, CONF_FLAG_SUBSECTION | CONF_FLAG_OK_MISSING, NULL), .subcs = (void const *) tls_config },
}
#define CONF_PARSER_TERMINATOR
Definition: cf_parse.h:627
#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:268
#define FR_CONF_POINTER(_name, _type, _flags, _res_p)
conf_parser_t which parses a single CONF_PAIR producing a single global result
Definition: cf_parse.h:310
@ CONF_FLAG_OK_MISSING
OK if it's missing.
Definition: cf_parse.h:427
@ CONF_FLAG_SUBSECTION
Instead of putting the information into a configuration structure, the configuration file routines MA...
Definition: cf_parse.h:399
static conf_parser_t load_balance_dc_aware_config[]
static conf_parser_t latency_aware_routing_config[]
static conf_parser_t tls_config[]
Cassandra driver instance.

Definition at line 213 of file rlm_sql_cassandra.c.

◆ latency_aware_routing_config

conf_parser_t latency_aware_routing_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("exclusion_threshold", rlm_sql_cassandra_t, lar_exclusion_threshold), .dflt = "2.0" },
{ FR_CONF_OFFSET("scale", rlm_sql_cassandra_t, lar_scale), .dflt = "0.1" },
{ FR_CONF_OFFSET("retry_period", rlm_sql_cassandra_t, lar_retry_period), .dflt = "10" },
{ FR_CONF_OFFSET("update_rate", rlm_sql_cassandra_t, lar_update_rate), .dflt = "0.1" },
{ FR_CONF_OFFSET("min_measured", rlm_sql_cassandra_t, lar_min_measured), .dflt = "50" },
}

Definition at line 194 of file rlm_sql_cassandra.c.

◆ load_balance_dc_aware_config

conf_parser_t load_balance_dc_aware_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("local_dc", rlm_sql_cassandra_t, lbdc_local_dc) },
{ FR_CONF_OFFSET("hosts_per_remote_dc", rlm_sql_cassandra_t, lbdc_hosts_per_remote_dc), .dflt = "0" },
{ FR_CONF_OFFSET("allow_remote_dcs_for_local_cl", rlm_sql_cassandra_t, lbdc_allow_remote_dcs_for_local_cl), .dflt = "no" },
}

Definition at line 187 of file rlm_sql_cassandra.c.

◆ rlm_sql_cassandra

rlm_sql_driver_t rlm_sql_cassandra
Initial value:
= {
.common = {
.name = "sql_cassandra",
.inst_size = sizeof(rlm_sql_cassandra_t),
.onload = mod_load,
.detach = mod_detach
},
.sql_query_resume = sql_query_resume,
.sql_select_query_resume = sql_query_resume,
.sql_num_rows = sql_num_rows,
.sql_affected_rows = sql_affected_rows,
.sql_fields = sql_fields,
.sql_fetch_row = sql_fetch_row,
.sql_free_result = sql_free_result,
.sql_error = sql_error,
.sql_finish_query = sql_finish_query,
.sql_finish_select_query = sql_finish_query,
.uses_trunks = true,
.trunk_io_funcs = {
.connection_alloc = sql_trunk_connection_alloc,
.connection_notify = sql_trunk_connection_notify,
.request_mux = sql_trunk_request_mux,
.request_cancel = sql_request_cancel,
.request_fail = sql_request_fail
}
}
#define MODULE_MAGIC_INIT
Stop people using different module/library/server versions together.
Definition: dl_module.h:63
static const conf_parser_t config[]
Definition: base.c:183
static int instantiate(module_inst_ctx_t const *mctx)
Definition: rlm_rest.c:1302
#define RLM_SQL_MULTI_QUERY_CONN
Can support multiple queries on a single connection.
Definition: rlm_sql.h:174
static int mod_detach(module_detach_ctx_t const *mctx)
static int mod_load(void)
static sql_rcode_t sql_fields(char const **out[], fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
static unlang_action_t sql_fetch_row(rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)
static int sql_num_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
static int sql_affected_rows(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen, fr_sql_query_t *query_ctx)
static const conf_parser_t driver_config[]
static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config)
static sql_rcode_t sql_free_result(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
static int mod_instantiate(module_inst_ctx_t const *mctx)
static void sql_request_fail(request_t *request, void *preq, UNUSED void *rctx, UNUSED trunk_request_state_t state, UNUSED void *uctx)
Definition: rlm_sql_db2.c:301

Definition at line 1040 of file rlm_sql_cassandra.c.

◆ rlm_sql_cassandra_mutable_t

rlm_sql_cassandra_mutable_t

Definition at line 58 of file rlm_sql_cassandra.c.

◆ tls_config

conf_parser_t tls_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET_FLAGS("certificate_file", CONF_FLAG_FILE_INPUT, rlm_sql_cassandra_t, tls_certificate_file) },
{ FR_CONF_OFFSET_FLAGS("private_key_file", CONF_FLAG_FILE_INPUT, rlm_sql_cassandra_t, tls_private_key_file) },
{ FR_CONF_OFFSET_FLAGS("private_key_password", CONF_FLAG_SECRET, rlm_sql_cassandra_t, tls_private_key_password) },
{ FR_CONF_OFFSET("verify_cert", rlm_sql_cassandra_t, tls_verify_cert_str) },
}
#define FR_CONF_OFFSET_FLAGS(_name, _flags, _struct, _field)
conf_parser_t which parses a single CONF_PAIR, writing the result to a field in a struct
Definition: cf_parse.h:256
@ CONF_FLAG_SECRET
Only print value if debug level >= 3.
Definition: cf_parse.h:409
@ CONF_FLAG_FILE_INPUT
File matching value must exist, and must be readable.
Definition: cf_parse.h:411

Definition at line 203 of file rlm_sql_cassandra.c.

◆ verify_cert_table

fr_table_num_sorted_t const verify_cert_table[]
static
Initial value:
= {
{ L("identity"), CASS_SSL_VERIFY_PEER_IDENTITY },
{ L("no"), CASS_SSL_VERIFY_NONE },
{ L("yes"), CASS_SSL_VERIFY_PEER_CERT }
}

Definition at line 180 of file rlm_sql_cassandra.c.

◆ verify_cert_table_len

size_t verify_cert_table_len = NUM_ELEMENTS(verify_cert_table)
static

Definition at line 185 of file rlm_sql_cassandra.c.