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 int sql_affected_rows (rlm_sql_handle_t *handle, 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, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 Retrieves any errors associated with the connection handle. More...
 
static sql_rcode_t sql_fetch_row (rlm_sql_row_t *out, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_fields (char const **out[], rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_finish_query (rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_finish_select_query (rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_free_result (UNUSED rlm_sql_handle_t *handle, 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 (rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
 
static sql_rcode_t sql_query (rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config, char const *query)
 
static sql_rcode_t sql_select_query (rlm_sql_handle_t *handle, rlm_sql_config_t const *config, char const *query)
 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 654 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_affected_rows()

static int sql_affected_rows ( rlm_sql_handle_t handle,
rlm_sql_config_t const *  config 
)
static

Definition at line 648 of file rlm_sql_freetds.c.

+ Here is the call 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,
rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Retrieves any errors associated with the connection handle.

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.
handlerlm_sql connection handle.
configrlm_sql config.
Returns
number of errors written to the sql_log_entry_t array.

Definition at line 409 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 sql_rcode_t sql_fetch_row ( rlm_sql_row_t out,
rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 578 of file rlm_sql_freetds.c.

◆ sql_fields()

static sql_rcode_t sql_fields ( char const **  out[],
rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 354 of file rlm_sql_freetds.c.

+ Here is the call graph for this function:

◆ sql_finish_query()

static sql_rcode_t sql_finish_query ( rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 632 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ sql_finish_select_query()

static sql_rcode_t sql_finish_select_query ( rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

Definition at line 425 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 rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config 
)
static

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

+ Here is the caller graph for this function:

◆ sql_num_rows()

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

Definition at line 571 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ sql_query()

static sql_rcode_t sql_query ( rlm_sql_handle_t handle,
UNUSED rlm_sql_config_t const *  config,
char const *  query 
)
static

Definition at line 195 of file rlm_sql_freetds.c.

+ Here is the caller graph for this function:

◆ sql_select_query()

static sql_rcode_t sql_select_query ( rlm_sql_handle_t handle,
rlm_sql_config_t const *  config,
char const *  query 
)
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 449 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 691 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"
},
.number = 10,
.sql_socket_init = sql_socket_init,
.sql_query = sql_query,
.sql_select_query = sql_select_query,
.sql_num_fields = sql_num_fields,
.sql_num_rows = sql_num_rows,
.sql_fields = sql_fields,
.sql_affected_rows = sql_affected_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:65
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_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static int sql_affected_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config, char const *query)
static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, char const *query)
Execute a query when we expected a result set.
static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_free_result(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, 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, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
Retrieves any errors associated with the connection handle.

Definition at line 817 of file rlm_sql_freetds.c.