]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
API to update array of allowed replies
authorAlan T. DeKok <aland@freeradius.org>
Sun, 14 Apr 2024 12:58:51 +0000 (08:58 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 15 Apr 2024 13:17:31 +0000 (09:17 -0400)
src/protocols/radius/base.c
src/protocols/radius/radius.h

index 9f089601a395a7232d378d91ba73e36b0d66d33e..ce7c2d49009a03f36cd1df322b8522a13eb4e5ff 100644 (file)
@@ -167,6 +167,19 @@ static const fr_radius_packet_code_t allowed_replies[FR_RADIUS_CODE_MAX] = {
        [FR_RADIUS_CODE_PROTOCOL_ERROR]         = FR_RADIUS_CODE_PROTOCOL_ERROR,        /* Any */
 };
 
+int fr_radius_allow_reply(int code, bool allowed[static FR_RADIUS_CODE_MAX])
+{
+       int i;
+
+       if ((code <= 0) || (code >= FR_RADIUS_CODE_MAX)) return -1;
+
+       for (i = 1; i < FR_RADIUS_CODE_MAX; i++) {
+               allowed[i] |= (allowed_replies[i] == (fr_radius_packet_code_t) code);
+       }
+
+       return 0;
+}
+
 /**  Do Ascend-Send / Recv-Secret calculation.
  *
  * The secret is hidden by xoring with a MD5 digest created from
index e3f53adf729ad041f6354eb7fe43946333dbd7aa..bead5d6cf7b4b60535611a2c40a5df819d93521b 100644 (file)
@@ -155,6 +155,8 @@ typedef struct {
 /*
  *     protocols/radius/base.c
  */
+int            fr_radius_allow_reply(int code, bool allowed[static FR_RADIUS_CODE_MAX]);
+
 int            fr_radius_sign(uint8_t *packet, uint8_t const *vector,
                               uint8_t const *secret, size_t secret_len) CC_HINT(nonnull (1,3));
 int            fr_radius_verify(uint8_t *packet, uint8_t const *vector,