blob: f28796336c399d4aa76990146ce872cb189d9f92 [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 rfc5777_avps.
25 */
26#include <freeDiameter/extension.h>
27
28#define PROTO_VER "unspecified"
29#define GEN_DATE 1506697143.56
30
31const char *rfc5777_avps_proto_ver = PROTO_VER;
32const double rfc5777_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_rfc5777_avps_load_defs(char * conffile)
101{
102 TRACE_ENTRY("%p", conffile);
103
104 /* AVP section */
105 {
106 struct dict_object * Address_type;
107 struct dict_object * UTF8String_type;
108 struct dict_object * DiameterIdentity_type;
109 struct dict_object * DiameterURI_type;
110 struct dict_object * Time_type;
111 struct dict_object * IPFilterRule_type;
112
113 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
114 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
115 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
116 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
117 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
118 CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
119 /* Filter-Rule-Precedence */
120 {
121 struct dict_avp_data data = {
122 510, /* Code */
123 0, /* Vendor */
124 "Filter-Rule-Precedence", /* Name */
125 0, /* Fixed flags */
126 0, /* Fixed flag values */
127 AVP_TYPE_UNSIGNED32 /* base type of data */
128 };
129 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
130 };
131 /* Classifier-ID */
132 {
133 struct dict_avp_data data = {
134 512, /* Code */
135 0, /* Vendor */
136 "Classifier-ID", /* Name */
137 0, /* Fixed flags */
138 0, /* Fixed flag values */
139 AVP_TYPE_OCTETSTRING /* base type of data */
140 };
141 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
142 };
143 /* Protocol */
144 {
145 struct dict_avp_data data = {
146 513, /* Code */
147 0, /* Vendor */
148 "Protocol", /* Name */
149 0, /* Fixed flags */
150 0, /* Fixed flag values */
151 AVP_TYPE_INTEGER32 /* base type of data */
152 };
153 struct dict_object *type;
154 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Protocol)", NULL, NULL, NULL };
155 struct dict_enumval_data t_1 = { "HOPOPT", { .i32=0 }};
156 struct dict_enumval_data t_2 = { "ICMP", { .i32=1 }};
157 struct dict_enumval_data t_3 = { "IGMP", { .i32=2 }};
158 struct dict_enumval_data t_4 = { "GGP", { .i32=3 }};
159 struct dict_enumval_data t_5 = { "IPv4", { .i32=4 }};
160 struct dict_enumval_data t_6 = { "ST", { .i32=5 }};
161 struct dict_enumval_data t_7 = { "TCP", { .i32=6 }};
162 struct dict_enumval_data t_8 = { "CBT", { .i32=7 }};
163 struct dict_enumval_data t_9 = { "EGP", { .i32=8 }};
164 struct dict_enumval_data t_10 = { "IGP", { .i32=9 }};
165 struct dict_enumval_data t_11 = { "BBN-RCC-MON", { .i32=10 }};
166 struct dict_enumval_data t_12 = { "NVP-II", { .i32=11 }};
167 struct dict_enumval_data t_13 = { "PUP", { .i32=12 }};
168 struct dict_enumval_data t_14 = { "ARGUS", { .i32=13 }};
169 struct dict_enumval_data t_15 = { "EMCON", { .i32=14 }};
170 struct dict_enumval_data t_16 = { "XNET", { .i32=15 }};
171 struct dict_enumval_data t_17 = { "CHAOS", { .i32=16 }};
172 struct dict_enumval_data t_18 = { "UDP", { .i32=17 }};
173 struct dict_enumval_data t_19 = { "MUX", { .i32=18 }};
174 struct dict_enumval_data t_20 = { "DCN-MEAS", { .i32=19 }};
175 struct dict_enumval_data t_21 = { "HMP", { .i32=20 }};
176 struct dict_enumval_data t_22 = { "PRM", { .i32=21 }};
177 struct dict_enumval_data t_23 = { "XNS-IDP", { .i32=22 }};
178 struct dict_enumval_data t_24 = { "TRUNK-1", { .i32=23 }};
179 struct dict_enumval_data t_25 = { "TRUNK-2", { .i32=24 }};
180 struct dict_enumval_data t_26 = { "LEAF-1", { .i32=25 }};
181 struct dict_enumval_data t_27 = { "LEAF-2", { .i32=26 }};
182 struct dict_enumval_data t_28 = { "RDP", { .i32=27 }};
183 struct dict_enumval_data t_29 = { "IRTP", { .i32=28 }};
184 struct dict_enumval_data t_30 = { "ISO-TP4", { .i32=29 }};
185 struct dict_enumval_data t_31 = { "NETBLT", { .i32=30 }};
186 struct dict_enumval_data t_32 = { "MFE-NSP", { .i32=31 }};
187 struct dict_enumval_data t_33 = { "MERIT-INP", { .i32=32 }};
188 struct dict_enumval_data t_34 = { "DCCP", { .i32=33 }};
189 struct dict_enumval_data t_35 = { "3PC", { .i32=34 }};
190 struct dict_enumval_data t_36 = { "IDPR", { .i32=35 }};
191 struct dict_enumval_data t_37 = { "XTP", { .i32=36 }};
192 struct dict_enumval_data t_38 = { "DDP", { .i32=37 }};
193 struct dict_enumval_data t_39 = { "IDPR-CMTP", { .i32=38 }};
194 struct dict_enumval_data t_40 = { "TPplusplus", { .i32=39 }};
195 struct dict_enumval_data t_41 = { "IL", { .i32=40 }};
196 struct dict_enumval_data t_42 = { "IPv6", { .i32=41 }};
197 struct dict_enumval_data t_43 = { "SDRP", { .i32=42 }};
198 struct dict_enumval_data t_44 = { "IPv6-Route", { .i32=43 }};
199 struct dict_enumval_data t_45 = { "IPv6-Frag", { .i32=44 }};
200 struct dict_enumval_data t_46 = { "IDRP", { .i32=45 }};
201 struct dict_enumval_data t_47 = { "RSVP", { .i32=46 }};
202 struct dict_enumval_data t_48 = { "GRE", { .i32=47 }};
203 struct dict_enumval_data t_49 = { "DSR", { .i32=48 }};
204 struct dict_enumval_data t_50 = { "BNA", { .i32=49 }};
205 struct dict_enumval_data t_51 = { "ESP", { .i32=50 }};
206 struct dict_enumval_data t_52 = { "AH", { .i32=51 }};
207 struct dict_enumval_data t_53 = { "I-NLSP", { .i32=52 }};
208 struct dict_enumval_data t_54 = { "SWIPE", { .i32=53 }};
209 struct dict_enumval_data t_55 = { "NARP", { .i32=54 }};
210 struct dict_enumval_data t_56 = { "MOBILE", { .i32=55 }};
211 struct dict_enumval_data t_57 = { "TLSP", { .i32=56 }};
212 struct dict_enumval_data t_58 = { "SKIP", { .i32=57 }};
213 struct dict_enumval_data t_59 = { "IPv6-ICMP", { .i32=58 }};
214 struct dict_enumval_data t_60 = { "IPv6-NoNxt", { .i32=59 }};
215 struct dict_enumval_data t_61 = { "IPv6-Opts", { .i32=60 }};
216 struct dict_enumval_data t_62 = { "CFTP", { .i32=62 }};
217 struct dict_enumval_data t_63 = { "SAT-EXPAK", { .i32=64 }};
218 struct dict_enumval_data t_64 = { "KRYPTOLAN", { .i32=65 }};
219 struct dict_enumval_data t_65 = { "RVD", { .i32=66 }};
220 struct dict_enumval_data t_66 = { "IPPC", { .i32=67 }};
221 struct dict_enumval_data t_67 = { "SAT-MON", { .i32=69 }};
222 struct dict_enumval_data t_68 = { "VISA", { .i32=70 }};
223 struct dict_enumval_data t_69 = { "IPCV", { .i32=71 }};
224 struct dict_enumval_data t_70 = { "CPNX", { .i32=72 }};
225 struct dict_enumval_data t_71 = { "CPHB", { .i32=73 }};
226 struct dict_enumval_data t_72 = { "WSN", { .i32=74 }};
227 struct dict_enumval_data t_73 = { "PVP", { .i32=75 }};
228 struct dict_enumval_data t_74 = { "BR-SAT-MON", { .i32=76 }};
229 struct dict_enumval_data t_75 = { "SUN-ND", { .i32=77 }};
230 struct dict_enumval_data t_76 = { "WB-MON", { .i32=78 }};
231 struct dict_enumval_data t_77 = { "WB-EXPAK", { .i32=79 }};
232 struct dict_enumval_data t_78 = { "ISO-IP", { .i32=80 }};
233 struct dict_enumval_data t_79 = { "VMTP", { .i32=81 }};
234 struct dict_enumval_data t_80 = { "SECURE-VMTP", { .i32=82 }};
235 struct dict_enumval_data t_81 = { "VINES", { .i32=83 }};
236 struct dict_enumval_data t_82 = { "TTP", { .i32=84 }};
237 struct dict_enumval_data t_83 = { "IPTM", { .i32=84 }};
238 struct dict_enumval_data t_84 = { "NSFNET-IGP", { .i32=85 }};
239 struct dict_enumval_data t_85 = { "DGP", { .i32=86 }};
240 struct dict_enumval_data t_86 = { "TCF", { .i32=87 }};
241 struct dict_enumval_data t_87 = { "EIGRP", { .i32=88 }};
242 struct dict_enumval_data t_88 = { "OSPFIGP", { .i32=89 }};
243 struct dict_enumval_data t_89 = { "Sprite-RPC", { .i32=90 }};
244 struct dict_enumval_data t_90 = { "LARP", { .i32=91 }};
245 struct dict_enumval_data t_91 = { "MTP", { .i32=92 }};
246 struct dict_enumval_data t_92 = { "AX_25", { .i32=93 }};
247 struct dict_enumval_data t_93 = { "IPIP", { .i32=94 }};
248 struct dict_enumval_data t_94 = { "MICP", { .i32=95 }};
249 struct dict_enumval_data t_95 = { "SCC-SP", { .i32=96 }};
250 struct dict_enumval_data t_96 = { "ETHERIP", { .i32=97 }};
251 struct dict_enumval_data t_97 = { "ENCAP", { .i32=98 }};
252 struct dict_enumval_data t_98 = { "GMTP", { .i32=100 }};
253 struct dict_enumval_data t_99 = { "IFMP", { .i32=101 }};
254 struct dict_enumval_data t_100 = { "PNNI", { .i32=102 }};
255 struct dict_enumval_data t_101 = { "PIM", { .i32=103 }};
256 struct dict_enumval_data t_102 = { "ARIS", { .i32=104 }};
257 struct dict_enumval_data t_103 = { "SCPS", { .i32=105 }};
258 struct dict_enumval_data t_104 = { "QNX", { .i32=106 }};
259 struct dict_enumval_data t_105 = { "A_N", { .i32=107 }};
260 struct dict_enumval_data t_106 = { "IPComp", { .i32=108 }};
261 struct dict_enumval_data t_107 = { "SNP", { .i32=109 }};
262 struct dict_enumval_data t_108 = { "Compaq-Peer", { .i32=110 }};
263 struct dict_enumval_data t_109 = { "IPX-in-IP", { .i32=111 }};
264 struct dict_enumval_data t_110 = { "VRRP", { .i32=112 }};
265 struct dict_enumval_data t_111 = { "PGM", { .i32=113 }};
266 struct dict_enumval_data t_112 = { "L2TP", { .i32=115 }};
267 struct dict_enumval_data t_113 = { "DDX", { .i32=116 }};
268 struct dict_enumval_data t_114 = { "IATP", { .i32=117 }};
269 struct dict_enumval_data t_115 = { "STP", { .i32=118 }};
270 struct dict_enumval_data t_116 = { "SRP", { .i32=119 }};
271 struct dict_enumval_data t_117 = { "UTI", { .i32=120 }};
272 struct dict_enumval_data t_118 = { "SMP", { .i32=121 }};
273 struct dict_enumval_data t_119 = { "SM", { .i32=122 }};
274 struct dict_enumval_data t_120 = { "PTP", { .i32=123 }};
275 struct dict_enumval_data t_121 = { "ISISoverIPv4", { .i32=124 }};
276 struct dict_enumval_data t_122 = { "FIRE", { .i32=125 }};
277 struct dict_enumval_data t_123 = { "CRTP", { .i32=126 }};
278 struct dict_enumval_data t_124 = { "CRUDP", { .i32=127 }};
279 struct dict_enumval_data t_125 = { "SSCOPMCE", { .i32=128 }};
280 struct dict_enumval_data t_126 = { "IPLT", { .i32=129 }};
281 struct dict_enumval_data t_127 = { "SPS", { .i32=130 }};
282 struct dict_enumval_data t_128 = { "PIPE", { .i32=131 }};
283 struct dict_enumval_data t_129 = { "SCTP", { .i32=132 }};
284 struct dict_enumval_data t_130 = { "FC", { .i32=133 }};
285 struct dict_enumval_data t_131 = { "RSVP-E2E-IGNORE", { .i32=134 }};
286 struct dict_enumval_data t_132 = { "MobilityHeader", { .i32=135 }};
287 struct dict_enumval_data t_133 = { "UDPLite", { .i32=136 }};
288 struct dict_enumval_data t_134 = { "MPLS-in-IP", { .i32=137 }};
289 struct dict_enumval_data t_135 = { "manet", { .i32=138 }};
290 struct dict_enumval_data t_136 = { "HIP", { .i32=139 }};
291 struct dict_enumval_data t_137 = { "Shim6", { .i32=140 }};
292 struct dict_enumval_data t_138 = { "WESP", { .i32=141 }};
293 struct dict_enumval_data t_139 = { "ROHC", { .i32=142 }};
294 struct dict_enumval_data t_140 = { "Reserved", { .i32=255 }};
295 /* Create the Enumerated type, and then the AVP */
296 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
297 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
298 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
299 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
300 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
301 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
302 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
303 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
304 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
305 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
306 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
307 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
308 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
309 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
310 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
311 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
312 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
313 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
314 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
315 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
316 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
317 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
318 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
319 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
320 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
321 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
322 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
323 CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
324 CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
325 CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
326 CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
327 CHECK_dict_new( DICT_ENUMVAL, &t_31, type, NULL);
328 CHECK_dict_new( DICT_ENUMVAL, &t_32, type, NULL);
329 CHECK_dict_new( DICT_ENUMVAL, &t_33, type, NULL);
330 CHECK_dict_new( DICT_ENUMVAL, &t_34, type, NULL);
331 CHECK_dict_new( DICT_ENUMVAL, &t_35, type, NULL);
332 CHECK_dict_new( DICT_ENUMVAL, &t_36, type, NULL);
333 CHECK_dict_new( DICT_ENUMVAL, &t_37, type, NULL);
334 CHECK_dict_new( DICT_ENUMVAL, &t_38, type, NULL);
335 CHECK_dict_new( DICT_ENUMVAL, &t_39, type, NULL);
336 CHECK_dict_new( DICT_ENUMVAL, &t_40, type, NULL);
337 CHECK_dict_new( DICT_ENUMVAL, &t_41, type, NULL);
338 CHECK_dict_new( DICT_ENUMVAL, &t_42, type, NULL);
339 CHECK_dict_new( DICT_ENUMVAL, &t_43, type, NULL);
340 CHECK_dict_new( DICT_ENUMVAL, &t_44, type, NULL);
341 CHECK_dict_new( DICT_ENUMVAL, &t_45, type, NULL);
342 CHECK_dict_new( DICT_ENUMVAL, &t_46, type, NULL);
343 CHECK_dict_new( DICT_ENUMVAL, &t_47, type, NULL);
344 CHECK_dict_new( DICT_ENUMVAL, &t_48, type, NULL);
345 CHECK_dict_new( DICT_ENUMVAL, &t_49, type, NULL);
346 CHECK_dict_new( DICT_ENUMVAL, &t_50, type, NULL);
347 CHECK_dict_new( DICT_ENUMVAL, &t_51, type, NULL);
348 CHECK_dict_new( DICT_ENUMVAL, &t_52, type, NULL);
349 CHECK_dict_new( DICT_ENUMVAL, &t_53, type, NULL);
350 CHECK_dict_new( DICT_ENUMVAL, &t_54, type, NULL);
351 CHECK_dict_new( DICT_ENUMVAL, &t_55, type, NULL);
352 CHECK_dict_new( DICT_ENUMVAL, &t_56, type, NULL);
353 CHECK_dict_new( DICT_ENUMVAL, &t_57, type, NULL);
354 CHECK_dict_new( DICT_ENUMVAL, &t_58, type, NULL);
355 CHECK_dict_new( DICT_ENUMVAL, &t_59, type, NULL);
356 CHECK_dict_new( DICT_ENUMVAL, &t_60, type, NULL);
357 CHECK_dict_new( DICT_ENUMVAL, &t_61, type, NULL);
358 CHECK_dict_new( DICT_ENUMVAL, &t_62, type, NULL);
359 CHECK_dict_new( DICT_ENUMVAL, &t_63, type, NULL);
360 CHECK_dict_new( DICT_ENUMVAL, &t_64, type, NULL);
361 CHECK_dict_new( DICT_ENUMVAL, &t_65, type, NULL);
362 CHECK_dict_new( DICT_ENUMVAL, &t_66, type, NULL);
363 CHECK_dict_new( DICT_ENUMVAL, &t_67, type, NULL);
364 CHECK_dict_new( DICT_ENUMVAL, &t_68, type, NULL);
365 CHECK_dict_new( DICT_ENUMVAL, &t_69, type, NULL);
366 CHECK_dict_new( DICT_ENUMVAL, &t_70, type, NULL);
367 CHECK_dict_new( DICT_ENUMVAL, &t_71, type, NULL);
368 CHECK_dict_new( DICT_ENUMVAL, &t_72, type, NULL);
369 CHECK_dict_new( DICT_ENUMVAL, &t_73, type, NULL);
370 CHECK_dict_new( DICT_ENUMVAL, &t_74, type, NULL);
371 CHECK_dict_new( DICT_ENUMVAL, &t_75, type, NULL);
372 CHECK_dict_new( DICT_ENUMVAL, &t_76, type, NULL);
373 CHECK_dict_new( DICT_ENUMVAL, &t_77, type, NULL);
374 CHECK_dict_new( DICT_ENUMVAL, &t_78, type, NULL);
375 CHECK_dict_new( DICT_ENUMVAL, &t_79, type, NULL);
376 CHECK_dict_new( DICT_ENUMVAL, &t_80, type, NULL);
377 CHECK_dict_new( DICT_ENUMVAL, &t_81, type, NULL);
378 CHECK_dict_new( DICT_ENUMVAL, &t_82, type, NULL);
379 CHECK_dict_new( DICT_ENUMVAL, &t_83, type, NULL);
380 CHECK_dict_new( DICT_ENUMVAL, &t_84, type, NULL);
381 CHECK_dict_new( DICT_ENUMVAL, &t_85, type, NULL);
382 CHECK_dict_new( DICT_ENUMVAL, &t_86, type, NULL);
383 CHECK_dict_new( DICT_ENUMVAL, &t_87, type, NULL);
384 CHECK_dict_new( DICT_ENUMVAL, &t_88, type, NULL);
385 CHECK_dict_new( DICT_ENUMVAL, &t_89, type, NULL);
386 CHECK_dict_new( DICT_ENUMVAL, &t_90, type, NULL);
387 CHECK_dict_new( DICT_ENUMVAL, &t_91, type, NULL);
388 CHECK_dict_new( DICT_ENUMVAL, &t_92, type, NULL);
389 CHECK_dict_new( DICT_ENUMVAL, &t_93, type, NULL);
390 CHECK_dict_new( DICT_ENUMVAL, &t_94, type, NULL);
391 CHECK_dict_new( DICT_ENUMVAL, &t_95, type, NULL);
392 CHECK_dict_new( DICT_ENUMVAL, &t_96, type, NULL);
393 CHECK_dict_new( DICT_ENUMVAL, &t_97, type, NULL);
394 CHECK_dict_new( DICT_ENUMVAL, &t_98, type, NULL);
395 CHECK_dict_new( DICT_ENUMVAL, &t_99, type, NULL);
396 CHECK_dict_new( DICT_ENUMVAL, &t_100, type, NULL);
397 CHECK_dict_new( DICT_ENUMVAL, &t_101, type, NULL);
398 CHECK_dict_new( DICT_ENUMVAL, &t_102, type, NULL);
399 CHECK_dict_new( DICT_ENUMVAL, &t_103, type, NULL);
400 CHECK_dict_new( DICT_ENUMVAL, &t_104, type, NULL);
401 CHECK_dict_new( DICT_ENUMVAL, &t_105, type, NULL);
402 CHECK_dict_new( DICT_ENUMVAL, &t_106, type, NULL);
403 CHECK_dict_new( DICT_ENUMVAL, &t_107, type, NULL);
404 CHECK_dict_new( DICT_ENUMVAL, &t_108, type, NULL);
405 CHECK_dict_new( DICT_ENUMVAL, &t_109, type, NULL);
406 CHECK_dict_new( DICT_ENUMVAL, &t_110, type, NULL);
407 CHECK_dict_new( DICT_ENUMVAL, &t_111, type, NULL);
408 CHECK_dict_new( DICT_ENUMVAL, &t_112, type, NULL);
409 CHECK_dict_new( DICT_ENUMVAL, &t_113, type, NULL);
410 CHECK_dict_new( DICT_ENUMVAL, &t_114, type, NULL);
411 CHECK_dict_new( DICT_ENUMVAL, &t_115, type, NULL);
412 CHECK_dict_new( DICT_ENUMVAL, &t_116, type, NULL);
413 CHECK_dict_new( DICT_ENUMVAL, &t_117, type, NULL);
414 CHECK_dict_new( DICT_ENUMVAL, &t_118, type, NULL);
415 CHECK_dict_new( DICT_ENUMVAL, &t_119, type, NULL);
416 CHECK_dict_new( DICT_ENUMVAL, &t_120, type, NULL);
417 CHECK_dict_new( DICT_ENUMVAL, &t_121, type, NULL);
418 CHECK_dict_new( DICT_ENUMVAL, &t_122, type, NULL);
419 CHECK_dict_new( DICT_ENUMVAL, &t_123, type, NULL);
420 CHECK_dict_new( DICT_ENUMVAL, &t_124, type, NULL);
421 CHECK_dict_new( DICT_ENUMVAL, &t_125, type, NULL);
422 CHECK_dict_new( DICT_ENUMVAL, &t_126, type, NULL);
423 CHECK_dict_new( DICT_ENUMVAL, &t_127, type, NULL);
424 CHECK_dict_new( DICT_ENUMVAL, &t_128, type, NULL);
425 CHECK_dict_new( DICT_ENUMVAL, &t_129, type, NULL);
426 CHECK_dict_new( DICT_ENUMVAL, &t_130, type, NULL);
427 CHECK_dict_new( DICT_ENUMVAL, &t_131, type, NULL);
428 CHECK_dict_new( DICT_ENUMVAL, &t_132, type, NULL);
429 CHECK_dict_new( DICT_ENUMVAL, &t_133, type, NULL);
430 CHECK_dict_new( DICT_ENUMVAL, &t_134, type, NULL);
431 CHECK_dict_new( DICT_ENUMVAL, &t_135, type, NULL);
432 CHECK_dict_new( DICT_ENUMVAL, &t_136, type, NULL);
433 CHECK_dict_new( DICT_ENUMVAL, &t_137, type, NULL);
434 CHECK_dict_new( DICT_ENUMVAL, &t_138, type, NULL);
435 CHECK_dict_new( DICT_ENUMVAL, &t_139, type, NULL);
436 CHECK_dict_new( DICT_ENUMVAL, &t_140, type, NULL);
437 CHECK_dict_new( DICT_AVP, &data, type, NULL);
438 };
439 /* Direction */
440 {
441 struct dict_avp_data data = {
442 514, /* Code */
443 0, /* Vendor */
444 "Direction", /* Name */
445 0, /* Fixed flags */
446 0, /* Fixed flag values */
447 AVP_TYPE_INTEGER32 /* base type of data */
448 };
449 struct dict_object *type;
450 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Direction)", NULL, NULL, NULL };
451 struct dict_enumval_data t_1 = { "IN", { .i32=0 }};
452 struct dict_enumval_data t_2 = { "OUT", { .i32=1 }};
453 struct dict_enumval_data t_3 = { "BOTH", { .i32=2 }};
454 /* Create the Enumerated type, and then the AVP */
455 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
456 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
457 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
458 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
459 CHECK_dict_new( DICT_AVP, &data, type, NULL);
460 };
461 /* Negated */
462 {
463 struct dict_avp_data data = {
464 517, /* Code */
465 0, /* Vendor */
466 "Negated", /* Name */
467 0, /* Fixed flags */
468 0, /* Fixed flag values */
469 AVP_TYPE_INTEGER32 /* base type of data */
470 };
471 struct dict_object *type;
472 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Negated)", NULL, NULL, NULL };
473 struct dict_enumval_data t_1 = { "False", { .i32=0 }};
474 struct dict_enumval_data t_2 = { "True", { .i32=1 }};
475 /* Create the Enumerated type, and then the AVP */
476 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
477 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
478 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
479 CHECK_dict_new( DICT_AVP, &data, type, NULL);
480 };
481 /* IP-Address */
482 {
483 struct dict_avp_data data = {
484 518, /* Code */
485 0, /* Vendor */
486 "IP-Address", /* Name */
487 0, /* Fixed flags */
488 0, /* Fixed flag values */
489 AVP_TYPE_OCTETSTRING /* base type of data */
490 };
491 CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
492 };
493 /* IP-Address-Start */
494 {
495 struct dict_avp_data data = {
496 520, /* Code */
497 0, /* Vendor */
498 "IP-Address-Start", /* Name */
499 0, /* Fixed flags */
500 0, /* Fixed flag values */
501 AVP_TYPE_OCTETSTRING /* base type of data */
502 };
503 CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
504 };
505 /* IP-Address-End */
506 {
507 struct dict_avp_data data = {
508 521, /* Code */
509 0, /* Vendor */
510 "IP-Address-End", /* Name */
511 0, /* Fixed flags */
512 0, /* Fixed flag values */
513 AVP_TYPE_OCTETSTRING /* base type of data */
514 };
515 CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
516 };
517 /* IP-Bit-Mask-Width */
518 {
519 struct dict_avp_data data = {
520 523, /* Code */
521 0, /* Vendor */
522 "IP-Bit-Mask-Width", /* Name */
523 0, /* Fixed flags */
524 0, /* Fixed flag values */
525 AVP_TYPE_UNSIGNED32 /* base type of data */
526 };
527 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
528 };
529 /* MAC-Address */
530 {
531 struct dict_avp_data data = {
532 524, /* Code */
533 0, /* Vendor */
534 "MAC-Address", /* Name */
535 0, /* Fixed flags */
536 0, /* Fixed flag values */
537 AVP_TYPE_OCTETSTRING /* base type of data */
538 };
539 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
540 };
541 /* MAC-Address-Mask-Pattern */
542 {
543 struct dict_avp_data data = {
544 526, /* Code */
545 0, /* Vendor */
546 "MAC-Address-Mask-Pattern", /* Name */
547 0, /* Fixed flags */
548 0, /* Fixed flag values */
549 AVP_TYPE_OCTETSTRING /* base type of data */
550 };
551 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
552 };
553 /* EUI64-Address */
554 {
555 struct dict_avp_data data = {
556 527, /* Code */
557 0, /* Vendor */
558 "EUI64-Address", /* Name */
559 0, /* Fixed flags */
560 0, /* Fixed flag values */
561 AVP_TYPE_OCTETSTRING /* base type of data */
562 };
563 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
564 };
565 /* EUI64-Address-Mask-Pattern */
566 {
567 struct dict_avp_data data = {
568 529, /* Code */
569 0, /* Vendor */
570 "EUI64-Address-Mask-Pattern", /* Name */
571 0, /* Fixed flags */
572 0, /* Fixed flag values */
573 AVP_TYPE_OCTETSTRING /* base type of data */
574 };
575 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
576 };
577 /* Port */
578 {
579 struct dict_avp_data data = {
580 530, /* Code */
581 0, /* Vendor */
582 "Port", /* Name */
583 0, /* Fixed flags */
584 0, /* Fixed flag values */
585 AVP_TYPE_INTEGER32 /* base type of data */
586 };
587 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
588 };
589 /* Port-Start */
590 {
591 struct dict_avp_data data = {
592 532, /* Code */
593 0, /* Vendor */
594 "Port-Start", /* Name */
595 0, /* Fixed flags */
596 0, /* Fixed flag values */
597 AVP_TYPE_INTEGER32 /* base type of data */
598 };
599 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
600 };
601 /* Port-End */
602 {
603 struct dict_avp_data data = {
604 533, /* Code */
605 0, /* Vendor */
606 "Port-End", /* Name */
607 0, /* Fixed flags */
608 0, /* Fixed flag values */
609 AVP_TYPE_INTEGER32 /* base type of data */
610 };
611 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
612 };
613 /* Use-Assigned-Address */
614 {
615 struct dict_avp_data data = {
616 534, /* Code */
617 0, /* Vendor */
618 "Use-Assigned-Address", /* Name */
619 0, /* Fixed flags */
620 0, /* Fixed flag values */
621 AVP_TYPE_INTEGER32 /* base type of data */
622 };
623 struct dict_object *type;
624 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Use-Assigned-Address)", NULL, NULL, NULL };
625 struct dict_enumval_data t_1 = { "False", { .i32=0 }};
626 struct dict_enumval_data t_2 = { "True", { .i32=1 }};
627 /* Create the Enumerated type, and then the AVP */
628 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
629 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
630 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
631 CHECK_dict_new( DICT_AVP, &data, type, NULL);
632 };
633 /* Diffserv-Code-Point */
634 {
635 struct dict_avp_data data = {
636 535, /* Code */
637 0, /* Vendor */
638 "Diffserv-Code-Point", /* Name */
639 0, /* Fixed flags */
640 0, /* Fixed flag values */
641 AVP_TYPE_INTEGER32 /* base type of data */
642 };
643 struct dict_object *type;
644 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Diffserv-Code-Point)", NULL, NULL, NULL };
645 struct dict_enumval_data t_1 = { "CS0", { .i32=0 }};
646 struct dict_enumval_data t_2 = { "CS1", { .i32=8 }};
647 struct dict_enumval_data t_3 = { "CS2", { .i32=16 }};
648 struct dict_enumval_data t_4 = { "CS3", { .i32=24 }};
649 struct dict_enumval_data t_5 = { "CS4", { .i32=32 }};
650 struct dict_enumval_data t_6 = { "CS5", { .i32=40 }};
651 struct dict_enumval_data t_7 = { "CS6", { .i32=48 }};
652 struct dict_enumval_data t_8 = { "CS7", { .i32=56 }};
653 struct dict_enumval_data t_9 = { "AF11", { .i32=10 }};
654 struct dict_enumval_data t_10 = { "AF12", { .i32=12 }};
655 struct dict_enumval_data t_11 = { "AF13", { .i32=14 }};
656 struct dict_enumval_data t_12 = { "AF21", { .i32=18 }};
657 struct dict_enumval_data t_13 = { "AF22", { .i32=20 }};
658 struct dict_enumval_data t_14 = { "AF23", { .i32=22 }};
659 struct dict_enumval_data t_15 = { "AF31", { .i32=26 }};
660 struct dict_enumval_data t_16 = { "AF32", { .i32=28 }};
661 struct dict_enumval_data t_17 = { "AF33", { .i32=30 }};
662 struct dict_enumval_data t_18 = { "AF41", { .i32=34 }};
663 struct dict_enumval_data t_19 = { "AF42", { .i32=36 }};
664 struct dict_enumval_data t_20 = { "AF43", { .i32=38 }};
665 struct dict_enumval_data t_21 = { "EF", { .i32=46 }};
666 struct dict_enumval_data t_22 = { "VOICE_ADMIT", { .i32=44 }};
667 /* Create the Enumerated type, and then the AVP */
668 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
669 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
670 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
671 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
672 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
673 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
674 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
675 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
676 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
677 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
678 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
679 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
680 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
681 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
682 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
683 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
684 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
685 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
686 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
687 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
688 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
689 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
690 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
691 CHECK_dict_new( DICT_AVP, &data, type, NULL);
692 };
693 /* Fragmentation-Flag */
694 {
695 struct dict_avp_data data = {
696 536, /* Code */
697 0, /* Vendor */
698 "Fragmentation-Flag", /* Name */
699 0, /* Fixed flags */
700 0, /* Fixed flag values */
701 AVP_TYPE_INTEGER32 /* base type of data */
702 };
703 struct dict_object *type;
704 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Fragmentation-Flag)", NULL, NULL, NULL };
705 struct dict_enumval_data t_1 = { "DF", { .i32=0 }};
706 struct dict_enumval_data t_2 = { "MF", { .i32=1 }};
707 /* Create the Enumerated type, and then the AVP */
708 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
709 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
710 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
711 CHECK_dict_new( DICT_AVP, &data, type, NULL);
712 };
713 /* IP-Option-Type */
714 {
715 struct dict_avp_data data = {
716 538, /* Code */
717 0, /* Vendor */
718 "IP-Option-Type", /* Name */
719 0, /* Fixed flags */
720 0, /* Fixed flag values */
721 AVP_TYPE_INTEGER32 /* base type of data */
722 };
723 struct dict_object *type;
724 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(IP-Option-Type)", NULL, NULL, NULL };
725 struct dict_enumval_data t_1 = { "EOOL", { .i32=0 }};
726 struct dict_enumval_data t_2 = { "NOP", { .i32=1 }};
727 struct dict_enumval_data t_3 = { "SEC", { .i32=2 }};
728 struct dict_enumval_data t_4 = { "LSR", { .i32=3 }};
729 struct dict_enumval_data t_5 = { "TS", { .i32=4 }};
730 struct dict_enumval_data t_6 = { "E-SEC", { .i32=5 }};
731 struct dict_enumval_data t_7 = { "CIPSO", { .i32=6 }};
732 struct dict_enumval_data t_8 = { "RR", { .i32=7 }};
733 struct dict_enumval_data t_9 = { "SID", { .i32=8 }};
734 struct dict_enumval_data t_10 = { "SSR", { .i32=9 }};
735 struct dict_enumval_data t_11 = { "ZSU", { .i32=10 }};
736 struct dict_enumval_data t_12 = { "MTUP", { .i32=11 }};
737 struct dict_enumval_data t_13 = { "MTUR", { .i32=12 }};
738 struct dict_enumval_data t_14 = { "FINN", { .i32=13 }};
739 struct dict_enumval_data t_15 = { "VISA", { .i32=14 }};
740 struct dict_enumval_data t_16 = { "ENCODE", { .i32=15 }};
741 struct dict_enumval_data t_17 = { "IMITD", { .i32=16 }};
742 struct dict_enumval_data t_18 = { "EIP", { .i32=17 }};
743 struct dict_enumval_data t_19 = { "TR", { .i32=18 }};
744 struct dict_enumval_data t_20 = { "ADDEXT", { .i32=19 }};
745 struct dict_enumval_data t_21 = { "RTRALT", { .i32=20 }};
746 struct dict_enumval_data t_22 = { "SDB", { .i32=21 }};
747 struct dict_enumval_data t_23 = { "DPS", { .i32=23 }};
748 struct dict_enumval_data t_24 = { "UMP", { .i32=24 }};
749 struct dict_enumval_data t_25 = { "QS", { .i32=25 }};
750 struct dict_enumval_data t_26 = { "EXP", { .i32=30 }};
751 /* Create the Enumerated type, and then the AVP */
752 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
753 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
754 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
755 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
756 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
757 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
758 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
759 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
760 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
761 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
762 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
763 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
764 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
765 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
766 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
767 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
768 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
769 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
770 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
771 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
772 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
773 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
774 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
775 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
776 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
777 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
778 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
779 CHECK_dict_new( DICT_AVP, &data, type, NULL);
780 };
781 /* IP-Option-Value */
782 {
783 struct dict_avp_data data = {
784 539, /* Code */
785 0, /* Vendor */
786 "IP-Option-Value", /* Name */
787 0, /* Fixed flags */
788 0, /* Fixed flag values */
789 AVP_TYPE_OCTETSTRING /* base type of data */
790 };
791 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
792 };
793 /* TCP-Option-Type */
794 {
795 struct dict_avp_data data = {
796 541, /* Code */
797 0, /* Vendor */
798 "TCP-Option-Type", /* Name */
799 0, /* Fixed flags */
800 0, /* Fixed flag values */
801 AVP_TYPE_INTEGER32 /* base type of data */
802 };
803 struct dict_object *type;
804 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(TCP-Option-Type)", NULL, NULL, NULL };
805 struct dict_enumval_data t_1 = { "EOL", { .i32=0 }};
806 struct dict_enumval_data t_2 = { "NOP", { .i32=1 }};
807 struct dict_enumval_data t_3 = { "MAX_SEG_SZ", { .i32=2 }};
808 struct dict_enumval_data t_4 = { "Window_Scale", { .i32=3 }};
809 struct dict_enumval_data t_5 = { "SACK_Permitted", { .i32=4 }};
810 struct dict_enumval_data t_6 = { "SACK", { .i32=5 }};
811 struct dict_enumval_data t_7 = { "Echo", { .i32=6 }};
812 struct dict_enumval_data t_8 = { "Echo_Reply", { .i32=7 }};
813 struct dict_enumval_data t_9 = { "Timestamps", { .i32=8 }};
814 struct dict_enumval_data t_10 = { "PartialOrderConnectionPermitted", { .i32=9 }};
815 struct dict_enumval_data t_11 = { "PartialOrderServiceProfile", { .i32=10 }};
816 struct dict_enumval_data t_12 = { "CC", { .i32=11 }};
817 struct dict_enumval_data t_13 = { "CC_NEW", { .i32=12 }};
818 struct dict_enumval_data t_14 = { "CC_ECHO", { .i32=13 }};
819 struct dict_enumval_data t_15 = { "TCP_Alternate_Checksum_Request", { .i32=14 }};
820 struct dict_enumval_data t_16 = { "TCP_Alternate_Checksum_Data", { .i32=15 }};
821 struct dict_enumval_data t_17 = { "Skeeter", { .i32=16 }};
822 struct dict_enumval_data t_18 = { "Bubba", { .i32=17 }};
823 struct dict_enumval_data t_19 = { "Trailer_Checksum_Option", { .i32=18 }};
824 struct dict_enumval_data t_20 = { "MD5_Signature_Option", { .i32=19 }};
825 struct dict_enumval_data t_21 = { "SCPS_Capabilities", { .i32=20 }};
826 struct dict_enumval_data t_22 = { "Selective_Negative_Acknowledgements", { .i32=21 }};
827 struct dict_enumval_data t_23 = { "Record_Boundaries", { .i32=22 }};
828 struct dict_enumval_data t_24 = { "Corruption_experienced", { .i32=23 }};
829 struct dict_enumval_data t_25 = { "SNAP", { .i32=24 }};
830 struct dict_enumval_data t_26 = { "TCP_Compression_Filter", { .i32=26 }};
831 struct dict_enumval_data t_27 = { "Quick-Start_Response", { .i32=27 }};
832 struct dict_enumval_data t_28 = { "User_Timeout_Option", { .i32=28 }};
833 struct dict_enumval_data t_29 = { "TCP_Authentication_Option", { .i32=29 }};
834 struct dict_enumval_data t_30 = { "Multipath_TCP", { .i32=30 }};
835 struct dict_enumval_data t_31 = { "Reserved1", { .i32=31 }};
836 struct dict_enumval_data t_32 = { "Reserved2", { .i32=32 }};
837 struct dict_enumval_data t_33 = { "Reserved3", { .i32=33 }};
838 struct dict_enumval_data t_34 = { "TCP_Fast_Open_Cookie", { .i32=34 }};
839 struct dict_enumval_data t_35 = { "Reserved4", { .i32=69 }};
840 struct dict_enumval_data t_36 = { "Reserved5", { .i32=70 }};
841 struct dict_enumval_data t_37 = { "Reserved6", { .i32=76 }};
842 struct dict_enumval_data t_38 = { "Reserved7", { .i32=77 }};
843 struct dict_enumval_data t_39 = { "Reserved8", { .i32=78 }};
844 struct dict_enumval_data t_40 = { "RFC3692-style_Experiment_1", { .i32=253 }};
845 struct dict_enumval_data t_41 = { "RFC3692-style_Experiment_2", { .i32=254 }};
846 /* Create the Enumerated type, and then the AVP */
847 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
848 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
849 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
850 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
851 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
852 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
853 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
854 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
855 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
856 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
857 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
858 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
859 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
860 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
861 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
862 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
863 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
864 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
865 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
866 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
867 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
868 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
869 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
870 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
871 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
872 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
873 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
874 CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
875 CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
876 CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
877 CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
878 CHECK_dict_new( DICT_ENUMVAL, &t_31, type, NULL);
879 CHECK_dict_new( DICT_ENUMVAL, &t_32, type, NULL);
880 CHECK_dict_new( DICT_ENUMVAL, &t_33, type, NULL);
881 CHECK_dict_new( DICT_ENUMVAL, &t_34, type, NULL);
882 CHECK_dict_new( DICT_ENUMVAL, &t_35, type, NULL);
883 CHECK_dict_new( DICT_ENUMVAL, &t_36, type, NULL);
884 CHECK_dict_new( DICT_ENUMVAL, &t_37, type, NULL);
885 CHECK_dict_new( DICT_ENUMVAL, &t_38, type, NULL);
886 CHECK_dict_new( DICT_ENUMVAL, &t_39, type, NULL);
887 CHECK_dict_new( DICT_ENUMVAL, &t_40, type, NULL);
888 CHECK_dict_new( DICT_ENUMVAL, &t_41, type, NULL);
889 CHECK_dict_new( DICT_AVP, &data, type, NULL);
890 };
891 /* TCP-Option-Value */
892 {
893 struct dict_avp_data data = {
894 542, /* Code */
895 0, /* Vendor */
896 "TCP-Option-Value", /* Name */
897 0, /* Fixed flags */
898 0, /* Fixed flag values */
899 AVP_TYPE_OCTETSTRING /* base type of data */
900 };
901 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
902 };
903 /* TCP-Flag-Type */
904 {
905 struct dict_avp_data data = {
906 544, /* Code */
907 0, /* Vendor */
908 "TCP-Flag-Type", /* Name */
909 0, /* Fixed flags */
910 0, /* Fixed flag values */
911 AVP_TYPE_UNSIGNED32 /* base type of data */
912 };
913 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
914 };
915 /* ICMP-Type-Number */
916 {
917 struct dict_avp_data data = {
918 546, /* Code */
919 0, /* Vendor */
920 "ICMP-Type-Number", /* Name */
921 0, /* Fixed flags */
922 0, /* Fixed flag values */
923 AVP_TYPE_INTEGER32 /* base type of data */
924 };
925 struct dict_object *type;
926 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(ICMP-Type-Number)", NULL, NULL, NULL };
927 struct dict_enumval_data t_1 = { "Echo_Reply", { .i32=0 }};
928 struct dict_enumval_data t_2 = { "Destination_Unreachable", { .i32=3 }};
929 struct dict_enumval_data t_3 = { "Source_Quench", { .i32=4 }};
930 struct dict_enumval_data t_4 = { "Redirect", { .i32=5 }};
931 struct dict_enumval_data t_5 = { "Alternate_Host_Address", { .i32=6 }};
932 struct dict_enumval_data t_6 = { "Echo", { .i32=8 }};
933 struct dict_enumval_data t_7 = { "Router_Advertisement", { .i32=9 }};
934 struct dict_enumval_data t_8 = { "Router_Solicitation", { .i32=10 }};
935 struct dict_enumval_data t_9 = { "Time_Exceeded", { .i32=11 }};
936 struct dict_enumval_data t_10 = { "Parameter_Problem", { .i32=12 }};
937 struct dict_enumval_data t_11 = { "Timestamp", { .i32=13 }};
938 struct dict_enumval_data t_12 = { "Timestamp_Reply", { .i32=14 }};
939 struct dict_enumval_data t_13 = { "Information_Request", { .i32=15 }};
940 struct dict_enumval_data t_14 = { "Information_Reply", { .i32=16 }};
941 struct dict_enumval_data t_15 = { "Address_Mask_Request", { .i32=17 }};
942 struct dict_enumval_data t_16 = { "Address_Mask_Reply", { .i32=18 }};
943 struct dict_enumval_data t_17 = { "Traceroute", { .i32=30 }};
944 struct dict_enumval_data t_18 = { "Datagram_Conversion_Error", { .i32=31 }};
945 struct dict_enumval_data t_19 = { "Mobile_Host_Redirect", { .i32=32 }};
946 struct dict_enumval_data t_20 = { "IPv6_Where-Are-You", { .i32=33 }};
947 struct dict_enumval_data t_21 = { "IPv6_I-Am-Here", { .i32=34 }};
948 struct dict_enumval_data t_22 = { "Mobile_Registration_Request", { .i32=35 }};
949 struct dict_enumval_data t_23 = { "Mobile_Registration_Reply", { .i32=36 }};
950 struct dict_enumval_data t_24 = { "Domain_Name_Request", { .i32=37 }};
951 struct dict_enumval_data t_25 = { "Domain_Name_Reply", { .i32=38 }};
952 struct dict_enumval_data t_26 = { "SKIP", { .i32=39 }};
953 struct dict_enumval_data t_27 = { "Photuris", { .i32=40 }};
954 struct dict_enumval_data t_28 = { "ICMP_messages_utilized_by_experimental", { .i32=41 }};
955 struct dict_enumval_data t_29 = { "RFC3692-style_Experiment_1", { .i32=253 }};
956 struct dict_enumval_data t_30 = { "RFC3692-style_Experiment_2", { .i32=254 }};
957 /* Create the Enumerated type, and then the AVP */
958 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
959 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
960 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
961 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
962 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
963 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
964 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
965 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
966 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
967 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
968 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
969 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
970 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
971 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
972 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
973 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
974 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
975 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
976 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
977 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
978 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
979 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
980 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
981 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
982 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
983 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
984 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
985 CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
986 CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
987 CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
988 CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
989 CHECK_dict_new( DICT_AVP, &data, type, NULL);
990 };
991 /* ICMP-Code */
992 {
993 struct dict_avp_data data = {
994 547, /* Code */
995 0, /* Vendor */
996 "ICMP-Code", /* Name */
997 0, /* Fixed flags */
998 0, /* Fixed flag values */
999 AVP_TYPE_INTEGER32 /* base type of data */
1000 };
1001 struct dict_object *type;
1002 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(ICMP-Code)", NULL, NULL, NULL };
1003 struct dict_enumval_data t_1 = { "Echo_Reply", { .i32=0 }};
1004 struct dict_enumval_data t_2 = { "Destination_Unreachable", { .i32=3 }};
1005 struct dict_enumval_data t_3 = { "Source_Quench", { .i32=4 }};
1006 struct dict_enumval_data t_4 = { "Redirect", { .i32=5 }};
1007 struct dict_enumval_data t_5 = { "Alternate_Host_Address", { .i32=6 }};
1008 struct dict_enumval_data t_6 = { "Echo", { .i32=8 }};
1009 struct dict_enumval_data t_7 = { "Router_Advertisement", { .i32=9 }};
1010 struct dict_enumval_data t_8 = { "Router_Solicitation", { .i32=10 }};
1011 struct dict_enumval_data t_9 = { "Time_Exceeded", { .i32=11 }};
1012 struct dict_enumval_data t_10 = { "Parameter_Problem", { .i32=12 }};
1013 struct dict_enumval_data t_11 = { "Timestamp", { .i32=13 }};
1014 struct dict_enumval_data t_12 = { "Timestamp_Reply", { .i32=14 }};
1015 struct dict_enumval_data t_13 = { "Information_Request", { .i32=15 }};
1016 struct dict_enumval_data t_14 = { "Information_Reply", { .i32=16 }};
1017 struct dict_enumval_data t_15 = { "Address_Mask_Request", { .i32=17 }};
1018 struct dict_enumval_data t_16 = { "Address_Mask_Reply", { .i32=18 }};
1019 struct dict_enumval_data t_17 = { "Traceroute", { .i32=30 }};
1020 struct dict_enumval_data t_18 = { "Datagram_Conversion_Error", { .i32=31 }};
1021 struct dict_enumval_data t_19 = { "Mobile_Host_Redirect", { .i32=32 }};
1022 struct dict_enumval_data t_20 = { "IPv6_Where-Are-You", { .i32=33 }};
1023 struct dict_enumval_data t_21 = { "IPv6_I-Am-Here", { .i32=34 }};
1024 struct dict_enumval_data t_22 = { "Mobile_Registration_Request", { .i32=35 }};
1025 struct dict_enumval_data t_23 = { "Mobile_Registration_Reply", { .i32=36 }};
1026 struct dict_enumval_data t_24 = { "Domain_Name_Request", { .i32=37 }};
1027 struct dict_enumval_data t_25 = { "Domain_Name_Reply", { .i32=38 }};
1028 struct dict_enumval_data t_26 = { "SKIP", { .i32=39 }};
1029 struct dict_enumval_data t_27 = { "Photuris", { .i32=40 }};
1030 struct dict_enumval_data t_28 = { "ICMP_messages_utilized_by_experimental", { .i32=41 }};
1031 struct dict_enumval_data t_29 = { "RFC3692-style_Experiment_1", { .i32=253 }};
1032 struct dict_enumval_data t_30 = { "RFC3692-style_Experiment_2", { .i32=254 }};
1033 /* Create the Enumerated type, and then the AVP */
1034 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1035 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1036 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1037 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1038 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1039 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1040 CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
1041 CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
1042 CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
1043 CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
1044 CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
1045 CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
1046 CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
1047 CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
1048 CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
1049 CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
1050 CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
1051 CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
1052 CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
1053 CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
1054 CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
1055 CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
1056 CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
1057 CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
1058 CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
1059 CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
1060 CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
1061 CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
1062 CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
1063 CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
1064 CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
1065 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1066 };
1067 /* ETH-Ether-Type */
1068 {
1069 struct dict_avp_data data = {
1070 550, /* Code */
1071 0, /* Vendor */
1072 "ETH-Ether-Type", /* Name */
1073 0, /* Fixed flags */
1074 0, /* Fixed flag values */
1075 AVP_TYPE_OCTETSTRING /* base type of data */
1076 };
1077 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1078 };
1079 /* ETH-SAP */
1080 {
1081 struct dict_avp_data data = {
1082 551, /* Code */
1083 0, /* Vendor */
1084 "ETH-SAP", /* Name */
1085 0, /* Fixed flags */
1086 0, /* Fixed flag values */
1087 AVP_TYPE_OCTETSTRING /* base type of data */
1088 };
1089 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1090 };
1091 /* S-VID-Start */
1092 {
1093 struct dict_avp_data data = {
1094 553, /* Code */
1095 0, /* Vendor */
1096 "S-VID-Start", /* Name */
1097 0, /* Fixed flags */
1098 0, /* Fixed flag values */
1099 AVP_TYPE_UNSIGNED32 /* base type of data */
1100 };
1101 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1102 };
1103 /* S-VID-End */
1104 {
1105 struct dict_avp_data data = {
1106 554, /* Code */
1107 0, /* Vendor */
1108 "S-VID-End", /* Name */
1109 0, /* Fixed flags */
1110 0, /* Fixed flag values */
1111 AVP_TYPE_UNSIGNED32 /* base type of data */
1112 };
1113 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1114 };
1115 /* C-VID-Start */
1116 {
1117 struct dict_avp_data data = {
1118 555, /* Code */
1119 0, /* Vendor */
1120 "C-VID-Start", /* Name */
1121 0, /* Fixed flags */
1122 0, /* Fixed flag values */
1123 AVP_TYPE_UNSIGNED32 /* base type of data */
1124 };
1125 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1126 };
1127 /* C-VID-End */
1128 {
1129 struct dict_avp_data data = {
1130 556, /* Code */
1131 0, /* Vendor */
1132 "C-VID-End", /* Name */
1133 0, /* Fixed flags */
1134 0, /* Fixed flag values */
1135 AVP_TYPE_UNSIGNED32 /* base type of data */
1136 };
1137 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1138 };
1139 /* Low-User-Priority */
1140 {
1141 struct dict_avp_data data = {
1142 558, /* Code */
1143 0, /* Vendor */
1144 "Low-User-Priority", /* Name */
1145 0, /* Fixed flags */
1146 0, /* Fixed flag values */
1147 AVP_TYPE_UNSIGNED32 /* base type of data */
1148 };
1149 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1150 };
1151 /* High-User-Priority */
1152 {
1153 struct dict_avp_data data = {
1154 559, /* Code */
1155 0, /* Vendor */
1156 "High-User-Priority", /* Name */
1157 0, /* Fixed flags */
1158 0, /* Fixed flag values */
1159 AVP_TYPE_UNSIGNED32 /* base type of data */
1160 };
1161 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1162 };
1163 /* Time-Of-Day-Start */
1164 {
1165 struct dict_avp_data data = {
1166 561, /* Code */
1167 0, /* Vendor */
1168 "Time-Of-Day-Start", /* Name */
1169 0, /* Fixed flags */
1170 0, /* Fixed flag values */
1171 AVP_TYPE_UNSIGNED32 /* base type of data */
1172 };
1173 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1174 };
1175 /* Time-Of-Day-End */
1176 {
1177 struct dict_avp_data data = {
1178 562, /* Code */
1179 0, /* Vendor */
1180 "Time-Of-Day-End", /* Name */
1181 0, /* Fixed flags */
1182 0, /* Fixed flag values */
1183 AVP_TYPE_UNSIGNED32 /* base type of data */
1184 };
1185 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1186 };
1187 /* Day-Of-Week-Mask */
1188 {
1189 struct dict_avp_data data = {
1190 563, /* Code */
1191 0, /* Vendor */
1192 "Day-Of-Week-Mask", /* Name */
1193 0, /* Fixed flags */
1194 0, /* Fixed flag values */
1195 AVP_TYPE_UNSIGNED32 /* base type of data */
1196 };
1197 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1198 };
1199 /* Day-Of-Month-Mask */
1200 {
1201 struct dict_avp_data data = {
1202 564, /* Code */
1203 0, /* Vendor */
1204 "Day-Of-Month-Mask", /* Name */
1205 0, /* Fixed flags */
1206 0, /* Fixed flag values */
1207 AVP_TYPE_UNSIGNED32 /* base type of data */
1208 };
1209 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1210 };
1211 /* Month-Of-Year-Mask */
1212 {
1213 struct dict_avp_data data = {
1214 565, /* Code */
1215 0, /* Vendor */
1216 "Month-Of-Year-Mask", /* Name */
1217 0, /* Fixed flags */
1218 0, /* Fixed flag values */
1219 AVP_TYPE_UNSIGNED32 /* base type of data */
1220 };
1221 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1222 };
1223 /* Absolute-Start-Time */
1224 {
1225 struct dict_avp_data data = {
1226 566, /* Code */
1227 0, /* Vendor */
1228 "Absolute-Start-Time", /* Name */
1229 0, /* Fixed flags */
1230 0, /* Fixed flag values */
1231 AVP_TYPE_OCTETSTRING /* base type of data */
1232 };
1233 CHECK_dict_new( DICT_AVP, &data, Time_type, NULL);
1234 };
1235 /* Absolute-Start-Fractional-Seconds */
1236 {
1237 struct dict_avp_data data = {
1238 567, /* Code */
1239 0, /* Vendor */
1240 "Absolute-Start-Fractional-Seconds", /* Name */
1241 0, /* Fixed flags */
1242 0, /* Fixed flag values */
1243 AVP_TYPE_UNSIGNED32 /* base type of data */
1244 };
1245 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1246 };
1247 /* Absolute-End-Time */
1248 {
1249 struct dict_avp_data data = {
1250 568, /* Code */
1251 0, /* Vendor */
1252 "Absolute-End-Time", /* Name */
1253 0, /* Fixed flags */
1254 0, /* Fixed flag values */
1255 AVP_TYPE_OCTETSTRING /* base type of data */
1256 };
1257 CHECK_dict_new( DICT_AVP, &data, Time_type, NULL);
1258 };
1259 /* Absolute-End-Fractional-Seconds */
1260 {
1261 struct dict_avp_data data = {
1262 569, /* Code */
1263 0, /* Vendor */
1264 "Absolute-End-Fractional-Seconds", /* Name */
1265 0, /* Fixed flags */
1266 0, /* Fixed flag values */
1267 AVP_TYPE_UNSIGNED32 /* base type of data */
1268 };
1269 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1270 };
1271 /* Timezone-Flag */
1272 {
1273 struct dict_avp_data data = {
1274 570, /* Code */
1275 0, /* Vendor */
1276 "Timezone-Flag", /* Name */
1277 0, /* Fixed flags */
1278 0, /* Fixed flag values */
1279 AVP_TYPE_INTEGER32 /* base type of data */
1280 };
1281 struct dict_object *type;
1282 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Timezone-Flag)", NULL, NULL, NULL };
1283 struct dict_enumval_data t_1 = { "UTC", { .i32=0 }};
1284 struct dict_enumval_data t_2 = { "LOCAL", { .i32=1 }};
1285 struct dict_enumval_data t_3 = { "OFFSET", { .i32=2 }};
1286 /* Create the Enumerated type, and then the AVP */
1287 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1288 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1289 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1290 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1291 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1292 };
1293 /* Timezone-Offset */
1294 {
1295 struct dict_avp_data data = {
1296 571, /* Code */
1297 0, /* Vendor */
1298 "Timezone-Offset", /* Name */
1299 0, /* Fixed flags */
1300 0, /* Fixed flag values */
1301 AVP_TYPE_INTEGER32 /* base type of data */
1302 };
1303 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1304 };
1305 /* Treatment-Action */
1306 {
1307 struct dict_avp_data data = {
1308 572, /* Code */
1309 0, /* Vendor */
1310 "Treatment-Action", /* Name */
1311 0, /* Fixed flags */
1312 0, /* Fixed flag values */
1313 AVP_TYPE_INTEGER32 /* base type of data */
1314 };
1315 struct dict_object *type;
1316 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Treatment-Action)", NULL, NULL, NULL };
1317 struct dict_enumval_data t_1 = { "drop", { .i32=0 }};
1318 struct dict_enumval_data t_2 = { "shape", { .i32=1 }};
1319 struct dict_enumval_data t_3 = { "mark", { .i32=2 }};
1320 struct dict_enumval_data t_4 = { "permit", { .i32=3 }};
1321 /* Create the Enumerated type, and then the AVP */
1322 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1323 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1324 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1325 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1326 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1327 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1328 };
1329 /* QoS-Profile-Id */
1330 {
1331 struct dict_avp_data data = {
1332 573, /* Code */
1333 0, /* Vendor */
1334 "QoS-Profile-Id", /* Name */
1335 0, /* Fixed flags */
1336 0, /* Fixed flag values */
1337 AVP_TYPE_UNSIGNED32 /* base type of data */
1338 };
1339 CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
1340 };
1341 /* QoS-Semantics */
1342 {
1343 struct dict_avp_data data = {
1344 575, /* Code */
1345 0, /* Vendor */
1346 "QoS-Semantics", /* Name */
1347 0, /* Fixed flags */
1348 0, /* Fixed flag values */
1349 AVP_TYPE_INTEGER32 /* base type of data */
1350 };
1351 struct dict_object *type;
1352 struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(QoS-Semantics)", NULL, NULL, NULL };
1353 struct dict_enumval_data t_1 = { "QoS_Desired", { .i32=0 }};
1354 struct dict_enumval_data t_2 = { "QoS_Available", { .i32=1 }};
1355 struct dict_enumval_data t_3 = { "QoS_Delivered", { .i32=2 }};
1356 struct dict_enumval_data t_4 = { "Minimum_QoS", { .i32=3 }};
1357 struct dict_enumval_data t_5 = { "QoS_Authorized", { .i32=4 }};
1358 /* Create the Enumerated type, and then the AVP */
1359 CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
1360 CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
1361 CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
1362 CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
1363 CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
1364 CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
1365 CHECK_dict_new( DICT_AVP, &data, type, NULL);
1366 };
1367 /* QoS-Parameters */
1368 {
1369 /* Grouped */
1370 struct dict_object * avp;
1371 struct dict_avp_data data = {
1372 576, /* Code */
1373 0, /* Vendor */
1374 "QoS-Parameters", /* Name */
1375 0, /* Fixed flags */
1376 0, /* Fixed flag values */
1377 AVP_TYPE_GROUPED /* base type of data */
1378 };
1379 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1380 }
1381 /* ETH-Proto-Type */
1382 {
1383 /* Grouped */
1384 struct dict_object * avp;
1385 struct dict_avp_data data = {
1386 549, /* Code */
1387 0, /* Vendor */
1388 "ETH-Proto-Type", /* Name */
1389 0, /* Fixed flags */
1390 0, /* Fixed flag values */
1391 AVP_TYPE_GROUPED /* base type of data */
1392 };
1393 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1394 }
1395 /* VLAN-ID-Range */
1396 {
1397 /* Grouped */
1398 struct dict_object * avp;
1399 struct dict_avp_data data = {
1400 552, /* Code */
1401 0, /* Vendor */
1402 "VLAN-ID-Range", /* Name */
1403 0, /* Fixed flags */
1404 0, /* Fixed flag values */
1405 AVP_TYPE_GROUPED /* base type of data */
1406 };
1407 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1408 }
1409 /* IP-Option */
1410 {
1411 /* Grouped */
1412 struct dict_object * avp;
1413 struct dict_avp_data data = {
1414 537, /* Code */
1415 0, /* Vendor */
1416 "IP-Option", /* Name */
1417 0, /* Fixed flags */
1418 0, /* Fixed flag values */
1419 AVP_TYPE_GROUPED /* base type of data */
1420 };
1421 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1422 }
1423 /* IP-Address-Mask */
1424 {
1425 /* Grouped */
1426 struct dict_object * avp;
1427 struct dict_avp_data data = {
1428 522, /* Code */
1429 0, /* Vendor */
1430 "IP-Address-Mask", /* Name */
1431 0, /* Fixed flags */
1432 0, /* Fixed flag values */
1433 AVP_TYPE_GROUPED /* base type of data */
1434 };
1435 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1436 }
1437 /* Time-Of-Day-Condition */
1438 {
1439 /* Grouped */
1440 struct dict_object * avp;
1441 struct dict_avp_data data = {
1442 560, /* Code */
1443 0, /* Vendor */
1444 "Time-Of-Day-Condition", /* Name */
1445 0, /* Fixed flags */
1446 0, /* Fixed flag values */
1447 AVP_TYPE_GROUPED /* base type of data */
1448 };
1449 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1450 }
1451 /* TCP-Option */
1452 {
1453 /* Grouped */
1454 struct dict_object * avp;
1455 struct dict_avp_data data = {
1456 540, /* Code */
1457 0, /* Vendor */
1458 "TCP-Option", /* Name */
1459 0, /* Fixed flags */
1460 0, /* Fixed flag values */
1461 AVP_TYPE_GROUPED /* base type of data */
1462 };
1463 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1464 }
1465 /* MAC-Address-Mask */
1466 {
1467 /* Grouped */
1468 struct dict_object * avp;
1469 struct dict_avp_data data = {
1470 525, /* Code */
1471 0, /* Vendor */
1472 "MAC-Address-Mask", /* Name */
1473 0, /* Fixed flags */
1474 0, /* Fixed flag values */
1475 AVP_TYPE_GROUPED /* base type of data */
1476 };
1477 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1478 }
1479 /* TCP-Flags */
1480 {
1481 /* Grouped */
1482 struct dict_object * avp;
1483 struct dict_avp_data data = {
1484 543, /* Code */
1485 0, /* Vendor */
1486 "TCP-Flags", /* Name */
1487 0, /* Fixed flags */
1488 0, /* Fixed flag values */
1489 AVP_TYPE_GROUPED /* base type of data */
1490 };
1491 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1492 }
1493 /* Port-Range */
1494 {
1495 /* Grouped */
1496 struct dict_object * avp;
1497 struct dict_avp_data data = {
1498 531, /* Code */
1499 0, /* Vendor */
1500 "Port-Range", /* Name */
1501 0, /* Fixed flags */
1502 0, /* Fixed flag values */
1503 AVP_TYPE_GROUPED /* base type of data */
1504 };
1505 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1506 }
1507 /* ICMP-Type */
1508 {
1509 /* Grouped */
1510 struct dict_object * avp;
1511 struct dict_avp_data data = {
1512 545, /* Code */
1513 0, /* Vendor */
1514 "ICMP-Type", /* Name */
1515 0, /* Fixed flags */
1516 0, /* Fixed flag values */
1517 AVP_TYPE_GROUPED /* base type of data */
1518 };
1519 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1520 }
1521 /* User-Priority-Range */
1522 {
1523 /* Grouped */
1524 struct dict_object * avp;
1525 struct dict_avp_data data = {
1526 557, /* Code */
1527 0, /* Vendor */
1528 "User-Priority-Range", /* Name */
1529 0, /* Fixed flags */
1530 0, /* Fixed flag values */
1531 AVP_TYPE_GROUPED /* base type of data */
1532 };
1533 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1534 }
1535 /* QoS-Profile-Template */
1536 {
1537 /* Grouped */
1538 struct dict_object * avp;
1539 struct dict_avp_data data = {
1540 574, /* Code */
1541 0, /* Vendor */
1542 "QoS-Profile-Template", /* Name */
1543 0, /* Fixed flags */
1544 0, /* Fixed flag values */
1545 AVP_TYPE_GROUPED /* base type of data */
1546 };
1547 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1548 }
1549 /* IP-Address-Range */
1550 {
1551 /* Grouped */
1552 struct dict_object * avp;
1553 struct dict_avp_data data = {
1554 519, /* Code */
1555 0, /* Vendor */
1556 "IP-Address-Range", /* Name */
1557 0, /* Fixed flags */
1558 0, /* Fixed flag values */
1559 AVP_TYPE_GROUPED /* base type of data */
1560 };
1561 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1562 }
1563 /* EUI64-Address-Mask */
1564 {
1565 /* Grouped */
1566 struct dict_object * avp;
1567 struct dict_avp_data data = {
1568 528, /* Code */
1569 0, /* Vendor */
1570 "EUI64-Address-Mask", /* Name */
1571 0, /* Fixed flags */
1572 0, /* Fixed flag values */
1573 AVP_TYPE_GROUPED /* base type of data */
1574 };
1575 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1576 }
1577 /* From-Spec */
1578 {
1579 /* Grouped */
1580 struct dict_object * avp;
1581 struct dict_avp_data data = {
1582 515, /* Code */
1583 0, /* Vendor */
1584 "From-Spec", /* Name */
1585 0, /* Fixed flags */
1586 0, /* Fixed flag values */
1587 AVP_TYPE_GROUPED /* base type of data */
1588 };
1589 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1590 }
1591 /* Excess-Treatment */
1592 {
1593 /* Grouped */
1594 struct dict_object * avp;
1595 struct dict_avp_data data = {
1596 577, /* Code */
1597 0, /* Vendor */
1598 "Excess-Treatment", /* Name */
1599 0, /* Fixed flags */
1600 0, /* Fixed flag values */
1601 AVP_TYPE_GROUPED /* base type of data */
1602 };
1603 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1604 }
1605 /* ETH-Option */
1606 {
1607 /* Grouped */
1608 struct dict_object * avp;
1609 struct dict_avp_data data = {
1610 548, /* Code */
1611 0, /* Vendor */
1612 "ETH-Option", /* Name */
1613 0, /* Fixed flags */
1614 0, /* Fixed flag values */
1615 AVP_TYPE_GROUPED /* base type of data */
1616 };
1617 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1618 }
1619 /* To-Spec */
1620 {
1621 /* Grouped */
1622 struct dict_object * avp;
1623 struct dict_avp_data data = {
1624 516, /* Code */
1625 0, /* Vendor */
1626 "To-Spec", /* Name */
1627 0, /* Fixed flags */
1628 0, /* Fixed flag values */
1629 AVP_TYPE_GROUPED /* base type of data */
1630 };
1631 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1632 }
1633 /* QoS-Capability */
1634 {
1635 /* Grouped */
1636 struct dict_object * avp;
1637 struct dict_avp_data data = {
1638 578, /* Code */
1639 0, /* Vendor */
1640 "QoS-Capability", /* Name */
1641 0, /* Fixed flags */
1642 0, /* Fixed flag values */
1643 AVP_TYPE_GROUPED /* base type of data */
1644 };
1645 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1646 }
1647 /* Classifier */
1648 {
1649 /* Grouped */
1650 struct dict_object * avp;
1651 struct dict_avp_data data = {
1652 511, /* Code */
1653 0, /* Vendor */
1654 "Classifier", /* Name */
1655 0, /* Fixed flags */
1656 0, /* Fixed flag values */
1657 AVP_TYPE_GROUPED /* base type of data */
1658 };
1659 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1660 }
1661 /* Filter-Rule */
1662 {
1663 /* Grouped */
1664 struct dict_object * avp;
1665 struct dict_avp_data data = {
1666 509, /* Code */
1667 0, /* Vendor */
1668 "Filter-Rule", /* Name */
1669 0, /* Fixed flags */
1670 0, /* Fixed flag values */
1671 AVP_TYPE_GROUPED /* base type of data */
1672 };
1673 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1674 }
1675 /* QoS-Resources */
1676 {
1677 /* Grouped */
1678 struct dict_object * avp;
1679 struct dict_avp_data data = {
1680 508, /* Code */
1681 0, /* Vendor */
1682 "QoS-Resources", /* Name */
1683 0, /* Fixed flags */
1684 0, /* Fixed flag values */
1685 AVP_TYPE_GROUPED /* base type of data */
1686 };
1687 CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
1688 }
1689
1690
1691 }
1692
1693 /* Commands section */
1694 {
1695
1696 }
1697
1698 return 0;
1699}
1700
1701static int dict_rfc5777_avps_load_rules(char * conffile)
1702{
1703 /* Grouped AVP section */
1704 {
1705 /* QoS-Parameters */
1706 {
1707 /* Grouped */
1708 struct dict_object * avp;
1709 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Parameters"};
1710 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1711 struct local_rules_definition rules[] =
1712 {
1713
1714 };
1715 PARSE_loc_rules( rules, avp );
1716 }
1717 /* ETH-Proto-Type */
1718 {
1719 /* Grouped */
1720 struct dict_object * avp;
1721 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ETH-Proto-Type"};
1722 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1723 struct local_rules_definition rules[] =
1724 {
1725 { { .avp_vendor = 0, .avp_name = "ETH-Ether-Type"}, RULE_OPTIONAL, -1, -1 },
1726 { { .avp_vendor = 0, .avp_name = "ETH-SAP"}, RULE_OPTIONAL, -1, -1 }
1727 };
1728 PARSE_loc_rules( rules, avp );
1729 }
1730 /* VLAN-ID-Range */
1731 {
1732 /* Grouped */
1733 struct dict_object * avp;
1734 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "VLAN-ID-Range"};
1735 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1736 struct local_rules_definition rules[] =
1737 {
1738 { { .avp_vendor = 0, .avp_name = "S-VID-Start"}, RULE_OPTIONAL, -1, -1 },
1739 { { .avp_vendor = 0, .avp_name = "S-VID-End"}, RULE_OPTIONAL, -1, -1 },
1740 { { .avp_vendor = 0, .avp_name = "C-VID-Start"}, RULE_OPTIONAL, -1, -1 },
1741 { { .avp_vendor = 0, .avp_name = "C-VID-End"}, RULE_OPTIONAL, -1, -1 }
1742 };
1743 PARSE_loc_rules( rules, avp );
1744 }
1745 /* IP-Option */
1746 {
1747 /* Grouped */
1748 struct dict_object * avp;
1749 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Option"};
1750 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1751 struct local_rules_definition rules[] =
1752 {
1753 { { .avp_vendor = 0, .avp_name = "IP-Option-Type"}, RULE_REQUIRED, -1, -1 },
1754 { { .avp_vendor = 0, .avp_name = "IP-Option-Value"}, RULE_OPTIONAL, -1, -1 },
1755 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
1756 };
1757 PARSE_loc_rules( rules, avp );
1758 }
1759 /* IP-Address-Mask */
1760 {
1761 /* Grouped */
1762 struct dict_object * avp;
1763 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Address-Mask"};
1764 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1765 struct local_rules_definition rules[] =
1766 {
1767 { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_REQUIRED, -1, -1 },
1768 { { .avp_vendor = 0, .avp_name = "IP-Bit-Mask-Width"}, RULE_REQUIRED, -1, -1 }
1769 };
1770 PARSE_loc_rules( rules, avp );
1771 }
1772 /* Time-Of-Day-Condition */
1773 {
1774 /* Grouped */
1775 struct dict_object * avp;
1776 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Time-Of-Day-Condition"};
1777 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1778 struct local_rules_definition rules[] =
1779 {
1780 { { .avp_vendor = 0, .avp_name = "Time-Of-Day-Start"}, RULE_OPTIONAL, -1, -1 },
1781 { { .avp_vendor = 0, .avp_name = "Time-Of-Day-End"}, RULE_OPTIONAL, -1, -1 },
1782 { { .avp_vendor = 0, .avp_name = "Day-Of-Week-Mask"}, RULE_OPTIONAL, -1, -1 },
1783 { { .avp_vendor = 0, .avp_name = "Day-Of-Month-Mask"}, RULE_OPTIONAL, -1, -1 },
1784 { { .avp_vendor = 0, .avp_name = "Month-Of-Year-Mask"}, RULE_OPTIONAL, -1, -1 },
1785 { { .avp_vendor = 0, .avp_name = "Absolute-Start-Time"}, RULE_OPTIONAL, -1, -1 },
1786 { { .avp_vendor = 0, .avp_name = "Absolute-End-Time"}, RULE_OPTIONAL, -1, -1 },
1787 { { .avp_vendor = 0, .avp_name = "Timezone-Flag"}, RULE_OPTIONAL, -1, -1 }
1788 };
1789 PARSE_loc_rules( rules, avp );
1790 }
1791 /* TCP-Option */
1792 {
1793 /* Grouped */
1794 struct dict_object * avp;
1795 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "TCP-Option"};
1796 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1797 struct local_rules_definition rules[] =
1798 {
1799 { { .avp_vendor = 0, .avp_name = "TCP-Option-Type"}, RULE_REQUIRED, -1, -1 },
1800 { { .avp_vendor = 0, .avp_name = "TCP-Option-Value"}, RULE_OPTIONAL, -1, -1 },
1801 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
1802 };
1803 PARSE_loc_rules( rules, avp );
1804 }
1805 /* MAC-Address-Mask */
1806 {
1807 /* Grouped */
1808 struct dict_object * avp;
1809 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"};
1810 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1811 struct local_rules_definition rules[] =
1812 {
1813 { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_REQUIRED, -1, -1 },
1814 { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask-Pattern"}, RULE_REQUIRED, -1, -1 }
1815 };
1816 PARSE_loc_rules( rules, avp );
1817 }
1818 /* TCP-Flags */
1819 {
1820 /* Grouped */
1821 struct dict_object * avp;
1822 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "TCP-Flags"};
1823 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1824 struct local_rules_definition rules[] =
1825 {
1826 { { .avp_vendor = 0, .avp_name = "TCP-Flag-Type"}, RULE_REQUIRED, -1, -1 },
1827 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
1828 };
1829 PARSE_loc_rules( rules, avp );
1830 }
1831 /* Port-Range */
1832 {
1833 /* Grouped */
1834 struct dict_object * avp;
1835 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Port-Range"};
1836 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1837 struct local_rules_definition rules[] =
1838 {
1839 { { .avp_vendor = 0, .avp_name = "Port-Start"}, RULE_OPTIONAL, -1, -1 },
1840 { { .avp_vendor = 0, .avp_name = "Port-End"}, RULE_OPTIONAL, -1, -1 }
1841 };
1842 PARSE_loc_rules( rules, avp );
1843 }
1844 /* ICMP-Type */
1845 {
1846 /* Grouped */
1847 struct dict_object * avp;
1848 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ICMP-Type"};
1849 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1850 struct local_rules_definition rules[] =
1851 {
1852 { { .avp_vendor = 0, .avp_name = "ICMP-Type-Number"}, RULE_REQUIRED, -1, -1 },
1853 { { .avp_vendor = 0, .avp_name = "ICMP-Code"}, RULE_OPTIONAL, -1, -1 },
1854 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
1855 };
1856 PARSE_loc_rules( rules, avp );
1857 }
1858 /* User-Priority-Range */
1859 {
1860 /* Grouped */
1861 struct dict_object * avp;
1862 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "User-Priority-Range"};
1863 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1864 struct local_rules_definition rules[] =
1865 {
1866 { { .avp_vendor = 0, .avp_name = "Low-User-Priority"}, RULE_OPTIONAL, -1, -1 },
1867 { { .avp_vendor = 0, .avp_name = "High-User-Priority"}, RULE_OPTIONAL, -1, -1 }
1868 };
1869 PARSE_loc_rules( rules, avp );
1870 }
1871 /* QoS-Profile-Template */
1872 {
1873 /* Grouped */
1874 struct dict_object * avp;
1875 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"};
1876 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1877 struct local_rules_definition rules[] =
1878 {
1879 { { .avp_vendor = 0, .avp_name = "Vendor-Id"}, RULE_REQUIRED, -1, -1 },
1880 { { .avp_vendor = 0, .avp_name = "QoS-Profile-Id"}, RULE_REQUIRED, -1, -1 }
1881 };
1882 PARSE_loc_rules( rules, avp );
1883 }
1884 /* IP-Address-Range */
1885 {
1886 /* Grouped */
1887 struct dict_object * avp;
1888 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Address-Range"};
1889 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1890 struct local_rules_definition rules[] =
1891 {
1892 { { .avp_vendor = 0, .avp_name = "IP-Address-Start"}, RULE_OPTIONAL, -1, -1 },
1893 { { .avp_vendor = 0, .avp_name = "IP-Address-End"}, RULE_OPTIONAL, -1, -1 }
1894 };
1895 PARSE_loc_rules( rules, avp );
1896 }
1897 /* EUI64-Address-Mask */
1898 {
1899 /* Grouped */
1900 struct dict_object * avp;
1901 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"};
1902 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1903 struct local_rules_definition rules[] =
1904 {
1905 { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_REQUIRED, -1, -1 },
1906 { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask-Pattern"}, RULE_REQUIRED, -1, -1 }
1907 };
1908 PARSE_loc_rules( rules, avp );
1909 }
1910 /* From-Spec */
1911 {
1912 /* Grouped */
1913 struct dict_object * avp;
1914 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "From-Spec"};
1915 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1916 struct local_rules_definition rules[] =
1917 {
1918 { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_OPTIONAL, -1, -1 },
1919 { { .avp_vendor = 0, .avp_name = "IP-Address-Range"}, RULE_OPTIONAL, -1, -1 },
1920 { { .avp_vendor = 0, .avp_name = "IP-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1921 { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_OPTIONAL, -1, -1 },
1922 { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1923 { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_OPTIONAL, -1, -1 },
1924 { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1925 { { .avp_vendor = 0, .avp_name = "Port"}, RULE_OPTIONAL, -1, -1 },
1926 { { .avp_vendor = 0, .avp_name = "Port-Range"}, RULE_OPTIONAL, -1, -1 },
1927 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 },
1928 { { .avp_vendor = 0, .avp_name = "Use-Assigned-Address"}, RULE_OPTIONAL, -1, -1 }
1929 };
1930 PARSE_loc_rules( rules, avp );
1931 }
1932 /* Excess-Treatment */
1933 {
1934 /* Grouped */
1935 struct dict_object * avp;
1936 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Excess-Treatment"};
1937 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1938 struct local_rules_definition rules[] =
1939 {
1940 { { .avp_vendor = 0, .avp_name = "Treatment-Action"}, RULE_REQUIRED, -1, -1 },
1941 { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_OPTIONAL, -1, -1 },
1942 { { .avp_vendor = 0, .avp_name = "QoS-Parameters"}, RULE_OPTIONAL, -1, -1 }
1943 };
1944 PARSE_loc_rules( rules, avp );
1945 }
1946 /* ETH-Option */
1947 {
1948 /* Grouped */
1949 struct dict_object * avp;
1950 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ETH-Option"};
1951 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1952 struct local_rules_definition rules[] =
1953 {
1954 { { .avp_vendor = 0, .avp_name = "ETH-Proto-Type"}, RULE_REQUIRED, -1, -1 },
1955 { { .avp_vendor = 0, .avp_name = "VLAN-ID-Range"}, RULE_OPTIONAL, -1, -1 },
1956 { { .avp_vendor = 0, .avp_name = "User-Priority-Range"}, RULE_OPTIONAL, -1, -1 }
1957 };
1958 PARSE_loc_rules( rules, avp );
1959 }
1960 /* To-Spec */
1961 {
1962 /* Grouped */
1963 struct dict_object * avp;
1964 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "To-Spec"};
1965 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1966 struct local_rules_definition rules[] =
1967 {
1968 { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_OPTIONAL, -1, -1 },
1969 { { .avp_vendor = 0, .avp_name = "IP-Address-Range"}, RULE_OPTIONAL, -1, -1 },
1970 { { .avp_vendor = 0, .avp_name = "IP-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1971 { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_OPTIONAL, -1, -1 },
1972 { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1973 { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_OPTIONAL, -1, -1 },
1974 { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
1975 { { .avp_vendor = 0, .avp_name = "Port"}, RULE_OPTIONAL, -1, -1 },
1976 { { .avp_vendor = 0, .avp_name = "Port-Range"}, RULE_OPTIONAL, -1, -1 },
1977 { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 },
1978 { { .avp_vendor = 0, .avp_name = "Use-Assigned-Address"}, RULE_OPTIONAL, -1, -1 }
1979 };
1980 PARSE_loc_rules( rules, avp );
1981 }
1982 /* QoS-Capability */
1983 {
1984 /* Grouped */
1985 struct dict_object * avp;
1986 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Capability"};
1987 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
1988 struct local_rules_definition rules[] =
1989 {
1990 { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_REQUIRED, 1, -1 }
1991 };
1992 PARSE_loc_rules( rules, avp );
1993 }
1994 /* Classifier */
1995 {
1996 /* Grouped */
1997 struct dict_object * avp;
1998 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Classifier"};
1999 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
2000 struct local_rules_definition rules[] =
2001 {
2002 { { .avp_vendor = 0, .avp_name = "Classifier-ID"}, RULE_REQUIRED, -1, -1 },
2003 { { .avp_vendor = 0, .avp_name = "Protocol"}, RULE_OPTIONAL, -1, -1 },
2004 { { .avp_vendor = 0, .avp_name = "Direction"}, RULE_OPTIONAL, -1, -1 },
2005 { { .avp_vendor = 0, .avp_name = "From-Spec"}, RULE_OPTIONAL, -1, -1 },
2006 { { .avp_vendor = 0, .avp_name = "To-Spec"}, RULE_OPTIONAL, -1, -1 },
2007 { { .avp_vendor = 0, .avp_name = "Diffserv-Code-Point"}, RULE_OPTIONAL, -1, -1 },
2008 { { .avp_vendor = 0, .avp_name = "Fragmentation-Flag"}, RULE_OPTIONAL, -1, -1 },
2009 { { .avp_vendor = 0, .avp_name = "IP-Option"}, RULE_OPTIONAL, -1, -1 },
2010 { { .avp_vendor = 0, .avp_name = "TCP-Option"}, RULE_OPTIONAL, -1, -1 },
2011 { { .avp_vendor = 0, .avp_name = "TCP-Flags"}, RULE_OPTIONAL, -1, -1 },
2012 { { .avp_vendor = 0, .avp_name = "ICMP-Type"}, RULE_OPTIONAL, -1, -1 },
2013 { { .avp_vendor = 0, .avp_name = "ETH-Option"}, RULE_OPTIONAL, -1, -1 }
2014 };
2015 PARSE_loc_rules( rules, avp );
2016 }
2017 /* Filter-Rule */
2018 {
2019 /* Grouped */
2020 struct dict_object * avp;
2021 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Filter-Rule"};
2022 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
2023 struct local_rules_definition rules[] =
2024 {
2025 { { .avp_vendor = 0, .avp_name = "Filter-Rule-Precedence"}, RULE_OPTIONAL, -1, -1 },
2026 { { .avp_vendor = 0, .avp_name = "Classifier"}, RULE_OPTIONAL, -1, -1 },
2027 { { .avp_vendor = 0, .avp_name = "Time-Of-Day-Condition"}, RULE_OPTIONAL, -1, -1 },
2028 { { .avp_vendor = 0, .avp_name = "Treatment-Action"}, RULE_OPTIONAL, -1, -1 },
2029 { { .avp_vendor = 0, .avp_name = "QoS-Semantics"}, RULE_OPTIONAL, -1, -1 },
2030 { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_OPTIONAL, -1, -1 },
2031 { { .avp_vendor = 0, .avp_name = "QoS-Parameters"}, RULE_OPTIONAL, -1, -1 },
2032 { { .avp_vendor = 0, .avp_name = "Excess-Treatment"}, RULE_OPTIONAL, -1, -1 }
2033 };
2034 PARSE_loc_rules( rules, avp );
2035 }
2036 /* QoS-Resources */
2037 {
2038 /* Grouped */
2039 struct dict_object * avp;
2040 struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Resources"};
2041 CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
2042 struct local_rules_definition rules[] =
2043 {
2044 { { .avp_vendor = 0, .avp_name = "Filter-Rule"}, RULE_REQUIRED, 1, -1 }
2045 };
2046 PARSE_loc_rules( rules, avp );
2047 }
2048
2049 }
2050
2051 /* Commands section */
2052 {
2053
2054 }
2055
2056 LOG_D( "Extension 'Dictionary definitions for rfc5777_avps (None)' initialized");
2057 return 0;
2058}
2059
2060int dict_entry(char * conffile)
2061{
2062 dict_rfc5777_avps_load_defs(conffile);
2063 return dict_rfc5777_avps_load_rules(conffile);
2064}
2065
2066const char* dict_rfc5777_avps_proto_ver(char * conffile) {
2067 return rfc5777_avps_proto_ver;
2068}
2069
2070const double dict_rfc5777_avps_gen_ts(char * conffile) {
2071 return rfc5777_avps_gen_date;
2072}
2073
2074EXTENSION_ENTRY2("dict_rfc5777_avps", dict_rfc5777_avps_load_defs, dict_rfc5777_avps_load_rules);
2075
2076
2077