]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add Protocol-Error support to radclient
authorAlan T. DeKok <aland@freeradius.org>
Fri, 24 Oct 2025 10:05:50 +0000 (12:05 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 24 Oct 2025 16:39:20 +0000 (18:39 +0200)
src/bin/radclient.c
src/bin/radclient.h
src/tests/radclient/acct_2.out
src/tests/radclient/auth_2.out
src/tests/radclient/auth_chap.out
src/tests/radclient/auth_chap_nochallenge.out

index f67fc443ff801e6c2a65b5ef7a723345d9c60e94..898a9d2c0e26dec07161186df64f3bb4a96f2389 100644 (file)
@@ -1294,6 +1294,7 @@ static int blast_radius_check(rc_request_t *request, fr_packet_t *reply)
        case FR_RADIUS_CODE_ACCESS_ACCEPT:
        case FR_RADIUS_CODE_ACCESS_REJECT:
        case FR_RADIUS_CODE_ACCESS_CHALLENGE:
+       case FR_RADIUS_CODE_PROTOCOL_ERROR:
                if (reply->data[1] != request->packet->id) {
                        ERROR("Invalid reply ID %d to Access-Request ID %d", reply->data[1], request->packet->id);
                        return -1;
@@ -1552,6 +1553,9 @@ retry:
        case FR_RADIUS_CODE_ACCESS_CHALLENGE:
                break;
 
+       case FR_RADIUS_CODE_PROTOCOL_ERROR:
+               stats.error++;
+               break;
        default:
                stats.rejected++;
        }
@@ -2234,11 +2238,13 @@ int main(int argc, char **argv)
                      "\tAccepted      : %" PRIu64 "\n"
                      "\tRejected      : %" PRIu64 "\n"
                      "\tLost          : %" PRIu64 "\n"
+                     "\tErrored       : %" PRIu64 "\n"
                      "\tPassed filter : %" PRIu64 "\n"
                      "\tFailed filter : %" PRIu64,
                      stats.accepted,
                      stats.rejected,
                      stats.lost,
+                     stats.error,
                      stats.passed,
                      stats.failed
                );
index e163f780e1ff80a8c78a656abde2207992b45530..e2745a18c8e431c5d8dbcc38fb3c6eb462ca7b86 100644 (file)
@@ -57,6 +57,7 @@ typedef struct {
        uint64_t accepted;                      //!< Requests to which we received a accept
        uint64_t rejected;                      //!< Requests to which we received a reject
        uint64_t lost;                          //!< Requests to which we received no response
+       uint64_t error;                         //!< Requests which received a Protocol-Error response
        uint64_t passed;                        //!< Requests which passed a filter
        uint64_t failed;                        //!< Requests which failed a filter
 } rc_stats_t;
index 99631279c9cd3cdb5c42874ee01988eab961479e..8300cb288188da0850d4d98642703895bba60ddd 100644 (file)
@@ -2,5 +2,6 @@ Packet summary:
        Accepted      : 1
        Rejected      : 0
        Lost          : 0
+       Errored       : 0
        Passed filter : 1
        Failed filter : 0
index 99631279c9cd3cdb5c42874ee01988eab961479e..8300cb288188da0850d4d98642703895bba60ddd 100644 (file)
@@ -2,5 +2,6 @@ Packet summary:
        Accepted      : 1
        Rejected      : 0
        Lost          : 0
+       Errored       : 0
        Passed filter : 1
        Failed filter : 0
index 99631279c9cd3cdb5c42874ee01988eab961479e..8300cb288188da0850d4d98642703895bba60ddd 100644 (file)
@@ -2,5 +2,6 @@ Packet summary:
        Accepted      : 1
        Rejected      : 0
        Lost          : 0
+       Errored       : 0
        Passed filter : 1
        Failed filter : 0
index 99631279c9cd3cdb5c42874ee01988eab961479e..8300cb288188da0850d4d98642703895bba60ddd 100644 (file)
@@ -2,5 +2,6 @@ Packet summary:
        Accepted      : 1
        Rejected      : 0
        Lost          : 0
+       Errored       : 0
        Passed filter : 1
        Failed filter : 0