Skip to content

Commit

Permalink
Merge pull request #378 from ycaner06/patch-7
Browse files Browse the repository at this point in the history
acc_radius : added radius time mode
  • Loading branch information
miconda committed Oct 26, 2015
2 parents d6f313e + 4505878 commit 1399978
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 5 deletions.
23 changes: 18 additions & 5 deletions modules/acc_radius/acc_radius_mod.c
Expand Up @@ -74,6 +74,7 @@ static char *radius_config = 0;
int radius_flag = -1;
int radius_missed_flag = -1;
static int service_type = -1;
int rad_time_mode=0;
void *rh;
/* rad extra variables */
static char *rad_extra_str = 0;
Expand All @@ -91,11 +92,12 @@ static cmd_export_t cmds[] = {


static param_export_t params[] = {
{"radius_config", PARAM_STRING, &radius_config },
{"radius_config", PARAM_STRING, &radius_config },
{"radius_flag", INT_PARAM, &radius_flag },
{"radius_missed_flag", INT_PARAM, &radius_missed_flag },
{"service_type", INT_PARAM, &service_type },
{"radius_extra", PARAM_STRING, &rad_extra_str },
{"radius_extra", PARAM_STRING, &rad_extra_str },
{"rad_time_mode", INT_PARAM, &rad_time_mode },
{0,0,0}
};

Expand Down Expand Up @@ -328,6 +330,8 @@ int acc_radius_send_request(struct sip_msg *req, acc_info_t *inf)
int m=0;
int o=0;
int rc_result=-1;
double tsecmicro;
char smicrosec[18];

send=NULL;

Expand All @@ -347,9 +351,18 @@ int acc_radius_send_request(struct sip_msg *req, acc_info_t *inf)
av_type = req->REQ_METHOD; /* method */
ADD_RAD_AVPAIR( RA_SIP_METHOD, &av_type, -1);

/* unix time */
av_type = (uint32_t)inf->env->ts;
ADD_RAD_AVPAIR( RA_TIME_STAMP, &av_type, -1);
// Event Time Stamp with Microseconds
if(rad_time_mode==1){
gettimeofday(&inf->env->tv, NULL);
tsecmicro=inf->env->tv.tv_sec+((double)inf->env->tv.tv_usec/1000000.0);
//radius client doesn t support double so convert it
sprintf(smicrosec,"%17.6f",tsecmicro);
ADD_RAD_AVPAIR(RA_TIME_STAMP, &smicrosec, -1);
}else{
av_type = (uint32_t)inf->env->ts;
ADD_RAD_AVPAIR(RA_TIME_STAMP, &av_type, -1);
}


/* add extra also */
o = accb.get_extra_attrs(rad_extra, req, inf->varr+attr_cnt,
Expand Down
33 changes: 33 additions & 0 deletions modules/acc_radius/doc/acc_radius_admin.xml
Expand Up @@ -166,6 +166,39 @@ modparam("acc_radius", "radius_extra", "via=$hdr(Via[*]); email=$avp(s:email)")
</programlisting>
</example>
</section>
<section>
<title><varname>rad_time_mode</varname>(integer)</title>
<para>
Radius Event-Timestamp for accounting.
</para>
<para>
Values can be:
</para>
<itemizedlist>
<listitem>
<para><emphasis>0</emphasis> - (default), format is only unix
timestamp for Event-Timestamp (For example: 1445590624)</para>
</listitem>
<listitem>
<para><emphasis>1</emphasis> - format is unix timestamp with microseconds
in Addition, it needs to change Event-Timestamp attribute type in dictionary to string
both radius server and client
(For example: 1445590624.377372) </para>
</listitem>
</itemizedlist>

<para>
Default value is 0 (Unix timestamp).
</para>
<example>
<title>rad_time_mode example</title>
<programlisting format="linespecific">
...
modparam("acc_radius", "rad_time_mode", 1)
...
</programlisting>
</example>
</section>
</section>

<section>
Expand Down

0 comments on commit 1399978

Please sign in to comment.