[sr-dev] git:master: Add new cdr-feature 'modifying cdr basic parameter st/et/d'. This is necessary for the upcoming db-storage of cdr's.

Sven Knoblich sven.knoblich at 1und1.de
Fri Feb 24 10:18:56 CET 2012


Hi all,
sorry for committing also changes of indentations. I take care of that 
in the future.

Bye Sven


Am 24.02.2012 09:33, schrieb Sven Knoblich:
> Module: sip-router
> Branch: master
> Commit: 7b4567c4cc4611ee32e403b41f53ed9a34ce9727
> URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7b4567c4cc4611ee32e403b41f53ed9a34ce9727
>
> Author: Sven Knoblich<sven.knoblich at 1und1.de>
> Committer: Sven Knoblich<sven.knoblich at 1und1.de>
> Date:   Thu Feb 23 14:33:19 2012 +0100
>
> Add new cdr-feature 'modifying cdr basic parameter st/et/d'. This is necessary for the upcoming db-storage of cdr's.
>
> ---
>
>   modules_k/acc/acc_cdr.c         |   33 +++++++-------
>   modules_k/acc/acc_mod.c         |   88 +++++++++++++++++++++++++--------------
>   modules_k/acc/doc/acc_admin.xml |   46 ++++++++++++++++++++-
>   3 files changed, 119 insertions(+), 48 deletions(-)
>
> diff --git a/modules_k/acc/acc_cdr.c b/modules_k/acc/acc_cdr.c
> index a3760b9..996ebf4 100644
> --- a/modules_k/acc/acc_cdr.c
> +++ b/modules_k/acc/acc_cdr.c
> @@ -36,6 +36,7 @@
>    *
>    */
>   #include "../../modules/tm/tm_load.h"
> +#include "../../str.h"
>   #include "../dialog/dlg_load.h"
>
>   #include "acc_api.h"
> @@ -66,9 +67,6 @@ struct dlg_binds dlgb;
>   struct acc_extra* cdr_extra = NULL;
>   int cdr_facility = LOG_DAEMON;
>
> -static const str start_id = { "st", 2};
> -static const str end_id = { "et", 2};
> -static const str duration_id = { "d", 1};
>   static const str zero_duration = { "0", 1};
>   static const char time_separator = {'.'};
>   static char time_buffer[ TIME_BUFFER_LENGTH];
> @@ -81,6 +79,9 @@ static int cdr_int_arr[ MAX_CDR_CORE + MAX_CDR_EXTRA];
>   static char cdr_type_array[ MAX_CDR_CORE + MAX_CDR_EXTRA];
>
>   extern struct tm_binds tmb;
> +extern str cdr_start_str;
> +extern str cdr_end_str;
> +extern str cdr_duration_str;
>
>   /* write all basic information to buffers(e.g. start-time ...) */
>   static int cdr_core2strar( struct dlg_cell* dlg,
> @@ -98,9 +99,9 @@ static int cdr_core2strar( struct dlg_cell* dlg,
>           return 0;
>       }
>
> -    start = dlgb.get_dlg_var( dlg, (str*)&start_id);
> -    end = dlgb.get_dlg_var( dlg, (str*)&end_id);
> -    duration = dlgb.get_dlg_var( dlg, (str*)&duration_id);
> +    start = dlgb.get_dlg_var( dlg, (str*)&cdr_start_str);
> +    end = dlgb.get_dlg_var( dlg, (str*)&cdr_end_str);
> +    duration = dlgb.get_dlg_var( dlg, (str*)&cdr_duration_str);
>
>       values[0] = ( start != NULL ? *start : empty_string);
>       types[0] = ( start != NULL ? TYPE_STR : TYPE_NULL);
> @@ -284,11 +285,11 @@ static int set_duration( struct dlg_cell* dialog)
>           return -1;
>       }
>
> -    if ( string2time( dlgb.get_dlg_var( dialog, (str*)&start_id),&start_time)<  0) {
> +    if ( string2time( dlgb.get_dlg_var( dialog, (str*)&cdr_start_str),&start_time)<  0) {
>           LM_ERR( "failed to extract start time\n");
>           return -1;
>       }
> -    if ( string2time( dlgb.get_dlg_var( dialog, (str*)&end_id),&end_time)<  0) {
> +    if ( string2time( dlgb.get_dlg_var( dialog, (str*)&cdr_end_str),&end_time)<  0) {
>           LM_ERR( "failed to extract end time\n");
>           return -1;
>       }
> @@ -301,7 +302,7 @@ static int set_duration( struct dlg_cell* dialog)
>       }
>
>       if( dlgb.set_dlg_var( dialog,
> -                          (str*)&duration_id,
> +                          (str*)&cdr_duration_str,
>                             (str*)&duration_str) != 0)
>       {
>           LM_ERR( "failed to set duration time");
> @@ -335,7 +336,7 @@ static int set_start_time( struct dlg_cell* dialog)
>       }
>
>       if( dlgb.set_dlg_var( dialog,
> -                          (str*)&start_id,
> +                          (str*)&cdr_start_str,
>                             (str*)&start_time) != 0)
>       {
>           LM_ERR( "failed to set start time\n");
> @@ -343,7 +344,7 @@ static int set_start_time( struct dlg_cell* dialog)
>       }
>
>       if( dlgb.set_dlg_var( dialog,
> -                          (str*)&end_id,
> +                          (str*)&cdr_end_str,
>                             (str*)&start_time) != 0)
>       {
>           LM_ERR( "failed to set initiation end time\n");
> @@ -351,7 +352,7 @@ static int set_start_time( struct dlg_cell* dialog)
>       }
>
>       if( dlgb.set_dlg_var( dialog,
> -                          (str*)&duration_id,
> +                          (str*)&cdr_duration_str,
>                             (str*)&zero_duration) != 0)
>       {
>           LM_ERR( "failed to set initiation duration time\n");
> @@ -385,7 +386,7 @@ static int set_end_time( struct dlg_cell* dialog)
>       }
>
>       if( dlgb.set_dlg_var( dialog,
> -                          (str*)&end_id,
> +                          (str*)&cdr_end_str,
>                             (str*)&end_time) != 0)
>       {
>           LM_ERR( "failed to set start time");
> @@ -595,9 +596,9 @@ int set_cdr_extra( char* cdr_extra_value)
>       }
>
>       /* fixed core attributes */
> -    cdr_attrs[ counter++] = start_id;
> -    cdr_attrs[ counter++] = end_id;
> -    cdr_attrs[ counter++] = duration_id;
> +    cdr_attrs[ counter++] = cdr_start_str;
> +    cdr_attrs[ counter++] = cdr_end_str;
> +    cdr_attrs[ counter++] = cdr_duration_str;
>
>       for(extra=cdr_extra; extra ; extra=extra->next)
>       {
> diff --git a/modules_k/acc/acc_mod.c b/modules_k/acc/acc_mod.c
> index c1d6d68..15bfe9e 100644
> --- a/modules_k/acc/acc_mod.c
> +++ b/modules_k/acc/acc_mod.c
> @@ -66,6 +66,7 @@
>   #include "../../dprint.h"
>   #include "../../mem/mem.h"
>   #include "../../modules/tm/tm_load.h"
> +#include "../../str.h"
>   #include "../rr/api.h"
>   #include "acc.h"
>   #include "acc_api.h"
> @@ -132,6 +133,11 @@ int cdr_enable  = 0;
>   int cdr_start_on_confirmed = 0;
>   static char* cdr_facility_str = 0;
>   static char* cdr_log_extra_str = 0;
> +
> +str cdr_start_str = str_init("st");
> +str cdr_end_str = str_init("et");
> +str cdr_duration_str = str_init("d");
> +
>   /*@{*/
>
>   /* ----- RADIUS acc variables ----------- */
> @@ -243,11 +249,14 @@ static param_export_t params[] = {
>   	{"log_level",            INT_PARAM,&log_level            },
>   	{"log_facility",         STR_PARAM,&log_facility_str     },
>   	{"log_extra",            STR_PARAM,&log_extra_str        },
> -    /* cdr specific */
> -    {"cdr_enable",           INT_PARAM,&cdr_enable                     },
> -    {"cdr_start_on_confirmed", INT_PARAM,&cdr_start_on_confirmed   },
> -    {"cdr_facility",         STR_PARAM,&cdr_facility_str                },
> -    {"cdr_extra",            STR_PARAM,&cdr_log_extra_str              },
> +	/* cdr specific */
> +	{"cdr_enable",           INT_PARAM,&cdr_enable                 },
> +	{"cdr_start_on_confirmed", INT_PARAM,&cdr_start_on_confirmed   },
> +	{"cdr_facility",         STR_PARAM,&cdr_facility_str           },
> +	{"cdr_extra",            STR_PARAM,&cdr_log_extra_str          },
> +	{"cdr_start_id",	 STR_PARAM,&cdr_start_str.s		},
> +	{"cdr_stop_id",		 STR_PARAM,&cdr_end_str.s		},
> +	{"cdr_duration_id",	 STR_PARAM,&cdr_duration_str.s		},
>   #ifdef RAD_ACC
>   	{"radius_config",        STR_PARAM,&radius_config        },
>   	{"radius_flag",          INT_PARAM,&radius_flag          },
> @@ -504,34 +513,51 @@ static int mod_init( void )
>
>   	acc_log_init();
>
> -    /* ----------- INIT CDR GENERATION ----------- */
> +	/* ----------- INIT CDR GENERATION ----------- */
>
> -    if( cdr_enable<  0 || cdr_enable>  1)
> -    {
> -        LM_ERR("cdr_enable is out of range\n");
> -        return -1;
> -    }
> +	if( cdr_enable<  0 || cdr_enable>  1)
> +	{
> +		LM_ERR("cdr_enable is out of range\n");
> +		return -1;
> +	}
>
> -    if( cdr_enable)
> -    {
> -        if( set_cdr_extra( cdr_log_extra_str) != 0)
> -        {
> -            LM_ERR( "failed to set cdr extra '%s'\n", cdr_log_extra_str);
> -            return -1;
> -        }
> -
> -        if( cdr_facility_str&&  set_cdr_facility( cdr_facility_str) != 0)
> -        {
> -            LM_ERR( "failed to set cdr facility '%s'\n", cdr_facility_str);
> -            return -1;
> -        }
> -
> -        if( init_cdr_generation() != 0)
> -        {
> -            LM_ERR("failed to init cdr generation\n");
> -            return -1;
> -        }
> -    }
> +	if( cdr_enable)
> +	{
> +		if( !cdr_start_str.s || !cdr_end_str.s || !cdr_duration_str.s)
> +		{
> +		      LM_ERR( "necessary cdr_parameters are not set\n");
> +		      return -1;
> +		}			
> +		
> +		cdr_start_str.len = strlen(cdr_start_str.s);
> +		cdr_end_str.len = strlen(cdr_end_str.s);
> +		cdr_duration_str.len = strlen(cdr_duration_str.s);
> +		
> +		if( !cdr_start_str.len || !cdr_end_str.len || !cdr_duration_str.len)
> +		{
> +		      LM_ERR( "necessary cdr_parameters are empty\n");
> +		      return -1;
> +		}
> +		
> +		
> +		if( set_cdr_extra( cdr_log_extra_str) != 0)
> +		{
> +			LM_ERR( "failed to set cdr extra '%s'\n", cdr_log_extra_str);
> +			return -1;
> +		}
> +
> +		if( cdr_facility_str&&  set_cdr_facility( cdr_facility_str) != 0)
> +		{
> +			LM_ERR( "failed to set cdr facility '%s'\n", cdr_facility_str);
> +			return -1;
> +		}
> +	
> +		if( init_cdr_generation() != 0)
> +		{
> +			LM_ERR("failed to init cdr generation\n");
> +			return -1;
> +		}
> +	}
>
>   	/* ------------ SQL INIT SECTION ----------- */
>
> diff --git a/modules_k/acc/doc/acc_admin.xml b/modules_k/acc/doc/acc_admin.xml
> index 50fb91d..afb4934 100644
> --- a/modules_k/acc/doc/acc_admin.xml
> +++ b/modules_k/acc/doc/acc_admin.xml
> @@ -1179,7 +1179,51 @@ modparam("acc", "cdr_extra", "c1=$dlg_var(caller);c2=$dlg_var(callee)"
>   </programlisting>
>   		</example>
>   	</section>
> -
> +	<section id="cdr_start_id">
> +		<title><varname>cdr_start_id</varname>  (string)</title>
> +		<para>
> +		Modifying the start id which is used to store the start time.
> +		</para>
> +		<para>
> +		Default value is 'st'
> +		</para>
> +		<example>
> +		<title>cdr_start_id example</title>
> +		<programlisting format="linespecific">
> +modparam("acc", "cdr_start_id", "start")
> +</programlisting>
> +		</example>
> +	</section>
> +	<section id="cdr_end_id">
> +		<title><varname>cdr_end_id</varname>  (string)</title>
> +		<para>
> +		Modifying the end id which is used to store the end time.
> +		</para>
> +		<para>
> +		Default value is 'et'
> +		</para>
> +		<example>
> +		<title>cdr_end_id example</title>
> +		<programlisting format="linespecific">
> +modparam("acc", "cdr_end_id", "end")
> +</programlisting>
> +		</example>
> +	</section>
> +		<section id="cdr_duration_id">
> +		<title><varname>cdr_duration_id</varname>  (string)</title>
> +		<para>
> +		Modifying the duration id which is used to store the duration.
> +		</para>
> +		<para>
> +		Default value is 'd'
> +		</para>
> +		<example>
> +		<title>cdr_duration_id example</title>
> +		<programlisting format="linespecific">
> +modparam("acc", "cdr_duration_id", "start")
> +</programlisting>
> +		</example>
> +	</section>
>   	</section>
>
>   	<section>
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev



More information about the sr-dev mailing list