Changeset 420:c8a61dabea55 in freeDiameter for extensions/app_sip/diamsip.c
- Timestamp:
- Jul 19, 2010, 4:46:33 PM (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_sip/diamsip.c
r419 r420 36 36 #include "diamsip.h" 37 37 38 //Diameter-SIP server 38 39 struct disp_hdl * diamsip_MAR_hdl=NULL; 39 40 struct disp_hdl * diamsip_LIR_hdl=NULL; … … 42 43 struct disp_hdl * diamsip_PPA_hdl=NULL; 43 44 struct disp_hdl * diamsip_RTA_hdl=NULL; 45 46 //Suscriber Locator 47 struct disp_hdl * diamsipSL_LIR_hdl=NULL; 48 44 49 45 50 … … 71 76 TRACE_DEBUG(FULL,"# mysql_server: *%s*",as_conf->mysql_server); 72 77 TRACE_DEBUG(FULL,"# mysql_port: *%d*",as_conf->mysql_port); 78 TRACE_DEBUG(FULL,"# mysql_port: *%d*",as_conf->mysql_prefix); 73 79 TRACE_DEBUG(FULL,"***End of Diameter-SIP configuration extension***"); 74 80 } … … 90 96 struct dict_object * app=NULL; 91 97 struct disp_when data; 92 pthread_t rtr_thread ;98 pthread_t rtr_thread, ppr_thread; 93 99 94 100 /* Initialize configuration */ … … 104 110 TRACE_DEBUG(INFO, "We need a configuration file for Diameter-SIP extension. See doc/ for an example."); 105 111 } 112 113 //TODO: replace by configuration file!! 114 strcpy(as_conf->mysql_prefix,"as_"); 106 115 107 116 //We can dump the configuration extracted from app_sip.conf … … 118 127 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Host", &sip_dict.Destination_Host, ENOENT) ); 119 128 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) ); 120 131 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) ); 121 132 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authorization", &sip_dict.SIP_Authorization, ENOENT) ); … … 143 154 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-QoP", &sip_dict.Digest_QOP, ENOENT) ); 144 155 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "User-Name", &sip_dict.User_Name, ENOENT) ); 145 146 156 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-HA1", &sip_dict.Digest_HA1, ENOENT) ); 147 157 … … 151 161 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Session Initiation Protocol (SIP) Application", &data.app, ENOENT) ); 152 162 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 } 162 185 //Callback for unexpected messages 163 186 CHECK_FCT( fd_disp_register( diamsip_default_cb, DISP_HOW_APPID, &data, &diamsip_default_hdl ) ); … … 166 189 //We start database connection 167 190 if(start_mysql_connection()) 168 return 1;191 return EINVAL; 169 192 170 193 CHECK_FCT(fd_sess_handler_create(&ds_sess_hdl, free)); … … 174 197 { 175 198 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; 177 206 } 178 207 … … 188 217 void fd_ext_fini(void) 189 218 { 190 219 //TODO:unregister other callbacks 191 220 192 221 (void) fd_disp_unregister(&diamsip_MAR_hdl);
Note: See TracChangeset
for help on using the changeset viewer.