Changeset 409:c2fb5b26bfcb in freeDiameter for extensions/test_sip/test_sip.c
- Timestamp:
- Jul 8, 2010, 4:19:28 PM (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/test_sip/test_sip.c
r392 r409 40 40 41 41 42 struct disp_hdl * test_sip_MAA_hdl=NULL; 43 struct disp_hdl * test_sip_LIA_hdl=NULL; 44 struct disp_hdl * test_sip_UAA_hdl=NULL; 45 struct disp_hdl * test_sip_SAA_hdl=NULL; 46 struct disp_hdl * test_sip_PPR_hdl=NULL; 47 struct disp_hdl * test_sip_RTR_hdl=NULL; 42 48 49 50 struct disp_hdl * test_sip_default_hdl=NULL; 51 struct session_handler * ts_sess_hdl; 52 53 //configuration stucture 54 struct ts_conf * ts_conf=NULL; 55 static struct ts_conf app_sip_conf; 56 57 //dictionary of SIP 58 struct test_sip_dict sip_dict; 59 60 int test_sip_default_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act) 61 { 62 TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act); 63 64 return 0; 65 } 66 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 75 void dump_config() 76 { 77 TRACE_DEBUG(FULL,"***Configuration of TEST Diameter-SIP extension***"); 78 TRACE_DEBUG(FULL,"# username: *%s*",ts_conf->username); 79 TRACE_DEBUG(FULL,"# password: *%s*",ts_conf->password); 80 TRACE_DEBUG(FULL,"# sip_aor: *%s*",ts_conf->sip_aor); 81 TRACE_DEBUG(FULL,"# destination_realm: *%s*",ts_conf->destination_realm); 82 TRACE_DEBUG(FULL,"# destination_sip: *%s*",ts_conf->destination_sip); 83 TRACE_DEBUG(FULL,"***End of TEST Diameter-SIP configuration extension***"); 84 } 85 86 static int ts_conf_init(void) 87 { 88 ts_conf=&test_sip_conf; 89 //memset(app_sip_conf, 0, sizeof(struct ts_conf)); 90 91 92 return 0; 93 } 94 95 /* entry point */ 96 int as_entry(char * conffile) 97 { 98 TRACE_ENTRY("%p", conffile); 99 100 struct dict_object * app=NULL; 101 struct disp_when data; 102 103 /* Initialize configuration */ 104 CHECK_FCT( ts_conf_init() ); 105 106 107 //We parse the configuration file 108 if (conffile != NULL) { 109 CHECK_FCT( ts_conf_handle(conffile) ); 110 } 111 else 112 { 113 TRACE_DEBUG(INFO, "We need a configuration file for Diameter-SIP extension. See doc/ for an example."); 114 } 115 116 //We can dump the configuration extracted from app_sip.conf 117 dump_config(); 118 119 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Session Initiation Protocol (SIP) Application", &app, ENOENT) ); 120 CHECK_FCT( fd_disp_app_support ( app, NULL, 1, 0 ) ); 121 122 123 124 //We set usefull AVPs 125 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Session-State", &sip_dict.Auth_Session_State, ENOENT) ); 126 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &sip_dict.Auth_Application_Id, ENOENT) ); 127 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) ); 128 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authorization", &sip_dict.SIP_Authorization, ENOENT) ); 129 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authenticate", &sip_dict.SIP_Authenticate, ENOENT) ); 130 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Number-Auth-Items", &sip_dict.SIP_Number_Auth_Items, ENOENT) ); 131 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authentication-Scheme", &sip_dict.SIP_Authentication_Scheme, ENOENT) ); 132 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Authentication-Info", &sip_dict.SIP_Authentication_Info, ENOENT) ); 133 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Server-URI", &sip_dict.SIP_Server_URI, ENOENT) ); 134 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-Method", &sip_dict.SIP_Method, ENOENT) ); 135 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "SIP-AOR", &sip_dict.SIP_AOR, ENOENT) ); 136 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Realm", &sip_dict.Digest_Realm, ENOENT) ); 137 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-URI", &sip_dict.Digest_URI, ENOENT) ); 138 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Nonce", &sip_dict.Digest_Nonce, ENOENT) ); 139 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-CNonce", &sip_dict.Digest_CNonce, ENOENT) ); 140 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Method", &sip_dict.Digest_Method, ENOENT) ); 141 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Nonce-Count", &sip_dict.Digest_Nonce_Count, ENOENT) ); 142 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Realm", &sip_dict.Digest_Realm, ENOENT) ); 143 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Response", &sip_dict.Digest_Response, ENOENT) ); 144 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Response-Auth", &sip_dict.Digest_Response_Auth, ENOENT) ); 145 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Username", &sip_dict.Digest_Username, ENOENT) ); 146 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-Algorithm", &sip_dict.Digest_Algorithm, ENOENT) ); 147 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-QoP", &sip_dict.Digest_QOP, ENOENT) ); 148 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "User-Name", &sip_dict.User_Name, ENOENT) ); 149 150 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Digest-HA1", &sip_dict.Digest_HA1, ENOENT) ); 151 152 153 //Register Application 154 memset(&data, 0, sizeof(data)); 155 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Session Initiation Protocol (SIP) Application", &data.app, ENOENT) ); 156 157 158 //**Command Codes 159 //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 ) ); 162 //RTR 163 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 ) ); 165 166 167 //Callback for unexpected messages 168 CHECK_FCT( fd_disp_register( test_sip_default_cb, DISP_HOW_APPID, &data, &test_sip_default_hdl ) ); 169 170 171 //We start database connection 172 if(start_mysql_connection()) 173 return 1; 174 175 CHECK_FCT(fd_sess_handler_create(&ds_sess_hdl, free)); 176 177 return 0; 178 } 179 180 //Cleanup callback 181 void fd_ext_fini(void) 182 { 183 184 if (test_sip_MAR_cb) { 185 (void) fd_disp_unregister(&test_sip_MAR_hdl); 186 CHECK_FCT_DO( fd_sess_handler_destroy(&ds_sess_hdl),return); 187 } 188 189 //We close database connection 190 close_mysql_connection(); 191 192 193 194 TRACE_ENTRY(); 195 return ; 196 } 197 198 EXTENSION_ENTRY("test_sip", ts_entry); 199
Note: See TracChangeset
for help on using the changeset viewer.