From a9e395eb46a2cbb42cf1187949168471f2ba6490 Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Fri, 6 Aug 2010 14:36:04 +0200 Subject: [PATCH] Added Packet-Transmit-Counter for retransmits. Closes bug #13 --- share/dictionary.freeradius.internal | 1 + src/include/radius.h | 1 + src/main/detail.c | 12 ++++++++++++ 3 files changed, 14 insertions(+) diff --git a/share/dictionary.freeradius.internal b/share/dictionary.freeradius.internal index c3f357d..25c5b7d 100644 --- a/share/dictionary.freeradius.internal +++ b/share/dictionary.freeradius.internal @@ -214,6 +214,7 @@ ATTRIBUTE Recv-CoA-Type 1131 integer ATTRIBUTE Send-CoA-Type 1132 integer ATTRIBUTE MS-CHAP-Password 1133 string +ATTRIBUTE Packet-Transmit-Counter 1134 integer # # Range: 1200-1279 diff --git a/src/include/radius.h b/src/include/radius.h index d15db08..4282824 100644 --- a/src/include/radius.h +++ b/src/include/radius.h @@ -229,6 +229,7 @@ #define PW_RECV_COA_TYPE 1131 #define PW_SEND_COA_TYPE 1132 #define PW_MSCHAP_PASSWORD 1133 +#define PW_PACKET_TRANSMIT_COUNTER 1134 /* * Integer Translations diff --git a/src/main/detail.c b/src/main/detail.c index 094e17b..76c1508 100644 --- a/src/main/detail.c +++ b/src/main/detail.c @@ -370,6 +370,7 @@ int detail_recv(rad_listen_t *listener, case STATE_HEADER: do_header: + data->tries = 0; if (!data->fp) { data->state = STATE_UNOPENED; goto open_file; @@ -691,6 +692,17 @@ int detail_recv(rad_listen_t *listener, vp->vp_integer += time(NULL) - data->timestamp; } + /* + * Set the transmission count. + */ + vp = pairfind(packet->vps, PW_PACKET_TRANSMIT_COUNTER); + if (!vp) { + vp = paircreate(PW_PACKET_TRANSMIT_COUNTER, PW_TYPE_INTEGER); + rad_assert(vp != NULL); + pairadd(&packet->vps, vp); + } + vp->vp_integer = data->tries; + *pfun = rad_accounting; if (debug_flag) { -- 2.1.4