The FreeRADIUS server
$Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
Functions for building and managing the structure of internal format config items. More...
#include <string.h>
#include <freeradius-devel/server/cf_file.h>
#include <freeradius-devel/server/cf_priv.h>
#include <freeradius-devel/server/cf_util.h>
#include <freeradius-devel/server/log.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/util/atexit.h>
Go to the source code of this file.
Macros | |
#define | FILENAME_TRUNCATE 60 |
#define | IS_WILDCARD(_ident) (_ident == CF_IDENT_ANY) |
Functions | |
static int | _cd_free (CONF_DATA *cd) |
Free user data associated with CONF_DATA. More... | |
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 do_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 *parent, 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 *ci, char const *filename) |
Set the filename of a CONF_ITEM. More... | |
static int8_t | _cf_ident1_cmp (void const *one, void const *two) |
Compare the first identifier of a child. More... | |
static int8_t | _cf_ident2_cmp (void const *a, void const *b) |
Compare the first and second identifiers of a child. 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 *curr) |
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 *ci, 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... | |
static int | _cf_section_free (CONF_SECTION *cs) |
Free a section and associated trees. 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... | |
static void | _pair_count (int *count, CONF_SECTION const *cs) |
Callback to determine the number of pairs in a section. More... | |
static CONF_DATA * | cf_data_alloc (CONF_ITEM *parent, void const *data, char const *type, char const *name, bool do_free) |
Allocate a new user data container. More... | |
CONF_ITEM * | cf_data_to_item (CONF_DATA const *cd) |
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... | |
static CONF_ITEM * | cf_find (CONF_ITEM const *parent, CONF_ITEM_TYPE type, char const *ident1, char const *ident2) |
Return the next child that's of the specified type with the specified identifiers. More... | |
static CONF_ITEM * | cf_find_next (CONF_ITEM const *parent, CONF_ITEM const *prev, CONF_ITEM_TYPE type, char const *ident1, char const *ident2) |
Return the next child that's of the specified type with the specified identifiers. More... | |
static int8_t | cf_ident2_cmp (void const *one, void const *two) |
Compare only the second identifier of a child. More... | |
void | cf_item_free_children (CONF_ITEM *ci) |
static void | cf_item_init (CONF_ITEM *ci, CONF_ITEM_TYPE type, CONF_ITEM *parent, char const *filename, int lineno) |
Initialize a CONF_ITEM, so we don't have repeated code. More... | |
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... | |
static CONF_ITEM * | cf_next (CONF_ITEM const *parent, CONF_ITEM const *current, CONF_ITEM_TYPE type) |
Return the next child that's of the specified type. More... | |
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. 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 *attr) |
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 *attr) |
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 *out, CONF_SECTION const *cs, char const *attr, char const *sep) |
Concatenate the values of any pairs with name attr. More... | |
static CONF_ITEM * | cf_prev (CONF_ITEM const *parent, CONF_ITEM const *current, CONF_ITEM_TYPE type) |
Return the previos child that's of the specified type. 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 *prev, 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 *cs, char const *attr) |
Find a pair in a CONF_SECTION. More... | |
static void | truncate_filename (char const **e, char const **p, int *len, char const *filename) |
Functions for building and managing the structure of internal format config items.
Definition in file cf_util.c.
#define FILENAME_TRUNCATE 60 |
#define IS_WILDCARD | ( | _ident | ) | (_ident == CF_IDENT_ANY) |
|
static |
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 | ||
) |
|
inlinestatic |
Compare the first identifier of a child.
For CONF_ITEM_PAIR this is 'attr'. For CONF_ITEM_SECTION this is 'name1'. For CONF_ITEM_DATA this is 'type'.
[in] | one | First CONF_ITEM to compare. |
[in] | two | Second CONF_ITEM to compare. |
Definition at line 260 of file cf_util.c.
|
static |
Compare the first and second identifiers of a child.
For CONF_ITEM_SECTION this is 'name2'. For CONF_ITEM_DATA this is 'name'.
[in] | a | First CONF_ITEM to compare. |
[in] | b | Second CONF_ITEM to compare. |
Definition at line 367 of file cf_util.c.
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.
|
static |
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.
|
static |
|
static |
Allocate a new user data container.
[in] | parent | CONF_PAIR, or CONF_SECTION to hang CONF_DATA off of. |
[in] | data | being added. |
[in] | type | of data being added. |
[in] | name | String identifier of the user data. |
[in] | do_free | function, called when the parent CONF_SECTION is being freed. |
Definition at line 1670 of file cf_util.c.
void* cf_data_value | ( | CONF_DATA const * | cd | ) |
|
static |
Return the next child that's of the specified type with the specified identifiers.
[in] | parent | The section we're searching in. |
[in] | type | of CONF_ITEM we're searching for. |
[in] | ident1 | The first identifier. |
[in] | ident2 | The second identifier. Special value CF_IDENT_ANY can be used to match any ident2 value. |
Definition at line 89 of file cf_util.c.
|
static |
Return the next child that's of the specified type with the specified identifiers.
[in] | parent | The section we're searching in. |
[in] | prev | item we found, or NULL to start from the beginning. |
[in] | type | of CONF_ITEM we're searching for. |
[in] | ident1 | The first identifier. |
[in] | ident2 | The second identifier. Special value CF_IDENT_ANY can be used to match any ident2 value. |
Definition at line 176 of file cf_util.c.
|
inlinestatic |
Compare only the second identifier of a child.
For CONF_ITEM_SECTION this is 'name2'. For CONF_ITEM_DATA this is 'name'.
[in] | one | First CONF_ITEM to compare. |
[in] | two | Second CONF_ITEM to compare. |
Definition at line 317 of file cf_util.c.
void cf_item_free_children | ( | CONF_ITEM * | ci | ) |
|
static |
Initialize a CONF_ITEM, so we don't have repeated code.
[in] | ci | the CONF_ITEM to initialize |
[in] | type | the type to set |
[in] | parent | the parent node hosting this one |
[in] | filename | which caused this node to be created |
[in] | lineno | where in the filename |
Definition at line 540 of file cf_util.c.
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.
|
static |
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.
|
inlinestatic |
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.