blob: f8f3f17b95d509010fd0d32a03df2228bcac75c6 [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 rfc7155_avps.
25 */
26#include <freeDiameter/extension.h>
27
28#define PROTO_VER "unspecified"
29#define GEN_DATE 1506697143.67
30
31const char *rfc7155_avps_proto_ver = PROTO_VER;
32const double rfc7155_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_rfc7155_avps_load_defs(char * conffile)
101{
102 TRACE_ENTRY("%p", conffile);
103
104 /* Derived AVP types section */
105 {
106 /* QoSFilterRule */
107 {
108 /*
109 The QosFilterRule format is derived from the OctetString AVP Base
110 Format. It uses the ASCII charset. Packets may be marked or
111 metered based on the following information:
112
113 Direction (in or out)
114 Source and destination IP address (possibly masked)
115 Protocol
116 Source and destination port (lists or ranges)
117 DSCP values (no mask or range)
118
119 Rules for the appropriate direction are evaluated in order; the
120 first matched rule terminates the evaluation. Each packet is
121 evaluated once. If no rule matches, the packet is treated as best
122 effort. An access device unable to interpret or apply a QoS rule
123 SHOULD NOT terminate the session.
124
125 QoSFilterRule filters MUST follow the following format:
126
127 action dir proto from src to dst [options]
128
129 tag - Mark packet with a specific DSCP
130 [DIFFSERV]. The DSCP option MUST be
131 included.
132 meter - Meter traffic. The metering options
133 MUST be included.
134
135 dir The format is as described under IPFilterRule.
136
137 proto The format is as described under IPFilterRule.
138
139 src and dst The format is as described under IPFilterRule.
140
141 options:
142
143 DSCP <color>
144 Color values as defined in [DIFFSERV]. Exact
145 matching of DSCP values is required (no masks or
146 ranges).
147
148 metering <rate> <color_under> <color_over>
149 The metering option provides Assured Forwarding,
150 as defined in [DIFFSERVAF], and MUST be present
151 if the action is set to meter. The rate option is
152 the throughput, in bits per second, used
153 by the access device to mark packets. Traffic
154 over the rate is marked with the color_over
155 codepoint, and traffic under the rate is marked
156 with the color_under codepoint. The color_under
157 and color_over options contain the drop
158 preferences and MUST conform to the recommended
159 codepoint keywords described in [DIFFSERVAF]
160 (e.g., AF13).
161
162 The metering option also supports the strict
163 limit on traffic required by Expedited
164 Forwarding, as defined in [DIFFSERVEF]. The
165 color_over option may contain the keyword "drop"
166 to prevent forwarding of traffic that exceeds the
167 rate parameter.
168
169 The rule syntax is a modified subset of ipfw(8) from FreeBSD,
170 and the ipfw.c code may provide a useful base for
171 implementations.
172 */
173 struct dict_type_data data = { AVP_TYPE_OCTETSTRING, "QoSFilterRule" , NULL , NULL };
174 CHECK_dict_new( DICT_TYPE, &data , NULL, NULL);
175 }
176
177 }
178
179 /* AVP section */
180 {
181 struct dict_object * Address_type;
182 struct dict_object * UTF8String_type;
183 struct dict_object * DiameterIdentity_type;
184 struct dict_object * DiameterURI_type;
185 struct dict_object * Time_type;
186 struct dict_object * IPFilterRule_type;
187 struct dict_object * QoSFilterRule_type;
188
189 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
190 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
191 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
192 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
193 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
194 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
195 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "QoSFilterRule", &QoSFilterRule_type);
196 /* NAS-Port */
197 {
198 struct dict_avp_data data = {
199 5, /* Code */
200 0, /* Vendor */
201 "NAS-Port", /* Name */
202 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
203 AVP_FLAG_MANDATORY, /* Fixed flag values */
204 AVP_TYPE_UNSIGNED32 /* base type of data */
205 };
206 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
207 };
208 /* NAS-Port-Id */
209 {
210 struct dict_avp_data data = {
211 87, /* Code */
212 0, /* Vendor */
213 "NAS-Port-Id", /* Name */
214 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
215 AVP_FLAG_MANDATORY, /* Fixed flag values */
216 AVP_TYPE_OCTETSTRING /* base type of data */
217 };
218 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
219 };
220 /* NAS-Port-Type */
221 {
222 struct dict_avp_data data = {
223 61, /* Code */
224 0, /* Vendor */
225 "NAS-Port-Type", /* Name */
226 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
227 AVP_FLAG_MANDATORY, /* Fixed flag values */
228 AVP_TYPE_INTEGER32 /* base type of data */
229 };
230 struct dict_object *type;
231 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(NAS-Port-Type)", NULL, NULL, NULL };
232 struct dict_enumval_data t_1 = { "ASYNC", { .i32=0 }};
233 struct dict_enumval_data t_2 = { "SYNC", { .i32=1 }};
234 struct dict_enumval_data t_3 = { "ISDN_SYNC", { .i32=2 }};
235 struct dict_enumval_data t_4 = { "ISDN_ASYNC_V120", { .i32=3 }};
236 struct dict_enumval_data t_5 = { "ISDN_ASYNC_V110", { .i32=4 }};
237 struct dict_enumval_data t_6 = { "VIRTUAL", { .i32=5 }};
238 struct dict_enumval_data t_7 = { "PIAFS", { .i32=6 }};
239 struct dict_enumval_data t_8 = { "HDLC_CLEAR_CHANNEL", { .i32=7 }};
240 struct dict_enumval_data t_9 = { "X25", { .i32=8 }};
241 struct dict_enumval_data t_10 = { "X75", { .i32=9 }};
242 struct dict_enumval_data t_11 = { "G.3_FAX", { .i32=10 }};
243 struct dict_enumval_data t_12 = { "SDSL_SYMMETRIC_DSL", { .i32=11 }};
244 struct dict_enumval_data t_13 = { "IDSL_ISDN_DIGITAL_SUBSCRIBER_LINE", { .i32=14 }};
245 struct dict_enumval_data t_14 = { "ETHERNET", { .i32=15 }};
246 struct dict_enumval_data t_15 = { "XDSL_DIGITAL_SUBSCRIBER_LINE_OF_UNKNOWN_TYPE", { .i32=16 }};
247 struct dict_enumval_data t_16 = { "CABLE", { .i32=17 }};
248 struct dict_enumval_data t_17 = { "WIRELESS_OTHER", { .i32=18 }};
249 struct dict_enumval_data t_18 = { "WIRELESS_IEEE_802.11", { .i32=19 }};
250 struct dict_enumval_data t_19 = { "TOKEN_RING", { .i32=20 }};
251 struct dict_enumval_data t_20 = { "FDDI", { .i32=21 }};
252 struct dict_enumval_data t_21 = { "WIRELESS_CDMA2000", { .i32=22 }};
253 struct dict_enumval_data t_22 = { "WIRELESS_UMTS", { .i32=23 }};
254 struct dict_enumval_data t_23 = { "WIRELESS_1X_EV", { .i32=24 }};
255 struct dict_enumval_data t_24 = { "IAPP", { .i32=25 }};
256 struct dict_enumval_data t_25 = { "FTTP_FIBER_TO_THE_PREMISES", { .i32=26 }};
257 struct dict_enumval_data t_26 = { "WIRELESS_IEEE_802.16", { .i32=27 }};
258 struct dict_enumval_data t_27 = { "WIRELESS_IEEE_802.20", { .i32=28 }};
259 struct dict_enumval_data t_28 = { "WIRELESS_IEEE_802.22", { .i32=29 }};
260 struct dict_enumval_data t_29 = { "PPPOA_PPP_OVER_ATM", { .i32=30 }};
261 struct dict_enumval_data t_30 = { "PPPOEOA_PPP_OVER_ETHERNET_OVER_ATM", { .i32=31 }};
262 struct dict_enumval_data t_31 = { "PPPOEOE_PPP_OVER_ETHERNET_OVER_ETHERNET", { .i32=32 }};
263 struct dict_enumval_data t_32 = { "PPPOEOVLAN_PPP_OVER_ETHERNET_OVER_VLAN", { .i32=33 }};
264 struct dict_enumval_data t_33 = { "PPPOEOQINQ_PPP_OVER_ETHERNET_OVER_IEEE_802.1QINQ", { .i32=34 }};
265 struct dict_enumval_data t_34 = { "XPON_PASSIVE_OPTICAL_NETWORK", { .i32=35 }};
266 struct dict_enumval_data t_35 = { "WIRELESS_XGP", { .i32=36 }};
267 /* Create the Enumerated type, and then the AVP */
268 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
269 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
270 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
271 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
272 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
273 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
274 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
275 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
276 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
277 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
278 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
279 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
280 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
281 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
282 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
283 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
284 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
285 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
286 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
287 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
288 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
289 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
290 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
291 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
292 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
293 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
294 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
295 CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
296 CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
297 CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
298 CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
299 CHECK_dict_new( DICT_ENUMVAL, &t_31, type, NULL);
300 CHECK_dict_new( DICT_ENUMVAL, &t_32, type, NULL);
301 CHECK_dict_new( DICT_ENUMVAL, &t_33, type, NULL);
302 CHECK_dict_new( DICT_ENUMVAL, &t_34, type, NULL);
303 CHECK_dict_new( DICT_ENUMVAL, &t_35, type, NULL);
304 CHECK_dict_new( DICT_AVP, &data, type, NULL);
305 };
306 /* Called-Station-Id */
307 {
308 struct dict_avp_data data = {
309 30, /* Code */
310 0, /* Vendor */
311 "Called-Station-Id", /* Name */
312 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
313 AVP_FLAG_MANDATORY, /* Fixed flag values */
314 AVP_TYPE_OCTETSTRING /* base type of data */
315 };
316 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
317 };
318 /* Calling-Station-Id */
319 {
320 struct dict_avp_data data = {
321 31, /* Code */
322 0, /* Vendor */
323 "Calling-Station-Id", /* Name */
324 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
325 AVP_FLAG_MANDATORY, /* Fixed flag values */
326 AVP_TYPE_OCTETSTRING /* base type of data */
327 };
328 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
329 };
330 /* Connect-Info */
331 {
332 struct dict_avp_data data = {
333 77, /* Code */
334 0, /* Vendor */
335 "Connect-Info", /* Name */
336 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
337 AVP_FLAG_MANDATORY, /* Fixed flag values */
338 AVP_TYPE_OCTETSTRING /* base type of data */
339 };
340 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
341 };
342 /* Originating-Line-Info */
343 {
344 struct dict_avp_data data = {
345 94, /* Code */
346 0, /* Vendor */
347 "Originating-Line-Info", /* Name */
348 AVP_FLAG_VENDOR, /* Fixed flags */
349 AVP_FLAG_VENDOR, /* Fixed flag values */
350 AVP_TYPE_OCTETSTRING /* base type of data */
351 };
352 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
353 };
354 /* Reply-Message */
355 {
356 struct dict_avp_data data = {
357 18, /* Code */
358 0, /* Vendor */
359 "Reply-Message", /* Name */
360 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
361 AVP_FLAG_MANDATORY, /* Fixed flag values */
362 AVP_TYPE_OCTETSTRING /* base type of data */
363 };
364 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
365 };
366 /* User-Password */
367 {
368 struct dict_avp_data data = {
369 2, /* Code */
370 0, /* Vendor */
371 "User-Password", /* Name */
372 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
373 AVP_FLAG_MANDATORY, /* Fixed flag values */
374 AVP_TYPE_OCTETSTRING /* base type of data */
375 };
376 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
377 };
378 /* Password-Retry */
379 {
380 struct dict_avp_data data = {
381 75, /* Code */
382 0, /* Vendor */
383 "Password-Retry", /* Name */
384 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
385 AVP_FLAG_MANDATORY, /* Fixed flag values */
386 AVP_TYPE_UNSIGNED32 /* base type of data */
387 };
388 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
389 };
390 /* Prompt */
391 {
392 struct dict_avp_data data = {
393 76, /* Code */
394 0, /* Vendor */
395 "Prompt", /* Name */
396 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
397 AVP_FLAG_MANDATORY, /* Fixed flag values */
398 AVP_TYPE_INTEGER32 /* base type of data */
399 };
400 struct dict_object *type;
401 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Prompt)", NULL, NULL, NULL };
402 struct dict_enumval_data t_1 = { "NO_ECHO", { .i32=0 }};
403 struct dict_enumval_data t_2 = { "ECHO", { .i32=1 }};
404 /* Create the Enumerated type, and then the AVP */
405 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
406 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
407 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
408 CHECK_dict_new( DICT_AVP, &data, type, NULL);
409 };
410 /* CHAP-Algorithm */
411 {
412 struct dict_avp_data data = {
413 403, /* Code */
414 0, /* Vendor */
415 "CHAP-Algorithm", /* Name */
416 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
417 AVP_FLAG_MANDATORY, /* Fixed flag values */
418 AVP_TYPE_INTEGER32 /* base type of data */
419 };
420 struct dict_object *type;
421 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(CHAP-Algorithm)", NULL, NULL, NULL };
422 struct dict_enumval_data t_1 = { "CHAP_WITH_MD5", { .i32=5 }};
423 /* Create the Enumerated type, and then the AVP */
424 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
425 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
426 CHECK_dict_new( DICT_AVP, &data, type, NULL);
427 };
428 /* CHAP-Ident */
429 {
430 struct dict_avp_data data = {
431 404, /* Code */
432 0, /* Vendor */
433 "CHAP-Ident", /* Name */
434 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
435 AVP_FLAG_MANDATORY, /* Fixed flag values */
436 AVP_TYPE_OCTETSTRING /* base type of data */
437 };
438 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
439 };
440 /* CHAP-Response */
441 {
442 struct dict_avp_data data = {
443 405, /* Code */
444 0, /* Vendor */
445 "CHAP-Response", /* Name */
446 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
447 AVP_FLAG_MANDATORY, /* Fixed flag values */
448 AVP_TYPE_OCTETSTRING /* base type of data */
449 };
450 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
451 };
452 /* CHAP-Challenge */
453 {
454 struct dict_avp_data data = {
455 60, /* Code */
456 0, /* Vendor */
457 "CHAP-Challenge", /* Name */
458 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
459 AVP_FLAG_MANDATORY, /* Fixed flag values */
460 AVP_TYPE_OCTETSTRING /* base type of data */
461 };
462 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
463 };
464 /* ARAP-Password */
465 {
466 struct dict_avp_data data = {
467 70, /* Code */
468 0, /* Vendor */
469 "ARAP-Password", /* Name */
470 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
471 AVP_FLAG_MANDATORY, /* Fixed flag values */
472 AVP_TYPE_OCTETSTRING /* base type of data */
473 };
474 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
475 };
476 /* ARAP-Challenge-Response */
477 {
478 struct dict_avp_data data = {
479 84, /* Code */
480 0, /* Vendor */
481 "ARAP-Challenge-Response", /* Name */
482 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
483 AVP_FLAG_MANDATORY, /* Fixed flag values */
484 AVP_TYPE_OCTETSTRING /* base type of data */
485 };
486 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
487 };
488 /* ARAP-Security */
489 {
490 struct dict_avp_data data = {
491 73, /* Code */
492 0, /* Vendor */
493 "ARAP-Security", /* Name */
494 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
495 AVP_FLAG_MANDATORY, /* Fixed flag values */
496 AVP_TYPE_UNSIGNED32 /* base type of data */
497 };
498 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
499 };
500 /* ARAP-Security-Data */
501 {
502 struct dict_avp_data data = {
503 74, /* Code */
504 0, /* Vendor */
505 "ARAP-Security-Data", /* Name */
506 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
507 AVP_FLAG_MANDATORY, /* Fixed flag values */
508 AVP_TYPE_OCTETSTRING /* base type of data */
509 };
510 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
511 };
512 /* Service-Type */
513 {
514 struct dict_avp_data data = {
515 6, /* Code */
516 0, /* Vendor */
517 "Service-Type", /* Name */
518 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
519 AVP_FLAG_MANDATORY, /* Fixed flag values */
520 AVP_TYPE_INTEGER32 /* base type of data */
521 };
522 struct dict_object *type;
523 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Service-Type)", NULL, NULL, NULL };
524 struct dict_enumval_data t_1 = { "UNKNOWN", { .i32=0 }};
525 struct dict_enumval_data t_2 = { "LOGIN", { .i32=1 }};
526 struct dict_enumval_data t_3 = { "FRAMED", { .i32=2 }};
527 struct dict_enumval_data t_4 = { "CALLBACK_LOGIN", { .i32=3 }};
528 struct dict_enumval_data t_5 = { "CALLBACK_FRAMED", { .i32=4 }};
529 struct dict_enumval_data t_6 = { "OUTBOUND", { .i32=5 }};
530 struct dict_enumval_data t_7 = { "ADMINISTRATIVE", { .i32=6 }};
531 struct dict_enumval_data t_8 = { "NAS_PROMPT", { .i32=7 }};
532 struct dict_enumval_data t_9 = { "AUTHENTICATE_ONLY", { .i32=8 }};
533 struct dict_enumval_data t_10 = { "CALLBACK_NAS_PROMPT", { .i32=9 }};
534 struct dict_enumval_data t_11 = { "CALL_CHECK", { .i32=10 }};
535 struct dict_enumval_data t_12 = { "CALLBACK_ADMINISTRATIVE", { .i32=11 }};
536 struct dict_enumval_data t_13 = { "VOICE", { .i32=12 }};
537 struct dict_enumval_data t_14 = { "FAX", { .i32=13 }};
538 struct dict_enumval_data t_15 = { "MODEM_RELAY", { .i32=14 }};
539 struct dict_enumval_data t_16 = { "IAPP_REGISTER", { .i32=15 }};
540 struct dict_enumval_data t_17 = { "IAPP_AP_CHECK", { .i32=16 }};
541 struct dict_enumval_data t_18 = { "AUTHORIZE_ONLY", { .i32=17 }};
542 struct dict_enumval_data t_19 = { "FRAMED_MANAGEMENT", { .i32=18 }};
543 /* Create the Enumerated type, and then the AVP */
544 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
545 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
546 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
547 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
548 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
549 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
550 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
551 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
552 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
553 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
554 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
555 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
556 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
557 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
558 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
559 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
560 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
561 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
562 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
563 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
564 CHECK_dict_new( DICT_AVP, &data, type, NULL);
565 };
566 /* Callback-Number */
567 {
568 struct dict_avp_data data = {
569 19, /* Code */
570 0, /* Vendor */
571 "Callback-Number", /* Name */
572 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
573 AVP_FLAG_MANDATORY, /* Fixed flag values */
574 AVP_TYPE_OCTETSTRING /* base type of data */
575 };
576 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
577 };
578 /* Callback-Id */
579 {
580 struct dict_avp_data data = {
581 20, /* Code */
582 0, /* Vendor */
583 "Callback-Id", /* Name */
584 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
585 AVP_FLAG_MANDATORY, /* Fixed flag values */
586 AVP_TYPE_OCTETSTRING /* base type of data */
587 };
588 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
589 };
590 /* Idle-Timeout */
591 {
592 struct dict_avp_data data = {
593 28, /* Code */
594 0, /* Vendor */
595 "Idle-Timeout", /* Name */
596 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
597 AVP_FLAG_MANDATORY, /* Fixed flag values */
598 AVP_TYPE_UNSIGNED32 /* base type of data */
599 };
600 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
601 };
602 /* Port-Limit */
603 {
604 struct dict_avp_data data = {
605 62, /* Code */
606 0, /* Vendor */
607 "Port-Limit", /* Name */
608 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
609 AVP_FLAG_MANDATORY, /* Fixed flag values */
610 AVP_TYPE_UNSIGNED32 /* base type of data */
611 };
612 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
613 };
614 /* NAS-Filter-Rule */
615 {
616 struct dict_avp_data data = {
617 400, /* Code */
618 0, /* Vendor */
619 "NAS-Filter-Rule", /* Name */
620 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
621 AVP_FLAG_MANDATORY, /* Fixed flag values */
622 AVP_TYPE_OCTETSTRING /* base type of data */
623 };
624 CHECK_dict_new( DICT_AVP, &data, IPFilterRule_type, NULL);
625 };
626 /* Filter-Id */
627 {
628 struct dict_avp_data data = {
629 11, /* Code */
630 0, /* Vendor */
631 "Filter-Id", /* Name */
632 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
633 AVP_FLAG_MANDATORY, /* Fixed flag values */
634 AVP_TYPE_OCTETSTRING /* base type of data */
635 };
636 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
637 };
638 /* Configuration-Token */
639 {
640 struct dict_avp_data data = {
641 78, /* Code */
642 0, /* Vendor */
643 "Configuration-Token", /* Name */
644 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
645 AVP_FLAG_MANDATORY, /* Fixed flag values */
646 AVP_TYPE_OCTETSTRING /* base type of data */
647 };
648 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
649 };
650 /* QoS-Filter-Rule */
651 {
652 struct dict_avp_data data = {
653 407, /* Code */
654 0, /* Vendor */
655 "QoS-Filter-Rule", /* Name */
656 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
657 AVP_FLAG_MANDATORY, /* Fixed flag values */
658 AVP_TYPE_OCTETSTRING /* base type of data */
659 };
660 CHECK_dict_new( DICT_AVP, &data, QoSFilterRule_type, NULL);
661 };
662 /* Framed-Protocol */
663 {
664 struct dict_avp_data data = {
665 7, /* Code */
666 0, /* Vendor */
667 "Framed-Protocol", /* Name */
668 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
669 AVP_FLAG_MANDATORY, /* Fixed flag values */
670 AVP_TYPE_INTEGER32 /* base type of data */
671 };
672 struct dict_object *type;
673 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Framed-Protocol)", NULL, NULL, NULL };
674 struct dict_enumval_data t_1 = { "PPP", { .i32=1 }};
675 struct dict_enumval_data t_2 = { "SLIP", { .i32=2 }};
676 struct dict_enumval_data t_3 = { "ARAP", { .i32=3 }};
677 struct dict_enumval_data t_4 = { "GANDALF", { .i32=4 }};
678 struct dict_enumval_data t_5 = { "XYLOGICS", { .i32=5 }};
679 struct dict_enumval_data t_6 = { "X.75", { .i32=6 }};
680 struct dict_enumval_data t_7 = { "GPRS_PDP_CONTEXT", { .i32=7 }};
681 struct dict_enumval_data t_8 = { "ASCEND_ARA", { .i32=255 }};
682 struct dict_enumval_data t_9 = { "MPP", { .i32=256 }};
683 struct dict_enumval_data t_10 = { "EURAW", { .i32=257 }};
684 struct dict_enumval_data t_11 = { "EUUI", { .i32=258 }};
685 struct dict_enumval_data t_12 = { "X25", { .i32=259 }};
686 struct dict_enumval_data t_13 = { "COMB", { .i32=260 }};
687 struct dict_enumval_data t_14 = { "FR", { .i32=261 }};
688 /* Create the Enumerated type, and then the AVP */
689 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
690 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
691 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
692 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
693 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
694 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
695 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
696 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
697 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
698 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
699 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
700 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
701 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
702 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
703 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
704 CHECK_dict_new( DICT_AVP, &data, type, NULL);
705 };
706 /* Framed-Routing */
707 {
708 struct dict_avp_data data = {
709 10, /* Code */
710 0, /* Vendor */
711 "Framed-Routing", /* Name */
712 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
713 AVP_FLAG_MANDATORY, /* Fixed flag values */
714 AVP_TYPE_INTEGER32 /* base type of data */
715 };
716 struct dict_object *type;
717 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Framed-Routing)", NULL, NULL, NULL };
718 struct dict_enumval_data t_1 = { "NONE", { .i32=0 }};
719 struct dict_enumval_data t_2 = { "SEND_ROUTING_PACKETS", { .i32=1 }};
720 struct dict_enumval_data t_3 = { "LISTEN_FOR_ROUTING_PACKETS", { .i32=2 }};
721 struct dict_enumval_data t_4 = { "SEND_AND_LISTEN", { .i32=3 }};
722 /* Create the Enumerated type, and then the AVP */
723 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
724 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
725 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
726 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
727 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
728 CHECK_dict_new( DICT_AVP, &data, type, NULL);
729 };
730 /* Framed-MTU */
731 {
732 struct dict_avp_data data = {
733 12, /* Code */
734 0, /* Vendor */
735 "Framed-MTU", /* Name */
736 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
737 AVP_FLAG_MANDATORY, /* Fixed flag values */
738 AVP_TYPE_UNSIGNED32 /* base type of data */
739 };
740 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
741 };
742 /* Framed-Compression */
743 {
744 struct dict_avp_data data = {
745 13, /* Code */
746 0, /* Vendor */
747 "Framed-Compression", /* Name */
748 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
749 AVP_FLAG_MANDATORY, /* Fixed flag values */
750 AVP_TYPE_INTEGER32 /* base type of data */
751 };
752 struct dict_object *type;
753 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Framed-Compression)", NULL, NULL, NULL };
754 struct dict_enumval_data t_1 = { "NONE", { .i32=0 }};
755 struct dict_enumval_data t_2 = { "IPX_HEADER_COMPRESSION", { .i32=2 }};
756 struct dict_enumval_data t_3 = { "STAC_LZS_COMPRESSION", { .i32=3 }};
757 /* Create the Enumerated type, and then the AVP */
758 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
759 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
760 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
761 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
762 CHECK_dict_new( DICT_AVP, &data, type, NULL);
763 };
764 /* Framed-IP-Address */
765 {
766 struct dict_avp_data data = {
767 8, /* Code */
768 0, /* Vendor */
769 "Framed-IP-Address", /* Name */
770 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
771 AVP_FLAG_MANDATORY, /* Fixed flag values */
772 AVP_TYPE_OCTETSTRING /* base type of data */
773 };
774 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
775 };
776 /* Framed-IP-Netmask */
777 {
778 struct dict_avp_data data = {
779 9, /* Code */
780 0, /* Vendor */
781 "Framed-IP-Netmask", /* Name */
782 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
783 AVP_FLAG_MANDATORY, /* Fixed flag values */
784 AVP_TYPE_OCTETSTRING /* base type of data */
785 };
786 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
787 };
788 /* Framed-Route */
789 {
790 struct dict_avp_data data = {
791 22, /* Code */
792 0, /* Vendor */
793 "Framed-Route", /* Name */
794 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
795 AVP_FLAG_MANDATORY, /* Fixed flag values */
796 AVP_TYPE_OCTETSTRING /* base type of data */
797 };
798 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
799 };
800 /* Framed-Pool */
801 {
802 struct dict_avp_data data = {
803 88, /* Code */
804 0, /* Vendor */
805 "Framed-Pool", /* Name */
806 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
807 AVP_FLAG_MANDATORY, /* Fixed flag values */
808 AVP_TYPE_OCTETSTRING /* base type of data */
809 };
810 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
811 };
812 /* Framed-Interface-Id */
813 {
814 struct dict_avp_data data = {
815 96, /* Code */
816 0, /* Vendor */
817 "Framed-Interface-Id", /* Name */
818 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
819 AVP_FLAG_MANDATORY, /* Fixed flag values */
820 AVP_TYPE_UNSIGNED64 /* base type of data */
821 };
822 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
823 };
824 /* Framed-IPv6-Prefix */
825 {
826 struct dict_avp_data data = {
827 97, /* Code */
828 0, /* Vendor */
829 "Framed-IPv6-Prefix", /* Name */
830 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
831 AVP_FLAG_MANDATORY, /* Fixed flag values */
832 AVP_TYPE_OCTETSTRING /* base type of data */
833 };
834 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
835 };
836 /* Framed-IPv6-Route */
837 {
838 struct dict_avp_data data = {
839 99, /* Code */
840 0, /* Vendor */
841 "Framed-IPv6-Route", /* Name */
842 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
843 AVP_FLAG_MANDATORY, /* Fixed flag values */
844 AVP_TYPE_OCTETSTRING /* base type of data */
845 };
846 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
847 };
848 /* Framed-IPv6-Pool */
849 {
850 struct dict_avp_data data = {
851 100, /* Code */
852 0, /* Vendor */
853 "Framed-IPv6-Pool", /* Name */
854 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
855 AVP_FLAG_MANDATORY, /* Fixed flag values */
856 AVP_TYPE_OCTETSTRING /* base type of data */
857 };
858 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
859 };
860 /* Framed-IPX-Network */
861 {
862 struct dict_avp_data data = {
863 23, /* Code */
864 0, /* Vendor */
865 "Framed-IPX-Network", /* Name */
866 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
867 AVP_FLAG_MANDATORY, /* Fixed flag values */
868 AVP_TYPE_OCTETSTRING /* base type of data */
869 };
870 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
871 };
872 /* Framed-Appletalk-Link */
873 {
874 struct dict_avp_data data = {
875 37, /* Code */
876 0, /* Vendor */
877 "Framed-Appletalk-Link", /* Name */
878 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
879 AVP_FLAG_MANDATORY, /* Fixed flag values */
880 AVP_TYPE_UNSIGNED32 /* base type of data */
881 };
882 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
883 };
884 /* Framed-Appletalk-Network */
885 {
886 struct dict_avp_data data = {
887 38, /* Code */
888 0, /* Vendor */
889 "Framed-Appletalk-Network", /* Name */
890 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
891 AVP_FLAG_MANDATORY, /* Fixed flag values */
892 AVP_TYPE_UNSIGNED32 /* base type of data */
893 };
894 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
895 };
896 /* Framed-Appletalk-Zone */
897 {
898 struct dict_avp_data data = {
899 39, /* Code */
900 0, /* Vendor */
901 "Framed-Appletalk-Zone", /* Name */
902 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
903 AVP_FLAG_MANDATORY, /* Fixed flag values */
904 AVP_TYPE_OCTETSTRING /* base type of data */
905 };
906 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
907 };
908 /* ARAP-Features */
909 {
910 struct dict_avp_data data = {
911 71, /* Code */
912 0, /* Vendor */
913 "ARAP-Features", /* Name */
914 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
915 AVP_FLAG_MANDATORY, /* Fixed flag values */
916 AVP_TYPE_OCTETSTRING /* base type of data */
917 };
918 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
919 };
920 /* ARAP-Zone-Access */
921 {
922 struct dict_avp_data data = {
923 72, /* Code */
924 0, /* Vendor */
925 "ARAP-Zone-Access", /* Name */
926 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
927 AVP_FLAG_MANDATORY, /* Fixed flag values */
928 AVP_TYPE_INTEGER32 /* base type of data */
929 };
930 struct dict_object *type;
931 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(ARAP-Zone-Access)", NULL, NULL, NULL };
932 struct dict_enumval_data t_1 = { "ONLY_ALLOW_ACCESS_TO_DEFAULT_ZONE", { .i32=1 }};
933 struct dict_enumval_data t_2 = { "USE_ZONE_FILTER_INCLUSIVELY", { .i32=2 }};
934 struct dict_enumval_data t_3 = { "USE_ZONE_FILTER_EXCLUSIVELY", { .i32=3 }};
935 /* Create the Enumerated type, and then the AVP */
936 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
937 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
938 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
939 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
940 CHECK_dict_new( DICT_AVP, &data, type, NULL);
941 };
942 /* Login-IP-Host */
943 {
944 struct dict_avp_data data = {
945 14, /* Code */
946 0, /* Vendor */
947 "Login-IP-Host", /* Name */
948 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
949 AVP_FLAG_MANDATORY, /* Fixed flag values */
950 AVP_TYPE_OCTETSTRING /* base type of data */
951 };
952 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
953 };
954 /* Login-IPv6-Host */
955 {
956 struct dict_avp_data data = {
957 98, /* Code */
958 0, /* Vendor */
959 "Login-IPv6-Host", /* Name */
960 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
961 AVP_FLAG_MANDATORY, /* Fixed flag values */
962 AVP_TYPE_OCTETSTRING /* base type of data */
963 };
964 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
965 };
966 /* Login-Service */
967 {
968 struct dict_avp_data data = {
969 15, /* Code */
970 0, /* Vendor */
971 "Login-Service", /* Name */
972 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
973 AVP_FLAG_MANDATORY, /* Fixed flag values */
974 AVP_TYPE_INTEGER32 /* base type of data */
975 };
976 struct dict_object *type;
977 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Login-Service)", NULL, NULL, NULL };
978 struct dict_enumval_data t_1 = { "TELNET", { .i32=0 }};
979 struct dict_enumval_data t_2 = { "RLOGIN", { .i32=1 }};
980 struct dict_enumval_data t_3 = { "TCP_CLEAR", { .i32=2 }};
981 struct dict_enumval_data t_4 = { "PORTMASTER", { .i32=3 }};
982 struct dict_enumval_data t_5 = { "LAT", { .i32=4 }};
983 struct dict_enumval_data t_6 = { "X25_PAD", { .i32=5 }};
984 struct dict_enumval_data t_7 = { "X25_T3POS", { .i32=6 }};
985 struct dict_enumval_data t_8 = { "UNASSIGNED", { .i32=7 }};
986 /* Create the Enumerated type, and then the AVP */
987 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
988 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
989 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
990 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
991 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
992 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
993 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
994 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
995 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
996 CHECK_dict_new( DICT_AVP, &data, type, NULL);
997 };
998 /* Login-TCP-Port */
999 {
1000 struct dict_avp_data data = {
1001 16, /* Code */
1002 0, /* Vendor */
1003 "Login-TCP-Port", /* Name */
1004 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1005 AVP_FLAG_MANDATORY, /* Fixed flag values */
1006 AVP_TYPE_UNSIGNED32 /* base type of data */
1007 };
1008 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1009 };
1010 /* Login-LAT-Service */
1011 {
1012 struct dict_avp_data data = {
1013 34, /* Code */
1014 0, /* Vendor */
1015 "Login-LAT-Service", /* Name */
1016 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1017 AVP_FLAG_MANDATORY, /* Fixed flag values */
1018 AVP_TYPE_OCTETSTRING /* base type of data */
1019 };
1020 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1021 };
1022 /* Login-LAT-Node */
1023 {
1024 struct dict_avp_data data = {
1025 35, /* Code */
1026 0, /* Vendor */
1027 "Login-LAT-Node", /* Name */
1028 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1029 AVP_FLAG_MANDATORY, /* Fixed flag values */
1030 AVP_TYPE_OCTETSTRING /* base type of data */
1031 };
1032 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1033 };
1034 /* Login-LAT-Group */
1035 {
1036 struct dict_avp_data data = {
1037 36, /* Code */
1038 0, /* Vendor */
1039 "Login-LAT-Group", /* Name */
1040 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1041 AVP_FLAG_MANDATORY, /* Fixed flag values */
1042 AVP_TYPE_OCTETSTRING /* base type of data */
1043 };
1044 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1045 };
1046 /* Login-LAT-Port */
1047 {
1048 struct dict_avp_data data = {
1049 63, /* Code */
1050 0, /* Vendor */
1051 "Login-LAT-Port", /* Name */
1052 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1053 AVP_FLAG_MANDATORY, /* Fixed flag values */
1054 AVP_TYPE_OCTETSTRING /* base type of data */
1055 };
1056 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1057 };
1058 /* Tunnel-Type */
1059 {
1060 struct dict_avp_data data = {
1061 64, /* Code */
1062 0, /* Vendor */
1063 "Tunnel-Type", /* Name */
1064 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1065 AVP_FLAG_MANDATORY, /* Fixed flag values */
1066 AVP_TYPE_INTEGER32 /* base type of data */
1067 };
1068 struct dict_object *type;
1069 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Tunnel-Type)", NULL, NULL, NULL };
1070 struct dict_enumval_data t_1 = { "PPTP", { .i32=1 }};
1071 struct dict_enumval_data t_2 = { "L2F", { .i32=2 }};
1072 struct dict_enumval_data t_3 = { "L2TP", { .i32=3 }};
1073 struct dict_enumval_data t_4 = { "ATMP", { .i32=4 }};
1074 struct dict_enumval_data t_5 = { "VTP", { .i32=5 }};
1075 struct dict_enumval_data t_6 = { "AH", { .i32=6 }};
1076 struct dict_enumval_data t_7 = { "IP_IP_ENCAP", { .i32=7 }};
1077 struct dict_enumval_data t_8 = { "MIN_IP_IP", { .i32=8 }};
1078 struct dict_enumval_data t_9 = { "ESP", { .i32=9 }};
1079 struct dict_enumval_data t_10 = { "GRE", { .i32=10 }};
1080 struct dict_enumval_data t_11 = { "DVS", { .i32=11 }};
1081 struct dict_enumval_data t_12 = { "IP_IN_IP_TUNNELING", { .i32=12 }};
1082 struct dict_enumval_data t_13 = { "VLAN", { .i32=13 }};
1083 /* Create the Enumerated type, and then the AVP */
1084 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1085 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1086 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1087 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1088 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1089 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1090 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
1091 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
1092 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
1093 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
1094 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
1095 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
1096 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
1097 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
1098 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1099 };
1100 /* Tunnel-Medium-Type */
1101 {
1102 struct dict_avp_data data = {
1103 65, /* Code */
1104 0, /* Vendor */
1105 "Tunnel-Medium-Type", /* Name */
1106 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1107 AVP_FLAG_MANDATORY, /* Fixed flag values */
1108 AVP_TYPE_INTEGER32 /* base type of data */
1109 };
1110 struct dict_object *type;
1111 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Tunnel-Medium-Type)", NULL, NULL, NULL };
1112 struct dict_enumval_data t_1 = { "IPV4", { .i32=1 }};
1113 struct dict_enumval_data t_2 = { "IPV6", { .i32=2 }};
1114 struct dict_enumval_data t_3 = { "NSAP", { .i32=3 }};
1115 struct dict_enumval_data t_4 = { "HDLC", { .i32=4 }};
1116 struct dict_enumval_data t_5 = { "BBN", { .i32=5 }};
1117 struct dict_enumval_data t_6 = { "IEEE_802", { .i32=6 }};
1118 struct dict_enumval_data t_7 = { "E_163", { .i32=7 }};
1119 struct dict_enumval_data t_8 = { "E_164", { .i32=8 }};
1120 struct dict_enumval_data t_9 = { "F_69", { .i32=9 }};
1121 struct dict_enumval_data t_10 = { "X_121", { .i32=10 }};
1122 struct dict_enumval_data t_11 = { "IPX", { .i32=11 }};
1123 struct dict_enumval_data t_12 = { "APPLETALK_802", { .i32=12 }};
1124 struct dict_enumval_data t_13 = { "DECNET4", { .i32=13 }};
1125 struct dict_enumval_data t_14 = { "VINES", { .i32=14 }};
1126 struct dict_enumval_data t_15 = { "E_164_NSAP", { .i32=15 }};
1127 /* Create the Enumerated type, and then the AVP */
1128 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1129 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1130 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1131 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1132 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1133 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1134 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
1135 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
1136 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
1137 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
1138 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
1139 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
1140 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
1141 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
1142 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
1143 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
1144 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1145 };
1146 /* Tunnel-Client-Endpoint */
1147 {
1148 struct dict_avp_data data = {
1149 66, /* Code */
1150 0, /* Vendor */
1151 "Tunnel-Client-Endpoint", /* Name */
1152 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1153 AVP_FLAG_MANDATORY, /* Fixed flag values */
1154 AVP_TYPE_OCTETSTRING /* base type of data */
1155 };
1156 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
1157 };
1158 /* Tunnel-Server-Endpoint */
1159 {
1160 struct dict_avp_data data = {
1161 67, /* Code */
1162 0, /* Vendor */
1163 "Tunnel-Server-Endpoint", /* Name */
1164 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1165 AVP_FLAG_MANDATORY, /* Fixed flag values */
1166 AVP_TYPE_OCTETSTRING /* base type of data */
1167 };
1168 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
1169 };
1170 /* Tunnel-Password */
1171 {
1172 struct dict_avp_data data = {
1173 69, /* Code */
1174 0, /* Vendor */
1175 "Tunnel-Password", /* Name */
1176 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1177 AVP_FLAG_MANDATORY, /* Fixed flag values */
1178 AVP_TYPE_OCTETSTRING /* base type of data */
1179 };
1180 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1181 };
1182 /* Tunnel-Private-Group-Id */
1183 {
1184 struct dict_avp_data data = {
1185 81, /* Code */
1186 0, /* Vendor */
1187 "Tunnel-Private-Group-Id", /* Name */
1188 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1189 AVP_FLAG_MANDATORY, /* Fixed flag values */
1190 AVP_TYPE_OCTETSTRING /* base type of data */
1191 };
1192 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1193 };
1194 /* Tunnel-Assignment-Id */
1195 {
1196 struct dict_avp_data data = {
1197 82, /* Code */
1198 0, /* Vendor */
1199 "Tunnel-Assignment-Id", /* Name */
1200 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1201 AVP_FLAG_MANDATORY, /* Fixed flag values */
1202 AVP_TYPE_OCTETSTRING /* base type of data */
1203 };
1204 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1205 };
1206 /* Tunnel-Preference */
1207 {
1208 struct dict_avp_data data = {
1209 83, /* Code */
1210 0, /* Vendor */
1211 "Tunnel-Preference", /* Name */
1212 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1213 AVP_FLAG_MANDATORY, /* Fixed flag values */
1214 AVP_TYPE_UNSIGNED32 /* base type of data */
1215 };
1216 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1217 };
1218 /* Tunnel-Client-Auth-Id */
1219 {
1220 struct dict_avp_data data = {
1221 90, /* Code */
1222 0, /* Vendor */
1223 "Tunnel-Client-Auth-Id", /* Name */
1224 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1225 AVP_FLAG_MANDATORY, /* Fixed flag values */
1226 AVP_TYPE_OCTETSTRING /* base type of data */
1227 };
1228 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
1229 };
1230 /* Tunnel-Server-Auth-Id */
1231 {
1232 struct dict_avp_data data = {
1233 91, /* Code */
1234 0, /* Vendor */
1235 "Tunnel-Server-Auth-Id", /* Name */
1236 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1237 AVP_FLAG_MANDATORY, /* Fixed flag values */
1238 AVP_TYPE_OCTETSTRING /* base type of data */
1239 };
1240 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
1241 };
1242 /* Accounting-Input-Octets */
1243 {
1244 struct dict_avp_data data = {
1245 363, /* Code */
1246 0, /* Vendor */
1247 "Accounting-Input-Octets", /* Name */
1248 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1249 AVP_FLAG_MANDATORY, /* Fixed flag values */
1250 AVP_TYPE_UNSIGNED64 /* base type of data */
1251 };
1252 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1253 };
1254 /* Accounting-Output-Octets */
1255 {
1256 struct dict_avp_data data = {
1257 364, /* Code */
1258 0, /* Vendor */
1259 "Accounting-Output-Octets", /* Name */
1260 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1261 AVP_FLAG_MANDATORY, /* Fixed flag values */
1262 AVP_TYPE_UNSIGNED64 /* base type of data */
1263 };
1264 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1265 };
1266 /* Accounting-Input-Packets */
1267 {
1268 struct dict_avp_data data = {
1269 365, /* Code */
1270 0, /* Vendor */
1271 "Accounting-Input-Packets", /* Name */
1272 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1273 AVP_FLAG_MANDATORY, /* Fixed flag values */
1274 AVP_TYPE_UNSIGNED64 /* base type of data */
1275 };
1276 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1277 };
1278 /* Accounting-Output-Packets */
1279 {
1280 struct dict_avp_data data = {
1281 366, /* Code */
1282 0, /* Vendor */
1283 "Accounting-Output-Packets", /* Name */
1284 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1285 AVP_FLAG_MANDATORY, /* Fixed flag values */
1286 AVP_TYPE_UNSIGNED64 /* base type of data */
1287 };
1288 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1289 };
1290 /* Acct-Session-Time */
1291 {
1292 struct dict_avp_data data = {
1293 46, /* Code */
1294 0, /* Vendor */
1295 "Acct-Session-Time", /* Name */
1296 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1297 AVP_FLAG_MANDATORY, /* Fixed flag values */
1298 AVP_TYPE_UNSIGNED32 /* base type of data */
1299 };
1300 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1301 };
1302 /* Acct-Authentic */
1303 {
1304 struct dict_avp_data data = {
1305 45, /* Code */
1306 0, /* Vendor */
1307 "Acct-Authentic", /* Name */
1308 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1309 AVP_FLAG_MANDATORY, /* Fixed flag values */
1310 AVP_TYPE_INTEGER32 /* base type of data */
1311 };
1312 struct dict_object *type;
1313 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Acct-Authentic)", NULL, NULL, NULL };
1314 struct dict_enumval_data t_1 = { "NONE", { .i32=0 }};
1315 struct dict_enumval_data t_2 = { "RADIUS", { .i32=1 }};
1316 struct dict_enumval_data t_3 = { "LOCAL", { .i32=2 }};
1317 struct dict_enumval_data t_4 = { "REMOTE", { .i32=3 }};
1318 struct dict_enumval_data t_5 = { "DIAMETER", { .i32=4 }};
1319 /* Create the Enumerated type, and then the AVP */
1320 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1321 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1322 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1323 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1324 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1325 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1326 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1327 };
1328 /* Accounting-Auth-Method */
1329 {
1330 struct dict_avp_data data = {
1331 406, /* Code */
1332 0, /* Vendor */
1333 "Accounting-Auth-Method", /* Name */
1334 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1335 AVP_FLAG_MANDATORY, /* Fixed flag values */
1336 AVP_TYPE_INTEGER32 /* base type of data */
1337 };
1338 struct dict_object *type;
1339 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Accounting-Auth-Method)", NULL, NULL, NULL };
1340 struct dict_enumval_data t_1 = { "PAP", { .i32=1 }};
1341 struct dict_enumval_data t_2 = { "CHAP", { .i32=2 }};
1342 struct dict_enumval_data t_3 = { "MS_CHAP_1", { .i32=3 }};
1343 struct dict_enumval_data t_4 = { "MS_CHAP_2", { .i32=4 }};
1344 struct dict_enumval_data t_5 = { "EAP", { .i32=5 }};
1345 struct dict_enumval_data t_6 = { "UNDEFINED", { .i32=6 }};
1346 struct dict_enumval_data t_7 = { "NONE", { .i32=7 }};
1347 /* Create the Enumerated type, and then the AVP */
1348 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1349 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1350 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1351 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1352 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1353 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1354 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
1355 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
1356 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1357 };
1358 /* Acct-Delay-Time */
1359 {
1360 struct dict_avp_data data = {
1361 41, /* Code */
1362 0, /* Vendor */
1363 "Acct-Delay-Time", /* Name */
1364 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1365 AVP_FLAG_MANDATORY, /* Fixed flag values */
1366 AVP_TYPE_UNSIGNED32 /* base type of data */
1367 };
1368 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1369 };
1370 /* Acct-Link-Count */
1371 {
1372 struct dict_avp_data data = {
1373 51, /* Code */
1374 0, /* Vendor */
1375 "Acct-Link-Count", /* Name */
1376 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1377 AVP_FLAG_MANDATORY, /* Fixed flag values */
1378 AVP_TYPE_UNSIGNED32 /* base type of data */
1379 };
1380 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1381 };
1382 /* Acct-Tunnel-Connection */
1383 {
1384 struct dict_avp_data data = {
1385 68, /* Code */
1386 0, /* Vendor */
1387 "Acct-Tunnel-Connection", /* Name */
1388 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1389 AVP_FLAG_MANDATORY, /* Fixed flag values */
1390 AVP_TYPE_OCTETSTRING /* base type of data */
1391 };
1392 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1393 };
1394 /* Acct-Tunnel-Packets-Lost */
1395 {
1396 struct dict_avp_data data = {
1397 86, /* Code */
1398 0, /* Vendor */
1399 "Acct-Tunnel-Packets-Lost", /* Name */
1400 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1401 AVP_FLAG_MANDATORY, /* Fixed flag values */
1402 AVP_TYPE_UNSIGNED32 /* base type of data */
1403 };
1404 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1405 };
1406 /* NAS-Identifier */
1407 {
1408 struct dict_avp_data data = {
1409 32, /* Code */
1410 0, /* Vendor */
1411 "NAS-Identifier", /* Name */
1412 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1413 AVP_FLAG_MANDATORY, /* Fixed flag values */
1414 AVP_TYPE_OCTETSTRING /* base type of data */
1415 };
1416 CHECK_dict_new( DICT_AVP, &data, UTF8String_type, NULL);
1417 };
1418 /* NAS-IP-Address */
1419 {
1420 struct dict_avp_data data = {
1421 4, /* Code */
1422 0, /* Vendor */
1423 "NAS-IP-Address", /* Name */
1424 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1425 AVP_FLAG_MANDATORY, /* Fixed flag values */
1426 AVP_TYPE_OCTETSTRING /* base type of data */
1427 };
1428 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1429 };
1430 /* NAS-IPv6-Address */
1431 {
1432 struct dict_avp_data data = {
1433 95, /* Code */
1434 0, /* Vendor */
1435 "NAS-IPv6-Address", /* Name */
1436 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1437 AVP_FLAG_MANDATORY, /* Fixed flag values */
1438 AVP_TYPE_OCTETSTRING /* base type of data */
1439 };
1440 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1441 };
1442 /* Origin-AAA-Protocol */
1443 {
1444 struct dict_avp_data data = {
1445 408, /* Code */
1446 0, /* Vendor */
1447 "Origin-AAA-Protocol", /* Name */
1448 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1449 AVP_FLAG_MANDATORY, /* Fixed flag values */
1450 AVP_TYPE_INTEGER32 /* base type of data */
1451 };
1452 struct dict_object *type;
1453 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Origin-AAA-Protocol)", NULL, NULL, NULL };
1454 struct dict_enumval_data t_1 = { "RADIUS", { .i32=1 }};
1455 /* Create the Enumerated type, and then the AVP */
1456 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1457 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1458 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1459 };
1460 /* State */
1461 {
1462 struct dict_avp_data data = {
1463 24, /* Code */
1464 0, /* Vendor */
1465 "State", /* Name */
1466 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1467 AVP_FLAG_MANDATORY, /* Fixed flag values */
1468 AVP_TYPE_OCTETSTRING /* base type of data */
1469 };
1470 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1471 };
1472 /* Redirect-Host */
1473 {
1474 struct dict_avp_data data = {
1475 292, /* Code */
1476 0, /* Vendor */
1477 "Redirect-Host", /* Name */
1478 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1479 AVP_FLAG_MANDATORY, /* Fixed flag values */
1480 AVP_TYPE_OCTETSTRING /* base type of data */
1481 };
1482 CHECK_dict_new( DICT_AVP, &data, DiameterURI_type, NULL);
1483 };
1484 /* Redirect-Host-Usage */
1485 {
1486 struct dict_avp_data data = {
1487 261, /* Code */
1488 0, /* Vendor */
1489 "Redirect-Host-Usage", /* Name */
1490 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1491 AVP_FLAG_MANDATORY, /* Fixed flag values */
1492 AVP_TYPE_INTEGER32 /* base type of data */
1493 };
1494 struct dict_object *type;
1495 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Redirect-Host-Usage)", NULL, NULL, NULL };
1496 struct dict_enumval_data t_1 = { "DONT_CACHE", { .i32=0 }};
1497 struct dict_enumval_data t_2 = { "ALL_SESSION", { .i32=1 }};
1498 struct dict_enumval_data t_3 = { "ALL_REALM", { .i32=2 }};
1499 struct dict_enumval_data t_4 = { "REALM_AND_APPLICATION", { .i32=3 }};
1500 struct dict_enumval_data t_5 = { "ALL_APPLICATION", { .i32=4 }};
1501 struct dict_enumval_data t_6 = { "ALL_HOST", { .i32=5 }};
1502 struct dict_enumval_data t_7 = { "ALL_USER", { .i32=6 }};
1503 /* Create the Enumerated type, and then the AVP */
1504 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1505 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1506 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1507 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1508 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1509 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1510 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
1511 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
1512 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1513 };
1514 /* Redirect-Max-Cache-Time */
1515 {
1516 struct dict_avp_data data = {
1517 262, /* Code */
1518 0, /* Vendor */
1519 "Redirect-Max-Cache-Time", /* Name */
1520 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1521 AVP_FLAG_MANDATORY, /* Fixed flag values */
1522 AVP_TYPE_UNSIGNED32 /* base type of data */
1523 };
1524 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1525 };
1526 /* Tunneling */
1527 {
1528 /* Grouped */
1529 struct dict_object * avp;
1530 struct dict_avp_data data = {
1531 401, /* Code */
1532 0, /* Vendor */
1533 "Tunneling", /* Name */
1534 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1535 AVP_FLAG_MANDATORY, /* Fixed flag values */
1536 AVP_TYPE_GROUPED /* base type of data */
1537 };
1538 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1539 }
1540 /* CHAP-Auth */
1541 {
1542 /* Grouped */
1543 struct dict_object * avp;
1544 struct dict_avp_data data = {
1545 402, /* Code */
1546 0, /* Vendor */
1547 "CHAP-Auth", /* Name */
1548 AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, /* Fixed flags */
1549 AVP_FLAG_MANDATORY, /* Fixed flag values */
1550 AVP_TYPE_GROUPED /* base type of data */
1551 };
1552 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1553 }
1554
1555
1556 }
1557
1558 /* Commands section */
1559 {
1560
1561 }
1562
1563 return 0;
1564}
1565
1566static int dict_rfc7155_avps_load_rules(char * conffile)
1567{
1568 /* Grouped AVP section */
1569 {
1570 /* Tunneling */
1571 {
1572 /* Grouped */
1573 struct dict_object * avp;
1574 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Tunneling"};
1575 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1576 struct local_rules_definition rules[] =
1577 {
1578 { { .avp_vendor = 0, .avp_name = "Tunnel-Type"}, RULE_REQUIRED, -1, -1 },
1579 { { .avp_vendor = 0, .avp_name = "Tunnel-Medium-Type"}, RULE_REQUIRED, -1, -1 },
1580 { { .avp_vendor = 0, .avp_name = "Tunnel-Client-Endpoint"}, RULE_REQUIRED, -1, -1 },
1581 { { .avp_vendor = 0, .avp_name = "Tunnel-Server-Endpoint"}, RULE_REQUIRED, -1, -1 },
1582 { { .avp_vendor = 0, .avp_name = "Tunnel-Preference"}, RULE_OPTIONAL, -1, -1 },
1583 { { .avp_vendor = 0, .avp_name = "Tunnel-Client-Auth-Id"}, RULE_OPTIONAL, -1, -1 },
1584 { { .avp_vendor = 0, .avp_name = "Tunnel-Server-Auth-Id"}, RULE_OPTIONAL, -1, -1 },
1585 { { .avp_vendor = 0, .avp_name = "Tunnel-Assignment-Id"}, RULE_OPTIONAL, -1, -1 },
1586 { { .avp_vendor = 0, .avp_name = "Tunnel-Password"}, RULE_OPTIONAL, -1, -1 },
1587 { { .avp_vendor = 0, .avp_name = "Tunnel-Private-Group-Id"}, RULE_OPTIONAL, -1, -1 }
1588 };
1589 PARSE_loc_rules( rules, avp );
1590 }
1591 /* CHAP-Auth */
1592 {
1593 /* Grouped */
1594 struct dict_object * avp;
1595 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "CHAP-Auth"};
1596 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1597 struct local_rules_definition rules[] =
1598 {
1599 { { .avp_vendor = 0, .avp_name = "CHAP-Algorithm"}, RULE_REQUIRED, -1, -1 },
1600 { { .avp_vendor = 0, .avp_name = "CHAP-Ident"}, RULE_REQUIRED, -1, -1 },
1601 { { .avp_vendor = 0, .avp_name = "CHAP-Response"}, RULE_OPTIONAL, -1, -1 }
1602 };
1603 PARSE_loc_rules( rules, avp );
1604 }
1605
1606 }
1607
1608 /* Commands section */
1609 {
1610
1611 }
1612
1613 LOG_D( "Extension 'Dictionary definitions for rfc7155_avps (None)' initialized");
1614 return 0;
1615}
1616
1617int dict_entry(char * conffile)
1618{
1619 dict_rfc7155_avps_load_defs(conffile);
1620 return dict_rfc7155_avps_load_rules(conffile);
1621}
1622
1623const char* dict_rfc7155_avps_proto_ver(char * conffile) {
1624 return rfc7155_avps_proto_ver;
1625}
1626
1627const double dict_rfc7155_avps_gen_ts(char * conffile) {
1628 return rfc7155_avps_gen_date;
1629}
1630
1631EXTENSION_ENTRY2("dict_rfc7155_avps", dict_rfc7155_avps_load_defs, dict_rfc7155_avps_load_rules, "dict_rfc4004_avps");
1632
1633
1634