#include <freeradius-devel/radiusd.h>
#include <freeradius-devel/modules.h>
#include <freeradius-devel/rad_assert.h>
+#include <freeradius-devel/detail.h>
#include <sys/stat.h>
#include <ctype.h>
#define DIRLEN 8192
-static const char *packet_codes[] = {
- "",
- "Access-Request",
- "Access-Accept",
- "Access-Reject",
- "Accounting-Request",
- "Accounting-Response",
- "Accounting-Status",
- "Password-Request",
- "Password-Accept",
- "Password-Reject",
- "Accounting-Message",
- "Access-Challenge"
- "Status-Server",
- "Status-Client",
- "14",
- "15",
- "16",
- "17",
- "18",
- "19",
- "20",
- "Resource-Free-Request",
- "Resource-Free-Response",
- "Resource-Query-Request",
- "Resource-Query-Response",
- "Alternate-Resource-Reclaim-Request",
- "NAS-Reboot-Request",
- "NAS-Reboot-Response",
- "28",
- "Next-Passcode",
- "New-Pin",
- "Terminate-Session",
- "Password-Expired",
- "Event-Request",
- "Event-Response",
- "35",
- "36",
- "37",
- "38",
- "39",
- "Disconnect-Request",
- "Disconnect-ACK",
- "Disconnect-NAK",
- "CoA-Request",
- "CoA-ACK",
- "CoA-NAK",
- "46",
- "47",
- "48",
- "49",
- "IP-Address-Allocate",
- "IP-Address-Release"
-};
-
-
struct detail_instance {
/* detail file */
char *detailfile;
* Numbers, if not.
*/
if ((packet->code > 0) &&
- (packet->code < 52)) {
+ (packet->code < FR_MAX_PACKET_CODE)) {
fprintf(outfp, "\tPacket-Type = %s\n",
- packet_codes[packet->code]);
+ fr_packet_codes[packet->code]);
} else {
fprintf(outfp, "\tPacket-Type = %d\n", packet->code);
}
* Add non-protocol attibutes.
*/
if (compat) {
+#ifdef WITH_PROXY
if (request->proxy) {
char proxy_buffer[128];
RDEBUG("Freeradius-Proxied-To = %s",
proxy_buffer);
}
+#endif
fprintf(outfp, "\tTimestamp = %ld\n",
(unsigned long) request->timestamp);
*/
static int detail_accounting(void *instance, REQUEST *request)
{
- if (request->listener->type == RAD_LISTEN_DETAIL) {
+ if (request->listener->type == RAD_LISTEN_DETAIL &&
+ strcmp(((struct detail_instance *)instance)->detailfile,
+ ((listen_detail_t *)request->listener->data)->filename) == 0) {
RDEBUG("Suppressing writes to detail file as the request was just read from a detail file.");
return RLM_MODULE_NOOP;
}
/*
* Outgoing Access-Request to home server - write the detail files.
*/
+#ifdef WITH_PROXY
static int detail_pre_proxy(void *instance, REQUEST *request)
{
if (request->proxy &&
return RLM_MODULE_NOOP;
}
+#endif
/* globally exported name */
NULL, /* preaccounting */
detail_accounting, /* accounting */
NULL, /* checksimul */
+#ifdef WITH_PROXY
detail_pre_proxy, /* pre-proxy */
detail_post_proxy, /* post-proxy */
+#else
+ NULL, NULL,
+#endif
detail_postauth /* post-auth */
#ifdef WITH_COA
, detail_recv_coa,