All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rlm_linelog.c File Reference
#include <freeradius-devel/radiusd.h>
#include <freeradius-devel/modules.h>
#include <freeradius-devel/rad_assert.h>
#include <freeradius-devel/exfile.h>
#include <sys/uio.h>
+ Include dependency graph for rlm_linelog.c:

Go to the source code of this file.

Data Structures

struct  linelog_conn
 
struct  linelog_instance_t
 linelog module instance More...
 
struct  linelog_instance_t.file
 
struct  linelog_instance_t.syslog
 
struct  linelog_instance_t.unix_sock
 
struct  linelog_net
 

Macros

#define VECTOR_INCREMENT   20
 

Typedefs

typedef struct linelog_conn linelog_conn_t
 
typedef struct linelog_instance_t linelog_instance_t
 linelog module instance More...
 
typedef struct linelog_net linelog_net_t
 

Enumerations

enum  linelog_dst_t {
  LINELOG_DST_INVALID = 0,
  LINELOG_DST_FILE,
  LINELOG_DST_SYSLOG,
  LINELOG_DST_UNIX,
  LINELOG_DST_UDP,
  LINELOG_DST_TCP
}
 

Functions

static int _mod_conn_free (linelog_conn_t *conn)
 
static size_t linelog_escape_func (UNUSED REQUEST *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
 Escape unprintable characters. More...
 
static void * mod_conn_create (TALLOC_CTX *ctx, void *instance, struct timeval const *timeout)
 
static int mod_detach (void *instance)
 
static rlm_rcode_t mod_do_linelog (void *instance, REQUEST *request) CC_HINT(nonnull)
 Write a linelog message. More...
 
static int mod_instantiate (CONF_SECTION *conf, void *instance)
 

Variables

static const CONF_PARSER file_config []
 
static FR_NAME_NUMBER const linelog_dst_table []
 
static const CONF_PARSER module_config []
 
module_t rlm_linelog
 
static const CONF_PARSER syslog_config []
 
static const CONF_PARSER tcp_config []
 
static const CONF_PARSER udp_config []
 
static const CONF_PARSER unix_config []
 

Data Structure Documentation

struct linelog_conn

Definition at line 122 of file rlm_linelog.c.

Data Fields
int sockfd File descriptor associated with socket.
struct linelog_instance_t

linelog module instance

Definition at line 80 of file rlm_linelog.c.

+ Collaboration diagram for linelog_instance_t:
Data Fields
CONF_SECTION * cs CONF_SECTION to use as the root for log_ref lookups.
char const * delimiter Line termination string (usually
).
size_t delimiter_len Length of line termination string.
struct linelog_instance_t file
linelog_dst_t log_dst Logging destination.
char const * log_dst_str Logging destination string.
vp_tmpl_t * log_ref Path to a CONF_PAIR (to use as the source of log messages).
vp_tmpl_t * log_src Source of log messages.
char const * name Module instance name.
fr_connection_pool_t * pool Connection pool instance.
struct linelog_instance_t syslog
linelog_net_t tcp TCP server.
linelog_net_t udp UDP server.
struct linelog_instance_t unix_sock
struct linelog_instance_t.file

Definition at line 101 of file rlm_linelog.c.

Data Fields
exfile_t * ef Exclusive file access handle.
bool escape Do filename escaping, yes / no.
xlat_escape_t escape_func Escape function.
gid_t group Resolved gid.
char const * group_str Group to set on new files.
char const * name File to write to.
uint32_t permissions Permissions to use when creating new files.
struct linelog_instance_t.syslog

Definition at line 95 of file rlm_linelog.c.

Data Fields
char const * facility Syslog facility string.
int priority Bitwise | of severity and facility.
char const * severity Syslog severity string.
struct linelog_instance_t.unix_sock

Definition at line 111 of file rlm_linelog.c.

Data Fields
char const * path Where the UNIX socket lives.
struct timeval timeout How long to wait for read/write operations.
struct linelog_net

Definition at line 71 of file rlm_linelog.c.

+ Collaboration diagram for linelog_net:
Data Fields
fr_ipaddr_t dst_ipaddr Network server.
uint16_t port Network port.
fr_ipaddr_t src_ipaddr Send requests from a given src_ipaddr.
struct timeval timeout How long to wait for read/write operations.

Macro Definition Documentation

#define VECTOR_INCREMENT   20

Typedef Documentation

typedef struct linelog_conn linelog_conn_t

linelog module instance

typedef struct linelog_net linelog_net_t

Enumeration Type Documentation

Enumerator
LINELOG_DST_INVALID 
LINELOG_DST_FILE 

Log to a file.

LINELOG_DST_SYSLOG 

Log to syslog.

LINELOG_DST_UNIX 

Log via Unix socket.

LINELOG_DST_UDP 

Log via UDP.

LINELOG_DST_TCP 

Log via TCP.

Definition at line 52 of file rlm_linelog.c.

Function Documentation

static int _mod_conn_free ( linelog_conn_t conn)
static

Definition at line 198 of file rlm_linelog.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static size_t linelog_escape_func ( UNUSED REQUEST request,
char *  out,
size_t  outlen,
char const *  in,
UNUSED void *  arg 
)
static

Escape unprintable characters.

  • Newline is escaped as \\n.
  • Return is escaped as \\r.
  • All other unprintables are escaped as
    \<oct><oct><oct> 
    .
Parameters
requestThe current request.
outWhere to write the escaped string.
outlenLength of the output buffer.
inString to escape.
argunused.

Definition at line 442 of file rlm_linelog.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* mod_conn_create ( TALLOC_CTX *  ctx,
void *  instance,
struct timeval const *  timeout 
)
static

Definition at line 206 of file rlm_linelog.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int mod_detach ( void *  instance)
static

Definition at line 294 of file rlm_linelog.c.

+ Here is the call graph for this function:

static rlm_rcode_t mod_do_linelog ( void *  instance,
REQUEST request 
)
static

Write a linelog message.

Write a log message to syslog or a flat file.

Parameters
instanceof rlm_linelog.
requestThe current request.
Returns

Definition at line 513 of file rlm_linelog.c.

+ Here is the call graph for this function:

static int mod_instantiate ( CONF_SECTION conf,
void *  instance 
)
static

Definition at line 307 of file rlm_linelog.c.

+ Here is the call graph for this function:

Variable Documentation

const CONF_PARSER file_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("permissions", PW_TYPE_INTEGER, linelog_instance_t, file.permissions), .dflt = "0600" },
{ FR_CONF_OFFSET("group", PW_TYPE_STRING, linelog_instance_t, file.group_str) },
{ FR_CONF_OFFSET("escape_filenames", PW_TYPE_BOOLEAN, linelog_instance_t, file.escape), .dflt = "no" },
}
linelog module instance
Definition: rlm_linelog.c:80
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
char const * name
Module instance name.
Definition: rlm_linelog.c:81
#define PW_TYPE_XLAT
string will be dynamically expanded.
Definition: conffile.h:207
A truth value.
Definition: radius.h:56
32 Bit unsigned integer.
Definition: radius.h:34
#define PW_TYPE_FILE_OUTPUT
File matching value must exist, and must be writeable.
Definition: conffile.h:205
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168
String of printable characters.
Definition: radius.h:33

Definition at line 127 of file rlm_linelog.c.

FR_NAME_NUMBER const linelog_dst_table[]
static
Initial value:
= {
{ "file", LINELOG_DST_FILE },
{ "syslog", LINELOG_DST_SYSLOG },
{ "unix", LINELOG_DST_UNIX },
{ "udp", LINELOG_DST_UDP },
{ "tcp", LINELOG_DST_TCP },
{ NULL , -1 }
}
Log via Unix socket.
Definition: rlm_linelog.c:56
Log via TCP.
Definition: rlm_linelog.c:58
Log to a file.
Definition: rlm_linelog.c:54
Log to syslog.
Definition: rlm_linelog.c:55
Log via UDP.
Definition: rlm_linelog.c:57

Definition at line 61 of file rlm_linelog.c.

const CONF_PARSER module_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("delimiter", PW_TYPE_STRING, linelog_instance_t, delimiter), .dflt = "\n" },
{ FR_CONF_OFFSET("reference", PW_TYPE_TMPL, linelog_instance_t, log_ref) },
{ FR_CONF_POINTER("file", PW_TYPE_SUBSECTION, NULL), .dflt = (void const *) file_config },
{ FR_CONF_POINTER("syslog", PW_TYPE_SUBSECTION, NULL), .dflt = (void const *) syslog_config },
{ FR_CONF_POINTER("unix", PW_TYPE_SUBSECTION, NULL), .dflt = (void const *) unix_config },
{ FR_CONF_OFFSET("tcp", PW_TYPE_SUBSECTION, linelog_instance_t, tcp), .dflt = (void const *) tcp_config },
{ FR_CONF_OFFSET("udp", PW_TYPE_SUBSECTION, linelog_instance_t, udp), .dflt = (void const *) udp_config },
{ FR_CONF_OFFSET("permissions", PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, linelog_instance_t, file.permissions) },
{ FR_CONF_OFFSET("syslog_facility", PW_TYPE_STRING | PW_TYPE_DEPRECATED, linelog_instance_t, syslog.facility) },
{ FR_CONF_OFFSET("syslog_severity", PW_TYPE_STRING | PW_TYPE_DEPRECATED, linelog_instance_t, syslog.severity) },
}
linelog module instance
Definition: rlm_linelog.c:80
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
#define PW_TYPE_DEPRECATED
If a matching CONF_PAIR is found, error out with a deprecated message.
Definition: conffile.h:199
#define PW_TYPE_SUBSECTION
Definition: conffile.h:188
static const CONF_PARSER tcp_config[]
Definition: rlm_linelog.c:153
char const * name
Module instance name.
Definition: rlm_linelog.c:81
static const CONF_PARSER file_config[]
Definition: rlm_linelog.c:127
static const CONF_PARSER unix_config[]
Definition: rlm_linelog.c:141
static const CONF_PARSER udp_config[]
Definition: rlm_linelog.c:146
32 Bit unsigned integer.
Definition: radius.h:34
#define PW_TYPE_FILE_OUTPUT
File matching value must exist, and must be writeable.
Definition: conffile.h:205
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168
#define PW_TYPE_REQUIRED
Error out if no matching CONF_PAIR is found, and no dflt value is set.
Definition: conffile.h:200
String of printable characters.
Definition: radius.h:33
#define FR_CONF_POINTER(_n, _t, _p)
Definition: conffile.h:172
#define PW_TYPE_TMPL
CONF_PAIR should be parsed as a template.
Definition: conffile.h:208
static const CONF_PARSER syslog_config[]
Definition: rlm_linelog.c:135

Definition at line 169 of file rlm_linelog.c.

module_t rlm_linelog
Initial value:
= {
.magic = RLM_MODULE_INIT,
.name = "linelog",
.inst_size = sizeof(linelog_instance_t),
.config = module_config,
.instantiate = mod_instantiate,
.detach = mod_detach,
.methods = {
},
}
5 methods index for preproxy section.
Definition: modules.h:46
7 methods index for postauth section.
Definition: modules.h:48
#define RLM_MODULE_INIT
Definition: modules.h:86
#define RLM_TYPE_HUP_SAFE
Will be restarted on HUP.
Definition: modules.h:79
struct linelog_instance_t linelog_instance_t
linelog module instance
static rlm_rcode_t mod_do_linelog(void *instance, REQUEST *request) CC_HINT(nonnull)
Write a linelog message.
Definition: rlm_linelog.c:513
3 methods index for accounting section.
Definition: modules.h:44
0 methods index for authenticate section.
Definition: modules.h:41
static const CONF_PARSER module_config[]
Definition: rlm_linelog.c:169
static int mod_detach(void *instance)
Definition: rlm_linelog.c:294
6 methods index for postproxy section.
Definition: modules.h:47
2 methods index for preacct section.
Definition: modules.h:43
static int mod_instantiate(CONF_SECTION *conf, void *instance)
Definition: rlm_linelog.c:307
8 methods index for recvcoa section.
Definition: modules.h:50
9 methods index for sendcoa section.
Definition: modules.h:51
1 methods index for authorize section.
Definition: modules.h:42

Definition at line 838 of file rlm_linelog.c.

const CONF_PARSER syslog_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("facility", PW_TYPE_STRING, linelog_instance_t, syslog.facility) },
{ FR_CONF_OFFSET("severity", PW_TYPE_STRING, linelog_instance_t, syslog.severity), .dflt = "info" },
}
linelog module instance
Definition: rlm_linelog.c:80
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168
String of printable characters.
Definition: radius.h:33

Definition at line 135 of file rlm_linelog.c.

const CONF_PARSER tcp_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("server", PW_TYPE_COMBO_IP_ADDR, linelog_net_t, dst_ipaddr) },
{ FR_CONF_OFFSET("timeout", PW_TYPE_TIMEVAL, linelog_net_t, timeout), .dflt = "1000" },
}
Time value (struct timeval), only for config items.
Definition: radius.h:55
WiMAX IPv4 or IPv6 address depending on length.
Definition: radius.h:46
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
static float timeout
Definition: radclient.c:43
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168
16 Bit unsigned integer.
Definition: radius.h:43

Definition at line 153 of file rlm_linelog.c.

const CONF_PARSER udp_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("server", PW_TYPE_COMBO_IP_ADDR, linelog_net_t, dst_ipaddr) },
{ FR_CONF_OFFSET("timeout", PW_TYPE_TIMEVAL, linelog_net_t, timeout), .dflt = "1000" },
}
Time value (struct timeval), only for config items.
Definition: radius.h:55
WiMAX IPv4 or IPv6 address depending on length.
Definition: radius.h:46
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
static float timeout
Definition: radclient.c:43
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168
16 Bit unsigned integer.
Definition: radius.h:43

Definition at line 146 of file rlm_linelog.c.

const CONF_PARSER unix_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("filename", PW_TYPE_FILE_INPUT, linelog_instance_t, unix_sock.path) },
}
#define PW_TYPE_FILE_INPUT
File matching value must exist, and must be readable.
Definition: conffile.h:204
linelog module instance
Definition: rlm_linelog.c:80
#define CONF_PARSER_TERMINATOR
Definition: conffile.h:289
#define FR_CONF_OFFSET(_n, _t, _s, _f)
Definition: conffile.h:168

Definition at line 141 of file rlm_linelog.c.