FR_DICT_ATTR_OID_PRINT_RETURN(&our_out, NULL, da, false);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
}
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Return the attr of a #CONF_PAIR
}
fr_sbuff_terminate(&our_out);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
fr_sbuff_marker(opd_start, in);
fr_sbuff_set(opd_start, &m);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Tokenize a conditional check
*out = c;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/*
cond_reparent(*head, NULL);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Initialise a cond iterator
MAP_VERIFY(map);
*out = map;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
static int _map_afrom_cs(TALLOC_CTX *ctx, map_list_t *out, map_t *parent, CONF_SECTION *cs,
*/
if ((map->op == T_OP_CMP_TRUE) || (map->op == T_OP_CMP_FALSE)) {
FR_SBUFF_IN_STRCPY_RETURN(&our_out, "ANY");
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/*
*/
FR_SBUFF_RETURN(tmpl_print_quoted, &our_out, map->rhs, TMPL_ATTR_REF_PREFIX_YES);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/*
goto error; /* Leave marker at the end */
}
- return fr_sbuff_set(in, &m);
+ FR_SBUFF_SET_RETURN(in, &m);
}
*/
if (!fr_sbuff_next_if_char(&our_name, ']')) goto missing_closing;
- return fr_sbuff_set(name, &our_name);
+ FR_SBUFF_SET_RETURN(name, &our_name);
}
/** Parse an unresolved attribute, i.e. one which can't be found in the current dictionary
TMPL_VERIFY(vpt); /* Because we want to ensure we produced something sane */
*out = vpt;
- return fr_sbuff_set(name, &our_name);
+ FR_SBUFF_SET_RETURN(name, &our_name);
}
/** Parse a string into a TMPL_TYPE_ATTR_* or #TMPL_TYPE_LIST type #tmpl_t
TMPL_VERIFY(vpt);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Parse a truth value
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Parse bareword as an octet string
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Parse bareword as an IPv4 address or prefix
}
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Parse bareword as an IPv6 address or prefix
}
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Try and parse signed or unsigned integers
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
static ssize_t tmpl_afrom_float_substr(TALLOC_CTX *ctx, tmpl_t **out, fr_sbuff_t *in,
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
static ssize_t tmpl_afrom_time_delta(TALLOC_CTX *ctx, tmpl_t **out, fr_sbuff_t *in,
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Convert an arbitrary string into a #tmpl_t
TMPL_VERIFY(vpt);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/*
done_bareword:
TMPL_VERIFY(*out);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
fr_assert(!*out);
}
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
case T_SINGLE_QUOTED_STRING:
/*
TMPL_VERIFY(vpt);
*out = vpt;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Copy a tmpl
if (rules) rules->cast = cast;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Set a cast for a tmpl
if (rr) FR_SBUFF_IN_CHAR_RETURN(&our_out, '.');
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Print an attribute or list #tmpl_t to a string
if (tmpl_attr_list_next(&vpt->data.attribute.ar, ar)) FR_SBUFF_IN_CHAR_RETURN(&our_out, '.');
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Print a #tmpl_t to a string
break;
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Print a #tmpl_t to a string with quotes
*/
if (vpt->type & TMPL_FLAG_REGEX) FR_SBUFF_RETURN(regex_flags_print, &our_out, tmpl_regex_flags(vpt));
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** @} */
*out = unary;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Allocate a specific cast node.
}
fr_sbuff_adv_past_whitespace(&our_in, SIZE_MAX, NULL);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/*
*out = node;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
done:
*out = node;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/*
if (slen == 0) {
fr_assert(lhs == NULL);
*out = NULL;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
redo:
if (fr_sbuff_extend(&our_in) == 0) {
done:
*out = lhs;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/*
*out = head;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Tokenize an xlat expansion into a series of XLAT_TYPE_CHILD arguments
*out = head;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Tokenize an xlat expansion
*out = head;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Check to see if the expansion consists entirely of value-box elements
fr_sbuff_terminate(&our_out); /* Ensure this is terminated, even on zero length input */
fr_dbuff_set(in, &our_in);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Decode base16 encoded input
fr_sbuff_terminate(&our_out); /* Ensure this is terminated, even on zero length input */
fr_dbuff_set(in, &our_in);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/* Decode base32 encoded input
fr_sbuff_terminate(&our_out); /* Ensure this is terminated, even on zero length input */
fr_dbuff_set(in, &our_in);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/* Decode base64 encoded input array.
fr_sbuff_trim(&our_out, (bool[UINT8_MAX + 1]){ [','] = true });
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Build the da_stack for the specified DA and encode the path by name in OID form
FR_SBUFF_IN_STRCPY_RETURN(&our_out, da_stack.da[i]->name);
}
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
typedef struct {
if (err) *err = FR_DICT_ATTR_OK;
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
/*
* This is what we want... Everything
*out = n;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Fixup the parent of an unknown attribute using an equivalent known attribute
*out = child;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Resolve an attribute using an OID string
if (!fr_sbuff_next_if_char(&our_in, '.')) break;
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Resolve an attribute using an OID string
*out = dict;
- return fr_sbuff_set(name, &our_name);
+ FR_SBUFF_SET_RETURN(name, &our_name);
}
/** Look up a protocol name embedded in another string
(void)func(&our_err, out, fr_dict_root(dict_def), &our_in, tt);
switch (our_err) {
case FR_DICT_ATTR_OK:
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
case FR_DICT_ATTR_NOTFOUND:
if (!internal && !foreign) goto error;
(void)func(&our_err, out, fr_dict_root(dict_gctx->internal), &our_in, tt);
switch (our_err) {
case FR_DICT_ATTR_OK:
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
case FR_DICT_ATTR_NOTFOUND:
if (!foreign) goto error;
(void)func(&our_err, out, fr_dict_root(dict), &our_in, tt);
switch (our_err) {
case FR_DICT_ATTR_OK:
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
case FR_DICT_ATTR_NOTFOUND:
continue;
if (dict_attr_search(&our_err, out, initial, &our_in, tt, internal, foreign, func) < 0) goto error;
if (err) *err = FR_DICT_ATTR_OK;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Locate a qualified #fr_dict_attr_t by its name and a dictionary qualifier
*out = da;
if (err) *err = FR_DICT_ATTR_OK;
- return fr_sbuff_set(name, &our_name);
+ FR_SBUFF_SET_RETURN(name, &our_name);
}
/* Internal version of fr_dict_attr_by_name
if (found) {
*out = found;
- return fr_sbuff_set(in, found_len);
+ FR_SBUFF_SET_RETURN(in, found_len);
}
return 0;
if (err) *err = FR_SBUFF_PARSE_OK;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
int dict_dlopen(fr_dict_t *dict, char const *name)
}
FR_SBUFF_IN_CHAR_RETURN(&our_out, ' ', '}');
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
/*
* For simple types just print the box
FR_SBUFF_IN_CHAR_RETURN(&our_out, ' ');
FR_SBUFF_RETURN(fr_pair_print_value_quoted, &our_out, vp, T_DOUBLE_QUOTED_STRING);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Print one attribute and value to FP
#undef DO_REGEX_FLAG
default:
- if (fr_sbuff_is_terminal(&our_in, terminals)) return fr_sbuff_set(in, &our_in);
+ if (fr_sbuff_is_terminal(&our_in, terminals)) FR_SBUFF_SET_RETURN(in, &our_in);
fr_strerror_printf("Unsupported regex flag '%c'", *our_in.p);
if (err) *err = -1;
}
fr_sbuff_advance(&our_in, 1);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
/** Print the flags
DO_REGEX_FLAG(extended, 'x');
#undef DO_REGEX_FLAG
- return fr_sbuff_set(sbuff, &our_sbuff);
+ FR_SBUFF_SET_RETURN(sbuff, &our_sbuff);
}
#endif
fr_sbuff_advance(&our_in, copied);
} while (fr_sbuff_used_total(&our_in) < len);
- return fr_sbuff_set(in, &our_in); /* in was pinned, so this works */
+ FR_SBUFF_SET_RETURN(in, &our_in); /* in was pinned, so this works */
}
/** Copy as many allowed characters as possible from a sbuff to a sbuff
case 't':
if (fr_sbuff_adv_past_strcase_literal(&our_in, "true")) {
*out = true;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
break;
case 'f':
if (fr_sbuff_adv_past_strcase_literal(&our_in, "false")) {
*out = false;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
break;
case 'y':
if (fr_sbuff_adv_past_strcase_literal(&our_in, "yes")) {
*out = true;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
break;
case 'n':
if (fr_sbuff_adv_past_strcase_literal(&our_in, "no")) {
*out = false;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
break;
}
FR_SBUFF_IN_CHAR_RETURN(&our_sbuff, *p++);
}
- return fr_sbuff_set(sbuff, &our_sbuff);
+ FR_SBUFF_SET_RETURN(sbuff, &our_sbuff);
}
/** Print an escaped string to an sbuff taking a talloced buffer as input
size_t : (fr_sbuff_start(_dst) + (uintptr_t)(_src)) \
))
+/** Set an sbuff to a given position, and return how much it was advanced
+ *
+ * @param[in] _dst to modify.
+ * @param[in] _src position to set it too.
+ * @return The number of bytes _dst was advanced.
+ */
+#define FR_SBUFF_SET_RETURN(_dst, _src) return fr_sbuff_set(_dst, _src)
+
/** Advance position in sbuff by N bytes
*
* @param[in] _sbuff_or_marker to advance.
done:
*out = (size_t)size;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
typedef struct {
}
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Callback to free the autofree ctx on global exit
*out = fr_time_delta_wrap(tmp);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
/*
* It's timestamp format
*
if (negative) integer = -(integer);
*out = fr_time_delta_from_sec(integer);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
/*
* Nothing fancy here it's just a time delta as an integer
*
*out = fr_time_delta_from_integer(&overflow, integer, res);
if (overflow) goto overflow;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
}
q++; /* to account for q-- above */
}
- return fr_sbuff_set(out, q);
+ FR_SBUFF_SET_RETURN(out, q);
}
DIAG_OFF(format-nonliteral)
if (res == FR_TIME_RES_SEC) {
len = strftime(buf, sizeof(buf), "%b %e %Y %H:%M:%S UTC", &s_tm);
FR_SBUFF_IN_BSTRNCPY_RETURN(&our_out, buf, len);
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
len = strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", &s_tm);
FR_SBUFF_IN_CHAR_RETURN(&our_out, 'Z');
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
*/
if (fr_value_box_cast(ctx, dst, dst_type, dst_enumv, enumv->value) < 0) return -1;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
parse:
fr_value_box_bstrndup(ctx, dst, dst_enumv,
fr_sbuff_start(unescaped), fr_sbuff_used(unescaped), tainted);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
/* raw octets: 0x01020304... */
case FR_TYPE_OCTETS:
(uint8_t *)fr_sbuff_start(unescaped),
fr_sbuff_used(unescaped), tainted);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
fr_sbuff_marker(&hex_start, &our_in); /* Record where the hexits start */
hex_len = fr_sbuff_adv_past_allowed(&our_in, SIZE_MAX, sbuff_char_class_hex, rules->terminals);
if (hex_len == 0) {
if (fr_value_box_memdup(ctx, dst, dst_enumv, (uint8_t[]){ 0x00 }, 0, tainted) < 0) return -1;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
if ((hex_len & 0x01) != 0) {
FR_SBUFF_ERROR_RETURN(&our_in);
}
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
case FR_TYPE_IPV4_ADDR:
fr_dbuff_in_memcpy(&dbuff, ((uint8_t *) &num) + 2, sizeof(dst->vb_ether));
fr_value_box_ethernet_addr(dst, dst_enumv, ðer, tainted);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
fr_sbuff_set_to_start(&our_in);
/* coverity[uninit_use_in_call] */
fr_value_box_ethernet_addr(dst, dst_enumv, ðer, tainted);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
case FR_TYPE_TIME_DELTA:
dst_enumv ? dst_enumv->flags.flag_time_res : FR_TIME_RES_SEC,
false, rules->terminals);
if (slen < 0) return slen;
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
case FR_TYPE_NULL:
if (!rules->escapes && fr_sbuff_adv_past_str_literal(in, "NULL")) {
fr_value_box_init(dst, dst_type, dst_enumv, tainted);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
fr_strerror_const("String value was not NULL");
dst->enumv = dst_enumv;
fr_dlist_entry_init(&dst->entry);
- return fr_sbuff_set(in, &our_in);
+ FR_SBUFF_SET_RETURN(in, &our_in);
}
ssize_t fr_value_box_from_str(TALLOC_CTX *ctx, fr_value_box_t *dst,
}
done:
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Print one boxed value to a string with quotes (where needed)
return fr_value_box_print(out, data, NULL);
}
- return fr_sbuff_set(out, &our_out);
+ FR_SBUFF_SET_RETURN(out, &our_out);
}
/** Concatenate a list of value boxes together
if (vb_should_free(proc_action)) talloc_free(vb);
}}
- return fr_sbuff_set(sbuff, &our_sbuff);
+ FR_SBUFF_SET_RETURN(sbuff, &our_sbuff);
}
/** Concatenate a list of value boxes together