From: Alan T. DeKok Date: Wed, 18 Jul 2012 21:30:10 +0000 (-0400) Subject: Add Event-Timestamp for accounting packets X-Git-Tag: release_3_0_0_beta0~124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f23658fa04dc4b2fcf255c842e157ad2583c043d;p=thirdparty%2Ffreeradius-server.git Add Event-Timestamp for accounting packets --- diff --git a/src/modules/rlm_preprocess/rlm_preprocess.c b/src/modules/rlm_preprocess/rlm_preprocess.c index fed42ad2380..ba271dcc168 100644 --- a/src/modules/rlm_preprocess/rlm_preprocess.c +++ b/src/modules/rlm_preprocess/rlm_preprocess.c @@ -682,6 +682,7 @@ static int preprocess_authorize(void *instance, REQUEST *request) static int preprocess_preaccounting(void *instance, REQUEST *request) { int r; + VALUE_PAIR *vp; rlm_preprocess_t *data = (rlm_preprocess_t *) instance; /* @@ -723,6 +724,23 @@ static int preprocess_preaccounting(void *instance, REQUEST *request) hints_setup(data->hints, request); + /* + * Add an event timestamp. This means that the rest of + * the server can use it, rather than various error-prone + * manual calculations. + */ + vp = pairfind(request->packet->vps, PW_EVENT_TIMESTAMP, 0); + if (!vp) { + VALUE_PAIR *delay; + + vp = radius_paircreate(request, &request->packet->vps, + PW_EVENT_TIMESTAMP, 0, + PW_TYPE_DATE); + vp->vp_date = request->packet->timestamp.tv_sec; + delay = pairfind(request->packet->vps, PW_ACCT_DELAY_TIME, 0); + if (delay) vp->vp_date -= delay->vp_integer; + } + if ((r = huntgroup_access(request, data->huntgroups)) != RLM_MODULE_OK) { char buf[1024];