Mercurial > hg > freeDiameter
comparison extensions/dict_dcca_starent/dict_dcca_starent.c @ 1499:71cc2c59e7dc
move generated AVPs into separate source files
Refactor dict_dcca_3gpp and dict_dcca_starent so
the generated source is in a separate add_avps.c.
Easier to maintain, and also compiles faster.
Improve the error logging for DICT_RULE failure.
author | Luke Mewburn <luke@mewburn.net> |
---|---|
date | Fri, 03 Apr 2020 12:11:11 +1100 |
parents | b98c9de78f58 |
children |
comparison
equal
deleted
inserted
replaced
1498:01efba83bf60 | 1499:71cc2c59e7dc |
---|---|
3 */ | 3 */ |
4 #include <freeDiameter/extension.h> | 4 #include <freeDiameter/extension.h> |
5 | 5 |
6 | 6 |
7 /* The content of this file follows the same structure as dict_base_proto.c */ | 7 /* The content of this file follows the same structure as dict_base_proto.c */ |
8 | |
9 #define CHECK_dict_new( _type, _data, _parent, _ref ) \ | |
10 CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); | |
11 | 8 |
12 #define CHECK_dict_search( _type, _criteria, _what, _result ) \ | 9 #define CHECK_dict_search( _type, _criteria, _what, _result ) \ |
13 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); | 10 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); |
14 | 11 |
15 struct local_rules_definition { | 12 struct local_rules_definition { |
36 DICT_AVP, \ | 33 DICT_AVP, \ |
37 AVP_BY_NAME_ALL_VENDORS, \ | 34 AVP_BY_NAME_ALL_VENDORS, \ |
38 (_rulearray)[__ar].avp_name, \ | 35 (_rulearray)[__ar].avp_name, \ |
39 &__data.rule_avp, 0 ) ); \ | 36 &__data.rule_avp, 0 ) ); \ |
40 if ( !__data.rule_avp ) { \ | 37 if ( !__data.rule_avp ) { \ |
41 TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ | 38 LOG_E( "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ |
42 return ENOENT; \ | 39 return ENOENT; \ |
43 } \ | 40 } \ |
44 CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ | 41 CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ |
45 { \ | 42 { \ |
46 TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ | 43 LOG_E( "Error on rule with AVP '%s'", \ |
47 (_rulearray)[__ar].avp_name ); \ | 44 (_rulearray)[__ar].avp_name ); \ |
48 return EINVAL; \ | 45 return EINVAL; \ |
49 } ); \ | 46 } ); \ |
50 } \ | 47 } \ |
51 } | 48 } |
67 CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); | 64 CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); |
68 } | 65 } |
69 | 66 |
70 } | 67 } |
71 | 68 |
72 | 69 extern int add_avps(); |
73 struct dict_object * Address_type; | 70 CHECK_FCT( add_avps() ); |
74 struct dict_object * DiameterIdentity_type; | |
75 struct dict_object * DiameterURI_type; | |
76 struct dict_object * IPFilterRule_type; | |
77 struct dict_object * Time_type; | |
78 struct dict_object * UTF8String_type; | |
79 | |
80 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); | |
81 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); | |
82 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); | |
83 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); | |
84 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); | |
85 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); | |
86 | |
87 /*==================================================================*/ | |
88 /* Start of generated data. */ | |
89 /* */ | |
90 /* The following is created automatically with: */ | |
91 /* csv_to_fd -p fdc dict_dcca_starent.csv */ | |
92 /* Changes will be lost during the next update. */ | |
93 /* Do not modify; modify the source .csv file instead. */ | |
94 /*==================================================================*/ | |
95 | |
96 /*==================================================================*/ | |
97 /* Cisco ASR 5000 Series AAA Interface */ | |
98 /* Administration and Reference */ | |
99 /* Release 8.x and 9.0 */ | |
100 /* Last Updated June 30, 2010 */ | |
101 /* updated using v15 docs from Jan 2014 */ | |
102 /* www.cisco.com/c/dam/en/us/td/docs/wireless/asr_5000/15-0/15-0-AAA-Reference.pdf */ | |
103 /*==================================================================*/ | |
104 | |
105 /* SN-Volume-Quota-Threshold, Unsigned32, code 501 */ | |
106 { | |
107 struct dict_avp_data data = { | |
108 501, /* Code */ | |
109 8164, /* Vendor */ | |
110 "SN-Volume-Quota-Threshold", /* Name */ | |
111 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
112 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
113 AVP_TYPE_UNSIGNED32 /* base type of data */ | |
114 }; | |
115 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
116 }; | |
117 | |
118 /* SN-Unit-Quota-Threshold, Unsigned32, code 502 */ | |
119 { | |
120 struct dict_avp_data data = { | |
121 502, /* Code */ | |
122 8164, /* Vendor */ | |
123 "SN-Unit-Quota-Threshold", /* Name */ | |
124 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
125 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
126 AVP_TYPE_UNSIGNED32 /* base type of data */ | |
127 }; | |
128 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
129 }; | |
130 | |
131 /* SN-Time-Quota-Threshold, Unsigned32, code 503 */ | |
132 { | |
133 struct dict_avp_data data = { | |
134 503, /* Code */ | |
135 8164, /* Vendor */ | |
136 "SN-Time-Quota-Threshold", /* Name */ | |
137 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
138 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
139 AVP_TYPE_UNSIGNED32 /* base type of data */ | |
140 }; | |
141 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
142 }; | |
143 | |
144 /* SN-Total-Used-Service-Unit, Grouped, code 504 */ | |
145 { | |
146 struct dict_avp_data data = { | |
147 504, /* Code */ | |
148 8164, /* Vendor */ | |
149 "SN-Total-Used-Service-Unit", /* Name */ | |
150 AVP_FLAG_VENDOR, /* Fixed flags */ | |
151 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
152 AVP_TYPE_GROUPED /* base type of data */ | |
153 }; | |
154 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
155 }; | |
156 | |
157 /* SN-Absolute-Validity-Time, Time, code 505 */ | |
158 { | |
159 struct dict_avp_data data = { | |
160 505, /* Code */ | |
161 8164, /* Vendor */ | |
162 "SN-Absolute-Validity-Time", /* Name */ | |
163 AVP_FLAG_VENDOR, /* Fixed flags */ | |
164 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
165 AVP_TYPE_OCTETSTRING /* base type of data */ | |
166 }; | |
167 CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); | |
168 }; | |
169 | |
170 /* SN-Bandwidth-Control, Enumerated, code 512 */ | |
171 { | |
172 struct dict_avp_data data = { | |
173 512, /* Code */ | |
174 8164, /* Vendor */ | |
175 "SN-Bandwidth-Control", /* Name */ | |
176 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
177 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
178 AVP_TYPE_INTEGER32 /* base type of data */ | |
179 }; | |
180 struct dict_object *type; | |
181 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Bandwidth-Control)", NULL, NULL, NULL }; | |
182 CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); | |
183 CHECK_dict_new(DICT_AVP, &data, type, NULL); | |
184 }; | |
185 | |
186 /* SN-Transparent-Data, OctetString, code 513 */ | |
187 { | |
188 struct dict_avp_data data = { | |
189 513, /* Code */ | |
190 8164, /* Vendor */ | |
191 "SN-Transparent-Data", /* Name */ | |
192 AVP_FLAG_VENDOR, /* Fixed flags */ | |
193 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
194 AVP_TYPE_OCTETSTRING /* base type of data */ | |
195 }; | |
196 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
197 }; | |
198 | |
199 /* SN-Traffic-Policy, UTF8String, code 514 */ | |
200 { | |
201 struct dict_avp_data data = { | |
202 514, /* Code */ | |
203 8164, /* Vendor */ | |
204 "SN-Traffic-Policy", /* Name */ | |
205 AVP_FLAG_VENDOR, /* Fixed flags */ | |
206 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
207 AVP_TYPE_OCTETSTRING /* base type of data */ | |
208 }; | |
209 CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); | |
210 }; | |
211 | |
212 /* SN-Firewall-Policy, UTF8String, code 515 */ | |
213 { | |
214 struct dict_avp_data data = { | |
215 515, /* Code */ | |
216 8164, /* Vendor */ | |
217 "SN-Firewall-Policy", /* Name */ | |
218 AVP_FLAG_VENDOR, /* Fixed flags */ | |
219 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
220 AVP_TYPE_OCTETSTRING /* base type of data */ | |
221 }; | |
222 CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); | |
223 }; | |
224 | |
225 /* SN-Usage-Monitoring-Control, Grouped, code 517 */ | |
226 { | |
227 struct dict_avp_data data = { | |
228 517, /* Code */ | |
229 8164, /* Vendor */ | |
230 "SN-Usage-Monitoring-Control", /* Name */ | |
231 AVP_FLAG_VENDOR, /* Fixed flags */ | |
232 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
233 AVP_TYPE_GROUPED /* base type of data */ | |
234 }; | |
235 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
236 }; | |
237 | |
238 /* SN-Monitoring-Key, Unsigned32, code 518 */ | |
239 { | |
240 struct dict_avp_data data = { | |
241 518, /* Code */ | |
242 8164, /* Vendor */ | |
243 "SN-Monitoring-Key", /* Name */ | |
244 AVP_FLAG_VENDOR, /* Fixed flags */ | |
245 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
246 AVP_TYPE_UNSIGNED32 /* base type of data */ | |
247 }; | |
248 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
249 }; | |
250 | |
251 /* SN-Usage-Volume, Unsigned64, code 519 */ | |
252 { | |
253 struct dict_avp_data data = { | |
254 519, /* Code */ | |
255 8164, /* Vendor */ | |
256 "SN-Usage-Volume", /* Name */ | |
257 AVP_FLAG_VENDOR, /* Fixed flags */ | |
258 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
259 AVP_TYPE_UNSIGNED64 /* base type of data */ | |
260 }; | |
261 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
262 }; | |
263 | |
264 /* SN-Service-Flow-Detection, Enumerated, code 520 */ | |
265 { | |
266 struct dict_avp_data data = { | |
267 520, /* Code */ | |
268 8164, /* Vendor */ | |
269 "SN-Service-Flow-Detection", /* Name */ | |
270 AVP_FLAG_VENDOR, /* Fixed flags */ | |
271 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
272 AVP_TYPE_INTEGER32 /* base type of data */ | |
273 }; | |
274 struct dict_object *type; | |
275 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Service-Flow-Detection)", NULL, NULL, NULL }; | |
276 CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); | |
277 CHECK_dict_new(DICT_AVP, &data, type, NULL); | |
278 }; | |
279 | |
280 /* SN-Usage-Monitoring, Enumerated, code 521 */ | |
281 { | |
282 struct dict_avp_data data = { | |
283 521, /* Code */ | |
284 8164, /* Vendor */ | |
285 "SN-Usage-Monitoring", /* Name */ | |
286 AVP_FLAG_VENDOR, /* Fixed flags */ | |
287 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
288 AVP_TYPE_INTEGER32 /* base type of data */ | |
289 }; | |
290 struct dict_object *type; | |
291 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Usage-Monitoring)", NULL, NULL, NULL }; | |
292 CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); | |
293 CHECK_dict_new(DICT_AVP, &data, type, NULL); | |
294 }; | |
295 | |
296 /* SN-Session-Start-Indicator, OctetString, code 522 */ | |
297 { | |
298 struct dict_avp_data data = { | |
299 522, /* Code */ | |
300 8164, /* Vendor */ | |
301 "SN-Session-Start-Indicator", /* Name */ | |
302 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
303 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
304 AVP_TYPE_OCTETSTRING /* base type of data */ | |
305 }; | |
306 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
307 }; | |
308 | |
309 /* SN-Phase0-PSAPName, UTF8String, code 523 */ | |
310 { | |
311 struct dict_avp_data data = { | |
312 523, /* Code */ | |
313 8164, /* Vendor */ | |
314 "SN-Phase0-PSAPName", /* Name */ | |
315 AVP_FLAG_VENDOR, /* Fixed flags */ | |
316 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
317 AVP_TYPE_OCTETSTRING /* base type of data */ | |
318 }; | |
319 CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); | |
320 }; | |
321 | |
322 /* SN-Charging-Id, OctetString, code 525 */ | |
323 { | |
324 struct dict_avp_data data = { | |
325 525, /* Code */ | |
326 8164, /* Vendor */ | |
327 "SN-Charging-Id", /* Name */ | |
328 AVP_FLAG_VENDOR, /* Fixed flags */ | |
329 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
330 AVP_TYPE_OCTETSTRING /* base type of data */ | |
331 }; | |
332 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
333 }; | |
334 | |
335 /* SN-Remaining-Service-Unit, Grouped, code 526 */ | |
336 { | |
337 struct dict_avp_data data = { | |
338 526, /* Code */ | |
339 8164, /* Vendor */ | |
340 "SN-Remaining-Service-Unit", /* Name */ | |
341 AVP_FLAG_VENDOR, /* Fixed flags */ | |
342 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
343 AVP_TYPE_GROUPED /* base type of data */ | |
344 }; | |
345 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
346 }; | |
347 | |
348 /* SN-Service-Start-Timestamp, Time, code 527 */ | |
349 { | |
350 struct dict_avp_data data = { | |
351 527, /* Code */ | |
352 8164, /* Vendor */ | |
353 "SN-Service-Start-Timestamp", /* Name */ | |
354 AVP_FLAG_VENDOR, /* Fixed flags */ | |
355 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
356 AVP_TYPE_OCTETSTRING /* base type of data */ | |
357 }; | |
358 CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); | |
359 }; | |
360 | |
361 /* SN-Rulebase-Id, UTF8String, code 528 */ | |
362 { | |
363 struct dict_avp_data data = { | |
364 528, /* Code */ | |
365 8164, /* Vendor */ | |
366 "SN-Rulebase-Id", /* Name */ | |
367 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
368 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
369 AVP_TYPE_OCTETSTRING /* base type of data */ | |
370 }; | |
371 CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); | |
372 }; | |
373 | |
374 /* SN-CF-Policy-ID, Unsigned32, code 529 */ | |
375 { | |
376 struct dict_avp_data data = { | |
377 529, /* Code */ | |
378 8164, /* Vendor */ | |
379 "SN-CF-Policy-ID", /* Name */ | |
380 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
381 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
382 AVP_TYPE_UNSIGNED32 /* base type of data */ | |
383 }; | |
384 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
385 }; | |
386 | |
387 /* SN-Charging-Collection-Function-Name, UTF8String, code 530 */ | |
388 { | |
389 struct dict_avp_data data = { | |
390 530, /* Code */ | |
391 8164, /* Vendor */ | |
392 "SN-Charging-Collection-Function-Name", /* Name */ | |
393 AVP_FLAG_VENDOR, /* Fixed flags */ | |
394 AVP_FLAG_VENDOR, /* Fixed flag values */ | |
395 AVP_TYPE_OCTETSTRING /* base type of data */ | |
396 }; | |
397 CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); | |
398 }; | |
399 | |
400 /* SN-Fast-Reauth-Username, OctetString, code 11010 */ | |
401 { | |
402 struct dict_avp_data data = { | |
403 11010, /* Code */ | |
404 8164, /* Vendor */ | |
405 "SN-Fast-Reauth-Username", /* Name */ | |
406 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
407 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
408 AVP_TYPE_OCTETSTRING /* base type of data */ | |
409 }; | |
410 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
411 }; | |
412 | |
413 /* SN-Pseudonym-Username, OctetString, code 11011 */ | |
414 { | |
415 struct dict_avp_data data = { | |
416 11011, /* Code */ | |
417 8164, /* Vendor */ | |
418 "SN-Pseudonym-Username", /* Name */ | |
419 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ | |
420 AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ | |
421 AVP_TYPE_OCTETSTRING /* base type of data */ | |
422 }; | |
423 CHECK_dict_new(DICT_AVP, &data, NULL, NULL); | |
424 }; | |
425 | |
426 /*==================================================================*/ | |
427 /* End of generated data. */ | |
428 /*==================================================================*/ | |
429 | 71 |
430 /* Rules section */ | 72 /* Rules section */ |
431 | 73 |
432 /* SN-Remaining-Service-Unit */ | 74 /* SN-Remaining-Service-Unit */ |
433 { | 75 { |