Navigation


Changeset 420:c8a61dabea55 in freeDiameter


Ignore:
Timestamp:
Jul 19, 2010, 4:46:33 PM (14 years ago)
Author:
Alexandre Westfahl <awestfahl@freediameter.net>
Branch:
default
Phase:
public
Message:

app_sip:Added LIR/LIA for SL

Location:
extensions
Files:
5 added
9 edited

Legend:

Unmodified
Added
Removed
  • extensions/app_sip/CMakeLists.txt

    r419 r420  
    2121        multimediaauth.c
    2222        registrationtermination.c
     23        pushprofile.c
     24        locationinfo.c
     25        locationinfosl.c
    2326)
    2427
  • extensions/app_sip/diamsip.c

    r419 r420  
    3636#include "diamsip.h"
    3737
     38//Diameter-SIP server
    3839struct disp_hdl * diamsip_MAR_hdl=NULL;
    3940struct disp_hdl * diamsip_LIR_hdl=NULL;
     
    4243struct disp_hdl * diamsip_PPA_hdl=NULL;
    4344struct disp_hdl * diamsip_RTA_hdl=NULL;
     45
     46//Suscriber Locator
     47struct disp_hdl * diamsipSL_LIR_hdl=NULL;
     48
    4449
    4550
     
    7176        TRACE_DEBUG(FULL,"# mysql_server: *%s*",as_conf->mysql_server);
    7277        TRACE_DEBUG(FULL,"# mysql_port: *%d*",as_conf->mysql_port);
     78        TRACE_DEBUG(FULL,"# mysql_port: *%d*",as_conf->mysql_prefix);
    7379        TRACE_DEBUG(FULL,"***End of Diameter-SIP configuration extension***");
    7480}
     
    9096        struct dict_object * app=NULL;
    9197        struct disp_when data;
    92         pthread_t rtr_thread;
     98        pthread_t rtr_thread, ppr_thread;
    9399       
    94100        /* Initialize configuration */
     
    104110                TRACE_DEBUG(INFO, "We need a configuration file for Diameter-SIP extension. See doc/ for an example.");
    105111        }
     112       
     113        //TODO: replace by configuration file!!
     114        strcpy(as_conf->mysql_prefix,"as_");
    106115       
    107116        //We can dump the configuration extracted from app_sip.conf
     
    118127        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Host", &sip_dict.Destination_Host, ENOENT) );
    119128        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Session-Id", &sip_dict.Session_Id, ENOENT) );
     129        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Redirect-Host", &sip_dict.Redirect_Host, ENOENT) );
     130        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Redirect-Host-Usage", &sip_dict.Redirect_Host_Usage, ENOENT) );
    120131        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Auth-Data-Item", &sip_dict.SIP_Auth_Data_Item, ENOENT) );
    121132        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authorization", &sip_dict.SIP_Authorization, ENOENT) );
     
    143154        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-QoP", &sip_dict.Digest_QOP, ENOENT) );
    144155        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "User-Name", &sip_dict.User_Name, ENOENT) );
    145        
    146156        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-HA1", &sip_dict.Digest_HA1, ENOENT) );
    147157       
     
    151161        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Session Initiation Protocol (SIP) Application", &data.app, ENOENT) );
    152162       
    153        
    154         //**Command Codes
    155         //MAR
    156         CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Multimedia-Auth-Request", &data.command, ENOENT) );
    157         CHECK_FCT( fd_disp_register( diamsip_MAR_cb, DISP_HOW_CC, &data, &diamsip_MAR_hdl ) );
    158         //RTA
    159         CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Registration-Termination-Answer", &data.command, ENOENT) );
    160         CHECK_FCT( fd_disp_register( diamsip_RTA_cb, DISP_HOW_CC, &data, &diamsip_RTA_hdl ) );
    161        
     163        if(as_conf->mode==1)
     164        {
     165          //**Command Codes
     166          //MAR
     167          CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Multimedia-Auth-Request", &data.command, ENOENT) );
     168          CHECK_FCT( fd_disp_register( diamsip_MAR_cb, DISP_HOW_CC, &data, &diamsip_MAR_hdl ) );
     169          //RTA
     170          CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Registration-Termination-Answer", &data.command, ENOENT) );
     171          CHECK_FCT( fd_disp_register( diamsip_RTA_cb, DISP_HOW_CC, &data, &diamsip_RTA_hdl ) );
     172          //PPA
     173          CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Push-Profile-Answer", &data.command, ENOENT) );
     174          CHECK_FCT( fd_disp_register( diamsip_PPA_cb, DISP_HOW_CC, &data, &diamsip_PPA_hdl ) );
     175          //LIR
     176          CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Location-Info-Request", &data.command, ENOENT) );
     177          CHECK_FCT( fd_disp_register( diamsip_LIR_cb, DISP_HOW_CC, &data, &diamsip_LIR_hdl ) );
     178        }
     179        if(as_conf->mode==2)
     180        {
     181          //LIR
     182          CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Location-Info-Request", &data.command, ENOENT) );
     183          CHECK_FCT( fd_disp_register( diamsipSL_LIR_cb, DISP_HOW_CC, &data, &diamsipSL_LIR_hdl ) );
     184        }
    162185        //Callback for unexpected messages
    163186        CHECK_FCT( fd_disp_register( diamsip_default_cb, DISP_HOW_APPID, &data, &diamsip_default_hdl ) );
     
    166189        //We start database connection
    167190        if(start_mysql_connection())
    168                 return 1;
     191                return EINVAL;
    169192       
    170193        CHECK_FCT(fd_sess_handler_create(&ds_sess_hdl, free));
     
    174197        {
    175198                TRACE_DEBUG(INFO,"Creation of thread failed, abort!");
    176                 return 1;
     199                return EINVAL;
     200        }
     201        //Creation of thread for Push Profile   
     202        if(pthread_create(&ppr_thread, NULL,ppr_socket, NULL))
     203        {
     204                TRACE_DEBUG(INFO,"Creation of thread failed, abort!");
     205                return EINVAL;
    177206        }
    178207               
     
    188217void fd_ext_fini(void)
    189218{
    190        
     219        //TODO:unregister other callbacks
    191220       
    192221        (void) fd_disp_unregister(&diamsip_MAR_hdl);
  • extensions/app_sip/diamsip.h

    r419 r420  
    5353#define MODE_SL 0x2
    5454
     55//Redirect_Host_Usage
     56#define ALL_USER        6
    5557
    5658/* The module configuration */
     
    6264        char * mysql_database;
    6365        char * mysql_server;
    64         uint16_t  mysql_port;
     66        char mysql_prefix[10]; //default: as_
     67        uint16_t  mysql_port; //if 0, default port will be used
    6568       
    6669};
     
    7881void clear_digest(uint8_t * digest, char * readable_digest, int digestlength);
    7982struct avp_hdr * walk_digest(struct avp *avp, int avp_code);
     83
     84
     85//MySQL part
    8086int start_mysql_connection();
    8187void request_mysql(char *query);
    8288void close_mysql_connection();
     89int get_diameter_uri(const unsigned char *sip_aor, const size_t sipaorlen, char ** diameter_uri, size_t *diameterurilen);
     90
    8391
    8492void DigestCalcHA1(char * pszAlg,char * pszUserName,char * pszRealm,char * pszPassword,char * pszNonce,char * pszCNonce,HASHHEX SessionKey);
     
    9098//thread procedure
    9199void *rtr_socket(void *);
     100void *ppr_socket(void *);
    92101
    93102struct rtrsipaor
     
    101110        int reason;
    102111};
     112struct pprsipaor
     113{
     114        char username[200];
     115        char label1[200];
     116        char value1[200];
     117        char label2[200];
     118        char value2[200];
     119        char desthost[200]; 
     120};
    103121int diamsip_RTR_cb(struct rtrsipaor structure);
     122int diamsip_PPR_cb(struct pprsipaor structure);
    104123#define PORT 666 //TODO:put in conf file
    105124
     
    109128int diamsip_MAR_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
    110129int diamsip_RTA_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
     130int diamsip_PPA_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
     131int diamsip_LIR_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
     132
     133//Suscriber Locator
     134int diamsipSL_LIR_cb( struct msg ** msg, struct avp * paramavp, struct session * sess, enum disp_action * act);
     135//int diamsipSL_SAR_cb( struct msg ** msg, struct avp * paramavp, struct session * sess, enum disp_action * act);
     136
    111137#define SQL_GETPASSWORD "SELECT `password` FROM ds_users WHERE `username` ='%s'"
    112138#define SQL_GETPASSWORD_LEN 52
    113139
    114 #define SQL_GETSIPURI "SELECT `sip_server_uri` FROM ds_users WHERE `username` ='%s'"
     140#define SQL_GETSIPURI  "SELECT `sip_server_uri` FROM ds_users WHERE `username` ='%s'"
    115141#define SQL_GETSIPURI_LEN 60
     142
     143#define SQL_GETDIAMURI "SELECT `diameter_uri` FROM sl_sip_aor_map WHERE `sip_aor` ='%s'"
     144#define SQL_GETDIAMURI_LEN 61
    116145
    117146#define SQL_SETSIPURI "UPDATE ds_users SET `sip_server_uri`='%s', `flag`=1 WHERE `username` ='%s'"
     
    140169        struct dict_object * User_Name;
    141170        struct dict_object * Session_Id;
     171        struct dict_object * Redirect_Host;
     172        struct dict_object * Redirect_Host_Usage;
    142173        struct dict_object * SIP_Auth_Data_Item;
    143174        struct dict_object * SIP_Authorization;
  • extensions/app_sip/libdiamsip.c

    r409 r420  
    3434* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                                             *
    3535*********************************************************************************************************/
    36 #include <mysql.h>
     36//#include <mysql.h>
    3737#include "diamsip.h"
    3838
     
    185185       
    186186}
     187
     188int get_diameter_uri(const unsigned char *sip_aor, const size_t sipaorlen, char ** diameter_uri, size_t *diameterurilen)
     189{
     190  CHECK_PARAMS(sip_aor && sipaorlen);
     191 
     192  size_t querylen, sipaorpurelen;
     193  char *query, *sipaor_pure;
     194  int not_found=1;
     195 
     196 
     197 
     198     
     199  //a sip aor must begin by "sip:" or "sips:" so it must at least be longer than 4 chars
     200  if(sipaorlen<5)
     201    return 2;
     202 
     203  //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
     204 
     205  switch(as_conf->datasource)
     206  {
     207    //MySQL
     208    case ASMYSQL:
     209
     210      querylen=SQL_GETDIAMURI_LEN + sipaorlen;
     211     
     212         
     213          //We allocate the double size of SIP-URI because at worst it can be all quotes
     214          CHECK_MALLOC(sipaor_pure=malloc(sipaorlen*2+1));
     215          //We purify SIP-URI not to have forbidden characters
     216          sipaorpurelen=mysql_real_escape_string(conn, sipaor_pure, (const char *)sip_aor, sipaorlen);
     217         
     218         
     219      query = malloc(querylen+sipaorpurelen+ 2);
     220          snprintf(query, querylen+1, SQL_GETDIAMURI, sipaor_pure);
     221     
     222      MYSQL_RES *res;
     223      MYSQL_ROW row;
     224     
     225
     226      //We make the query       
     227      request_mysql(query);
     228      res=mysql_use_result(conn);
     229      if(res==NULL)
     230      {
     231                //We couldn't make the request
     232                diameter_uri=NULL;
     233                return 2;
     234      }
     235      TRACE_DEBUG(INFO,"***********%d|%d****************\n%s\n*********************************",sipaorlen,sipaorpurelen,query);
     236      while ((row = mysql_fetch_row(res)) != NULL)
     237      {
     238                *diameterurilen=strlen(row[0]);
     239                if(*diameterurilen>0)
     240                {
     241                        CHECK_MALLOC(*diameter_uri=malloc(*diameterurilen+1));
     242                        strcpy(*diameter_uri,row[0]);
     243                        not_found=0;
     244                        break;
     245                }
     246      }
     247      mysql_free_result(res);
     248      free(query);
     249          free(sipaor_pure);
     250      break;
     251     
     252    default:
     253     
     254      //We must never go here, if so, we must stop diameter_sip
     255      diameter_uri=NULL;
     256      return 2;
     257     
     258      break;
     259  }
     260 
     261  //0 if it was found
     262  return not_found;
     263 
     264}
     265
     266
    187267/*
    188268void nonce_add_element(char * nonce)
  • extensions/app_sip/multimediaauth.c

    r409 r420  
    5757       
    5858       
    59         TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act);
     59        TRACE_ENTRY("%p %p %p %p", msg, paramavp, sess, act);
    6060       
    6161        if (msg == NULL)
     
    223223
    224224                                //We allocate the double size of SIP-URI because at worst it can be all quotes
    225                                 sipuri=malloc(avphdr->avp_value->os.len*2+1);
     225                                CHECK_MALLOC(sipuri=malloc(avphdr->avp_value->os.len*2+1));
    226226                                //We purify SIP-URI not to have forbidden characters
    227227                                sipurilen=mysql_real_escape_string(conn, sipuri, (const char *)avphdr->avp_value->os.data, avphdr->avp_value->os.len);
     
    230230                                //We get the SIP-URI assignated to the user
    231231                                querylen=SQL_GETSIPURI_LEN + usernamelen;
    232                                 query = malloc(querylen+2);
     232                                CHECK_MALLOC(query = malloc(querylen+2));
    233233                                snprintf(query, querylen+1, SQL_GETSIPURI, username);
    234234
  • extensions/app_sip/registrationtermination.c

    r419 r420  
    4848{
    4949        SOCKET sock;
    50     SOCKADDR_IN sin, csin;
    51     struct rtrsipaor rtrsip;
    52     int rcvbytes=0;
     50        SOCKADDR_IN sin, csin;
     51        struct rtrsipaor rtrsip;
     52        int rcvbytes=0;
    5353        sock = socket(AF_INET, SOCK_STREAM, 0);
    5454        sin.sin_addr.s_addr = inet_addr("127.0.0.1");
    55     sin.sin_family = AF_INET;
    56     sin.sin_port = htons(PORT);
    57     socklen_t sinsize = sizeof(csin);
     55        sin.sin_family = AF_INET;
     56        sin.sin_port = htons(PORT);
     57        socklen_t sinsize = sizeof(csin);
    5858        int accepted=0;
    5959
    60     TRACE_DEBUG(INFO,"############********************THREAD OPEN \n********************\n********************\n");
    61    
    6260        if(!bind(sock, (SOCKADDR*)&sin, sizeof(sin)))
    6361        {
     
    7371                        {
    7472                                rcvbytes=recv(accepted, &rtrsip, sizeof(struct rtrsipaor),0);
    75        
    7673                               
    7774                                if(rcvbytes>-1)
    7875                                {
     76                                        //We received something, we can send an RTR
    7977                                        diamsip_RTR_cb(rtrsip);
    80                                        
    81                                        
    8278                                }
    8379                        }
    8480                }
    85                
    86                
    8781        }
    8882        else
     
    9084
    9185       
    92        
    93        
    94        
    95         TRACE_DEBUG(INFO,"############********************THREAD CLOSED \n********************\n********************\n");
    9686        pthread_exit(NULL);
    9787       
     
    130120       
    131121       
    132         TRACE_DEBUG(INFO,"We have %d SIP_AOR",num_aor);
     122        TRACE_DEBUG(FULL,"Request for %d SIP_AOR to be deregistred.",num_aor);
    133123       
    134124        if((got_username + num_aor)==0)
     
    167157        }
    168158       
     159        //Add the Auth-Application-Id
     160        {
     161                CHECK_FCT( fd_msg_avp_new ( sip_dict.Auth_Application_Id, 0, &avp ) );
     162                value.i32 = 6;
     163                CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
     164                CHECK_FCT( fd_msg_avp_add ( message, MSG_BRW_LAST_CHILD, avp) );
     165        }
    169166       
    170167        //Auth_Session_State
     
    253250        }
    254251       
     252        //TODO:remove for debug
    255253        fd_msg_dump_walk(INFO,message);
    256254        CHECK_FCT( fd_msg_send( &message, NULL, NULL ));
  • extensions/test_sip/CMakeLists.txt

    r381 r420  
    99        test_sip.c
    1010        test_sip.h
     11        multimediaauth.c
     12        locationinfo.c
     13        registrationtermination.c
    1114)
    1215
  • extensions/test_sip/test_sip.c

    r409 r420  
    3838#include"test_sip.h"
    3939
    40 
     40struct disp_hdl * test_sip_MAR_hdl=NULL;
     41struct disp_hdl * test_sip_LIR_hdl=NULL;
     42struct disp_hdl * test_sip_UAR_hdl=NULL;
     43struct disp_hdl * test_sip_SAR_hdl=NULL;
     44struct disp_hdl * test_sip_PPA_hdl=NULL;
     45struct disp_hdl * test_sip_RTA_hdl=NULL;
    4146
    4247struct disp_hdl * test_sip_MAA_hdl=NULL;
     
    5358//configuration stucture
    5459struct ts_conf * ts_conf=NULL;
    55 static struct ts_conf app_sip_conf;
     60static struct ts_conf test_sip_conf;
     61
    5662
    5763//dictionary of SIP
    58 struct test_sip_dict sip_dict;
     64struct sip_dict sip_dict;
    5965
    6066int test_sip_default_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act)
     
    6571}
    6672
    67 username = "awestfahl"
    68 password = "test"
    69 sip_aor = "sip:awestfahl@tera.ics.keio.ac.jp"
    70 
    71 #Destination information
    72 destination_realm = "freediameter.net"
    73 destination_sip = "sip:awestfahl@freediameter.net"
    74 
     73
     74/*
    7575void dump_config()
    7676{
     
    8383        TRACE_DEBUG(FULL,"***End of TEST Diameter-SIP configuration extension***");
    8484}
    85 
     85*/
    8686static int ts_conf_init(void)
    8787{
     
    9494
    9595/* entry point */
    96 int as_entry(char * conffile)
     96int ts_entry(char * conffile)
    9797{
    9898        TRACE_ENTRY("%p", conffile);
     
    101101        struct disp_when data;
    102102       
    103         /* Initialize configuration */
    104         CHECK_FCT( ts_conf_init() );
     103        /* Initialize configuration
     104        //CHECK_FCT( ts_conf_init() );
    105105       
    106106       
     
    116116        //We can dump the configuration extracted from app_sip.conf
    117117        dump_config();
     118        */
     119       
    118120       
    119121        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Session Initiation Protocol (SIP) Application", &app, ENOENT) );
     
    125127        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Session-State", &sip_dict.Auth_Session_State, ENOENT) );
    126128        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &sip_dict.Auth_Application_Id, ENOENT) );
     129        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Host", &sip_dict.Destination_Host, ENOENT) );
     130        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Realm", &sip_dict.Destination_Realm, ENOENT) );
     131        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Session-Id", &sip_dict.Session_Id, ENOENT) );
    127132        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Auth-Data-Item", &sip_dict.SIP_Auth_Data_Item, ENOENT) );
    128133        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authorization", &sip_dict.SIP_Authorization, ENOENT) );
     
    134139        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Method", &sip_dict.SIP_Method, ENOENT) );
    135140        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-AOR", &sip_dict.SIP_AOR, ENOENT) );
     141        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Deregistration-Reason", &sip_dict.SIP_Deregistration_Reason, ENOENT) );
     142        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Reason-Code", &sip_dict.SIP_Reason_Code, ENOENT) );
     143        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Reason-Info", &sip_dict.SIP_Reason_Info, ENOENT) );
    136144        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Realm", &sip_dict.Digest_Realm, ENOENT) );
    137145        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-URI", &sip_dict.Digest_URI, ENOENT) );
     
    157165       
    158166        //**Command Codes
     167        /**/
    159168        //MAR
    160         CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Multimedia-Auth-Request", &data.command, ENOENT) );
    161         CHECK_FCT( fd_disp_register( test_sip_MAR_cb, DISP_HOW_CC, &data, &test_sip_MAR_hdl ) );
     169        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Multimedia-Auth-Answer", &data.command, ENOENT) );
     170        CHECK_FCT( fd_disp_register( test_sip_MAA_cb, DISP_HOW_CC, &data, &test_sip_MAA_hdl ) );
     171       
    162172        //RTR
    163173        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Registration-Termination-Request", &data.command, ENOENT) );
    164         CHECK_FCT( fd_disp_register( test_sip_RTR_cb, DISP_HOW_CC, &data, &test_sip_RTA_hdl ) );
     174        CHECK_FCT( fd_disp_register( test_sip_RTR_cb, DISP_HOW_CC, &data, &test_sip_RTR_hdl ) );
     175       
     176        //LIA
     177        CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Location-Info-Answer", &data.command, ENOENT) );
     178        CHECK_FCT( fd_disp_register( test_sip_LIA_cb, DISP_HOW_CC, &data, &test_sip_LIA_hdl ) );
    165179       
    166180       
     
    168182        CHECK_FCT( fd_disp_register( test_sip_default_cb, DISP_HOW_APPID, &data, &test_sip_default_hdl ) );
    169183       
    170        
     184        /*
    171185        //We start database connection
    172186        if(start_mysql_connection())
    173187                return 1;
    174        
    175         CHECK_FCT(fd_sess_handler_create(&ds_sess_hdl, free));
     188        */
     189       
     190        CHECK_FCT(fd_sess_handler_create(&ts_sess_hdl, free));
     191        CHECK_FCT( fd_sig_register(30, "test_sip", (void *)test_sip_LIR_cb ) );
    176192       
    177193        return 0;
     
    181197void fd_ext_fini(void)
    182198{
    183        
     199        /*
    184200        if (test_sip_MAR_cb) {
    185201                (void) fd_disp_unregister(&test_sip_MAR_hdl);
    186202                CHECK_FCT_DO( fd_sess_handler_destroy(&ds_sess_hdl),return);
    187203        }
    188        
     204        */
    189205        //We close database connection
    190         close_mysql_connection();
     206        //close_mysql_connection();
    191207       
    192208
  • extensions/test_sip/test_sip.h

    r409 r420  
    3434* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                                             *
    3535*********************************************************************************************************/
    36 
     36#include <freeDiameter/extension.h>
     37#include <sys/time.h>
     38#include <stdint.h>
     39#include <stdlib.h>
     40#include <stdio.h>
     41#include <gcrypt.h>
     42#include <string.h>
     43#include <mysql.h>
    3744
    3845/* The module configuration */
    39 struct test_sip_conf {
     46struct ts_conf {
    4047        char * destination_sip;
    4148        char * destination_realm;
     
    4451        char * sip_aor;
    4552};
    46 extern struct test_sip_conf * test_sip_conf;
    47 
     53extern struct ts_conf * ts_conf;
    4854
    4955//Storage for some usefull AVPs
     
    5157        struct dict_object * Auth_Session_State;
    5258        struct dict_object * Auth_Application_Id;
     59        struct dict_object * Destination_Host;
     60        struct dict_object * Destination_Realm;
    5361        struct dict_object * User_Name;
     62        struct dict_object * Session_Id;
    5463        struct dict_object * SIP_Auth_Data_Item;
    5564        struct dict_object * SIP_Authorization;
     
    6170        struct dict_object * SIP_Method;
    6271        struct dict_object * SIP_AOR;
     72        struct dict_object * SIP_Deregistration_Reason;
     73        struct dict_object * SIP_Reason_Code;
     74        struct dict_object * SIP_Reason_Info;
    6375        struct dict_object * Digest_URI;               
    6476        struct dict_object * Digest_Nonce;
     
    7688
    7789extern  struct sip_dict  sip_dict;
     90extern struct session_handler * ts_sess_hdl;
    7891
     92int ts_entry();
     93void fd_ext_fini(void);
    7994
    80 
     95int test_sip_LIR_cb();
    8196
    8297int test_sip_default_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
    8398int test_sip_MAA_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
    8499int test_sip_RTR_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
     100int test_sip_LIA_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
    85101
    86 
Note: See TracChangeset for help on using the changeset viewer.