The FreeRADIUS server  $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Data Structures | Macros | Functions | Variables
rlm_sql_freetds.c File Reference
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/util/debug.h>
#include <sys/stat.h>
#include <ctpublic.h>
#include "rlm_sql.h"
+ Include dependency graph for rlm_sql_freetds.c:

Go to the source code of this file.

Data Structures

struct  rlm_sql_freetds_conn_t
 

Macros

#define LOG_PREFIX   "sql - freetds"
 
#define MAX_DATASTR_LEN   256
 

Functions

static int _sql_socket_destructor (rlm_sql_freetds_conn_t *conn)
 
static CS_RETCODE CS_PUBLIC clientmsg_callback (CS_CONTEXT *context, UNUSED CS_CONNECTION *conn, CS_CLIENTMSG *emsgp)
 Client-Library error handler. More...
 
static CS_RETCODE CS_PUBLIC csmsg_callback (CS_CONTEXT *context, CS_CLIENTMSG *emsgp)
 Client error handler. More...
 
static CS_RETCODE CS_PUBLIC servermsg_callback (CS_CONTEXT *context, UNUSED CS_CONNECTION *conn, CS_SERVERMSG *msgp)
 Server error handler. More...
 
static size_t sql_error (UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UNUSED size_t outlen, fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 Retrieves any errors associated with the query context. More...
 
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, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_finish_select_query (fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_free_result (UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 
static int sql_num_fields (rlm_sql_handle_t *handle, 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 unlang_action_t sql_query (rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)
 
static unlang_action_t sql_select_query (rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)
 Execute a query when we expected a result set. More...
 
static sql_rcode_t sql_socket_init (rlm_sql_handle_t *handle, rlm_sql_config_t const *config, fr_time_delta_t timeout)
 

Variables

rlm_sql_driver_t rlm_sql_freetds
 

Data Structure Documentation

◆ rlm_sql_freetds_conn_t

struct rlm_sql_freetds_conn_t

Definition at line 40 of file rlm_sql_freetds.c.

Data Fields
CS_COMMAND * command A prepared statement.
CS_CONTEXT * context Structure FreeTDS uses to avoid creating globals.
CS_CONNECTION * db Handle specifying a single connection to the database.
char * error The last error string created by one of the call backs.
bool established Set to false once the connection has been properly established.
char ** results Result strings from statement execution.
CS_INT rows_affected Rows affected by last INSERT / UPDATE / DELETE.

Macro Definition Documentation

◆ LOG_PREFIX

#define LOG_PREFIX   "sql - freetds"

Definition at line 29 of file rlm_sql_freetds.c.

◆ MAX_DATASTR_LEN

#define MAX_DATASTR_LEN   256

Definition at line 50 of file rlm_sql_freetds.c.

Function Documentation

◆ _sql_socket_destructor()

static int _sql_socket_destructor ( rlm_sql_freetds_conn_t conn)
static

Definition at line 664 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ clientmsg_callback()

static CS_RETCODE CS_PUBLIC clientmsg_callback ( CS_CONTEXT *  context,
UNUSED CS_CONNECTION *  conn,
CS_CLIENTMSG *  emsgp 
)
static

Client-Library error handler.

Callback for any errors raised by the Client-Library. Will overwrite any previous errors associated with a connection.

Parameters
contextThe FreeTDS library context.
connDB connection handle.
emsgpPointer to the error structure.
Returns
CS_SUCCEED

Definition at line 62 of file rlm_sql_freetds.c.

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

◆ csmsg_callback()

static CS_RETCODE CS_PUBLIC csmsg_callback ( CS_CONTEXT *  context,
CS_CLIENTMSG *  emsgp 
)
static

Client error handler.

Callback for any errors raised by the client. Will overwrite any previous errors associated with a connection.

Parameters
contextThe FreeTDS library context.
emsgpPointer to the error structure.
Returns
CS_SUCCEED

Definition at line 106 of file rlm_sql_freetds.c.

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

◆ servermsg_callback()

static CS_RETCODE CS_PUBLIC servermsg_callback ( CS_CONTEXT *  context,
UNUSED CS_CONNECTION *  conn,
CS_SERVERMSG *  msgp 
)
static

Server error handler.

Callback for any messages sent back from the server.

There's no standard categorisation of messages sent back from the server, so we don't know they're errors, the only thing we can do is write them to the long as informational messages.

Parameters
contextThe FreeTDS library context.
connDB connection handle.
msgpPointer to the error structure.
Returns
CS_SUCCEED

Definition at line 153 of file rlm_sql_freetds.c.

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

◆ sql_error()

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

Retrieves any errors associated with the query context.

Note
Caller will free any memory allocated in ctx.
Parameters
ctxto allocate temporary error buffers in.
outArray of sql_log_entrys to fill.
outlenLength of out array.
query_ctxQuery context to retrieve error for.
configrlm_sql config.
Returns
number of errors written to the sql_log_entry_t array.

Definition at line 414 of file rlm_sql_freetds.c.

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

◆ 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 588 of file rlm_sql_freetds.c.

◆ 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 359 of file rlm_sql_freetds.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,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 648 of file rlm_sql_freetds.c.

◆ sql_finish_select_query()

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

Definition at line 430 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ sql_free_result()

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

Definition at line 637 of file rlm_sql_freetds.c.

◆ sql_num_fields()

static int sql_num_fields ( rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 338 of file rlm_sql_freetds.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 581 of file rlm_sql_freetds.c.

◆ sql_query()

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

Definition at line 195 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ sql_select_query()

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

Execute a query when we expected a result set.

Note
Only the first row from queries returning several rows will be returned by this function, consecutive rows will be discarded.

Definition at line 454 of file rlm_sql_freetds.c.

+ Here is the call graph for this function:

◆ sql_socket_init()

static sql_rcode_t sql_socket_init ( rlm_sql_handle_t handle,
rlm_sql_config_t const *  config,
fr_time_delta_t  timeout 
)
static

Definition at line 701 of file rlm_sql_freetds.c.

+ Here is the call graph for this function:

Variable Documentation

◆ rlm_sql_freetds

rlm_sql_driver_t rlm_sql_freetds
Initial value:
= {
.common = {
.name = "sql_freetds"
},
.sql_socket_init = sql_socket_init,
.sql_query = sql_query,
.sql_select_query = sql_select_query,
.sql_num_rows = sql_num_rows,
.sql_fields = sql_fields,
.sql_affected_rows = sql_num_rows,
.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_select_query
}
#define MODULE_MAGIC_INIT
Stop people using different module/library/server versions together.
Definition: dl_module.h:63
static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, fr_time_delta_t timeout)
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, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_finish_select_query(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 unlang_action_t sql_select_query(rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)
Execute a query when we expected a result set.
static sql_rcode_t sql_free_result(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[], NDEBUG_UNUSED size_t outlen, fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
Retrieves any errors associated with the query context.
static unlang_action_t sql_query(rlm_rcode_t *p_result, UNUSED int *priority, UNUSED request_t *request, void *uctx)

Definition at line 831 of file rlm_sql_freetds.c.