]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
s/tlv_stack/da_stack/g
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 26 Mar 2020 21:32:51 +0000 (15:32 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 26 Mar 2020 21:32:51 +0000 (15:32 -0600)
It's used for more than TLVs

src/lib/eap_aka_sim/encode.c
src/lib/server/snmp.c
src/lib/util/dict_print.c
src/lib/util/pair.c
src/lib/util/proto.c
src/lib/util/proto.h
src/lib/util/struct.c
src/lib/util/struct.h
src/protocols/dhcpv4/encode.c
src/protocols/dhcpv6/encode.c
src/protocols/radius/encode.c

index df07eaa10d51f391fa697073eebd7d2f04899597..a5f315d08ee1e6b6c7c101a717f22ad4d387a75f 100644 (file)
@@ -55,7 +55,7 @@ RCSID("$Id$")
  */
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx);
 
 static inline bool is_encodable(fr_dict_attr_t const *root, VALUE_PAIR *vp)
@@ -295,18 +295,18 @@ static ssize_t encode_encrypted_value(uint8_t *out, size_t outlen,
  *     < 0, failure.
  */
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, int depth,
+                           fr_dict_attr_t const **da_stack, int depth,
                            fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 len;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
        fr_aka_sim_encode_ctx_t *packet_ctx = encoder_ctx;
 
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (unlikely(tlv_stack[depth + 1] != NULL)) {
+       if (unlikely(da_stack[depth + 1] != NULL)) {
                fr_strerror_printf("%s: Encoding value but not at top of stack", __FUNCTION__);
                return PAIR_ENCODE_FATAL_ERROR;
        }
@@ -319,7 +319,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        switch (da->type) {
        case FR_TYPE_STRUCTURAL:
                fr_strerror_printf("%s: Called with structural type %s", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return PAIR_ENCODE_FATAL_ERROR;
 
        default:
@@ -583,7 +583,7 @@ done:
         *      Rebuilds the TLV stack for encoding the next attribute
         */
        vp = next_encodable(cursor, encoder_ctx);
-       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
        return len;
 }
@@ -607,7 +607,7 @@ done:
  *
  */
 static ssize_t encode_array(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, int depth,
+                           fr_dict_attr_t const **da_stack, int depth,
                            fr_cursor_t *cursor, void *encoder_ctx)
 {
        uint8_t                 *p = out, *end = p + outlen;
@@ -615,7 +615,7 @@ static ssize_t encode_array(uint8_t *out, size_t outlen,
        size_t                  pad_len;
        size_t                  element_len;
        uint16_t                actual_len;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
        rad_assert(da->flags.array);
 
        p += 2;
@@ -640,7 +640,7 @@ static ssize_t encode_array(uint8_t *out, size_t outlen,
                VALUE_PAIR      *vp;
                ssize_t         slen;
 
-               slen = encode_value(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_value(p, end - p, da_stack, depth, cursor, encoder_ctx);
                if (slen < 0) return slen;
 
                p += slen;
@@ -684,7 +684,7 @@ static ssize_t encode_array(uint8_t *out, size_t outlen,
  * If it's a standard attribute, then vp->da->attr == attribute.
  * Otherwise, attribute may be something else.
  */
-static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tlv_stack, unsigned int depth,
+static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx)
 {
        size_t                  pad_len;
@@ -692,19 +692,19 @@ static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const
        fr_dict_attr_t const    *da;
        ssize_t                 slen;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        case FR_TYPE_STRUCTURAL:
                fr_strerror_printf("%s: Called with structural type %s", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return PAIR_ENCODE_FATAL_ERROR;
 
        default:
-               if (((fr_dict_vendor_num_by_da(tlv_stack[depth]) == 0) && (tlv_stack[depth]->attr == 0)) ||
-                   (tlv_stack[depth]->attr > 255)) {
+               if (((fr_dict_vendor_num_by_da(da_stack[depth]) == 0) && (da_stack[depth]->attr == 0)) ||
+                   (da_stack[depth]->attr > 255)) {
                        fr_strerror_printf("%s: Called with non-standard attribute %u", __FUNCTION__,
-                                          tlv_stack[depth]->attr);
+                                          da_stack[depth]->attr);
                        return PAIR_ENCODE_FATAL_ERROR;
                }
                break;
@@ -721,13 +721,13 @@ static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const
         *      zero and fill any subfields like actual
         *      length.
         */
-       da = tlv_stack[depth];
+       da = da_stack[depth];
 
        p += 2; /* Leave space for attr + len */
        if (da->flags.array) {
-               slen = encode_array(p, outlen - (p - out), tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_array(p, outlen - (p - out), da_stack, depth, cursor, encoder_ctx);
        } else {
-               slen = encode_value(p, outlen - (p - out), tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_value(p, outlen - (p - out), da_stack, depth, cursor, encoder_ctx);
        }
        if (slen <= 0) return slen;
        p += slen;
@@ -752,13 +752,13 @@ static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const
 }
 
 static inline ssize_t encode_tlv_internal(uint8_t *out, size_t outlen,
-                                         fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                                         fr_dict_attr_t const **da_stack, unsigned int depth,
                                          fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 slen;
        uint8_t                 *p = out, *end = p + outlen, *value;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        CHECK_FREESPACE(outlen, 2);
        *p++ = 0;       /* Reserved (0) */
@@ -767,7 +767,7 @@ static inline ssize_t encode_tlv_internal(uint8_t *out, size_t outlen,
 
        while ((end - p) > 4) {
                size_t sublen;
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
 
                /*
                 *      This attribute carries sub-TLVs.  The sub-TLVs
@@ -779,10 +779,10 @@ static inline ssize_t encode_tlv_internal(uint8_t *out, size_t outlen,
                /*
                 *      Determine the nested type and call the appropriate encoder
                 */
-               if (tlv_stack[depth + 1]->type == FR_TYPE_TLV) {
-                       slen = encode_tlv_hdr(p, sublen, tlv_stack, depth + 1, cursor, encoder_ctx);
+               if (da_stack[depth + 1]->type == FR_TYPE_TLV) {
+                       slen = encode_tlv_hdr(p, sublen, da_stack, depth + 1, cursor, encoder_ctx);
                } else {
-                       slen = encode_rfc_hdr(p, sublen, tlv_stack, depth + 1, cursor, encoder_ctx);
+                       slen = encode_rfc_hdr(p, sublen, da_stack, depth + 1, cursor, encoder_ctx);
                }
 
                if (slen <= 0) return slen;
@@ -798,7 +798,7 @@ static inline ssize_t encode_tlv_internal(uint8_t *out, size_t outlen,
                 *      rebuilding the TLV Stack, the attribute
                 *      at this depth is the same.
                 */
-               if (da != tlv_stack[depth]) break;
+               if (da != da_stack[depth]) break;
                vp = fr_cursor_current(cursor);
        }
 
@@ -819,7 +819,7 @@ static inline ssize_t encode_tlv_internal(uint8_t *out, size_t outlen,
 }
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx)
 {
        unsigned int            total_len;
@@ -828,15 +828,15 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
        fr_dict_attr_t const    *da;
 
        VP_VERIFY(fr_cursor_current(cursor));
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (tlv_stack[depth]->type != FR_TYPE_TLV) {
+       if (da_stack[depth]->type != FR_TYPE_TLV) {
                fr_strerror_printf("%s: Expected type \"tlv\" got \"%s\"", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return PAIR_ENCODE_FATAL_ERROR;
        }
 
-       if (!tlv_stack[depth + 1]) {
+       if (!da_stack[depth + 1]) {
                fr_strerror_printf("%s: Can't encode empty TLV", __FUNCTION__);
                return PAIR_ENCODE_FATAL_ERROR;
        }
@@ -846,7 +846,7 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
         *      The ASCII art in the RFCs the attributes in
         *      this order.
         */
-       if (!tlv_stack[depth]->flags.extra && tlv_stack[depth]->flags.subtype) {
+       if (!da_stack[depth]->flags.extra && da_stack[depth]->flags.subtype) {
                len = encode_iv(out, outlen, encoder_ctx);
                if (len < 0) return len;
 
@@ -857,8 +857,8 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
        if (outlen < 4) return 0;
        if (outlen > SIM_MAX_ATTRIBUTE_VALUE_LEN) outlen = SIM_MAX_ATTRIBUTE_VALUE_LEN;
 
-       da = tlv_stack[depth];
-       len = encode_tlv_internal(p + 2, outlen - 2, tlv_stack, depth, cursor, encoder_ctx);
+       da = da_stack[depth];
+       len = encode_tlv_internal(p + 2, outlen - 2, da_stack, depth, cursor, encoder_ctx);
        if (len <= 0) return len;
 
        /*
@@ -882,7 +882,7 @@ ssize_t fr_aka_sim_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
        ssize_t                 slen;
        size_t                  attr_len;
 
-       fr_dict_attr_t const    *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack[FR_DICT_MAX_TLV_STACK + 1];
        fr_dict_attr_t const    *da = NULL;
        fr_aka_sim_encode_ctx_t *packet_ctx = encoder_ctx;
 
@@ -916,30 +916,30 @@ ssize_t fr_aka_sim_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
         *      Fast path for the common case.
         */
        if ((vp->da->parent == packet_ctx->root) && !vp->da->flags.concat && (vp->vp_type != FR_TYPE_TLV)) {
-               tlv_stack[0] = vp->da;
-               tlv_stack[1] = NULL;
-               FR_PROTO_STACK_PRINT(tlv_stack, 0);
-               return encode_rfc_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               da_stack[0] = vp->da;
+               da_stack[1] = NULL;
+               FR_PROTO_STACK_PRINT(da_stack, 0);
+               return encode_rfc_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
        }
 
        /*
         *      Do more work to set up the stack for the complex case.
         */
-       fr_proto_tlv_stack_build(tlv_stack, vp->da);
-       FR_PROTO_STACK_PRINT(tlv_stack, 0);
+       fr_proto_da_stack_build(da_stack, vp->da);
+       FR_PROTO_STACK_PRINT(da_stack, 0);
 
-       da = tlv_stack[0];
+       da = da_stack[0];
 
        switch (da->type) {
        /*
         *      Supported types
         */
        default:
-               slen = encode_rfc_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               slen = encode_rfc_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_TLV:
-               slen = encode_tlv_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               slen = encode_tlv_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
        }
 
index 72bb03a4554f6920779b1f1e305bb618202045b5..3b50b966c846e29dd9f12317b58d323ab13c0c51 100644 (file)
@@ -458,7 +458,7 @@ static fr_snmp_map_t snmp_iso[] = {
 };
 
 static ssize_t snmp_process(fr_cursor_t *out, REQUEST *request,
-                           fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                           fr_dict_attr_t const *da_stack[], unsigned int depth,
                            fr_cursor_t *cursor,
                            fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op);
 
@@ -501,28 +501,28 @@ static fr_snmp_map_t const *snmp_map_search(fr_snmp_map_t const map[], fr_dict_a
 
 /** Perform depth first traversal of the tree until we hit a leaf node
  *
- * This is used for building a fake tlv_stack, for findNext, so that if
+ * This is used for building a fake da_stack, for findNext, so that if
  * we get a findNext operation on something that's not a leaf, we can
  * find the first leaf under that branch of the tree.
  *
- * @param[out] tlv_stack to rewrite.
+ * @param[out] da_stack to rewrite.
  * @param[in] depth at which to start rewriting.
  * @param[in] map at this level.
  */
-static void snmp_next_leaf(fr_dict_attr_t const *tlv_stack[], unsigned int depth, fr_snmp_map_t const *map)
+static void snmp_next_leaf(fr_dict_attr_t const *da_stack[], unsigned int depth, fr_snmp_map_t const *map)
 {
        uint32_t i;
        fr_snmp_map_t const *map_p = map;
 
        for (i = depth; (i < FR_DICT_MAX_TLV_STACK) && map_p; i++) {
-               tlv_stack[i] = map_p->da;
+               da_stack[i] = map_p->da;
                map_p = map_p->child;
        }
-       tlv_stack[i] = NULL;
+       da_stack[i] = NULL;
 }
 
 static ssize_t snmp_process_index(fr_cursor_t *out, REQUEST *request,
-                                 fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                                 fr_dict_attr_t const *da_stack[], unsigned int depth,
                                  fr_cursor_t cursor,
                                  fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op,
                                  uint32_t index_num)
@@ -565,7 +565,7 @@ static ssize_t snmp_process_index(fr_cursor_t *out, REQUEST *request,
                }
 
                ret = snmp_process(out, request,
-                                  tlv_stack, depth + 1,
+                                  da_stack, depth + 1,
                                   &cursor,
                                   map->child, this_snmp_ctx, snmp_op);
                TALLOC_FREE(tmp_ctx);
@@ -584,7 +584,7 @@ static ssize_t snmp_process_index(fr_cursor_t *out, REQUEST *request,
                         *      entry, not at the end (where we previously
                         *      were).
                         */
-                       fr_proto_tlv_stack_build(tlv_stack, map->da);
+                       fr_proto_da_stack_build(da_stack, map->da);
                        this_snmp_ctx = NULL;
                        continue;
                }
@@ -613,7 +613,7 @@ static ssize_t snmp_process_index(fr_cursor_t *out, REQUEST *request,
 }
 
 static ssize_t snmp_process_index_attr(fr_cursor_t *out, REQUEST *request,
-                                      fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                                      fr_dict_attr_t const *da_stack[], unsigned int depth,
                                       fr_cursor_t *cursor,
                                       fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op)
 {
@@ -621,7 +621,7 @@ static ssize_t snmp_process_index_attr(fr_cursor_t *out, REQUEST *request,
        uint32_t        index_num;
        VALUE_PAIR      *vp;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        if (map[0].last < &map[1]) {
                fr_strerror_printf("Invalid OID: Empty map");
@@ -640,10 +640,10 @@ static ssize_t snmp_process_index_attr(fr_cursor_t *out, REQUEST *request,
                goto error;
        }
 
-       if (tlv_stack[depth]->type != FR_TYPE_UINT32) {
+       if (da_stack[depth]->type != FR_TYPE_UINT32) {
                fr_strerror_printf("Bad index attribute: Index attribute \"%s\" should be a integer, "
-                                  "but is a %s", tlv_stack[depth]->name,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  "but is a %s", da_stack[depth]->name,
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                goto error;
        }
 
@@ -659,33 +659,33 @@ static ssize_t snmp_process_index_attr(fr_cursor_t *out, REQUEST *request,
         */
        next = fr_cursor_next_peek(cursor);
        if (next && fr_dict_parent_common(vp->da, next->da, true)) {
-               fr_proto_tlv_stack_build(tlv_stack, next->da);
+               fr_proto_da_stack_build(da_stack, next->da);
 
                while ((next = fr_cursor_next(cursor))) if (fr_dict_parent_common(vp->da, next->da, true)) break;
        }
 
        return snmp_process_index(out, request,
-                                 tlv_stack, depth,
+                                 da_stack, depth,
                                  *cursor,
                                  &map[1], snmp_ctx, snmp_op,
                                  index_num);
 }
 
 static ssize_t snmp_process_tlv(fr_cursor_t *out, REQUEST *request,
-                               fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                               fr_dict_attr_t const *da_stack[], unsigned int depth,
                                fr_cursor_t *cursor,
                                fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op)
 {
        fr_snmp_map_t const     *map_p;
        ssize_t                 ret;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Return element in map that matches the da at this
-        *      level in the tlv_stack.
+        *      level in the da_stack.
         */
-       map_p = snmp_map_search(map, tlv_stack[depth]);
+       map_p = snmp_map_search(map, da_stack[depth]);
        if (!map_p) {
        invalid:
                fr_strerror_printf("Invalid OID: Match stopped here");
@@ -706,21 +706,21 @@ static ssize_t snmp_process_tlv(fr_cursor_t *out, REQUEST *request,
         *      as a single attribute (with index 1 being used for
         *      each traversal).
         *
-        *      The real purpose is to allow the fake tlv_stack
+        *      The real purpose is to allow the fake da_stack
         *      code to work correctly without needing to add
         *      fake index attributes
         */
        if (map_p->index) {
                return snmp_process_index(out, request,
-                                         tlv_stack, depth,
+                                         da_stack, depth,
                                          *cursor,
                                          map_p, snmp_ctx, snmp_op,
-                                         tlv_stack[depth]->attr);
+                                         da_stack[depth]->attr);
        }
 
        for (;;) {
                ret = snmp_process(out, request,
-                                  tlv_stack, depth + 1,
+                                  da_stack, depth + 1,
                                   cursor,
                                   map_p->child, snmp_ctx, snmp_op);
                if (ret < 0) return ret;        /* error */
@@ -734,22 +734,22 @@ static ssize_t snmp_process_tlv(fr_cursor_t *out, REQUEST *request,
 }
 
 static ssize_t snmp_process_leaf(fr_cursor_t *out, REQUEST *request,
-                                fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                                fr_dict_attr_t const *da_stack[], unsigned int depth,
                                 fr_cursor_t *cursor,
                                 fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op)
 {
        VALUE_PAIR              *vp;
        fr_snmp_map_t const     *map_p;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        vp = fr_cursor_current(cursor);
 
        /*
         *      Return element in map that matches the da at this
-        *      level in the tlv_stack.
+        *      level in the da_stack.
         */
-       map_p = snmp_map_search(map, tlv_stack[depth]);
+       map_p = snmp_map_search(map, da_stack[depth]);
        if (!map_p) {
                fr_strerror_printf("Invalid OID: Match stopped here");
        error:
@@ -773,7 +773,7 @@ static ssize_t snmp_process_leaf(fr_cursor_t *out, REQUEST *request,
                         */
                        if (map_p->type == FR_FREERADIUS_SNMP_TYPE_OBJECT) {
                                return snmp_process(out, request,
-                                                   tlv_stack, depth + 1,
+                                                   da_stack, depth + 1,
                                                    cursor,
                                                    map_p->child, snmp_ctx, snmp_op);
                        }
@@ -859,10 +859,10 @@ static ssize_t snmp_process_leaf(fr_cursor_t *out, REQUEST *request,
  *
  * @param[out] out             Where to write response attributes.
  * @param[in] request          The current request.
- * @param[in,out] tlv_stack    we're traversing.
- * @param[in] depth            we're currently at in the tlv_stack.
+ * @param[in,out] da_stack     we're traversing.
+ * @param[in] depth            we're currently at in the da_stack.
  * @param[in] cursor           representing the current attribute we're processing.
- * @param[in] map              matching the current depth in the tlv_stack.
+ * @param[in] map              matching the current depth in the da_stack.
  * @param[in] snmp_ctx         allocated by the previous index traversal function.
  * @param[in] snmp_op          we're performing.
  * @return
@@ -872,43 +872,43 @@ static ssize_t snmp_process_leaf(fr_cursor_t *out, REQUEST *request,
  *     - <0 the depth at which an error occurred, as a negative integer.
  */
 static ssize_t snmp_process(fr_cursor_t *out, REQUEST *request,
-                           fr_dict_attr_t const *tlv_stack[], unsigned int depth,
+                           fr_dict_attr_t const *da_stack[], unsigned int depth,
                            fr_cursor_t *cursor,
                            fr_snmp_map_t const *map, void *snmp_ctx, unsigned int snmp_op)
 {
        rad_assert(map);
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      We've run out of stack... This is an error unless
         *      we're performing a getNext operation, in which
         *      case we fake the rest of the stack.
         */
-       if (!tlv_stack[depth]) {
+       if (!da_stack[depth]) {
                if (snmp_op != FR_FREERADIUS_SNMP_OPERATION_VALUE_GETNEXT) {
                        fr_strerror_printf("Invalid OID: Not a leaf");
                        return -(ssize_t)(depth - 1);
                }
-               snmp_next_leaf(tlv_stack, depth, &map[1]);
+               snmp_next_leaf(da_stack, depth, &map[1]);
        }
 
        /*
         *      It's an index attribute, use the value of
         *      the index attribute to traverse the index.
         */
-       if (tlv_stack[depth]->attr == 0) return snmp_process_index_attr(out, request,
-                                                                       tlv_stack, depth,
+       if (da_stack[depth]->attr == 0) return snmp_process_index_attr(out, request,
+                                                                       da_stack, depth,
                                                                        cursor,
                                                                        map, snmp_ctx, snmp_op);
 
        /*
         *      It's a TLV, recurse, and locate the map
         *      matching the next deepest DA in the
-        *      tlv_stack.
+        *      da_stack.
         */
-       if (tlv_stack[depth]->type == FR_TYPE_TLV) return snmp_process_tlv(out, request,
-                                                                          tlv_stack, depth,
+       if (da_stack[depth]->type == FR_TYPE_TLV) return snmp_process_tlv(out, request,
+                                                                          da_stack, depth,
                                                                           cursor,
                                                                           map, snmp_ctx, snmp_op);
 
@@ -917,7 +917,7 @@ static ssize_t snmp_process(fr_cursor_t *out, REQUEST *request,
         *      and create attributes for the response.
         */
        return snmp_process_leaf(out, request,
-                                tlv_stack, depth,
+                                da_stack, depth,
                                 cursor,
                                 map, snmp_ctx, snmp_op);
 }
@@ -930,7 +930,7 @@ int fr_snmp_process(REQUEST *request)
        char                    oid_str[FR_DICT_MAX_TLV_STACK * 4];     /* .<num>{1,3} */
        size_t                  oid_len, len;
 
-       fr_dict_attr_t const    *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack[FR_DICT_MAX_TLV_STACK + 1];
        unsigned int            depth;
        ssize_t                 ret;
 
@@ -986,20 +986,20 @@ int fr_snmp_process(REQUEST *request)
        for (vp = fr_cursor_iter_by_ancestor_init(&request_cursor, &request->packet->vps, attr_snmp_root);
             vp;
             vp = fr_cursor_next(&request_cursor)) {
-               fr_proto_tlv_stack_build(tlv_stack, vp->da);
+               fr_proto_da_stack_build(da_stack, vp->da);
 
                /*
                 *      Wind to the frame in the TLV stack that matches our
                 *      SNMP root.
                 */
-               for (depth = 0; tlv_stack[depth]; depth++) if (attr_snmp_root == tlv_stack[depth]) break;
+               for (depth = 0; da_stack[depth]; depth++) if (attr_snmp_root == da_stack[depth]) break;
 
                /*
                 *      Any attribute returned by fr_cursor_next_by_ancestor
                 *      should have the SNMP root attribute as an ancestor.
                 */
-               rad_assert(tlv_stack[depth]);
-               rad_assert(tlv_stack[depth] == attr_snmp_root);
+               rad_assert(da_stack[depth]);
+               rad_assert(da_stack[depth] == attr_snmp_root);
 
                /*
                 *      Operator attribute acts as a request delimiter
@@ -1027,7 +1027,7 @@ int fr_snmp_process(REQUEST *request)
                 *      Returns depth (as negative integer) at which the error occurred
                 */
                ret = snmp_process(&out_cursor, request,
-                                  tlv_stack, depth,
+                                  da_stack, depth,
                                   &request_cursor,
                                   snmp_iso, NULL, op->vp_uint32);
                if (ret < 0) {
@@ -1036,11 +1036,11 @@ int fr_snmp_process(REQUEST *request)
                        oid_str[0] = '.';
 
                        /* Get the length of the matching part */
-                       oid_len = fr_dict_print_attr_oid(NULL, oid_str + 1, sizeof(oid_str) - 1, attr_snmp_root, tlv_stack[-(ret)]);
+                       oid_len = fr_dict_print_attr_oid(NULL, oid_str + 1, sizeof(oid_str) - 1, attr_snmp_root, da_stack[-(ret)]);
 
                        /* Get the last frame in the current stack */
-                       for (depth = 0; tlv_stack[depth + 1]; depth++);
-                       len = fr_dict_print_attr_oid(NULL, oid_str + 1, sizeof(oid_str) - 1, attr_snmp_root, tlv_stack[depth]);
+                       for (depth = 0; da_stack[depth + 1]; depth++);
+                       len = fr_dict_print_attr_oid(NULL, oid_str + 1, sizeof(oid_str) - 1, attr_snmp_root, da_stack[depth]);
 
                        /* Use the difference in OID string length to place the marker */
                        REMARKER(oid_str, oid_len - (len - oid_len), "%s", fr_strerror());
index 64b5fddd4c44947190f8e79f307988127ece41cc..67fb33878b8ff58937258f294bf6afe05e69dd44 100644 (file)
@@ -100,7 +100,7 @@ do { \
        return len;
 }
 
-/** Build the tlv_stack for the specified DA and encode the path in OID form
+/** Build the da_stack for the specified DA and encode the path in OID form
  *
  * @param[out] need            How many bytes we would need to print the
  *                             next part of the string.
@@ -120,7 +120,7 @@ size_t fr_dict_print_attr_oid(size_t *need, char *out, size_t outlen,
        char                    *p = out, *end = p + outlen;
        int                     i;
        int                     depth = 0;
-       fr_dict_attr_t const    *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack[FR_DICT_MAX_TLV_STACK + 1];
 
        RETURN_IF_NO_SPACE_INIT(need, 1, p, out, end);
 
@@ -133,10 +133,10 @@ size_t fr_dict_print_attr_oid(size_t *need, char *out, size_t outlen,
                return 0;
        }
 
-       fr_proto_tlv_stack_build(tlv_stack, da);
+       fr_proto_da_stack_build(da_stack, da);
 
        if (ancestor) {
-               if (tlv_stack[ancestor->depth - 1] != ancestor) {
+               if (da_stack[ancestor->depth - 1] != ancestor) {
                        fr_strerror_printf("Attribute \"%s\" is not a descendent of \"%s\"", da->name, ancestor->name);
                        return -1;
                }
@@ -147,11 +147,11 @@ size_t fr_dict_print_attr_oid(size_t *need, char *out, size_t outlen,
         *      We don't print the ancestor, we print the OID
         *      between it and the da.
         */
-       len = snprintf(p, end - p, "%u", tlv_stack[depth]->attr);
+       len = snprintf(p, end - p, "%u", da_stack[depth]->attr);
        RETURN_IF_TRUNCATED(need, len, p, out, end);
 
        for (i = depth + 1; i < (int)da->depth; i++) {
-               len = snprintf(p, end - p, ".%u", tlv_stack[i]->attr);
+               len = snprintf(p, end - p, ".%u", da_stack[i]->attr);
                RETURN_IF_TRUNCATED(need, len, p, out, end);
        }
 
index 19ef23d21d3be42c213d27bf7cdb1767997d86c9..d8d99c18e8867be98c447a12404a020b677757b8 100644 (file)
@@ -831,8 +831,8 @@ int8_t fr_pair_cmp_by_parent_num_tag(void const *a, void const *b)
        VALUE_PAIR const        *vp_b = b;
        fr_dict_attr_t const    *da_a = vp_a->da;
        fr_dict_attr_t const    *da_b = vp_b->da;
-       fr_dict_attr_t const    *tlv_stack_a[FR_DICT_MAX_TLV_STACK + 1];
-       fr_dict_attr_t const    *tlv_stack_b[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack_a[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack_b[FR_DICT_MAX_TLV_STACK + 1];
        int i;
 
        /*
@@ -841,10 +841,10 @@ int8_t fr_pair_cmp_by_parent_num_tag(void const *a, void const *b)
         */
        if ((da_a->parent->flags.is_root) && (da_b->parent->flags.is_root)) return pair_cmp_by_num_tag(vp_a, vp_b);
 
-       fr_proto_tlv_stack_build(tlv_stack_a, da_a);
-       fr_proto_tlv_stack_build(tlv_stack_b, da_b);
+       fr_proto_da_stack_build(da_stack_a, da_a);
+       fr_proto_da_stack_build(da_stack_b, da_b);
 
-       for (i = 0; (da_a = tlv_stack_a[i]) && (da_b = tlv_stack_b[i]); i++) {
+       for (i = 0; (da_a = da_stack_a[i]) && (da_b = da_stack_b[i]); i++) {
                if (da_a->attr > da_b->attr) return +1;
                if (da_a->attr < da_b->attr) return -1;
        }
index 6992492f7ca82753ee2f0d3b93a76aac88467cbf..e7414141cf12ed2d88c38ac498ed1c31f43171bc 100644 (file)
@@ -54,11 +54,11 @@ void fr_proto_print_hex_data(char const *file, int line, uint8_t const *data, si
 }
 DIAG_ON(format-nonliteral)
 
-void fr_proto_tlv_stack_print(char const *file, int line, char const *func, fr_dict_attr_t const **tlv_stack, unsigned int depth)
+void fr_proto_da_stack_print(char const *file, int line, char const *func, fr_dict_attr_t const **da_stack, unsigned int depth)
 {
        int             i;
 
-       for (i = 0; (i < FR_DICT_MAX_TLV_STACK) && tlv_stack[i]; i++);
+       for (i = 0; (i < FR_DICT_MAX_TLV_STACK) && da_stack[i]; i++);
        if (!i) return;
 
        fr_log(&default_log, L_DBG, file, line, "stk: Currently in %s", func);
@@ -66,29 +66,29 @@ void fr_proto_tlv_stack_print(char const *file, int line, char const *func, fr_d
                fr_log(&default_log, L_DBG, file, line,
                       "stk: %s [%i] %s: %s, vendor: 0x%x (%u), attr: 0x%x (%u)",
                       (i == (int)depth) ? ">" : " ", i,
-                      fr_table_str_by_value(fr_value_box_type_table, tlv_stack[i]->type, "?Unknown?"),
-                      tlv_stack[i]->name,
-                      fr_dict_vendor_num_by_da(tlv_stack[i]), fr_dict_vendor_num_by_da(tlv_stack[i]),
-                      tlv_stack[i]->attr, tlv_stack[i]->attr);
+                      fr_table_str_by_value(fr_value_box_type_table, da_stack[i]->type, "?Unknown?"),
+                      da_stack[i]->name,
+                      fr_dict_vendor_num_by_da(da_stack[i]), fr_dict_vendor_num_by_da(da_stack[i]),
+                      da_stack[i]->attr, da_stack[i]->attr);
        }
        fr_log(&default_log, L_DBG, file, line, "stk:");
 }
 
-void fr_proto_tlv_stack_build(fr_dict_attr_t const **tlv_stack, fr_dict_attr_t const *da)
+void fr_proto_da_stack_build(fr_dict_attr_t const **da_stack, fr_dict_attr_t const *da)
 {
        int i;
        fr_dict_attr_t const *da_p;
 
-       memset(tlv_stack, 0, sizeof(*tlv_stack) * (FR_DICT_MAX_TLV_STACK + 1));
+       memset(da_stack, 0, sizeof(*da_stack) * (FR_DICT_MAX_TLV_STACK + 1));
 
        if (!da) return;
 
        /*
         *      We've finished encoding one nested structure
-        *      now we need to rebuild the tlv_stack and determine
+        *      now we need to rebuild the da_stack and determine
         *      where the common point is.
         */
        for (i = da->depth, da_p = da;
             da_p->parent && (i >= 0);
-            i--, da_p = da_p->parent) tlv_stack[i - 1] = da_p;
+            i--, da_p = da_p->parent) da_stack[i - 1] = da_p;
 }
index 01485e90c4c841c2e0a8f30c464b16ba8884ee06..47c0b91084352946bc18158f70cbd2710b92e806 100644 (file)
@@ -39,7 +39,7 @@ do { \
 #ifndef NDEBUG
 #  define FR_PROTO_TRACE(_fmt, ...)    if (fr_debug_lvl > L_DBG_LVL_3) fr_proto_print(__FILE__, __LINE__, _fmt, ## __VA_ARGS__)
 #  define FR_PROTO_HEX_DUMP(_data, _data_len, _fmt, ...) if (fr_debug_lvl > L_DBG_LVL_3) fr_proto_print_hex_data(__FILE__, __LINE__, _data, _data_len, _fmt, ## __VA_ARGS__)
-#  define FR_PROTO_STACK_PRINT(_x, _y) if (fr_debug_lvl > L_DBG_LVL_3) fr_proto_tlv_stack_print( __FILE__, __LINE__, __FUNCTION__, _x, _y)
+#  define FR_PROTO_STACK_PRINT(_x, _y) if (fr_debug_lvl > L_DBG_LVL_3) fr_proto_da_stack_print( __FILE__, __LINE__, __FUNCTION__, _x, _y)
 #else
 #  define FR_PROTO_TRACE(_fmt, ...)
 #  define FR_PROTO_HEX_DUMP(_data, _data_len, _fmt, ...)
@@ -50,9 +50,9 @@ void fr_proto_print(char const *file, int line, char const *fmt, ...) CC_HINT(fo
 
 void fr_proto_print_hex_data(char const *file, int line, uint8_t const *data, size_t data_len, char const *fmt, ...);
 
-void fr_proto_tlv_stack_print(char const *file, int line, char const *func, fr_dict_attr_t const **tlv_stack, unsigned int depth);
+void fr_proto_da_stack_print(char const *file, int line, char const *func, fr_dict_attr_t const **da_stack, unsigned int depth);
 
-void fr_proto_tlv_stack_build(fr_dict_attr_t const **tlv_stack, fr_dict_attr_t const *da);
+void fr_proto_da_stack_build(fr_dict_attr_t const **da_stack, fr_dict_attr_t const *da);
 
 #ifdef __cplusplus
 }
index 055d2a0a5f8026e8ab672c7b548961336f0bc472..08fe7774fc3d2d98c8b744aab6a3661a9b3e9aa0 100644 (file)
@@ -411,7 +411,7 @@ static int put_bits(uint8_t *p, uint8_t const *end, int start_bit, int num_bits,
 
 
 ssize_t fr_struct_to_network(uint8_t *out, size_t outlen,
-                            fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                            fr_dict_attr_t const **da_stack, unsigned int depth,
                             fr_cursor_t *cursor, void *encoder_ctx,
                             fr_encode_value_t encode_value)
 {
@@ -429,7 +429,7 @@ ssize_t fr_struct_to_network(uint8_t *out, size_t outlen,
        }
 
        VP_VERIFY(vp);
-       parent = tlv_stack[depth];
+       parent = da_stack[depth];
 
        if (parent->type != FR_TYPE_STRUCT) {
                fr_strerror_printf("%s: Expected type \"struct\" got \"%s\"", __FUNCTION__,
@@ -591,8 +591,8 @@ ssize_t fr_struct_to_network(uint8_t *out, size_t outlen,
                        /*
                         *      Call the protocol encoder for non-bit fields.
                         */
-                       fr_proto_tlv_stack_build(tlv_stack, child);
-                       slen = encode_value(p, outlen, tlv_stack, depth + 1, cursor, encoder_ctx);
+                       fr_proto_da_stack_build(da_stack, child);
+                       slen = encode_value(p, outlen, da_stack, depth + 1, cursor, encoder_ctx);
                        if (slen < 0) return slen;
                        len = slen;
                        vp = fr_cursor_current(cursor);
@@ -653,8 +653,8 @@ ssize_t fr_struct_to_network(uint8_t *out, size_t outlen,
                 */
                if ((vp->da->parent->parent == key_da) &&
                    (vp->da->parent->type == FR_TYPE_STRUCT)) {
-                       fr_proto_tlv_stack_build(tlv_stack, vp->da->parent);
-                       len = fr_struct_to_network(p, outlen, tlv_stack, depth + 2, /* note + 2 !!! */
+                       fr_proto_da_stack_build(da_stack, vp->da->parent);
+                       len = fr_struct_to_network(p, outlen, da_stack, depth + 2, /* note + 2 !!! */
                                                   cursor, encoder_ctx, encode_value);
                        if (len < 0) return len;
                        p += len;
index 99e57e15ad279de318d52ce247f2b7da5a708b88..31c815bf2060466309a3737c4635c208c64fcaf4 100644 (file)
@@ -40,10 +40,10 @@ ssize_t fr_struct_from_network(TALLOC_CTX *ctx, fr_cursor_t *cursor,
                               fr_dict_attr_t const **child,
                               fr_decode_value_t decode_value, void *decoder_ctx) CC_HINT(nonnull(2,3,4));
 
-typedef ssize_t (*fr_encode_value_t)(uint8_t *out, size_t outlen, fr_dict_attr_t const **tlv_stack, unsigned int depth,
+typedef ssize_t (*fr_encode_value_t)(uint8_t *out, size_t outlen, fr_dict_attr_t const **da_stack, unsigned int depth,
                                     fr_cursor_t *cursor, void *encoder_ctx);
 
-ssize_t fr_struct_to_network(uint8_t *out, size_t outlen, fr_dict_attr_t const **tlv_stack, unsigned int depth,
+ssize_t fr_struct_to_network(uint8_t *out, size_t outlen, fr_dict_attr_t const **da_stack, unsigned int depth,
                             fr_cursor_t *cursor, void *encoder_ctx,
                             fr_encode_value_t encode_value) CC_HINT(nonnull(1,3,5));
 
index 207d435006a92076d9b2a47f15b8412742d9670f..600cc7fc531e765d1c31f3885798af233ad6c18f 100644 (file)
@@ -85,8 +85,8 @@ static inline VALUE_PAIR *first_encodable(fr_cursor_t *cursor, void *encoder_ctx
  *
  * @param[out] out             buffer to write the option to.
  * @param[in] outlen           length of the output buffer.
- * @param[in] tlv_stack                Describing nesting of options.
- * @param[in] depth            in tlv_stack.
+ * @param[in] da_stack         Describing nesting of options.
+ * @param[in] depth            in da_stack.
  * @param[in,out] cursor       Current attribute we're encoding.
  * @param[in] encoder_ctx      Containing DHCPv4 dictionary.
  * @return
@@ -95,7 +95,7 @@ static inline VALUE_PAIR *first_encodable(fr_cursor_t *cursor, void *encoder_ctx
  *     - -2 if unsupported type.
  */
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, fr_dhcpv4_ctx_t *encoder_ctx)
 {
        VALUE_PAIR      *vp = fr_cursor_current(cursor);
@@ -103,12 +103,12 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        size_t          need = 0;
        ssize_t         len;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
        FR_PROTO_TRACE("%zu byte(s) available for value", outlen);
 
        if (outlen < vp->vp_length) return -1;  /* Not enough output buffer space. */
 
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        case FR_TYPE_BOOL:
        case FR_TYPE_UINT8:
        case FR_TYPE_UINT16:
@@ -148,9 +148,9 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
                return -2;
        }
        vp = next_encodable(cursor, encoder_ctx);       /* We encoded a leaf, advance the cursor */
-       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
        FR_PROTO_HEX_DUMP(out, (p - out), "Value");
 
        return p - out;
@@ -240,8 +240,8 @@ static uint8_t *extend_option(uint8_t *start, uint8_t *end, uint8_t *p, int len)
  *
  * @param[out] out             buffer to write the TLV to.
  * @param[in] outlen           length of the output buffer.
- * @param[in] tlv_stack                Describing nesting of options.
- * @param[in] depth            in the tlv_stack.
+ * @param[in] da_stack         Describing nesting of options.
+ * @param[in] depth            in the da_stack.
  * @param[in,out] cursor       Current attribute we're encoding.
  * @param[in] encoder_ctx      Containing DHCPv4 dictionary.
  * @return
@@ -250,18 +250,18 @@ static uint8_t *extend_option(uint8_t *start, uint8_t *end, uint8_t *p, int len)
  *     - < 0 on error.
  */
 static ssize_t encode_rfc_hdr(uint8_t *out, ssize_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, fr_dhcpv4_ctx_t *encoder_ctx)
 {
        ssize_t                 len;
        uint8_t                 *p = out;
        uint8_t                 *start, *end;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
        VALUE_PAIR              *vp = fr_cursor_current(cursor);
 
        if (outlen < 3) return 0;       /* No space */
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Write out the option number
@@ -297,7 +297,7 @@ static ssize_t encode_rfc_hdr(uint8_t *out, ssize_t outlen,
                        break;
                }
 
-               len = encode_value(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_value(p, end - p, da_stack, depth, cursor, encoder_ctx);
                if (len < -1) return len;
                if (len == -1) {
                        FR_PROTO_TRACE("No more space in option");
@@ -308,7 +308,7 @@ static ssize_t encode_rfc_hdr(uint8_t *out, ssize_t outlen,
                        break; /* Packed as much as we can */
                }
 
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
                FR_PROTO_TRACE("Encoded value is %zu byte(s)", len);
                FR_PROTO_HEX_DUMP(start, (p - start), NULL);
 
@@ -336,8 +336,8 @@ static ssize_t encode_rfc_hdr(uint8_t *out, ssize_t outlen,
  *
  * @param[out] out             buffer to write the TLV to.
  * @param[in] outlen           length of the output buffer.
- * @param[in] tlv_stack                Describing nesting of options.
- * @param[in] depth            in the tlv_stack.
+ * @param[in] da_stack         Describing nesting of options.
+ * @param[in] depth            in the da_stack.
  * @param[in,out] cursor       Current attribute we're encoding.
  * @param[in] encoder_ctx      Containing DHCPv4 dictionary.
  * @return
@@ -346,18 +346,18 @@ static ssize_t encode_rfc_hdr(uint8_t *out, ssize_t outlen,
  *     - < 0 on error.
  */
 static ssize_t encode_tlv_hdr(uint8_t *out, ssize_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, fr_dhcpv4_ctx_t *encoder_ctx)
 {
        ssize_t                 len;
        uint8_t                 *p = out;
        uint8_t                 *start, *end;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        if (outlen < 5) return 0;       /* No space */
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Write out the option number
@@ -376,10 +376,10 @@ static ssize_t encode_tlv_hdr(uint8_t *out, ssize_t outlen,
                /*
                 *      Determine the nested type and call the appropriate encoder
                 */
-               if (tlv_stack[depth + 1]->type == FR_TYPE_TLV) {
-                       len = encode_tlv_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+               if (da_stack[depth + 1]->type == FR_TYPE_TLV) {
+                       len = encode_tlv_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
                } else {
-                       len = encode_rfc_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+                       len = encode_rfc_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
                }
                if (len < 0) return len;
                if (len == 0) break;            /* Insufficient space */
@@ -439,7 +439,7 @@ static ssize_t encode_tlv_hdr(uint8_t *out, ssize_t outlen,
                        }
                }
 
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
                FR_PROTO_HEX_DUMP(out, (p - start), "TLV header and sub TLVs");
 
                /*
@@ -452,7 +452,7 @@ static ssize_t encode_tlv_hdr(uint8_t *out, ssize_t outlen,
                 *      rebuilding the TLV Stack, the attribute
                 *      at this depth is the same.
                 */
-               if (da != tlv_stack[depth]) break;
+               if (da != da_stack[depth]) break;
                vp = fr_cursor_current(cursor);
        }
 
@@ -475,7 +475,7 @@ ssize_t fr_dhcpv4_encode_option(uint8_t *out, size_t outlen, fr_cursor_t *cursor
 {
        VALUE_PAIR              *vp;
        unsigned int            depth = 0;
-       fr_dict_attr_t const    *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack[FR_DICT_MAX_TLV_STACK + 1];
        ssize_t                 len;
 
        vp = first_encodable(cursor, encoder_ctx);
@@ -489,20 +489,20 @@ ssize_t fr_dhcpv4_encode_option(uint8_t *out, size_t outlen, fr_cursor_t *cursor
                return 0;
        }
 
-       fr_proto_tlv_stack_build(tlv_stack, vp->da);
+       fr_proto_da_stack_build(da_stack, vp->da);
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      We only have two types of options in DHCPv4
         */
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        case FR_TYPE_TLV:
-               len = encode_tlv_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_tlv_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
                break;
 
        default:
-               len = encode_rfc_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_rfc_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
                break;
        }
 
index 2b62a5771cbc5467f16c611949273e721c2a9c2f..f3cf3e9271d4f47a88db7b3a5386463e88373e68 100644 (file)
 #include "attrs.h"
 
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, void *encoder_ctx);
 
 static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx);
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx);
 
 static inline bool is_encodable(fr_dict_attr_t const *root, VALUE_PAIR const *vp)
@@ -133,37 +133,37 @@ static inline ssize_t encode_option_hdr(uint8_t *out, size_t outlen, uint16_t op
 }
 
 static ssize_t encode_struct(uint8_t *out, size_t outlen,
-                            fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                            fr_dict_attr_t const **da_stack, unsigned int depth,
                             fr_cursor_t *cursor, void *encoder_ctx)
 {
        VP_VERIFY(fr_cursor_current(cursor));
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (tlv_stack[depth]->type != FR_TYPE_STRUCT) {
+       if (da_stack[depth]->type != FR_TYPE_STRUCT) {
                fr_strerror_printf("%s: Expected type \"struct\" got \"%s\"", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return PAIR_ENCODE_FATAL_ERROR;
        }
 
-       if (!tlv_stack[depth + 1]) {
+       if (!da_stack[depth + 1]) {
                fr_strerror_printf("%s: Can't encode empty struct", __FUNCTION__);
                return PAIR_ENCODE_FATAL_ERROR;
        }
 
-       return fr_struct_to_network(out, outlen, tlv_stack, depth, cursor, encoder_ctx, encode_value);
+       return fr_struct_to_network(out, outlen, da_stack, depth, cursor, encoder_ctx, encode_value);
 }
 
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 slen;
        uint8_t                 *p = out, *end = p + outlen;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Pack multiple attributes into into a single option
@@ -171,7 +171,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        if (da->type == FR_TYPE_STRUCT) {
                fr_dhcpv6_encode_ctx_t  *packet_ctx = encoder_ctx;
 
-               slen = encode_struct(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_struct(out, outlen, da_stack, depth, cursor, encoder_ctx);
                if (slen < 0) return slen;
 
                /*
@@ -185,7 +185,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
                if (!is_encodable(packet_ctx->root, vp)) {
                        vp = next_encodable(cursor, packet_ctx);
                }
-               fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+               fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
                return slen;
        }
 
@@ -193,7 +193,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         *      If it's not a TLV, it should be a value type RFC
         *      attribute make sure that it is.
         */
-       if (tlv_stack[depth + 1] != NULL) {
+       if (da_stack[depth + 1] != NULL) {
                fr_strerror_printf("%s: Encoding value but not at top of stack", __FUNCTION__);
                return PAIR_ENCODE_FATAL_ERROR;
        }
@@ -473,20 +473,20 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         *      Rebuilds the TLV stack for encoding the next attribute
         */
        vp = next_encodable(cursor, encoder_ctx);
-       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
        return p - out;
 }
 
 static inline ssize_t encode_array(uint8_t *out, size_t outlen,
-                                  fr_dict_attr_t const **tlv_stack, int depth,
+                                  fr_dict_attr_t const **da_stack, int depth,
                                   fr_cursor_t *cursor, void *encoder_ctx)
 {
        uint8_t                 *p = out, *end = p + outlen;
        ssize_t                 slen;
        size_t                  element_len;
        VALUE_PAIR              *vp;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        if (!fr_cond_assert_msg(da->flags.array,
                                "%s: Internal sanity check failed, attribute \"%s\" does not have array bit set",
@@ -535,7 +535,7 @@ static inline ssize_t encode_array(uint8_t *out, size_t outlen,
                        p += sizeof(uint16_t);                  /* Make room for the length field */
                }
 
-               slen = encode_value(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_value(p, end - p, da_stack, depth, cursor, encoder_ctx);
                if (slen < 0) return slen;
                if (!fr_cond_assert(slen < UINT16_MAX)) return PAIR_ENCODE_FATAL_ERROR;
 
@@ -568,26 +568,26 @@ static inline ssize_t encode_array(uint8_t *out, size_t outlen,
 }
 
 static ssize_t encode_tlv(uint8_t *out, size_t outlen,
-                         fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                         fr_dict_attr_t const **da_stack, unsigned int depth,
                          fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 slen;
        uint8_t                 *p = out, *end = p + outlen;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        CHECK_FREESPACE(outlen, OPT_HDR_LEN);
 
        while ((size_t)(end - p) > OPT_HDR_LEN) {
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
 
                /*
                 *      Determine the nested type and call the appropriate encoder
                 */
-               if (tlv_stack[depth + 1]->type == FR_TYPE_TLV) {
-                       slen = encode_tlv_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+               if (da_stack[depth + 1]->type == FR_TYPE_TLV) {
+                       slen = encode_tlv_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
                } else {
-                       slen = encode_rfc_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+                       slen = encode_rfc_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
                }
                if (slen < 0) return slen;
 
@@ -603,7 +603,7 @@ static ssize_t encode_tlv(uint8_t *out, size_t outlen,
                 *      rebuilding the TLV Stack, the attribute
                 *      at this depth is the same.
                 */
-               if (da != tlv_stack[depth]) break;
+               if (da != da_stack[depth]) break;
                vp = fr_cursor_current(cursor);
        }
 
@@ -621,14 +621,14 @@ static ssize_t encode_tlv(uint8_t *out, size_t outlen,
  * Otherwise, attribute may be something else.
  */
 static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx)
 {
        uint8_t                 *p = out, *end = p + outlen;
        ssize_t                 slen;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        CHECK_FREESPACE(outlen, OPT_HDR_LEN);
 
@@ -641,9 +641,9 @@ static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen,
         *      Write out the option's value
         */
        if (da->flags.array) {
-               slen = encode_array(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_array(p, end - p, da_stack, depth, cursor, encoder_ctx);
        } else {
-               slen = encode_value(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_value(p, end - p, da_stack, depth, cursor, encoder_ctx);
        }
        if (slen < 0) return slen;
        p += slen;
@@ -662,23 +662,23 @@ static ssize_t encode_rfc_hdr(uint8_t *out, size_t outlen,
 }
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 slen;
        uint8_t                 *p = out, *end = p + outlen;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        VP_VERIFY(fr_cursor_current(cursor));
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (tlv_stack[depth]->type != FR_TYPE_TLV) {
+       if (da_stack[depth]->type != FR_TYPE_TLV) {
                fr_strerror_printf("%s: Expected type \"tlv\" got \"%s\"", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return PAIR_ENCODE_FATAL_ERROR;
        }
 
-       if (!tlv_stack[depth + 1]) {
+       if (!da_stack[depth + 1]) {
                fr_strerror_printf("%s: Can't encode empty TLV", __FUNCTION__);
                return PAIR_ENCODE_FATAL_ERROR;
        }
@@ -686,7 +686,7 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
        CHECK_FREESPACE(outlen, OPT_HDR_LEN);
 
        p += OPT_HDR_LEN;       /* Make room for option header */
-       slen = encode_tlv(p, end - p, tlv_stack, depth, cursor, encoder_ctx);
+       slen = encode_tlv(p, end - p, da_stack, depth, cursor, encoder_ctx);
        if (slen < 0) return slen;
        p += slen;
 
@@ -722,16 +722,16 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
  *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  */
 static ssize_t encode_vsio_hdr(uint8_t *out, size_t outlen,
-                              fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                              fr_dict_attr_t const **da_stack, unsigned int depth,
                               fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 slen;
        uint32_t                pen;
        uint8_t                 *p = out, *end = p + outlen;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
        fr_dict_attr_t const    *dv;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      DA should be a VSA type with the value of OPTION_VENDOR_OPTS.
@@ -751,8 +751,8 @@ static ssize_t encode_vsio_hdr(uint8_t *out, size_t outlen,
        /*
         *      Now process the vendor ID part (which is one attribute deeper)
         */
-       dv = tlv_stack[++depth];
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       dv = da_stack[++depth];
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        if (dv->type != FR_TYPE_VENDOR) {
                fr_strerror_printf("%s: Expected type \"vsa\" got \"%s\"", __FUNCTION__,
@@ -792,13 +792,13 @@ static ssize_t encode_vsio_hdr(uint8_t *out, size_t outlen,
         *      Encode the different data types
         */
        if (da->type == FR_TYPE_TLV) {
-               slen = encode_tlv_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+               slen = encode_tlv_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
 
        } else {
                /*
                 *      Normal vendor option
                 */
-               slen = encode_rfc_hdr(p, end - p, tlv_stack, depth + 1, cursor, encoder_ctx);
+               slen = encode_rfc_hdr(p, end - p, da_stack, depth + 1, cursor, encoder_ctx);
        }
 
        if (slen < 0) return slen;
@@ -828,7 +828,7 @@ ssize_t fr_dhcpv6_encode_option(uint8_t *out, size_t outlen, fr_cursor_t *cursor
 {
        VALUE_PAIR              *vp;
        unsigned int            depth = 0;
-       fr_dict_attr_t const    *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const    *da_stack[FR_DICT_MAX_TLV_STACK + 1];
        ssize_t                 slen;
 
        vp = first_encodable(cursor, encoder_ctx);
@@ -840,9 +840,9 @@ ssize_t fr_dhcpv6_encode_option(uint8_t *out, size_t outlen, fr_cursor_t *cursor
                return PAIR_ENCODE_SKIPPED;
        }
 
-       fr_proto_tlv_stack_build(tlv_stack, vp->da);
+       fr_proto_da_stack_build(da_stack, vp->da);
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Trim output buffer size for sanity
@@ -852,17 +852,17 @@ ssize_t fr_dhcpv6_encode_option(uint8_t *out, size_t outlen, fr_cursor_t *cursor
        /*
         *      Deal with nested options
         */
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        case FR_TYPE_TLV:
-               slen = encode_tlv_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_tlv_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_VSA:
-               slen = encode_vsio_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_vsio_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
                break;
 
        default:
-               slen = encode_rfc_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               slen = encode_rfc_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
                break;
        }
 
index 255507ae1db8ea5fcb0bbd2e13cc8893453d2e50..e7b115d8c42070a370ef5d5e5cf32155ced83360 100644 (file)
@@ -31,15 +31,15 @@ RCSID("$Id$")
 #include "attrs.h"
 
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, void *encoder_ctx);
 
 static ssize_t encode_rfc_hdr_internal(uint8_t *out, size_t outlen,
-                                      fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                                      fr_dict_attr_t const **da_stack, unsigned int depth,
                                       fr_cursor_t *cursor, void *encoder_ctx);
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx);
 
 
@@ -266,17 +266,17 @@ static void encode_tunnel_password(uint8_t *out, ssize_t *outlen,
 }
 
 static ssize_t encode_tlv_hdr_internal(uint8_t *out, size_t outlen,
-                                      fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                                      fr_dict_attr_t const **da_stack, unsigned int depth,
                                       fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 len;
        uint8_t                 *p = out;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
        while (outlen >= 5) {
                size_t sublen;
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
 
                /*
                 *      This attribute carries sub-TLVs.  The sub-TLVs
@@ -288,10 +288,10 @@ static ssize_t encode_tlv_hdr_internal(uint8_t *out, size_t outlen,
                /*
                 *      Determine the nested type and call the appropriate encoder
                 */
-               if (tlv_stack[depth + 1]->type == FR_TYPE_TLV) {
-                       len = encode_tlv_hdr(p, sublen, tlv_stack, depth + 1, cursor, encoder_ctx);
+               if (da_stack[depth + 1]->type == FR_TYPE_TLV) {
+                       len = encode_tlv_hdr(p, sublen, da_stack, depth + 1, cursor, encoder_ctx);
                } else {
-                       len = encode_rfc_hdr_internal(p, sublen, tlv_stack, depth + 1, cursor, encoder_ctx);
+                       len = encode_rfc_hdr_internal(p, sublen, da_stack, depth + 1, cursor, encoder_ctx);
                }
 
                if (len <= 0) return len;
@@ -309,7 +309,7 @@ static ssize_t encode_tlv_hdr_internal(uint8_t *out, size_t outlen,
                 *      rebuilding the TLV Stack, the attribute
                 *      at this depth is the same.
                 */
-               if (da != tlv_stack[depth]) break;
+               if (da != da_stack[depth]) break;
                vp = fr_cursor_current(cursor);
        }
 
@@ -317,21 +317,21 @@ static ssize_t encode_tlv_hdr_internal(uint8_t *out, size_t outlen,
 }
 
 static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
-                             fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                             fr_dict_attr_t const **da_stack, unsigned int depth,
                              fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 len;
 
        VP_VERIFY(fr_cursor_current(cursor));
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (tlv_stack[depth]->type != FR_TYPE_TLV) {
+       if (da_stack[depth]->type != FR_TYPE_TLV) {
                fr_strerror_printf("%s: Expected type \"tlv\" got \"%s\"", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return -1;
        }
 
-       if (!tlv_stack[depth + 1]) {
+       if (!da_stack[depth + 1]) {
                fr_strerror_printf("%s: Can't encode empty TLV", __FUNCTION__);
                return -1;
        }
@@ -341,12 +341,12 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
        /*
         *      Encode the first level of TLVs
         */
-       out[0] = tlv_stack[depth]->attr & 0xff;
+       out[0] = da_stack[depth]->attr & 0xff;
        out[1] = 2;     /* TLV header */
 
        if (outlen > 255) outlen = 255;
 
-       len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+       len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
        if (len <= 0) return len;
 
        out[1] += len;
@@ -362,7 +362,7 @@ static ssize_t encode_tlv_hdr(uint8_t *out, size_t outlen,
  *     < 0, failure.
  */
 static ssize_t encode_value(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, void *encoder_ctx)
 {
        size_t                  offset;
@@ -371,11 +371,11 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        uint8_t                 *ptr = out;
        uint8_t                 buffer[64];
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
        fr_radius_ctx_t         *packet_ctx = encoder_ctx;
 
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Catch errors early on.
@@ -390,7 +390,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         *      but it seems to work OK.
         */
        if (da->type == FR_TYPE_TLV) {
-               return encode_tlv_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               return encode_tlv_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
        }
 
        /*
@@ -399,11 +399,11 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        if (da->type == FR_TYPE_STRUCT) {
                ssize_t struct_len;
 
-               struct_len = fr_struct_to_network(out, outlen, tlv_stack, depth, cursor, encoder_ctx, encode_value);
+               struct_len = fr_struct_to_network(out, outlen, da_stack, depth, cursor, encoder_ctx, encode_value);
                if (struct_len <= 0) return struct_len;
 
                vp = fr_cursor_current(cursor);
-               fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+               fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
                out += struct_len;
                outlen -= struct_len;
@@ -413,21 +413,21 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
                 *
                 *      The fr_struct_to_network() function can't do
                 *      this work, as it's not protocol aware, and
-                *      doesn't have the tlv_stack or encoder_ctx.
+                *      doesn't have the da_stack or encoder_ctx.
                 *
                 *      Note that we call the "internal" encode
                 *      function, as we don't want the encapsulating
                 *      TLV to be encoded here.  It's number is just
                 *      the field number in the struct.
                 */
-               while (vp && (tlv_stack[depth] == da) && (outlen > 0)) {
-                       len = encode_tlv_hdr_internal(out, outlen, tlv_stack, depth + 1, cursor, encoder_ctx);
+               while (vp && (da_stack[depth] == da) && (outlen > 0)) {
+                       len = encode_tlv_hdr_internal(out, outlen, da_stack, depth + 1, cursor, encoder_ctx);
                        if (len < 0) return len;
 
                        struct_len += len;
 
                        vp = fr_cursor_current(cursor);
-                       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+                       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
                }
 
                return struct_len;
@@ -437,7 +437,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         *      If it's not a TLV, it should be a value type RFC
         *      attribute make sure that it is.
         */
-       if (tlv_stack[depth + 1] != NULL) {
+       if (da_stack[depth + 1] != NULL) {
                fr_strerror_printf("%s: Encoding value but not at top of stack", __FUNCTION__);
                return -1;
        }
@@ -450,7 +450,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        switch (da->type) {
        case FR_TYPE_STRUCTURAL:
                fr_strerror_printf("%s: Called with structural type %s", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return -1;
 
        default:
@@ -552,7 +552,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         */
        if (!data || (len == 0)) {
                vp = next_encodable(cursor);
-               fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+               fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
                return 0;
        }
 
@@ -629,7 +629,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
         *      Rebuilds the TLV stack for encoding the next attribute
         */
        vp = next_encodable(cursor);
-       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
        return len + (ptr - out);
 }
@@ -693,7 +693,7 @@ static ssize_t attr_shift(uint8_t const *start, uint8_t const *end,
  *
  */
 static int encode_extended_hdr(uint8_t *out, size_t outlen,
-                              fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                              fr_dict_attr_t const **da_stack, unsigned int depth,
                               fr_cursor_t *cursor, void *encoder_ctx)
 {
        int                     len;
@@ -707,16 +707,16 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
 
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       extra = (!tlv_stack[0]->flags.extra && (tlv_stack[0]->flags.subtype == FLAG_EXTENDED_ATTR));
+       extra = (!da_stack[0]->flags.extra && (da_stack[0]->flags.subtype == FLAG_EXTENDED_ATTR));
 
        /*
         *      @fixme: check depth of stack
         */
-       attr_type = tlv_stack[0]->type;
+       attr_type = da_stack[0]->type;
 #ifndef NDEBUG
-       vsa_type = tlv_stack[1]->type;
+       vsa_type = da_stack[1]->type;
        if (fr_debug_lvl > 3) {
                jump += extra;
        }
@@ -732,9 +732,9 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
                /*
                 *      Encode which extended attribute it is.
                 */
-               out[0] = tlv_stack[depth++]->attr & 0xff;
+               out[0] = da_stack[depth++]->attr & 0xff;
                out[1] = 3 + extra;
-               out[2] = tlv_stack[depth]->attr & 0xff;
+               out[2] = da_stack[depth]->attr & 0xff;
 
                if (extra) out[3] = 0;  /* flags start off at zero */
                break;
@@ -742,16 +742,16 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
        default:
                fr_strerror_printf("%s : Called for non-extended attribute type %s",
                                   __FUNCTION__, fr_table_str_by_value(fr_value_box_type_table,
-                                  tlv_stack[depth]->type, "?Unknown?"));
+                                  da_stack[depth]->type, "?Unknown?"));
                return -1;
        }
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Handle VSA as "VENDOR + attr"
         */
-       if (tlv_stack[depth]->type == FR_TYPE_VSA) {
+       if (da_stack[depth]->type == FR_TYPE_VSA) {
                uint8_t *evs = out + out[1];
                uint32_t lvalue;
 
@@ -759,14 +759,14 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
 
                depth++;
 
-               lvalue = htonl(tlv_stack[depth++]->attr);
+               lvalue = htonl(da_stack[depth++]->attr);
                memcpy(evs, &lvalue, 4);
 
-               evs[4] = tlv_stack[depth]->attr & 0xff;
+               evs[4] = da_stack[depth]->attr & 0xff;
 
                out[1] += 5;
 
-               FR_PROTO_STACK_PRINT(tlv_stack, depth);
+               FR_PROTO_STACK_PRINT(da_stack, depth);
                FR_PROTO_HEX_DUMP(out, out[1], "header extended vendor specific");
        } else {
                FR_PROTO_HEX_DUMP(out, out[1], "header extended");
@@ -778,10 +778,10 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
         */
        if ((attr_type == FR_TYPE_EXTENDED) && !extra && (outlen > 255)) outlen = 255;
 
-       if (tlv_stack[depth]->type == FR_TYPE_TLV) {
-               len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+       if (da_stack[depth]->type == FR_TYPE_TLV) {
+               len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
        } else {
-               len = encode_value(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_value(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
        }
        if (len <= 0) return len;
 
@@ -817,7 +817,7 @@ static int encode_extended_hdr(uint8_t *out, size_t outlen,
  * prepended to each chunk.
  */
 static ssize_t encode_concat(uint8_t *out, size_t outlen,
-                            fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                            fr_dict_attr_t const **da_stack, unsigned int depth,
                             fr_cursor_t *cursor, UNUSED void *encoder_ctx)
 {
        uint8_t                 *ptr = out;
@@ -825,7 +825,7 @@ static ssize_t encode_concat(uint8_t *out, size_t outlen,
        size_t                  len, left;
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        p = vp->vp_octets;
        len = fr_radius_attr_len(vp);
@@ -833,7 +833,7 @@ static ssize_t encode_concat(uint8_t *out, size_t outlen,
        while (len > 0) {
                if (outlen <= 2) break;
 
-               ptr[0] = tlv_stack[depth]->attr & 0xff;
+               ptr[0] = da_stack[depth]->attr & 0xff;
                ptr[1] = 2;
 
                left = len;
@@ -862,7 +862,7 @@ static ssize_t encode_concat(uint8_t *out, size_t outlen,
         *      @fixme: attributes with 'concat' MUST of type
         *      'octets', and therefore CANNOT have any TLV data in them.
         */
-       fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+       fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
 
        return ptr - out;
 }
@@ -874,25 +874,25 @@ static ssize_t encode_concat(uint8_t *out, size_t outlen,
  * Otherwise, attribute may be something else.
  */
 static ssize_t encode_rfc_hdr_internal(uint8_t *out, size_t outlen,
-                                      fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                                      fr_dict_attr_t const **da_stack, unsigned int depth,
                                       fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t len;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        default:
                fr_strerror_printf("%s: Called with structural type %s", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return -1;
 
        case FR_TYPE_STRUCT:
        case FR_TYPE_VALUES:
-               if (((fr_dict_vendor_num_by_da(tlv_stack[depth]) == 0) && (tlv_stack[depth]->attr == 0)) ||
-                   (tlv_stack[depth]->attr > 255)) {
+               if (((fr_dict_vendor_num_by_da(da_stack[depth]) == 0) && (da_stack[depth]->attr == 0)) ||
+                   (da_stack[depth]->attr > 255)) {
                        fr_strerror_printf("%s: Called with non-standard attribute %u", __FUNCTION__,
-                                          tlv_stack[depth]->attr);
+                                          da_stack[depth]->attr);
                        return -1;
                }
                break;
@@ -900,12 +900,12 @@ static ssize_t encode_rfc_hdr_internal(uint8_t *out, size_t outlen,
 
        if (outlen <= 2) return 0;
 
-       out[0] = tlv_stack[depth]->attr & 0xff;
+       out[0] = da_stack[depth]->attr & 0xff;
        out[1] = 2;
 
        if (outlen > 255) outlen = 255;
 
-       len = encode_value(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+       len = encode_value(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
        if (len <= 0) return len;
 
        out[1] += len;
@@ -921,26 +921,26 @@ static ssize_t encode_rfc_hdr_internal(uint8_t *out, size_t outlen,
  * If it's in the RFC format, call encode_rfc_hdr_internal.  Otherwise, encode it here.
  */
 static ssize_t encode_vendor_attr_hdr(uint8_t *out, size_t outlen,
-                                     fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                                     fr_dict_attr_t const **da_stack, unsigned int depth,
                                      fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 len;
        size_t                  hdr_len;
        fr_dict_attr_t const    *da, *dv;
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       dv = tlv_stack[depth++];
+       dv = da_stack[depth++];
 
        if (dv->type != FR_TYPE_VENDOR) {
                fr_strerror_printf("Expected Vendor");
                return -1;
        }
 
-       da = tlv_stack[depth];
+       da = da_stack[depth];
 
        if ((da->type != FR_TYPE_TLV) && (dv->flags.type_size == 1) && (dv->flags.length == 1)) {
-               return encode_rfc_hdr_internal(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+               return encode_rfc_hdr_internal(out, outlen, da_stack, depth, cursor, encoder_ctx);
        }
 
        hdr_len = dv->flags.type_size + dv->flags.length;
@@ -997,10 +997,10 @@ static ssize_t encode_vendor_attr_hdr(uint8_t *out, size_t outlen,
         *      if this is a TLV, we must process it via the
         *      internal tlv function, else we get a double TLV header.
         */
-       if (tlv_stack[depth]->type == FR_TYPE_TLV) {
-               len = encode_tlv_hdr_internal(out + hdr_len, outlen - hdr_len, tlv_stack, depth, cursor, encoder_ctx);
+       if (da_stack[depth]->type == FR_TYPE_TLV) {
+               len = encode_tlv_hdr_internal(out + hdr_len, outlen - hdr_len, da_stack, depth, cursor, encoder_ctx);
        } else {
-               len = encode_value(out + hdr_len, outlen - hdr_len, tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_value(out + hdr_len, outlen - hdr_len, da_stack, depth, cursor, encoder_ctx);
        }
        if (len <= 0) return len;
 
@@ -1015,7 +1015,7 @@ static ssize_t encode_vendor_attr_hdr(uint8_t *out, size_t outlen,
  *
  */
 static int encode_wimax_hdr(uint8_t *out, size_t outlen,
-                           fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                           fr_dict_attr_t const **da_stack, unsigned int depth,
                            fr_cursor_t *cursor, void *encoder_ctx)
 {
        int                     len;
@@ -1024,7 +1024,7 @@ static int encode_wimax_hdr(uint8_t *out, size_t outlen,
        VALUE_PAIR const        *vp = fr_cursor_current(cursor);
 
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Not enough freespace for:
@@ -1032,19 +1032,19 @@ static int encode_wimax_hdr(uint8_t *out, size_t outlen,
         */
        if (outlen < 9) return 0;
 
-       if (tlv_stack[depth++]->attr != FR_VENDOR_SPECIFIC) {
-               fr_strerror_printf("%s: level[1] of tlv_stack is incorrect, must be Vendor-Specific (26)",
+       if (da_stack[depth++]->attr != FR_VENDOR_SPECIFIC) {
+               fr_strerror_printf("%s: level[1] of da_stack is incorrect, must be Vendor-Specific (26)",
                                   __FUNCTION__);
                return -1;
        }
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       if (tlv_stack[depth++]->attr != VENDORPEC_WIMAX) {
-               fr_strerror_printf("%s: level[2] of tlv_stack is incorrect, must be Wimax vendor %i", __FUNCTION__,
+       if (da_stack[depth++]->attr != VENDORPEC_WIMAX) {
+               fr_strerror_printf("%s: level[2] of da_stack is incorrect, must be Wimax vendor %i", __FUNCTION__,
                                   VENDORPEC_WIMAX);
                return -1;
        }
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        /*
         *      Build the Vendor-Specific header
@@ -1058,7 +1058,7 @@ static int encode_wimax_hdr(uint8_t *out, size_t outlen,
        /*
         *      Encode the first attribute
         */
-       out[6] = tlv_stack[depth]->attr;
+       out[6] = da_stack[depth]->attr;
        out[7] = 3;
        out[8] = 0;             /* continuation byte */
 
@@ -1066,11 +1066,11 @@ static int encode_wimax_hdr(uint8_t *out, size_t outlen,
         *      "outlen" can be larger than 255 because of the "continuation" byte.
         */
 
-       if (tlv_stack[depth]->type == FR_TYPE_TLV) {
-               len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+       if (da_stack[depth]->type == FR_TYPE_TLV) {
+               len = encode_tlv_hdr_internal(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
                if (len <= 0) return len;
        } else {
-               len = encode_value(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+               len = encode_value(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
                if (len <= 0) return len;
        }
 
@@ -1096,14 +1096,14 @@ static int encode_wimax_hdr(uint8_t *out, size_t outlen,
  *
  */
 static int encode_vsa_hdr(uint8_t *out, size_t outlen,
-                         fr_dict_attr_t const **tlv_stack, unsigned int depth,
+                         fr_dict_attr_t const **da_stack, unsigned int depth,
                          fr_cursor_t *cursor, void *encoder_ctx)
 {
        ssize_t                 len;
        uint32_t                lvalue;
-       fr_dict_attr_t const    *da = tlv_stack[depth];
+       fr_dict_attr_t const    *da = da_stack[depth];
 
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        if (da->type != FR_TYPE_VSA) {
                fr_strerror_printf("%s: Expected type \"vsa\" got \"%s\"", __FUNCTION__,
@@ -1114,8 +1114,8 @@ static int encode_vsa_hdr(uint8_t *out, size_t outlen,
        /*
         *      Double-check for WiMAX format
         */
-       if (fr_dict_vendor_num_by_da(tlv_stack[depth + 1]) == VENDORPEC_WIMAX) {
-               return encode_wimax_hdr(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+       if (fr_dict_vendor_num_by_da(da_stack[depth + 1]) == VENDORPEC_WIMAX) {
+               return encode_wimax_hdr(out, outlen, da_stack, depth, cursor, encoder_ctx);
        }
 
        /*
@@ -1132,8 +1132,8 @@ static int encode_vsa_hdr(uint8_t *out, size_t outlen,
        /*
         *      Now process the vendor ID part (which is one attribute deeper)
         */
-       da = tlv_stack[++depth];
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       da = da_stack[++depth];
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
        if (da->type != FR_TYPE_VENDOR) {
                fr_strerror_printf("%s: Expected type \"vsa\" got \"%s\"", __FUNCTION__,
@@ -1146,7 +1146,7 @@ static int encode_vsa_hdr(uint8_t *out, size_t outlen,
 
        if (outlen > 255) outlen = 255;
 
-       len = encode_vendor_attr_hdr(out + out[1], outlen - out[1], tlv_stack, depth, cursor, encoder_ctx);
+       len = encode_vendor_attr_hdr(out + out[1], outlen - out[1], da_stack, depth, cursor, encoder_ctx);
        if (len < 0) return len;
 
        out[1] += len;
@@ -1159,7 +1159,7 @@ static int encode_vsa_hdr(uint8_t *out, size_t outlen,
 /** Encode an RFC standard attribute 1..255
  *
  */
-static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tlv_stack, unsigned int depth,
+static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **da_stack, unsigned int depth,
                          fr_cursor_t *cursor, void *encoder_ctx)
 {
        VALUE_PAIR const *vp = fr_cursor_current(cursor);
@@ -1168,16 +1168,16 @@ static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tl
         *      Sanity checks
         */
        VP_VERIFY(vp);
-       FR_PROTO_STACK_PRINT(tlv_stack, depth);
+       FR_PROTO_STACK_PRINT(da_stack, depth);
 
-       switch (tlv_stack[depth]->type) {
+       switch (da_stack[depth]->type) {
        case FR_TYPE_EXTENDED:
        case FR_TYPE_TLV:
        case FR_TYPE_VSA:
        case FR_TYPE_VENDOR:
                /* FR_TYPE_STRUCT is actually allowed... */
                fr_strerror_printf("%s: Expected leaf type got \"%s\"", __FUNCTION__,
-                                  fr_table_str_by_value(fr_value_box_type_table, tlv_stack[depth]->type, "?Unknown?"));
+                                  fr_table_str_by_value(fr_value_box_type_table, da_stack[depth]->type, "?Unknown?"));
                return -1;
 
        default:
@@ -1185,8 +1185,8 @@ static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tl
                 *      Attribute 0 is fine as a TLV leaf, or VSA, but not
                 *      in the original standards space.
                 */
-               if (((fr_dict_vendor_num_by_da(tlv_stack[depth]) == 0) && (tlv_stack[depth]->attr == 0)) ||
-                   (tlv_stack[depth]->attr > 255)) {
+               if (((fr_dict_vendor_num_by_da(da_stack[depth]) == 0) && (da_stack[depth]->attr == 0)) ||
+                   (da_stack[depth]->attr > 255)) {
                        fr_strerror_printf("%s: Called with non-standard attribute %u", __FUNCTION__, vp->da->attr);
                        return -1;
                }
@@ -1204,7 +1204,7 @@ static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tl
                FR_PROTO_HEX_DUMP(out, 2, "header rfc");
 
                vp = next_encodable(cursor);
-               fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+               fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
                return out[1];
        }
 
@@ -1222,11 +1222,11 @@ static int encode_rfc_hdr(uint8_t *out, size_t outlen, fr_dict_attr_t const **tl
                FR_PROTO_HEX_DUMP(out, 2, "header rfc");
 
                vp = next_encodable(cursor);
-               fr_proto_tlv_stack_build(tlv_stack, vp ? vp->da : NULL);
+               fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
                return out[1];
        }
 
-       return encode_rfc_hdr_internal(out, outlen, tlv_stack, depth, cursor, encoder_ctx);
+       return encode_rfc_hdr_internal(out, outlen, da_stack, depth, cursor, encoder_ctx);
 }
 
 /** Encode a data structure into a RADIUS attribute
@@ -1250,7 +1250,7 @@ ssize_t fr_radius_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
        int ret;
        size_t attr_len;
 
-       fr_dict_attr_t const *tlv_stack[FR_DICT_MAX_TLV_STACK + 1];
+       fr_dict_attr_t const *da_stack[FR_DICT_MAX_TLV_STACK + 1];
        fr_dict_attr_t const *da = NULL;
 
        if (!cursor || !out || (outlen <= 2)) return -1;
@@ -1291,19 +1291,19 @@ ssize_t fr_radius_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
         *      Fast path for the common case.
         */
        if (vp->da->parent->flags.is_root && !vp->da->flags.concat && (vp->vp_type != FR_TYPE_TLV)) {
-               tlv_stack[0] = vp->da;
-               tlv_stack[1] = NULL;
-               FR_PROTO_STACK_PRINT(tlv_stack, 0);
-               return encode_rfc_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               da_stack[0] = vp->da;
+               da_stack[1] = NULL;
+               FR_PROTO_STACK_PRINT(da_stack, 0);
+               return encode_rfc_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
        }
 
        /*
         *      Do more work to set up the stack for the complex case.
         */
-       fr_proto_tlv_stack_build(tlv_stack, vp->da);
-       FR_PROTO_STACK_PRINT(tlv_stack, 0);
+       fr_proto_da_stack_build(da_stack, vp->da);
+       FR_PROTO_STACK_PRINT(da_stack, 0);
 
-       da = tlv_stack[0];
+       da = da_stack[0];
        switch (da->type) {
        default:
                if (da->flags.concat) {
@@ -1313,10 +1313,10 @@ ssize_t fr_radius_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
                         *      using a different scheme than the "long
                         *      extended" one.
                         */
-                       ret = encode_concat(out, outlen, tlv_stack, 0, cursor, encoder_ctx);
+                       ret = encode_concat(out, outlen, da_stack, 0, cursor, encoder_ctx);
                        break;
                }
-               ret = encode_rfc_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               ret = encode_rfc_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_VSA:
@@ -1327,18 +1327,18 @@ ssize_t fr_radius_encode_pair(uint8_t *out, size_t outlen, fr_cursor_t *cursor,
                         *      attributes by fragmenting them inside
                         *      of the WiMAX VSA space.
                         */
-                       ret = encode_wimax_hdr(out, outlen, tlv_stack, 0, cursor, encoder_ctx);
+                       ret = encode_wimax_hdr(out, outlen, da_stack, 0, cursor, encoder_ctx);
                        break;
                }
-               ret = encode_vsa_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               ret = encode_vsa_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_TLV:
-               ret = encode_tlv_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               ret = encode_tlv_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_EXTENDED:
-               ret = encode_extended_hdr(out, attr_len, tlv_stack, 0, cursor, encoder_ctx);
+               ret = encode_extended_hdr(out, attr_len, da_stack, 0, cursor, encoder_ctx);
                break;
 
        case FR_TYPE_INVALID: