]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add elapsed timers to statistics
authorAlan T. DeKok <aland@freeradius.org>
Sat, 3 May 2025 17:04:37 +0000 (13:04 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 3 May 2025 17:04:37 +0000 (13:04 -0400)
it's v3, and we didn't really support TLVs when this started.
so the elapsed statistics are not associated strongly with a
particular type of thing being returned.

share/dictionary.freeradius
src/main/stats.c

index 9b792b6047e244d5551c545c796d32a32745e9f9..90100e7bfdb4bc47910427e3340e12f742ed2112 100644 (file)
@@ -307,4 +307,14 @@ ATTRIBUTE  FreeRADIUS-Stats-Threads-Max            195     integer
 ATTRIBUTE      FreeRADIUS-Stats-Server-Src-IP-Address  196     ipaddr
 ATTRIBUTE      FreeRADIUS-Stats-Server-Src-IPv6-Address 197    ipaddr
 
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed                 198    tlv
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-1us             198.1  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-10us            198.2  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-100us           198.3  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-1ms             198.4  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-10ms            198.5  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-100ms           198.6  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-1s              198.7  integer64
+ATTRIBUTE      FreeRADIUS-Stats-Elapsed-10s             198.8  integer64
+
 END-VENDOR FreeRADIUS
index 730366c586a5ca1617c67678b2ab1b14662ab07c..72ae335978a8c91dced1decd7dc89adc845f13b4 100644 (file)
@@ -538,6 +538,17 @@ static void request_stats_addvp(REQUEST *request,
                counter = *(uint64_t *) (((uint8_t *) stats) + table[i].offset);
                vp->vp_integer = counter;
        }
+
+       /*
+        *      Add in count of elapsed times.
+        */
+       for (i = 0; i < 8; i++) {
+               vp = radius_pair_create(request->reply, &request->reply->vps,
+                                       (198 + ((i + 1) << 8)), VENDORPEC_FREERADIUS);
+               if (!vp) continue;
+
+               vp->vp_integer64 = stats->elapsed[i];
+       }
 }
 
 static void stats_error(REQUEST *request, char const *msg)