# HG changeset patch # User Thomas Klausner # Date 1362905877 -3600 # Node ID bbc08d58325a23fb6d56410c2b63d43107232bf3 # Parent 992ef11673445a6cc4c810205680b1f127f0f8bd# Parent 6e7437162f268bf17f0bf7a3d074f0e1f55070b9 merge diff -r 6e7437162f26 -r bbc08d58325a .hgtags --- a/.hgtags Sun Mar 10 04:24:36 2013 +0100 +++ b/.hgtags Sun Mar 10 09:57:57 2013 +0100 @@ -29,4 +29,5 @@ 5c4cf8d15ef0e298734daf16203278d7fa62fa7a 1.1.5-rc1 226f5957186ae4369467b070aeb61b1c631c9a5c 1.1.5-rc2 ae96ae28f3ddc48b9e2676e9538008eab2b9d60a 1.1.5 +8500947421cb412b5f4f2dfffdf1a35b6fb369e0 FORK 155d45d0653025f45b58ab96b6ba0d5e6fb7fcf8 1.1.6 diff -r 6e7437162f26 -r bbc08d58325a contrib/tools/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/tools/README Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,2 @@ +org_to_fd.pl converts org files like diameter-rfcs.org to C fragments +that can be included in freeDiameter code. diff -r 6e7437162f26 -r bbc08d58325a contrib/tools/diameter-rfcs.org --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/tools/diameter-rfcs.org Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,188 @@ +| Attribute Name | Code | Section | Data | MUST | MAY | SHLD NOT | MUST NOT | Encr | +| # RFC 3588 - Diameter # | | | | | | | | | +| Acct-Interim-Interval | 85 | 9.8.2 | Unsigned32 | M | P | | V | Y | +| Accounting-Realtime-Required | 483 | 9.8.7 | Enumerated | M | P | | V | Y | +| Acct-Multi-Session-Id | 50 | 9.8.5 | UTF8String | M | P | | V | Y | +| Accounting-Record-Number | 485 | 9.8.3 | Unsigned32 | M | P | | V | Y | +| Accounting-Record-Type | 480 | 9.8.1 | Enumerated | M | P | | V | Y | +| Accounting-Session-Id | 44 | 9.8.4 | OctetString | M | P | | V | Y | +| Accounting-Sub-Session-Id | 287 | 9.8.6 | Unsigned64 | M | P | | V | Y | +| Acct-Application-Id | 259 | 6.9 | Unsigned32 | M | P | | V | N | +| Auth-Application-Id | 258 | 6.8 | Unsigned32 | M | P | | V | N | +| Auth-Request-Type | 274 | 8.7 | Enumerated | M | P | | V | N | +| Authorization-Lifetime | 291 | 8.9 | Unsigned32 | M | P | | V | N | +| Auth-Grace-Period | 276 | 8.10 | Unsigned32 | M | P | | V | N | +| Auth-Session-State | 277 | 8.11 | Enumerated | M | P | | V | N | +| Re-Auth-Request-Type | 285 | 8.12 | Enumerated | M | P | | V | N | +| Class | 25 | 8.20 | OctetString | M | P | | V | Y | +| Destination-Host | 293 | 6.5 | DiamIdent | M | P | | V | N | +| Destination-Realm | 283 | 6.6 | DiamIdent | M | P | | V | N | +| Disconnect-Cause | 273 | 5.4.3 | Enumerated | M | P | | V | N | +| E2E-Sequence-AVP | 300 | 6.15 | Grouped | M | P | | V | Y | +| Error-Message | 281 | 7.3 | UTF8String | | P | | V,M | N | +| Error-Reporting-Host | 294 | 7.4 | DiamIdent | | P | | V,M | N | +| Event-Timestamp | 55 | 8.21 | Time | M | P | | V | N | +| Experimental-Result | 297 | 7.6 | Grouped | M | P | | V | N | +| Experimental-Result-Code | 298 | 7.7 | Unsigned32 | M | P | | V | N | +| Failed-AVP | 279 | 7.5 | Grouped | M | P | | V | N | +| Firmware-Revision | 267 | 5.3.4 | Unsigned32 | | | | P,V,M | N | +| Host-IP-Address | 257 | 5.3.5 | Address | M | P | | V | N | +| Inband-Security-Id | 299 | 6.10 | Unsigned32 | M | P | | V | N | +| Multi-Round-Time-Out | 272 | 8.19 | Unsigned32 | M | P | | V | Y | +| Origin-Host | 264 | 6.3 | DiamIdent | M | P | | V | N | +| Origin-Realm | 296 | 6.4 | DiamIdent | M | P | | V | N | +| Origin-State-Id | 278 | 8.16 | Unsigned32 | M | P | | V | N | +| Product-Name | 269 | 5.3.7 | UTF8String | | | | P,V,M | N | +| Proxy-Host | 280 | 6.7.3 | DiamIdent | M | | | P,V | N | +| Proxy-Info | 284 | 6.7.2 | Grouped | M | | | P,V | N | +| Proxy-State | 33 | 6.7.4 | OctetString | M | | | P,V | N | +| Redirect-Host | 292 | 6.12 | DiamURI | M | P | | V | N | +| Redirect-Host-Usage | 261 | 6.13 | Enumerated | M | P | | V | N | +| Redirect-Max-Cache-Time | 262 | 6.14 | Unsigned32 | M | P | | V | N | +| Result-Code | 268 | 7.1 | Unsigned32 | M | P | | V | N | +| Route-Record | 282 | 6.7.1 | DiamIdent | M | | | P,V | N | +| Session-Id | 263 | 8.8 | UTF8String | M | P | | V | Y | +| Session-Timeout | 27 | 8.13 | Unsigned32 | M | P | | V | N | +| Session-Binding | 270 | 8.17 | Unsigned32 | M | P | | V | Y | +| Session-Server-Failover | 271 | 8.18 | Enumerated | M | P | | V | Y | +| Supported-Vendor-Id | 265 | 5.3.6 | Unsigned32 | M | P | | V | N | +| Termination-Cause | 295 | 8.15 | Enumerated | M | P | | V | N | +| User-Name | 1 | 8.14 | UTF8String | M | P | | V | Y | +| Vendor-Id | 266 | 5.3.3 | Unsigned32 | M | P | | V | N | +| Vendor-Specific-Application-Id | 260 | 6.11 | Grouped | M | P | | V | N | +| # RFC 4005 - NAS # | | | | | | | | | +| NAS-Port | 5 | 4.2 | Unsigned32 | M | P | | V | Y | +| NAS-Port-Id | 87 | 4.3 | UTF8String | M | P | | V | Y | +| NAS-Port-Type | 61 | 4.4 | Enumerated | M | P | | V | Y | +| Called-Station-Id | 30 | 4.5 | UTF8String | M | P | | V | Y | +| Calling-Station-Id | 31 | 4.6 | UTF8String | M | P | | V | Y | +| Connect-Info | 77 | 4.7 | UTF8String | M | P | | V | Y | +| Originating-Line-Info | 94 | 4.8 | OctetString | | M,P | | V | Y | +| Reply-Message | 18 | 4.9 | UTF8String | M | P | | V | Y | +| User-Password | 2 | 5.1 | OctetString | M | P | | V | Y | +| Password-Retry | 75 | 5.2 | Unsigned32 | M | P | | V | Y | +| Prompt | 76 | 5.3 | Enumerated | M | P | | V | Y | +| CHAP-Auth | 402 | 5.4 | Grouped | M | P | | V | Y | +| CHAP-Algorithm | 403 | 5.5 | Enumerated | M | P | | V | Y | +| CHAP-Ident | 404 | 5.6 | OctetString | M | P | | V | Y | +| CHAP-Response | 405 | 5.7 | OctetString | M | P | | V | Y | +| CHAP-Challenge | 60 | 5.8 | OctetString | M | P | | V | Y | +| ARAP-Password | 70 | 5.9 | OctetString | M | P | | V | Y | +| ARAP-Challenge-Response | 84 | 5.10 | OctetString | M | P | | V | Y | +| ARAP-Security | 73 | 5.11 | Unsigned32 | M | P | | V | Y | +| ARAP-Security-Data | 74 | 5.12 | OctetString | M | P | | V | Y | +| Service-Type | 6 | 6.1 | Enumerated | M | P | | V | Y | +| Callback-Number | 19 | 6.2 | UTF8String | M | P | | V | Y | +| Callback-Id | 20 | 6.3 | UTF8String | M | P | | V | Y | +| Idle-Timeout | 28 | 6.4 | Unsigned32 | M | P | | V | Y | +| Port-Limit | 62 | 6.5 | Unsigned32 | M | P | | V | Y | +| NAS-Filter-Rule | 400 | 6.6 | IPFltrRule | M | P | | V | Y | +| Filter-Id | 11 | 6.7 | UTF8String | M | P | | V | Y | +| Configuration-Token | 78 | 6.8 | OctetString | M | | | P,V | | +| QoS-Filter-Rule | 407 | 6.9 | QoSFltrRule | | | | | | +| Framed-Protocol | 7 | 6.10.1 | Enumerated | M | P | | V | Y | +| Framed-Routing | 10 | 6.10.2 | Enumerated | M | P | | V | Y | +| Framed-MTU | 12 | 6.10.3 | Unsigned32 | M | P | | V | Y | +| Framed-Compression | 13 | 6.10.4 | Enumerated | M | P | | V | Y | +| Framed-IP-Address | 8 | 6.11.1 | OctetString | M | P | | V | Y | +| Framed-IP-Netmask | 9 | 6.11.2 | OctetString | M | P | | V | Y | +| Framed-Route | 22 | 6.11.3 | UTF8String | M | P | | V | Y | +| Framed-Pool | 88 | 6.11.4 | OctetString | M | P | | V | Y | +| Framed-Interface-Id | 96 | 6.11.5 | Unsigned64 | M | P | | V | Y | +| Framed-IPv6-Prefix | 97 | 6.11.6 | OctetString | M | P | | V | Y | +| Framed-IPv6-Route | 99 | 6.11.7 | UTF8String | M | P | | V | Y | +| Framed-IPv6-Pool | 100 | 6.11.8 | OctetString | M | P | | V | Y | +| Framed-IPX-Network | 23 | 6.12.1 | UTF8String | M | P | | V | Y | +| Framed-Appletalk-Link | 37 | 6.13.1 | Unsigned32 | M | P | | V | Y | +| Framed-Appletalk-Network | 38 | 6.13.2 | Unsigned32 | M | P | | V | Y | +| Framed-Appletalk-Zone | 39 | 6.13.3 | OctetString | M | P | | V | Y | +| ARAP-Features | 71 | 6.14.1 | OctetString | M | P | | V | Y | +| ARAP-Zone-Access | 72 | 6.14.2 | Enumerated | M | P | | V | Y | +| Login-IP-Host | 14 | 6.15.1 | OctetString | M | P | | V | Y | +| Login-IPv6-Host | 98 | 6.15.2 | OctetString | M | P | | V | Y | +| Login-Service | 15 | 6.15.3 | Enumerated | M | P | | V | Y | +| Login-TCP-Port | 16 | 6.16.1 | Unsigned32 | M | P | | V | Y | +| Login-LAT-Service | 34 | 6.17.1 | OctetString | M | P | | V | Y | +| Login-LAT-Node | 35 | 6.17.2 | OctetString | M | P | | V | Y | +| Login-LAT-Group | 36 | 6.17.3 | OctetString | M | P | | V | Y | +| Login-LAT-Port | 63 | 6.17.4 | OctetString | M | P | | V | Y | +| Tunneling | 401 | 7.1 | Grouped | M | P | | V | N | +| Tunnel-Type | 64 | 7.2 | Enumerated | M | P | | V | Y | +| Tunnel-Medium-Type | 65 | 7.3 | Enumerated | M | P | | V | Y | +| Tunnel-Client-Endpoint | 66 | 7.4 | UTF8String | M | P | | V | Y | +| Tunnel-Server-Endpoint | 67 | 7.5 | UTF8String | M | P | | V | Y | +| Tunnel-Password | 69 | 7.6 | OctetString | M | P | | V | Y | +| Tunnel-Private-Group-Id | 81 | 7.7 | OctetString | M | P | | V | Y | +| Tunnel-Assignment-Id | 82 | 7.8 | OctetString | M | P | | V | Y | +| Tunnel-Preference | 83 | 7.9 | Unsigned32 | M | P | | V | Y | +| Tunnel-Client-Auth-Id | 90 | 7.10 | UTF8String | M | P | | V | Y | +| Tunnel-Server-Auth-Id | 91 | 7.11 | UTF8String | M | P | | V | Y | +| Accounting-Input-Octets | 363 | 8.1 | Unsigned64 | M | P | | V | Y | +| Accounting-Output-Octets | 364 | 8.2 | Unsigned64 | M | P | | V | Y | +| Accounting-Input-Packets | 365 | 8.3 | Unsigned64 | M | P | | V | Y | +| Accounting-Output-Packets | 366 | 8.4 | Unsigned64 | M | P | | V | Y | +| Acct-Session-Time | 46 | 8.5 | Unsigned32 | M | P | | V | Y | +| Acct-Authentic | 45 | 8.6 | Enumerated | M | P | | V | Y | +| Acounting-Auth-Method | 406 | 8.7 | Enumerated | M | P | | V | Y | +| Acct-Delay-Time | 41 | 8.8 | Unsigned32 | M | P | | V | Y | +| Acct-Link-Count | 51 | 8.9 | Unsigned32 | M | P | | V | Y | +| Acct-Tunnel-Connection | 68 | 8.10 | OctetString | M | P | | V | Y | +| Acct-Tunnel-Packets-Lost | 86 | 8.11 | Unsigned32 | M | P | | V | Y | +| NAS-Identifier | 32 | 9.3.1 | UTF8String | M | P | | V | Y | +| NAS-IP-Address | 4 | 9.3.2 | OctetString | M | P | | V | Y | +| NAS-IPv6-Address | 95 | 9.3.3 | OctetString | M | P | | V | Y | +| State | 24 | 9.3.4 | OctetString | M | P | | V | Y | +| Termination-Cause | 295 | 9.3.5 | Enumerated | M | P | | V | Y | +| Origin-AAA-Protocol | 408 | 9.3.6 | Enumerated | M | P | | V | Y | +| # RFC 4006 - DCCA # | | | | | | | | | +| CC-Correlation-Id | 411 | 8.1 | OctetString | | P,M | | V | Y | +| CC-Input-Octets | 412 | 8.24 | Unsigned64 | M | P | | V | Y | +| CC-Money | 413 | 8.22 | Grouped | M | P | | V | Y | +| CC-Output-Octets | 414 | 8.25 | Unsigned64 | M | P | | V | Y | +| CC-Request-Number | 415 | 8.2 | Unsigned32 | M | P | | V | Y | +| CC-Request-Type | 416 | 8.3 | Enumerated | M | P | | V | Y | +| CC-Service-Specific-Units | 417 | 8.26 | Unsigned64 | M | P | | V | Y | +| CC-Session-Failover | 418 | 8.4 | Enumerated | M | P | | V | Y | +| CC-Sub-Session-Id | 419 | 8.5 | Unsigned64 | M | P | | V | Y | +| CC-Time | 420 | 8.21 | Unsigned32 | M | P | | V | Y | +| CC-Total-Octets | 421 | 8.23 | Unsigned64 | M | P | | V | Y | +| CC-Unit-Type | 454 | 8.32 | Enumerated | M | P | | V | Y | +| Check-Balance-Result | 422 | 8.6 | Enumerated | M | P | | V | Y | +| Cost-Information | 423 | 8.7 | Grouped | M | P | | V | Y | +| Cost-Unit | 424 | 8.12 | UTF8String | M | P | | V | Y | +| Credit-Control | 426 | 8.13 | Enumerated | M | P | | V | Y | +| Credit-Control-Failure-Handling | 427 | 8.14 | Enumerated | M | P | | V | Y | +| Currency-Code | 425 | 8.11 | Unsigned32 | M | P | | V | Y | +| Direct-Debiting-Failure-Handling | 428 | 8.15 | Enumerated | M | P | | V | Y | +| Exponent | 429 | 8.9 | Integer32 | M | P | | V | Y | +| Final-Unit-Action | 449 | 8.35 | Enumerated | M | P | | V | Y | +| Final-Unit-Indication | 430 | 8.34 | Grouped | M | P | | V | Y | +| Granted-Service-Unit | 431 | 8.17 | Grouped | M | P | | V | Y | +| G-S-U-Pool-Identifier | 453 | 8.31 | Unsigned32 | M | P | | V | Y | +| G-S-U-Pool-Reference | 457 | 8.30 | Grouped | M | P | | V | Y | +| Multiple-Services-Credit-Control | 456 | 8.16 | Grouped | M | P | | V | Y | +| Multiple-Services-Indicator | 455 | 8.40 | Enumerated | M | P | | V | Y | +| Rating-Group | 432 | 8.29 | Unsigned32 | M | P | | V | Y | +| Redirect-Address-Type | 433 | 8.38 | Enumerated | M | P | | V | Y | +| Redirect-Server | 434 | 8.37 | Grouped | M | P | | V | Y | +| Redirect-Server-Address | 435 | 8.39 | UTF8String | M | P | | V | Y | +| Requested-Action | 436 | 8.41 | Enumerated | M | P | | V | Y | +| Requested-Service-Unit | 437 | 8.18 | Grouped | M | P | | V | Y | +| Restriction-Filter-Rule | 438 | 8.36 | IPFiltrRule | M | P | | V | Y | +| Service-Context-Id | 461 | 8.42 | UTF8String | M | P | | V | Y | +| Service-Identifier | 439 | 8.28 | Unsigned32 | M | P | | V | Y | +| Service-Parameter-Info | 440 | 8.43 | Grouped | | P,M | | V | Y | +| Service-Parameter-Type | 441 | 8.44 | Unsigned32 | | P,M | | V | Y | +| Service-Parameter-Value | 442 | 8.45 | OctetString | | P,M | | V | Y | +| Subscription-Id | 443 | 8.46 | Grouped | M | P | | V | Y | +| Subscription-Id-Data | 444 | 8.48 | UTF8String | M | P | | V | Y | +| Subscription-Id-Type | 450 | 8.47 | Enumerated | M | P | | V | Y | +| Tariff-Change-Usage | 452 | 8.27 | Enumerated | M | P | | V | Y | +| Tariff-Time-Change | 451 | 8.20 | Time | M | P | | V | Y | +| Unit-Value | 445 | 8.8 | Grouped | M | P | | V | Y | +| Used-Service-Unit | 446 | 8.19 | Grouped | M | P | | V | Y | +| User-Equipment-Info | 458 | 8.49 | Grouped | | P,M | | V | Y | +| User-Equipment-Info-Type | 459 | 8.50 | Enumerated | | P,M | | V | Y | +| User-Equipment-Info-Value | 460 | 8.51 | OctetString | | P,M | | V | Y | +| Value-Digits | 447 | 8.10 | Integer64 | M | P | | V | Y | +| Validity-Time | 448 | 8.33 | Unsigned32 | M | P | | V | Y | diff -r 6e7437162f26 -r bbc08d58325a contrib/tools/org_to_fd.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/tools/org_to_fd.pl Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,96 @@ +#!/usr/bin/env perl +use strict; +use Getopt::Std; + +our ($opt_V, $opt_v); + +# default to 3GPP +my ($vendor) = 10415; +my ($vendor_name) = "3GPP"; + +sub convert_must_to_flags($) { + my ($allmust) = @_; + my ($mustfields) = ""; + $mustfields .= "AVP_FLAG_VENDOR |" if ($allmust =~ m/V/); + $mustfields .= "AVP_FLAG_MANDATORY |" if ($allmust =~ m/M/); + $mustfields =~ s/ \|$//; + return $mustfields; +} + +sub base_type($) { + my ($type) = @_; + + return "AVP_TYPE_GROUPED" if ($type =~ m/Grouped/); + return "AVP_TYPE_OCTETSTRING" if ($type =~ m/(Address|DiameterIdentity|DiameterURI|OctetString|IPFilterRule|Time|UTF8String)/); + return "AVP_TYPE_INTEGER32" if ($type =~ m/Enumerated|Integer32/); + return "AVP_TYPE_INTEGER64" if ($type =~ m/Integer64/); + return "AVP_TYPE_UNSIGNED32" if ($type =~ m/Unsigned32/); + return "AVP_TYPE_UNSIGNED64" if ($type =~ m/Unsigned64/); + return "AVP_TYPE_FLOAT32" if ($type =~ m/Float32/); + return "AVP_TYPE_FLOAT64" if ($type =~ m/Float64/); + + return "UNKNOWN TYPE: $type"; +} + +sub print_insert($$) { + my ($type, $name) = @_; + my $avp_type; + + if ($type =~ m/(Grouped|OctetString|Integer32|Integer64|Unsigned32|Unsigned64|Float32|Float64)/) { + $avp_type = "NULL"; + } elsif ($type =~ m/Enumerated/) { + print "\t\tstruct dict_object *type;\n"; + print "\t\tstruct dict_type_data tdata = { AVP_TYPE_INTEGER32, \"" . ($vendor_name ? "$vendor_name/" : "") ."Enumerated($name)\", NULL, NULL, NULL };\n"; + # XXX: add enumerated values + print "\t\tCHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);\n"; + $avp_type = "type"; + } else { + $avp_type = "${type}_type"; + } + + print "\t\tCHECK_dict_new(DICT_AVP, &data, $avp_type, NULL);\n"; +} + +sub usage($) { + die("usage: org_to_fd.pl [-V vendor_name -v vendor] [file ...]\n"); + exit(@_); +} + +getopts("V:v:") || usage(1); + +if (defined($opt_v)) { + $vendor = $opt_v; + if (!defined($opt_V)) { + usage(1); + } + $vendor_name = $opt_V; +} + +print "\t/* The following is created automatically. Do not modify. */\n"; +print "\t/* Changes will be lost during the next update. Modify the source org file instead. */\n\n"; + +while (<>) { + my ($dummy, $name, $code, $section, $type, $must, $may, $shouldnot, $mustnot, $encr) = split /\|/; + + next if ($name =~ m/Attribute Name/); + if ($name =~ m/ # (.*)/) { + print "\t/* $1 */\n"; + next; + } + + + $name =~ s/ *//g; + $code =~ s/ *//g; + $type =~ s/ *//g; + + print "\t/* $name */\n\t{\n\t\tstruct dict_avp_data data = {\n"; + print "\t\t\t$code,\t/* Code */\n"; + print "\t\t\t$vendor,\t/* Vendor */\n"; + print "\t\t\t\"$name\",\t/* Name */\n"; + print "\t\t\t" . convert_must_to_flags("$must, $mustnot") . ",\t/* Fixed flags */\n"; + print "\t\t\t" . convert_must_to_flags("$must") . ",\t/* Fixed flag values */\n"; + print "\t\t\t" . base_type($type) . "\t/* base type of data */\n"; + print "\t\t};\n"; + print_insert($type, $name); + print "\t};\n\n"; +} diff -r 6e7437162f26 -r bbc08d58325a extensions/CMakeLists.txt --- a/extensions/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -40,6 +40,8 @@ FD_EXTENSION_SUBDIR(dict_eap "Diameter EAP (RFC4072) Dictionary definitions" ON) FD_EXTENSION_SUBDIR(dict_dcca "Diameter CC (RFC4006) Dictionary definitions [incomplete]" ON) +FD_EXTENSION_SUBDIR(dict_dcca_3gpp "Diameter CC 3GPP Dictionary definitions [incomplete]" ON) +FD_EXTENSION_SUBDIR(dict_dcca_starent "Diameter CC Starent Dictionary definitions" ON) FD_EXTENSION_SUBDIR(dict_sip "Diameter SIP (RFC4740) Dictionary definitions" ON) diff -r 6e7437162f26 -r bbc08d58325a extensions/_sample/CMakeLists.txt --- a/extensions/_sample/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/_sample/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -1,15 +1,6 @@ # The sample extension PROJECT("Sample extension") -# Overwrite the debug level for the extension code if configured -OPTION(DEBUG_LEVEL__SAMPLE "Overwrite debug level for the extension _sample if defined (valid values: FULL, ANNOYING, CALL...)" OFF) -IF (DEBUG_LEVEL__SAMPLE) - ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL__SAMPLE}) -ENDIF (DEBUG_LEVEL__SAMPLE) -IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - MARK_AS_ADVANCED(DEBUG_LEVEL__SAMPLE) -ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - # Compile as a module FD_ADD_EXTENSION(dbg_sample sample.c hello.cpp fini.c) diff -r 6e7437162f26 -r bbc08d58325a extensions/acl_wl/CMakeLists.txt --- a/extensions/acl_wl/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/acl_wl/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -16,15 +16,6 @@ aw_conf.tab.h ) -# Overwrite the debug level for the extension code if configured -OPTION(DEBUG_LEVEL_ACL_WL "Overwrite debug level for the extension acl_wl if defined (valid values: FULL, ANNOYING, CALL...)" OFF) -IF (DEBUG_LEVEL_ACL_WL) - ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_ACL_WL}) -ENDIF (DEBUG_LEVEL_ACL_WL) -IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - MARK_AS_ADVANCED(DEBUG_LEVEL_ACL_WL) -ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - # Compile as a module FD_ADD_EXTENSION(acl_wl ${ACL_WL_SRC}) diff -r 6e7437162f26 -r bbc08d58325a extensions/acl_wl/aw_conf.y --- a/extensions/acl_wl/aw_conf.y Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/acl_wl/aw_conf.y Sun Mar 10 09:57:57 2013 +0100 @@ -34,7 +34,7 @@ *********************************************************************************************************/ /* Yacc extension's configuration parser. - * See doc/app_test.conf.sample for configuration file format + * See doc/acl_wl.conf.sample for configuration file format */ /* For development only : */ diff -r 6e7437162f26 -r bbc08d58325a extensions/app_diameap/diameap_tls.h --- a/extensions/app_diameap/diameap_tls.h Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/app_diameap/diameap_tls.h Sun Mar 10 09:57:57 2013 +0100 @@ -41,7 +41,9 @@ #include "diameap_defs.h" #include +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" #include #include diff -r 6e7437162f26 -r bbc08d58325a extensions/app_diameap/libcrypt.h --- a/extensions/app_diameap/libcrypt.h Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/app_diameap/libcrypt.h Sun Mar 10 09:57:57 2013 +0100 @@ -39,7 +39,9 @@ #ifndef LIBCRYPT_H_ #define LIBCRYPT_H_ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" #include /* EAP-TLS*/ diff -r 6e7437162f26 -r bbc08d58325a extensions/app_diameap/plugins/eap_md5/eap_md5.c --- a/extensions/app_diameap/plugins/eap_md5/eap_md5.c Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/app_diameap/plugins/eap_md5/eap_md5.c Sun Mar 10 09:57:57 2013 +0100 @@ -37,7 +37,9 @@ #include "../../plugins.h" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" #define CHALLENGE_LEN 16 diff -r 6e7437162f26 -r bbc08d58325a extensions/app_radgw/CMakeLists.txt --- a/extensions/app_radgw/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/app_radgw/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -2,16 +2,6 @@ PROJECT("RADIUS/Diameter extensible gateway application for freeDiameter" C) -# Overwrite the debug level for the extension code if configured -OPTION(DEBUG_LEVEL_APP_RADGW "Overwrite debug level for the extension app_radgw if defined (valid values: FULL, ANNOYING, CALL...)" OFF) -IF (DEBUG_LEVEL_APP_RADGW) - ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_APP_RADGW}) -ENDIF (DEBUG_LEVEL_APP_RADGW) -IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - MARK_AS_ADVANCED(DEBUG_LEVEL_APP_RADGW) -ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - - ########### Main app_radgw extension ############# # Parser files diff -r 6e7437162f26 -r bbc08d58325a extensions/app_sip/app_sip.h --- a/extensions/app_sip/app_sip.h Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/app_sip/app_sip.h Sun Mar 10 09:57:57 2013 +0100 @@ -38,7 +38,9 @@ #include #include #include +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" #include #include #include "md5.h" diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_3gpp/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_3gpp/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,13 @@ +# The dict_dcca_3gpp extension +PROJECT("Diameter DCCA (Diameter Credit Control Application) 3GPP dictionary definitions" C) + +# Compile as a module +FD_ADD_EXTENSION(dict_dcca_3gpp dict_dcca_3gpp.c) + + +#### +## INSTALL section ## + +INSTALL(TARGETS dict_dcca_3gpp + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-dictionary-rfc4006-extension-3gpp) diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_3gpp/dict_dcca_3gpp.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,7014 @@ +/* + * Dictionary definitions of objects specified in DCCA (Nokia, 3GPP). + */ +#include + + +/* The content of this file follows the same structure as dict_base_proto.c */ + +#define CHECK_dict_new( _type, _data, _parent, _ref ) \ + CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); + +#define CHECK_dict_search( _type, _criteria, _what, _result ) \ + CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); + +struct local_rules_definition { + char *avp_name; + enum rule_position position; + int min; + int max; +}; + +#define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 1 : 0 ) + +#define PARSE_loc_rules( _rulearray, _parent) { \ + int __ar; \ + for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) { \ + struct dict_rule_data __data = { NULL, \ + (_rulearray)[__ar].position, \ + 0, \ + (_rulearray)[__ar].min, \ + (_rulearray)[__ar].max}; \ + __data.rule_order = RULE_ORDER(__data.rule_position); \ + CHECK_FCT( fd_dict_search( \ + fd_g_config->cnf_dict, \ + DICT_AVP, \ + AVP_BY_NAME, \ + (_rulearray)[__ar].avp_name, \ + &__data.rule_avp, 0 ) ); \ + if ( !__data.rule_avp ) { \ + TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ + return ENOENT; \ + } \ + CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ + { \ + TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ + (_rulearray)[__ar].avp_name ); \ + return EINVAL; \ + } ); \ + } \ +} + +#define enumval_def_u32( _val_, _str_ ) \ + { _str_, { .u32 = _val_ }} + +#define enumval_def_os( _len_, _val_, _str_ ) \ + { _str_, { .os = { .data = (unsigned char *)_val_, .len = _len_ }}} + + +static int dict_dcca_3gpp_entry(char * conffile) +{ + /* Applications section */ + { + /* Create the vendors */ + { + struct dict_vendor_data vendor_data = { 10415, "3GPP" }; + CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); + } + + } + + + struct dict_object * Address_type; + struct dict_object * DiameterIdentity_type; + struct dict_object * DiameterURI_type; + struct dict_object * IPFilterRule_type; + struct dict_object * Time_type; + struct dict_object * UTF8String_type; + + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); + + /* The following is created automatically. Do not modify. */ + /* Changes will be lost during the next update. Modify the source org file instead. */ + + /* 3GPP 29.061-c00 (12.0.0 2012.12.20) */ + /* 3GPP 29.061 is not very clear and self-inconsistent about M */ + /* for this reason, other sources are assumed more trustworthy */ + /* M inconsistently specified */ + /* 3GPP-IMSI */ + { + struct dict_avp_data data = { + 1, /* Code */ + 10415, /* Vendor */ + "3GPP-IMSI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 29.061 says OctetString; dumps say UInt32; manually changed */ + /* 29.061 says MUST NOT M; dumps say MUST */ + /* 3GPP-Charging-Id */ + { + struct dict_avp_data data = { + 2, /* Code */ + 10415, /* Vendor */ + "3GPP-Charging-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; dumps say MUST */ + /* 3GPP-PDP-Type */ + { + struct dict_avp_data data = { + 3, /* Code */ + 10415, /* Vendor */ + "3GPP-PDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(3GPP-PDP-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* 3GPP-CG-Address */ + { + struct dict_avp_data data = { + 4, /* Code */ + 10415, /* Vendor */ + "3GPP-CG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-GPRS-Negotiated-QoS-Profile */ + { + struct dict_avp_data data = { + 5, /* Code */ + 10415, /* Vendor */ + "3GPP-GPRS-Negotiated-QoS-Profile", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* M inconsistently specified; old contrib/3gg says MUST NOT */ + /* 3GPP-SGSN-Address */ + { + struct dict_avp_data data = { + 6, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-GGSN-Address */ + { + struct dict_avp_data data = { + 7, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; dumps say MUST */ + /* 3GPP-IMSI-MCC-MNC */ + { + struct dict_avp_data data = { + 8, /* Code */ + 10415, /* Vendor */ + "3GPP-IMSI-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-GGSN-MCC-MNC */ + { + struct dict_avp_data data = { + 9, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-NSAPI */ + { + struct dict_avp_data data = { + 10, /* Code */ + 10415, /* Vendor */ + "3GPP-NSAPI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* added manually, missing in AVP table */ + /* 3GPP-Session-Stop-Indicator */ + { + struct dict_avp_data data = { + 11, /* Code */ + 10415, /* Vendor */ + "3GPP-Session-Stop-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-Selection-Mode */ + { + struct dict_avp_data data = { + 12, /* Code */ + 10415, /* Vendor */ + "3GPP-Selection-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-Charging-Characteristics */ + { + struct dict_avp_data data = { + 13, /* Code */ + 10415, /* Vendor */ + "3GPP-Charging-Characteristics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-CG-IPv6-Address */ + { + struct dict_avp_data data = { + 14, /* Code */ + 10415, /* Vendor */ + "3GPP-CG-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* M inconsistently specified */ + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-SGSN-IPv6-Address */ + { + struct dict_avp_data data = { + 15, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-GGSN-IPv6-Address */ + { + struct dict_avp_data data = { + 16, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-IPv6-DNS-Servers */ + { + struct dict_avp_data data = { + 17, /* Code */ + 10415, /* Vendor */ + "3GPP-IPv6-DNS-Servers", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ + /* 3GPP-SGSN-MCC-MNC */ + { + struct dict_avp_data data = { + 18, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* M inconsistently specified */ + /* 3GPP-IMEISV */ + { + struct dict_avp_data data = { + 20, /* Code */ + 10415, /* Vendor */ + "3GPP-IMEISV", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* M inconsistently specified */ + /* 3GPP-RAT-Type */ + { + struct dict_avp_data data = { + 21, /* Code */ + 10415, /* Vendor */ + "3GPP-RAT-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* M inconsistently specified */ + /* 3GPP-User-Location-Info */ + { + struct dict_avp_data data = { + 22, /* Code */ + 10415, /* Vendor */ + "3GPP-User-Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* M inconsistently specified */ + /* 3GPP-MS-TimeZone */ + { + struct dict_avp_data data = { + 23, /* Code */ + 10415, /* Vendor */ + "3GPP-MS-TimeZone", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-CAMEL-Charging-Info */ + { + struct dict_avp_data data = { + 24, /* Code */ + 10415, /* Vendor */ + "3GPP-CAMEL-Charging-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Packet-Filter */ + { + struct dict_avp_data data = { + 25, /* Code */ + 10415, /* Vendor */ + "3GPP-Packet-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Negotiated-DSCP */ + { + struct dict_avp_data data = { + 26, /* Code */ + 10415, /* Vendor */ + "3GPP-Negotiated-DSCP", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Allocate-IP-Type */ + { + struct dict_avp_data data = { + 27, /* Code */ + 10415, /* Vendor */ + "3GPP-Allocate-IP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* added manually, missing in AVP table */ + /* External-Identifier */ + { + struct dict_avp_data data = { + 28, /* Code */ + 10415, /* Vendor */ + "External-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI */ + { + struct dict_avp_data data = { + 900, /* Code */ + 10415, /* Vendor */ + "TMGI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Required-MBMS-Bearer-Capabilities */ + { + struct dict_avp_data data = { + 901, /* Code */ + 10415, /* Vendor */ + "Required-MBMS-Bearer-Capabilities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-StartStop-Indication */ + { + struct dict_avp_data data = { + 902, /* Code */ + 10415, /* Vendor */ + "MBMS-StartStop-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-StartStop-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Service-Area */ + { + struct dict_avp_data data = { + 903, /* Code */ + 10415, /* Vendor */ + "MBMS-Service-Area", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Session-Duration */ + { + struct dict_avp_data data = { + 904, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Duration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Alternative-APN */ + { + struct dict_avp_data data = { + 905, /* Code */ + 10415, /* Vendor */ + "Alternative-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-Service-Type */ + { + struct dict_avp_data data = { + 906, /* Code */ + 10415, /* Vendor */ + "MBMS-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-2G-3G-Indicator */ + { + struct dict_avp_data data = { + 907, /* Code */ + 10415, /* Vendor */ + "MBMS-2G-3G-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-2G-3G-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Session-Identity */ + { + struct dict_avp_data data = { + 908, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAI */ + { + struct dict_avp_data data = { + 909, /* Code */ + 10415, /* Vendor */ + "RAI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Additional-MBMS-Trace-Info */ + { + struct dict_avp_data data = { + 910, /* Code */ + 10415, /* Vendor */ + "Additional-MBMS-Trace-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Time-To-Data-Transfer */ + { + struct dict_avp_data data = { + 911, /* Code */ + 10415, /* Vendor */ + "MBMS-Time-To-Data-Transfer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Session-Repetition-Number */ + { + struct dict_avp_data data = { + 912, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Repetition-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Required-QoS */ + { + struct dict_avp_data data = { + 913, /* Code */ + 10415, /* Vendor */ + "MBMS-Required-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-Counting-Information */ + { + struct dict_avp_data data = { + 914, /* Code */ + 10415, /* Vendor */ + "MBMS-Counting-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-Counting-Information)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-User-Data-Mode-Indication */ + { + struct dict_avp_data data = { + 915, /* Code */ + 10415, /* Vendor */ + "MBMS-User-Data-Mode-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-User-Data-Mode-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-GGSN-Address */ + { + struct dict_avp_data data = { + 916, /* Code */ + 10415, /* Vendor */ + "MBMS-GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-GGSN-IPv6-Address */ + { + struct dict_avp_data data = { + 917, /* Code */ + 10415, /* Vendor */ + "MBMS-GGSN-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-BMSC-SSM-IP-Address */ + { + struct dict_avp_data data = { + 918, /* Code */ + 10415, /* Vendor */ + "MBMS-BMSC-SSM-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-BMSC-SSM-IPv6-Address */ + { + struct dict_avp_data data = { + 919, /* Code */ + 10415, /* Vendor */ + "MBMS-BMSC-SSM-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Flow-Identifier */ + { + struct dict_avp_data data = { + 920, /* Code */ + 10415, /* Vendor */ + "MBMS-Flow-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CN-IP-Multicast-Distribution */ + { + struct dict_avp_data data = { + 921, /* Code */ + 10415, /* Vendor */ + "CN-IP-Multicast-Distribution", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CN-IP-Multicast-Distribution)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-HC-Indicator */ + { + struct dict_avp_data data = { + 922, /* Code */ + 10415, /* Vendor */ + "MBMS-HC-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-HC-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* 3GPP 29.212-b70 (11.7.0 2012.12.20) */ + /* ADC-Revalidation-Time */ + { + struct dict_avp_data data = { + 2801, /* Code */ + 10415, /* Vendor */ + "ADC-Revalidation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* ADC-Rule-Install */ + { + struct dict_avp_data data = { + 1092, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ADC-Rule-Remove */ + { + struct dict_avp_data data = { + 1093, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ADC-Rule-Definition */ + { + struct dict_avp_data data = { + 1094, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ADC-Rule-Base-Name */ + { + struct dict_avp_data data = { + 1095, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* ADC-Rule-Name */ + { + struct dict_avp_data data = { + 1096, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ADC-Rule-Report */ + { + struct dict_avp_data data = { + 1097, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Application-Detection-Information */ + { + struct dict_avp_data data = { + 1098, /* Code */ + 10415, /* Vendor */ + "Application-Detection-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Network-Charging-Identifier-Gx */ + { + struct dict_avp_data data = { + 1022, /* Code */ + 10415, /* Vendor */ + "Access-Network-Charging-Identifier-Gx", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Allocation-Retention-Priority */ + { + struct dict_avp_data data = { + 1034, /* Code */ + 10415, /* Vendor */ + "Allocation-Retention-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AN-GW-Address */ + { + struct dict_avp_data data = { + 1050, /* Code */ + 10415, /* Vendor */ + "AN-GW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* APN-Aggregate-Max-Bitrate-DL */ + { + struct dict_avp_data data = { + 1040, /* Code */ + 10415, /* Vendor */ + "APN-Aggregate-Max-Bitrate-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Aggregate-Max-Bitrate-UL */ + { + struct dict_avp_data data = { + 1041, /* Code */ + 10415, /* Vendor */ + "APN-Aggregate-Max-Bitrate-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Control-Mode */ + { + struct dict_avp_data data = { + 1023, /* Code */ + 10415, /* Vendor */ + "Bearer-Control-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Control-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Bearer-Identifier */ + { + struct dict_avp_data data = { + 1020, /* Code */ + 10415, /* Vendor */ + "Bearer-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Operation */ + { + struct dict_avp_data data = { + 1021, /* Code */ + 10415, /* Vendor */ + "Bearer-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Bearer-Usage */ + { + struct dict_avp_data data = { + 1000, /* Code */ + 10415, /* Vendor */ + "Bearer-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Usage)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charging-Rule-Install */ + { + struct dict_avp_data data = { + 1001, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Remove */ + { + struct dict_avp_data data = { + 1002, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Definition */ + { + struct dict_avp_data data = { + 1003, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Base-Name */ + { + struct dict_avp_data data = { + 1004, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Charging-Rule-Name */ + { + struct dict_avp_data data = { + 1005, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Report */ + { + struct dict_avp_data data = { + 1018, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Correlation-Indicator */ + { + struct dict_avp_data data = { + 1073, /* Code */ + 10415, /* Vendor */ + "Charging-Correlation-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Charging-Correlation-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CoA-IP-Address */ + { + struct dict_avp_data data = { + 1035, /* Code */ + 10415, /* Vendor */ + "CoA-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* CoA-Information */ + { + struct dict_avp_data data = { + 1039, /* Code */ + 10415, /* Vendor */ + "CoA-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CSG-Information-Reporting */ + { + struct dict_avp_data data = { + 1071, /* Code */ + 10415, /* Vendor */ + "CSG-Information-Reporting", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CSG-Information-Reporting)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Default-EPS-Bearer-QoS */ + { + struct dict_avp_data data = { + 1049, /* Code */ + 10415, /* Vendor */ + "Default-EPS-Bearer-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Report-Indication */ + { + struct dict_avp_data data = { + 1033, /* Code */ + 10415, /* Vendor */ + "Event-Report-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Trigger */ + { + struct dict_avp_data data = { + 1006, /* Code */ + 10415, /* Vendor */ + "Event-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Event-Trigger)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Flow-Direction */ + { + struct dict_avp_data data = { + 1080, /* Code */ + 10415, /* Vendor */ + "Flow-Direction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Flow-Direction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Flow-Information */ + { + struct dict_avp_data data = { + 1058, /* Code */ + 10415, /* Vendor */ + "Flow-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Label */ + { + struct dict_avp_data data = { + 1057, /* Code */ + 10415, /* Vendor */ + "Flow-Label", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IP-CAN-Type */ + { + struct dict_avp_data data = { + 1027, /* Code */ + 10415, /* Vendor */ + "IP-CAN-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(IP-CAN-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Guaranteed-Bitrate-DL */ + { + struct dict_avp_data data = { + 1025, /* Code */ + 10415, /* Vendor */ + "Guaranteed-Bitrate-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Guaranteed-Bitrate-UL */ + { + struct dict_avp_data data = { + 1026, /* Code */ + 10415, /* Vendor */ + "Guaranteed-Bitrate-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* HeNB-BBF-FQDN */ + { + struct dict_avp_data data = { + 2803, /* Code */ + 10415, /* Vendor */ + "HeNB-BBF-FQDN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* HeNB-Local-IP-Address */ + { + struct dict_avp_data data = { + 2804, /* Code */ + 10415, /* Vendor */ + "HeNB-Local-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Metering-Method */ + { + struct dict_avp_data data = { + 1007, /* Code */ + 10415, /* Vendor */ + "Metering-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Metering-Method)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Monitoring-Key */ + { + struct dict_avp_data data = { + 1066, /* Code */ + 10415, /* Vendor */ + "Monitoring-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Mute-Notification */ + { + struct dict_avp_data data = { + 2809, /* Code */ + 10415, /* Vendor */ + "Mute-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Mute-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Monitoring-Time */ + { + struct dict_avp_data data = { + 2810, /* Code */ + 10415, /* Vendor */ + "Monitoring-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Network-Request-Support */ + { + struct dict_avp_data data = { + 1024, /* Code */ + 10415, /* Vendor */ + "Network-Request-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Network-Request-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Offline */ + { + struct dict_avp_data data = { + 1008, /* Code */ + 10415, /* Vendor */ + "Offline", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Offline)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Online */ + { + struct dict_avp_data data = { + 1009, /* Code */ + 10415, /* Vendor */ + "Online", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Online)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Packet-Filter-Content */ + { + struct dict_avp_data data = { + 1059, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Content", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Packet-Filter-Identifier */ + { + struct dict_avp_data data = { + 1060, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Packet-Filter-Information */ + { + struct dict_avp_data data = { + 1061, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Packet-Filter-Operation */ + { + struct dict_avp_data data = { + 1062, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Packet-Filter-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Packet-Filter-Usage */ + { + struct dict_avp_data data = { + 1072, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Packet-Filter-Usage)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PDN-Connection-ID */ + { + struct dict_avp_data data = { + 1065, /* Code */ + 10415, /* Vendor */ + "PDN-Connection-ID", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Precedence */ + { + struct dict_avp_data data = { + 1010, /* Code */ + 10415, /* Vendor */ + "Precedence", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Pre-emption-Capability */ + { + struct dict_avp_data data = { + 1047, /* Code */ + 10415, /* Vendor */ + "Pre-emption-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Pre-emption-Capability)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Pre-emption-Vulnerability */ + { + struct dict_avp_data data = { + 1048, /* Code */ + 10415, /* Vendor */ + "Pre-emption-Vulnerability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Pre-emption-Vulnerability)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Priority-Level */ + { + struct dict_avp_data data = { + 1046, /* Code */ + 10415, /* Vendor */ + "Priority-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Redirect-Information */ + { + struct dict_avp_data data = { + 1085, /* Code */ + 10415, /* Vendor */ + "Redirect-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Redirect-Support */ + { + struct dict_avp_data data = { + 1086, /* Code */ + 10415, /* Vendor */ + "Redirect-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Redirect-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reporting-Level */ + { + struct dict_avp_data data = { + 1011, /* Code */ + 10415, /* Vendor */ + "Reporting-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Reporting-Level)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Routing-Filter */ + { + struct dict_avp_data data = { + 1078, /* Code */ + 10415, /* Vendor */ + "Routing-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-IP-Address */ + { + struct dict_avp_data data = { + 1079, /* Code */ + 10415, /* Vendor */ + "Routing-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Routing-Rule-Definition */ + { + struct dict_avp_data data = { + 1076, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Identifier */ + { + struct dict_avp_data data = { + 1077, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Install */ + { + struct dict_avp_data data = { + 1081, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Remove */ + { + struct dict_avp_data data = { + 1075, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PCC-Rule-Status */ + { + struct dict_avp_data data = { + 1019, /* Code */ + 10415, /* Vendor */ + "PCC-Rule-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PCC-Rule-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Session-Release-Cause */ + { + struct dict_avp_data data = { + 1045, /* Code */ + 10415, /* Vendor */ + "Session-Release-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Release-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* TDF-Information */ + { + struct dict_avp_data data = { + 1087, /* Code */ + 10415, /* Vendor */ + "TDF-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Application-Identifier */ + { + struct dict_avp_data data = { + 1088, /* Code */ + 10415, /* Vendor */ + "TDF-Application-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Application-Instance-Identifier */ + { + struct dict_avp_data data = { + 2802, /* Code */ + 10415, /* Vendor */ + "TDF-Application-Instance-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Destination-Host */ + { + struct dict_avp_data data = { + 1089, /* Code */ + 10415, /* Vendor */ + "TDF-Destination-Host", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* TDF-Destination-Realm */ + { + struct dict_avp_data data = { + 1090, /* Code */ + 10415, /* Vendor */ + "TDF-Destination-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* TDF-IP-address */ + { + struct dict_avp_data data = { + 1091, /* Code */ + 10415, /* Vendor */ + "TDF-IP-address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* QoS-Class-Identifier */ + { + struct dict_avp_data data = { + 1028, /* Code */ + 10415, /* Vendor */ + "QoS-Class-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(QoS-Class-Identifier)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* QoS-Information */ + { + struct dict_avp_data data = { + 1016, /* Code */ + 10415, /* Vendor */ + "QoS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Negotiation */ + { + struct dict_avp_data data = { + 1029, /* Code */ + 10415, /* Vendor */ + "QoS-Negotiation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(QoS-Negotiation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Qos-Upgrade */ + { + struct dict_avp_data data = { + 1030, /* Code */ + 10415, /* Vendor */ + "Qos-Upgrade", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Qos-Upgrade)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PS-to-CS-Session-Continuity */ + { + struct dict_avp_data data = { + 1099, /* Code */ + 10415, /* Vendor */ + "PS-to-CS-Session-Continuity", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PS-to-CS-Session-Continuity)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Resource-Allocation-Notification */ + { + struct dict_avp_data data = { + 1063, /* Code */ + 10415, /* Vendor */ + "Resource-Allocation-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Resource-Allocation-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Rule-Failure-Code */ + { + struct dict_avp_data data = { + 1031, /* Code */ + 10415, /* Vendor */ + "Rule-Failure-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Rule-Failure-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Security-Parameter-Index */ + { + struct dict_avp_data data = { + 1056, /* Code */ + 10415, /* Vendor */ + "Security-Parameter-Index", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TFT-Filter */ + { + struct dict_avp_data data = { + 1012, /* Code */ + 10415, /* Vendor */ + "TFT-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* TFT-Packet-Filter-Information */ + { + struct dict_avp_data data = { + 1013, /* Code */ + 10415, /* Vendor */ + "TFT-Packet-Filter-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ToS-Traffic-Class */ + { + struct dict_avp_data data = { + 1014, /* Code */ + 10415, /* Vendor */ + "ToS-Traffic-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tunnel-Header-Filter */ + { + struct dict_avp_data data = { + 1036, /* Code */ + 10415, /* Vendor */ + "Tunnel-Header-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Tunnel-Header-Length */ + { + struct dict_avp_data data = { + 1037, /* Code */ + 10415, /* Vendor */ + "Tunnel-Header-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tunnel-Information */ + { + struct dict_avp_data data = { + 1038, /* Code */ + 10415, /* Vendor */ + "Tunnel-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAT-Type */ + { + struct dict_avp_data data = { + 1032, /* Code */ + 10415, /* Vendor */ + "RAT-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(RAT-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Revalidation-Time */ + { + struct dict_avp_data data = { + 1042, /* Code */ + 10415, /* Vendor */ + "Revalidation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Rule-Activation-Time */ + { + struct dict_avp_data data = { + 1043, /* Code */ + 10415, /* Vendor */ + "Rule-Activation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* UDP-Source-Port */ + { + struct dict_avp_data data = { + 2806, /* Code */ + 10415, /* Vendor */ + "UDP-Source-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Local-IP-Address */ + { + struct dict_avp_data data = { + 2805, /* Code */ + 10415, /* Vendor */ + "UE-Local-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Usage-Monitoring-Information */ + { + struct dict_avp_data data = { + 1067, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rule-DeActivation-Time */ + { + struct dict_avp_data data = { + 1044, /* Code */ + 10415, /* Vendor */ + "Rule-DeActivation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Usage-Monitoring-Level */ + { + struct dict_avp_data data = { + 1068, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Level)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Usage-Monitoring-Report */ + { + struct dict_avp_data data = { + 1069, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Report)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Usage-Monitoring-Support */ + { + struct dict_avp_data data = { + 1070, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* QoS-Rule-Install */ + { + struct dict_avp_data data = { + 1051, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Remove */ + { + struct dict_avp_data data = { + 1052, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Definition */ + { + struct dict_avp_data data = { + 1053, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Name */ + { + struct dict_avp_data data = { + 1054, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Base-Name */ + { + struct dict_avp_data data = { + 1074, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* QoS-Rule-Report */ + { + struct dict_avp_data data = { + 1055, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Session-Linking-Indicator */ + { + struct dict_avp_data data = { + 1064, /* Code */ + 10415, /* Vendor */ + "Session-Linking-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Linking-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CS-Service-Qos-Request-Identifier */ + { + struct dict_avp_data data = { + 2807, /* Code */ + 10415, /* Vendor */ + "CS-Service-Qos-Request-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CS-Service-QoS-Request-Operation */ + { + struct dict_avp_data data = { + 2808, /* Code */ + 10415, /* Vendor */ + "CS-Service-QoS-Request-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CS-Service-QoS-Request-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* 3GPP 29.229-b20 (11.2.0 2012.12.21) */ + /* Associated-Identities */ + { + struct dict_avp_data data = { + 632, /* Code */ + 10415, /* Vendor */ + "Associated-Identities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Associated-Registered-Identities */ + { + struct dict_avp_data data = { + 647, /* Code */ + 10415, /* Vendor */ + "Associated-Registered-Identities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Call-ID-SIP-Header */ + { + struct dict_avp_data data = { + 643, /* Code */ + 10415, /* Vendor */ + "Call-ID-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Information */ + { + struct dict_avp_data data = { + 618, /* Code */ + 10415, /* Vendor */ + "Charging-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Confidentiality-Key */ + { + struct dict_avp_data data = { + 625, /* Code */ + 10415, /* Vendor */ + "Confidentiality-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Contact */ + { + struct dict_avp_data data = { + 641, /* Code */ + 10415, /* Vendor */ + "Contact", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Deregistration-Reason */ + { + struct dict_avp_data data = { + 615, /* Code */ + 10415, /* Vendor */ + "Deregistration-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Digest-Algorithm */ + { + struct dict_avp_data data = { + 111, /* Code */ + 10415, /* Vendor */ + "Digest-Algorithm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Digest-HA1 */ + { + struct dict_avp_data data = { + 121, /* Code */ + 10415, /* Vendor */ + "Digest-HA1", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Digest-QoP */ + { + struct dict_avp_data data = { + 110, /* Code */ + 10415, /* Vendor */ + "Digest-QoP", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Digest-Realm */ + { + struct dict_avp_data data = { + 104, /* Code */ + 10415, /* Vendor */ + "Digest-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Feature-List */ + { + struct dict_avp_data data = { + 630, /* Code */ + 10415, /* Vendor */ + "Feature-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Feature-List-ID */ + { + struct dict_avp_data data = { + 629, /* Code */ + 10415, /* Vendor */ + "Feature-List-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* From-SIP-Header */ + { + struct dict_avp_data data = { + 644, /* Code */ + 10415, /* Vendor */ + "From-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Identity-with-Emergency-Registration */ + { + struct dict_avp_data data = { + 651, /* Code */ + 10415, /* Vendor */ + "Identity-with-Emergency-Registration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Integrity-Key */ + { + struct dict_avp_data data = { + 626, /* Code */ + 10415, /* Vendor */ + "Integrity-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LIA-Flags */ + { + struct dict_avp_data data = { + 653, /* Code */ + 10415, /* Vendor */ + "LIA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Loose-Route-Indication */ + { + struct dict_avp_data data = { + 638, /* Code */ + 10415, /* Vendor */ + "Loose-Route-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Loose-Route-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Mandatory-Capability */ + { + struct dict_avp_data data = { + 604, /* Code */ + 10415, /* Vendor */ + "Mandatory-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Multiple-Registration-Indication */ + { + struct dict_avp_data data = { + 648, /* Code */ + 10415, /* Vendor */ + "Multiple-Registration-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Multiple-Registration-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Optional-Capability */ + { + struct dict_avp_data data = { + 605, /* Code */ + 10415, /* Vendor */ + "Optional-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originating-Request */ + { + struct dict_avp_data data = { + 633, /* Code */ + 10415, /* Vendor */ + "Originating-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Originating-Request)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Path */ + { + struct dict_avp_data data = { + 640, /* Code */ + 10415, /* Vendor */ + "Path", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Primary-Charging-Collection-Function-Name */ + { + struct dict_avp_data data = { + 621, /* Code */ + 10415, /* Vendor */ + "Primary-Charging-Collection-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Primary-Event-Charging-Function-Name */ + { + struct dict_avp_data data = { + 619, /* Code */ + 10415, /* Vendor */ + "Primary-Event-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Priviledged-Sender-Indication */ + { + struct dict_avp_data data = { + 652, /* Code */ + 10415, /* Vendor */ + "Priviledged-Sender-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Priviledged-Sender-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Public-Identity */ + { + struct dict_avp_data data = { + 601, /* Code */ + 10415, /* Vendor */ + "Public-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Reason-Code */ + { + struct dict_avp_data data = { + 616, /* Code */ + 10415, /* Vendor */ + "Reason-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Reason-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reason-Info */ + { + struct dict_avp_data data = { + 617, /* Code */ + 10415, /* Vendor */ + "Reason-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Record-Route */ + { + struct dict_avp_data data = { + 646, /* Code */ + 10415, /* Vendor */ + "Record-Route", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Restoration-Info */ + { + struct dict_avp_data data = { + 649, /* Code */ + 10415, /* Vendor */ + "Restoration-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCSCF-Restoration-Info */ + { + struct dict_avp_data data = { + 639, /* Code */ + 10415, /* Vendor */ + "SCSCF-Restoration-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Auth-Data-Item */ + { + struct dict_avp_data data = { + 612, /* Code */ + 10415, /* Vendor */ + "SIP-Auth-Data-Item", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authenticate */ + { + struct dict_avp_data data = { + 609, /* Code */ + 10415, /* Vendor */ + "SIP-Authenticate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authentication-Context */ + { + struct dict_avp_data data = { + 611, /* Code */ + 10415, /* Vendor */ + "SIP-Authentication-Context", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authentication-Scheme */ + { + struct dict_avp_data data = { + 608, /* Code */ + 10415, /* Vendor */ + "SIP-Authentication-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIP-Authorization */ + { + struct dict_avp_data data = { + 610, /* Code */ + 10415, /* Vendor */ + "SIP-Authorization", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Digest-Authenticate */ + { + struct dict_avp_data data = { + 635, /* Code */ + 10415, /* Vendor */ + "SIP-Digest-Authenticate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Item-Number */ + { + struct dict_avp_data data = { + 613, /* Code */ + 10415, /* Vendor */ + "SIP-Item-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Number-Auth-Items */ + { + struct dict_avp_data data = { + 607, /* Code */ + 10415, /* Vendor */ + "SIP-Number-Auth-Items", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Secondary-Charging-Collection-Function-Name */ + { + struct dict_avp_data data = { + 622, /* Code */ + 10415, /* Vendor */ + "Secondary-Charging-Collection-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Secondary-Event-Charging-Function-Name */ + { + struct dict_avp_data data = { + 620, /* Code */ + 10415, /* Vendor */ + "Secondary-Event-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Server-Assignment-Type */ + { + struct dict_avp_data data = { + 614, /* Code */ + 10415, /* Vendor */ + "Server-Assignment-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Server-Assignment-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Server-Capabilities */ + { + struct dict_avp_data data = { + 603, /* Code */ + 10415, /* Vendor */ + "Server-Capabilities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Server-Name */ + { + struct dict_avp_data data = { + 602, /* Code */ + 10415, /* Vendor */ + "Server-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Session-Priority */ + { + struct dict_avp_data data = { + 650, /* Code */ + 10415, /* Vendor */ + "Session-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Subscription-Info */ + { + struct dict_avp_data data = { + 642, /* Code */ + 10415, /* Vendor */ + "Subscription-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Supported-Applications */ + { + struct dict_avp_data data = { + 631, /* Code */ + 10415, /* Vendor */ + "Supported-Applications", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Supported-Features */ + { + struct dict_avp_data data = { + 628, /* Code */ + 10415, /* Vendor */ + "Supported-Features", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* To-SIP-Header */ + { + struct dict_avp_data data = { + 645, /* Code */ + 10415, /* Vendor */ + "To-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UAR-Flags */ + { + struct dict_avp_data data = { + 637, /* Code */ + 10415, /* Vendor */ + "UAR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Authorization-Type */ + { + struct dict_avp_data data = { + 623, /* Code */ + 10415, /* Vendor */ + "User-Authorization-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(User-Authorization-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* User-Data */ + { + struct dict_avp_data data = { + 606, /* Code */ + 10415, /* Vendor */ + "User-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Data-Already-Available */ + { + struct dict_avp_data data = { + 624, /* Code */ + 10415, /* Vendor */ + "User-Data-Already-Available", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(User-Data-Already-Available)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Visited-Network-Identifier */ + { + struct dict_avp_data data = { + 600, /* Code */ + 10415, /* Vendor */ + "Visited-Network-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Wildcarded-Public-Identity */ + { + struct dict_avp_data data = { + 634, /* Code */ + 10415, /* Vendor */ + "Wildcarded-Public-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 3GPP 32.299-b60 (11.6.0 2012.12.21) */ + /* AF-Correlation-Information */ + { + struct dict_avp_data data = { + 1276, /* Code */ + 10415, /* Vendor */ + "AF-Correlation-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Network-Information */ + { + struct dict_avp_data data = { + 1263, /* Code */ + 10415, /* Vendor */ + "Access-Network-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Transfer-Information */ + { + struct dict_avp_data data = { + 2709, /* Code */ + 10415, /* Vendor */ + "Access-Transfer-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Transfer-Type */ + { + struct dict_avp_data data = { + 2710, /* Code */ + 10415, /* Vendor */ + "Access-Transfer-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Access-Transfer-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Account-Expiration */ + { + struct dict_avp_data data = { + 2309, /* Code */ + 10415, /* Vendor */ + "Account-Expiration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Accumulated-Cost */ + { + struct dict_avp_data data = { + 2052, /* Code */ + 10415, /* Vendor */ + "Accumulated-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Adaptations */ + { + struct dict_avp_data data = { + 1217, /* Code */ + 10415, /* Vendor */ + "Adaptations", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Adaptations)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Additional-Content-Information */ + { + struct dict_avp_data data = { + 1207, /* Code */ + 10415, /* Vendor */ + "Additional-Content-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Additional-Type-Information */ + { + struct dict_avp_data data = { + 1205, /* Code */ + 10415, /* Vendor */ + "Additional-Type-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Address-Data */ + { + struct dict_avp_data data = { + 897, /* Code */ + 10415, /* Vendor */ + "Address-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Address-Domain */ + { + struct dict_avp_data data = { + 898, /* Code */ + 10415, /* Vendor */ + "Address-Domain", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Address-Type */ + { + struct dict_avp_data data = { + 899, /* Code */ + 10415, /* Vendor */ + "Address-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Address-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Addressee-Type */ + { + struct dict_avp_data data = { + 1208, /* Code */ + 10415, /* Vendor */ + "Addressee-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Addressee-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Alternate-Charged-Party-Address */ + { + struct dict_avp_data data = { + 1280, /* Code */ + 10415, /* Vendor */ + "Alternate-Charged-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* AoC-Cost-Information */ + { + struct dict_avp_data data = { + 2053, /* Code */ + 10415, /* Vendor */ + "AoC-Cost-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Format */ + { + struct dict_avp_data data = { + 2310, /* Code */ + 10415, /* Vendor */ + "AoC-Format", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(AoC-Format)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Information */ + { + struct dict_avp_data data = { + 2054, /* Code */ + 10415, /* Vendor */ + "AoC-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Request-Type */ + { + struct dict_avp_data data = { + 2055, /* Code */ + 10415, /* Vendor */ + "AoC-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(AoC-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Service */ + { + struct dict_avp_data data = { + 2311, /* Code */ + 10415, /* Vendor */ + "AoC-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Service-Obligatory-Type */ + { + struct dict_avp_data data = { + 2312, /* Code */ + 10415, /* Vendor */ + "AoC-Service-Obligatory-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(AoC-Service-Obligatory-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Service-Type */ + { + struct dict_avp_data data = { + 2313, /* Code */ + 10415, /* Vendor */ + "AoC-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(AoC-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Subscription-Information */ + { + struct dict_avp_data data = { + 2314, /* Code */ + 10415, /* Vendor */ + "AoC-Subscription-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Applic-ID */ + { + struct dict_avp_data data = { + 1218, /* Code */ + 10415, /* Vendor */ + "Applic-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Application-Server */ + { + struct dict_avp_data data = { + 836, /* Code */ + 10415, /* Vendor */ + "Application-Server", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Application-Server-Information */ + { + struct dict_avp_data data = { + 850, /* Code */ + 10415, /* Vendor */ + "Application-Server-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Application-provided-called-party-address */ + { + struct dict_avp_data data = { + 837, /* Code */ + 10415, /* Vendor */ + "Application-provided-called-party-address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Associated-Party-Address */ + { + struct dict_avp_data data = { + 2035, /* Code */ + 10415, /* Vendor */ + "Associated-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Associated-URI */ + { + struct dict_avp_data data = { + 856, /* Code */ + 10415, /* Vendor */ + "Associated-URI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Aux-Applic-Info */ + { + struct dict_avp_data data = { + 1219, /* Code */ + 10415, /* Vendor */ + "Aux-Applic-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Base-Time-Interval */ + { + struct dict_avp_data data = { + 1265, /* Code */ + 10415, /* Vendor */ + "Base-Time-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Service */ + { + struct dict_avp_data data = { + 854, /* Code */ + 10415, /* Vendor */ + "Bearer-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CG-Address */ + { + struct dict_avp_data data = { + 846, /* Code */ + 10415, /* Vendor */ + "CG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* CSG-Access-Mode */ + { + struct dict_avp_data data = { + 2317, /* Code */ + 10415, /* Vendor */ + "CSG-Access-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CSG-Access-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CSG-Membership-Indication */ + { + struct dict_avp_data data = { + 2318, /* Code */ + 10415, /* Vendor */ + "CSG-Membership-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CSG-Membership-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CUG-Information */ + { + struct dict_avp_data data = { + 2304, /* Code */ + 10415, /* Vendor */ + "CUG-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Called-Asserted-Identity */ + { + struct dict_avp_data data = { + 1250, /* Code */ + 10415, /* Vendor */ + "Called-Asserted-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Called-Party-Address */ + { + struct dict_avp_data data = { + 832, /* Code */ + 10415, /* Vendor */ + "Called-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Calling-Party-Address */ + { + struct dict_avp_data data = { + 831, /* Code */ + 10415, /* Vendor */ + "Calling-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Carrier-Select-Routing-Information */ + { + struct dict_avp_data data = { + 2023, /* Code */ + 10415, /* Vendor */ + "Carrier-Select-Routing-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Cause-Code */ + { + struct dict_avp_data data = { + 861, /* Code */ + 10415, /* Vendor */ + "Cause-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-Condition */ + { + struct dict_avp_data data = { + 2037, /* Code */ + 10415, /* Vendor */ + "Change-Condition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-Time */ + { + struct dict_avp_data data = { + 2038, /* Code */ + 10415, /* Vendor */ + "Change-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Charge-Reason-Code */ + { + struct dict_avp_data data = { + 2118, /* Code */ + 10415, /* Vendor */ + "Charge-Reason-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Charge-Reason-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charged-Party */ + { + struct dict_avp_data data = { + 857, /* Code */ + 10415, /* Vendor */ + "Charged-Party", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Charging-Characteristics-Selection-Mode */ + { + struct dict_avp_data data = { + 2066, /* Code */ + 10415, /* Vendor */ + "Charging-Characteristics-Selection-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Charging-Characteristics-Selection-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Class-Identifier */ + { + struct dict_avp_data data = { + 1214, /* Code */ + 10415, /* Vendor */ + "Class-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Class-Identifier)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Client-Address */ + { + struct dict_avp_data data = { + 2018, /* Code */ + 10415, /* Vendor */ + "Client-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Content-Class */ + { + struct dict_avp_data data = { + 1220, /* Code */ + 10415, /* Vendor */ + "Content-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Content-Class)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Content-Disposition */ + { + struct dict_avp_data data = { + 828, /* Code */ + 10415, /* Vendor */ + "Content-Disposition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Content-Length */ + { + struct dict_avp_data data = { + 827, /* Code */ + 10415, /* Vendor */ + "Content-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-Size */ + { + struct dict_avp_data data = { + 1206, /* Code */ + 10415, /* Vendor */ + "Content-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-Type */ + { + struct dict_avp_data data = { + 826, /* Code */ + 10415, /* Vendor */ + "Content-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Current-Tariff */ + { + struct dict_avp_data data = { + 2056, /* Code */ + 10415, /* Vendor */ + "Current-Tariff", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DRM-Content */ + { + struct dict_avp_data data = { + 1221, /* Code */ + 10415, /* Vendor */ + "DRM-Content", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(DRM-Content)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Data-Coding-Scheme */ + { + struct dict_avp_data data = { + 2001, /* Code */ + 10415, /* Vendor */ + "Data-Coding-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Deferred-Location-Event-Type */ + { + struct dict_avp_data data = { + 1230, /* Code */ + 10415, /* Vendor */ + "Deferred-Location-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Delivery-Report-Requested */ + { + struct dict_avp_data data = { + 1216, /* Code */ + 10415, /* Vendor */ + "Delivery-Report-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Delivery-Report-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Destination-Interface */ + { + struct dict_avp_data data = { + 2002, /* Code */ + 10415, /* Vendor */ + "Destination-Interface", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Diagnostics */ + { + struct dict_avp_data data = { + 2039, /* Code */ + 10415, /* Vendor */ + "Diagnostics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Domain-Name */ + { + struct dict_avp_data data = { + 1200, /* Code */ + 10415, /* Vendor */ + "Domain-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Dynamic-Address-Flag */ + { + struct dict_avp_data data = { + 2051, /* Code */ + 10415, /* Vendor */ + "Dynamic-Address-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Dynamic-Address-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Dynamic-Address-Flag-Extension */ + { + struct dict_avp_data data = { + 2068, /* Code */ + 10415, /* Vendor */ + "Dynamic-Address-Flag-Extension", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Dynamic-Address-Flag-Extension)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Early-Media-Description */ + { + struct dict_avp_data data = { + 1272, /* Code */ + 10415, /* Vendor */ + "Early-Media-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Envelope */ + { + struct dict_avp_data data = { + 1266, /* Code */ + 10415, /* Vendor */ + "Envelope", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Envelope-End-Time */ + { + struct dict_avp_data data = { + 1267, /* Code */ + 10415, /* Vendor */ + "Envelope-End-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Envelope-Reporting */ + { + struct dict_avp_data data = { + 1268, /* Code */ + 10415, /* Vendor */ + "Envelope-Reporting", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Envelope-Reporting)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Envelope-Start-Time */ + { + struct dict_avp_data data = { + 1269, /* Code */ + 10415, /* Vendor */ + "Envelope-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Event */ + { + struct dict_avp_data data = { + 825, /* Code */ + 10415, /* Vendor */ + "Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Event-Charging-TimeStamp */ + { + struct dict_avp_data data = { + 1258, /* Code */ + 10415, /* Vendor */ + "Event-Charging-TimeStamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Event-Type */ + { + struct dict_avp_data data = { + 823, /* Code */ + 10415, /* Vendor */ + "Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Expires */ + { + struct dict_avp_data data = { + 888, /* Code */ + 10415, /* Vendor */ + "Expires", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* File-Repair-Supported */ + { + struct dict_avp_data data = { + 1224, /* Code */ + 10415, /* Vendor */ + "File-Repair-Supported", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(File-Repair-Supported)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* From-Address */ + { + struct dict_avp_data data = { + 2708, /* Code */ + 10415, /* Vendor */ + "From-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* GGSN-Address */ + { + struct dict_avp_data data = { + 847, /* Code */ + 10415, /* Vendor */ + "GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* IMS-Application-Reference-Identifier */ + { + struct dict_avp_data data = { + 2601, /* Code */ + 10415, /* Vendor */ + "IMS-Application-Reference-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Charging-Identifier */ + { + struct dict_avp_data data = { + 841, /* Code */ + 10415, /* Vendor */ + "IMS-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Communication-Service-Identifier */ + { + struct dict_avp_data data = { + 1281, /* Code */ + 10415, /* Vendor */ + "IMS-Communication-Service-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Emergency-Indicator */ + { + struct dict_avp_data data = { + 2322, /* Code */ + 10415, /* Vendor */ + "IMS-Emergency-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(IMS-Emergency-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IMS-Information */ + { + struct dict_avp_data data = { + 876, /* Code */ + 10415, /* Vendor */ + "IMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMSI-Unauthenticated-Flag */ + { + struct dict_avp_data data = { + 2308, /* Code */ + 10415, /* Vendor */ + "IMSI-Unauthenticated-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(IMSI-Unauthenticated-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IP-Realm-Default-Indication */ + { + struct dict_avp_data data = { + 2603, /* Code */ + 10415, /* Vendor */ + "IP-Realm-Default-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(IP-Realm-Default-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Incoming-Trunk-Group-Id */ + { + struct dict_avp_data data = { + 852, /* Code */ + 10415, /* Vendor */ + "Incoming-Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Incremental-Cost */ + { + struct dict_avp_data data = { + 2062, /* Code */ + 10415, /* Vendor */ + "Incremental-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Initial-IMS-Charging-Identifier */ + { + struct dict_avp_data data = { + 2321, /* Code */ + 10415, /* Vendor */ + "Initial-IMS-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Inter-Operator-Identifier */ + { + struct dict_avp_data data = { + 838, /* Code */ + 10415, /* Vendor */ + "Inter-Operator-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Interface-Id */ + { + struct dict_avp_data data = { + 2003, /* Code */ + 10415, /* Vendor */ + "Interface-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Port */ + { + struct dict_avp_data data = { + 2004, /* Code */ + 10415, /* Vendor */ + "Interface-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Text */ + { + struct dict_avp_data data = { + 2005, /* Code */ + 10415, /* Vendor */ + "Interface-Text", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Type */ + { + struct dict_avp_data data = { + 2006, /* Code */ + 10415, /* Vendor */ + "Interface-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Interface-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-APN */ + { + struct dict_avp_data data = { + 1231, /* Code */ + 10415, /* Vendor */ + "LCS-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-Dialed-By-MS */ + { + struct dict_avp_data data = { + 1233, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Dialed-By-MS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-External-ID */ + { + struct dict_avp_data data = { + 1234, /* Code */ + 10415, /* Vendor */ + "LCS-Client-External-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-Id */ + { + struct dict_avp_data data = { + 1232, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Client-Name */ + { + struct dict_avp_data data = { + 1235, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Client-Type */ + { + struct dict_avp_data data = { + 1241, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(LCS-Client-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-Data-Coding-Scheme */ + { + struct dict_avp_data data = { + 1236, /* Code */ + 10415, /* Vendor */ + "LCS-Data-Coding-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Format-Indicator */ + { + struct dict_avp_data data = { + 1237, /* Code */ + 10415, /* Vendor */ + "LCS-Format-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(LCS-Format-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-Information */ + { + struct dict_avp_data data = { + 878, /* Code */ + 10415, /* Vendor */ + "LCS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Name-String */ + { + struct dict_avp_data data = { + 1238, /* Code */ + 10415, /* Vendor */ + "LCS-Name-String", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Requestor-Id */ + { + struct dict_avp_data data = { + 1239, /* Code */ + 10415, /* Vendor */ + "LCS-Requestor-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Requestor-Id-String */ + { + struct dict_avp_data data = { + 1240, /* Code */ + 10415, /* Vendor */ + "LCS-Requestor-Id-String", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Local-GW-Inserted-Indication */ + { + struct dict_avp_data data = { + 2604, /* Code */ + 10415, /* Vendor */ + "Local-GW-Inserted-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Local-GW-Inserted-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Local-Sequence-Number */ + { + struct dict_avp_data data = { + 2063, /* Code */ + 10415, /* Vendor */ + "Local-Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Estimate */ + { + struct dict_avp_data data = { + 1242, /* Code */ + 10415, /* Vendor */ + "Location-Estimate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Estimate-Type */ + { + struct dict_avp_data data = { + 1243, /* Code */ + 10415, /* Vendor */ + "Location-Estimate-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Location-Estimate-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Location-Type */ + { + struct dict_avp_data data = { + 1244, /* Code */ + 10415, /* Vendor */ + "Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Low-Balance-Indication */ + { + struct dict_avp_data data = { + 2020, /* Code */ + 10415, /* Vendor */ + "Low-Balance-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Low-Balance-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Low-Priority-Indicator */ + { + struct dict_avp_data data = { + 2602, /* Code */ + 10415, /* Vendor */ + "Low-Priority-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Low-Priority-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMSGW-Address */ + { + struct dict_avp_data data = { + 2307, /* Code */ + 10415, /* Vendor */ + "MBMSGW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* MBMS-Information */ + { + struct dict_avp_data data = { + 880, /* Code */ + 10415, /* Vendor */ + "MBMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-User-Service-Type */ + { + struct dict_avp_data data = { + 1225, /* Code */ + 10415, /* Vendor */ + "MBMS-User-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MBMS-User-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MM-Content-Type */ + { + struct dict_avp_data data = { + 1203, /* Code */ + 10415, /* Vendor */ + "MM-Content-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMBox-Storage-Requested */ + { + struct dict_avp_data data = { + 1248, /* Code */ + 10415, /* Vendor */ + "MMBox-Storage-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(MMBox-Storage-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MMS-Information */ + { + struct dict_avp_data data = { + 877, /* Code */ + 10415, /* Vendor */ + "MMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMTel-Information */ + { + struct dict_avp_data data = { + 2030, /* Code */ + 10415, /* Vendor */ + "MMTel-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMTel-SService-Type */ + { + struct dict_avp_data data = { + 2031, /* Code */ + 10415, /* Vendor */ + "MMTel-SService-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Initiator-Flag */ + { + struct dict_avp_data data = { + 882, /* Code */ + 10415, /* Vendor */ + "Media-Initiator-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Media-Initiator-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Media-Initiator-Party */ + { + struct dict_avp_data data = { + 1288, /* Code */ + 10415, /* Vendor */ + "Media-Initiator-Party", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Message-Body */ + { + struct dict_avp_data data = { + 889, /* Code */ + 10415, /* Vendor */ + "Message-Body", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-Class */ + { + struct dict_avp_data data = { + 1213, /* Code */ + 10415, /* Vendor */ + "Message-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-ID */ + { + struct dict_avp_data data = { + 1210, /* Code */ + 10415, /* Vendor */ + "Message-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Message-Size */ + { + struct dict_avp_data data = { + 1212, /* Code */ + 10415, /* Vendor */ + "Message-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-Type */ + { + struct dict_avp_data data = { + 1211, /* Code */ + 10415, /* Vendor */ + "Message-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Message-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* NNI-Information */ + { + struct dict_avp_data data = { + 2703, /* Code */ + 10415, /* Vendor */ + "NNI-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NNI-Type */ + { + struct dict_avp_data data = { + 2704, /* Code */ + 10415, /* Vendor */ + "NNI-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(NNI-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Neighbour-Node-Address */ + { + struct dict_avp_data data = { + 2705, /* Code */ + 10415, /* Vendor */ + "Neighbour-Node-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Next-Tariff */ + { + struct dict_avp_data data = { + 2057, /* Code */ + 10415, /* Vendor */ + "Next-Tariff", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Node-Functionality */ + { + struct dict_avp_data data = { + 862, /* Code */ + 10415, /* Vendor */ + "Node-Functionality", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Node-Functionality)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Node-Id */ + { + struct dict_avp_data data = { + 2064, /* Code */ + 10415, /* Vendor */ + "Node-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Number-Of-Diversions */ + { + struct dict_avp_data data = { + 2034, /* Code */ + 10415, /* Vendor */ + "Number-Of-Diversions", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Messages-Sent */ + { + struct dict_avp_data data = { + 2019, /* Code */ + 10415, /* Vendor */ + "Number-Of-Messages-Sent", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Participants */ + { + struct dict_avp_data data = { + 885, /* Code */ + 10415, /* Vendor */ + "Number-Of-Participants", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Received-Talk-Bursts */ + { + struct dict_avp_data data = { + 1282, /* Code */ + 10415, /* Vendor */ + "Number-Of-Received-Talk-Bursts", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Talk-Bursts */ + { + struct dict_avp_data data = { + 1283, /* Code */ + 10415, /* Vendor */ + "Number-Of-Talk-Bursts", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Portability-Routing-Information */ + { + struct dict_avp_data data = { + 2024, /* Code */ + 10415, /* Vendor */ + "Number-Portability-Routing-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Offline-Charging */ + { + struct dict_avp_data data = { + 1278, /* Code */ + 10415, /* Vendor */ + "Offline-Charging", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Online-Charging-Flag */ + { + struct dict_avp_data data = { + 2303, /* Code */ + 10415, /* Vendor */ + "Online-Charging-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Online-Charging-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Originating-IOI */ + { + struct dict_avp_data data = { + 839, /* Code */ + 10415, /* Vendor */ + "Originating-IOI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Originator */ + { + struct dict_avp_data data = { + 864, /* Code */ + 10415, /* Vendor */ + "Originator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Originator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Originator-Address */ + { + struct dict_avp_data data = { + 886, /* Code */ + 10415, /* Vendor */ + "Originator-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-Interface */ + { + struct dict_avp_data data = { + 2009, /* Code */ + 10415, /* Vendor */ + "Originator-Interface", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-Received-Address */ + { + struct dict_avp_data data = { + 2027, /* Code */ + 10415, /* Vendor */ + "Originator-Received-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-SCCP-Address */ + { + struct dict_avp_data data = { + 2008, /* Code */ + 10415, /* Vendor */ + "Originator-SCCP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Outgoing-Session-Id */ + { + struct dict_avp_data data = { + 2320, /* Code */ + 10415, /* Vendor */ + "Outgoing-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Outgoing-Trunk-Group-Id */ + { + struct dict_avp_data data = { + 853, /* Code */ + 10415, /* Vendor */ + "Outgoing-Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PDG-Address */ + { + struct dict_avp_data data = { + 895, /* Code */ + 10415, /* Vendor */ + "PDG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* PDG-Charging-Id */ + { + struct dict_avp_data data = { + 896, /* Code */ + 10415, /* Vendor */ + "PDG-Charging-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDN-Connection-Charging-ID */ + { + struct dict_avp_data data = { + 2050, /* Code */ + 10415, /* Vendor */ + "PDN-Connection-Charging-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDP-Address */ + { + struct dict_avp_data data = { + 1227, /* Code */ + 10415, /* Vendor */ + "PDP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* PDP-Address-Prefix-Length */ + { + struct dict_avp_data data = { + 2606, /* Code */ + 10415, /* Vendor */ + "PDP-Address-Prefix-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDP-Context-Type */ + { + struct dict_avp_data data = { + 1247, /* Code */ + 10415, /* Vendor */ + "PDP-Context-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PDP-Context-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PS-Append-Free-Format-Data */ + { + struct dict_avp_data data = { + 867, /* Code */ + 10415, /* Vendor */ + "PS-Append-Free-Format-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PS-Append-Free-Format-Data)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PS-Free-Format-Data */ + { + struct dict_avp_data data = { + 866, /* Code */ + 10415, /* Vendor */ + "PS-Free-Format-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PS-Furnish-Charging-Information */ + { + struct dict_avp_data data = { + 865, /* Code */ + 10415, /* Vendor */ + "PS-Furnish-Charging-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PS-Information */ + { + struct dict_avp_data data = { + 874, /* Code */ + 10415, /* Vendor */ + "PS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Participant-Access-Priority */ + { + struct dict_avp_data data = { + 1259, /* Code */ + 10415, /* Vendor */ + "Participant-Access-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Participant-Access-Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Participant-Action-Type */ + { + struct dict_avp_data data = { + 2049, /* Code */ + 10415, /* Vendor */ + "Participant-Action-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Participant-Action-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Participant-Group */ + { + struct dict_avp_data data = { + 1260, /* Code */ + 10415, /* Vendor */ + "Participant-Group", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Participants-Involved */ + { + struct dict_avp_data data = { + 887, /* Code */ + 10415, /* Vendor */ + "Participants-Involved", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Change-Condition */ + { + struct dict_avp_data data = { + 1261, /* Code */ + 10415, /* Vendor */ + "PoC-Change-Condition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-Change-Condition)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Change-Time */ + { + struct dict_avp_data data = { + 1262, /* Code */ + 10415, /* Vendor */ + "PoC-Change-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* PoC-Controlling-Address */ + { + struct dict_avp_data data = { + 858, /* Code */ + 10415, /* Vendor */ + "PoC-Controlling-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Event-Type */ + { + struct dict_avp_data data = { + 2025, /* Code */ + 10415, /* Vendor */ + "PoC-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-Event-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Group-Name */ + { + struct dict_avp_data data = { + 859, /* Code */ + 10415, /* Vendor */ + "PoC-Group-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Information */ + { + struct dict_avp_data data = { + 879, /* Code */ + 10415, /* Vendor */ + "PoC-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PoC-Server-Role */ + { + struct dict_avp_data data = { + 883, /* Code */ + 10415, /* Vendor */ + "PoC-Server-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-Server-Role)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Session-Id */ + { + struct dict_avp_data data = { + 1229, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Session-Initiation-type */ + { + struct dict_avp_data data = { + 1277, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Initiation-type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-Session-Initiation-type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Session-Type */ + { + struct dict_avp_data data = { + 884, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-Session-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-User-Role */ + { + struct dict_avp_data data = { + 1252, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PoC-User-Role-IDs */ + { + struct dict_avp_data data = { + 1253, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role-IDs", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-User-Role-info-Units */ + { + struct dict_avp_data data = { + 1254, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role-info-Units", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PoC-User-Role-info-Units)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Positioning-Data */ + { + struct dict_avp_data data = { + 1245, /* Code */ + 10415, /* Vendor */ + "Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Preferred-AoC-Currency */ + { + struct dict_avp_data data = { + 2315, /* Code */ + 10415, /* Vendor */ + "Preferred-AoC-Currency", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Priority */ + { + struct dict_avp_data data = { + 1209, /* Code */ + 10415, /* Vendor */ + "Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Quota-Consumption-Time */ + { + struct dict_avp_data data = { + 881, /* Code */ + 10415, /* Vendor */ + "Quota-Consumption-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Quota-Holding-Time */ + { + struct dict_avp_data data = { + 871, /* Code */ + 10415, /* Vendor */ + "Quota-Holding-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rate-Element */ + { + struct dict_avp_data data = { + 2058, /* Code */ + 10415, /* Vendor */ + "Rate-Element", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Read-Reply-Report-Requested */ + { + struct dict_avp_data data = { + 1222, /* Code */ + 10415, /* Vendor */ + "Read-Reply-Report-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Read-Reply-Report-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Real-Time-Tariff-Information */ + { + struct dict_avp_data data = { + 2305, /* Code */ + 10415, /* Vendor */ + "Real-Time-Tariff-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Received-Talk-Burst-Time */ + { + struct dict_avp_data data = { + 1284, /* Code */ + 10415, /* Vendor */ + "Received-Talk-Burst-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Received-Talk-Burst-Volume */ + { + struct dict_avp_data data = { + 1285, /* Code */ + 10415, /* Vendor */ + "Received-Talk-Burst-Volume", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-Address */ + { + struct dict_avp_data data = { + 1201, /* Code */ + 10415, /* Vendor */ + "Recipient-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-Info */ + { + struct dict_avp_data data = { + 2026, /* Code */ + 10415, /* Vendor */ + "Recipient-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-Received-Address */ + { + struct dict_avp_data data = { + 2028, /* Code */ + 10415, /* Vendor */ + "Recipient-Received-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-SCCP-Address */ + { + struct dict_avp_data data = { + 2010, /* Code */ + 10415, /* Vendor */ + "Recipient-SCCP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Refund-Information */ + { + struct dict_avp_data data = { + 2022, /* Code */ + 10415, /* Vendor */ + "Refund-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Relationship-Mode */ + { + struct dict_avp_data data = { + 2706, /* Code */ + 10415, /* Vendor */ + "Relationship-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Relationship-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Remaining-Balance */ + { + struct dict_avp_data data = { + 2021, /* Code */ + 10415, /* Vendor */ + "Remaining-Balance", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reply-Applic-ID */ + { + struct dict_avp_data data = { + 1223, /* Code */ + 10415, /* Vendor */ + "Reply-Applic-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Reply-Path-Requested */ + { + struct dict_avp_data data = { + 2011, /* Code */ + 10415, /* Vendor */ + "Reply-Path-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Reply-Path-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reporting-Reason */ + { + struct dict_avp_data data = { + 872, /* Code */ + 10415, /* Vendor */ + "Reporting-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Reporting-Reason)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Party-Address */ + { + struct dict_avp_data data = { + 1251, /* Code */ + 10415, /* Vendor */ + "Requested-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Role-Of-Node */ + { + struct dict_avp_data data = { + 829, /* Code */ + 10415, /* Vendor */ + "Role-Of-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Role-Of-Node)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SDP-Answer-Timestamp */ + { + struct dict_avp_data data = { + 1275, /* Code */ + 10415, /* Vendor */ + "SDP-Answer-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SDP-Media-Component */ + { + struct dict_avp_data data = { + 843, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Component", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SDP-Media-Description */ + { + struct dict_avp_data data = { + 845, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-Media-Name */ + { + struct dict_avp_data data = { + 844, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-Offer-Timestamp */ + { + struct dict_avp_data data = { + 1274, /* Code */ + 10415, /* Vendor */ + "SDP-Offer-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SDP-Session-Description */ + { + struct dict_avp_data data = { + 842, /* Code */ + 10415, /* Vendor */ + "SDP-Session-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-TimeStamps */ + { + struct dict_avp_data data = { + 1273, /* Code */ + 10415, /* Vendor */ + "SDP-TimeStamps", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SDP-Type */ + { + struct dict_avp_data data = { + 2036, /* Code */ + 10415, /* Vendor */ + "SDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(SDP-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SGSN-Address */ + { + struct dict_avp_data data = { + 1228, /* Code */ + 10415, /* Vendor */ + "SGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SGW-Address */ + { + struct dict_avp_data data = { + 2067, /* Code */ + 10415, /* Vendor */ + "SGW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SGW-Change */ + { + struct dict_avp_data data = { + 2065, /* Code */ + 10415, /* Vendor */ + "SGW-Change", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(SGW-Change)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SIP-Method */ + { + struct dict_avp_data data = { + 824, /* Code */ + 10415, /* Vendor */ + "SIP-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIP-Request-Timestamp */ + { + struct dict_avp_data data = { + 834, /* Code */ + 10415, /* Vendor */ + "SIP-Request-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SIP-Request-Timestamp-Fraction */ + { + struct dict_avp_data data = { + 2301, /* Code */ + 10415, /* Vendor */ + "SIP-Request-Timestamp-Fraction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Response-Timestamp */ + { + struct dict_avp_data data = { + 835, /* Code */ + 10415, /* Vendor */ + "SIP-Response-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SIP-Response-Timestamp-Fraction */ + { + struct dict_avp_data data = { + 2302, /* Code */ + 10415, /* Vendor */ + "SIP-Response-Timestamp-Fraction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Discharge-Time */ + { + struct dict_avp_data data = { + 2012, /* Code */ + 10415, /* Vendor */ + "SM-Discharge-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SM-Message-Type */ + { + struct dict_avp_data data = { + 2007, /* Code */ + 10415, /* Vendor */ + "SM-Message-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(SM-Message-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Protocol-ID */ + { + struct dict_avp_data data = { + 2013, /* Code */ + 10415, /* Vendor */ + "SM-Protocol-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Service-Type */ + { + struct dict_avp_data data = { + 2029, /* Code */ + 10415, /* Vendor */ + "SM-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(SM-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Status */ + { + struct dict_avp_data data = { + 2014, /* Code */ + 10415, /* Vendor */ + "SM-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-User-Data-Header */ + { + struct dict_avp_data data = { + 2015, /* Code */ + 10415, /* Vendor */ + "SM-User-Data-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMS-Information */ + { + struct dict_avp_data data = { + 2000, /* Code */ + 10415, /* Vendor */ + "SMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMS-Node */ + { + struct dict_avp_data data = { + 2016, /* Code */ + 10415, /* Vendor */ + "SMS-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(SMS-Node)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SMSC-Address */ + { + struct dict_avp_data data = { + 2017, /* Code */ + 10415, /* Vendor */ + "SMSC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Scale-Factor */ + { + struct dict_avp_data data = { + 2059, /* Code */ + 10415, /* Vendor */ + "Scale-Factor", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Served-Party-IP-Address */ + { + struct dict_avp_data data = { + 848, /* Code */ + 10415, /* Vendor */ + "Served-Party-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Service-Data-Container */ + { + struct dict_avp_data data = { + 2040, /* Code */ + 10415, /* Vendor */ + "Service-Data-Container", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Id */ + { + struct dict_avp_data data = { + 855, /* Code */ + 10415, /* Vendor */ + "Service-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Service-Information */ + { + struct dict_avp_data data = { + 873, /* Code */ + 10415, /* Vendor */ + "Service-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Mode */ + { + struct dict_avp_data data = { + 2032, /* Code */ + 10415, /* Vendor */ + "Service-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Specific-Data */ + { + struct dict_avp_data data = { + 863, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Service-Specific-Info */ + { + struct dict_avp_data data = { + 1249, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Specific-Type */ + { + struct dict_avp_data data = { + 1257, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node-Type */ + { + struct dict_avp_data data = { + 2047, /* Code */ + 10415, /* Vendor */ + "Serving-Node-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Serving-Node-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Session-Direction */ + { + struct dict_avp_data data = { + 2707, /* Code */ + 10415, /* Vendor */ + "Session-Direction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Direction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Start-Time */ + { + struct dict_avp_data data = { + 2041, /* Code */ + 10415, /* Vendor */ + "Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Status */ + { + struct dict_avp_data data = { + 2702, /* Code */ + 10415, /* Vendor */ + "Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Stop-Time */ + { + struct dict_avp_data data = { + 2042, /* Code */ + 10415, /* Vendor */ + "Stop-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Submission-Time */ + { + struct dict_avp_data data = { + 1202, /* Code */ + 10415, /* Vendor */ + "Submission-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Subscriber-Role */ + { + struct dict_avp_data data = { + 2033, /* Code */ + 10415, /* Vendor */ + "Subscriber-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Subscriber-Role)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Supplementary-Service */ + { + struct dict_avp_data data = { + 2048, /* Code */ + 10415, /* Vendor */ + "Supplementary-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Talk-Burst-Exchange */ + { + struct dict_avp_data data = { + 1255, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Exchange", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Talk-Burst-Time */ + { + struct dict_avp_data data = { + 1286, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Talk-Burst-Volume */ + { + struct dict_avp_data data = { + 1287, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Volume", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tariff-Information */ + { + struct dict_avp_data data = { + 2060, /* Code */ + 10415, /* Vendor */ + "Tariff-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tariff-XML */ + { + struct dict_avp_data data = { + 2306, /* Code */ + 10415, /* Vendor */ + "Tariff-XML", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Terminating-IOI */ + { + struct dict_avp_data data = { + 840, /* Code */ + 10415, /* Vendor */ + "Terminating-IOI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Time-First-Usage */ + { + struct dict_avp_data data = { + 2043, /* Code */ + 10415, /* Vendor */ + "Time-First-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-Last-Usage */ + { + struct dict_avp_data data = { + 2044, /* Code */ + 10415, /* Vendor */ + "Time-Last-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-Quota-Mechanism */ + { + struct dict_avp_data data = { + 1270, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Mechanism", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Quota-Threshold */ + { + struct dict_avp_data data = { + 868, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Quota-Type */ + { + struct dict_avp_data data = { + 1271, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Time-Quota-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Time-Stamps */ + { + struct dict_avp_data data = { + 833, /* Code */ + 10415, /* Vendor */ + "Time-Stamps", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Usage */ + { + struct dict_avp_data data = { + 2045, /* Code */ + 10415, /* Vendor */ + "Time-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Token-Text */ + { + struct dict_avp_data data = { + 1215, /* Code */ + 10415, /* Vendor */ + "Token-Text", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Traffic-Data-Volumes */ + { + struct dict_avp_data data = { + 2046, /* Code */ + 10415, /* Vendor */ + "Traffic-Data-Volumes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transcoder-Inserted-Indication */ + { + struct dict_avp_data data = { + 2605, /* Code */ + 10415, /* Vendor */ + "Transcoder-Inserted-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Transcoder-Inserted-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Transit-IOI-List */ + { + struct dict_avp_data data = { + 2701, /* Code */ + 10415, /* Vendor */ + "Transit-IOI-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Trigger */ + { + struct dict_avp_data data = { + 1264, /* Code */ + 10415, /* Vendor */ + "Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trigger-Type */ + { + struct dict_avp_data data = { + 870, /* Code */ + 10415, /* Vendor */ + "Trigger-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Trigger-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Trunk-Group-Id */ + { + struct dict_avp_data data = { + 851, /* Code */ + 10415, /* Vendor */ + "Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Type-Number */ + { + struct dict_avp_data data = { + 1204, /* Code */ + 10415, /* Vendor */ + "Type-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Type-Number)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Unit-Cost */ + { + struct dict_avp_data data = { + 2061, /* Code */ + 10415, /* Vendor */ + "Unit-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Unit-Quota-Threshold */ + { + struct dict_avp_data data = { + 1226, /* Code */ + 10415, /* Vendor */ + "Unit-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-CSG-Information */ + { + struct dict_avp_data data = { + 2319, /* Code */ + 10415, /* Vendor */ + "User-CSG-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Participating-Type */ + { + struct dict_avp_data data = { + 1279, /* Code */ + 10415, /* Vendor */ + "User-Participating-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(User-Participating-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* User-Session-Id */ + { + struct dict_avp_data data = { + 830, /* Code */ + 10415, /* Vendor */ + "User-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Volume-Quota-Threshold */ + { + struct dict_avp_data data = { + 869, /* Code */ + 10415, /* Vendor */ + "Volume-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WAG-Address */ + { + struct dict_avp_data data = { + 890, /* Code */ + 10415, /* Vendor */ + "WAG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* WAG-PLMN-Id */ + { + struct dict_avp_data data = { + 891, /* Code */ + 10415, /* Vendor */ + "WAG-PLMN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Information */ + { + struct dict_avp_data data = { + 875, /* Code */ + 10415, /* Vendor */ + "WLAN-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Radio-Container */ + { + struct dict_avp_data data = { + 892, /* Code */ + 10415, /* Vendor */ + "WLAN-Radio-Container", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Session-Id */ + { + struct dict_avp_data data = { + 1246, /* Code */ + 10415, /* Vendor */ + "WLAN-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* WLAN-Technology */ + { + struct dict_avp_data data = { + 893, /* Code */ + 10415, /* Vendor */ + "WLAN-Technology", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-UE-Local-IPAddress */ + { + struct dict_avp_data data = { + 894, /* Code */ + 10415, /* Vendor */ + "WLAN-UE-Local-IPAddress", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* 3GPP 29.329-b50 (11.5.0 2012.12.21) */ + /* User-Identity */ + { + struct dict_avp_data data = { + 700, /* Code */ + 10415, /* Vendor */ + "User-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MSISDN */ + { + struct dict_avp_data data = { + 701, /* Code */ + 10415, /* Vendor */ + "MSISDN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Name conflict with 29.229 User-Data (606), renamed */ + /* User-Data-Sh */ + { + struct dict_avp_data data = { + 702, /* Code */ + 10415, /* Vendor */ + "User-Data-Sh", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data-Reference */ + { + struct dict_avp_data data = { + 703, /* Code */ + 10415, /* Vendor */ + "Data-Reference", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Data-Reference)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Service-Indication */ + { + struct dict_avp_data data = { + 704, /* Code */ + 10415, /* Vendor */ + "Service-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subs-Req-Type */ + { + struct dict_avp_data data = { + 705, /* Code */ + 10415, /* Vendor */ + "Subs-Req-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Subs-Req-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Domain */ + { + struct dict_avp_data data = { + 706, /* Code */ + 10415, /* Vendor */ + "Requested-Domain", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Requested-Domain)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Current-Location */ + { + struct dict_avp_data data = { + 707, /* Code */ + 10415, /* Vendor */ + "Current-Location", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Current-Location)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Identity-Set */ + { + struct dict_avp_data data = { + 708, /* Code */ + 10415, /* Vendor */ + "Identity-Set", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Identity-Set)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Expiry-Time */ + { + struct dict_avp_data data = { + 709, /* Code */ + 10415, /* Vendor */ + "Expiry-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Send-Data-Indication */ + { + struct dict_avp_data data = { + 710, /* Code */ + 10415, /* Vendor */ + "Send-Data-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Send-Data-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* in 29.229 */ + /* Server-Name */ + /* Supported-Features */ + /* Feature-List-ID */ + /* Feature-List */ + /* Supported-Applications */ + /* Public-Identity */ + /* DSAI-Tag */ + { + struct dict_avp_data data = { + 711, /* Code */ + 10415, /* Vendor */ + "DSAI-Tag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* in 29.229 */ + /* Wildcarded-Public-Identity */ + /* Wildcarded-IMPU */ + { + struct dict_avp_data data = { + 636, /* Code */ + 10415, /* Vendor */ + "Wildcarded-IMPU", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* in 29.229 */ + /* Session-Priority */ + /* One-Time-Notification */ + { + struct dict_avp_data data = { + 712, /* Code */ + 10415, /* Vendor */ + "One-Time-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(One-Time-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Nodes */ + { + struct dict_avp_data data = { + 713, /* Code */ + 10415, /* Vendor */ + "Requested-Nodes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node-Indication */ + { + struct dict_avp_data data = { + 714, /* Code */ + 10415, /* Vendor */ + "Serving-Node-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Serving-Node-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Repository-Data-ID */ + { + struct dict_avp_data data = { + 715, /* Code */ + 10415, /* Vendor */ + "Repository-Data-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Sequence-Number */ + { + struct dict_avp_data data = { + 716, /* Code */ + 10415, /* Vendor */ + "Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UDR-Flags */ + { + struct dict_avp_data data = { + 719, /* Code */ + 10415, /* Vendor */ + "UDR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + TRACE_DEBUG(INFO, "Extension 'Dictionary definitions for DCCA 3GPP' initialized"); + return 0; +} + +EXTENSION_ENTRY("dict_dcca_3gpp", dict_dcca_3gpp_entry, "dict_dcca"); diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_3gpp/dict_dcca_3gpp.org --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.org Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,543 @@ +| Attribute Name | Code | Section defined | Value Type | MUST | MAY | SHLD NOT | MUST NOT | Encr | +| # 3GPP 29.061-c00 (12.0.0 2012.12.20) | | | | | | | | | +| # 3GPP 29.061 is not very clear and self-inconsistent about M | | | | | | | | | +| # for this reason, other sources are assumed more trustworthy | | | | | | | | | +| # M inconsistently specified | | | | | | | | | +| 3GPP-IMSI | 1 | 16.4.7 | UTF8String | M,V | P | | | | +| # 29.061 says OctetString; dumps say UInt32; manually changed | | | | | | | | | +| # 29.061 says MUST NOT M; dumps say MUST | | | | | | | | | +| 3GPP-Charging-Id | 2 | 16.4.7 | Unsigned32 | M,V | P | | | | +| # 29.061 says MUST NOT M; dumps say MUST | | | | | | | | | +| 3GPP-PDP-Type | 3 | 16.4.7 | Enumerated | M,V | P | | | | +| 3GPP-CG-Address | 4 | 16.4.7 | OctetString | V | P | | M | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-GPRS-Negotiated-QoS-Profile | 5 | 16.4.7 | UTF8String | M,V | P | | | | +| # M inconsistently specified; old contrib/3gg says MUST NOT | | | | | | | | | +| 3GPP-SGSN-Address | 6 | 16.4.7 | OctetString | V | P | | M | | +| 3GPP-GGSN-Address | 7 | 16.4.7 | OctetString | V | P | | M | | +| # 29.061 says MUST NOT M; dumps say MUST | | | | | | | | | +| 3GPP-IMSI-MCC-MNC | 8 | 16.4.7 | UTF8String | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-GGSN-MCC-MNC | 9 | 16.4.7 | UTF8String | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-NSAPI | 10 | 16.4.7 | OctetString | M,V | P | | | | +| # added manually, missing in AVP table | | | | | | | | | +| 3GPP-Session-Stop-Indicator | 11 | 16.4.7 | OctetString | V | P | | M | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-Selection-Mode | 12 | 16.4.7 | UTF8String | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-Charging-Characteristics | 13 | 16.4.7 | UTF8String | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-CG-IPv6-Address | 14 | 16.4.7 | OctetString | M,V | P | | | | +| # M inconsistently specified | | | | | | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-SGSN-IPv6-Address | 15 | 16.4.7 | OctetString | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-GGSN-IPv6-Address | 16 | 16.4.7 | OctetString | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-IPv6-DNS-Servers | 17 | 16.4.7 | OctetString | M,V | P | | | | +| # 29.061 says MUST NOT M; old contrib/3gpp says MUST | | | | | | | | | +| 3GPP-SGSN-MCC-MNC | 18 | 16.4.7 | UTF8String | M,V | P | | | | +| # M inconsistently specified | | | | | | | | | +| 3GPP-IMEISV | 20 | 16.4.7 | OctetString | M,V | P | | | | +| # M inconsistently specified | | | | | | | | | +| 3GPP-RAT-Type | 21 | 16.4.7 | OctetString | M,V | P | | | | +| # M inconsistently specified | | | | | | | | | +| 3GPP-User-Location-Info | 22 | 16.4.7 | OctetString | M,V | P | | | | +| # M inconsistently specified | | | | | | | | | +| 3GPP-MS-TimeZone | 23 | 16.4.7 | OctetString | M,V | P | | | | +| 3GPP-CAMEL-Charging-Info | 24 | 16.4.7 | OctetString | V | P | | M | | +| 3GPP-Packet-Filter | 25 | 16.4.7 | OctetString | V | P | | M | | +| 3GPP-Negotiated-DSCP | 26 | 16.4.7 | OctetString | V | P | | M | | +| 3GPP-Allocate-IP-Type | 27 | 16.4.7 | OctetString | V | P | | M | | +| # added manually, missing in AVP table | | | | | | | | | +| External-Identifier | 28 | 16.4.7 | OctetString | V | P | | M | | +| TMGI | 900 | 17.07.02 | OctetString | M,V | P | | | | +| Required-MBMS-Bearer-Capabilities | 901 | 17.07.03 | UTF8String | M,V | P | | | | +| MBMS-StartStop-Indication | 902 | 17.07.05 | Enumerated | M,V | P | | | | +| MBMS-Service-Area | 903 | 17.07.06 | OctetString | M,V | P | | | | +| MBMS-Session-Duration | 904 | 17.07.07 | OctetString | M,V | P | | | | +| Alternative-APN | 905 | 17.07.08 | UTF8String | M,V | P | | | | +| MBMS-Service-Type | 906 | 17.07.09 | Enumerated | M,V | P | | | | +| MBMS-2G-3G-Indicator | 907 | 17.07.10 | Enumerated | M,V | P | | | | +| MBMS-Session-Identity | 908 | 17.07.11 | OctetString | M.V | P | | | | +| RAI | 909 | 17.07.12 | UTF8String | M,V | P | | | | +| Additional-MBMS-Trace-Info | 910 | 17.07.13 | OctetString | M,V | P | | | | +| MBMS-Time-To-Data-Transfer | 911 | 17.07.14 | OctetString | M,V | P | | | | +| MBMS-Session-Repetition-Number | 912 | 17.07.15 | OctetString | M.V | P | | | | +| MBMS-Required-QoS | 913 | 17.07.16 | UTF8String | M.V | P | | | | +| MBMS-Counting-Information | 914 | 17.07.17 | Enumerated | M.V | P | | | | +| MBMS-User-Data-Mode-Indication | 915 | 17.07.18 | Enumerated | M.V | P | | | | +| MBMS-GGSN-Address | 916 | 17.07.19 | OctetString | M.V | P | | | | +| MBMS-GGSN-IPv6-Address | 917 | 17.07.20 | OctetString | M.V | P | | | | +| MBMS-BMSC-SSM-IP-Address | 918 | 17.07.21 | OctetString | M.V | P | | | | +| MBMS-BMSC-SSM-IPv6-Address | 919 | 17.07.22 | OctetString | M.V | P | | | | +| MBMS-Flow-Identifier | 920 | 17.7.23 | OctetString | M,V | P | | | | +| CN-IP-Multicast-Distribution | 921 | 17.7.24 | Enumerated | M,V | P | | | | +| MBMS-HC-Indicator | 922 | 17.7.25 | Enumerated | M,V | P | | | | +| # 3GPP 29.212-b70 (11.7.0 2012.12.20) | | | | | | | | | +| ADC-Revalidation-Time | 2801 | 5.3.93 | Time | V | P | | M | Y | +| ADC-Rule-Install | 1092 | 5.3.85 | Grouped | V | P | | M | Y | +| ADC-Rule-Remove | 1093 | 5.3.86 | Grouped | V | P | | M | Y | +| ADC-Rule-Definition | 1094 | 5.3.87 | Grouped | V | P | | M | Y | +| ADC-Rule-Base-Name | 1095 | 5.3.88 | UTF8String | V | P | | M | Y | +| ADC-Rule-Name | 1096 | 5.3.89 | OctetString | V | P | | M | Y | +| ADC-Rule-Report | 1097 | 5.3.90 | Grouped | V | P | | M | Y | +| Application-Detection-Information | 1098 | 5.3.91 | Grouped | V | P | | M | Y | +| Access-Network-Charging-Identifier-Gx | 1022 | 5.3.22 | Grouped | M,V | P | | | Y | +| Allocation-Retention-Priority | 1034 | 5.3.32 | Grouped | V | P | | M | Y | +| AN-GW-Address | 1050 | 5.3.49 | Address | V | P | | M | Y | +| APN-Aggregate-Max-Bitrate-DL | 1040 | 5.3.39 | Unsigned32 | V | P | | M | Y | +| APN-Aggregate-Max-Bitrate-UL | 1041 | 5.3.40 | Unsigned32 | V | P | | M | Y | +| Bearer-Control-Mode | 1023 | 5.3.23 | Enumerated | M,V | P | | | Y | +| Bearer-Identifier | 1020 | 5.3.20 | OctetString | M,V | P | | | Y | +| Bearer-Operation | 1021 | 5.3.21 | Enumerated | M,V | P | | | Y | +| Bearer-Usage | 1000 | 5.3.1 | Enumerated | M,V | P | | | Y | +| Charging-Rule-Install | 1001 | 5.3.2 | Grouped | M,V | P | | | Y | +| Charging-Rule-Remove | 1002 | 5.3.3 | Grouped | M,V | P | | | Y | +| Charging-Rule-Definition | 1003 | 5.3.4 | Grouped | M,V | P | | | Y | +| Charging-Rule-Base-Name | 1004 | 5.3.5 | UTF8String | M,V | P | | | Y | +| Charging-Rule-Name | 1005 | 5.3.6 | OctetString | M,V | P | | | Y | +| Charging-Rule-Report | 1018 | 5.3.18 | Grouped | M,V | P | | | Y | +| Charging-Correlation-Indicator | 1073 | 5.3.67 | Enumerated | V | P | | M | Y | +| CoA-IP-Address | 1035 | 5.3.33 | Address | V | P | | M | Y | +| CoA-Information | 1039 | 5.3.37 | Grouped | V | P | | M | Y | +| CSG-Information-Reporting | 1071 | 5.3.64 | Enumerated | V | P | | M | Y | +| Default-EPS-Bearer-QoS | 1049 | 5.3.48 | Grouped | V | P | | M | Y | +| Event-Report-Indication | 1033 | 5.3.30 | Grouped | V | P | | M | Y | +| Event-Trigger | 1006 | 5.3.7 | Enumerated | M,V | P | | | Y | +| Flow-Direction | 1080 | 5.3.65 | Enumerated | V | P | | M | Y | +| Flow-Information | 1058 | 5.3.53 | Grouped | V | P | | M | Y | +| Flow-Label | 1057 | 5.3.52 | OctetString | V | P | | M | Y | +| IP-CAN-Type | 1027 | 5.3.27 | Enumerated | M,V | P | | | Y | +| Guaranteed-Bitrate-DL | 1025 | 5.3.25 | Unsigned32 | M,V | P | | | Y | +| Guaranteed-Bitrate-UL | 1026 | 5.3.26 | Unsigned32 | M,V | P | | | Y | +| HeNB-BBF-FQDN | 2803 | 5.3.94 | UTF8String | V | P | | M | Y | +| HeNB-Local-IP-Address | 2804 | 5.3.95 | Address | V | P | | M | Y | +| Metering-Method | 1007 | 5.3.8 | Enumerated | M,V | P | | | Y | +| Monitoring-Key | 1066 | 5.3.59 | OctetString | V | P | | M | Y | +| Mute-Notification | 2809 | 5.3.98 | Enumerated | V | P | | M | Y | +| Monitoring-Time | 2810 | 5.3.99 | Time | V | P | | M | Y | +| Network-Request-Support | 1024 | 5.3.24 | Enumerated | M,V | P | | | Y | +| Offline | 1008 | 5.3.9 | Enumerated | M,V | P | | | Y | +| Online | 1009 | 5.3.10 | Enumerated | M,V | P | | | Y | +| Packet-Filter-Content | 1059 | 5.3.54 | IPFilterRule | V | P | | M | Y | +| Packet-Filter-Identifier | 1060 | 5.3.55 | OctetString | V | P | | M | Y | +| Packet-Filter-Information | 1061 | 5.3.56 | Grouped | V | P | | M | Y | +| Packet-Filter-Operation | 1062 | 5.3.57 | Enumerated | V | P | | M | Y | +| Packet-Filter-Usage | 1072 | 5.3.66 | Enumerated | V | P | | M | Y | +| PDN-Connection-ID | 1065 | 5.3.58 | OctetString | V | P | | | Y | +| Precedence | 1010 | 5.3.11 | Unsigned32 | M,V | P | | | Y | +| Pre-emption-Capability | 1047 | 5.3.46 | Enumerated | V | P | | M | Y | +| Pre-emption-Vulnerability | 1048 | 5.3.47 | Enumerated | V | P | | M | Y | +| Priority-Level | 1046 | 5.3.45 | Unsigned32 | V | P | | M | Y | +| Redirect-Information | 1085 | 5.3.82 | Grouped | V | P | | M | Y | +| Redirect- Support | 1086 | 5.3.83 | Enumerated | V | P | | M | Y | +| Reporting-Level | 1011 | 5.3.12 | Enumerated | M,V | P | | | Y | +| Routing-Filter | 1078 | 5.3.72 | Grouped | V | P | | M | Y | +| Routing-IP-Address | 1079 | 5.3.73 | Address | V | P | | M | Y | +| Routing-Rule-Definition | 1076 | 5.3.70 | Grouped | V | P | | M | Y | +| Routing-Rule-Identifier | 1077 | 5.3.71 | OctetString | V | P | | M | Y | +| Routing-Rule-Install | 1081 | 5.3.68 | Grouped | V | P | | M | Y | +| Routing-Rule-Remove | 1075 | 5.3.69 | Grouped | V | P | | M | Y | +| PCC-Rule-Status | 1019 | 5.3.19 | Enumerated | M,V | P | | | Y | +| Session-Release-Cause | 1045 | 5.3.44 | Enumerated | M,V | P | | | Y | +| TDF-Information | 1087 | 5.3.78 | Grouped | V | P | | M | Y | +| TDF-Application-Identifier | 1088 | 5.3.77 | OctetString | V | P | | M | Y | +| TDF-Application-Instance-Identifier | 2802 | 5.3.92 | OctetString | V | P | | M | Y | +| TDF-Destination-Host | 1089 | 5.3.80 | DiameterIdentity | V | P | | M | Y | +| TDF-Destination-Realm | 1090 | 5.3.79 | DiameterIdentity | V | P | | M | Y | +| TDF-IP-address | 1091 | 5.3.81 | Address | V | P | | M | Y | +| QoS-Class-Identifier | 1028 | 5.3.17 | Enumerated | M,V | P | | | Y | +| QoS-Information | 1016 | 5.3.16 | Grouped | M.V | P | | | Y | +| QoS-Negotiation | 1029 | 5.3.28 | Enumerated | M,V | P | | | Y | +| Qos-Upgrade | 1030 | 5.3.29 | Enumerated | M.V | P | | | Y | +| PS-to-CS-Session-Continuity | 1099 | 5.3.84 | Enumerated | V | P | | | Y | +| Resource-Allocation-Notification | 1063 | 5.3.50 | Enumerated | V | P | | M | Y | +| Rule-Failure-Code | 1031 | 5.3.38 | Enumerated | M.V | P | | | Y | +| Security-Parameter-Index | 1056 | 5.3.51 | OctetString | V | P | | M | Y | +| TFT-Filter | 1012 | 5.3.13 | IPFilterRule | M,V | P | | | Y | +| TFT-Packet-Filter-Information | 1013 | 5.3.14 | Grouped | M,V | P | | | Y | +| ToS-Traffic-Class | 1014 | 5.3.15 | OctetString | M,V | P | | | Y | +| Tunnel-Header-Filter | 1036 | 5.3.34 | IPFilterRule | V | P | | M | Y | +| Tunnel-Header-Length | 1037 | 5.3.35 | Unsigned32 | V | P | | M | Y | +| Tunnel-Information | 1038 | 5.3.36 | Grouped | V | P | | M | Y | +| RAT-Type | 1032 | 5.3.31 | Enumerated | V | P | | M | Y | +| Revalidation-Time | 1042 | 5.3.41 | Time | M,V | P | | | Y | +| Rule-Activation-Time | 1043 | 5.3.42 | Time | M,V | P | | | Y | +| UDP-Source-Port | 2806 | 5.3.97 | Unsigned32 | V | P | | M | Y | +| UE-Local-IP-Address | 2805 | 5.3.96 | Address | V | P | | M | Y | +| Usage-Monitoring-Information | 1067 | 5.3.60 | Grouped | V | P | | M | Y | +| Rule-DeActivation-Time | 1044 | 5.3.43 | Time | M,V | P | | | Y | +| Usage-Monitoring-Level | 1068 | 5.3.61 | Enumerated | V | P | | M | Y | +| Usage-Monitoring-Report | 1069 | 5.3.62 | Enumerated | V | P | | M | Y | +| Usage-Monitoring-Support | 1070 | 5.3.63 | Enumerated | V | P | | M | Y | +| QoS-Rule-Install | 1051 | 5a.3.1 | Grouped | M,V | P | | | Y | +| QoS-Rule-Remove | 1052 | 5a.3.2 | Grouped | M,V | P | | | Y | +| QoS-Rule-Definition | 1053 | 5a.3.3 | Grouped | M,V | P | | | Y | +| QoS-Rule-Name | 1054 | 5a.3.4 | OctetString | M,V | P | | | Y | +| QoS-Rule-Base-Name | 1074 | 5a.3.7 | UTF8String | V | P | | M | Y | +| QoS-Rule-Report | 1055 | 5a.3.5 | Grouped | M,V | P | | | Y | +| Session-Linking-Indicator | 1064 | 5a.3.6 | Enumerated | M,V | P | | | Y | +| CS-Service-Qos-Request-Identifier | 2807 | E.6.3.2 | OctetString | M,V | P | | | Y | +| CS-Service-QoS-Request-Operation | 2808 | E.6.3.3 | Enumerated | M.V | P | | | Y | +| # 3GPP 29.229-b20 (11.2.0 2012.12.21) | | | | | | | | | +| Associated-Identities | 632 | 6.3.33 | Grouped | V | | | M | N | +| Associated-Registered-Identities | 647 | 6.3.50 | Grouped | V | | | M | N | +| Call-ID-SIP-Header | 643 | 6.3.49.1 | OctetString | V | | | M | N | +| Charging-Information | 618 | 6.3.19 | Grouped | M,V | | | | N | +| Confidentiality-Key | 625 | 6.3.27 | OctetString | M,V | | | | N | +| Contact | 641 | 6.3.48 | OctetString | V | | | M | N | +| Deregistration-Reason | 615 | 6.3.16 | Grouped | M,V | | | | N | +| Digest-Algorithm | 111 | 6.3.39 | UTF8String | M | | | V | N | +| Digest-HA1 | 121 | 6.3.41 | UTF8String | M | | | V | N | +| Digest-QoP | 110 | 6.3.40 | UTF8String | M | | | V | N | +| Digest-Realm | 104 | 6.3.37 | UTF8String | M | | | V | N | +| Feature-List | 630 | 6.3.31 | Unsigned32 | V | | | M | N | +| Feature-List-ID | 629 | 6.3.30 | Unsigned32 | V | | | M | N | +| From-SIP-Header | 644 | 6.3.49.2 | OctetString | V | | | M | N | +| Identity-with-Emergency-Registration | 651 | 6.3.57 | Grouped | V | | | M | N | +| Integrity-Key | 626 | 6.3.28 | OctetString | M,V | | | | N | +| LIA-Flags | 653 | 6.3.59 | Unsigned32 | V | | | M | N | +| Loose-Route-Indication | 638 | 6.3.45 | Enumerated | V | | | M | N | +| Mandatory-Capability | 604 | 6.3.5 | Unsigned32 | M,V | | | | N | +| Multiple-Registration-Indication | 648 | 6.3.51 | Enumerated | V | | | M | N | +| Optional-Capability | 605 | 6.3.6 | Unsigned32 | M,V | | | | N | +| Originating-Request | 633 | 6.3.34 | Enumerated | M,V | | | | N | +| Path | 640 | 6.3.47 | OctetString | V | | | M | N | +| Primary-Charging-Collection-Function-Name | 621 | 6.3.22 | DiameterURI | M,V | | | | N | +| Primary-Event-Charging-Function-Name | 619 | 6.3.20 | DiameterURI | M,V | | | | N | +| Priviledged-Sender-Indication | 652 | 6.3.58 | Enumerated | V | | | M | N | +| Public-Identity | 601 | 6.3.2 | UTF8String | M,V | | | | N | +| Reason-Code | 616 | 6.3.17 | Enumerated | M,V | | | | N | +| Reason-Info | 617 | 6.3.18 | UTF8String | M,V | | | | N | +| Record-Route | 646 | 6.3.49.4 | OctetString | V | | | M | N | +| Restoration-Info | 649 | 6.3.52 | Grouped | V | | | M | N | +| SCSCF-Restoration-Info | 639 | 6.3.46 | Grouped | V | | | M | N | +| SIP-Auth-Data-Item | 612 | 6.3.13 | Grouped | M,V | | | | N | +| SIP-Authenticate | 609 | 6.3.10 | OctetString | M,V | | | | N | +| SIP-Authentication-Context | 611 | 6.3.12 | OctetString | M,V | | | | N | +| SIP-Authentication-Scheme | 608 | 6.3.9 | UTF8String | M,V | | | | N | +| SIP-Authorization | 610 | 6.3.11 | OctetString | M,V | | | | N | +| SIP-Digest-Authenticate | 635 | 6.3.36 | Grouped | V | | | M | N | +| SIP-Item-Number | 613 | 6.3.14 | Unsigned32 | M,V | | | | N | +| SIP-Number-Auth-Items | 607 | 6.3.8 | Unsigned32 | M,V | | | | N | +| Secondary-Charging-Collection-Function-Name | 622 | 6.3.23 | DiameterURI | M,V | | | | N | +| Secondary-Event-Charging-Function-Name | 620 | 6.3.21 | DiameterURI | M,V | | | | N | +| Server-Assignment-Type | 614 | 6.3.15 | Enumerated | M,V | | | | N | +| Server-Capabilities | 603 | 6.3.4 | Grouped | M,V | | | | N | +| Server-Name | 602 | 6.3.3 | UTF8String | M,V | | | | N | +| Session-Priority | 650 | 6.3.56 | Enumerated | V | | | M | N | +| Subscription-Info | 642 | 6.3.49 | Grouped | V | | | M | N | +| Supported-Applications | 631 | 6.3.32 | Grouped | V | | | M | N | +| Supported-Features | 628 | 6.3.29 | Grouped | V | M | | | N | +| To-SIP-Header | 645 | 6.3.49.3 | OctetString | V | | | M | N | +| UAR-Flags | 637 | 6.3.44 | Unsigned32 | V | | | M | N | +| User-Authorization-Type | 623 | 6.3.24 | Enumerated | M,V | | | | N | +| User-Data | 606 | 6.3.7 | OctetString | M,V | | | | N | +| User-Data-Already-Available | 624 | 6.3.26 | Enumerated | M,V | | | | N | +| Visited-Network-Identifier | 600 | 6.3.1 | OctetString | M,V | | | | N | +| Wildcarded-Public-Identity | 634 | 6.3.35 | UTF8String | V | | | M | N | +| # 3GPP 32.299-b60 (11.6.0 2012.12.21) | | | | | | | | | +| AF-Correlation-Information | 1276 | | Grouped | M,V | P | | | N | +| Access-Network-Information | 1263 | | OctetString | M,V | P | | | N | +| Access-Transfer-Information | 2709 | | Grouped | M,V | P | | | N | +| Access-Transfer-Type | 2710 | | Enumerated | M,V | P | | | N | +| Account-Expiration | 2309 | | Time | M,V | P | | | N | +| Accumulated-Cost | 2052 | | Grouped | M,V | P | | | N | +| Adaptations | 1217 | | Enumerated | M,V | P | | | N | +| Additional-Content-Information | 1207 | | Grouped | M,V | P | | | N | +| Additional-Type-Information | 1205 | | UTF8String | M,V | P | | | N | +| Address-Data | 897 | | UTF8String | M,V | P | | | N | +| Address-Domain | 898 | | Grouped | M,V | P | | | N | +| Address-Type | 899 | | Enumerated | M,V | P | | | N | +| Addressee-Type | 1208 | | Enumerated | M,V | P | | | N | +| Alternate-Charged-Party-Address | 1280 | | UTF8String | V.M | P | | | N | +| AoC-Cost-Information | 2053 | | Grouped | M,V | P | | | N | +| AoC-Format | 2310 | | Enumerated | M,V | P | | | N | +| AoC-Information | 2054 | | Grouped | V.M | P | | | N | +| AoC-Request-Type | 2055 | | Enumerated | V.M | P | | | N | +| AoC-Service | 2311 | | Grouped | M,V | P | | | N | +| AoC-Service-Obligatory-Type | 2312 | | Enumerated | M,V | P | | | N | +| AoC-Service-Type | 2313 | | Enumerated | M,V | P | | | N | +| AoC-Subscription-Information | 2314 | | Grouped | M,V | P | | | N | +| Applic-ID | 1218 | | UTF8String | M,V | P | | | N | +| Application-Server | 836 | | UTF8String | M,V | P | | | N | +| Application-Server-Information | 850 | | Grouped | M,V | P | | | N | +| Application-provided-called-party-address | 837 | | UTF8String | M,V | P | | | N | +| Associated-Party-Address | 2035 | | UTF8String | M,V | P | | | N | +| Associated-URI | 856 | | UTF8String | M,V | P | | | N | +| Aux-Applic-Info | 1219 | | UTF8String | M,V | P | | | N | +| Base-Time-Interval | 1265 | | Unsigned32 | M,V | P | | | N | +| Bearer-Service | 854 | | OctetString | M,V | P | | | N | +| CG-Address | 846 | | Address | M,V | P | | | Y | +| CSG-Access-Mode | 2317 | | Enumerated | M,V | P | | | N | +| CSG-Membership-Indication | 2318 | | Enumerated | M,V | P | | | N | +| CUG-Information | 2304 | | OctetString | M,V | P | | | N | +| Called-Asserted-Identity | 1250 | | UTF8String | M,V | P | | | N | +| Called-Party-Address | 832 | | UTF8String | M,V | P | | | N | +| Calling-Party-Address | 831 | | UTF8String | M,V | P | | | N | +| Carrier-Select-Routing-Information | 2023 | | UTF8String | M,V | P | | | N | +| Cause-Code | 861 | | Integer32 | M,V | P | | | N | +| Change-Condition | 2037 | | Integer32 | M,V | P | | | N | +| Change-Time | 2038 | | Time | M,V | P | | | N | +| Charge-Reason-Code | 2118 | | Enumerated | M,V | P | | | N | +| Charged-Party | 857 | | UTF8String | M,V | P | | | N | +| Charging-Characteristics-Selection-Mode | 2066 | | Enumerated | M,V | P | | | N | +| Class-Identifier | 1214 | | Enumerated | M,V | P | | | N | +| Client-Address | 2018 | | Address | M,V | P | | | N | +| Content-Class | 1220 | | Enumerated | M,V | P | | | N | +| Content-Disposition | 828 | | UTF8String | M,V | P | | | N | +| Content-Length | 827 | | Unsigned32 | M,V | P | | | N | +| Content-Size | 1206 | | Unsigned32 | M,V | P | | | N | +| Content-Type | 826 | | UTF8String | M,V | P | | | N | +| Current-Tariff | 2056 | | Grouped | M,V | P | | | N | +| DRM-Content | 1221 | | Enumerated | M,V | P | | | N | +| Data-Coding-Scheme | 2001 | | Integer32 | M,V | P | | | N | +| Deferred-Location-Event-Type | 1230 | | UTF8String | M,V | P | | | N | +| Delivery-Report-Requested | 1216 | | Enumerated | M,V | P | | | N | +| Destination-Interface | 2002 | | Grouped | M,V | P | | | N | +| Diagnostics | 2039 | | Integer32 | M,V | P | | | N | +| Domain-Name | 1200 | | UTF8String | M,V | P | | | N | +| Dynamic-Address-Flag | 2051 | | Enumerated | M,V | P | | | N | +| Dynamic-Address-Flag-Extension | 2068 | | Enumerated | M,V | P | | | N | +| Early-Media-Description | 1272 | | Grouped | M,V | P | | | N | +| Envelope | 1266 | | Grouped | M,V | P | | | N | +| Envelope-End-Time | 1267 | | Time | M,V | P | | | N | +| Envelope-Reporting | 1268 | | Enumerated | M,V | P | | | N | +| Envelope-Start-Time | 1269 | | Time | M,V | P | | | N | +| Event | 825 | | UTF8String | M,V | P | | | N | +| Event-Charging-TimeStamp | 1258 | | Time | M,V | P | | | N | +| Event-Type | 823 | | Grouped | M,V | P | | | N | +| Expires | 888 | | Unsigned32 | M,V | P | | | N | +| File-Repair-Supported | 1224 | | Enumerated | M,V | P | | | Y | +| From-Address | 2708 | | UTF8String | M,V | P | | | N | +| GGSN-Address | 847 | | Address | M,V | P | | | N | +| IMS-Application-Reference-Identifier | 2601 | | UTF8String | M,V | P | | | N | +| IMS-Charging-Identifier | 841 | | UTF8String | M,V | P | | | N | +| IMS-Communication-Service-Identifier | 1281 | | UTF8String | M,V | P | | | N | +| IMS-Emergency-Indicator | 2322 | | Enumerated | M,V | P | | | N | +| IMS-Information | 876 | | Grouped | M,V | P | | | N | +| IMSI-Unauthenticated-Flag | 2308 | | Enumerated | M,V | P | | | N | +| IP-Realm-Default-Indication | 2603 | | Enumerated | M,V | P | | | N | +| Incoming-Trunk-Group-Id | 852 | | UTF8String | M,V | P | | | N | +| Incremental-Cost | 2062 | | Grouped | M,V | P | | | N | +| Initial-IMS-Charging-Identifier | 2321 | | UTF8String | M,V | P | | | N | +| Inter-Operator-Identifier | 838 | | Grouped | M,V | P | | | N | +| Interface-Id | 2003 | | UTF8String | M,V | P | | | N | +| Interface-Port | 2004 | | UTF8String | M,V | P | | | N | +| Interface-Text | 2005 | | UTF8String | M,V | P | | | N | +| Interface-Type | 2006 | | Enumerated | M,V | P | | | N | +| LCS-APN | 1231 | | UTF8String | M,V | P | | | N | +| LCS-Client-Dialed-By-MS | 1233 | | UTF8String | M,V | P | | | N | +| LCS-Client-External-ID | 1234 | | UTF8String | M,V | P | | | N | +| LCS-Client-Id | 1232 | | Grouped | M,V | P | | | N | +| LCS-Client-Name | 1235 | | Grouped | M,V | P | | | N | +| LCS-Client-Type | 1241 | | Enumerated | M,V | P | | | N | +| LCS-Data-Coding-Scheme | 1236 | | UTF8String | M,V | P | | | N | +| LCS-Format-Indicator | 1237 | | Enumerated | M,V | P | | | N | +| LCS-Information | 878 | | Grouped | M,V | P | | | N | +| LCS-Name-String | 1238 | | UTF8String | M,V | P | | | N | +| LCS-Requestor-Id | 1239 | | Grouped | M,V | P | | | N | +| LCS-Requestor-Id-String | 1240 | | UTF8String | M,V | P | | | N | +| Local-GW-Inserted-Indication | 2604 | | Enumerated | M,V | P | | | N | +| Local-Sequence-Number | 2063 | | Unsigned32 | M,V | P | | | N | +| Location-Estimate | 1242 | | OctetString | M,V | P | | | N | +| Location-Estimate-Type | 1243 | | Enumerated | M,V | P | | | N | +| Location-Type | 1244 | | Grouped | M,V | P | | | N | +| Low-Balance-Indication | 2020 | | Enumerated | M,V | P | | | N | +| Low-Priority-Indicator | 2602 | | Enumerated | M,V | P | | | N | +| MBMS GW-Address | 2307 | | Address | M,V | P | | | N | +| MBMS-Information | 880 | | Grouped | M,V | P | | | N | +| MBMS-User-Service-Type | 1225 | | Enumerated | M,V | P | | | Y | +| MM-Content-Type | 1203 | | Grouped | M,V | P | | | N | +| MMBox-Storage-Requested | 1248 | | Enumerated | M,V | P | | | N | +| MMS-Information | 877 | | Grouped | M,V | P | | | N | +| MMTel-Information | 2030 | | Grouped | M,V | P | | | N | +| MMTel-SService-Type | 2031 | | Unsigned32 | M,V | P | | | N | +| Media-Initiator-Flag | 882 | | Enumerated | M,V | P | | | N | +| Media-Initiator-Party | 1288 | | UTF8String | M,V | P | | | N | +| Message-Body | 889 | | Grouped | M,V | P | | | N | +| Message-Class | 1213 | | Grouped | M,V | P | | | N | +| Message-ID | 1210 | | UTF8String | M,V | P | | | N | +| Message-Size | 1212 | | Unsigned32 | M,V | P | | | N | +| Message-Type | 1211 | | Enumerated | M,V | P | | | N | +| NNI-Information | 2703 | | Grouped | M,V | P | | | N | +| NNI-Type | 2704 | | Enumerated | M,V | P | | | N | +| Neighbour-Node-Address | 2705 | | Address | M,V | P | | | N | +| Next-Tariff | 2057 | | Grouped | V/M | P | | | N | +| Node-Functionality | 862 | | Enumerated | M,V | P | | | N | +| Node-Id | 2064 | | UTF8String | M,V | P | | | N | +| Number-Of-Diversions | 2034 | | Unsigned32 | M,V | P | | | N | +| Number-Of-Messages-Sent | 2019 | | Unsigned32 | M,V | P | | | N | +| Number-Of-Participants | 885 | | Unsigned32 | M,V | P | | | N | +| Number-Of-Received-Talk-Bursts | 1282 | | Unsigned32 | M,V | P | | | N | +| Number-Of-Talk-Bursts | 1283 | | Unsigned32 | M,V | P | | | N | +| Number-Portability-Routing-Information | 2024 | | UTF8String | M,V | P | | | N | +| Offline-Charging | 1278 | | Grouped | M,V | P | | | N | +| Online-Charging-Flag | 2303 | | Enumerated | M,V | P | | | N | +| Originating-IOI | 839 | | UTF8String | M,V | P | | | N | +| Originator | 864 | | Enumerated | M,V | P | | | N | +| Originator-Address | 886 | | Grouped | M,V | P | | | N | +| Originator-Interface | 2009 | | Grouped | M,V | P | | | N | +| Originator-Received-Address | 2027 | | Grouped | M,V | P | | | N | +| Originator-SCCP-Address | 2008 | | Address | M,V | P | | | N | +| Outgoing-Session-Id | 2320 | | UTF8String | M,V | P | | | N | +| Outgoing-Trunk-Group-Id | 853 | | UTF8String | M,V | P | | | N | +| PDG-Address | 895 | | Address | M,V | P | | | N | +| PDG-Charging-Id | 896 | | Unsigned32 | M,V | P | | | N | +| PDN-Connection-Charging-ID | 2050 | | Unsigned32 | M,V | P | | | N | +| PDP-Address | 1227 | | Address | M,V | P | | | Y | +| PDP-Address-Prefix-Length | 2606 | | Unsigned32 | M,V | P | | | Y | +| PDP-Context-Type | 1247 | | Enumerated | M,V | P | | | N | +| PS-Append-Free-Format-Data | 867 | | Enumerated | M,V | P | | | N | +| PS-Free-Format-Data | 866 | | OctetString | M,V | P | | | N | +| PS-Furnish-Charging-Information | 865 | | Grouped | M,V | P | | | N | +| PS-Information | 874 | | Grouped | M,V | P | | | N | +| Participant-Access-Priority | 1259 | | Enumerated | M,V | P | | | N | +| Participant-Action-Type | 2049 | | Enumerated | M,V | P | | | N | +| Participant-Group | 1260 | | Grouped | M,V | P | | | N | +| Participants-Involved | 887 | | UTF8String | M,V | P | | | N | +| PoC-Change-Condition | 1261 | | Enumerated | M,V | P | | | N | +| PoC-Change-Time | 1262 | | Time | M,V | P | | | N | +| PoC-Controlling-Address | 858 | | UTF8String | M,V | P | | | N | +| PoC-Event-Type | 2025 | | Enumerated | M,V | P | | | N | +| PoC-Group-Name | 859 | | UTF8String | M,V | P | | | N | +| PoC-Information | 879 | | Grouped | M,V | P | | | N | +| PoC-Server-Role | 883 | | Enumerated | M,V | P | | | N | +| PoC-Session-Id | 1229 | | UTF8String | M,V | P | | | N | +| PoC-Session-Initiation-type | 1277 | | Enumerated | M,V | P | | | N | +| PoC-Session-Type | 884 | | Enumerated | M,V | P | | | N | +| PoC-User-Role | 1252 | | Grouped | M,V | P | | | N | +| PoC-User-Role-IDs | 1253 | | UTF8String | M,V | P | | | N | +| PoC-User-Role-info-Units | 1254 | | Enumerated | M,V | P | | | N | +| Positioning-Data | 1245 | | UTF8String | M,V | P | | | N | +| Preferred-AoC-Currency | 2315 | | Unsigned32 | M,V | P | | | N | +| Priority | 1209 | | Enumerated | M,V | P | | | N | +| Quota-Consumption-Time | 881 | | Unsigned32 | M,V | P | | | N | +| Quota-Holding-Time | 871 | | Unsigned32 | M,V | P | | | N | +| Rate-Element | 2058 | | Grouped | M,V | P | | | N | +| Read-Reply-Report-Requested | 1222 | | Enumerated | M,V | P | | | N | +| Real-Time-Tariff-Information | 2305 | | Grouped | M,V | P | | | N | +| Received-Talk-Burst-Time | 1284 | | Unsigned32 | M,V | P | | | N | +| Received-Talk-Burst-Volume | 1285 | | Unsigned32 | M,V | P | | | N | +| Recipient-Address | 1201 | | Grouped | M,V | P | | | N | +| Recipient-Info | 2026 | | Grouped | M,V | P | | | N | +| Recipient-Received-Address | 2028 | | Grouped | M,V | P | | | N | +| Recipient-SCCP-Address | 2010 | | Address | M,V | P | | | N | +| Refund-Information | 2022 | | OctetString | M,V | P | | | N | +| Relationship-Mode | 2706 | | Enumerated | M,V | P | | | N | +| Remaining-Balance | 2021 | | Grouped | M,V | P | | | N | +| Reply-Applic-ID | 1223 | | UTF8String | M,V | P | | | N | +| Reply-Path-Requested | 2011 | | Enumerated | M,V | P | | | N | +| Reporting-Reason | 872 | | Enumerated | M,V | P | | | N | +| Requested-Party-Address | 1251 | | UTF8String | M,V | P | | | N | +| Role-Of-Node | 829 | | Enumerated | M,V | P | | | N | +| SDP-Answer-Timestamp | 1275 | | Time | M,V | P | | | N | +| SDP-Media-Component | 843 | | Grouped | M,V | P | | | N | +| SDP-Media-Description | 845 | | UTF8String | M,V | P | | | N | +| SDP-Media-Name | 844 | | UTF8String | M,V | P | | | N | +| SDP-Offer-Timestamp | 1274 | | Time | M,V | P | | | N | +| SDP-Session-Description | 842 | | UTF8String | M,V | P | | | N | +| SDP-TimeStamps | 1273 | | Grouped | M,V | P | | | N | +| SDP-Type | 2036 | | Enumerated | M,V | P | | | N | +| SGSN-Address | 1228 | | Address | M,V | P | | | N | +| SGW-Address | 2067 | | Address | M,V | P | | | N | +| SGW-Change | 2065 | | Enumerated | M,V | P | | | N | +| SIP-Method | 824 | | UTF8String | M,V | P | | | N | +| SIP-Request-Timestamp | 834 | | Time | M,V | P | | | N | +| SIP-Request-Timestamp-Fraction | 2301 | | Unsigned32 | M,V | P | | | N | +| SIP-Response-Timestamp | 835 | | Time | M,V | P | | | N | +| SIP-Response-Timestamp-Fraction | 2302 | | Unsigned32 | M,V | P | | | N | +| SM-Discharge-Time | 2012 | | Time | M,V | P | | | N | +| SM-Message-Type | 2007 | | Enumerated | M,V | P | | | N | +| SM-Protocol-ID | 2013 | | OctetString | M,V | P | | | N | +| SM-Service-Type | 2029 | | Enumerated | M,V | P | | | N | +| SM-Status | 2014 | | OctetString | M,V | P | | | N | +| SM-User-Data-Header | 2015 | | OctetString | M,V | P | | | N | +| SMS-Information | 2000 | | Grouped | M,V | P | | | N | +| SMS-Node | 2016 | | Enumerated | M,V | P | | | N | +| SMSC-Address | 2017 | | Address | M,V | P | | | N | +| Scale-Factor | 2059 | | Grouped | M,V | P | | | N | +| Served-Party-IP-Address | 848 | | Address | M,V | P | | | N | +| Service-Data-Container | 2040 | | Grouped | M,V | P | | | N | +| Service-Id | 855 | | UTF8String | M,V | P | | | N | +| Service-Information | 873 | | Grouped | M,V | P | | | N | +| Service-Mode | 2032 | | Unsigned32 | M,V | P | | | N | +| Service-Specific-Data | 863 | | UTF8String | M,V | P | | | N | +| Service-Specific-Info | 1249 | | Grouped | M,V | P | | | N | +| Service-Specific-Type | 1257 | | Unsigned32 | M,V | P | | | N | +| Serving-Node-Type | 2047 | | Enumerated | M,V | P | | | N | +| Session-Direction | 2707 | | Enumerated | M,V | P | | | N | +| Start-Time | 2041 | | Time | M,V | P | | | N | +| Status | 2702 | | Enumerated | M,V | P | | | N | +| Stop-Time | 2042 | | Time | M,V | P | | | N | +| Submission-Time | 1202 | | Time | M,V | P | | | N | +| Subscriber-Role | 2033 | | Enumerated | M,V | P | | | N | +| Supplementary-Service | 2048 | | Grouped | M,V | P | | | N | +| Talk-Burst-Exchange | 1255 | | Grouped | M,V | P | | | N | +| Talk-Burst-Time | 1286 | | Unsigned32 | M,V | P | | | N | +| Talk-Burst-Volume | 1287 | | Unsigned32 | M,V | P | | | N | +| Tariff-Information | 2060 | | Grouped | M,V | P | | | N | +| Tariff-XML | 2306 | | UTF8String | M,V | P | | | N | +| Terminating-IOI | 840 | | UTF8String | M,V | P | | | N | +| Time-First-Usage | 2043 | | Time | M,V | P | | | N | +| Time-Last-Usage | 2044 | | Time | M,V | P | | | N | +| Time-Quota-Mechanism | 1270 | | Grouped | M,V | P | | | N | +| Time-Quota-Threshold | 868 | | Unsigned32 | M,V | P | | | N | +| Time-Quota-Type | 1271 | | Enumerated | M,V | P | | | N | +| Time-Stamps | 833 | | Grouped | M,V | P | | | N | +| Time-Usage | 2045 | | Unsigned32 | M,V | P | | | N | +| Token-Text | 1215 | | UTF8String | M,V | P | | | N | +| Traffic-Data-Volumes | 2046 | | Grouped | M,V | P | | | N | +| Transcoder-Inserted-Indication | 2605 | | Enumerated | M,V | P | | | N | +| Transit-IOI-List | 2701 | | UTF8String | M,V | P | | | N | +| Trigger | 1264 | | Grouped | M,V | P | | | N | +| Trigger-Type | 870 | | Enumerated | M,V | P | | | N | +| Trunk-Group-Id | 851 | | Grouped | M,V | P | | | N | +| Type-Number | 1204 | | Enumerated | M,V | P | | | N | +| Unit-Cost | 2061 | | Grouped | M,V | P | | | N | +| Unit-Quota-Threshold | 1226 | | Unsigned32 | M,V | P | | | N | +| User-CSG-Information | 2319 | | Grouped | M,V | P | | | N | +| User-Participating-Type | 1279 | | Enumerated | M,V | P | | | N | +| User-Session-Id | 830 | | UTF8String | M,V | P | | | N | +| Volume-Quota-Threshold | 869 | | Unsigned32 | M,V | P | | | N | +| WAG-Address | 890 | | Address | M,V | P | | | N | +| WAG-PLMN-Id | 891 | | OctetString | M,V | P | | | N | +| WLAN-Information | 875 | | Grouped | M,V | P | | | N | +| WLAN-Radio-Container | 892 | | Grouped | M,V | P | | | N | +| WLAN-Session-Id | 1246 | | UTF8String | M,V | P | | | N | +| WLAN-Technology | 893 | | Unsigned32 | M,V | P | | | N | +| WLAN-UE-Local-IPAddress | 894 | | Address | M,V | P | | | N | +| # 3GPP 29.329-b50 (11.5.0 2012.12.21) | | | | | | | | | +| User-Identity | 700 | 6.3.1 | Grouped | M,V | | | | N | +| MSISDN | 701 | 6.3.2 | OctetString | M,V | | | | N | +| # Name conflict with 29.229 User-Data (606), renamed | | | | | | | | | +| User-Data-Sh | 702 | 6.3.3 | OctetString | M,V | | | | N | +| Data-Reference | 703 | 6.3.4 | Enumerated | M,V | | | | N | +| Service-Indication | 704 | 6.3.5 | OctetString | M,V | | | | N | +| Subs-Req-Type | 705 | 6.3.6 | Enumerated | M,V | | | | N | +| Requested-Domain | 706 | 6.3.7 | Enumerated | M,V | | | | N | +| Current-Location | 707 | 6.3.8 | Enumerated | M,V | | | | N | +| Identity-Set | 708 | 6.3.10 | Enumerated | V | | | M | N | +| Expiry-Time | 709 | 6.3.16 | Time | V | | | M | N | +| Send-Data-Indication | 710 | 6.3.17 | Enumerated | V | | | M | N | +| # in 29.229 | | | | | | | | | +| # Server-Name | 602 | 6.3.9 | UTF8String | M,V | | | | N | +| # Supported-Features | 628 | 6.3.11 | Grouped | V | M | | | N | +| # Feature-List-ID | 629 | 6.3.12 | Unsigned32 | V | | | M | N | +| # Feature-List | 630 | 6.3.13 | Unsigned32 | V | | | M | N | +| # Supported-Applications | 631 | 6.3.14 | Grouped | V | | | M | N | +| # Public-Identity | 601 | 6.3.15 | UTF8String | M,V | | | | N | +| DSAI-Tag | 711 | 6.3.18 | OctetString | M,V | | | | N | +| # in 29.229 | | | | | | | | | +| # Wildcarded-Public-Identity | 634 | 6.3.19 | UTF8String | V | | | M | N | +| Wildcarded-IMPU | 636 | 6.3.20 | UTF8String | V | | | M | N | +| # in 29.229 | | | | | | | | | +| # Session-Priority | 650 | 6.3.21 | Enumerated | V | | | M | N | +| One-Time-Notification | 712 | 6.3.22 | Enumerated | V | | | M | N | +| Requested-Nodes | 713 | 6.3.7A | Unsigned32 | V | | | M | N | +| Serving-Node-Indication | 714 | 6.3.23 | Enumerated | V | | | M | N | +| Repository-Data-ID | 715 | 6.3.24 | Grouped | V | | | M | N | +| Sequence-Number | 716 | 6.3.25 | Unsigned32 | V | | | M | N | +| UDR-Flags | 719 | 6.3.28 | Unsigned32 | V | | | M | N | diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_starent/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_starent/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,14 @@ +# The dict_dcca_starent extension +PROJECT("Diameter DCCA (Diameter Credit Control Application) Starent dictionary definitions " C) + +# Compile as a module +FD_ADD_EXTENSION(dict_dcca_starent dict_dcca_starent.c) + + +#### +## INSTALL section ## + +INSTALL(TARGETS dict_dcca_starent + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-dictionary-rfc4006-extension-starent) + diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_starent/dict_dcca_starent.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_starent/dict_dcca_starent.c Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,289 @@ +/* + * Dictionary definitions of objects specified in DCCA by Starent. + */ +#include + + +/* The content of this file follows the same structure as dict_base_proto.c */ + +#define CHECK_dict_new( _type, _data, _parent, _ref ) \ + CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); + +#define CHECK_dict_search( _type, _criteria, _what, _result ) \ + CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); + +struct local_rules_definition { + char *avp_name; + enum rule_position position; + int min; + int max; +}; + +#define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 1 : 0 ) + +#define PARSE_loc_rules( _rulearray, _parent) { \ + int __ar; \ + for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) { \ + struct dict_rule_data __data = { NULL, \ + (_rulearray)[__ar].position, \ + 0, \ + (_rulearray)[__ar].min, \ + (_rulearray)[__ar].max}; \ + __data.rule_order = RULE_ORDER(__data.rule_position); \ + CHECK_FCT( fd_dict_search( \ + fd_g_config->cnf_dict, \ + DICT_AVP, \ + AVP_BY_NAME, \ + (_rulearray)[__ar].avp_name, \ + &__data.rule_avp, 0 ) ); \ + if ( !__data.rule_avp ) { \ + TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ + return ENOENT; \ + } \ + CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ + { \ + TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ + (_rulearray)[__ar].avp_name ); \ + return EINVAL; \ + } ); \ + } \ +} + +#define enumval_def_u32( _val_, _str_ ) \ + { _str_, { .u32 = _val_ }} + +#define enumval_def_os( _len_, _val_, _str_ ) \ + { _str_, { .os = { .data = (unsigned char *)_val_, .len = _len_ }}} + + +static int dict_dcca_starent_entry(char * conffile) +{ + /* Applications section */ + { + /* Create the vendors */ + { + struct dict_vendor_data vendor_data = { 8164, "Starent" }; + CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); + } + + } + + + struct dict_object * Address_type; + struct dict_object * DiameterIdentity_type; + struct dict_object * DiameterURI_type; + struct dict_object * IPFilterRule_type; + struct dict_object * Time_type; + struct dict_object * UTF8String_type; + + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); + CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); + + /* The following is created automatically. Do not modify. */ + /* Changes will be lost during the next update. Modify the source org file instead. */ + + /* Cisco ASR 5000 Series AAA Interface */ + /* Administration and Reference */ + /* Release 8.x and 9.0 */ + /* Last Updated June 30, 2010 */ + /* SN-Volume-Quota-Threshold */ + { + struct dict_avp_data data = { + 501, /* Code */ + 8164, /* Vendor */ + "SN-Volume-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Unit-Quota-Threshold */ + { + struct dict_avp_data data = { + 502, /* Code */ + 8164, /* Vendor */ + "SN-Unit-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Time-Quota-Threshold */ + { + struct dict_avp_data data = { + 503, /* Code */ + 8164, /* Vendor */ + "SN-Time-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Total-Used-Service-Unit */ + { + struct dict_avp_data data = { + 504, /* Code */ + 8164, /* Vendor */ + "SN-Total-Used-Service-Unit", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Absolute-Validity-Time */ + { + struct dict_avp_data data = { + 505, /* Code */ + 8164, /* Vendor */ + "SN-Absolute-Validity-Time", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SN-Bandwidth-Control */ + { + struct dict_avp_data data = { + 512, /* Code */ + 8164, /* Vendor */ + "SN-Bandwidth-Control", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Starent/Enumerated(SN-Bandwidth-Control)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Transparent-Data */ + { + struct dict_avp_data data = { + 513, /* Code */ + 8164, /* Vendor */ + "SN-Transparent-Data", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Traffic-Policy */ + { + struct dict_avp_data data = { + 514, /* Code */ + 8164, /* Vendor */ + "SN-Traffic-Policy", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Firewall-Policy */ + { + struct dict_avp_data data = { + 515, /* Code */ + 8164, /* Vendor */ + "SN-Firewall-Policy", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Usage-Monitoring-Control */ + { + struct dict_avp_data data = { + 517, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Monitoring-Control", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Monitoring-Key */ + { + struct dict_avp_data data = { + 518, /* Code */ + 8164, /* Vendor */ + "SN-Monitoring-Key", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Usage-Volume */ + { + struct dict_avp_data data = { + 519, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Volume", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Service-Flow-Detection */ + { + struct dict_avp_data data = { + 520, /* Code */ + 8164, /* Vendor */ + "SN-Service-Flow-Detection", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Starent/Enumerated(SN-Service-Flow-Detection)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Usage-Monitoring */ + { + struct dict_avp_data data = { + 521, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Monitoring", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Starent/Enumerated(SN-Usage-Monitoring)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + + TRACE_DEBUG(INFO, "Extension 'Dictionary definitions for DCCA Starent' initialized"); + return 0; +} + +EXTENSION_ENTRY("dict_dcca_starent", dict_dcca_starent_entry, "dict_dcca_3gpp"); diff -r 6e7437162f26 -r bbc08d58325a extensions/dict_dcca_starent/dict_dcca_starent.org --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dict_dcca_starent/dict_dcca_starent.org Sun Mar 10 09:57:57 2013 +0100 @@ -0,0 +1,19 @@ +| Attribute Name | Code | Section defined | Value Type | MUST | MAY | SHLD NOT | MUST NOT | Encr | +| # Cisco ASR 5000 Series AAA Interface | | | | | | | | | +| # Administration and Reference | | | | | | | | | +| # Release 8.x and 9.0 | | | | | | | | | +| # Last Updated June 30, 2010 | | | | | | | | | +| SN-Volume-Quota-Threshold | 501 | | Unsigned32 | M,V | | | | | +| SN-Unit-Quota-Threshold | 502 | | Unsigned32 | M,V | | | | | +| SN-Time-Quota-Threshold | 503 | | Unsigned32 | M,V | | | | | +| SN-Total-Used-Service-Unit | 504 | | Grouped | V | | | | | +| SN-Absolute-Validity-Time | 505 | | Time | V | | | | | +| SN-Bandwidth-Control | 512 | | Enumerated | M,V | | | | | +| SN-Transparent-Data | 513 | | OctetString | V | | | | | +| SN-Traffic-Policy | 514 | | UTF8String | V | | | | | +| SN-Firewall-Policy | 515 | | UTF8String | V | | | | | +| SN-Usage-Monitoring-Control | 517 | | Grouped | V | | | | | +| SN-Monitoring-Key | 518 | | Unsigned32 | V | | | | | +| SN-Usage-Volume | 519 | | Unsigned64 | V | | | | | +| SN-Service-Flow-Detection | 520 | | Enumerated | V | | | | | +| SN-Usage-Monitoring | 521 | | Enumerated | V | | | | | diff -r 6e7437162f26 -r bbc08d58325a extensions/rt_default/CMakeLists.txt --- a/extensions/rt_default/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/rt_default/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -30,15 +30,6 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -# Overwrite the debug level for the extension code if configured, example: cmake -DDEBUG_LEVEL_RT_DEFAULT:STATIC=CALL ... -OPTION(DEBUG_LEVEL_RT_DEFAULT "Overwrite debug level for the extension rt_default if defined (valid values: FULL, ANNOYING, CALL...)" OFF) -IF (DEBUG_LEVEL_RT_DEFAULT) - ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_RT_DEFAULT}) -ENDIF (DEBUG_LEVEL_RT_DEFAULT) -IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - MARK_AS_ADVANCED(DEBUG_LEVEL_RT_DEFAULT) -ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") - # Compile these files as a freeDiameter extension FD_ADD_EXTENSION(rt_default ${RT_DEFAULT_SRC}) diff -r 6e7437162f26 -r bbc08d58325a extensions/test_sip/test_sip.h --- a/extensions/test_sip/test_sip.h Sun Mar 10 04:24:36 2013 +0100 +++ b/extensions/test_sip/test_sip.h Sun Mar 10 09:57:57 2013 +0100 @@ -38,7 +38,9 @@ #include #include #include +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" #include #include diff -r 6e7437162f26 -r bbc08d58325a include/freeDiameter/libfdcore.h --- a/include/freeDiameter/libfdcore.h Sun Mar 10 04:24:36 2013 +0100 +++ b/include/freeDiameter/libfdcore.h Sun Mar 10 09:57:57 2013 +0100 @@ -86,7 +86,7 @@ const char *fd_core_version(void); /* Parse the freeDiameter.conf configuration file, load the extensions */ -int fd_core_parseconf(char * conffile); +int fd_core_parseconf(const char * conffile); /* Start the server & client threads */ int fd_core_start(void); @@ -110,7 +110,7 @@ struct fd_config { int cnf_eyec; /* Eye catcher: EYEC_CONFIG */ - char *cnf_file; /* Configuration file to parse, default is DEFAULT_CONF_FILE */ + const char *cnf_file; /* Configuration file to parse, default is DEFAULT_CONF_FILE */ DiamId_t cnf_diamid; /* Diameter Identity of the local peer (FQDN -- ASCII) */ size_t cnf_diamid_len;/* cached length of the previous string */ @@ -349,7 +349,7 @@ * (other standard errors may be returned, too, with their standard meaning. Example: * ENOMEM : Memory allocation for the new object element failed.) */ -int fd_peer_add ( struct peer_info * info, char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ); +int fd_peer_add ( struct peer_info * info, const char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ); /* * FUNCTION: fd_peer_getbyid diff -r 6e7437162f26 -r bbc08d58325a include/freeDiameter/libfdproto.h --- a/include/freeDiameter/libfdproto.h Sun Mar 10 04:24:36 2013 +0100 +++ b/include/freeDiameter/libfdproto.h Sun Mar 10 09:57:57 2013 +0100 @@ -109,24 +109,25 @@ /* - * FUNCTION: fd_log_debug_fstr + * FUNCTION: fd_log * MACRO: fd_log_debug * * PARAMETERS: - * fstr : Stream where the text will be sent (default: stdout) + * loglevel : Integer, how important the message is * format : Same format string as in the printf function * ... : Same list as printf * * DESCRIPTION: - * Log internal information for use of developpers only. + * Write information to log. * The format and arguments may contain UTF-8 encoded data. The - * output medium (file or console) is expected to support this encoding. + * output medium is expected to support this encoding. * * RETURN VALUE: * None. */ -void fd_log_debug_fstr ( FILE * fstr, const char * format, ... ); -#define fd_log_debug(format,args...) fd_log_debug_fstr(NULL, format, ## args) +void fd_log ( int, const char *, ... ); +#define fd_log_debug(format,args...) fd_log(FD_LOG_DEBUG, format, ## args) +void fd_log_debug_fstr( FILE *, const char *, ... ); /* these are internal objects of the debug facility, might be useful to control the behavior from outside */ @@ -173,7 +174,7 @@ * MACRO: * * PARAMETERS: - * fstr : Stream where the text will be sent to (default: stdout) + * loglevel : priority of the message * format : Same format string as in the printf function * va_list : Argument list * @@ -183,7 +184,7 @@ * RETURN VALUE: * int : Success or failure */ -int fd_log_handler_register ( void (*logger)(const char * format, va_list *args) ); +int fd_log_handler_register ( void (*logger)(int loglevel, const char * format, va_list args) ); /* * FUNCTION: fd_log_handler_unregister @@ -208,7 +209,11 @@ #define ASSERT(x) assert(x) #endif /* ASSERT */ -/* levels definitions */ +/* log levels definitions */ +#define FD_LOG_DEBUG 0 +#define FD_LOG_ERROR 5 + +/* print level definitions */ #define NONE 0 /* Display no debug message */ #define INFO 1 /* Display errors only */ #define FULL 2 /* Display additional information to follow code execution */ @@ -216,14 +221,6 @@ #define FCTS 6 /* Display entry parameters of most functions */ #define CALL 9 /* Display calls to most functions (with CHECK macros) */ -/* Increment the debug level for a file at compilation time by defining -DTRACE_LEVEL=FULL for example. */ -#ifndef TRACE_LEVEL -#define TRACE_LEVEL NONE -#endif /* TRACE_LEVEL */ - -/* The level of the file being compiled. */ -static int local_debug_level = TRACE_LEVEL; - /* A global level, changed by configuration or cmd line for example. Default is INFO (in libfdproto/log.c). */ extern int fd_g_debug_lvl; @@ -246,14 +243,15 @@ /* Boolean for tracing at a certain level */ #ifdef DEBUG -#define TRACE_BOOL(_level_) ( ((_level_) <= local_debug_level + fd_g_debug_lvl) \ +#define TRACE_BOOL(_level_) ( ((_level_) <= fd_g_debug_lvl) \ || (fd_debug_one_function && !strcmp(fd_debug_one_function, __PRETTY_FUNCTION__)) \ || (fd_debug_one_file && !strcmp(fd_debug_one_file, __STRIPPED_FILE__) ) ) #else /* DEBUG */ -#define TRACE_BOOL(_level_) ((_level_) <= local_debug_level + fd_g_debug_lvl) +#define TRACE_BOOL(_level_) ((_level_) <= fd_g_debug_lvl) #endif /* DEBUG */ +#define STD_TRACE_FMT_STRING "thread %s in %s@%s:%d: " /************* The general debug macro, each call results in two lines of debug messages (change the macro for more compact output) *************/ @@ -261,12 +259,9 @@ /* In DEBUG mode, we add (a lot of) meta-information along each trace. This makes multi-threading problems easier to debug. */ #define TRACE_DEBUG(level,format,args... ) { \ if ( TRACE_BOOL(level) ) { \ - char __buf[25]; \ const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ - fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ - "\t%s|%*s" format "\n", \ - __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ - (level < FULL)?"@":" ",level, "", ## args); \ + fd_log(level, STD_TRACE_FMT_STRING format, \ + __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, ## args); \ } \ } #else /* DEBUG */ @@ -274,14 +269,11 @@ #define TRACE_DEBUG(level,format,args... ) { \ if ( TRACE_BOOL(level) ) { \ if (fd_g_debug_lvl > FULL) { \ - char __buf[25]; \ const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ - fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ - "\t%s|%*s" format "\n", \ - __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ - (level < FULL)?"@":" ",level, "", ## args); \ + fd_log(level, STD_TRACE_FMT_STRING format, \ + __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, ## args); \ } else { \ - fd_log_debug(format "\n", ## args); \ + fd_log(level, format, ## args); \ } \ } \ } @@ -315,19 +307,16 @@ /* Trace a binary buffer content */ #define TRACE_DEBUG_BUFFER(level, prefix, buf, bufsz, suffix ) { \ if ( TRACE_BOOL(level) ) { \ - char __ts[25]; \ int __i; \ size_t __sz = (size_t)(bufsz); \ uint8_t * __buf = (uint8_t *)(buf); \ char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ - fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ - "\t%s|%*s" prefix , \ - __thn, fd_log_time(NULL, __ts, sizeof(__ts)), __PRETTY_FUNCTION__, __FILE__, __LINE__, \ - (level < FULL)?"@":" ",level, ""); \ + fd_log(level, STD_TRACE_FMT_STRING prefix, \ + __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__); \ for (__i = 0; __i < __sz; __i++) { \ - fd_log_debug("%02.2hhx", __buf[__i]); \ + fd_log(level, "%02.2hhx", __buf[__i]); \ } \ - fd_log_debug(suffix "\n"); \ + fd_log(level, suffix); \ } \ } @@ -344,7 +333,7 @@ 0 ) ) ) /* Dump one sockaddr Node information */ -#define sSA_DUMP_NODE( sa, flag ) { \ +#define sSA_DUMP_NODE( buf, bufsize, sa, flag ) { \ sSA * __sa = (sSA *)(sa); \ char __addrbuf[INET6_ADDRSTRLEN]; \ if (__sa) { \ @@ -356,15 +345,15 @@ 0, \ flag); \ if (__rc) \ - fd_log_debug("%s", (char *)gai_strerror(__rc)); \ + snprintf(buf, bufsize, "%s", gai_strerror(__rc)); \ else \ - fd_log_debug("%s", &__addrbuf[0]); \ + snprintf(buf, bufsize, "%s", &__addrbuf[0]); \ } else { \ - fd_log_debug("(NULL / ANY)"); \ + snprintf(buf, bufsize, "(NULL / ANY)"); \ } \ } /* Same but with the port (service) also */ -#define sSA_DUMP_NODE_SERV( sa, flag ) { \ +#define sSA_DUMP_NODE_SERV( buf, bufsize, sa, flag ) { \ sSA * __sa = (sSA *)(sa); \ char __addrbuf[INET6_ADDRSTRLEN]; \ char __servbuf[32]; \ @@ -377,25 +366,22 @@ sizeof(__servbuf), \ flag); \ if (__rc) \ - fd_log_debug("%s", (char *)gai_strerror(__rc)); \ + snprintf(buf, bufsize, "%s", gai_strerror(__rc)); \ else \ - fd_log_debug("[%s]:%s", &__addrbuf[0],&__servbuf[0]); \ + snprintf(buf, bufsize, "[%s]:%s", &__addrbuf[0],&__servbuf[0]); \ } else { \ - fd_log_debug("(NULL / ANY)"); \ + snprintf(buf, bufsize,"(NULL / ANY)"); \ } \ } /* Inside a debug trace */ #define TRACE_DEBUG_sSA(level, prefix, sa, flags, suffix ) { \ if ( TRACE_BOOL(level) ) { \ - char __buf[25]; \ + char buf[1024]; \ char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ - fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ - "\t%s|%*s" prefix , \ - __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ - (level < FULL)?"@":" ",level, ""); \ - sSA_DUMP_NODE_SERV( sa, flags ); \ - fd_log_debug(suffix "\n"); \ + sSA_DUMP_NODE_SERV(buf, sizeof(buf), sa, flags ); \ + fd_log(level, STD_TRACE_FMT_STRING "%s%s%s", \ + __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, prefix, buf, suffix); \ } \ } @@ -417,7 +403,7 @@ #define TRACE_DEBUG_BUFFER(level, prefix, buf, bufsz, suffix ) #define TRACE_DEBUG_sSA(level, prefix, sa, flags, suffix ) #define TRACE_DEBUG_ERROR(format,args... ) { \ - fd_log_debug(format "\n", ## args); \ + fd_log(FD_LOG_ERROR, format, ## args); \ } #endif /* STRIP_DEBUG_CODE */ @@ -1444,6 +1430,9 @@ ret = fd_dict_search ( dict, DICT_AVP, AVP_BY_NAME, "User-Name", &avp_username, ENOENT); ret = fd_dict_search ( dict, DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avpvendorboolean, &avp_sampleboolean, ENOENT); + + -- this would also work, but be slower, because it has to search all vendor dictionaries -- + ret = fd_dict_search ( dict, DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Sample-Boolean", &avp_sampleboolean, ENOENT); } diff -r 6e7437162f26 -r bbc08d58325a libfdcore/cnxctx.c --- a/libfdcore/cnxctx.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/cnxctx.c Sun Mar 10 09:57:57 2013 +0100 @@ -228,9 +228,9 @@ CHECK_SYS_DO( cli_sock = accept(serv->cc_socket, (sSA *)&ss, &ss_len), return NULL ); if (TRACE_BOOL(INFO)) { - fd_log_debug("%s : accepted new client [", fd_cnx_getid(serv)); - sSA_DUMP_NODE( &ss, NI_NUMERICHOST ); - fd_log_debug("].\n"); + char buf[1024]; + sSA_DUMP_NODE( buf, sizeof(buf), &ss, NI_NUMERICHOST ); + fd_log_debug("%s : accepted new client [%s].\n", fd_cnx_getid(serv), buf); } CHECK_MALLOC_DO( cli = fd_cnx_init(1), { shutdown(cli_sock, SHUT_RDWR); close(cli_sock); return NULL; } ); @@ -311,9 +311,9 @@ } if (TRACE_BOOL(INFO)) { - fd_log_debug("Connection established to server '"); - sSA_DUMP_NODE_SERV( sa, NI_NUMERICSERV); - fd_log_debug("' (TCP:%d).\n", sock); + char buf[1024]; + sSA_DUMP_NODE_SERV( buf, sizeof(buf), sa, NI_NUMERICSERV); + fd_log_debug("Connection established to server '%s' (TCP:%d).\n", buf, sock); } /* Once the socket is created successfuly, prepare the remaining of the cnx */ @@ -403,9 +403,9 @@ cnx->cc_sctp_para.pairs = cnx->cc_sctp_para.str_in; if (TRACE_BOOL(INFO)) { - fd_log_debug("Connection established to server '"); - sSA_DUMP_NODE_SERV( &primary, NI_NUMERICSERV); - fd_log_debug("' (SCTP:%d, %d/%d streams).\n", sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out); + char buf[1024]; + sSA_DUMP_NODE_SERV( buf, sizeof(buf), &primary, NI_NUMERICSERV); + fd_log_debug("Connection established to server '%s' (SCTP:%d, %d/%d streams).\n", buf, sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out); } /* Generate the names for the object */ diff -r 6e7437162f26 -r bbc08d58325a libfdcore/config.c --- a/libfdcore/config.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/config.c Sun Mar 10 09:57:57 2013 +0100 @@ -229,7 +229,7 @@ int fd_conf_parse() { extern FILE * fddin; - char * orig = NULL; + const char * orig = NULL; /* Attempt to find the configuration file */ if (!fd_g_config->cnf_file) @@ -237,23 +237,18 @@ fddin = fopen(fd_g_config->cnf_file, "r"); if ((fddin == NULL) && (*fd_g_config->cnf_file != '/')) { + char * new_cnf = NULL; /* We got a relative path, attempt to add the default directory prefix */ orig = fd_g_config->cnf_file; - CHECK_MALLOC( fd_g_config->cnf_file = malloc(strlen(orig) + strlen(DEFAULT_CONF_PATH) + 2) ); /* we will not free it, but not important */ - sprintf( fd_g_config->cnf_file, DEFAULT_CONF_PATH "/%s", orig ); + CHECK_MALLOC( new_cnf = malloc(strlen(orig) + strlen(DEFAULT_CONF_PATH) + 2) ); /* we will not free it, but not important */ + sprintf( new_cnf, DEFAULT_CONF_PATH "/%s", orig ); + fd_g_config->cnf_file = new_cnf; fddin = fopen(fd_g_config->cnf_file, "r"); } if (fddin == NULL) { int ret = errno; - if (orig) { - fprintf(stderr, "Unable to open configuration file for reading\n" - "Tried the following locations:\n" - " - %s\n" - " - %s\n" - "Error: %s\n", orig, fd_g_config->cnf_file, strerror(ret)); - } else { - fprintf(stderr, "Unable to open '%s' for reading: %s\n", fd_g_config->cnf_file, strerror(ret)); - } + TRACE_DEBUG_ERROR("Unable to open configuration file for reading; tried the following locations: %s%s%s; Error: %s\n", + orig ?: "", orig? " and " : "", fd_g_config->cnf_file, strerror(ret)); return ret; } @@ -351,9 +346,9 @@ li = li->prev; fd_list_unlink(&ep->chain); if (TRACE_BOOL(INFO)) { - fd_log_debug("Info: Removing local address conflicting with the flags no_IP / no_IP6 : "); - sSA_DUMP_NODE( &ep->sa, NI_NUMERICHOST ); - fd_log_debug("\n"); + char buf[1024]; + sSA_DUMP_NODE( buf, sizeof(buf), &ep->sa, NI_NUMERICHOST ); + fd_log_debug("Info: Removing local address conflicting with the flags no_IP / no_IP6 : %s\n", buf); } free(ep); } diff -r 6e7437162f26 -r bbc08d58325a libfdcore/core.c --- a/libfdcore/core.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/core.c Sun Mar 10 09:57:57 2013 +0100 @@ -225,7 +225,7 @@ } /* Parse the freeDiameter.conf configuration file, load the extensions */ -int fd_core_parseconf(char * conffile) +int fd_core_parseconf(const char * conffile) { TRACE_ENTRY("%p", conffile); diff -r 6e7437162f26 -r bbc08d58325a libfdcore/endpoints.c --- a/libfdcore/endpoints.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/endpoints.c Sun Mar 10 09:57:57 2013 +0100 @@ -58,12 +58,12 @@ } if (TRACE_BOOL(ANNOYING + 1)) { + char buf[1024]; + sSA_DUMP_NODE_SERV( buf, sizeof(buf), sa, NI_NUMERICHOST | NI_NUMERICSERV ); TRACE_DEBUG(ANNOYING, " DEBUG:fd_ep_add_merge Current list:"); fd_ep_dump( 4, list ); TRACE_DEBUG(ANNOYING, " DEBUG:fd_ep_add_merge Adding:"); - fd_log_debug(" "); - sSA_DUMP_NODE_SERV( sa, NI_NUMERICHOST | NI_NUMERICSERV ); - fd_log_debug(" {%s%s%s%s}\n", + fd_log_debug(" %s {%s%s%s%s}\n", buf, (flags & EP_FL_CONF) ? "C" : "-", (flags & EP_FL_DISC) ? "D" : "-", (flags & EP_FL_ADV) ? "A" : "-", @@ -335,18 +335,16 @@ void fd_ep_dump_one( char * prefix, struct fd_endpoint * ep, char * suffix ) { - if (prefix) - fd_log_debug("%s", prefix); + char buf[1024]; - sSA_DUMP_NODE_SERV( &ep->sa, NI_NUMERICHOST | NI_NUMERICSERV ); - fd_log_debug(" {%s%s%s%s}", + sSA_DUMP_NODE_SERV( buf, sizeof(buf), &ep->sa, NI_NUMERICHOST | NI_NUMERICSERV ); + fd_log_debug("%s%s {%s%s%s%s}%s", prefix ?: "", buf, (ep->flags & EP_FL_CONF) ? "C" : "-", (ep->flags & EP_FL_DISC) ? "D" : "-", (ep->flags & EP_FL_ADV) ? "A" : "-", (ep->flags & EP_FL_LL) ? "L" : "-", - (ep->flags & EP_FL_PRIMARY) ? "P" : "-"); - if (suffix) - fd_log_debug("%s", suffix); + (ep->flags & EP_FL_PRIMARY) ? "P" : "-", + suffix ?: ""); } void fd_ep_dump( int indent, struct fd_list * eps ) diff -r 6e7437162f26 -r bbc08d58325a libfdcore/fdd.l diff -r 6e7437162f26 -r bbc08d58325a libfdcore/fdd.y diff -r 6e7437162f26 -r bbc08d58325a libfdcore/peers.c --- a/libfdcore/peers.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/peers.c Sun Mar 10 09:57:57 2013 +0100 @@ -90,7 +90,7 @@ } /* Add a new peer entry */ -int fd_peer_add ( struct peer_info * info, char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ) +int fd_peer_add ( struct peer_info * info, const char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ) { struct fd_peer *p = NULL; struct fd_list * li, *li_inf; diff -r 6e7437162f26 -r bbc08d58325a libfdcore/sctp.c --- a/libfdcore/sctp.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdcore/sctp.c Sun Mar 10 09:57:57 2013 +0100 @@ -908,6 +908,8 @@ return ENOTSUP; } if (TRACE_BOOL(SCTP_LEVEL)) { + char buf[1024]; + sSA_DUMP_NODE_SERV(buf, sizeof(buf), &status.sstat_primary.spinfo_address, NI_NUMERICHOST | NI_NUMERICSERV ); fd_log_debug( "SCTP_STATUS : sstat_state : %i\n" , status.sstat_state); fd_log_debug( " sstat_rwnd : %u\n" , status.sstat_rwnd); fd_log_debug( " sstat_unackdata : %hu\n", status.sstat_unackdata); @@ -915,9 +917,7 @@ fd_log_debug( " sstat_instrms : %hu\n", status.sstat_instrms); fd_log_debug( " sstat_outstrms : %hu\n", status.sstat_outstrms); fd_log_debug( " sstat_fragmentation_point : %u\n" , status.sstat_fragmentation_point); - fd_log_debug( " sstat_primary.spinfo_address : "); - sSA_DUMP_NODE_SERV(&status.sstat_primary.spinfo_address, NI_NUMERICHOST | NI_NUMERICSERV ); - fd_log_debug( "\n" ); + fd_log_debug( " sstat_primary.spinfo_address : %s\n" , buf); fd_log_debug( " sstat_primary.spinfo_state : %d\n" , status.sstat_primary.spinfo_state); fd_log_debug( " sstat_primary.spinfo_cwnd : %u\n" , status.sstat_primary.spinfo_cwnd); fd_log_debug( " sstat_primary.spinfo_srtt : %u\n" , status.sstat_primary.spinfo_srtt); diff -r 6e7437162f26 -r bbc08d58325a libfdproto/dictionary.c --- a/libfdproto/dictionary.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdproto/dictionary.c Sun Mar 10 09:57:57 2013 +0100 @@ -1277,8 +1277,6 @@ else _OBINFO(obj).dump_data(&obj->data); - fd_log_debug("\n"); - if (depth) { int i; for (i=0; idata.vendor.vendor_name); /* if we are here, it means the two vendors id are identical */ if (fd_os_cmp(locref->data.vendor.vendor_name, locref->datastr_len, new->data.vendor.vendor_name, new->datastr_len)) { @@ -1735,6 +1733,7 @@ break; case DICT_APPLICATION: + TRACE_DEBUG(FULL, "Application %s already in dictionary", new->data.application.application_name); /* got same id */ if (fd_os_cmp(locref->data.application.application_name, locref->datastr_len, new->data.application.application_name, new->datastr_len)) { @@ -1745,6 +1744,7 @@ break; case DICT_TYPE: + TRACE_DEBUG(FULL, "Type %s already in dictionary", new->data.type.type_name); /* got same name */ if (locref->data.type.type_base != new->data.type.type_base) { TRACE_DEBUG(FULL, "Conflicting base type"); @@ -1767,6 +1767,7 @@ break; case DICT_ENUMVAL: + TRACE_DEBUG(FULL, "Enum %s already in dictionary", new->data.enumval.enum_name); /* got either same name or same value. We check that both are true */ if (order_enum_by_name(locref, new)) { TRACE_DEBUG(FULL, "Conflicting enum name"); @@ -1780,6 +1781,7 @@ break; case DICT_AVP: + TRACE_DEBUG(FULL, "AVP %s already in dictionary", new->data.avp.avp_name); /* got either same name or code */ if (order_avp_by_code(locref, new)) { TRACE_DEBUG(FULL, "Conflicting AVP code"); @@ -1809,6 +1811,7 @@ break; case DICT_COMMAND: + TRACE_DEBUG(FULL, "Command %s already in dictionary", new->data.cmd.cmd_name); /* We got either same name, or same code + R flag */ if (order_cmd_by_name(locref, new)) { TRACE_DEBUG(FULL, "Conflicting command name"); diff -r 6e7437162f26 -r bbc08d58325a libfdproto/log.c --- a/libfdproto/log.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdproto/log.c Sun Mar 10 09:57:57 2013 +0100 @@ -43,6 +43,8 @@ pthread_key_t fd_log_thname; int fd_g_debug_lvl = INFO; +static void fd_internal_logger( int, const char *, va_list ); + /* These may be used to pass specific debug requests via the command-line parameters */ char * fd_debug_one_function = NULL; char * fd_debug_one_file = NULL; @@ -52,28 +54,29 @@ int fd_breakhere(void) { return ++fd_breaks; } /* Allow passing of the log and debug information from base stack to extensions */ -void (*fd_external_logger)( const char * format, va_list *args ) = NULL; +void (*fd_logger)( int loglevel, const char * format, va_list args ) = fd_internal_logger; -/* Register an dexternal call back for tracing and debug */ -int fd_log_handler_register( void (*logger)(const char * format, va_list *args)) +/* Register an external call back for tracing and debug */ +int fd_log_handler_register( void (*logger)(int loglevel, const char * format, va_list args) ) { CHECK_PARAMS( logger ); - if ( fd_external_logger != NULL ) + if ( fd_logger != fd_internal_logger ) { return EALREADY; /* only one registration allowed */ } else { - fd_external_logger = logger; + fd_logger = logger; } + return 0; } /* Implement a simple reset function here */ int fd_log_handler_unregister ( void ) { - fd_external_logger = NULL; + fd_logger = fd_internal_logger; return 0; /* Successfull in all cases. */ } @@ -82,8 +85,25 @@ (void)pthread_mutex_unlock((pthread_mutex_t *)mutex); } + +static void fd_internal_logger( int loglevel, const char *format, va_list ap ) +{ + char buf[25]; + FILE *fstr = fd_g_debug_fstr ?: stdout; + + /* logging has been decided by macros outside already */ + + /* add timestamp */ + fprintf(fd_g_debug_fstr, "%s\t", fd_log_time(NULL, buf, sizeof(buf))); + vfprintf(fd_g_debug_fstr, format, ap); + if (format && (format[strlen(format)-1] != '\n')) { + fprintf(fd_g_debug_fstr, "\n"); + } + fflush(fd_g_debug_fstr); +} + /* Log a debug message */ -void fd_log_debug_fstr ( FILE * fstr, const char * format, ... ) +void fd_log ( int loglevel, const char * format, ... ) { va_list ap; @@ -92,15 +112,7 @@ pthread_cleanup_push(fd_cleanup_mutex_silent, &fd_log_lock); va_start(ap, format); - if ( fd_external_logger != NULL ) - { - fd_external_logger( format, &ap ); - } - else - { - vfprintf( fstr ?: stdout, format, ap); - fflush(fstr ?: stdout); - } + fd_logger(loglevel, format, ap); va_end(ap); pthread_cleanup_pop(0); @@ -108,6 +120,16 @@ (void)pthread_mutex_unlock(&fd_log_lock); } +/* Log debug message to file. */ +void fd_log_debug_fstr( FILE * fstr, const char * format, ... ) +{ + va_list ap; + + va_start(ap, format); + vfprintf(fstr, format, ap); + va_end(ap); +} + /* Function to set the thread's friendly name */ void fd_log_threadname ( const char * name ) { diff -r 6e7437162f26 -r bbc08d58325a libfdproto/messages.c --- a/libfdproto/messages.c Sun Mar 10 04:24:36 2013 +0100 +++ b/libfdproto/messages.c Sun Mar 10 09:57:57 2013 +0100 @@ -682,27 +682,27 @@ size_t tsoffset = 0; struct tm tm; - CHECK_FCT( dump_add_str(outstr, offset, outlen, "%*sMSG: %p\n", INOBJHDRVAL, msg) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, "%*sMSG: %p|", INOBJHDRVAL, msg) ); if (!CHECK_MSG(msg)) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!\n", INOBJHDRVAL) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!", INOBJHDRVAL) ); return 0; } if ((msg->msg_ts_rcv.tv_sec != 0) || (msg->msg_ts_rcv.tv_nsec != 0)) { tsoffset += strftime(buftime + tsoffset, sizeof(buftime) - tsoffset, "%D,%T", localtime_r( &msg->msg_ts_rcv.tv_sec , &tm )); tsoffset += snprintf(buftime + tsoffset, sizeof(buftime) - tsoffset, ".%6.6ld", msg->msg_ts_rcv.tv_nsec / 1000); - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Received: %s\n", INOBJHDRVAL, buftime) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Received: %s|", INOBJHDRVAL, buftime) ); } if ((msg->msg_ts_sent.tv_sec != 0) || (msg->msg_ts_sent.tv_nsec != 0)) { tsoffset += strftime(buftime + tsoffset, sizeof(buftime) - tsoffset, "%D,%T", localtime_r( &msg->msg_ts_sent.tv_sec , &tm )); tsoffset += snprintf(buftime + tsoffset, sizeof(buftime) - tsoffset, ".%6.6ld", msg->msg_ts_sent.tv_nsec / 1000); - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Sent : %s\n", INOBJHDRVAL, buftime) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Sent : %s|", INOBJHDRVAL, buftime) ); } if (!msg->msg_model) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model)\n", INOBJHDRVAL) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model)|", INOBJHDRVAL) ); } else { @@ -710,19 +710,19 @@ struct dict_cmd_data dictdata; ret = fd_dict_gettype(msg->msg_model, &dicttype); if (ret || (dicttype != DICT_COMMAND)) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)\n", INOBJHDRVAL, ret, dicttype) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)|", INOBJHDRVAL, ret, dicttype) ); goto public; } ret = fd_dict_getval(msg->msg_model, &dictdata); if (ret != 0) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)\n", INOBJHDRVAL, strerror(ret)) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)|", INOBJHDRVAL, strerror(ret)) ); goto public; } - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %u \"%s\"\n", INOBJHDRVAL, + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %u \"%s\"|", INOBJHDRVAL, DUMP_CMDFL_val(dictdata.cmd_flag_val), DUMP_CMDFL_val(dictdata.cmd_flag_mask), dictdata.cmd_code, dictdata.cmd_name) ); } public: - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: V:%d L:%d fl:" DUMP_CMDFL_str " CC:%u A:%d hi:%x ei:%x\n", INOBJHDRVAL, + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: V:%d L:%d fl:" DUMP_CMDFL_str " CC:%u A:%d hi:%x ei:%x|", INOBJHDRVAL, msg->msg_public.msg_version, msg->msg_public.msg_length, DUMP_CMDFL_val(msg->msg_public.msg_flags), @@ -731,7 +731,7 @@ msg->msg_public.msg_hbhid, msg->msg_public.msg_eteid ) ); - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p(%p) qry:%p asso:%d sess:%p src:%s(%zd)\n", + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p(%p) qry:%p asso:%d sess:%p src:%s(%zd)|", INOBJHDRVAL, msg->msg_rawbuffer, msg->msg_routable, msg->msg_cb.fct, msg->msg_cb.data, msg->msg_query, msg->msg_associated, msg->msg_sess, msg->msg_src_id?:"(nil)", msg->msg_src_id_len) ); return 0; } @@ -742,13 +742,13 @@ int ret = 0; if (!CHECK_AVP(avp)) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!\n", INOBJHDRVAL) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!", INOBJHDRVAL) ); return 0; } if (!avp->avp_model) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model resolved)\n", INOBJHDRVAL) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model resolved)|", INOBJHDRVAL) ); } else { @@ -756,15 +756,15 @@ struct dict_avp_data dictdata; ret = fd_dict_gettype(avp->avp_model, &dicttype); if (ret || (dicttype != DICT_AVP)) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)\n", INOBJHDRVAL, ret, dicttype) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)|", INOBJHDRVAL, ret, dicttype) ); goto public; } ret = fd_dict_getval(avp->avp_model, &dictdata); if (ret != 0) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)\n", INOBJHDRVAL, strerror(ret)) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)|", INOBJHDRVAL, strerror(ret)) ); goto public; } - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %u \"%s\"\n", INOBJHDRVAL, + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %u \"%s\"|", INOBJHDRVAL, DUMP_AVPFL_val(dictdata.avp_flag_val), DUMP_AVPFL_val(dictdata.avp_flag_mask), type_base_name[dictdata.avp_basetype], @@ -772,7 +772,7 @@ dictdata.avp_name ) ); } public: - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: C:%u fl:" DUMP_AVPFL_str " L:%d V:%u data:@%p\n", INOBJHDRVAL, + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: C:%u fl:" DUMP_AVPFL_str " L:%d V:%u data:@%p|", INOBJHDRVAL, avp->avp_public.avp_code, DUMP_AVPFL_val(avp->avp_public.avp_flags), avp->avp_public.avp_len, @@ -782,13 +782,13 @@ /* Dump the value if set */ if (avp->avp_public.avp_value) { if (!avp->avp_model) { - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(data set but no model: ERROR)\n", INOBJHDRVAL) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(data set but no model: ERROR)|", INOBJHDRVAL) ); } else { CHECK_FCT( fd_dict_dump_avp_value(avp->avp_public.avp_value, avp->avp_model, indent, outstr, offset, outlen) ); } } - CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: src:%p mf:%d raw:%p(%d)\n", INOBJHDRVAL, avp->avp_source, avp->avp_mustfreeos, avp->avp_rawdata, avp->avp_rawlen) ); + CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: src:%p mf:%d raw:%p(%d)|", INOBJHDRVAL, avp->avp_source, avp->avp_mustfreeos, avp->avp_rawdata, avp->avp_rawlen) ); return 0; } @@ -879,7 +879,7 @@ /* now really output this in one shot, so it is not interrupted */ TRACE_DEBUG(level, "------ Dumping object %p (w)-------", obj); - fd_log_debug_fstr(fd_g_debug_fstr, "%s", outstr); + TRACE_DEBUG(level, "%s", outstr); TRACE_DEBUG(level, "------ /end of object %p -------", obj); free(outstr); @@ -895,7 +895,7 @@ CHECK_FCT_DO( msg_dump_intern ( level, obj, 1, &outstr, &offset, &outlen ), fd_log_debug_fstr(fd_g_debug_fstr, "Error while dumping %p\n", obj) ); TRACE_DEBUG(level, "------ Dumping object %p (s)-------", obj); - fd_log_debug_fstr(fd_g_debug_fstr, "%s", outstr); + TRACE_DEBUG(level, "%s", outstr); TRACE_DEBUG(level, "------ /end of object %p -------", obj); free(outstr); } diff -r 6e7437162f26 -r bbc08d58325a tests/CMakeLists.txt --- a/tests/CMakeLists.txt Sun Mar 10 04:24:36 2013 +0100 +++ b/tests/CMakeLists.txt Sun Mar 10 09:57:57 2013 +0100 @@ -35,7 +35,6 @@ # Some parameters for the tests ADD_DEFINITIONS(-DTEST_DEBUG) -ADD_DEFINITIONS(-DTRACE_LEVEL=NONE) ADD_DEFINITIONS(-DBUILD_DIR="${CMAKE_BINARY_DIR}") INCLUDE_DIRECTORIES( "../libfdproto" ) diff -r 6e7437162f26 -r bbc08d58325a tests/tests.h --- a/tests/tests.h Sun Mar 10 04:24:36 2013 +0100 +++ b/tests/tests.h Sun Mar 10 09:57:57 2013 +0100 @@ -46,7 +46,9 @@ #include #include +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic warning "-Wdeprecated-declarations" /* Test timeout duration, unless -n is passed on the command line */ #ifndef TEST_TIMEOUT