* @note Do not call this function directly; use #fr_dbuff_move
*
* Both in and out will be advanced by
- * min {len, fr_dbuff_remaining(out), fr_dbuff_marker_remaining(in)}; eventually,
+ * min {len, fr_dbuff_remaining(out), fr_dbuff_remaining(in)}; eventually,
* we'll attempt to extend dbuffs where possible and needed to make len bytes
* available in both in and out.
*
size_t _fr_dbuff_move_marker_to_dbuff(fr_dbuff_t *out, fr_dbuff_marker_t *in, size_t len)
{
size_t o_remaining = fr_dbuff_remaining(out);
- size_t i_remaining = fr_dbuff_marker_remaining(in);
+ size_t i_remaining = fr_dbuff_remaining(in);
size_t to_copy = len;
if (to_copy > o_remaining) to_copy = o_remaining;
if (to_copy > i_remaining) to_copy = i_remaining;
- safecpy(out->p, out->end, fr_dbuff_marker_current(in),
- fr_dbuff_marker_current(in) + to_copy);
- return fr_dbuff_advance(out, fr_dbuff_marker_advance(in, to_copy));
+ safecpy(out->p, out->end, fr_dbuff_current(in),
+ fr_dbuff_current(in) + to_copy);
+ return fr_dbuff_advance(out, fr_dbuff_advance(in, to_copy));
}
/** Move data from one marker to another
* @note Do not call this function directly; use #fr_dbuff_move
*
* Both in and out will be advanced by
- * min {len, fr_dbuff_marker_remaining(out), fr_dbuff_marker_remaining(in)}; eventually,
+ * min {len, fr_dbuff_remaining(out), fr_dbuff_remaining(in)}; eventually,
* we'll attempt to extend dbuffs where possible and needed to make len bytes
* available in both in and out.
*
*/
size_t _fr_dbuff_move_marker_to_marker(fr_dbuff_marker_t *out, fr_dbuff_marker_t *in, size_t len)
{
- size_t o_remaining = fr_dbuff_marker_remaining(out);
- size_t i_remaining = fr_dbuff_marker_remaining(in);
+ size_t o_remaining = fr_dbuff_remaining(out);
+ size_t i_remaining = fr_dbuff_remaining(in);
size_t to_copy = len;
if (to_copy > o_remaining) to_copy = o_remaining;
if (to_copy > i_remaining) to_copy = i_remaining;
- safecpy(out->p, out->parent->end, fr_dbuff_marker_current(in),
- fr_dbuff_marker_current(in) + to_copy);
- return fr_dbuff_marker_advance(out, fr_dbuff_marker_advance(in, to_copy));
+ safecpy(out->p, out->parent->end, fr_dbuff_current(in),
+ fr_dbuff_current(in) + to_copy);
+ return fr_dbuff_advance(out, fr_dbuff_advance(in, to_copy));
}
/** Move data from a dbuff to a marker
* @note Do not call this function directly; use #fr_dbuff_move
*
* Both in and out will be advanced by
- * min {len, fr_dbuff_marker_remaining(out), fr_dbuff_marker_remaining(in)}; eventually,
+ * min {len, fr_dbuff_remaining(out), fr_dbuff_remaining(in)}; eventually,
* we'll attempt to extend dbuffs where possible and needed to make len bytes
* available in both in and out.
*
*/
size_t _fr_dbuff_move_dbuff_to_marker(fr_dbuff_marker_t *out, fr_dbuff_t *in, size_t len)
{
- size_t o_remaining = fr_dbuff_marker_remaining(out);
+ size_t o_remaining = fr_dbuff_remaining(out);
size_t i_remaining = fr_dbuff_remaining(in);
size_t to_copy = len;
if (to_copy > o_remaining) to_copy = o_remaining;
if (to_copy > i_remaining) to_copy = i_remaining;
safecpy(out->p, out->parent->end, fr_dbuff_current(in),
fr_dbuff_current(in) + to_copy);
- return fr_dbuff_marker_advance(out, fr_dbuff_advance(in, to_copy));
+ return fr_dbuff_advance(out, fr_dbuff_advance(in, to_copy));
}
static inline size_t min(size_t x, size_t y)
slen = encode_tlv_hdr_internal(&FR_DBUFF_MAX(&work_dbuff, 253), da_stack, depth, cursor, encoder_ctx);
if (slen <= 0) return slen;
- fr_dbuff_marker_current(&hdr)[1] += slen;
+ fr_dbuff_current(&hdr)[1] += slen;
return fr_dbuff_set(dbuff, &work_dbuff);
}
/*
* Encode the password in place
*/
- slen = encode_password(&work_dbuff, fr_dbuff_marker_current(&value_start), fr_dbuff_used(&value_dbuff),
+ slen = encode_password(&work_dbuff, fr_dbuff_current(&value_start), fr_dbuff_used(&value_dbuff),
packet_ctx->secret, packet_ctx->vector);
if (slen < 0) return slen;
encrypted = true;
*/
if (flag_has_tag(&vp->da->flags)) fr_dbuff_advance(&work_dbuff, 1);
- slen = encode_tunnel_password(&work_dbuff, fr_dbuff_marker_current(&value_start),
+ slen = encode_tunnel_password(&work_dbuff, fr_dbuff_current(&value_start),
fr_dbuff_used(&value_dbuff), packet_ctx);
if (slen < 0) {
fr_strerror_printf("%s too long", vp->da->name);
* Do this after so we don't mess up the input
* value.
*/
- if (flag_has_tag(&vp->da->flags)) fr_dbuff_marker_current(&value_start)[0] = 0x00;
+ if (flag_has_tag(&vp->da->flags)) fr_dbuff_current(&value_start)[0] = 0x00;
encrypted = true;
break;
* always fits.
*/
case FLAG_ENCRYPT_ASCEND_SECRET:
- slen = fr_radius_ascend_secret_dbuff(&work_dbuff, fr_dbuff_marker_current(&value_start),
+ slen = fr_radius_ascend_secret_dbuff(&work_dbuff, fr_dbuff_current(&value_start),
fr_dbuff_used(&value_dbuff),
packet_ctx->secret, packet_ctx->vector);
if (slen < 0) return slen;
/*
* Only 24bit integers are allowed here
*/
- if (fr_dbuff_marker_current(&value_start)[0] != 0) {
+ if (fr_dbuff_current(&value_start)[0] != 0) {
fr_strerror_printf("Integer overflow for tagged uint32 attribute");
return PAIR_ENCODE_SKIPPED;
}
- fr_dbuff_marker_current(&value_start)[0] = packet_ctx->tag;
+ fr_dbuff_current(&value_start)[0] = packet_ctx->tag;
}
FR_PROTO_HEX_DUMP(fr_dbuff_start(&work_dbuff), fr_dbuff_used(&work_dbuff), "value %s",
fr_dbuff_marker_t *ptr, int hdr_len, ssize_t len,
int flag_offset, int vsa_offset)
{
- int check_len = len - fr_dbuff_marker_current(ptr)[1];
+ int check_len = len - fr_dbuff_current(ptr)[1];
int total = hdr_len;
fr_dbuff_t work_dbuff = FR_DBUFF_NO_ADVANCE(dbuff);
fr_dbuff_marker_t hdr, next_hdr, next_data;
* lengths.
*/
if (fr_dbuff_advance(&work_dbuff, total) < 0) {
- return (fr_dbuff_marker_current(ptr) + fr_dbuff_marker_current(ptr)[1]) - fr_dbuff_start(&work_dbuff);
+ return (fr_dbuff_current(ptr) + fr_dbuff_current(ptr)[1]) - fr_dbuff_start(&work_dbuff);
}
/*
* accumulated there.
*/
fr_dbuff_marker(&hdr, dbuff);
- fr_dbuff_marker_set(&hdr, fr_dbuff_marker_current(ptr));
+ fr_dbuff_set(&hdr, fr_dbuff_current(ptr));
fr_dbuff_marker(&next_hdr, dbuff);
fr_dbuff_marker(&next_data, dbuff);
*/
for (;;) {
/* Extend current attribute as much as possible. */
- int sublen = 255 - fr_dbuff_marker_current(&hdr)[1];
+ int sublen = 255 - fr_dbuff_current(&hdr)[1];
if (len < sublen) sublen = len;
- fr_dbuff_marker_current(&hdr)[1] += sublen;
+ fr_dbuff_current(&hdr)[1] += sublen;
/* Adjust the other length field if it exists. */
- if (vsa_offset) fr_dbuff_marker_current(&hdr)[vsa_offset] += sublen;
+ if (vsa_offset) fr_dbuff_current(&hdr)[vsa_offset] += sublen;
/* If all data are accounted for, we're done. */
len -= sublen;
if (len == 0) break;
/* This attribute isn't the last, so flag it. */
- fr_dbuff_marker_current(&hdr)[flag_offset] |= 0x80;
+ fr_dbuff_current(&hdr)[flag_offset] |= 0x80;
/* Make room for another header. */
- fr_dbuff_marker_set(&next_hdr, fr_dbuff_marker_current(&hdr) + 255);
- fr_dbuff_marker_set(&next_data, fr_dbuff_marker_current(&next_hdr) + hdr_len);
+ fr_dbuff_set(&next_hdr, fr_dbuff_current(&hdr) + 255);
+ fr_dbuff_set(&next_data, fr_dbuff_current(&next_hdr) + hdr_len);
fr_dbuff_move(&next_data, &next_hdr, len);
/* Copy current header into new header and advance to it... */
- fr_dbuff_marker_set(&next_hdr, fr_dbuff_marker_current(&hdr) + 255);
+ fr_dbuff_set(&next_hdr, fr_dbuff_current(&hdr) + 255);
fr_dbuff_move(&next_hdr, &hdr, hdr_len);
- fr_dbuff_marker_advance(&hdr, 255 - hdr_len);
+ fr_dbuff_advance(&hdr, 255 - hdr_len);
/* ...and set its length to that of the header. */
- fr_dbuff_marker_current(&hdr)[1] = hdr_len;
+ fr_dbuff_current(&hdr)[1] = hdr_len;
}
/* Clear our markers from dbuff's list */
FR_DBUFF_IN_RETURN(&work_dbuff, (uint32_t) da_stack->da[depth++]->attr);
FR_DBUFF_BYTES_IN_RETURN(&work_dbuff, (uint8_t)da_stack->da[depth]->attr);
- fr_dbuff_marker_current(&hdr)[1] += 5;
+ fr_dbuff_current(&hdr)[1] += 5;
FR_PROTO_STACK_PRINT(da_stack, depth);
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), fr_dbuff_marker_current(&hdr)[1],
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), fr_dbuff_current(&hdr)[1],
"header extended vendor specific");
} else {
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), fr_dbuff_marker_current(&hdr)[1], "header extended");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), fr_dbuff_current(&hdr)[1], "header extended");
}
/*
* and copy the existing header over. Set the "M" flag ONLY
* after copying the rest of the data.
*/
- if (slen > (255 - fr_dbuff_marker_current(&hdr)[1])) {
+ if (slen > (255 - fr_dbuff_current(&hdr)[1])) {
slen = attr_shift(&work_dbuff, &hdr, 4, slen, 3, 0);
fr_dbuff_set(dbuff, &work_dbuff);
return slen;
}
- fr_dbuff_marker_current(&hdr)[1] += slen;
+ fr_dbuff_current(&hdr)[1] += slen;
#ifndef NDEBUG
if (fr_debug_lvl > 3) {
if (vsa_type == FR_TYPE_VENDOR) jump += 5;
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), jump, "header extended");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), jump, "header extended");
}
#endif
FR_DBUFF_MEMCPY_IN_RETURN(&work_dbuff, p, left);
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr) + 2, left, "concat value octets");
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), 2, "concat header rfc");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr) + 2, left, "concat value octets");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), 2, "concat header rfc");
- fr_dbuff_marker_current(&hdr)[1] += left;
+ fr_dbuff_current(&hdr)[1] += left;
p += left;
slen -= left;
}
slen = encode_value(&FR_DBUFF_MAX(&work_dbuff, 253), da_stack, depth, cursor, encoder_ctx);
if (slen <= 0) return slen;
- fr_dbuff_marker_current(&hdr)[1] += slen;
+ fr_dbuff_current(&hdr)[1] += slen;
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), 2, "header rfc");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), 2, "header rfc");
return fr_dbuff_set(dbuff, &work_dbuff);
}
}
if (slen <= 0) return slen;
- if (dv->flags.length) fr_dbuff_marker_current(&hdr)[hdr_len - 1] += slen;
+ if (dv->flags.length) fr_dbuff_current(&hdr)[hdr_len - 1] += slen;
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), hdr_len, "header vsa");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), hdr_len, "header vsa");
return fr_dbuff_set(dbuff, &work_dbuff);
}
* and copy the existing header over. Set the "C" flag
* ONLY after copying the rest of the data.
*/
- if (slen > (255 - fr_dbuff_marker_current(&hdr)[1])) {
- slen = attr_shift(&work_dbuff, &hdr, fr_dbuff_marker_current(&hdr)[1], slen, 8, 7);
+ if (slen > (255 - fr_dbuff_current(&hdr)[1])) {
+ slen = attr_shift(&work_dbuff, &hdr, fr_dbuff_current(&hdr)[1], slen, 8, 7);
fr_dbuff_set(dbuff, &work_dbuff);
return slen;
}
- fr_dbuff_marker_current(&hdr)[1] += slen;
- fr_dbuff_marker_current(&hdr)[7] += slen;
+ fr_dbuff_current(&hdr)[1] += slen;
+ fr_dbuff_current(&hdr)[7] += slen;
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), 9, "header wimax");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), 9, "header wimax");
return fr_dbuff_set(dbuff, &work_dbuff);
}
len = encode_vendor_attr_hdr(&FR_DBUFF_MAX(&work_dbuff, 255 - 6), da_stack, depth, cursor, encoder_ctx);
if (len < 0) return len;
- fr_dbuff_marker_current(&hdr)[1] = fr_dbuff_used(&work_dbuff);
+ fr_dbuff_current(&hdr)[1] = fr_dbuff_used(&work_dbuff);
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&hdr), 6, "header vsa");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&hdr), 6, "header vsa");
return fr_dbuff_set(dbuff, &work_dbuff);
}
if ((vp->da == attr_chargeable_user_identity) && (vp->vp_length == 0)) {
fr_dbuff_bytes_in(&work_dbuff, (uint8_t)vp->da->attr, 0x02);
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&start), 2, "header rfc");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&start), 2, "header rfc");
vp = fr_cursor_next(cursor);
fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
FR_DBUFF_BYTES_IN_RETURN(&work_dbuff, (uint8_t)vp->da->attr, 18);
FR_DBUFF_MEMSET_RETURN(&work_dbuff, 0, 16);
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&start) + 2, RADIUS_MESSAGE_AUTHENTICATOR_LENGTH,
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&start) + 2, RADIUS_MESSAGE_AUTHENTICATOR_LENGTH,
"message-authenticator");
- FR_PROTO_HEX_DUMP(fr_dbuff_marker_current(&start), 2, "header rfc");
+ FR_PROTO_HEX_DUMP(fr_dbuff_current(&start), 2, "header rfc");
vp = fr_cursor_next(cursor);
fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);