size_t count = 0;
CONF_PAIR *cp, *dflt_cp = NULL;
- char const *name = rule->name;
unsigned int type = rule->type;
char const *dflt = rule->dflt;
FR_TOKEN dflt_quote = rule->quote;
/*
* Easier than re-allocing
*/
- for (cp = first = cf_pair_find(cs, name);
+ for (cp = first = cf_pair_find(cs, rule->name);
cp;
- cp = cf_pair_find_next(cs, cp, name)) count++;
+ cp = cf_pair_find_next(cs, cp, rule->name)) count++;
/*
* Multivalued, but there's no value, create a
if (!dflt) {
if (required) {
need_value:
- cf_log_err(cs, "Configuration item \"%s\" must have a value", name);
+ cf_log_err(cs, "Configuration item \"%s\" must have a value", rule->name);
return -1;
}
return 1;
}
- if (cf_pair_default(&dflt_cp, cs, name, type, dflt, dflt_quote) < 0) return -1;
+ if (cf_pair_default(&dflt_cp, cs, rule->name, type, dflt, dflt_quote) < 0) return -1;
cp = dflt_cp;
count = 1; /* Need one to hold the default */
} else {
return -1;
}
- for (i = 0; i < count; i++, cp = cf_pair_find_next(cs, cp, name)) {
+ for (i = 0; i < count; i++, cp = cf_pair_find_next(cs, cp, rule->name)) {
cf_parse_t func = cf_pair_parse_value;
if (rule->func) func = rule->func;
CONF_PAIR *next;
cf_parse_t func = cf_pair_parse_value;
- cp = cf_pair_find(cs, name);
+ cp = cf_pair_find(cs, rule->name);
if (!cp) {
if (deprecated) return 0;
if (!dflt) {
return 1;
}
- if (cf_pair_default(&dflt_cp, cs, name, type, dflt, dflt_quote) < 0) return -1;
+ if (cf_pair_default(&dflt_cp, cs, rule->name, type, dflt, dflt_quote) < 0) return -1;
cp = dflt_cp;
}
- next = cf_pair_find_next(cs, cp, name);
+ next = cf_pair_find_next(cs, cp, rule->name);
if (next) {
- cf_log_err(&(next->item), "Invalid duplicate configuration item '%s'", name);
+ cf_log_err(&(next->item), "Invalid duplicate configuration item '%s'", rule->name);
return -1;
}
if (!rule->dflt) return 0;
- subcs = cf_section_find(cs, rule->name, NULL);
+ subcs = cf_section_find(cs, rule->name, rule->ident2);
if (!subcs && (rule->type & FR_TYPE_REQUIRED)) {
cf_log_err(cs, "Missing %s {} subsection", rule->name);
return -1;
*/
if (!subcs) {
if (DEBUG_ENABLED4) cf_log_debug(cs, "Allocating fake section \"%s\"", rule->name);
- subcs = cf_section_alloc(cs, rule->name, NULL);
+ subcs = cf_section_alloc(cs, rule->name, rule->ident2);
if (!subcs) return -1;
cf_item_add(cs, &(subcs->item));
CONF_SECTION *subcs = NULL;
int count = 0, i = 0, ret;
- char const *name = rule->name;
fr_type_t type = rule->type;
size_t subcs_size = rule->subcs_size;
CONF_PARSER const *rules = rule->subcs;
rad_assert(type & FR_TYPE_SUBSECTION);
- subcs = cf_section_find(cs, name, NULL);
+ subcs = cf_section_find(cs, rule->name, rule->ident2);
if (!subcs) return 0;
/*
/*
* Handle the multi subsection case (which is harder)
*/
- while ((subcs = cf_section_find_next(cs, subcs, name, NULL))) count++;
subcs = NULL;
+ while ((subcs = cf_section_find_next(cs, subcs, rule->name, rule->ident2))) count++;
/*
* Allocate an array to hold the subsections
* so that they can be used as talloc contexts and we can
* keep the talloc hierarchy clean.
*/
- for (subcs = cf_section_find(cs, name, NULL), i = 0;
- subcs;
- subcs = cf_section_find_next(cs, subcs, name, NULL), i++) {
subcs = NULL;
+ while ((subcs = cf_section_find_next(cs, subcs, rule->name, rule->ident2))) {
uint8_t *buff = NULL;
if (DEBUG_ENABLED4) cf_log_debug(cs, "Evaluating rules for %s[%i] section. Output %p",
CONF_PAIR *cp;
CONF_PARSER *rule;
void *data;
-
- char const *name;
int type;
rule = cf_data_value(rule_cd);
- name = rule->name;
type = rule->type;
is_tmpl = (type & FR_TYPE_TMPL);
is_xlat = (type & FR_TYPE_XLAT);
*/
if (type == FR_TYPE_SUBSECTION) {
uint8_t *subcs_base;
- CONF_SECTION *subcs = cf_section_find(cs, name, NULL);
+ CONF_SECTION *subcs = cf_section_find(cs, rule->name, rule->ident2);
/*
* Select base by whether this is a nested struct,
* Find the CONF_PAIR, may still not exist if there was
* no default set for the CONF_PARSER.
*/
- cp = cf_pair_find(cs, name);
+ cp = cf_pair_find(cs, rule->name);
if (!cp) continue;
/*