]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
remove fr_dict_t from struct trampoline functions
authorAlan T. DeKok <aland@freeradius.org>
Sun, 19 Dec 2021 13:56:15 +0000 (08:56 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 21 Dec 2021 17:22:14 +0000 (12:22 -0500)
src/lib/util/struct.c
src/lib/util/struct.h
src/protocols/dhcpv6/decode.c
src/protocols/dns/decode.c
src/protocols/radius/decode.c

index 621a49a551857b2d35ac2a034820484ab5b2738c..c6756f03131aeed108ee8eb0b89ffe6576c5ccc1 100644 (file)
@@ -225,7 +225,7 @@ ssize_t fr_struct_from_network(TALLOC_CTX *ctx, fr_pair_list_t *out,
                         *      Decode EVERYTHING as a TLV.
                         */
                        while (p < end) {
-                               slen = decode_tlv(child_ctx, child_list, fr_dict_by_da(child), child, p, end - p, decode_ctx);
+                               slen = decode_tlv(child_ctx, child_list, child, p, end - p, decode_ctx);
                                if (slen < 0) {
                                        FR_PROTO_TRACE("failed decoding TLV?");
                                        goto unknown;
@@ -258,7 +258,7 @@ ssize_t fr_struct_from_network(TALLOC_CTX *ctx, fr_pair_list_t *out,
                if (decode_value) {
                        ssize_t slen;
 
-                       slen = decode_value(child_ctx, child_list, fr_dict_by_da(child), child, p, child_length, decode_ctx);
+                       slen = decode_value(child_ctx, child_list, child, p, child_length, decode_ctx);
                        if (slen < 0) {
                                FR_PROTO_TRACE("Failed decoding value");
                                goto unknown;
index 5609d1b36acbd56fcc9937f1c9051c2f060207b3..5d458117327dad9047f48c877df4abd56218867b 100644 (file)
@@ -32,7 +32,7 @@ RCSIDH(struct_h, "$Id$")
 extern "C" {
 #endif
 
-typedef ssize_t (*fr_decode_value_t)(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_t const *dict,
+typedef ssize_t (*fr_decode_value_t)(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                     fr_dict_attr_t const *parent,
                                     uint8_t const *data, size_t const data_len, void *decode_ctx);
 
index bc76d6d629131d05e17995526a6801587de5581b..4ac3f27971d1ab8c9d5a8fbfc9ec352076b4d381 100644 (file)
@@ -43,7 +43,7 @@ static ssize_t decode_tlvs(TALLOC_CTX *ctx, fr_pair_list_t *out,
                           fr_dict_attr_t const *parent,
                           uint8_t const *data, size_t const data_len, void *decode_ctx, bool do_raw);
 
-static ssize_t decode_tlv_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
+static ssize_t decode_tlv_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                     fr_dict_attr_t const *parent,
                                     uint8_t const *data, size_t const data_len, void *decode_ctx)
 {
@@ -106,10 +106,10 @@ static ssize_t decode_dns_labels(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                 fr_dict_attr_t const *parent,
                                 uint8_t const *data, size_t const data_len, void *decode_ctx);
 
-/** Handle arrays of DNS lavels for fr_struct_from_network()
+/** Handle arrays of DNS labels for fr_struct_from_network()
  *
  */
-static ssize_t decode_value_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
+static ssize_t decode_value_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                       fr_dict_attr_t const *parent,
                                       uint8_t const *data, size_t const data_len, void *decode_ctx)
 {
index f8348664cd766a3096ae63dda8f6909f737fc1ce..da5c8c9312f8c8aaaa20c5070fa5f298705fefe2 100644 (file)
@@ -88,21 +88,11 @@ static ssize_t decode_array(TALLOC_CTX *ctx, fr_pair_list_t *out,
 static ssize_t decode_dns_labels(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                 fr_dict_attr_t const *parent,
                                 uint8_t const *data, size_t const data_len, void *decode_ctx);
-static ssize_t decode_tlvs(TALLOC_CTX *ctx, fr_pair_list_t *out,
-                          fr_dict_attr_t const *parent,
-                          uint8_t const *data, size_t const data_len, void *decode_ctx, bool do_raw);
-
-static ssize_t decode_tlv_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
-                                    fr_dict_attr_t const *parent,
-                                    uint8_t const *data, size_t const data_len, void *decode_ctx)
-{
-       return decode_tlvs(ctx, out, parent, data, data_len, decode_ctx, true);
-}
 
 /** Handle arrays of DNS labels for fr_struct_from_network()
  *
  */
-static ssize_t decode_value_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
+static ssize_t decode_value_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out,
                                       fr_dict_attr_t const *parent,
                                       uint8_t const *data, size_t const data_len, void *decode_ctx)
 {
@@ -460,7 +450,7 @@ static ssize_t decode_option(TALLOC_CTX *ctx, fr_pair_list_t *out,
  */
 static ssize_t decode_tlvs(TALLOC_CTX *ctx, fr_pair_list_t *out,
                           fr_dict_attr_t const *parent,
-                          uint8_t const *data, size_t const data_len, void *decode_ctx, bool do_raw)
+                          uint8_t const *data, size_t const data_len, void *decode_ctx)
 {
        uint8_t const *p, *end;
        fr_pair_t *vp;
@@ -481,8 +471,6 @@ static ssize_t decode_tlvs(TALLOC_CTX *ctx, fr_pair_list_t *out,
 
                slen = decode_option(vp, &vp->vp_group, parent, p, (end - p), decode_ctx);
                if (slen <= 0) {
-                       if (!do_raw) return slen - (p - data);
-
                        slen = decode_raw(vp, &vp->vp_group, parent, p, (end - p), decode_ctx);
                        if (slen <= 0) return slen - (p - data);
                }
@@ -514,7 +502,7 @@ static ssize_t decode_record(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_attr_
                }
 
                slen = fr_struct_from_network(ctx, out, attr, p, end - p, true,
-                                             packet_ctx, decode_value_trampoline, decode_tlv_trampoline);
+                                             packet_ctx, decode_value_trampoline, decode_tlvs);
                if (slen < 0) return slen;
                if (!slen) break;
                p += slen;
@@ -626,7 +614,7 @@ static ssize_t decode_rr(TALLOC_CTX *ctx, fr_pair_list_t *out,
        }
 
        slen = fr_struct_from_network(ctx, out, attr_dns_rr, data, data_len, true,
-                                     decode_ctx, decode_value_trampoline, decode_tlv_trampoline);
+                                     decode_ctx, decode_value_trampoline, decode_tlvs);
        if (slen < 0) return slen;
 
        FR_PROTO_TRACE("decoding option complete, returning %zd byte(s)", slen);
index 17f1f892079e0284daa75ad63f65d6acc386b687..103d09c172ef61be283cf09fa56b44d10c5d01a6 100644 (file)
@@ -1117,7 +1117,7 @@ create_attrs:
  *  packet length.  But when we're decoding values inside of a struct,
  *  we're not using extended attributes.
  */
-static ssize_t decode_value(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
+static ssize_t decode_value_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out,
                            fr_dict_attr_t const *parent,
                            uint8_t const *data, size_t data_len, void *decode_ctx)
 {
@@ -1126,7 +1126,7 @@ static ssize_t decode_value(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict
 
 /** Wrapper called by fr_struct_from_network()
  */
-static ssize_t decode_tlv(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_t const *dict,
+static ssize_t decode_tlv_trampoline(TALLOC_CTX *ctx, fr_pair_list_t *out,
                            fr_dict_attr_t const *parent,
                            uint8_t const *data, size_t data_len, void *decode_ctx)
 {
@@ -1576,7 +1576,7 @@ ssize_t fr_radius_decode_pair_value(TALLOC_CTX *ctx, fr_pair_list_t *out,
                 *      into a contiguous memory buffer.
                 */
                ret = fr_struct_from_network(ctx, out, parent, p, attr_len, false,
-                                            packet_ctx, decode_value, decode_tlv);
+                                            packet_ctx, decode_value_trampoline, decode_tlv_trampoline);
                if (ret < 0) goto raw;
                return attr_len;