Module: sip-router Branch: master Commit: 7b4567c4cc4611ee32e403b41f53ed9a34ce9727 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7b4567c4...
Author: Sven Knoblich sven.knoblich@1und1.de Committer: Sven Knoblich sven.knoblich@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>
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=7b4567c4...
Author: Sven Knoblichsven.knoblich@1und1.de Committer: Sven Knoblichsven.knoblich@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev