Mercurial > hg > freeDiameter
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 |
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 | 38 struct dict_object * aai_avp_do; /* cache the Auth-Application-Id dictionary object */ |
39 struct dict_object * crn_avp_do; /* cache the CC-Request-Number dictionary object */ | |
40 struct dict_object * crt_avp_do; /* cache the CC-Request-Type dictionary object */ | |
41 | |
42 #define MODULE_NAME "test_cc" | |
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 | 59 struct avp *avp; |
60 union avp_value val; | |
61 struct avp *avp_data; | |
62 struct avp_hdr *ahdr; | |
63 uint32_t crt, crn; | |
64 | |
65 /* get some necessary information from request */ | |
66 if (fd_msg_search_avp(*msg, crt_avp_do, &avp_data) < 0 || avp_data == NULL) { | |
67 fd_log_error("[%s] CC-Request-Type not found in CCR", MODULE_NAME); | |
68 return 0; | |
69 } | |
70 if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) { | |
71 fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME); | |
72 return 0; | |
73 } | |
74 crt = ahdr->avp_value->i32; | |
75 if (fd_msg_search_avp(*msg, crn_avp_do, &avp_data) < 0 || avp_data == NULL) { | |
76 fd_log_error("[%s] CC-Request-Number not found in CCR", MODULE_NAME); | |
77 return 0; | |
78 } | |
79 if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) { | |
80 fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME); | |
81 return 0; | |
82 } | |
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 | 88 |
89 /* TODO copy/fill in more AVPs in the answer */ | |
90 | |
91 /* Auth-Application-Id */ | |
92 fd_msg_avp_new(aai_avp_do, 0, &avp); | |
93 memset(&val, 0, sizeof(val)); | |
94 val.i32 = 4; | |
95 if (fd_msg_avp_setvalue(avp, &val) != 0) { | |
96 fd_msg_free(answer); | |
97 fd_log_error("can't set value for 'Auth-Application-Id' for 'Credit-Control-Request' message"); | |
98 return 0; | |
99 } | |
100 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); | |
101 | |
102 /* CC-Request-Type */ | |
103 fd_msg_avp_new(crt_avp_do, 0, &avp); | |
104 memset(&val, 0, sizeof(val)); | |
105 val.i32 = crt; | |
106 if (fd_msg_avp_setvalue(avp, &val) != 0) { | |
107 fd_msg_free(answer); | |
108 fd_log_error("can't set value for 'CC-Request-Type' for 'Credit-Control-Request' message"); | |
109 return 0; | |
110 } | |
111 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); | |
112 | |
113 /* CC-Request-Number */ | |
114 fd_msg_avp_new(crn_avp_do, 0, &avp); | |
115 memset(&val, 0, sizeof(val)); | |
116 val.i32 = crn; | |
117 if (fd_msg_avp_setvalue(avp, &val) != 0) { | |
118 fd_msg_free(answer); | |
119 fd_log_error("can't set value for 'CC-Request-Number' for 'Credit-Control-Request' message"); | |
120 return 0; | |
121 } | |
122 fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); | |
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 | 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 | 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 | 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 | 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 | 153 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &aai_avp_do, ENOENT), |
154 { LOG_E("Unable to find 'Auth-Application-Id' AVP in the loaded dictionaries."); }); | |
155 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Number", &crn_avp_do, ENOENT), | |
156 { LOG_E("Unable to find 'CC-Request-Number' AVP in the loaded dictionaries."); }); | |
157 CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Type", &crt_avp_do, ENOENT), | |
158 { LOG_E("Unable to find 'CC-Request-Type' AVP in the loaded dictionaries."); }); | |
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 | 173 EXTENSION_ENTRY(MODULE_NAME, cc_entry); |