annotate extensions/test_cc/test_cc.c @ 1365:0d951a67648b

test_cc: improve Add all necessary fields. Copy relevant data from request.
author Thomas Klausner <tk@giga.or.at>
date Sun, 09 Jun 2019 15:43:24 +0200
parents 25f86f4cdde8
children 6b1a2405cebb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
1 /**********************************************************************************************************
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
2 * Software License Agreement(BSD License) *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
3 * Author: Thomas Klausner <tk@giga.or.at> *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
4 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
5 * Copyright(c) 2019, Thomas Klausner *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
6 * All rights reserved. *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
7 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
8 * Written under contract by Effortel Technologies SA, http://effortel.com/ *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
9 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
10 * Redistribution and use of this software in source and binary forms, with or without modification, are *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
11 * permitted provided that the following conditions are met: *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
12 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
13 * * Redistributions of source code must retain the above *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
14 * copyright notice, this list of conditions and the *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
15 * following disclaimer. *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
16 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
17 * * Redistributions in binary form must reproduce the above *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
18 * copyright notice, this list of conditions and the *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
19 * following disclaimer in the documentation and/or other *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
20 * materials provided with the distribution. *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
21 * *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
23 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
24 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
25 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
28 * TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
30 **********************************************************************************************************/
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
31
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
32 /* This extension simply receives CCR and sends CCA after displaying the content, but does not store any data */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
33
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
34 #include <freeDiameter/extension.h>
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
35
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
36 struct disp_hdl *ccr_handler_hdl;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
37
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
38 struct dict_object * aai_avp_do; /* cache the Auth-Application-Id dictionary object */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
39 struct dict_object * crn_avp_do; /* cache the CC-Request-Number dictionary object */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
40 struct dict_object * crt_avp_do; /* cache the CC-Request-Type dictionary object */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
41
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
42 #define MODULE_NAME "test_cc"
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
43
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
44 static int ccr_handler(struct msg ** msg, struct avp * avp, struct session * sess, void * data, enum disp_action * act)
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
45 {
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
46 struct msg_hdr *hdr = NULL;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
47
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
48 TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act);
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
49
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
50 if(msg == NULL)
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
51 return EINVAL;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
52
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
53 CHECK_FCT(fd_msg_hdr(*msg, &hdr));
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
54 if(hdr->msg_flags & CMD_FLAG_REQUEST) {
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
55 /* Request received, answer it */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
56 struct msg *answer;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
57 os0_t s;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
58 size_t sl;
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
59 struct avp *avp;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
60 union avp_value val;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
61 struct avp *avp_data;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
62 struct avp_hdr *ahdr;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
63 uint32_t crt, crn;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
64
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
65 /* get some necessary information from request */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
66 if (fd_msg_search_avp(*msg, crt_avp_do, &avp_data) < 0 || avp_data == NULL) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
67 fd_log_error("[%s] CC-Request-Type not found in CCR", MODULE_NAME);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
68 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
69 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
70 if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
71 fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
72 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
73 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
74 crt = ahdr->avp_value->i32;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
75 if (fd_msg_search_avp(*msg, crn_avp_do, &avp_data) < 0 || avp_data == NULL) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
76 fd_log_error("[%s] CC-Request-Number not found in CCR", MODULE_NAME);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
77 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
78 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
79 if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
80 fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
81 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
82 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
83 crn = ahdr->avp_value->i32;
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
84
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
85 /* Create the answer message */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
86 CHECK_FCT(fd_msg_new_answer_from_req(fd_g_config->cnf_dict, msg, 0));
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
87 answer = *msg;
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
88
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
89 /* TODO copy/fill in more AVPs in the answer */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
90
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
91 /* Auth-Application-Id */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
92 fd_msg_avp_new(aai_avp_do, 0, &avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
93 memset(&val, 0, sizeof(val));
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
94 val.i32 = 4;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
95 if (fd_msg_avp_setvalue(avp, &val) != 0) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
96 fd_msg_free(answer);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
97 fd_log_error("can't set value for 'Auth-Application-Id' for 'Credit-Control-Request' message");
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
98 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
99 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
100 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
101
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
102 /* CC-Request-Type */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
103 fd_msg_avp_new(crt_avp_do, 0, &avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
104 memset(&val, 0, sizeof(val));
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
105 val.i32 = crt;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
106 if (fd_msg_avp_setvalue(avp, &val) != 0) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
107 fd_msg_free(answer);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
108 fd_log_error("can't set value for 'CC-Request-Type' for 'Credit-Control-Request' message");
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
109 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
110 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
111 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
112
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
113 /* CC-Request-Number */
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
114 fd_msg_avp_new(crn_avp_do, 0, &avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
115 memset(&val, 0, sizeof(val));
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
116 val.i32 = crn;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
117 if (fd_msg_avp_setvalue(avp, &val) != 0) {
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
118 fd_msg_free(answer);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
119 fd_log_error("can't set value for 'CC-Request-Number' for 'Credit-Control-Request' message");
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
120 return 0;
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
121 }
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
122 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp);
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
123
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
124 /* TODO make result configurable (depending on an AVP?) */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
125 CHECK_FCT(fd_msg_rescode_set(answer, "DIAMETER_SUCCESS", NULL, NULL, 1));
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
126
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
127 fd_log_debug("--------------Received the following Credit Control Request:--------------");
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
128
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
129 CHECK_FCT(fd_sess_getsid(sess, &s, &sl));
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
130 fd_log_debug("Session: %.*s",(int)sl, s);
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
131
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
132 fd_log_debug("----------------------------------------------------------------------");
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
133
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
134 /* Send the answer */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
135 CHECK_FCT(fd_msg_send(msg, NULL, NULL));
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
136 fd_log_debug("reply sent");
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
137 } else {
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
138 /* We received an answer message, just discard it */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
139 CHECK_FCT(fd_msg_free(*msg));
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
140 *msg = NULL;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
141 }
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
142
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
143 return 0;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
144 }
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
145
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
146 /* entry hook: register callback */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
147 static int cc_entry(char * conffile)
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
148 {
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
149 struct disp_when data;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
150
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
151 TRACE_ENTRY("%p", conffile);
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
152
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
153 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &aai_avp_do, ENOENT),
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
154 { LOG_E("Unable to find 'Auth-Application-Id' AVP in the loaded dictionaries."); });
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
155 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Number", &crn_avp_do, ENOENT),
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
156 { LOG_E("Unable to find 'CC-Request-Number' AVP in the loaded dictionaries."); });
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
157 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Type", &crt_avp_do, ENOENT),
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
158 { LOG_E("Unable to find 'CC-Request-Type' AVP in the loaded dictionaries."); });
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
159
1346
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
160 memset(&data, 0, sizeof(data));
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
161
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
162 /* Advertise the support for the Diameter Credit Control application in the peer */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
163 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Credit Control Application", &data.app, ENOENT) );
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
164 CHECK_FCT( fd_disp_app_support ( data.app, NULL, 1, 0 ) );
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
165
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
166 /* register handler for CCR */
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
167 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Request", &data.command, ENOENT) );
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
168 CHECK_FCT( fd_disp_register( ccr_handler, DISP_HOW_CC, &data, NULL, &ccr_handler_hdl ) );
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
169
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
170 return 0;
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
171 }
25f86f4cdde8 test_cc: new extension that auto-replies to Credit-Control-Requests
Thomas Klausner <tk@giga.or.at>
parents:
diff changeset
172
1365
0d951a67648b test_cc: improve
Thomas Klausner <tk@giga.or.at>
parents: 1346
diff changeset
173 EXTENSION_ENTRY(MODULE_NAME, cc_entry);
"Welcome to our mercurial repository"