From: Alan T. DeKok Date: Sun, 19 Dec 2021 13:56:15 +0000 (-0500) Subject: remove fr_dict_t from struct trampoline functions X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d4e0ab257d071df017a472493dc5503253eb3236;p=thirdparty%2Ffreeradius-server.git remove fr_dict_t from struct trampoline functions --- diff --git a/src/lib/util/struct.c b/src/lib/util/struct.c index 621a49a5518..c6756f03131 100644 --- a/src/lib/util/struct.c +++ b/src/lib/util/struct.c @@ -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; diff --git a/src/lib/util/struct.h b/src/lib/util/struct.h index 5609d1b36ac..5d458117327 100644 --- a/src/lib/util/struct.h +++ b/src/lib/util/struct.h @@ -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); diff --git a/src/protocols/dhcpv6/decode.c b/src/protocols/dhcpv6/decode.c index bc76d6d6291..4ac3f27971d 100644 --- a/src/protocols/dhcpv6/decode.c +++ b/src/protocols/dhcpv6/decode.c @@ -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) { diff --git a/src/protocols/dns/decode.c b/src/protocols/dns/decode.c index f8348664cd7..da5c8c9312f 100644 --- a/src/protocols/dns/decode.c +++ b/src/protocols/dns/decode.c @@ -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); diff --git a/src/protocols/radius/decode.c b/src/protocols/radius/decode.c index 17f1f892079..103d09c172e 100644 --- a/src/protocols/radius/decode.c +++ b/src/protocols/radius/decode.c @@ -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;