The FreeRADIUS server
$Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
API to create and manipulate internal format configurations. More...
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/time.h>
#include <freeradius-devel/util/rb.h>
#include <freeradius-devel/util/table.h>
#include <freeradius-devel/util/token.h>
#include <freeradius-devel/util/log.h>
Go to the source code of this file.
Macros | |
#define | cf_canonicalize_error(_ci, _slen, _msg, _str) _cf_canonicalize_error(CF_TO_ITEM(_ci), _slen, _msg, _str) |
#define | cf_data_add(_cf, _data, _name, _free) _cf_data_add(CF_TO_ITEM(_cf), (void const *) _data, _name, _free, __FILE__, __LINE__) |
#define | cf_data_add_static(_cf, _data, _type, _name) _cf_data_add_static(CF_TO_ITEM(_cf), _data, #_type, _name, __FILE__, __LINE__) |
#define | cf_data_find(_cf, _type, _name) _cf_data_find(CF_TO_ITEM(_cf), #_type, _name) |
#define | cf_data_find_in_parent(_cf, _type, _name) _cf_data_find_in_parent(CF_TO_ITEM(_cf), #_type, _name) |
#define | cf_data_find_next(_cf, _prev, _type, _name) _cf_data_find_next(CF_TO_ITEM(_cf), CF_TO_ITEM(_prev), #_type, _name) |
#define | cf_data_remove(_cf, _type, _name) _cf_data_remove(CF_TO_ITEM(_cf), cf_data_find(_cf, _type, _name)) |
Remove an item from a parent by type and name. More... | |
#define | cf_data_remove_by_data(_cf, _cd) _cf_data_remove(CF_TO_ITEM(_cf), _cd) |
Remove an item from a parent. More... | |
#define | cf_data_walk(_cf, _type, _cb, _ctx) _cf_data_walk(CF_TO_ITEM(_cf), #_type, _cb, _ctx) |
#define | cf_filename(_cf) _cf_filename(CF_TO_ITEM(_cf)) |
#define | cf_filename_set(_ci, _filename) _cf_filename_set(CF_TO_ITEM(_ci), _filename) |
#define | CF_IDENT_ANY ((void *) (-1)) |
#define | cf_item_add(_parent, _child) _cf_item_add(CF_TO_ITEM(_parent), CF_TO_ITEM(_child)) |
#define | cf_item_debug(_cf) _cf_item_debug(CF_TO_ITEM(_cf)) |
#define | cf_item_insert_after(_parent, _prev, _child) _cf_item_insert_after(CF_TO_ITEM(_parent), CF_TO_ITEM(_prev), CF_TO_ITEM(_child)) |
#define | cf_item_next(_ci, _curr) _cf_item_next(CF_TO_ITEM(_ci), _curr) |
#define | cf_item_prev(_ci, _curr) _cf_item_prev(CF_TO_ITEM(_ci), _curr) |
#define | cf_item_remove(_parent, _child) _cf_item_remove(CF_TO_ITEM(_parent), CF_TO_ITEM(_child)) |
#define | cf_lineno(_cf) _cf_lineno(CF_TO_ITEM(_cf)) |
#define | cf_lineno_set(_ci, _lineno) _cf_lineno_set(CF_TO_ITEM(_ci), _lineno) |
#define | cf_log_debug(_cf, _fmt, ...) _cf_log(L_DBG, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define | cf_log_debug_by_child(_parent, _child, _fmt, ...) _cf_log_by_child(L_DBG, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
Log a debug message against a specified child. More... | |
#define | cf_log_debug_prefix(_cf, _fmt, ...) _cf_log_with_filename(L_DBG, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define | cf_log_err(_cf, _fmt, ...) _cf_log(L_ERR, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define | cf_log_err_by_child(_parent, _child, _fmt, ...) _cf_log_by_child(L_ERR, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
Log an error message against a specified child. More... | |
#define | cf_log_info(_cf, _fmt, ...) _cf_log(L_INFO, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define | cf_log_info_by_child(_parent, _child, _fmt, ...) _cf_log_by_child(L_INFO, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
Log an info message against a specified child. More... | |
#define | cf_log_perr(_cf, _fmt, ...) _cf_log_perr(L_ERR, CF_TO_ITEM(_cf), __FILE__, __LINE__, NULL, _fmt, ## __VA_ARGS__) |
#define | cf_log_perr_by_child(_parent, _child, _f_rules, _fmt, ...) _cf_log_perr_by_child(L_ERR, _parent, _child, __FILE__, __LINE__, _f_rules, _fmt, ## __VA_ARGS__) |
Log an error message against a specified child, draining the thread local error stack. More... | |
#define | cf_log_pwarn(_cf, _fmt, ...) _cf_log_perr(L_WARN, CF_TO_ITEM(_cf), __FILE__, __LINE__, NULL, _fmt, ## __VA_ARGS__) |
#define | cf_log_warn(_cf, _fmt, ...) _cf_log(L_WARN, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define | cf_log_warn_by_child(_parent, _child, _fmt, ...) _cf_log_by_child(L_WARN, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
Log a warning message against a specified child. More... | |
#define | cf_parent(_cf) _cf_parent(CF_TO_ITEM(_cf)) |
#define | cf_root(_cf) _cf_root(CF_TO_ITEM(_cf)) |
#define | cf_section_alloc(_ctx, _parent, _name1, _name2) _cf_section_alloc(_ctx, _parent, _name1, _name2, __FILE__, __LINE__) |
#define | cf_section_find_in_parent(_cf, _name1, _name2) _cf_section_find_in_parent(CF_TO_ITEM(_cf), _name1, _name2) |
#define | cf_section_find_parent(_cf, _name1, _name2) _cf_section_find_parent(CF_TO_ITEM(_cf), _name1, _name2) |
#define | cf_section_foreach(_parent, _iter) for (CONF_SECTION *_iter = cf_section_first(_parent); _iter; _iter = cf_section_next(_parent, _iter)) |
#define | cf_section_free_children(_x) cf_item_free_children(cf_section_to_item(_x)) |
#define | CF_TO_ITEM(_cf) |
Auto cast from the input type to CONF_ITEM (which is the base type) More... | |
#define | FR_TIMESPEC_TO_MS(_x) (((_x)->tv_usec / 1000000) + ((_x)->tv_sec * (uint64_t)1000)) |
#define | FR_TIMEVAL_TO_MS(_x) (((_x)->tv_usec / 1000) + ((_x)->tv_sec * (uint64_t)1000)) |
Typedefs | |
typedef int(* | cf_walker_t) (void *data, void *ctx) |
typedef struct cf_data | CONF_DATA |
CONF_ITEM used to associate arbitrary data with a CONF_PAIR or CONF_SECTION. More... | |
typedef struct cf_item | CONF_ITEM |
Generic configuration element, extended to become a CONF_PAIR, a CONF_SECTION or CONF_DATA. More... | |
typedef struct cf_pair | CONF_PAIR |
CONF_ITEM with an attribute, an operator and a value. More... | |
typedef struct cf_section | CONF_SECTION |
CONF_ITEM used to group multiple CONF_PAIR and CONF_SECTION, together. More... | |
Functions | |
void | _cf_canonicalize_error (CONF_ITEM *ci, ssize_t slen, char const *msg, char const *str) |
CONF_DATA const * | _cf_data_add (CONF_ITEM *ci, void const *data, char const *name, bool free, char const *filename, int lineno) |
Add talloced user data to a config section. More... | |
CONF_DATA const * | _cf_data_add_static (CONF_ITEM *ci, void const *data, char const *type, char const *name, char const *filename, int lineno) |
Add non-talloced user data to a config section. More... | |
CONF_DATA const * | _cf_data_find (CONF_ITEM const *ci, char const *type, char const *name) |
Find user data in a config section. More... | |
CONF_DATA * | _cf_data_find_in_parent (CONF_ITEM const *ci, char const *type, char const *name) |
Find matching data in the specified section or one of its parents. More... | |
CONF_DATA const * | _cf_data_find_next (CONF_ITEM const *ci, CONF_ITEM const *prev, char const *type, char const *name) |
Return the next item of user data. More... | |
void * | _cf_data_remove (CONF_ITEM *ci, CONF_DATA const *_cd) |
Remove data from a configuration section. More... | |
int | _cf_data_walk (CONF_ITEM *ci, char const *type, cf_walker_t cb, void *ctx) |
Walk over a specific type of CONF_DATA. More... | |
char const * | _cf_filename (CONF_ITEM const *ci) |
Return the filename the CONF_ITEM was parsed in. More... | |
void | _cf_filename_set (CONF_ITEM *cs, char const *filename) |
Set the filename of a CONF_ITEM. More... | |
void | _cf_item_add (CONF_ITEM *parent, CONF_ITEM *child) |
Add a child. More... | |
void | _cf_item_debug (CONF_ITEM const *ci) |
Print out debugging information about a CONFIG_ITEM. More... | |
void | _cf_item_insert_after (CONF_ITEM *parent, CONF_ITEM *prev, CONF_ITEM *child) |
Insert a child after a given one. More... | |
CONF_ITEM * | _cf_item_next (CONF_ITEM const *ci, CONF_ITEM const *curr) |
Return the next child of the CONF_ITEM. More... | |
CONF_ITEM * | _cf_item_prev (CONF_ITEM const *ci, CONF_ITEM const *prev) |
Return the next child of cs. More... | |
CONF_ITEM * | _cf_item_remove (CONF_ITEM *parent, CONF_ITEM *child) |
Remove item from parent and fixup trees. More... | |
int | _cf_lineno (CONF_ITEM const *ci) |
Return the lineno the CONF_ITEM was parsed at. More... | |
void | _cf_lineno_set (CONF_ITEM *cs, int lineno) |
Set the line number of a CONF_ITEM. More... | |
void | _cf_log (fr_log_type_t type, CONF_ITEM const *ci, char const *file, int line, char const *fmt,...)) |
Log an error message relating to a CONF_ITEM. More... | |
void | _cf_log_by_child (fr_log_type_t type, CONF_SECTION const *parent, char const *child, char const *file, int line, char const *fmt,...)) |
Log an error message in the context of a child pair of the specified parent. More... | |
void | _cf_log_perr (fr_log_type_t type, CONF_ITEM const *ci, char const *file, int line, fr_log_perror_format_t const *f_rules, char const *fmt,...)) |
Log an error message relating to a CONF_ITEM. More... | |
void | _cf_log_perr_by_child (fr_log_type_t type, CONF_SECTION const *parent, char const *child, char const *file, int line, fr_log_perror_format_t const *f_rules, char const *fmt,...)) |
Log an error message in the context of a child pair of the specified parent. More... | |
void | _cf_log_with_filename (fr_log_type_t type, CONF_ITEM const *ci, char const *file, int line, char const *fmt,...)) |
Log a debug message relating to a CONF_ITEM. More... | |
CONF_ITEM * | _cf_parent (CONF_ITEM const *ci) |
Return the parent of a CONF_ITEM. More... | |
CONF_SECTION * | _cf_root (CONF_ITEM const *ci) |
Return the top level CONF_SECTION holding all other CONF_ITEM. More... | |
CONF_SECTION * | _cf_section_alloc (TALLOC_CTX *ctx, CONF_SECTION *parent, char const *name1, char const *name2, char const *filename, int lineno) |
Allocate a CONF_SECTION. More... | |
CONF_SECTION * | _cf_section_find_in_parent (CONF_ITEM const *ci, char const *name1, char const *name2) |
Find an ancestor of the passed CONF_ITEM which has a child matching a specific name1 and optionally name2. More... | |
CONF_SECTION * | _cf_section_find_parent (CONF_ITEM const *ci, char const *name1, char const *name2) |
Find a parent CONF_SECTION with name1 and optionally name2. More... | |
void | _cf_vlog (fr_log_type_t type, CONF_ITEM const *ci, char const *file, int line, char const *fmt, va_list ap)) |
Log an error message relating to a CONF_ITEM. More... | |
void | _cf_vlog_perr (fr_log_type_t type, CONF_ITEM const *ci, char const *file, int line, fr_log_perror_format_t const *f_rules, char const *fmt, va_list ap)) |
Log an error message relating to a CONF_ITEM. More... | |
CONF_ITEM * | cf_data_to_item (CONF_DATA const *cs) |
Cast CONF_DATA to a CONF_ITEM. More... | |
void * | cf_data_value (CONF_DATA const *cd) |
Return the user assigned value of CONF_DATA. More... | |
void | cf_item_free_children (CONF_ITEM *ci) |
bool | cf_item_is_data (CONF_ITEM const *ci) |
Determine if CONF_ITEM is CONF_DATA. More... | |
bool | cf_item_is_pair (CONF_ITEM const *ci) |
Determine if CONF_ITEM is a CONF_PAIR. More... | |
bool | cf_item_is_section (CONF_ITEM const *ci) |
Determine if CONF_ITEM is a CONF_SECTION. More... | |
CONF_DATA * | cf_item_to_data (CONF_ITEM const *ci) |
Cast CONF_ITEM to CONF_DATA performing a type check. More... | |
CONF_PAIR * | cf_item_to_pair (CONF_ITEM const *ci) |
Cast a CONF_ITEM to a CONF_PAIR. More... | |
CONF_SECTION * | cf_item_to_section (CONF_ITEM const *ci) |
Cast a CONF_ITEM to a CONF_SECTION. More... | |
CONF_PAIR * | cf_pair_alloc (CONF_SECTION *parent, char const *attr, char const *value, fr_token_t op, fr_token_t lhs_type, fr_token_t rhs_type) |
Allocate a CONF_PAIR. More... | |
char const * | cf_pair_attr (CONF_PAIR const *pair) |
Return the attr of a CONF_PAIR. More... | |
fr_token_t | cf_pair_attr_quote (CONF_PAIR const *pair) |
Return the value (lhs) quoting of a pair. More... | |
unsigned int | cf_pair_count (CONF_SECTION const *cs, char const *attr) |
Count the number of times an attribute occurs in a parent section. More... | |
unsigned int | cf_pair_count_descendents (CONF_SECTION const *cs) |
Count the number of conf pairs beneath a section. More... | |
void | cf_pair_debug (CONF_PAIR *cp) |
Ease of use from debugger. More... | |
CONF_PAIR * | cf_pair_dup (CONF_SECTION *parent, CONF_PAIR *cp, bool copy_meta) |
Duplicate a CONF_PAIR. More... | |
CONF_PAIR * | cf_pair_find (CONF_SECTION const *cs, char const *name) |
Search for a CONF_PAIR with a specific name. More... | |
CONF_PAIR * | cf_pair_find_in_parent (CONF_SECTION const *cs, char const *attr) |
Find a pair with a name matching attr in the specified section or one of its parents. More... | |
CONF_PAIR * | cf_pair_find_next (CONF_SECTION const *cs, CONF_PAIR const *prev, char const *name) |
Find a pair with a name matching attr, after specified pair. More... | |
CONF_PAIR * | cf_pair_first (CONF_SECTION const *cs) |
Return the next child that's a CONF_PAIR. More... | |
int | cf_pair_in_table (int32_t *out, fr_table_num_sorted_t const *table, size_t table_len, CONF_PAIR *cp) |
Check to see if the CONF_PAIR value is present in the specified table. More... | |
bool | cf_pair_is_parsed (CONF_PAIR *cp) |
Return whether a pair has already been parsed. More... | |
void | cf_pair_mark_parsed (CONF_PAIR *cp) |
Mark a pair as parsed. More... | |
CONF_PAIR * | cf_pair_next (CONF_SECTION const *cs, CONF_PAIR const *curr) |
Return the next child that's a CONF_PAIR. More... | |
fr_token_t | cf_pair_operator (CONF_PAIR const *pair) |
Return the operator of a pair. More... | |
CONF_PAIR * | cf_pair_prev (CONF_SECTION const *cs, CONF_PAIR const *curr) |
Return the next child that's a CONF_PAIR. More... | |
int | cf_pair_replace (CONF_SECTION *cs, CONF_PAIR *cp, char const *value) |
Replace pair in a given section with a new pair, of the given value. More... | |
CONF_ITEM * | cf_pair_to_item (CONF_PAIR const *cp) |
Cast a CONF_PAIR to a CONF_ITEM. More... | |
char const * | cf_pair_value (CONF_PAIR const *pair) |
Return the value of a CONF_PAIR. More... | |
fr_token_t | cf_pair_value_quote (CONF_PAIR const *pair) |
Return the value (rhs) quoting of a pair. More... | |
fr_slen_t | cf_pair_values_concat (fr_sbuff_t *sbuff, CONF_SECTION const *cs, char const *attr, char const *sep) |
Concatenate the values of any pairs with name attr. More... | |
void | cf_section_add_name2_quote (CONF_SECTION *cs, fr_token_t token) |
Set the quoting of the name2 identifier. More... | |
char const * | cf_section_argv (CONF_SECTION const *cs, int argc) |
Return variadic argument at the specified index. More... | |
fr_token_t | cf_section_argv_quote (CONF_SECTION const *cs, int argc) |
Return the quoting for one of the variadic arguments. More... | |
void | cf_section_debug (CONF_SECTION *cs) |
Ease of use from debugger. More... | |
CONF_SECTION * | cf_section_dup (TALLOC_CTX *ctx, CONF_SECTION *parent, CONF_SECTION const *cs, char const *name1, char const *name2, bool copy_meta) |
Duplicate a configuration section. More... | |
CONF_SECTION * | cf_section_find (CONF_SECTION const *cs, char const *name1, char const *name2) |
Find a CONF_SECTION with name1 and optionally name2. More... | |
CONF_SECTION * | cf_section_find_next (CONF_SECTION const *cs, CONF_SECTION const *subcs, char const *name1, char const *name2) |
Return the next matching section. More... | |
CONF_SECTION * | cf_section_first (CONF_SECTION const *cs) |
Return the first child in a CONF_SECTION. More... | |
char const * | cf_section_name (CONF_SECTION const *cs) |
Return name2 if set, else name1. More... | |
char const * | cf_section_name1 (CONF_SECTION const *cs) |
Return the second identifier of a CONF_SECTION. More... | |
char const * | cf_section_name2 (CONF_SECTION const *cs) |
Return the second identifier of a CONF_SECTION. More... | |
fr_token_t | cf_section_name2_quote (CONF_SECTION const *cs) |
Return the quoting of the name2 identifier. More... | |
int8_t | cf_section_name_cmp (CONF_SECTION const *cs, char const *name1, char const *name2) |
Check if a given section matches the specified name1/name2 identifiers. More... | |
CONF_SECTION * | cf_section_next (CONF_SECTION const *cs, CONF_SECTION const *curr) |
Return the next child that's a CONF_SECTION. More... | |
CONF_SECTION * | cf_section_prev (CONF_SECTION const *cs, CONF_SECTION const *curr) |
Return the previous child that's a CONF_SECTION. More... | |
CONF_ITEM * | cf_section_to_item (CONF_SECTION const *cs) |
Cast a CONF_SECTION to a CONF_ITEM. More... | |
char const * | cf_section_value_find (CONF_SECTION const *, char const *attr) |
Find a pair in a CONF_SECTION. More... | |
API to create and manipulate internal format configurations.
Definition in file cf_util.h.
#define cf_canonicalize_error | ( | _ci, | |
_slen, | |||
_msg, | |||
_str | |||
) | _cf_canonicalize_error(CF_TO_ITEM(_ci), _slen, _msg, _str) |
#define cf_data_add | ( | _cf, | |
_data, | |||
_name, | |||
_free | |||
) | _cf_data_add(CF_TO_ITEM(_cf), (void const *) _data, _name, _free, __FILE__, __LINE__) |
#define cf_data_add_static | ( | _cf, | |
_data, | |||
_type, | |||
_name | |||
) | _cf_data_add_static(CF_TO_ITEM(_cf), _data, #_type, _name, __FILE__, __LINE__) |
#define cf_data_find | ( | _cf, | |
_type, | |||
_name | |||
) | _cf_data_find(CF_TO_ITEM(_cf), #_type, _name) |
#define cf_data_find_in_parent | ( | _cf, | |
_type, | |||
_name | |||
) | _cf_data_find_in_parent(CF_TO_ITEM(_cf), #_type, _name) |
#define cf_data_find_next | ( | _cf, | |
_prev, | |||
_type, | |||
_name | |||
) | _cf_data_find_next(CF_TO_ITEM(_cf), CF_TO_ITEM(_prev), #_type, _name) |
#define cf_data_remove | ( | _cf, | |
_type, | |||
_name | |||
) | _cf_data_remove(CF_TO_ITEM(_cf), cf_data_find(_cf, _type, _name)) |
#define cf_data_remove_by_data | ( | _cf, | |
_cd | |||
) | _cf_data_remove(CF_TO_ITEM(_cf), _cd) |
#define cf_data_walk | ( | _cf, | |
_type, | |||
_cb, | |||
_ctx | |||
) | _cf_data_walk(CF_TO_ITEM(_cf), #_type, _cb, _ctx) |
#define cf_filename | ( | _cf | ) | _cf_filename(CF_TO_ITEM(_cf)) |
#define cf_filename_set | ( | _ci, | |
_filename | |||
) | _cf_filename_set(CF_TO_ITEM(_ci), _filename) |
#define cf_item_add | ( | _parent, | |
_child | |||
) | _cf_item_add(CF_TO_ITEM(_parent), CF_TO_ITEM(_child)) |
#define cf_item_debug | ( | _cf | ) | _cf_item_debug(CF_TO_ITEM(_cf)) |
#define cf_item_insert_after | ( | _parent, | |
_prev, | |||
_child | |||
) | _cf_item_insert_after(CF_TO_ITEM(_parent), CF_TO_ITEM(_prev), CF_TO_ITEM(_child)) |
#define cf_item_next | ( | _ci, | |
_curr | |||
) | _cf_item_next(CF_TO_ITEM(_ci), _curr) |
#define cf_item_prev | ( | _ci, | |
_curr | |||
) | _cf_item_prev(CF_TO_ITEM(_ci), _curr) |
#define cf_item_remove | ( | _parent, | |
_child | |||
) | _cf_item_remove(CF_TO_ITEM(_parent), CF_TO_ITEM(_child)) |
#define cf_lineno | ( | _cf | ) | _cf_lineno(CF_TO_ITEM(_cf)) |
#define cf_lineno_set | ( | _ci, | |
_lineno | |||
) | _cf_lineno_set(CF_TO_ITEM(_ci), _lineno) |
#define cf_log_debug | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log(L_DBG, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_debug_by_child | ( | _parent, | |
_child, | |||
_fmt, | |||
... | |||
) | _cf_log_by_child(L_DBG, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_debug_prefix | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log_with_filename(L_DBG, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_err | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log(L_ERR, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_err_by_child | ( | _parent, | |
_child, | |||
_fmt, | |||
... | |||
) | _cf_log_by_child(L_ERR, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_info | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log(L_INFO, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_info_by_child | ( | _parent, | |
_child, | |||
_fmt, | |||
... | |||
) | _cf_log_by_child(L_INFO, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_perr | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log_perr(L_ERR, CF_TO_ITEM(_cf), __FILE__, __LINE__, NULL, _fmt, ## __VA_ARGS__) |
#define cf_log_perr_by_child | ( | _parent, | |
_child, | |||
_f_rules, | |||
_fmt, | |||
... | |||
) | _cf_log_perr_by_child(L_ERR, _parent, _child, __FILE__, __LINE__, _f_rules, _fmt, ## __VA_ARGS__) |
#define cf_log_pwarn | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log_perr(L_WARN, CF_TO_ITEM(_cf), __FILE__, __LINE__, NULL, _fmt, ## __VA_ARGS__) |
#define cf_log_warn | ( | _cf, | |
_fmt, | |||
... | |||
) | _cf_log(L_WARN, CF_TO_ITEM(_cf), __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_log_warn_by_child | ( | _parent, | |
_child, | |||
_fmt, | |||
... | |||
) | _cf_log_by_child(L_WARN, _parent, _child, __FILE__, __LINE__, _fmt, ## __VA_ARGS__) |
#define cf_parent | ( | _cf | ) | _cf_parent(CF_TO_ITEM(_cf)) |
#define cf_root | ( | _cf | ) | _cf_root(CF_TO_ITEM(_cf)) |
#define cf_section_alloc | ( | _ctx, | |
_parent, | |||
_name1, | |||
_name2 | |||
) | _cf_section_alloc(_ctx, _parent, _name1, _name2, __FILE__, __LINE__) |
#define cf_section_find_in_parent | ( | _cf, | |
_name1, | |||
_name2 | |||
) | _cf_section_find_in_parent(CF_TO_ITEM(_cf), _name1, _name2) |
#define cf_section_find_parent | ( | _cf, | |
_name1, | |||
_name2 | |||
) | _cf_section_find_parent(CF_TO_ITEM(_cf), _name1, _name2) |
#define cf_section_foreach | ( | _parent, | |
_iter | |||
) | for (CONF_SECTION *_iter = cf_section_first(_parent); _iter; _iter = cf_section_next(_parent, _iter)) |
#define cf_section_free_children | ( | _x | ) | cf_item_free_children(cf_section_to_item(_x)) |
#define CF_TO_ITEM | ( | _cf | ) |
Auto cast from the input type to CONF_ITEM (which is the base type)
Automatically casts:
To a CONF_ITEM, whilst performing talloc type checks.
#define FR_TIMESPEC_TO_MS | ( | _x | ) | (((_x)->tv_usec / 1000000) + ((_x)->tv_sec * (uint64_t)1000)) |
#define FR_TIMEVAL_TO_MS | ( | _x | ) | (((_x)->tv_usec / 1000) + ((_x)->tv_sec * (uint64_t)1000)) |
CONF_ITEM used to associate arbitrary data with a CONF_PAIR or CONF_SECTION.
Generic configuration element, extended to become a CONF_PAIR, a CONF_SECTION or CONF_DATA.
typedef struct cf_section CONF_SECTION |
CONF_ITEM used to group multiple CONF_PAIR and CONF_SECTION, together.
CONF_DATA const* _cf_data_add | ( | CONF_ITEM * | ci, |
void const * | data, | ||
char const * | name, | ||
bool | do_free, | ||
char const * | filename, | ||
int | lineno | ||
) |
Add talloced user data to a config section.
[in] | ci | to add data to. |
[in] | data | to add. |
[in] | name | String identifier of the user data. |
[in] | do_free | Function to free user data when the CONF_SECTION is freed. |
[in] | filename | Source file the CONF_DATA was added in. |
[in] | lineno | the CONF_DATA was added at. |
Definition at line 1786 of file cf_util.c.
CONF_DATA const* _cf_data_add_static | ( | CONF_ITEM * | ci, |
void const * | data, | ||
char const * | type, | ||
char const * | name, | ||
char const * | filename, | ||
int | lineno | ||
) |
Add non-talloced user data to a config section.
[in] | ci | to add data to. |
[in] | data | to add. |
[in] | type | identifier of the user data. |
[in] | name | String identifier of the user data. |
[in] | filename | Source file the CONF_DATA was added in. |
[in] | lineno | the CONF_DATA was added at.
|
Definition at line 1828 of file cf_util.c.
Find user data in a config section.
[in] | ci | The section to search for data in. |
[in] | type | of user data. Used for name spacing and walking over a specific type of user data. |
[in] | name | String identifier of the user data. Special value CF_IDENT_ANY may be used to match on type only. |
Definition at line 1710 of file cf_util.c.
Find matching data in the specified section or one of its parents.
[in] | ci | The section to search for data in. |
[in] | type | of user data. Used for name spacing and walking over a specific type of user data. |
[in] | name | String identifier of the user data. Special value CF_IDENT_ANY may be used to match on type only. |
Definition at line 1744 of file cf_util.c.
CONF_DATA const* _cf_data_find_next | ( | CONF_ITEM const * | ci, |
CONF_ITEM const * | prev, | ||
char const * | type, | ||
char const * | name | ||
) |
Return the next item of user data.
[in] | ci | The section to search for data in. |
[in] | prev | section we found. May be NULL in which case we just return the next section after prev. |
[in] | type | of user data. Used for name spacing and walking over a specific type of user data. |
[in] | name | String identifier of the user data. Special value CF_IDENT_ANY can be used to match any name2 value. |
Definition at line 1728 of file cf_util.c.
Remove data from a configuration section.
[in] | parent | to remove data from. |
[in] | cd | opaque handle of the stored data. |
Definition at line 1872 of file cf_util.c.
int _cf_data_walk | ( | CONF_ITEM * | ci, |
char const * | type, | ||
cf_walker_t | cb, | ||
void * | ctx | ||
) |
Walk over a specific type of CONF_DATA.
[in] | ci | containing the CONF_DATA to walk over. |
[in] | type | of CONF_DATA to walk over. |
[in] | cb | to call when we find CONF_DATA of the specified type. |
[in] | ctx | to pass to cb. |
Definition at line 1897 of file cf_util.c.
char const* _cf_filename | ( | CONF_ITEM const * | ci | ) |
void _cf_filename_set | ( | CONF_ITEM * | ci, |
char const * | filename | ||
) |
void _cf_item_debug | ( | CONF_ITEM const * | ci | ) |
int _cf_lineno | ( | CONF_ITEM const * | ci | ) |
void _cf_lineno_set | ( | CONF_ITEM * | ci, |
int | lineno | ||
) |
void _cf_log | ( | fr_log_type_t | type, |
CONF_ITEM const * | ci, | ||
char const * | file, | ||
int | line, | ||
char const * | fmt, | ||
... | |||
) |
Log an error message relating to a CONF_ITEM.
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | ci | CONF_ITEM to print file/lineno for. |
[in] | fmt | of the message. |
[in] | ... | Message args. |
Definition at line 2045 of file cf_util.c.
void _cf_log_by_child | ( | fr_log_type_t | type, |
CONF_SECTION const * | parent, | ||
char const * | child, | ||
char const * | file, | ||
int | line, | ||
char const * | fmt, | ||
... | |||
) |
Log an error message in the context of a child pair of the specified parent.
[in] | parent | containing the pair. |
[in] | child | name to use as a logging context. |
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | fmt | of the message. |
[in] | ... | Message args. |
Definition at line 2219 of file cf_util.c.
void _cf_log_perr | ( | fr_log_type_t | type, |
CONF_ITEM const * | ci, | ||
char const * | file, | ||
int | line, | ||
fr_log_perror_format_t const * | f_rules, | ||
char const * | fmt, | ||
... | |||
) |
Log an error message relating to a CONF_ITEM.
Drains the fr_strerror() stack emitting one or more error messages.
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | ci | CONF_ITEM to print file/lineno for. |
[in] | f_rules | Additional optional formatting controls. |
[in] | fmt | of the message. |
[in] | ... | Message args. |
Definition at line 2157 of file cf_util.c.
void _cf_log_perr_by_child | ( | fr_log_type_t | type, |
CONF_SECTION const * | parent, | ||
char const * | child, | ||
char const * | file, | ||
int | line, | ||
fr_log_perror_format_t const * | f_rules, | ||
char const * | fmt, | ||
... | |||
) |
Log an error message in the context of a child pair of the specified parent.
[in] | parent | containing the pair. |
[in] | child | name to use as a logging context. |
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | f_rules | Line prefixes. |
[in] | fmt | of the message. |
[in] | ... | Message args. |
Definition at line 2250 of file cf_util.c.
void _cf_log_with_filename | ( | fr_log_type_t | type, |
CONF_ITEM const * | ci, | ||
char const * | file, | ||
int | line, | ||
char const * | fmt, | ||
... | |||
) |
Log a debug message relating to a CONF_ITEM.
Always emits a filename/lineno prefix if available
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | ci | CONF_ITEM to print file/lineno for. |
[in] | fmt | of the message. |
[in] | ... | Message args. |
Definition at line 2180 of file cf_util.c.
CONF_SECTION* _cf_root | ( | CONF_ITEM const * | ci | ) |
Return the top level CONF_SECTION holding all other CONF_ITEM.
[in] | ci | to traverse up from. |
Definition at line 558 of file cf_util.c.
CONF_SECTION* _cf_section_alloc | ( | TALLOC_CTX * | ctx, |
CONF_SECTION * | parent, | ||
char const * | name1, | ||
char const * | name2, | ||
char const * | filename, | ||
int | lineno | ||
) |
Allocate a CONF_SECTION.
[in] | ctx | to allocate |
[in] | parent | CONF_SECTION to hang this CONF_SECTION off of. If parent is not NULL, the new section will be added as a child. |
[in] | name1 | Primary name. |
[in] | name2 | Secondary name. |
[in] | filename | Caller file name for debugging. May be overridden later. |
[in] | lineno | Caller line number for debugging. May be overridden later. |
Definition at line 787 of file cf_util.c.
CONF_SECTION* _cf_section_find_in_parent | ( | CONF_ITEM const * | ci, |
char const * | name1, | ||
char const * | name2 | ||
) |
Find an ancestor of the passed CONF_ITEM which has a child matching a specific name1 and optionally name2.
Will walk up the configuration tree, searching in each parent until a matching section is found or we hit the root.
[in] | ci | The conf item we're searching back from. |
[in] | name1 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name1 value. |
[in] | name2 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name2 value. |
Definition at line 1072 of file cf_util.c.
CONF_SECTION* _cf_section_find_parent | ( | CONF_ITEM const * | ci, |
char const * | name1, | ||
char const * | name2 | ||
) |
Find a parent CONF_SECTION with name1 and optionally name2.
[in] | ci | The section we're searching in. |
[in] | name1 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name1 value. |
[in] | name2 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name2 value. |
Definition at line 1096 of file cf_util.c.
void _cf_vlog | ( | fr_log_type_t | type, |
CONF_ITEM const * | ci, | ||
char const * | file, | ||
int | line, | ||
char const * | fmt, | ||
va_list | ap | ||
) |
Log an error message relating to a CONF_ITEM.
[in] | type | of log message. |
[in] | ci | CONF_ITEM to print file/lineno for. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | fmt | of the message. |
[in] | ap | Message args. |
Definition at line 2006 of file cf_util.c.
void _cf_vlog_perr | ( | fr_log_type_t | type, |
CONF_ITEM const * | ci, | ||
char const * | file, | ||
int | line, | ||
fr_log_perror_format_t const * | f_rules, | ||
char const * | fmt, | ||
va_list | ap | ||
) |
Log an error message relating to a CONF_ITEM.
Drains the fr_strerror() stack emitting one or more error messages.
[in] | type | of log message. |
[in] | file | src file the log message was generated in. |
[in] | line | number the log message was generated on. |
[in] | ci | CONF_ITEM to print file/lineno for. |
[in] | f_rules | Additional optional formatting controls. |
[in] | fmt | of the message. |
[in] | ap | Message args. |
Definition at line 2068 of file cf_util.c.
void* cf_data_value | ( | CONF_DATA const * | cd | ) |
void cf_item_free_children | ( | CONF_ITEM * | ci | ) |
Determine if CONF_ITEM is a CONF_SECTION.
[in] | ci | to check. |
Definition at line 618 of file cf_util.c.
CONF_SECTION* cf_item_to_section | ( | CONF_ITEM const * | ci | ) |
Cast a CONF_ITEM to a CONF_SECTION.
[in] | ci | to cast. |
Definition at line 684 of file cf_util.c.
CONF_PAIR* cf_pair_alloc | ( | CONF_SECTION * | parent, |
char const * | attr, | ||
char const * | value, | ||
fr_token_t | op, | ||
fr_token_t | lhs_quote, | ||
fr_token_t | rhs_quote | ||
) |
Allocate a CONF_PAIR.
[in] | parent | CONF_SECTION to hang this CONF_PAIR off of. |
[in] | attr | name. |
[in] | value | of CONF_PAIR. |
[in] | op | T_OP_EQ, T_OP_SET etc. |
[in] | lhs_quote | T_BARE_WORD, T_DOUBLE_QUOTED_STRING, T_BACK_QUOTED_STRING. |
[in] | rhs_quote | T_BARE_WORD, T_DOUBLE_QUOTED_STRING, T_BACK_QUOTED_STRING. |
Definition at line 1279 of file cf_util.c.
char const* cf_pair_attr | ( | CONF_PAIR const * | pair | ) |
fr_token_t cf_pair_attr_quote | ( | CONF_PAIR const * | pair | ) |
Return the value (lhs) quoting of a pair.
pair | to extract value type from. |
Definition at line 1623 of file cf_util.c.
unsigned int cf_pair_count | ( | CONF_SECTION const * | cs, |
char const * | attr | ||
) |
Count the number of times an attribute occurs in a parent section.
[in] | cs | to search for items in. |
[in] | attr | to search for. |
Definition at line 1520 of file cf_util.c.
unsigned int cf_pair_count_descendents | ( | CONF_SECTION const * | cs | ) |
void cf_pair_debug | ( | CONF_PAIR * | cp | ) |
CONF_PAIR* cf_pair_dup | ( | CONF_SECTION * | parent, |
CONF_PAIR * | cp, | ||
bool | copy_meta | ||
) |
Duplicate a CONF_PAIR.
parent | to allocate new pair in. |
cp | to duplicate. |
copy_meta | Copy additional meta data for a pair |
Definition at line 1321 of file cf_util.c.
CONF_PAIR* cf_pair_find | ( | CONF_SECTION const * | cs, |
char const * | attr | ||
) |
CONF_PAIR* cf_pair_find_in_parent | ( | CONF_SECTION const * | cs, |
char const * | attr | ||
) |
Find a pair with a name matching attr in the specified section or one of its parents.
[in] | cs | to search in. Will start in the current section and work upwards. |
[in] | attr | to find. |
Definition at line 1467 of file cf_util.c.
CONF_PAIR* cf_pair_find_next | ( | CONF_SECTION const * | cs, |
CONF_PAIR const * | prev, | ||
char const * | attr | ||
) |
Find a pair with a name matching attr, after specified pair.
[in] | cs | to search in. |
[in] | prev | Pair to search from (may be NULL). |
[in] | attr | to find (may be NULL in which case any attribute matches). |
Definition at line 1453 of file cf_util.c.
CONF_PAIR* cf_pair_first | ( | CONF_SECTION const * | cs | ) |
int cf_pair_in_table | ( | int32_t * | out, |
fr_table_num_sorted_t const * | table, | ||
size_t | table_len, | ||
CONF_PAIR * | cp | ||
) |
Check to see if the CONF_PAIR value is present in the specified table.
If it's not present, return an error and produce a helpful log message
[out] | out | The result of parsing the pair value. |
[in] | table | to look for string values in. |
[in] | table_len | Length of the table. |
[in] | cp | to parse. |
Definition at line 1966 of file cf_util.c.
void cf_pair_mark_parsed | ( | CONF_PAIR * | cp | ) |
CONF_PAIR* cf_pair_next | ( | CONF_SECTION const * | cs, |
CONF_PAIR const * | curr | ||
) |
fr_token_t cf_pair_operator | ( | CONF_PAIR const * | pair | ) |
CONF_PAIR* cf_pair_prev | ( | CONF_SECTION const * | cs, |
CONF_PAIR const * | curr | ||
) |
int cf_pair_replace | ( | CONF_SECTION * | cs, |
CONF_PAIR * | cp, | ||
char const * | value | ||
) |
Replace pair in a given section with a new pair, of the given value.
[in] | cs | to replace pair in. |
[in] | cp | to replace. |
[in] | value | New value to assign to cp. |
Definition at line 1350 of file cf_util.c.
char const* cf_pair_value | ( | CONF_PAIR const * | pair | ) |
fr_token_t cf_pair_value_quote | ( | CONF_PAIR const * | pair | ) |
Return the value (rhs) quoting of a pair.
pair | to extract value type from. |
Definition at line 1638 of file cf_util.c.
fr_slen_t cf_pair_values_concat | ( | fr_sbuff_t * | out, |
CONF_SECTION const * | cs, | ||
char const * | attr, | ||
char const * | sep | ||
) |
Concatenate the values of any pairs with name attr.
[out] | out | where to write the concatenated values. |
[in] | cs | to search in. |
[in] | attr | to search for. |
[in] | sep | to use to separate values |
Definition at line 1540 of file cf_util.c.
void cf_section_add_name2_quote | ( | CONF_SECTION * | cs, |
fr_token_t | token | ||
) |
char const* cf_section_argv | ( | CONF_SECTION const * | cs, |
int | argc | ||
) |
fr_token_t cf_section_argv_quote | ( | CONF_SECTION const * | cs, |
int | argc | ||
) |
Return the quoting for one of the variadic arguments.
[in] | cs | containing the arguments. |
[in] | argc | Argument index. Note name1 and name2 are not counted in this index. |
Definition at line 1260 of file cf_util.c.
void cf_section_debug | ( | CONF_SECTION * | cs | ) |
CONF_SECTION* cf_section_dup | ( | TALLOC_CTX * | ctx, |
CONF_SECTION * | parent, | ||
CONF_SECTION const * | cs, | ||
char const * | name1, | ||
char const * | name2, | ||
bool | copy_meta | ||
) |
Duplicate a configuration section.
[in] | ctx | to allocate memory in. |
[in] | parent | section (may be NULL). |
[in] | cs | to duplicate. |
[in] | name1 | of new section. |
[in] | name2 | of new section. |
[in] | copy_meta | Copy additional meta data for a section (like template, base, depth, parsed state, and variables). |
Definition at line 928 of file cf_util.c.
CONF_SECTION* cf_section_find | ( | CONF_SECTION const * | cs, |
char const * | name1, | ||
char const * | name2 | ||
) |
Find a CONF_SECTION with name1 and optionally name2.
[in] | cs | The section we're searching in. |
[in] | name1 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name1 value. |
[in] | name2 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name2 value. |
Definition at line 1028 of file cf_util.c.
CONF_SECTION* cf_section_find_next | ( | CONF_SECTION const * | cs, |
CONF_SECTION const * | prev, | ||
char const * | name1, | ||
char const * | name2 | ||
) |
Return the next matching section.
[in] | cs | The section we're searching in. |
[in] | prev | section we found. May be NULL in which case we just return the next section after prev. |
[in] | name1 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name1 value. |
[in] | name2 | of the section we're searching for. Special value CF_IDENT_ANY can be used to match any name2 value. |
Definition at line 1049 of file cf_util.c.
CONF_SECTION* cf_section_first | ( | CONF_SECTION const * | cs | ) |
char const* cf_section_name | ( | CONF_SECTION const * | cs | ) |
char const* cf_section_name1 | ( | CONF_SECTION const * | cs | ) |
Return the second identifier of a CONF_SECTION.
[in] | cs | to return identifiers for. |
char const* cf_section_name2 | ( | CONF_SECTION const * | cs | ) |
Return the second identifier of a CONF_SECTION.
[in] | cs | to return identifiers for. |
fr_token_t cf_section_name2_quote | ( | CONF_SECTION const * | cs | ) |
Return the quoting of the name2 identifier.
[in] | cs | containing name2. |
Definition at line 1230 of file cf_util.c.
int8_t cf_section_name_cmp | ( | CONF_SECTION const * | cs, |
char const * | name1, | ||
char const * | name2 | ||
) |
Check if a given section matches the specified name1/name2 identifiers.
[in] | cs | to check. |
[in] | name1 | identifier. May be CF_IDENT_ANY for wildcard matches. |
[in] | name2 | identifier. May be CF_IDENT_ANY for wildcard matches. |
Definition at line 1139 of file cf_util.c.
CONF_SECTION* cf_section_next | ( | CONF_SECTION const * | cs, |
CONF_SECTION const * | curr | ||
) |
Return the next child that's a CONF_SECTION.
[in] | cs | to return children from. |
[in] | curr | child to start searching from. |
Definition at line 997 of file cf_util.c.
CONF_SECTION* cf_section_prev | ( | CONF_SECTION const * | cs, |
CONF_SECTION const * | curr | ||
) |
Return the previous child that's a CONF_SECTION.
[in] | cs | to return children from. |
[in] | curr | child to start searching from. |
Definition at line 1010 of file cf_util.c.
CONF_ITEM* cf_section_to_item | ( | CONF_SECTION const * | cs | ) |
Cast a CONF_SECTION to a CONF_ITEM.
[in] | cs | to cast. |
char const* cf_section_value_find | ( | CONF_SECTION const * | cs, |
char const * | attr | ||
) |
Find a pair in a CONF_SECTION.
[in] | cs | the CONF_SECTION to search in. |
[in] | attr | to search for. |
Definition at line 1120 of file cf_util.c.