vp != NULL;
vp = fr_pair_list_next(&request->request_pairs, vp)) {
if (!flag_encrypted(&vp->da->flags)) {
- switch (vp->da->type) {
+ switch (vp->vp_type) {
default:
break;
if (values[i]->bv_len == 0) continue;
if (pair_append_by_tmpl_parent(sync_packet_ctx, &vp, pairs, map->lhs, true) < 0) break;
- if (fr_value_box_from_str(vp, &vp->data, vp->da->type, NULL, values[i]->bv_val,
+ if (fr_value_box_from_str(vp, &vp->data, vp->vp_type, NULL, values[i]->bv_val,
values[i]->bv_len, NULL, true) < 0) {
fr_pair_remove(pairs, vp);
talloc_free(vp);
vp != NULL;
vp = fr_pair_list_next(&request->request_pairs, vp)) {
if (!flag_encrypted(&vp->da->flags)) {
- switch (vp->da->type) {
+ switch (vp->vp_type) {
default:
break;
vp != NULL;
vp = fr_pair_list_next(&request->request_pairs, vp)) {
if (!vp->da->flags.subtype) {
- switch (vp->da->type) {
+ switch (vp->vp_type) {
default:
break;
}
}
- ret = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ ret = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(p, (size_t)value_len), value_len, true);
if (ret < 0) {
/*
static_assert(SIZEOF_MEMBER(fr_value_box_t, vb_float64) >= sizeof(double),
"fr_value_box_t field smaller than return from lua_tonumber");
- switch (vp->da->type) {
+ switch (vp->vp_type) {
/*
* Preserve decimal precision.
*
}
- if (fr_value_box_cast(vp, &vp->data, vp->da->type, vp->da, &vb) < 0) {
+ if (fr_value_box_cast(vp, &vp->data, vp->vp_type, vp->da, &vb) < 0) {
RPEDEBUG("Failed unmarshalling Lua number for \"%s\"", vp->da->name);
return -1;
}
fr_value_box_bstrndup_shallow(&vb, NULL, p, len, true);
- if (fr_value_box_cast(vp, &vp->data, vp->da->type, vp->da, &vb) < 0) {
+ if (fr_value_box_cast(vp, &vp->data, vp->vp_type, vp->da, &vb) < 0) {
RPEDEBUG("Failed unmarshalling Lua string for \"%s\"", vp->da->name);
return -1;
}
MEM(vp = fr_pair_afrom_da(my_ctx, da));
vp->op = op;
- if ((vp->da->type == FR_TYPE_TLV) && !*value) {
+ if ((vp->vp_type == FR_TYPE_TLV) && !*value) {
/*
* Allow empty values for TLVs: we just create the value.
*
vp = fr_pair_afrom_da(ctx, parent);
if (!vp) return PAIR_DECODE_OOM;
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(data, data_len), data_len, true);
if (slen < 0) {
talloc_free(vp);
/*
* This has special requirements.
*/
- if ((vp->da->type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
+ if ((vp->vp_type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
slen = fr_struct_to_network(&work_dbuff, da_stack, depth, cursor, encode_ctx, encode_value, NULL);
goto done;
}
PAIR_VERIFY(c);
if (c->da->dict != dict || c->da->flags.internal) continue;
- if (c->da->type == FR_TYPE_BOOL && da_is_bool_exists(c->da) && !c->vp_bool) continue;
+ if (c->vp_type == FR_TYPE_BOOL && da_is_bool_exists(c->da) && !c->vp_bool) continue;
break;
}
return fr_pair_raw_from_network(ctx, out, da, data, 0);
}
- switch (vp->da->type) {
+ switch (vp->vp_type) {
/*
* Doesn't include scope, whereas the generic format can
*/
break;
case FR_TYPE_STRUCTURAL:
- fr_strerror_printf("Cannot decode type '%s' as value", fr_type_to_str(vp->da->type));
+ fr_strerror_printf("Cannot decode type '%s' as value", fr_type_to_str(vp->vp_type));
talloc_free(vp);
return 0;
FALL_THROUGH;
default:
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, da,
&FR_DBUFF_TMP(p, end - p), end - p, true);
if (slen < 0) {
raw:
/*
* Structures are special.
*/
- if ((vp->da->type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
+ if ((vp->vp_type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
slen = fr_struct_to_network(&work_dbuff, da_stack, depth, cursor, encode_ctx, encode_value, encode_cursor);
if (slen <= 0) return slen;
}
}
- fr_assert(fr_type_is_structural(vp->da->type));
+ fr_assert(fr_type_is_structural(vp->vp_type));
fr_pair_dcursor_init(&child_cursor, &vp->vp_group);
work_dbuff = FR_DBUFF(dbuff);
ssize_t len;
fr_dcursor_t vsa_cursor;
- if (vp->da->type != FR_TYPE_VENDOR) continue;
+ if (vp->vp_type != FR_TYPE_VENDOR) continue;
fr_pair_dcursor_init(&vsa_cursor, &vp->vp_group);
* the data type matches the pair, i.e address to prefix
* conversion.
*/
- if (fr_value_box_cast(vp, &vp->data, vp->da->type, vp->da, &netaddr->data) < 0) return -1;
+ if (fr_value_box_cast(vp, &vp->data, vp->vp_type, vp->da, &netaddr->data) < 0) return -1;
} else if (giaddr != htonl(INADDR_ANY)) {
/*
*/
if (fr_value_box_from_network(vp, &box, FR_TYPE_IPV4_ADDR, NULL,
&FR_DBUFF_TMP(data + 24, 4), 4, true) < 0) return -1;
- if (fr_value_box_cast(vp, &vp->data, vp->da->type, vp->da, &box) < 0) return -1;
+ if (fr_value_box_cast(vp, &vp->data, vp->vp_type, vp->da, &box) < 0) return -1;
} else {
/*
*/
if (fr_value_box_from_network(vp, &box, FR_TYPE_IPV4_ADDR, NULL,
&FR_DBUFF_TMP(data + 12, 4), 4, true) < 0) return -1;
- if (fr_value_box_cast(vp, &vp->data, vp->da->type, vp->da, &box) < 0) return -1;
+ if (fr_value_box_cast(vp, &vp->data, vp->vp_type, vp->da, &box) < 0) return -1;
}
fr_pair_append(&tmp, vp);
*/
vp = fr_pair_afrom_da(ctx, attr_hop_count);
if (!vp) goto fail;
- if (fr_value_box_from_network(vp, &vp->data, vp->da->type, NULL,
+ if (fr_value_box_from_network(vp, &vp->data, vp->vp_type, NULL,
&FR_DBUFF_TMP(packet + 1, 1), 1, true) < 0) {
goto fail;
}
vp = fr_pair_afrom_da(ctx, attr_relay_link_address);
if (!vp) goto fail;
- if (fr_value_box_from_network(vp, &vp->data, vp->da->type, NULL,
+ if (fr_value_box_from_network(vp, &vp->data, vp->vp_type, NULL,
&FR_DBUFF_TMP(packet + 2, 16), 16, true) < 0) {
goto fail;
}
vp = fr_pair_afrom_da(ctx, attr_relay_peer_address);
if (!vp) goto fail;
- if (fr_value_box_from_network(vp, &vp->data, vp->da->type, NULL,
+ if (fr_value_box_from_network(vp, &vp->data, vp->vp_type, NULL,
&FR_DBUFF_TMP(packet + 2 + 16, 16), 16, true) < 0) {
goto fail;
}
while ((c = fr_dlist_next(list, c))) {
PAIR_VERIFY(c);
if (c->da->dict != dict || c->da->flags.internal) continue;
- if (c->da->type == FR_TYPE_BOOL && !c->vp_bool) continue;
+ if (c->vp_type == FR_TYPE_BOOL && !c->vp_bool) continue;
break;
}
vp = fr_pair_afrom_da(ctx, parent);
if (!vp) return PAIR_DECODE_OOM;
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(data, data_len), data_len, true);
if (slen < 0) {
talloc_free(vp);
*/
if (data_len < sizeof(vp->vp_ipv6addr)) goto raw;
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(data, sizeof(vp->vp_ipv6addr)), sizeof(vp->vp_ipv6addr), true);
if (slen < 0) {
talloc_free(vp);
vp = fr_pair_afrom_da(ctx, parent);
if (!vp) return PAIR_DECODE_OOM;
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(data, data_len), data_len, true);
if (slen < 0) {
talloc_free(vp);
/*
* Pack multiple attributes into into a single option
*/
- if ((vp->da->type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
+ if ((vp->vp_type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
slen = fr_struct_to_network(&work_dbuff, da_stack, depth, cursor, encode_ctx, encode_value, encode_cursor);
if (slen <= 0) return slen;
}
}
- fr_assert(fr_type_is_structural(vp->da->type));
+ fr_assert(fr_type_is_structural(vp->vp_type));
fr_pair_dcursor_init(&child_cursor, &vp->vp_group);
work_dbuff = FR_DBUFF(dbuff);
vp = fr_pair_afrom_da(ctx, parent);
if (!vp) return PAIR_DECODE_OOM;
- if (fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ if (fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(data, data_len), data_len, true) < 0) {
FR_PROTO_TRACE("failed decoding?");
talloc_free(vp);
/*
* Nested structs
*/
- if (vp->da->type == FR_TYPE_STRUCT) {
+ if (vp->vp_type == FR_TYPE_STRUCT) {
fr_dcursor_t child_cursor;
fr_pair_dcursor_init(&child_cursor, &vp->vp_group);
}
}
- fr_assert(fr_type_is_structural(vp->da->type));
+ fr_assert(fr_type_is_structural(vp->vp_type));
fr_pair_dcursor_init(&child_cursor, &vp->vp_group);
work_dbuff = FR_DBUFF(dbuff);
FR_PROTO_TRACE("encode_rr -- remaining %zd", fr_dbuff_remaining(&work_dbuff));
vp = fr_dcursor_current(cursor);
- if (vp->da->type == FR_TYPE_STRUCT) {
+ if (vp->vp_type == FR_TYPE_STRUCT) {
fr_dcursor_t child_cursor;
fr_pair_dcursor_init(&child_cursor, &vp->vp_group);
/*
* Zero length is fine here
*/
- slen = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ slen = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&work_dbuff, fr_dbuff_len(&work_dbuff), tainted);
if (slen < 0) {
talloc_free(vp);
default:
decode:
- ret = fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ ret = fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(p, data_len), data_len, true);
if (ret < 0) {
/*
/*
* This has special requirements.
*/
- if ((vp->da->type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
+ if ((vp->vp_type == FR_TYPE_STRUCT) || (da->type == FR_TYPE_STRUCT)) {
slen = fr_struct_to_network(&work_dbuff, da_stack, depth, cursor, encode_ctx, encode_value,
encode_tlv);
if (slen < 0) return slen;
* tag, then we always encode a tag byte, even one that
* is zero.
*/
- if ((vp->da->type == FR_TYPE_STRING) && flag_has_tag(&vp->da->flags)) {
+ if ((vp->vp_type == FR_TYPE_STRING) && flag_has_tag(&vp->da->flags)) {
if (packet_ctx->tag) {
FR_DBUFF_IN_RETURN(&work_dbuff, (uint8_t)packet_ctx->tag);
} else if (TAG_VALID(vp->vp_strvalue[0])) {
* same tunnel. Valid values for this field are 0x01 through 0x1F,
* inclusive. If the Tag field is unused, it MUST be zero (0x00).
*/
- if ((vp->da->type == FR_TYPE_UINT32) && flag_has_tag(&vp->da->flags)) {
+ if ((vp->vp_type == FR_TYPE_UINT32) && flag_has_tag(&vp->da->flags)) {
uint8_t msb = 0;
/*
* Only 24bit integers are allowed here
/*
* Tags are *top-level*, and are never nested.
*/
- if (vp->da->type == FR_TYPE_GROUP) {
+ if (vp->vp_type == FR_TYPE_GROUP) {
fr_radius_ctx_t *packet_ctx = encode_ctx;
if (!vp->da->flags.internal ||
/*
* Check for zero-length attributes.
*/
- switch (vp->da->type) {
+ switch (vp->vp_type) {
default:
break;
* Fast path for the common case.
*/
if (vp->da->parent->flags.is_root && !vp->da->flags.subtype) {
- switch (vp->da->type) {
+ switch (vp->vp_type) {
case FR_TYPE_LEAF:
da_stack.da[0] = vp->da;
da_stack.da[1] = NULL;
/*
* Recurse into children.
*/
- if (vp->da->type == FR_TYPE_VENDOR) {
+ if (vp->vp_type == FR_TYPE_VENDOR) {
arg_cnt += tacacs_encode_body_arg_cnt(&vp->vp_group, NULL);
continue;
}
FR_PROTO_TRACE("arg[%d] --> %s", i, vp->vp_strvalue);
len = vp->vp_length;
- } else if (vp->da->type == FR_TYPE_VENDOR) {
+ } else if (vp->vp_type == FR_TYPE_VENDOR) {
ssize_t slen;
uint8_t child_argc;
*
* @todo - if the attribute is malformed, create a "raw" one.
*/
- if (fr_value_box_from_network(vp, &vp->data, vp->da->type, vp->da,
+ if (fr_value_box_from_network(vp, &vp->data, vp->vp_type, vp->da,
&FR_DBUFF_TMP(ptr, attr_len), attr_len, true) < 0) {
talloc_free(vp);
return -1;
continue;
}
- if (!fr_type_is_leaf(vp->da->type)) continue;
+ if (!fr_type_is_leaf(vp->vp_type)) continue;
DEBUG2("&%pP", vp);