#include <freeradius-devel/util/dcursor.h>
#include <freeradius-devel/util/time.h>
+#include <math.h>
+
/** Sanity checks
*
* There should never be an instance where these fail.
NULL, src->tainted);
case FR_TYPE_OCTETS:
+ /*
+ * This is really "bool from network"
+ */
return fr_value_box_fixed_size_from_octets(dst, dst_type, dst_enumv, src);
default:
dst->vb_bool = (src->vb_uint64 != 0);
break;
+ case FR_TYPE_SIZE:
+ dst->vb_bool = (src->vb_size != 0);
+ break;
+
+ case FR_TYPE_TIME_DELTA:
+ dst->vb_bool = (fr_time_delta_unwrap(src->vb_time_delta) != 0);
+ break;
+
+ case FR_TYPE_FLOAT32:
+ dst->vb_bool = (fpclassify(src->vb_float32) == FP_ZERO);
+ break;
+
+ case FR_TYPE_FLOAT64:
+ dst->vb_bool = (fpclassify(src->vb_float64) == FP_ZERO);
+ break;
+
default:
fr_strerror_printf("Invalid cast from %s to %s. Unsupported",
fr_table_str_by_value(fr_value_box_type_table, src->type, "<INVALID>"),