]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
pass fr_dict_attr_t to fr_value_box_to_network()
authorAlan T. DeKok <aland@freeradius.org>
Tue, 20 Aug 2019 16:01:23 +0000 (12:01 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 20 Aug 2019 17:41:45 +0000 (13:41 -0400)
in preparation for variable-sized dates on the network

src/lib/sim/encode.c
src/lib/util/struct.c
src/lib/util/value.c
src/lib/util/value.h
src/protocols/dhcpv4/encode.c
src/protocols/dhcpv6/encode.c
src/protocols/radius/encode.c

index 6fc60f81ec660d2aa5a89c4ddb827018e447db80..301e644bbdd5d8061d24c54d3de41f92dcc027cb 100644 (file)
@@ -570,7 +570,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        case FR_TYPE_UINT32:
        case FR_TYPE_UINT64:
        case FR_TYPE_INT32:
-               len = fr_value_box_to_network(NULL, out, outlen, &vp->data);
+               len = fr_value_box_to_network(NULL, out, outlen, &vp->data, vp->da);
                if (len < 0) return len;
                break;
 
index 3839f281097bcb28463ada7a04e381478c37705a..f22825301a6a6b179c454ee9a446766d25655564 100644 (file)
@@ -263,7 +263,7 @@ ssize_t fr_struct_to_network(uint8_t *out, size_t outlen,
                /*
                 *      Determine the nested type and call the appropriate encoder
                 */
-               len = fr_value_box_to_network(NULL, p, outlen, &vp->data);
+               len = fr_value_box_to_network(NULL, p, outlen, &vp->data, vp->da);
                if (len <= 0) return -1;
 
                if (child->flags.extra) {
index dea0a187cf29aebe31aa91e07e4306aaae7e4f83..de569e63b206a39b2f6451be23dd51203f7804a7 100644 (file)
@@ -1018,6 +1018,7 @@ size_t fr_value_box_network_length(fr_value_box_t *value)
  * @param[in] dst_len  The length of the output buffer, or maximum value fragment
  *                     size.
  * @param[in] value    to encode.
+ * @param[in] da       attribute definition for extra "flags" fields.
  * @return
  *     - 0 no bytes were written, see need value to determine if it was because
  *       the fr_value_box_t was #FR_TYPE_OCTETS/#FR_TYPE_STRING and was
@@ -1025,7 +1026,8 @@ size_t fr_value_box_network_length(fr_value_box_t *value)
  *     - >0 the number of bytes written to out.
  *     - <0 on error.
  */
-ssize_t fr_value_box_to_network(size_t *need, uint8_t *dst, size_t dst_len, fr_value_box_t const *value)
+ssize_t fr_value_box_to_network(size_t *need, uint8_t *dst, size_t dst_len, fr_value_box_t const *value,
+                               UNUSED fr_dict_attr_t const *da)
 {
        size_t min, max;
        uint8_t *p = dst;
index c711ff55e34e7ff3d550abb97126530130415c85..e2aa815072e2bf1adedbb96d4d26ca1c3a368466 100644 (file)
@@ -504,7 +504,8 @@ int         fr_value_box_hton(fr_value_box_t *dst, fr_value_box_t const *src);
 
 size_t         fr_value_box_network_length(fr_value_box_t *value);
 
-ssize_t                fr_value_box_to_network(size_t *need, uint8_t *out, size_t outlen, fr_value_box_t const *value);
+ssize_t                fr_value_box_to_network(size_t *need, uint8_t *out, size_t outlen, fr_value_box_t const *value,
+                                       fr_dict_attr_t const *da) CC_HINT(nonnull(1,2,4));
 
 ssize_t                fr_value_box_from_network(TALLOC_CTX *ctx,
                                          fr_value_box_t *dst, fr_type_t type, fr_dict_attr_t const *enumv,
index e5cbeb641d2fb91c985d0a6a2f9ab10aaa3d6633..840e24a6b977b81aaa6956de8a31de69cf16159f 100644 (file)
@@ -118,7 +118,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        case FR_TYPE_ETHERNET:
        case FR_TYPE_STRING:
        case FR_TYPE_OCTETS:
-               len = fr_value_box_to_network(&need, p, outlen, &vp->data);
+               len = fr_value_box_to_network(&need, p, outlen, &vp->data, vp->da);
                if (len < 0) return -2;
                if (need > 0) return -1;
                p += len;
index 796cd8a6f1f92d0dea7bf3181dfd117115121e90..88cba9b689c93408739a71b94258bba0fe471de9 100644 (file)
@@ -396,7 +396,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        case FR_TYPE_IFID:
        case FR_TYPE_ETHERNET:
                CHECK_FREESPACE(outlen, fr_dhcpv6_option_len(vp));
-               slen = fr_value_box_to_network(NULL, p, end - p, &vp->data);
+               slen = fr_value_box_to_network(NULL, p, end - p, &vp->data, vp->da);
                if (slen < 0) return PAIR_ENCODE_ERROR;
                p += slen;
                break;
index 32e2ddb2fd924e5306772653116f289c40fa86a1..09d6ff74154d841d577bf0d14c1c7fb08a1c8203 100644 (file)
@@ -677,7 +677,7 @@ static ssize_t encode_value(uint8_t *out, size_t outlen,
        case FR_TYPE_INT32:
        case FR_TYPE_INT64:
        case FR_TYPE_DATE:
-               len = fr_value_box_to_network(NULL, buffer, sizeof(buffer), &vp->data);
+               len = fr_value_box_to_network(NULL, buffer, sizeof(buffer), &vp->data, vp->da);
                if (len < 0) return -1;
                data = buffer;
                break;