[Users] avp problems switching from 1.0.1 to 1.1.x

tele tele at plexia.com
Wed Jun 28 18:50:04 CEST 2006


Hi,

My billing system doesn't correlate START/STOP accounting packets and 
use Cisco-VSA like attributes.
I need to do an accounting compatible with my billing system from 
OpenSER so i've done a dirty method like that:
i know it's not really performance but it's the only way i can do that.

The problem is with OpenSER 1.1.x that generate accounting with the 
attribute filled with the same value of "disconnect_time". example:

h323-setup-time                  = '1151511700'
h323-connect-time               = '1151511700'
h323-disconnect-time          = '1151511700'

the xlog debug output of openser1.1.x i have added is with correct 
attribute values.
with OpenSER 1.0.1 everything works fine.

CONFIGS:

with OpenSER 1.1.x:

modparam("acc", "radius_extra", "h323-setup-time=$avp(setup_time); 
h323-connect-time=$avp(connect_time); 
h323-disconnect-time=$avp(disconnect_time)")

modparam("avpops","avp_aliases","setup_time=s:setup_time")
modparam("avpops","avp_aliases","connect_time=s:connect_time")
modparam("avpops","avp_aliases","disconnect_time=s:disconnect_time")


   if (is_method("INVITE"))
   {
      avp_write("$Ts","$avp(setup_time)");
      avp_db_store("$from","$avp(setup_time)");

   } else if (is_method("ACK")) {
      avp_write("$Ts","$avp(connect_time)");
      avp_db_store("$from","$avp(connect_time)");

   } else if (is_method("BYE")) {
      avp_write("$Ts","$avp(disconnect_time)");
      avp_db_store("$from","$avp(disconnect_time)");
   };

      if (is_method("BYE")) {               

                avp_db_load("$from","$avp(setup_time)");
                avp_db_load("$from","$avp(connect_time)");
                avp_db_load("$from","$avp(disconnect_time)");

                xlog("L_INFO","Before accounting 
SETUP_TIME[$avp(setup_time)] CONNECT_TIME[$avp(connect_time)] 
DISCONNECT_TIME[$avp(disconnect_time)]");
                
                setflag(3);
                setflag(5);

                avp_db_delete("$from","$avp(setup_time)");
                avp_db_delete("$from","$avp(connect_time)");
                avp_db_delete("$from","$avp(disconnect_time)");
        };

With OpenSER 1.0.1:

modparam("acc", "radius_extra", "h323-setup-time=$avp($setup_time); 
h323-connect-time=$avp($connect_time)
; h323-disconnect-time=$avp($disconnect_time)")

modparam("avpops","avp_aliases","setup_time=s:setup_time")
modparam("avpops","avp_aliases","connect_time=s:connect_time")
modparam("avpops","avp_aliases","disconnect_time=s:disconnect_time")

        if (is_method("INVITE"))
        {
                avp_write("0","i:1");
                avp_printf("i:1", "$Ts");
                avp_copy("i:1","$setup_time");
                avp_db_store("$from","$setup_time");
                avp_delete("i:1");

        } else if (is_method("ACK")) {
                avp_write("0","i:1");
                avp_printf("i:1", "$Ts");
                avp_copy("i:1","$connect_time");
                avp_db_store("$from","$connect_time");
                avp_delete("i:1");

        } else if (is_method("BYE")) {
                avp_write("0","i:1");
                avp_printf("i:1", "$Ts");
                avp_copy("i:1","$disconnect_time");
                avp_db_store("$from","$disconnect_time");
                avp_delete("i:1");

        };

        if (is_method("BYE")) {
  
                avp_db_load("$from","$setup_time");
                avp_db_load("$from","$connect_time");
                avp_db_load("$from","$disconnect_time");

                xlog("L_INFO","Before accounting 
SETUP_TIME[$avp($setup_time)] CONNECT_TIME[$avp($connect_time)] 
DISCONNECT_TIME[$avp($disconnect_time)]");

                setflag(3);
                setflag(5);

                avp_db_delete("$from","$setup_time");
                avp_db_delete("$from","$connect_time");
                avp_db_delete("$from","$disconnect_time");
        };





More information about the sr-users mailing list