#include <freeradius-devel/util/struct.h>
#include <freeradius-devel/util/encode.h>
+#include <freeradius-devel/io/pair.h>
/** Convert a STRUCT to one or more VPs
*
if (!vp) {
fr_strerror_printf("%s: Can't encode empty struct", __FUNCTION__);
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
PAIR_VERIFY(vp);
if (parent->type != FR_TYPE_STRUCT) {
fr_strerror_printf("%s: Expected type \"struct\" got \"%s\"", __FUNCTION__,
fr_type_to_str(parent->type));
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
/*
if (vp && (vp->da->parent != parent)) {
fr_strerror_printf("%s: struct encoding is missing previous attributes (parent %s, expecting %s)",
__FUNCTION__, vp->da->parent->name, parent->name);
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
key_da = NULL;
default:
fr_strerror_const("Invalid bit field");
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
offset = put_bits_dbuff(&work_dbuff, &bit_buffer, offset, child->flags.length, value);
if (offset != 0) {
leftover_bits:
fr_strerror_const("leftover bits");
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
/*
/*
* Determine the nested type and call the appropriate encoder
*/
- if (fr_value_box_to_network(&work_dbuff, &vp->data) <= 0) return -1;
+ if (fr_value_box_to_network(&work_dbuff, &vp->data) <= 0) return PAIR_ENCODE_FATAL_ERROR;
do {
vp = fr_dcursor_next(cursor);
*/
if ((vp->da->parent == key_da) &&
(vp->vp_type != FR_TYPE_TLV)) {
- if (fr_value_box_to_network(&work_dbuff, &vp->data) <= 0) return -1;
+ if (fr_value_box_to_network(&work_dbuff, &vp->data) <= 0) return PAIR_ENCODE_FATAL_ERROR;
(void) fr_dcursor_next(cursor);
goto done;
}
if (!encode_cursor) {
fr_strerror_printf("Asked to encode child attribute %s, but we were not passed an encoding function",
tlv->name);
- return -1;
+ return PAIR_ENCODE_FATAL_ERROR;
}
fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
length += da_length_offset(parent);
- if (length > UINT8_MAX) return -1;
+ if (length > UINT8_MAX) return PAIR_ENCODE_FATAL_ERROR;
(void) fr_dbuff_in(&hdr, (uint8_t) length);
} else {
length += da_length_offset(parent);
- if (length > UINT16_MAX) return -1;
+ if (length > UINT16_MAX) return PAIR_ENCODE_FATAL_ERROR;
(void) fr_dbuff_in(&hdr, (uint16_t) length);
}