blob: f3991d4874314341d0deb2748acdcce9a1e8bd33 [file] [log] [blame]
Brian Waters13d96012017-12-08 16:53:31 -06001/*
2* Copyright (c) 2017 Sprint
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16
17/****************
18 Generated By: fdtool enhancements to diafuzzer
19 License: same as freeDiameter
20****************/
21
22
23/*
24 * Dictionary definitions of objects specified in ts29345_avps (e10).
25 */
26#include <freeDiameter/extension.h>
27
28#define PROTO_VER "e10"
29#define GEN_DATE 1506697165.68
30
31const char *ts29345_avps_proto_ver = PROTO_VER;
32const double ts29345_avps_gen_date = GEN_DATE;
33
34/* The content of this file follows the same structure as dict_base_proto.c */
35
36#define CHECK_dict_new( _type, _data, _parent, _ref ) \
37{ \
38 int _ret = fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref) ); \
39 if ( _ret != 0 && _ret != EEXIST ) \
40 return _ret; \
41}
42
43#define CHECK_dict_search( _type, _criteria, _what, _result ) \
44 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
45
46struct local_rules_definition {
47 struct dict_avp_request avp_vendor_plus_name;
48 enum rule_position position;
49 int min;
50 int max;
51};
52
53#define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 1 : 0 )
54
55/* Attention! This version of the macro uses AVP_BY_NAME_AND_VENDOR, in contrast to most other copies! */
56#define PARSE_loc_rules( _rulearray, _parent) { \
57 int __ar; \
58 for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) { \
59 struct dict_rule_data __data = { NULL, \
60 (_rulearray)[__ar].position, \
61 0, \
62 (_rulearray)[__ar].min, \
63 (_rulearray)[__ar].max}; \
64 __data.rule_order = RULE_ORDER(__data.rule_position); \
65 CHECK_FCT( fd_dict_search( \
66 fd_g_config->cnf_dict, \
67 DICT_AVP, \
68 AVP_BY_NAME_AND_VENDOR, \
69 &(_rulearray)[__ar].avp_vendor_plus_name, \
70 &__data.rule_avp, 0 ) ); \
71 if ( !__data.rule_avp ) { \
72 TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_vendor_plus_name.avp_name); \
73 return ENOENT; \
74 } \
75 { \
76 int _ret = fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &(__data), (_parent), NULL ); \
77 if ( _ret != 0 && _ret != EEXIST ) { \
78 TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \
79 (_rulearray)[__ar].avp_vendor_plus_name.avp_name); \
80 return EINVAL; \
81 } \
82 } \
83 } \
84}
85
86#define CHECK_vendor_new( _data ) { \
87 struct dict_object * vendor_found; \
88 if (fd_dict_search(fd_g_config->cnf_dict,DICT_VENDOR,VENDOR_BY_ID,&_data.vendor_id,&vendor_found,ENOENT) == ENOENT) { \
89 CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &_data, NULL, NULL)); \
90 } \
91}
92
93#define enumval_def_u32( _val_, _str_ ) \
94 { _str_, { .u32 = _val_ }}
95
96#define enumval_def_os( _len_, _val_, _str_ ) \
97 { _str_, { .os = { .data = (unsigned char *)_val_, .len = _len_ }}}
98
99
100static int dict_ts29345_avps_load_defs(char * conffile)
101{
102 TRACE_ENTRY("%p", conffile);
103 /* Application Section */
104 {
105 /* Create the vendors */ {
106 struct dict_vendor_data vendor_data = { 10415, "3GPP" };
107 CHECK_dict_new(DICT_VENDOR, &vendor_data, NULL, NULL)
108 }
109 }
110
111
112 /* AVP section */
113 {
114 struct dict_object * Address_type;
115 struct dict_object * UTF8String_type;
116 struct dict_object * DiameterIdentity_type;
117 struct dict_object * DiameterURI_type;
118 struct dict_object * Time_type;
119 struct dict_object * IPFilterRule_type;
120
121 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
122 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
123 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
124 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
125 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
126 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
127 /* App-Layer-User-Id */
128 {
129 struct dict_avp_data data = {
130 3801, /* Code */
131 10415, /* Vendor */
132 "App-Layer-User-Id", /* Name */
133 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
134 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
135 AVP_TYPE_OCTETSTRING /* base type of data */
136 };
137 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
138 };
139 /* Assistance-Info-Validity-Timer */
140 {
141 struct dict_avp_data data = {
142 3803, /* Code */
143 10415, /* Vendor */
144 "Assistance-Info-Validity-Timer", /* Name */
145 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
146 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
147 AVP_TYPE_UNSIGNED32 /* base type of data */
148 };
149 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
150 };
151 /* Discovery-Type */
152 {
153 struct dict_avp_data data = {
154 3804, /* Code */
155 10415, /* Vendor */
156 "Discovery-Type", /* Name */
157 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
158 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
159 AVP_TYPE_UNSIGNED32 /* base type of data */
160 };
161 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
162 };
163 /* Filter-Id */
164 {
165 struct dict_avp_data data = {
166 3805, /* Code */
167 10415, /* Vendor */
168 "Filter-Id", /* Name */
169 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
170 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
171 AVP_TYPE_OCTETSTRING /* base type of data */
172 };
173 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
174 };
175 /* MAC-Address */
176 {
177 struct dict_avp_data data = {
178 3806, /* Code */
179 10415, /* Vendor */
180 "MAC-Address", /* Name */
181 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
182 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
183 AVP_TYPE_OCTETSTRING /* base type of data */
184 };
185 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
186 };
187 /* Operating-Channel */
188 {
189 struct dict_avp_data data = {
190 3808, /* Code */
191 10415, /* Vendor */
192 "Operating-Channel", /* Name */
193 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
194 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
195 AVP_TYPE_UNSIGNED32 /* base type of data */
196 };
197 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
198 };
199 /* P2P-Features */
200 {
201 struct dict_avp_data data = {
202 3809, /* Code */
203 10415, /* Vendor */
204 "P2P-Features", /* Name */
205 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
206 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
207 AVP_TYPE_UNSIGNED32 /* base type of data */
208 };
209 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
210 };
211 /* ProSe-App-Code */
212 {
213 struct dict_avp_data data = {
214 3810, /* Code */
215 10415, /* Vendor */
216 "ProSe-App-Code", /* Name */
217 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
218 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
219 AVP_TYPE_OCTETSTRING /* base type of data */
220 };
221 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
222 };
223 /* ProSe-App-Id */
224 {
225 struct dict_avp_data data = {
226 3811, /* Code */
227 10415, /* Vendor */
228 "ProSe-App-Id", /* Name */
229 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
230 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
231 AVP_TYPE_OCTETSTRING /* base type of data */
232 };
233 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
234 };
235 /* ProSe-App-Mask */
236 {
237 struct dict_avp_data data = {
238 3812, /* Code */
239 10415, /* Vendor */
240 "ProSe-App-Mask", /* Name */
241 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
242 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
243 AVP_TYPE_OCTETSTRING /* base type of data */
244 };
245 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
246 };
247 /* PRR-Flags */
248 {
249 struct dict_avp_data data = {
250 3814, /* Code */
251 10415, /* Vendor */
252 "PRR-Flags", /* Name */
253 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
254 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
255 AVP_TYPE_UNSIGNED32 /* base type of data */
256 };
257 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
258 };
259 /* ProSe-Validity-Timer */
260 {
261 struct dict_avp_data data = {
262 3815, /* Code */
263 10415, /* Vendor */
264 "ProSe-Validity-Timer", /* Name */
265 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
266 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
267 AVP_TYPE_UNSIGNED32 /* base type of data */
268 };
269 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
270 };
271 /* Requesting-EPUID */
272 {
273 struct dict_avp_data data = {
274 3816, /* Code */
275 10415, /* Vendor */
276 "Requesting-EPUID", /* Name */
277 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
278 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
279 AVP_TYPE_OCTETSTRING /* base type of data */
280 };
281 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
282 };
283 /* Targeted-EPUID */
284 {
285 struct dict_avp_data data = {
286 3817, /* Code */
287 10415, /* Vendor */
288 "Targeted-EPUID", /* Name */
289 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
290 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
291 AVP_TYPE_OCTETSTRING /* base type of data */
292 };
293 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
294 };
295 /* Time-Window */
296 {
297 struct dict_avp_data data = {
298 3818, /* Code */
299 10415, /* Vendor */
300 "Time-Window", /* Name */
301 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
302 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
303 AVP_TYPE_UNSIGNED32 /* base type of data */
304 };
305 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
306 };
307 /* WLAN-Link-Layer-Id */
308 {
309 struct dict_avp_data data = {
310 3821, /* Code */
311 10415, /* Vendor */
312 "WLAN-Link-Layer-Id", /* Name */
313 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
314 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
315 AVP_TYPE_OCTETSTRING /* base type of data */
316 };
317 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
318 };
319 /* Location-Update-Event-Type */
320 {
321 struct dict_avp_data data = {
322 3824, /* Code */
323 10415, /* Vendor */
324 "Location-Update-Event-Type", /* Name */
325 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
326 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
327 AVP_TYPE_UNSIGNED32 /* base type of data */
328 };
329 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
330 };
331 /* Location-Update-Event-Trigger */
332 {
333 struct dict_avp_data data = {
334 3826, /* Code */
335 10415, /* Vendor */
336 "Location-Update-Event-Trigger", /* Name */
337 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
338 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
339 AVP_TYPE_UNSIGNED32 /* base type of data */
340 };
341 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
342 };
343 /* Report-Cardinality */
344 {
345 struct dict_avp_data data = {
346 3827, /* Code */
347 10415, /* Vendor */
348 "Report-Cardinality", /* Name */
349 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
350 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
351 AVP_TYPE_INTEGER32 /* base type of data */
352 };
353 struct dict_object *type;
354 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Report-Cardinality)", NULL, NULL, NULL };
355 struct dict_enumval_data t_1 = { "SINGLE", { .i32=0 }};
356 struct dict_enumval_data t_2 = { "MULTIPLE", { .i32=1 }};
357 /* Create the Enumerated type, and then the AVP */
358 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
359 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
360 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
361 CHECK_dict_new( DICT_AVP, &data, type, NULL);
362 };
363 /* Minimum-Interval-Time */
364 {
365 struct dict_avp_data data = {
366 3828, /* Code */
367 10415, /* Vendor */
368 "Minimum-Interval-Time", /* Name */
369 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
370 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
371 AVP_TYPE_UNSIGNED32 /* base type of data */
372 };
373 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
374 };
375 /* Location-Report-Interval-Time */
376 {
377 struct dict_avp_data data = {
378 3830, /* Code */
379 10415, /* Vendor */
380 "Location-Report-Interval-Time", /* Name */
381 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
382 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
383 AVP_TYPE_UNSIGNED32 /* base type of data */
384 };
385 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
386 };
387 /* Total-Number-Of-Reports */
388 {
389 struct dict_avp_data data = {
390 3831, /* Code */
391 10415, /* Vendor */
392 "Total-Number-Of-Reports", /* Name */
393 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
394 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
395 AVP_TYPE_UNSIGNED32 /* base type of data */
396 };
397 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
398 };
399 /* Validity-Time-Announce */
400 {
401 struct dict_avp_data data = {
402 3832, /* Code */
403 10415, /* Vendor */
404 "Validity-Time-Announce", /* Name */
405 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
406 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
407 AVP_TYPE_UNSIGNED32 /* base type of data */
408 };
409 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
410 };
411 /* Validity-Time-Monitor */
412 {
413 struct dict_avp_data data = {
414 3833, /* Code */
415 10415, /* Vendor */
416 "Validity-Time-Monitor", /* Name */
417 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
418 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
419 AVP_TYPE_UNSIGNED32 /* base type of data */
420 };
421 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
422 };
423 /* Validity-Time-Communication */
424 {
425 struct dict_avp_data data = {
426 3834, /* Code */
427 10415, /* Vendor */
428 "Validity-Time-Communication", /* Name */
429 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
430 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
431 AVP_TYPE_UNSIGNED32 /* base type of data */
432 };
433 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
434 };
435 /* MIC */
436 {
437 struct dict_avp_data data = {
438 3836, /* Code */
439 10415, /* Vendor */
440 "MIC", /* Name */
441 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
442 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
443 AVP_TYPE_OCTETSTRING /* base type of data */
444 };
445 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
446 };
447 /* UTC-based-Counter */
448 {
449 struct dict_avp_data data = {
450 3837, /* Code */
451 10415, /* Vendor */
452 "UTC-based-Counter", /* Name */
453 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
454 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
455 AVP_TYPE_UNSIGNED32 /* base type of data */
456 };
457 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
458 };
459 /* ProSe-Match-Refresh-Timer */
460 {
461 struct dict_avp_data data = {
462 3838, /* Code */
463 10415, /* Vendor */
464 "ProSe-Match-Refresh-Timer", /* Name */
465 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
466 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
467 AVP_TYPE_UNSIGNED32 /* base type of data */
468 };
469 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
470 };
471 /* ProSe-Metadata-Index-Mask */
472 {
473 struct dict_avp_data data = {
474 3839, /* Code */
475 10415, /* Vendor */
476 "ProSe-Metadata-Index-Mask", /* Name */
477 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
478 AVP_FLAG_VENDOR, /* Fixed flag values */
479 AVP_TYPE_OCTETSTRING /* base type of data */
480 };
481 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
482 };
483 /* OS-ID */
484 {
485 struct dict_avp_data data = {
486 3841, /* Code */
487 10415, /* Vendor */
488 "OS-ID", /* Name */
489 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
490 AVP_FLAG_VENDOR, /* Fixed flag values */
491 AVP_TYPE_OCTETSTRING /* base type of data */
492 };
493 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
494 };
495 /* OS-App-ID */
496 {
497 struct dict_avp_data data = {
498 3842, /* Code */
499 10415, /* Vendor */
500 "OS-App-ID", /* Name */
501 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
502 AVP_FLAG_VENDOR, /* Fixed flag values */
503 AVP_TYPE_OCTETSTRING /* base type of data */
504 };
505 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
506 };
507 /* Requesting-RPAUID */
508 {
509 struct dict_avp_data data = {
510 3843, /* Code */
511 10415, /* Vendor */
512 "Requesting-RPAUID", /* Name */
513 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
514 AVP_FLAG_VENDOR, /* Fixed flag values */
515 AVP_TYPE_OCTETSTRING /* base type of data */
516 };
517 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
518 };
519 /* Target-RPAUID */
520 {
521 struct dict_avp_data data = {
522 3844, /* Code */
523 10415, /* Vendor */
524 "Target-RPAUID", /* Name */
525 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
526 AVP_FLAG_VENDOR, /* Fixed flag values */
527 AVP_TYPE_OCTETSTRING /* base type of data */
528 };
529 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
530 };
531 /* Target-PDUID */
532 {
533 struct dict_avp_data data = {
534 3845, /* Code */
535 10415, /* Vendor */
536 "Target-PDUID", /* Name */
537 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
538 AVP_FLAG_VENDOR, /* Fixed flag values */
539 AVP_TYPE_OCTETSTRING /* base type of data */
540 };
541 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
542 };
543 /* ProSe-Restricted-Code */
544 {
545 struct dict_avp_data data = {
546 3846, /* Code */
547 10415, /* Vendor */
548 "ProSe-Restricted-Code", /* Name */
549 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
550 AVP_FLAG_VENDOR, /* Fixed flag values */
551 AVP_TYPE_OCTETSTRING /* base type of data */
552 };
553 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
554 };
555 /* ProSe-Restricted-Code-Suffix-Range */
556 {
557 struct dict_avp_data data = {
558 3847, /* Code */
559 10415, /* Vendor */
560 "ProSe-Restricted-Code-Suffix-Range", /* Name */
561 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
562 AVP_FLAG_VENDOR, /* Fixed flag values */
563 AVP_TYPE_OCTETSTRING /* base type of data */
564 };
565 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
566 };
567 /* Beginning-Suffix */
568 {
569 struct dict_avp_data data = {
570 3848, /* Code */
571 10415, /* Vendor */
572 "Beginning-Suffix", /* Name */
573 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
574 AVP_FLAG_VENDOR, /* Fixed flag values */
575 AVP_TYPE_OCTETSTRING /* base type of data */
576 };
577 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
578 };
579 /* Ending-Suffix */
580 {
581 struct dict_avp_data data = {
582 3849, /* Code */
583 10415, /* Vendor */
584 "Ending-Suffix", /* Name */
585 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
586 AVP_FLAG_VENDOR, /* Fixed flag values */
587 AVP_TYPE_OCTETSTRING /* base type of data */
588 };
589 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
590 };
591 /* Discovery-Entry-ID */
592 {
593 struct dict_avp_data data = {
594 3850, /* Code */
595 10415, /* Vendor */
596 "Discovery-Entry-ID", /* Name */
597 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
598 AVP_FLAG_VENDOR, /* Fixed flag values */
599 AVP_TYPE_UNSIGNED32 /* base type of data */
600 };
601 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
602 };
603 /* Match-Timestamp */
604 {
605 struct dict_avp_data data = {
606 3851, /* Code */
607 10415, /* Vendor */
608 "Match-Timestamp", /* Name */
609 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
610 AVP_FLAG_VENDOR, /* Fixed flag values */
611 AVP_TYPE_OCTETSTRING /* base type of data */
612 };
613 CHECK_dict_new( DICT_AVP, &data, Time_type, NULL);
614 };
615 /* PMR-Flags */
616 {
617 struct dict_avp_data data = {
618 3852, /* Code */
619 10415, /* Vendor */
620 "PMR-Flags", /* Name */
621 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
622 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
623 AVP_TYPE_UNSIGNED32 /* base type of data */
624 };
625 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
626 };
627 /* ProSe-Application-Metadata */
628 {
629 struct dict_avp_data data = {
630 3853, /* Code */
631 10415, /* Vendor */
632 "ProSe-Application-Metadata", /* Name */
633 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
634 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
635 AVP_TYPE_OCTETSTRING /* base type of data */
636 };
637 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
638 };
639 /* Banned-RPAUID */
640 {
641 struct dict_avp_data data = {
642 3858, /* Code */
643 10415, /* Vendor */
644 "Banned-RPAUID", /* Name */
645 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
646 AVP_FLAG_VENDOR, /* Fixed flag values */
647 AVP_TYPE_OCTETSTRING /* base type of data */
648 };
649 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
650 };
651 /* Banned-PDUID */
652 {
653 struct dict_avp_data data = {
654 3859, /* Code */
655 10415, /* Vendor */
656 "Banned-PDUID", /* Name */
657 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
658 AVP_FLAG_VENDOR, /* Fixed flag values */
659 AVP_TYPE_OCTETSTRING /* base type of data */
660 };
661 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
662 };
663 /* DUSK */
664 {
665 struct dict_avp_data data = {
666 3862, /* Code */
667 10415, /* Vendor */
668 "DUSK", /* Name */
669 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
670 AVP_FLAG_VENDOR, /* Fixed flag values */
671 AVP_TYPE_OCTETSTRING /* base type of data */
672 };
673 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
674 };
675 /* DUIK */
676 {
677 struct dict_avp_data data = {
678 3863, /* Code */
679 10415, /* Vendor */
680 "DUIK", /* Name */
681 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
682 AVP_FLAG_VENDOR, /* Fixed flag values */
683 AVP_TYPE_OCTETSTRING /* base type of data */
684 };
685 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
686 };
687 /* DUCK */
688 {
689 struct dict_avp_data data = {
690 3864, /* Code */
691 10415, /* Vendor */
692 "DUCK", /* Name */
693 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
694 AVP_FLAG_VENDOR, /* Fixed flag values */
695 AVP_TYPE_OCTETSTRING /* base type of data */
696 };
697 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
698 };
699 /* MIC-Check-Indicator */
700 {
701 struct dict_avp_data data = {
702 3865, /* Code */
703 10415, /* Vendor */
704 "MIC-Check-Indicator", /* Name */
705 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
706 AVP_FLAG_VENDOR, /* Fixed flag values */
707 AVP_TYPE_UNSIGNED32 /* base type of data */
708 };
709 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
710 };
711 /* Encrypted-Bitmask */
712 {
713 struct dict_avp_data data = {
714 3866, /* Code */
715 10415, /* Vendor */
716 "Encrypted-Bitmask", /* Name */
717 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
718 AVP_FLAG_VENDOR, /* Fixed flag values */
719 AVP_TYPE_OCTETSTRING /* base type of data */
720 };
721 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
722 };
723 /* ProSe-App-Code-Suffix-Range */
724 {
725 struct dict_avp_data data = {
726 3867, /* Code */
727 10415, /* Vendor */
728 "ProSe-App-Code-Suffix-Range", /* Name */
729 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
730 AVP_FLAG_VENDOR, /* Fixed flag values */
731 AVP_TYPE_OCTETSTRING /* base type of data */
732 };
733 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
734 };
735 /* ProSe-Query-Code */
736 {
737 struct dict_avp_data data = {
738 9900, /* Code */
739 10415, /* Vendor */
740 "ProSe-Query-Code", /* Name */
741 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
742 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
743 AVP_TYPE_OCTETSTRING /* base type of data */
744 };
745 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
746 };
747 /* ProSe-Response-Code */
748 {
749 struct dict_avp_data data = {
750 9901, /* Code */
751 10415, /* Vendor */
752 "ProSe-Response-Code", /* Name */
753 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
754 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
755 AVP_TYPE_OCTETSTRING /* base type of data */
756 };
757 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
758 };
759 /* Periodic-Location-Type */
760 {
761 /* Grouped */
762 struct dict_object * avp;
763 struct dict_avp_data data = {
764 3829, /* Code */
765 10415, /* Vendor */
766 "Periodic-Location-Type", /* Name */
767 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
768 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
769 AVP_TYPE_GROUPED /* base type of data */
770 };
771 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
772 }
773 /* Code-Receiving-Security-Material */
774 {
775 /* Grouped */
776 struct dict_object * avp;
777 struct dict_avp_data data = {
778 3860, /* Code */
779 10415, /* Vendor */
780 "Code-Receiving-Security-Material", /* Name */
781 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
782 AVP_FLAG_VENDOR, /* Fixed flag values */
783 AVP_TYPE_GROUPED /* base type of data */
784 };
785 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
786 }
787 /* Code-Sending-Security-Material */
788 {
789 /* Grouped */
790 struct dict_object * avp;
791 struct dict_avp_data data = {
792 3861, /* Code */
793 10415, /* Vendor */
794 "Code-Sending-Security-Material", /* Name */
795 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
796 AVP_FLAG_VENDOR, /* Fixed flag values */
797 AVP_TYPE_GROUPED /* base type of data */
798 };
799 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
800 }
801 /* Change-Of-Area-Type */
802 {
803 /* Grouped */
804 struct dict_object * avp;
805 struct dict_avp_data data = {
806 3825, /* Code */
807 10415, /* Vendor */
808 "Change-Of-Area-Type", /* Name */
809 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
810 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
811 AVP_TYPE_GROUPED /* base type of data */
812 };
813 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
814 }
815 /* WLAN-Link-Layer-Id-List */
816 {
817 /* Grouped */
818 struct dict_object * avp;
819 struct dict_avp_data data = {
820 3822, /* Code */
821 10415, /* Vendor */
822 "WLAN-Link-Layer-Id-List", /* Name */
823 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
824 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
825 AVP_TYPE_GROUPED /* base type of data */
826 };
827 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
828 }
829 /* Match-Request */
830 {
831 /* Grouped */
832 struct dict_object * avp;
833 struct dict_avp_data data = {
834 3856, /* Code */
835 10415, /* Vendor */
836 "Match-Request", /* Name */
837 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
838 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
839 AVP_TYPE_GROUPED /* base type of data */
840 };
841 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
842 }
843 /* ProSe-App-Code-Info */
844 {
845 /* Grouped */
846 struct dict_object * avp;
847 struct dict_avp_data data = {
848 3835, /* Code */
849 10415, /* Vendor */
850 "ProSe-App-Code-Info", /* Name */
851 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
852 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
853 AVP_TYPE_GROUPED /* base type of data */
854 };
855 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
856 }
857 /* App-Identifier */
858 {
859 /* Grouped */
860 struct dict_object * avp;
861 struct dict_avp_data data = {
862 3840, /* Code */
863 10415, /* Vendor */
864 "App-Identifier", /* Name */
865 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
866 AVP_FLAG_VENDOR, /* Fixed flag values */
867 AVP_TYPE_GROUPED /* base type of data */
868 };
869 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
870 }
871 /* Match-Report */
872 {
873 /* Grouped */
874 struct dict_object * avp;
875 struct dict_avp_data data = {
876 3807, /* Code */
877 10415, /* Vendor */
878 "Match-Report", /* Name */
879 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
880 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
881 AVP_TYPE_GROUPED /* base type of data */
882 };
883 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
884 }
885 /* ProSe-Discovery-Filter */
886 {
887 /* Grouped */
888 struct dict_object * avp;
889 struct dict_avp_data data = {
890 3813, /* Code */
891 10415, /* Vendor */
892 "ProSe-Discovery-Filter", /* Name */
893 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
894 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
895 AVP_TYPE_GROUPED /* base type of data */
896 };
897 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
898 }
899 /* Discovery-Auth-Request */
900 {
901 /* Grouped */
902 struct dict_object * avp;
903 struct dict_avp_data data = {
904 3854, /* Code */
905 10415, /* Vendor */
906 "Discovery-Auth-Request", /* Name */
907 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
908 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
909 AVP_TYPE_GROUPED /* base type of data */
910 };
911 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
912 }
913 /* Match-Report-Info */
914 {
915 /* Grouped */
916 struct dict_object * avp;
917 struct dict_avp_data data = {
918 3857, /* Code */
919 10415, /* Vendor */
920 "Match-Report-Info", /* Name */
921 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
922 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
923 AVP_TYPE_GROUPED /* base type of data */
924 };
925 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
926 }
927 /* Location-Update-Trigger */
928 {
929 /* Grouped */
930 struct dict_object * avp;
931 struct dict_avp_data data = {
932 3823, /* Code */
933 10415, /* Vendor */
934 "Location-Update-Trigger", /* Name */
935 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
936 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
937 AVP_TYPE_GROUPED /* base type of data */
938 };
939 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
940 }
941 /* WiFi-P2P-Assistance-Info */
942 {
943 /* Grouped */
944 struct dict_object * avp;
945 struct dict_avp_data data = {
946 3819, /* Code */
947 10415, /* Vendor */
948 "WiFi-P2P-Assistance-Info", /* Name */
949 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
950 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
951 AVP_TYPE_GROUPED /* base type of data */
952 };
953 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
954 }
955 /* Discovery-Auth-Response */
956 {
957 /* Grouped */
958 struct dict_object * avp;
959 struct dict_avp_data data = {
960 3855, /* Code */
961 10415, /* Vendor */
962 "Discovery-Auth-Response", /* Name */
963 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
964 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
965 AVP_TYPE_GROUPED /* base type of data */
966 };
967 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
968 }
969 /* WLAN-Assistance-Info */
970 {
971 /* Grouped */
972 struct dict_object * avp;
973 struct dict_avp_data data = {
974 3820, /* Code */
975 10415, /* Vendor */
976 "WLAN-Assistance-Info", /* Name */
977 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
978 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
979 AVP_TYPE_GROUPED /* base type of data */
980 };
981 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
982 }
983 /* Assistance-Info */
984 {
985 /* Grouped */
986 struct dict_object * avp;
987 struct dict_avp_data data = {
988 3802, /* Code */
989 10415, /* Vendor */
990 "Assistance-Info", /* Name */
991 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
992 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flag values */
993 AVP_TYPE_GROUPED /* base type of data */
994 };
995 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
996 }
997
998
999 }
1000
1001 /* Commands section */
1002 {
1003
1004 }
1005
1006 return 0;
1007}
1008
1009static int dict_ts29345_avps_load_rules(char * conffile)
1010{
1011 /* Grouped AVP section */
1012 {
1013 /* Periodic-Location-Type */
1014 {
1015 /* Grouped */
1016 struct dict_object * avp;
1017 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Periodic-Location-Type"};
1018 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1019 struct local_rules_definition rules[] =
1020 {
1021 { { .avp_vendor = 10415, .avp_name = "Location-Report-Interval-Time"}, RULE_REQUIRED, -1, -1 },
1022 { { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Reports"}, RULE_REQUIRED, -1, -1 }
1023 };
1024 PARSE_loc_rules( rules, avp );
1025 }
1026 /* Code-Receiving-Security-Material */
1027 {
1028 /* Grouped */
1029 struct dict_object * avp;
1030 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Code-Receiving-Security-Material"};
1031 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1032 struct local_rules_definition rules[] =
1033 {
1034 { { .avp_vendor = 10415, .avp_name = "DUSK"}, RULE_OPTIONAL, -1, -1 },
1035 { { .avp_vendor = 10415, .avp_name = "DUIK"}, RULE_OPTIONAL, -1, -1 },
1036 { { .avp_vendor = 10415, .avp_name = "MIC-Check-Indicator"}, RULE_OPTIONAL, -1, -1 },
1037 { { .avp_vendor = 10415, .avp_name = "DUCK"}, RULE_OPTIONAL, -1, -1 },
1038 { { .avp_vendor = 10415, .avp_name = "Encrypted-Bitmask"}, RULE_OPTIONAL, -1, -1 }
1039 };
1040 PARSE_loc_rules( rules, avp );
1041 }
1042 /* Code-Sending-Security-Material */
1043 {
1044 /* Grouped */
1045 struct dict_object * avp;
1046 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Code-Sending-Security-Material"};
1047 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1048 struct local_rules_definition rules[] =
1049 {
1050 { { .avp_vendor = 10415, .avp_name = "DUSK"}, RULE_OPTIONAL, -1, -1 },
1051 { { .avp_vendor = 10415, .avp_name = "DUIK"}, RULE_OPTIONAL, -1, -1 },
1052 { { .avp_vendor = 10415, .avp_name = "DUCK"}, RULE_OPTIONAL, -1, -1 },
1053 { { .avp_vendor = 10415, .avp_name = "Encrypted-Bitmask"}, RULE_OPTIONAL, -1, -1 }
1054 };
1055 PARSE_loc_rules( rules, avp );
1056 }
1057 /* Change-Of-Area-Type */
1058 {
1059 /* Grouped */
1060 struct dict_object * avp;
1061 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Change-Of-Area-Type"};
1062 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1063 struct local_rules_definition rules[] =
1064 {
1065 { { .avp_vendor = 10415, .avp_name = "Location-Update-Event-Trigger"}, RULE_REQUIRED, -1, -1 },
1066 { { .avp_vendor = 10415, .avp_name = "Report-Cardinality"}, RULE_REQUIRED, -1, -1 },
1067 { { .avp_vendor = 10415, .avp_name = "Minimum-Interval-Time"}, RULE_OPTIONAL, -1, -1 }
1068 };
1069 PARSE_loc_rules( rules, avp );
1070 }
1071 /* WLAN-Link-Layer-Id-List */
1072 {
1073 /* Grouped */
1074 struct dict_object * avp;
1075 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "WLAN-Link-Layer-Id-List"};
1076 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1077 struct local_rules_definition rules[] =
1078 {
1079 { { .avp_vendor = 10415, .avp_name = "WLAN-Link-Layer-Id"}, RULE_OPTIONAL, -1, -1 }
1080 };
1081 PARSE_loc_rules( rules, avp );
1082 }
1083 /* Match-Request */
1084 {
1085 /* Grouped */
1086 struct dict_object * avp;
1087 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Match-Request"};
1088 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1089 struct local_rules_definition rules[] =
1090 {
1091 { { .avp_vendor = 10415, .avp_name = "Discovery-Type"}, RULE_REQUIRED, -1, -1 }
1092 };
1093 PARSE_loc_rules( rules, avp );
1094 }
1095 /* ProSe-App-Code-Info */
1096 {
1097 /* Grouped */
1098 struct dict_object * avp;
1099 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "ProSe-App-Code-Info"};
1100 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1101 struct local_rules_definition rules[] =
1102 {
1103 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Code"}, RULE_REQUIRED, -1, -1 },
1104 { { .avp_vendor = 10415, .avp_name = "MIC"}, RULE_REQUIRED, -1, -1 },
1105 { { .avp_vendor = 10415, .avp_name = "UTC-based-Counter"}, RULE_REQUIRED, -1, -1 }
1106 };
1107 PARSE_loc_rules( rules, avp );
1108 }
1109 /* App-Identifier */
1110 {
1111 /* Grouped */
1112 struct dict_object * avp;
1113 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "App-Identifier"};
1114 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1115 struct local_rules_definition rules[] =
1116 {
1117 { { .avp_vendor = 10415, .avp_name = "OS-ID"}, RULE_REQUIRED, -1, -1 },
1118 { { .avp_vendor = 10415, .avp_name = "OS-App-ID"}, RULE_REQUIRED, -1, -1 }
1119 };
1120 PARSE_loc_rules( rules, avp );
1121 }
1122 /* Match-Report */
1123 {
1124 /* Grouped */
1125 struct dict_object * avp;
1126 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Match-Report"};
1127 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1128 struct local_rules_definition rules[] =
1129 {
1130 { { .avp_vendor = 10415, .avp_name = "Discovery-Type"}, RULE_REQUIRED, -1, -1 },
1131 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Code"}, RULE_OPTIONAL, -1, -1 },
1132 { { .avp_vendor = 10415, .avp_name = "ProSe-Metadata-Index-Mask"}, RULE_OPTIONAL, -1, -1 },
1133 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Id"}, RULE_OPTIONAL, -1, -1 },
1134 { { .avp_vendor = 10415, .avp_name = "ProSe-Validity-Timer"}, RULE_OPTIONAL, -1, -1 },
1135 { { .avp_vendor = 10415, .avp_name = "ProSe-Match-Refresh-Timer"}, RULE_OPTIONAL, -1, -1 },
1136 { { .avp_vendor = 10415, .avp_name = "ProSe-Application-Metadata"}, RULE_OPTIONAL, -1, -1 }
1137 };
1138 PARSE_loc_rules( rules, avp );
1139 }
1140 /* ProSe-Discovery-Filter */
1141 {
1142 /* Grouped */
1143 struct dict_object * avp;
1144 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "ProSe-Discovery-Filter"};
1145 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1146 struct local_rules_definition rules[] =
1147 {
1148 { { .avp_vendor = 10415, .avp_name = "Filter-Id"}, RULE_REQUIRED, -1, -1 },
1149 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Id"}, RULE_REQUIRED, -1, -1 },
1150 { { .avp_vendor = 10415, .avp_name = "ProSe-Validity-Timer"}, RULE_REQUIRED, -1, -1 },
1151 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Code"}, RULE_REQUIRED, -1, -1 },
1152 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Mask"}, RULE_OPTIONAL, -1, -1 }
1153 };
1154 PARSE_loc_rules( rules, avp );
1155 }
1156 /* Discovery-Auth-Request */
1157 {
1158 /* Grouped */
1159 struct dict_object * avp;
1160 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Discovery-Auth-Request"};
1161 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1162 struct local_rules_definition rules[] =
1163 {
1164 { { .avp_vendor = 10415, .avp_name = "Discovery-Type"}, RULE_REQUIRED, -1, -1 },
1165 { { .avp_vendor = 10415, .avp_name = "User-Identity"}, RULE_OPTIONAL, -1, -1 },
1166 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Id"}, RULE_OPTIONAL, -1, -1 },
1167 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Code"}, RULE_OPTIONAL, -1, -1 },
1168 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Code-Suffix-Range"}, RULE_OPTIONAL, -1, -1 },
1169 { { .avp_vendor = 10415, .avp_name = "ProSe-Validity-Timer"}, RULE_OPTIONAL, -1, -1 },
1170 { { .avp_vendor = 10415, .avp_name = "App-Identifier"}, RULE_OPTIONAL, -1, -1 },
1171 { { .avp_vendor = 10415, .avp_name = "Requesting-RPAUID"}, RULE_OPTIONAL, -1, -1 },
1172 { { .avp_vendor = 10415, .avp_name = "Target-RPAUID"}, RULE_OPTIONAL, -1, -1 },
1173 { { .avp_vendor = 10415, .avp_name = "Target-PDUID"}, RULE_OPTIONAL, -1, -1 },
1174 { { .avp_vendor = 10415, .avp_name = "ProSe-Restricted-Code"}, RULE_OPTIONAL, -1, -1 },
1175 { { .avp_vendor = 10415, .avp_name = "ProSe-Query-Code"}, RULE_OPTIONAL, -1, -1 },
1176 { { .avp_vendor = 10415, .avp_name = "ProSe-Response-Code"}, RULE_OPTIONAL, -1, -1 },
1177 { { .avp_vendor = 10415, .avp_name = "ProSe-Restricted-Code-Suffix-Range"}, RULE_OPTIONAL, -1, -1 },
1178 { { .avp_vendor = 10415, .avp_name = "Banned-RPAUID"}, RULE_OPTIONAL, -1, -1 },
1179 { { .avp_vendor = 10415, .avp_name = "Banned-PDUID"}, RULE_OPTIONAL, -1, -1 },
1180 { { .avp_vendor = 10415, .avp_name = "Service-Result"}, RULE_OPTIONAL, -1, -1 }
1181 };
1182 PARSE_loc_rules( rules, avp );
1183 }
1184 /* Match-Report-Info */
1185 {
1186 /* Grouped */
1187 struct dict_object * avp;
1188 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Match-Report-Info"};
1189 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1190 struct local_rules_definition rules[] =
1191 {
1192 { { .avp_vendor = 10415, .avp_name = "Discovery-Type"}, RULE_REQUIRED, -1, -1 },
1193 { { .avp_vendor = 10415, .avp_name = "User-Identity"}, RULE_OPTIONAL, -1, -1 },
1194 { { .avp_vendor = 10415, .avp_name = "ProSe-App-Id"}, RULE_OPTIONAL, -1, -1 }
1195 };
1196 PARSE_loc_rules( rules, avp );
1197 }
1198 /* Location-Update-Trigger */
1199 {
1200 /* Grouped */
1201 struct dict_object * avp;
1202 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Location-Update-Trigger"};
1203 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1204 struct local_rules_definition rules[] =
1205 {
1206 { { .avp_vendor = 10415, .avp_name = "Location-Update-Event-Type"}, RULE_REQUIRED, -1, -1 },
1207 { { .avp_vendor = 10415, .avp_name = "Change-Of-Area-Type"}, RULE_OPTIONAL, -1, -1 },
1208 { { .avp_vendor = 10415, .avp_name = "Periodic-Location-Type"}, RULE_OPTIONAL, -1, -1 }
1209 };
1210 PARSE_loc_rules( rules, avp );
1211 }
1212 /* WiFi-P2P-Assistance-Info */
1213 {
1214 /* Grouped */
1215 struct dict_object * avp;
1216 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "WiFi-P2P-Assistance-Info"};
1217 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1218 struct local_rules_definition rules[] =
1219 {
1220 { { .avp_vendor = 10415, .avp_name = "SSID"}, RULE_OPTIONAL, -1, -1 },
1221 { { .avp_vendor = 0, .avp_name = "EAP-Master-Session-Key"}, RULE_OPTIONAL, -1, -1 },
1222 { { .avp_vendor = 10415, .avp_name = "P2P-Features"}, RULE_OPTIONAL, -1, -1 },
1223 { { .avp_vendor = 10415, .avp_name = "WLAN-Link-Layer-Id-List"}, RULE_OPTIONAL, -1, -1 },
1224 { { .avp_vendor = 10415, .avp_name = "WLAN-Link-Layer-Id-List"}, RULE_OPTIONAL, -1, -1 },
1225 { { .avp_vendor = 10415, .avp_name = "Operating-Channel"}, RULE_OPTIONAL, -1, -1 },
1226 { { .avp_vendor = 10415, .avp_name = "Assistance-Info-Validity-Timer"}, RULE_OPTIONAL, -1, -1 }
1227 };
1228 PARSE_loc_rules( rules, avp );
1229 }
1230 /* Discovery-Auth-Response */
1231 {
1232 /* Grouped */
1233 struct dict_object * avp;
1234 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Discovery-Auth-Response"};
1235 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1236 struct local_rules_definition rules[] =
1237 {
1238 { { .avp_vendor = 10415, .avp_name = "Discovery-Type"}, RULE_REQUIRED, -1, -1 },
1239 { { .avp_vendor = 10415, .avp_name = "ProSe-Discovery-Filter"}, RULE_OPTIONAL, -1, -1 },
1240 { { .avp_vendor = 10415, .avp_name = "Visited-PLMN-Id"}, RULE_OPTIONAL, -1, -1 },
1241 { { .avp_vendor = 10415, .avp_name = "ProSe-Restricted-Code"}, RULE_OPTIONAL, -1, -1 },
1242 { { .avp_vendor = 10415, .avp_name = "ProSe-Query-Code"}, RULE_OPTIONAL, -1, -1 },
1243 { { .avp_vendor = 10415, .avp_name = "ProSe-Response-Code"}, RULE_OPTIONAL, -1, -1 }
1244 };
1245 PARSE_loc_rules( rules, avp );
1246 }
1247 /* WLAN-Assistance-Info */
1248 {
1249 /* Grouped */
1250 struct dict_object * avp;
1251 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "WLAN-Assistance-Info"};
1252 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1253 struct local_rules_definition rules[] =
1254 {
1255 { { .avp_vendor = 10415, .avp_name = "WiFi-P2P-Assistance-Info"}, RULE_OPTIONAL, -1, -1 }
1256 };
1257 PARSE_loc_rules( rules, avp );
1258 }
1259 /* Assistance-Info */
1260 {
1261 /* Grouped */
1262 struct dict_object * avp;
1263 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 10415, .avp_name = "Assistance-Info"};
1264 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1265 struct local_rules_definition rules[] =
1266 {
1267 { { .avp_vendor = 10415, .avp_name = "WLAN-Assistance-Info"}, RULE_OPTIONAL, -1, -1 }
1268 };
1269 PARSE_loc_rules( rules, avp );
1270 }
1271
1272 }
1273
1274 /* Commands section */
1275 {
1276
1277 }
1278
1279 LOG_D( "Extension 'Dictionary definitions for ts29345_avps (e10)' initialized");
1280 return 0;
1281}
1282
1283int dict_entry(char * conffile)
1284{
1285 dict_ts29345_avps_load_defs(conffile);
1286 return dict_ts29345_avps_load_rules(conffile);
1287}
1288
1289const char* dict_ts29345_avps_proto_ver(char * conffile) {
1290 return ts29345_avps_proto_ver;
1291}
1292
1293const double dict_ts29345_avps_gen_ts(char * conffile) {
1294 return ts29345_avps_gen_date;
1295}
1296
1297EXTENSION_ENTRY2("dict_ts29345_avps", dict_ts29345_avps_load_defs, dict_ts29345_avps_load_rules, "dict_ts32299_avps", "dict_ts29272_avps", "dict_ts29273_avps", "dict_ts29336_avps", "dict_ts29344_avps", "dict_ts29329_avps", "dict_ts29229_avps", "dict_draftload_avps", "dict_rfc7683_avps", "dict_rfc4072_avps", "dict_rfc7944_avps");
1298
1299
1300