annotate extensions/app_sip/locationinfo.c @ 1521:996823ef481c

Rename 3GPP MBMS-Flag (931) to MBMS-Flags Note: 3GPP TS 29.061 table 20.5a.1 row MBMS-Flag (931) has incorrect name and should be "MBMS-Flags" per clause 20.5a.9. Fix: MBMS-Flag (931) renamed to MBMS-Flags (931).
author Luke Mewburn <luke@mewburn.net>
date Fri, 17 Apr 2020 14:21:19 +1000
parents 79dd22145f52
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1 /*********************************************************************************************************
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
3 * Author: Alexandre Westfahl <awestfahl@freediameter.net> *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
4 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
5 * Copyright (c) 2010, Alexandre Westfahl, Teraoka Laboratory (Keio University), and the WIDE Project. *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
6 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
7 * All rights reserved. *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
8 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
9 * Redistribution and use of this software in source and binary forms, with or without modification, are *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
10 * permitted provided that the following conditions are met: *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
11 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
12 * * Redistributions of source code must retain the above *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
13 * copyright notice, this list of conditions and the *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
14 * following disclaimer. *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
15 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
16 * * Redistributions in binary form must reproduce the above *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
17 * copyright notice, this list of conditions and the *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
18 * following disclaimer in the documentation and/or other *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
19 * materials provided with the distribution. *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
20 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
21 * * Neither the name of the Teraoka Laboratory nor the *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
22 * names of its contributors may be used to endorse or *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
23 * promote products derived from this software without *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
24 * specific prior written permission of Teraoka Laboratory *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
25 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
26 * *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
28 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
29 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
30 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
33 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
34 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
35 *********************************************************************************************************/
433
0d08a9ab2212 Corrected name mistakes on app_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 430
diff changeset
36 #include "app_sip.h"
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
37
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
38
639
95a784729cac Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 433
diff changeset
39 int app_sip_LIR_cb( struct msg ** msg, struct avp * paramavp, struct session * sess, void * opaque, enum disp_action * act)
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
40 {
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
41 TRACE_ENTRY("%p %p %p %p", msg, paramavp, sess, act);
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
42
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
43 struct msg *ans, *qry;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
44 struct avp *avp, *groupedavp;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
45 struct avp_hdr *avphdr;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
46 union avp_value value;
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
47 int ret=0;
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
48
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
49 //Result_Code to return in the answer
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
50 char result[55];
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
51
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
52 if (msg == NULL)
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
53 return EINVAL;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
54
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
55
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
56 // Create answer header
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
57 qry = *msg;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
58 CHECK_FCT( fd_msg_new_answer_from_req ( fd_g_config->cnf_dict, msg, 0 ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
59 ans = *msg;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
60
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
61 //Add the Auth-Application-Id
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
62 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
63 CHECK_FCT( fd_msg_avp_new ( sip_dict.Auth_Application_Id, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
64 value.i32 = 6;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
65 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
66 CHECK_FCT( fd_msg_avp_add ( ans, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
67 }
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
68 // Add the Auth-Session-State AVP
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
69 {
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
70
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
71 CHECK_FCT( fd_msg_search_avp ( qry, sip_dict.Auth_Session_State, &avp) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
72 CHECK_FCT( fd_msg_avp_hdr( avp, &avphdr ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
73
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
74 CHECK_FCT( fd_msg_avp_new ( sip_dict.Auth_Session_State, 0, &avp ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
75 CHECK_FCT( fd_msg_avp_setvalue( avp, avphdr->avp_value ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
76 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
77 }
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
78
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
79
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
80 //Add a SIP_Server_URI
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
81 {
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
82 CHECK_FCT( fd_msg_search_avp ( qry, sip_dict.SIP_AOR, &avp) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
83 CHECK_FCT( fd_msg_avp_hdr( avp, &avphdr ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
84
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
85
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
86
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
87
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
88
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
89 ret=exist_username(avphdr->avp_value->os.data, avphdr->avp_value->os.len);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
90
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
91
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
92 if(ret==2)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
93 {//error
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
94 /*
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
95 If the Diameter server cannot process the Diameter LIR command, e.g.,
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
96 due to a database error, the Diameter server MUST set the Result-Code
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
97 AVP value to DIAMETER_UNABLE_TO_COMPLY and return it in a Diameter
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
98 LIA message.
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
99 */
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
100 strcpy(result,"DIAMETER_UNABLE_TO_COMPLY");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
101 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
102 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
103 else if(ret==1)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
104 {//not found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
105 /*
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
106 One of the errors that the Diameter server may find is that the
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
107 SIP-AOR AVP value is not a valid user in the realm. In such cases,
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
108 the Diameter server MUST set the Result-Code AVP value to
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
109 DIAMETER_ERROR_USER_UNKNOWN and return it in a Diameter LIA message.
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
110
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
111 */
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
112 strcpy(result,"DIAMETER_ERROR_USER_UNKNOWN");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
113 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
114 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
115
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
116 //If we arrive here, the user is known
430
f77fc3a97287 Corrected compilation warnings on app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 427
diff changeset
117 size_t sipserverurilen;
f77fc3a97287 Corrected compilation warnings on app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 427
diff changeset
118 unsigned char * sipserver_uri=NULL;
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
119
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
120 ret=get_sipserver_uri(avphdr->avp_value->os.data, avphdr->avp_value->os.len, &sipserver_uri, &sipserverurilen);
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
121
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
122
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
123 if(ret==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
124 {//found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
125 if(sipserver_uri==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
126 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
127 //There is a problem because we must get a Diameter_URI here
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
128 strcpy(result,"DIAMETER_UNABLE_TO_COMPLY");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
129 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
130 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
131 else
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
132 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
133 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_Server_URI, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
134 value.os.data=(unsigned char *)sipserver_uri;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
135 value.os.len=sipserverurilen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
136 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
137 CHECK_FCT( fd_msg_avp_add ( ans, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
138
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
139 strcpy(result,"DIAMETER_SUCCESS");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
140 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
141 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
142 else if(ret==1)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
143 {//not found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
144 //We don't know this SIP_AOR in SL, that means
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
145 strcpy(result,"DIAMETER_ERROR_USER_UNKNOWN");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
146 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
147 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
148 else
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
149 {// returned 2, impossible to make request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
150 //We couldn't make the request, we must stop process!
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
151 strcpy(result,"DIAMETER_UNABLE_TO_COMPLY");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
152 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
153 }
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
154
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
155 //Adding SIP-Server-Capabilities
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
156 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_Server_Capabilities, 0, &groupedavp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
157 //We add mandatory and optional capabilities
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
158 ret=get_sipserver_cap(avphdr->avp_value->os.data, avphdr->avp_value->os.len, &groupedavp);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
159
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
160
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
161 if(ret==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
162 {//found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
163 if(sipserver_uri==NULL)
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
164 {
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
165 //There is a problem because we must get a Diameter_URI here
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
166 strcpy(result,"DIAMETER_UNABLE_TO_COMPLY");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
167 CHECK_FCT( fd_msg_free( groupedavp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
168 goto out;
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
169 }
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
170 else
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
171 {
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
172
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
173 CHECK_FCT( fd_msg_avp_add ( ans, MSG_BRW_LAST_CHILD, groupedavp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
174
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
175 strcpy(result,"DIAMETER_SUCCESS");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
176 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
177 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
178 else if(ret==1)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
179 {//not found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
180 //We don't know this SIP_AOR in SL, that means
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
181 strcpy(result,"DIAMETER_ERROR_IDENTITY_NOT_REGISTERED");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
182 CHECK_FCT( fd_msg_free( groupedavp ) );
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
183 goto out;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
184 }
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
185 else
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
186 {// returned 2, impossible to make request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
187 //We couldn't make the request, we must stop process!
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
188 strcpy(result,"DIAMETER_UNABLE_TO_COMPLY");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
189 CHECK_FCT( fd_msg_free( groupedavp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
190 goto out;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
191 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
192
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
193
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
194
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
195 }
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
196
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
197
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
198
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
199
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
200 out:
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
201 CHECK_FCT( fd_msg_rescode_set( ans, result, NULL, NULL, 1 ) );
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
202
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
203 CHECK_FCT( fd_msg_send( msg, NULL, NULL ));
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
204
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
205
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
206
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
207 return 0;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
208 }
"Welcome to our mercurial repository"