diff options
| author | Lucas Castro <lucas@gnuabordo.com.br> | 2024-11-12 15:22:24 -0300 |
|---|---|---|
| committer | Lucas Castro <lucas@gnuabordo.com.br> | 2024-11-12 15:22:24 -0300 |
| commit | 098d08cda21c1c2c32e59e613aeb043b875b7543 (patch) | |
| tree | 1788e4c3f7f457ef77c2738bcf0d02eb59df5976 | |
| parent | 307c1de1ee4d461c0274ea73cd3f3ad9af5b515c (diff) | |
debian patches updated
| -rw-r--r-- | debian/patches/ogs-freediameter.patch | 2165 | ||||
| -rw-r--r-- | debian/patches/series | 7 |
2 files changed, 2169 insertions, 3 deletions
diff --git a/debian/patches/ogs-freediameter.patch b/debian/patches/ogs-freediameter.patch new file mode 100644 index 0000000..4daa2c5 --- /dev/null +++ b/debian/patches/ogs-freediameter.patch @@ -0,0 +1,2165 @@ +diff --git a/.dir-locals.el b/.dir-locals.el +deleted file mode 100644 +index 28c6034..0000000 +--- a/.dir-locals.el ++++ /dev/null +@@ -1,5 +0,0 @@ +-;;; Directory Local Variables +-;;; For more information see (info "(emacs) Directory Variables") +- +-((c-mode +- (c-basic-offset . 8))) +diff --git a/.hgignore b/.hgignore +deleted file mode 100644 +index fc0bffd..0000000 +--- a/.hgignore ++++ /dev/null +@@ -1,12 +0,0 @@ +-syntax: glob +-*.orig +-*.rej +-*~ +-*.log +-*.sum +-.hg +-build* +-test.* +-GPATH +-GRTAGS +-GTAGS +diff --git a/contrib/tools/diameter-rfcs.org b/contrib/tools/diameter-rfcs.org +new file mode 100644 +index 0000000..5d92cae +--- /dev/null ++++ b/contrib/tools/diameter-rfcs.org +@@ -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 --git a/extensions/acl_wl/aw_conf.y b/extensions/acl_wl/aw_conf.y +index 3825aa2..43255cb 100644 +--- a/extensions/acl_wl/aw_conf.y ++++ b/extensions/acl_wl/aw_conf.y +@@ -39,14 +39,14 @@ + + /* For development only : */ + %debug +-%error-verbose ++%define parse.error verbose + + /* The parser receives the configuration file filename as parameter */ + %parse-param {char * conffile} + + /* Keep track of location */ + %locations +-%pure-parser ++%define api.pure + + %{ + #include "acl_wl.h" +diff --git a/extensions/acl_wl/meson.build b/extensions/acl_wl/meson.build +new file mode 100644 +index 0000000..6619ec6 +--- /dev/null ++++ b/extensions/acl_wl/meson.build +@@ -0,0 +1,21 @@ ++lgen = generator(flex, ++ output : 'lex.@BASENAME@.c', ++ arguments : ['-p', '-Cem', '-Paw_conf', '-o', '@OUTPUT@', '@INPUT@']) ++lfiles = lgen.process('aw_conf.l') ++ ++pgen = generator(bison, ++ output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'], ++ arguments : ['-p', 'aw_conf', '-d', ++ '@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']) ++pfiles = pgen.process('aw_conf.y') ++ ++shared_module('acl_wl', ++ sources : [lfiles, pfiles, files( ++ 'acl_wl.c', ++ 'aw_tree.c')], ++ include_directories : freeDiameter_includes, ++ dependencies : libfdcore_dep, ++ name_prefix : '', ++ name_suffix : 'fdx', ++ install : true, ++ install_dir : freeDiameter_extensionsdir) +diff --git a/extensions/dict_dcca/dict_dcca.c b/extensions/dict_dcca/dict_dcca.c +index 5d94603..8ab5a97 100644 +--- a/extensions/dict_dcca/dict_dcca.c ++++ b/extensions/dict_dcca/dict_dcca.c +@@ -69,11 +69,16 @@ static int dict_dcca_entry(char * conffile) + + /* Applications section */ + { +- /* DCCA */ +- { +- struct dict_application_data data = { 4, "Diameter Credit Control Application" }; +- CHECK_dict_new( DICT_APPLICATION, &data, NULL, &dcca); +- } ++ { ++ 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 * vendor; ++ CHECK_FCT(fd_dict_search(fd_g_config->cnf_dict, DICT_VENDOR, VENDOR_BY_NAME, "3GPP", &vendor, ENOENT)); ++ struct dict_application_data app_data = { 16777238, "Gx" }; ++ CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_APPLICATION, &app_data, vendor, &dcca)); ++ } + } + + /* Result codes */ +@@ -1362,7 +1367,7 @@ static int dict_dcca_entry(char * conffile) + { "Origin-Realm", RULE_REQUIRED, -1, 1 }, + { "Destination-Realm", RULE_REQUIRED, -1, 1 }, + { "Auth-Application-Id", RULE_REQUIRED, -1, 1 }, +- { "Service-Context-Id", RULE_REQUIRED, -1, 1 }, ++ { "Service-Context-Id", RULE_OPTIONAL, -1, 1 }, + { "CC-Request-Type", RULE_REQUIRED, -1, 1 }, + { "CC-Request-Number", RULE_REQUIRED, -1, 1 }, + { "Destination-Host", RULE_OPTIONAL, -1, 1 }, +diff --git a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c +index 3d58cf6..038e707 100644 +--- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c ++++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c +@@ -153,10 +153,6 @@ static int dict_dcca_3gpp_entry(char * conffile) + + { + /* 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_vendor_data vendor_data = { 5535, "3GPP2" }; + CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); +diff --git a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.org b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.org +new file mode 100644 +index 0000000..90a2b70 +--- /dev/null ++++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.org +@@ -0,0 +1,785 @@ ++| 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.140-700 (7.0.0 2007.07.05) | | | | | | | | | ++| Served-User-Identity | 1100 | 6.3.1 | Grouped | M,V | | | | N | ++| # reuses: MSISDN | 701 | 6.3.2 | OctetString | M,V | | | | N | ++| VASP-ID | 1101 | 6.3.3 | UTF8String | M,V | | | | N | ++| VAS-ID | 1102 | 6.3.4 | UTF8String | M,V | | | | N | ++| Trigger-Event | 1103 | 6.3.5 | Enumerated | M,V | | | | N | ++| # reuses: 3GPP-IMSI | 1 | 6.3.6 | UTF8String | M,V | | | | N | ++| Sender-Address | 1104 | 6.3.7 | UTF8String | M,V | | | | N | ++| Initial-Recipient-Address | 1105 | 6.3.8 | Grouped | M,V | | | | N | ++| Result-Recipient-Address | 1106 | 6.3.9 | Grouped | M,V | | | | N | ++| # conflicts with one in (more common) 32.329 | | | | | | | | | ++| Sequence-Number-29.140 | 1107 | 6.3.10 | Unsigned32 | M,V | | | | N | ++| # conflicts with one in (more common) 32.299 | | | | | | | | | ++| Recipient-Address-29.140 | 1108 | 6.3.11 | UTF8String | M,V | | | | N | ++| Routeing-Address | 1109 | 6.3.12 | UTF8String | M,V | | | | N | ++| Originating-Interface | 1110 | 6.3.13 | Enumerated | M,V | | | | N | ++| Delivery-Report | 1111 | 6.3.14 | Enumerated | M,V | | | | N | ++| Read-Reply | 1112 | 6.3.15 | Enumerated | M,V | | | | N | ++| Sender-Visibility | 1113 | 6.3.16 | Enumerated | M,V | | | | N | ++| Service-Key | 1114 | 6.3.17 | UTF8String | M,V | | | | N | ++| Billing-Information | 1115 | 6.3.18 | UTF8String | M,V | | | | N | ++| # conflicts with one in (more common) 32.299 | | | | | | | | | ++| Status-29.140 | 1116 | 6.3.19 | Grouped | M,V | | | | N | ++| Status-Code | 1117 | 6.3.20 | UTF8String | M,V | | | | N | ++| Status-Text | 1118 | 6.3.21 | UTF8String | M,V | | | | N | ++| Routeing-Address-Resolution | 1119 | 6.3.22 | Enumerated | M,V | | | | N | ++| # 3GPP 29.173-c00 (12.0.0 2013.03.13) | | | | | | | | | ++| LMSI | 2400 | 6.4.2 | OctetString | M,V | | | | N | ++| Serving-Node | 2401 | 6.4.3 | Grouped | M,V | | | | N | ++| MME-Name | 2402 | 6.4.4 | DiameterIdentity | M,V | | | | N | ++| MSC-Number | 2403 | 6.4.5 | OctetString | M,V | | | | N | ++| LCS-Capabilities-Sets | 2404 | 6.4.6 | Unsigned32 | M,V | | | | N | ++| GMLC-Address | 2405 | 6.4.7 | Address | M,V | | | | N | ++| Additional-Serving-Node | 2406 | 6.4.8 | Grouped | M,V | | | | N | ++| PPR-Address | 2407 | 6.4.9 | Address | M,V | | | | N | ++| MME-Realm | 2408 | 6.4.12 | DiameterIdentity | V | | | M | N | ++| SGSN-Name | 2409 | 6.4.13 | DiameterIdentity | V | | | M | N | ++| SGSN-Realm | 2410 | 6.4.14 | DiameterIdentity | V | | | M | N | ++| # 3GPP 29.210-670 (6.7.0 2006-12-18) | | | | | | | | | ++| PDP-Session-Operation | 1015 | 5.2.21 | Enumerated | M,V | P | | | Y | ++| # 3GPP 29.212-c00 (12.0.0 2013.03.15) | | | | | | | | | ++| # Gx-specific | | | | | | | | | ++| 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-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 | ++| # Gxx-specific | | | | | | | | | ++| 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 | ++| # S15-specific | | | | | | | | | ++| 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.214-b80 (11.8.0 2013.03.15) | | | | | | | | | ++| Abort-Cause | 500 | 5.3.1 | Enumerated | M,V | P | | | Y | ++| Access-Network-Charging-Address | 501 | 5.3.2 | Address | M,V | P | | | Y | ++| Access-Network-Charging-Identifier | 502 | 5.3.3 | Grouped | M,V | P | | | Y | ++| Access-Network-Charging-Identifier-Value | 503 | 5.3.4 | OctetString | M,V | P | | | Y | ++| Acceptable-Service-Info | 526 | 5.3.24 | Grouped | M,V | P | | | Y | ++| AF-Application-Identifier | 504 | 5.3.5 | OctetString | M,V | P | | | Y | ++| AF-Charging-Identifier | 505 | 5.3.6 | OctetString | M,V | P | | | Y | ++| Application-Service-Provider-Identity | 532 | 5.3.29 | UTF8String | V | P | | M | Y | ++| Codec-Data | 524 | 5.3.7 | OctetString | M,V | P | | | Y | ++| Flow-Description | 507 | 5.3.8 | IPFilterRule | M,V | P | | | Y | ++| Flow-Number | 509 | 5.3.9 | Unsigned32 | M,V | P | | | Y | ++| Flows | 510 | 5.3.10 | Grouped | M,V | P | | | Y | ++| Flow-Status | 511 | 5.3.11 | Enumerated | M,V | P | | | Y | ++| Flow-Usage | 512 | 5.3.12 | Enumerated | M,V | P | | | Y | ++| Service-URN | 525 | 5.3.23 | OctetString | M,V | P | | | Y | ++| Specific-Action | 513 | 5.3.13 | Enumerated | M,V | P | | | Y | ++| Max-Requested-Bandwidth-DL | 515 | 5.3.14 | Unsigned32 | M,V | P | | | Y | ++| Max-Requested-Bandwidth-UL | 516 | 5.3.15 | Unsigned32 | M,V | P | | | Y | ++| Media-Component-Description | 517 | 5.3.16 | Grouped | M,V | P | | | Y | ++| Media-Component-Number | 518 | 5.3.17 | Unsigned32 | M,V | P | | | Y | ++| Media-Sub-Component | 519 | 5.3.18 | Grouped | M,V | P | | | Y | ++| Media-Type | 520 | 5.3.19 | Enumerated | M,V | P | | | Y | ++| MPS-Identifier | 528 | 5.3.30 | OctetString | V | P | | M | Y | ++| Min-Requested-Bandwidth-DL | 534 | 5.3.32 | Unsigned32 | V | P | | M | Y | ++| Min-Requested-Bandwidth-UL | 535 | 5.3.33 | Unsigned32 | V | P | | M | Y | ++| RR-Bandwidth | 521 | 5.3.20 | Unsigned32 | M,V | P | | | Y | ++| RS-Bandwidth | 522 | 5.3.21 | Unsigned32 | M,V | P | | | Y | ++| Service-Info-Status | 527 | 5.3.25 | Enumerated | M,V | P | | | Y | ++| SIP-Forking-Indication | 523 | 5.3.22 | Enumerated | M,V | P | | | Y | ++| Sponsor-Identity | 531 | 5.3.28 | UTF8String | V | P | | M | Y | ++| Sponsored-Connectivity-Data | 530 | 5.3.27 | Grouped | V | P | | M | Y | ++| AF-Signalling-Protocol | 529 | 5.3.26 | Enumerated | V | P | | M | Y | ++| Required-Access-Info | 536 | 5.3.34 | Enumerated | V | P | | M | Y | ++| Rx-Request-Type | 533 | 5.3.31 | Enumerated | V | P | | M | Y | ++| IP-Domain-Id | 537 | 5.3.35 | OctetString | V | P | | M | 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 | ++| 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 | M,V | P | | | N | ++| AoC-Cost-Information | 2053 | | Grouped | M,V | P | | | N | ++| AoC-Format | 2310 | | Enumerated | M,V | P | | | N | ++| AoC-Information | 2054 | | Grouped | M,V | P | | | N | ++| AoC-Request-Type | 2055 | | Enumerated | M,V | 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 | M,V | 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.272-c00 (12.0.0 2013.03.13) | | | | | | | | | ++| Subscription-Data | 1400 | 7.3.2 | Grouped | M,V | | | | N | ++| Terminal-Information | 1401 | 7.3.3 | Grouped | M,V | | | | N | ++| IMEI | 1402 | 7.3.4 | UTF8String | M,V | | | | N | ++| Software-Version | 1403 | 7.3.5 | UTF8String | M,V | | | | N | ++| QoS-Subscribed | 1404 | 7.3.77 | OctetString | M,V | | | | N | ++| ULR-Flags | 1405 | 7.3.7 | Unsigned32 | M,V | | | | N | ++| ULA-Flags | 1406 | 7.3.8 | Unsigned32 | M,V | | | | N | ++| Visited-PLMN-Id | 1407 | 7.3.9 | OctetString | M,V | | | | N | ++| Requested-EUTRAN-Authentication-Info | 1408 | 7.3.11 | Grouped | M,V | | | | N | ++| Requested-UTRAN- GERAN-Authentication-Info | 1409 | 7.3.12 | Grouped | M,V | | | | N | ++| Number-Of-Requested-Vectors | 1410 | 7.3.14 | Unsigned32 | M,V | | | | N | ++| Re-Synchronization-Info | 1411 | 7.3.15 | OctetString | M,V | | | | N | ++| Immediate-Response-Preferred | 1412 | 7.3.16 | Unsigned32 | M,V | | | | N | ++| Authentication-Info | 1413 | 7.3.17 | Grouped | M,V | | | | N | ++| E-UTRAN-Vector | 1414 | 7.3.18 | Grouped | M,V | | | | N | ++| UTRAN-Vector | 1415 | 7.3.19 | Grouped | M,V | | | | N | ++| GERAN-Vector | 1416 | 7.3.20 | Grouped | M,V | | | | N | ++| Network-Access-Mode | 1417 | 7.3.21 | Enumerated | M,V | | | | N | ++| HPLMN-ODB | 1418 | 7.3.22 | Unsigned32 | M,V | | | | N | ++| Item-Number | 1419 | 7.3.23 | Unsigned32 | M,V | | | | N | ++| Cancellation-Type | 1420 | 7.3.24 | Enumerated | M,V | | | | N | ++| DSR-Flags | 1421 | 7.3.25 | Unsigned32 | M,V | | | | N | ++| DSA-Flags | 1422 | 7.3.26 | Unsigned32 | M,V | | | | N | ++| Context-Identifier | 1423 | 7.3.27 | Unsigned32 | M,V | | | | N | ++| Subscriber-Status | 1424 | 7.3.29 | Enumerated | M,V | | | | N | ++| Operator-Determined-Barring | 1425 | 7.3.30 | Unsigned32 | M,V | | | | N | ++| Access-Restriction-Data | 1426 | 7.3.31 | Unsigned32 | M,V | | | | N | ++| APN-OI-Replacement | 1427 | 7.3.32 | UTF8String | M,V | | | | N | ++| All-APN-Configurations-Included-Indicator | 1428 | 7.3.33 | Enumerated | M,V | | | | N | ++| APN-Configuration-Profile | 1429 | 7.3.34 | Grouped | M,V | | | | N | ++| APN-Configuration | 1430 | 7.3.35 | Grouped | M,V | | | | N | ++| EPS-Subscribed-QoS-Profile | 1431 | 7.3.37 | Grouped | M,V | | | | N | ++| VPLMN-Dynamic-Address-Allowed | 1432 | 7.3.38 | Enumerated | M,V | | | | N | ++| STN-SR | 1433 | 7.3.39 | OctetString | M,V | | | | N | ++| Alert-Reason | 1434 | 7.3.83 | Enumerated | M,V | | | | N | ++| AMBR | 1435 | 7.3.41 | Grouped | M,V | | | | N | ++| CSG-Subscription-Data | 1436 | 7.3.78 | Grouped | M,V | | | | N | ++| CSG-Id | 1437 | 7.3.79 | Unsigned32 | M,V | | | | N | ++| PDN-GW-Allocation-Type | 1438 | 7.3.44 | Enumerated | M,V | | | | N | ++| Expiration-Date | 1439 | 7.3.80 | Time | M,V | | | | N | ++| RAT-Frequency-Selection-Priority-ID | 1440 | 7.3.46 | Unsigned32 | M,V | | | | N | ++| IDA-Flags | 1441 | 7.3.47 | Unsigned32 | M,V | | | | N | ++| PUA-Flags | 1442 | 7.3.48 | Unsigned32 | M,V | | | | N | ++| NOR-Flags | 1443 | 7.3.49 | Unsigned32 | M,V | | | | N | ++| User-Id | 1444 | 7.3.50 | UTF8String | V | | | M | N | ++| Equipment-Status | 1445 | 7.3.51 | Enumerated | M,V | | | | N | ++| Regional-Subscription-Zone-Code | 1446 | 7.3.52 | OctetString | M,V | | | | N | ++| RAND | 1447 | 7.3.53 | OctetString | M,V | | | | N | ++| XRES | 1448 | 7.3.54 | OctetString | M,V | | | | N | ++| AUTN | 1449 | 7.3.55 | OctetString | M,V | | | | N | ++| KASME | 1450 | 7.3.56 | OctetString | M,V | | | | N | ++| Trace-Collection-Entity | 1452 | 7.3.98 | Address | M,V | | | | N | ++| Kc | 1453 | 7.3.59 | OctetString | M,V | | | | N | ++| SRES | 1454 | 7.3.60 | OctetString | M,V | | | | N | ++| PDN-Type | 1456 | 7.3.62 | Enumerated | M,V | | | | N | ++| Roaming-Restricted-Due-To-Unsupported-Feature | 1457 | 7.3.81 | Enumerated | M,V | | | | N | ++| Trace-Data | 1458 | 7.3.63 | Grouped | M,V | | | | N | ++| Trace-Reference | 1459 | 7.3.64 | OctetString | M,V | | | | N | ++| Trace-Depth | 1462 | 7.3.67 | Enumerated | M,V | | | | N | ++| Trace-NE-Type-List | 1463 | 7.3.68 | OctetString | M,V | | | | N | ++| Trace-Interface-List | 1464 | 7.3.69 | OctetString | M,V | | | | N | ++| Trace-Event-List | 1465 | 7.3.70 | OctetString | M,V | | | | N | ++| OMC-Id | 1466 | 7.3.71 | OctetString | M,V | | | | N | ++| GPRS-Subscription-Data | 1467 | 7.3.72 | Grouped | M,V | | | | N | ++| Complete-Data-List-Included-Indicator | 1468 | 7.3.73 | Enumerated | M,V | | | | N | ++| PDP-Context | 1469 | 7.3.74 | Grouped | M,V | | | | N | ++| PDP-Type | 1470 | 7.3.75 | OctetString | M,V | | | | N | ++| 3GPP2-MEID | 1471 | 7.3.6 | OctetString | M,V | | | | N | ++| Specific-APN-Info | 1472 | 7.3.82 | Grouped | M,V | | | | N | ++| LCS-Info | 1473 | 7.3.84 | Grouped | M,V | | | | N | ++| GMLC-Number | 1474 | 7.3.85 | OctetString | M,V | | | | N | ++| LCS-PrivacyException | 1475 | 7.3.86 | Grouped | M,V | | | | N | ++| SS-Code | 1476 | 7.3.87 | OctetString | M,V | | | | N | ++| SS-Status | 1477 | 7.3.88 | Grouped | M,V | | | | N | ++| Notification-To-UE-User | 1478 | 7.3.89 | Enumerated | M,V | | | | N | ++| External-Client | 1479 | 7.3.90 | Grouped | M,V | | | | N | ++| Client-Identity | 1480 | 7.3.91 | OctetString | M,V | | | | N | ++| GMLC-Restriction | 1481 | 7.3.92 | Enumerated | M,V | | | | N | ++| PLMN-Client | 1482 | 7.3.93 | Enumerated | M,V | | | | N | ++| Service-Type | 1483 | 7.3.94 | Grouped | M,V | | | | N | ++| ServiceTypeIdentity | 1484 | 7.3.95 | Unsigned32 | M,V | | | | N | ++| MO-LR | 1485 | 7.3.96 | Grouped | M,V | | | | N | ++| Teleservice-List | 1486 | 7.3.99 | Grouped | M,V | | | | N | ++| TS-Code | 1487 | 7.3.100 | OctetString | M,V | | | | N | ++| Call-Barring-Infor-List | 1488 | 7.3.101 | Grouped | M,V | | | | N | ++| SGSN-Number | 1489 | 7.3.102 | OctetString | M,V | | | | N | ++| IDR-Flags | 1490 | 7.3.103 | Unsigned32 | M,V | | | | N | ++| ICS-Indicator | 1491 | 7.3.104 | Enumerated | V | | | M | N | ++| IMS-Voice-Over-PS-Sessions-Supported | 1492 | 7.3.106 | Enumerated | V | | | M | N | ++| Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions | 1493 | 7.3.107 | Enumerated | V | | | M | N | ++| Last-UE-Activity-Time | 1494 | 7.3.108 | Time | V | | | M | N | ++| EPS-User-State | 1495 | 7.3.110 | Grouped | V | | | M | N | ++| EPS-Location-Information | 1496 | 7.3.111 | Grouped | V | | | M | N | ++| MME-User-State | 1497 | 7.3.112 | Grouped | V | | | M | N | ++| SGSN-User-State | 1498 | 7.3.113 | Grouped | V | | | M | N | ++| User-State | 1499 | 7.3.114 | Enumerated | V | | | M | N | ++| MME-Location Information | 1600 | 7.3.115 | Grouped | V | | | M | N | ++| SGSN-Location-Information | 1601 | 7.3.116 | Grouped | V | | | M | N | ++| E-UTRAN-Cell-Global-Identity | 1602 | 7.3.117 | OctetString | V | | | M | N | ++| Tracking-Area-Identity | 1603 | 7.3.118 | OctetString | V | | | M | N | ++| Cell-Global-Identity | 1604 | 7.3.119 | OctetString | V | | | M | N | ++| Routing-Area-Identity | 1605 | 7.3.120 | OctetString | V | | | M | N | ++| Location-Area-Identity | 1606 | 7.3.121 | OctetString | V | | | M | N | ++| Service-Area-Identity | 1607 | 7.3.122 | OctetString | V | | | M | N | ++| Geographical-Information | 1608 | 7.3.123 | OctetString | V | | | M | N | ++| Geodetic-Information | 1609 | 7.3.124 | OctetString | V | | | M | N | ++| Current-Location-Retrieved | 1610 | 7.3.125 | Enumerated | V | | | M | N | ++| Age-Of-Location-Information | 1611 | 7.3.126 | Unsigned32 | V | | | M | N | ++| Active-APN | 1612 | 7.3.127 | Grouped | V | | | M | N | ++| Error-Diagnostic | 1614 | 7.3.128 | Enumerated | V | | | M | N | ++| Ext-PDP-Address | 1621 | 7.3.129 | Address | V | | | M | N | ++| UE-SRVCC-Capability | 1615 | 7.3.130 | Enumerated | V | | | M | N | ++| MPS-Priority | 1616 | 7.3.131 | Unsigned32 | V | | | M | N | ++| VPLMN-LIPA-Allowed | 1617 | 7.3.132 | Enumerated | V | | | M | N | ++| LIPA-Permission | 1618 | 7.3.133 | Enumerated | V | | | M | N | ++| Subscribed-Periodic-RAU-TAU-Timer | 1619 | 7.3.134 | Unsigned32 | V | | | M | N | ++| Ext-PDP-Type | 1620 | 7.3.75A | OctetString | V | | | M | N | ++| SIPTO-Permission | 1613 | 7.3.135 | Enumerated | V | | | M | N | ++| MDT-Configuration | 1622 | 7.3.136 | Grouped | V | | | M | N | ++| Job-Type | 1623 | 7.3.137 | Enumerated | V | | | M | N | ++| Area-Scope | 1624 | 7.3.138 | Grouped | V | | | M | N | ++| List-Of-Measurements | 1625 | 7.3.139 | Unsigned32 | V | | | M | N | ++| Reporting-Trigger | 1626 | 7.3.140 | Unsigned32 | V | | | M | N | ++| Report-Interval | 1627 | 7.3.141 | Enumerated | V | | | M | N | ++| Report-Amount | 1628 | 7.3.142 | Enumerated | V | | | M | N | ++| Event-Threshold-RSRP | 1629 | 7.3.143 | Unsigned32 | V | | | M | N | ++| Event-Threshold-RSRQ | 1630 | 7.3.144 | Unsigned32 | V | | | M | N | ++| Logging-Interval | 1631 | 7.3.145 | Enumerated | V | | | M | N | ++| Logging-Duration | 1632 | 7.3.146 | Enumerated | V | | | M | N | ++| Relay-Node-Indicator | 1633 | 7.3.147 | Enumerated | V | | | M | N | ++| MDT-User-Consent | 1634 | 7.3.148 | Enumerated | V | | | M | N | ++| PUR-Flags | 1635 | 7.3.149 | Unsigned32 | V | | | M | N | ++| Subscribed-VSRVCC | 1636 | 7.3.150 | Enumerated | V | | | M | N | ++| Equivalent-PLMN-List | 1637 | 7.3.151 | Grouped | V | | | M | N | ++| CLR-Flags | 1638 | 7.3.152 | Unsigned32 | V | | | M | N | ++| UVR-Flags | 1639 | 7.3.153 | Unsigned32 | M,V | | | | N | ++| UVA-Flags | 1640 | 7.3.154 | Unsigned32 | M,V | | | | N | ++| VPLMN-CSG-Subscription-Data | 1641 | 7.3.155 | Grouped | M,V | | | | N | ++| Time-Zone | 1642 | 7.3.163 | UTF8String | V | | | M | N | ++| A-MSISDN | 1643 | 7.3.157 | OctetString | V | | | M | N | ++| MME-Number-for-MT-SMS | 1645 | 7.3.159 | OctetString | V | | | M | N | ++| SMS-Register-Request | 1648 | 7.3.162 | Enumerated | V | | | M | N | ++| Local-Time-Zone | 1649 | 7.3.156 | Grouped | V | | | M | N | ++| Daylight-Saving-Time | 1650 | 7.3.164 | Enumerated | V | | | M | N | ++| Subscription-Data-Flags | 1654 | 7.3.165 | Unsigned32 | V | | | M | N | ++| Measurement-Period-UMTS | 1655 | 7.3.166 | Enumerated | V | | | M | N | ++| Measurement-Period-LTE | 1656 | 7.3.167 | Enumerated | V | | | M | N | ++| Collection-Period-RRM-LTE | 1657 | 7.3.168 | Enumerated | V | | | M | N | ++| Collection-Period-RRM-UMTS | 1658 | 7.3.169 | Enumerated | V | | | M | N | ++| Positioning-Method | 1659 | 7.3.170 | OctetString | V | | | M | N | ++| Measurement-Quantity | 1660 | 7.3.171 | OctetString | V | | | M | N | ++| Event-Threshold-Event-1F | 1661 | 7.3.172 | Integer32 | V | | | M | N | ++| Event-Threshold-Event-1I | 1662 | 7.3.173 | Integer32 | V | | | M | 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-29.329 | 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 | ++| # OMA DDS Charging_Data V1.0 20110201-A | | | | | | | | | ++| Application-Server-Id | 2101 | 8.4 | UTF8String | M,V | | | | Y | ++| Application-Service-Type | 2102 | 8.4 | UTF8String | M,V | | | | Y | ++| Application-Session-Id | 2103 | 8.4 | UTF8String | M,V | | | | Y | ++| Content-ID | 2116 | 8.4 | UTF8String | M,V | | | | Y | ++| Content-provider-ID | 2117 | 8.4 | UTF8String | M,V | | | | Y | ++| DCD-Information | 2115 | 8.5.5 | Grouped | M,V | | | | Y | ++| Delivery-Status | 2104 | 8.4 | UTF8String | M,V | | | | Y | ++| IM-Information | 2110 | 8.5.6 | Grouped | M,V | | | | Y | ++| Number-Of-Messages-Successfully-Exploded | 2111 | 8.4 | Unsigned32 | M,V | | | | Y | ++| Number-Of-Messages-Successfully-Sent | 2112 | 8.4 | Unsigned32 | M,V | | | | Y | ++| Service-Generic-Information | 1256 | 8.5.10 | Grouped | M,V | | | | Y | ++| Total-Number-Of-Messages-Exploded | 2113 | 8.4 | Unsigned32 | M,V | | | | Y | ++| Total-Number-Of-Messages-Sent | 2114 | 8.4 | Unsigned32 | M,V | | | | Y | +diff --git a/extensions/dict_dcca_3gpp/meson.build b/extensions/dict_dcca_3gpp/meson.build +new file mode 100644 +index 0000000..95e3569 +--- /dev/null ++++ b/extensions/dict_dcca_3gpp/meson.build +@@ -0,0 +1,10 @@ ++shared_module('dict_dcca_3gpp', ++ sources : [files( ++ 'dict_dcca_3gpp.c', ++ 'add_avps.c')], ++ include_directories : freeDiameter_includes, ++ dependencies : libfdcore_dep, ++ name_prefix : '', ++ name_suffix : 'fdx', ++ install : true, ++ install_dir : freeDiameter_extensionsdir) +diff --git a/extensions/dict_dcca_starent/dict_dcca_starent.org b/extensions/dict_dcca_starent/dict_dcca_starent.org +new file mode 100644 +index 0000000..7514d9f +--- /dev/null ++++ b/extensions/dict_dcca_starent/dict_dcca_starent.org +@@ -0,0 +1,31 @@ ++| 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 | | | | | | | | | ++| # updated using v15 docs from Jan 2014 | | | | | | | | | ++| # www.cisco.com/c/dam/en/us/td/docs/wireless/asr_5000/15-0/15-0-AAA-Reference.pdf | | | | | | | | | ++| 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 | | | | | ++| SN-Session-Start-Indicator | 522 | | OctetString | M,V | | | | | ++| SN-Phase0-PSAPName | 523 | | UTF8String | V | | | | | ++| SN-Charging-Id | 525 | | OctetString | V | | | | | ++| SN-Remaining-Service-Unit | 526 | | Grouped | V | | | | | ++| SN-Service-Start-Timestamp | 527 | | Time | V | | | | | ++| SN-Rulebase-Id | 528 | | UTF8String | M,V | | | | | ++| SN-CF-Policy-ID | 529 | | Unsigned32 | M,V | | | | | ++| SN-Charging-Collection-Function-Name | 530 | | UTF8String | V | | | | | ++| SN-Fast-Reauth-Username | 11010 | | OctetString | M,V | | | | | ++| SN-Pseudonym-Username | 11011 | | OctetString | M,V | | | | | +diff --git a/extensions/dict_nasreq/dict_nasreq.c b/extensions/dict_nasreq/dict_nasreq.c +index 0878ae1..5bf13c5 100644 +--- a/extensions/dict_nasreq/dict_nasreq.c ++++ b/extensions/dict_nasreq/dict_nasreq.c +@@ -3013,7 +3013,7 @@ static int dnr_entry(char * conffile) + ,{ "Origin-Host", RULE_REQUIRED, -1, 1 } + ,{ "Origin-Realm", RULE_REQUIRED, -1, 1 } + ,{ "Destination-Realm", RULE_REQUIRED, -1, 1 } +- ,{ "Auth-Request-Type", RULE_REQUIRED, -1, 1 } ++ ,{ "Auth-Request-Type", RULE_OPTIONAL, -1, 1 } + ,{ "Destination-Host", RULE_OPTIONAL, -1, 1 } + ,{ "NAS-Identifier", RULE_OPTIONAL, -1, 1 } + ,{ "NAS-IP-Address", RULE_OPTIONAL, -1, 1 } +@@ -3169,7 +3169,9 @@ static int dnr_entry(char * conffile) + { { "Session-Id", RULE_FIXED_HEAD, -1, 1 } + ,{ "Auth-Application-Id", RULE_REQUIRED, -1, 1 } + ,{ "Auth-Request-Type", RULE_REQUIRED, -1, 1 } ++#if 0 /* modified by acetcom */ + ,{ "Result-Code", RULE_REQUIRED, -1, 1 } ++#endif + ,{ "Origin-Host", RULE_REQUIRED, -1, 1 } + ,{ "Origin-Realm", RULE_REQUIRED, -1, 1 } + ,{ "User-Name", RULE_OPTIONAL, -1, 1 } +diff --git a/extensions/meson.build b/extensions/meson.build +new file mode 100644 +index 0000000..68ddb1c +--- /dev/null ++++ b/extensions/meson.build +@@ -0,0 +1,41 @@ ++# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com> ++ ++# This file is part of Open5GS. ++ ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Affero General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <https://www.gnu.org/licenses/>. ++ ++fd_ext_sources = (''' ++ dbg_msg_dumps ++ dict_rfc5777 ++ dict_mip6i ++ dict_nasreq ++ dict_nas_mipv6 ++ dict_dcca ++'''.split()) ++ ++foreach s : fd_ext_sources ++ shared_module(s, ++ sources : [files(join_paths(s, s+'.c'))], ++ include_directories : freeDiameter_includes, ++ dependencies : libfdcore_dep, ++ name_prefix : '', ++ name_suffix : 'fdx', ++ install : true, ++ install_dir : freeDiameter_extensionsdir) ++endforeach ++ ++subdir('dict_dcca_3gpp') ++subdir('acl_wl') ++subdir('rt_redirect') ++subdir('rt_default') +diff --git a/extensions/rt_default/meson.build b/extensions/rt_default/meson.build +new file mode 100644 +index 0000000..0d75877 +--- /dev/null ++++ b/extensions/rt_default/meson.build +@@ -0,0 +1,35 @@ ++conf_data = configuration_data() ++if cc.has_header_symbol('regex.h', 'REG_STARTEND') ++ conf_data.set('HAVE_REG_STARTEND', 1) ++endif ++configure_file(output : 'rt_default-host.h', ++ configuration : conf_data) ++ ++ ++lgen = generator(flex, ++ output : 'lex.@BASENAME@.c', ++ arguments : ['-p', '-Cem', '-Prtd_conf', '-o', '@OUTPUT@', '@INPUT@'] ++ ) ++lfiles = lgen.process('rtd_conf.l') ++ ++pgen = generator(bison, ++ output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'], ++ arguments : ['-p', 'rtd_conf', '-d', ++ '@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']) ++pfiles = pgen.process('rtd_conf.y') ++ ++# List of source files ++rt_default_src = files( ++ 'rt_default.c', ++ 'rt_default.h', ++ 'rtd_rules.c', ++) ++ ++shared_module('rt_default', ++ sources : [rt_default_src, lfiles, pfiles], ++ include_directories : freeDiameter_includes, ++ dependencies : libfdcore_dep, ++ name_prefix : '', ++ name_suffix : 'fdx', ++ install : true, ++ install_dir : freeDiameter_extensionsdir) +diff --git a/extensions/rt_default/rtd_conf.y b/extensions/rt_default/rtd_conf.y +index e02303c..1ef24ab 100644 +--- a/extensions/rt_default/rtd_conf.y ++++ b/extensions/rt_default/rtd_conf.y +@@ -39,14 +39,14 @@ + + /* For development only : */ + %debug +-%error-verbose ++%define parse.error verbose + + /* The parser receives the configuration file filename as parameter */ + %parse-param {char * conffile} + + /* Keep track of location */ + %locations +-%pure-parser ++%define api.pure + + %{ + #include "rt_default.h" +diff --git a/extensions/rt_redirect/meson.build b/extensions/rt_redirect/meson.build +new file mode 100644 +index 0000000..8a5bfe4 +--- /dev/null ++++ b/extensions/rt_redirect/meson.build +@@ -0,0 +1,16 @@ ++shared_module('rt_redirect', ++ sources : [files( ++ 'rt_redir.h', ++ 'rt_redir.c', ++ 'redir_entries.c', ++ 'redir_expiry.c', ++ 'redir_fwd.c', ++ 'redir_out.c', ++ 'uthash.h' ++ )], ++ include_directories : freeDiameter_includes, ++ dependencies : libfdcore_dep, ++ name_prefix : '', ++ name_suffix : 'fdx', ++ install : true, ++ install_dir : freeDiameter_extensionsdir) +\ No newline at end of file +diff --git a/include/freeDiameter/libfdproto.h b/include/freeDiameter/libfdproto.h +index 66f4b3b..26f8617 100644 +--- a/include/freeDiameter/libfdproto.h ++++ b/include/freeDiameter/libfdproto.h +@@ -298,7 +298,7 @@ static char * file_bname_init(char * full) { file_bname = basename(full); return + + + /* In DEBUG mode, we add meta-information along each trace. This makes multi-threading problems easier to debug. */ +-#if (defined(DEBUG) && defined(DEBUG_WITH_META)) ++#if 1 /* Open5GS : enable log file and line number */ + # define STD_TRACE_FMT_STRING "pid:%s in %s@%s:%d: " + # define STD_TRACE_FMT_ARGS , ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"), __PRETTY_FUNCTION__, __STRIPPED_FILE__, __LINE__ + #else /* DEBUG && DEBUG_WITH_META */ +diff --git a/include/freeDiameter/meson.build b/include/freeDiameter/meson.build +new file mode 100644 +index 0000000..5497d7d +--- /dev/null ++++ b/include/freeDiameter/meson.build +@@ -0,0 +1,185 @@ ++# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com> ++ ++# This file is part of Open5GS. ++ ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Affero General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <https://www.gnu.org/licenses/>. ++# ++ ++freeDiameter_host_conf = configuration_data() ++freeDiameter_version_conf = configuration_data() ++ ++freeDiameter_sysconfdir = join_paths(sysconfdir, 'freeDiameter') ++freeDiameter_extensionsdir = join_paths(libdir, 'freeDiameter') ++ ++# Informations to display in daemon's help ++freeDiameter_host_conf.set_quoted('FD_PROJECT_BINARY', meson.project_name() + 'd') ++freeDiameter_host_conf.set_quoted('FD_PROJECT_NAME', meson.project_name()) ++freeDiameter_host_conf.set_quoted('FD_PROJECT_VERSION', freeDiameter_version) ++freeDiameter_host_conf.set_quoted('FD_PROJECT_COPYRIGHT', 'Copyright (c) 2008-2015, WIDE Project (www.wide.ad.jp) and NICT (www.nict.go.jp)') ++ ++# Version of the source code ++version_arr = freeDiameter_version.split('.') ++freeDiameter_host_conf.set('FD_PROJECT_VERSION_MAJOR', version_arr[0].to_int()) ++freeDiameter_host_conf.set('FD_PROJECT_VERSION_MINOR', version_arr[1].to_int()) ++freeDiameter_host_conf.set('FD_PROJECT_VERSION_REV', version_arr[2].to_int()) ++ ++# Version of the API with the library ++freeDiameter_host_conf.set('FD_PROJECT_VERSION_API', 6) ++freeDiameter_host_conf.set_quoted('DEFAULT_CONF_PATH', ++ freeDiameter_sysconfdir) ++freeDiameter_host_conf.set_quoted('DEFAULT_EXTENSIONS_PATH', ++ freeDiameter_extensionsdir) ++freeDiameter_host_conf.set_quoted('FD_DEFAULT_CONF_FILENAME', ++ 'freeDiameter.conf') ++ ++if host_machine.endian() == 'big' ++ freeDiameter_host_conf.set('HOST_BIG_ENDIAN', 1) ++endif ++ ++freeDiameter_host_conf.set('FD_IS_CONFIG', true) ++freeDiameter_host_conf.set('_GNU_SOURCE', true) ++freeDiameter_host_conf.set('FD_HOOK_HANDLE_LIMIT', 5) ++ ++freeDiameter_headers = (''' ++ malloc.h ++ signalent.h ++'''.split()) ++ ++foreach h : freeDiameter_headers ++ if cc.has_header(h) ++ define = 'HAVE_' + h.underscorify().to_upper() ++ freeDiameter_host_conf.set(define, 1) ++ endif ++endforeach ++ ++freeDiameter_functions = (''' ++ strndup ++ getopt_long ++ getifaddrs ++'''.split()) ++ ++foreach f : freeDiameter_functions ++ if cc.has_function(f) ++ define = 'HAVE_' + f.underscorify().to_upper() ++ freeDiameter_host_conf.set(define, 1) ++ set_variable('have_func_' + f, true) ++ else ++ set_variable('have_func_' + f, false) ++ endif ++endforeach ++ ++# Check for ntohll ++if cc.has_header_symbol('netinet/in.h', 'ntohll') ++ freeDiameter_host_conf.set('HAVE_NTOHLL', 1) ++endif ++ ++# Check for AI_ADDRCONFIG ++if cc.has_header_symbol('netdb.h', 'AI_ADDRCONFIG') ++ freeDiameter_host_conf.set('HAVE_AI_ADDRCONFIG', 1) ++endif ++ ++# Determination of thread implementation ++threads = [] ++if host_system == 'windows' and not get_option('force_posix_threads') ++else ++ threads = dependency('threads') ++ if cc.has_header_symbol('pthread.h', 'pthread_barrier_wait') ++ freeDiameter_host_conf.set('HAVE_PTHREAD_BAR', 1) ++ endif ++endif ++ ++# Check for clock_gettime() ++clock_gettime_test_code = ''' ++ #include <time.h> ++ struct timespec t; ++ int main (int argc, char ** argv) { ++ return clock_gettime(CLOCK_REALTIME, &t); ++ }''' ++librt = [] ++if cc.links(clock_gettime_test_code, name : 'clock_gettime()') ++ freeDiameter_host_conf.set('HAVE_CLOCK_GETTIME', 1) ++elif cc.links(clock_gettime_test_code, args : '-lrt', name : 'clock_gettime() in librt') ++ freeDiameter_host_conf.set('HAVE_CLOCK_GETTIME', 1) ++ librt = cc.find_library('rt') ++elif cc.links(clock_gettime_test_code, args : '-lposix4', name : 'clock_gettime() in libposix4') ++ freeDiameter_host_conf.set('HAVE_CLOCK_GETTIME', 1) ++ librt = cc.find_library('posix4') ++else ++ error('Could not find clock_gettime()') ++endif ++ ++# Check for dlopen() ++dlopen_dlsym_test_code = ''' ++ #include <dlfcn.h> ++ int underscore_test (void) { return 42; } ++ int main (int argc, char ** argv) { ++ void *f1 = (void*)0, *f2 = (void*)0, *handle; ++ handle = dlopen ((void*)0, 0); ++ if (handle) { ++ f1 = dlsym (handle, "underscore_test"); ++ f2 = dlsym (handle, "_underscore_test"); ++ } ++ return (!f2 || f1); ++ }''' ++libdl = [] ++if cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries') ++ freeDiameter_host_conf.set('HAVE_DLOPEN', 1) ++elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl') ++ freeDiameter_host_conf.set('HAVE_DLOPEN', 1) ++ libdl = cc.find_library('dl') ++else ++ error('Could not find dlopen()') ++endif ++ ++# Check for gcrypt/idn library ++libgcrypt = cc.find_library('gcrypt') ++libidn = cc.find_library('idn') ++ ++# Check for gnutls library ++libgnutls = cc.find_library('gnutls') ++if cc.has_function('gnutls_hash', args : '-lgnutls') ++ freeDiameter_host_conf.set('GNUTLS_VERSION_210', 1) ++endif ++if cc.has_function('gnutls_transport_set_vec_push_function', args : '-lgnutls') ++ freeDiameter_host_conf.set('GNUTLS_VERSION_212', 1) ++endif ++if cc.has_function('gnutls_x509_trust_list_verify_crt', args : '-lgnutls') ++ freeDiameter_host_conf.set('GNUTLS_VERSION_300', 1) ++endif ++if cc.has_function('gnutls_handshake_set_timeout', args : '-lgnutls') ++ freeDiameter_host_conf.set('GNUTLS_VERSION_310', 1) ++endif ++ ++# Check for SCTP ++libsctp = cc.find_library('sctp', required : false) ++if libsctp.found() ++ if cc.compiles('''#include <unistd.h> ++ #include <netinet/sctp.h> ++ int main (int argc, char ** argv) { ++ sctp_connectx(0, NULL, 0, NULL); ++ }''', name : 'sctp_connectx() accepts 4 arguments') ++ freeDiameter_host_conf.set('SCTP_CONNECTX_4_ARGS', 1) ++ endif ++ if host_system == 'freebsd' ++ freeDiameter_host_conf.set('SCTP_USE_MAPPED_ADDRESSES', 1) ++ endif ++else ++ freeDiameter_host_conf.set('DISABLE_SCTP', 1) ++endif ++ ++configure_file(output : 'freeDiameter-host.h', ++ configuration : freeDiameter_host_conf) ++ ++configure_file(output : 'version.h', ++ configuration : freeDiameter_version_conf) +diff --git a/libfdcore/dict_base_proto.c b/libfdcore/dict_base_proto.c +index 5eb7c58..a40c329 100644 +--- a/libfdcore/dict_base_proto.c ++++ b/libfdcore/dict_base_proto.c +@@ -2940,7 +2940,9 @@ int fd_dict_base_protocol(struct dictionary * dict) + }; + struct local_rules_definition rules[] = + { { "Session-Id", RULE_FIXED_HEAD, -1, 1 } ++#if 0 /* modified by acetcom */ + ,{ "Result-Code", RULE_REQUIRED, -1, 1 } ++#endif + ,{ "Origin-Host", RULE_REQUIRED, -1, 1 } + ,{ "Origin-Realm", RULE_REQUIRED, -1, 1 } + ,{ "User-Name", RULE_OPTIONAL, -1, 1 } +@@ -3058,7 +3060,9 @@ int fd_dict_base_protocol(struct dictionary * dict) + }; + struct local_rules_definition rules[] = + { { "Session-Id", RULE_FIXED_HEAD, -1, 1 } ++#if 0 /* modified by acetcom */ + ,{ "Result-Code", RULE_REQUIRED, -1, 1 } ++#endif + ,{ "Origin-Host", RULE_REQUIRED, -1, 1 } + ,{ "Origin-Realm", RULE_REQUIRED, -1, 1 } + ,{ "User-Name", RULE_OPTIONAL, -1, 1 } +@@ -3173,7 +3177,9 @@ int fd_dict_base_protocol(struct dictionary * dict) + }; + struct local_rules_definition rules[] = + { { "Session-Id", RULE_FIXED_HEAD, -1, 1 } ++#if 0 /* modified by acetcom */ + ,{ "Result-Code", RULE_REQUIRED, -1, 1 } ++#endif + ,{ "Origin-Host", RULE_REQUIRED, -1, 1 } + ,{ "Origin-Realm", RULE_REQUIRED, -1, 1 } + ,{ "User-Name", RULE_OPTIONAL, -1, 1 } +diff --git a/libfdcore/endpoints.c b/libfdcore/endpoints.c +index e80c2a3..4c1f537 100644 +--- a/libfdcore/endpoints.c ++++ b/libfdcore/endpoints.c +@@ -64,7 +64,6 @@ int fd_ep_add_merge( struct fd_list * list, sSA * sa, socklen_t sl, uint32_t fla + case AF_INET: + if (! (flags & EP_ACCEPTALL)) { + if (IN_IS_ADDR_UNSPECIFIED(&ptr.sin->sin_addr) +- || IN_IS_ADDR_LOOPBACK(&ptr.sin->sin_addr) + /* the next one filters both EXPERIMENTAL, BADCLASS and MULTICAST. */ + || ((ntohl(ptr.sin->sin_addr.s_addr) & 0xe0000000) == 0xe0000000) + || (ptr.sin->sin_addr.s_addr == INADDR_BROADCAST)) { +@@ -78,10 +77,7 @@ int fd_ep_add_merge( struct fd_list * list, sSA * sa, socklen_t sl, uint32_t fla + case AF_INET6: + if (! (flags & EP_ACCEPTALL)) { + if (IN6_IS_ADDR_UNSPECIFIED(&ptr.sin6->sin6_addr) +- || IN6_IS_ADDR_LOOPBACK(&ptr.sin6->sin6_addr) +- || IN6_IS_ADDR_MULTICAST(&ptr.sin6->sin6_addr) +- || IN6_IS_ADDR_LINKLOCAL(&ptr.sin6->sin6_addr) +- || IN6_IS_ADDR_SITELOCAL(&ptr.sin6->sin6_addr)) { ++ || IN6_IS_ADDR_MULTICAST(&ptr.sin6->sin6_addr)) { + LOG_A(" DEBUG:fd_ep_add_merge Address was ignored, not added."); + return 0; + } +diff --git a/libfdcore/fdd.y b/libfdcore/fdd.y +index 9b36887..1a9729e 100644 +--- a/libfdcore/fdd.y ++++ b/libfdcore/fdd.y +@@ -43,13 +43,13 @@ + + /* For development only : */ + %debug +-%error-verbose ++%define parse.error verbose + + %parse-param {struct fd_config * conf} + + /* Keep track of location */ + %locations +-%pure-parser ++%define api.pure + + %{ + #include "fdcore-internal.h" +diff --git a/libfdcore/meson.build b/libfdcore/meson.build +new file mode 100644 +index 0000000..5a26558 +--- /dev/null ++++ b/libfdcore/meson.build +@@ -0,0 +1,79 @@ ++# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com> ++ ++# This file is part of Open5GS. ++ ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Affero General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <https://www.gnu.org/licenses/>. ++ ++fdcore_sources = files(''' ++ fdcore-internal.h ++ apps.c ++ cnxctx.h ++ config.c ++ core.c ++ cnxctx.c ++ endpoints.c ++ events.c ++ extensions.c ++ fifo_stats.c ++ hooks.c ++ dict_base_proto.c ++ messages.c ++ queues.c ++ peers.c ++ p_ce.c ++ p_cnx.c ++ p_dw.c ++ p_dp.c ++ p_expiry.c ++ p_out.c ++ p_psm.c ++ p_sr.c ++ routing_dispatch.c ++ server.c ++ tcp.c ++ version.c ++'''.split()) ++ ++if libsctp.found() ++fdcore_sources += files('sctp.c', 'sctp3436.c', 'sctp_compat.c') ++endif ++ ++lgen = generator(flex, ++ output : '@PLAINNAME@.yy.c', ++ arguments : ['-p', '-Cem', '-Pfdd', '-o', '@OUTPUT@', '@INPUT@']) ++ ++lfiles = lgen.process('fdd.l') ++ ++pgen = generator(bison, ++ output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'], ++ arguments : ['-p', 'fdd', '-d', ++ '@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']) ++ ++pfiles = pgen.process('fdd.y') ++ ++libfdcore = library('fdcore', ++ sources : [lfiles, pfiles, fdcore_sources], ++ version : freeDiameter_version, ++ soversion : freeDiameter_soversion, ++ c_args : '-DDISABLE_PEER_EXPIRY', ++ include_directories : freeDiameter_includes, ++ dependencies : [libfdproto_dep, ++ libdl, libsctp, libgcrypt, libgnutls], ++ install : true) ++ ++libfdcore_dep = declare_dependency( ++ link_with : libfdcore, ++ include_directories : freeDiameter_includes, ++ dependencies : [libfdproto_dep, ++ libdl, libsctp, libgcrypt, libgnutls]) +diff --git a/libfdcore/p_psm.c b/libfdcore/p_psm.c +index 755e133..6368bb0 100644 +--- a/libfdcore/p_psm.c ++++ b/libfdcore/p_psm.c +@@ -891,7 +891,7 @@ psm_end: + if ((cur_state == STATE_CLOSING) || (cur_state == STATE_CLOSING_GRACE)) { + LOG_N("%s: Going to ZOMBIE state (no more activity) after normal shutdown", peer->p_hdr.info.pi_diamid); + } else { +- LOG_E("%s: Going to ZOMBIE state (no more activity) after abnormal shutdown", peer->p_hdr.info.pi_diamid); ++ LOG_N("%s: Going to ZOMBIE state (no more activity) after abnormal shutdown", peer->p_hdr.info.pi_diamid); + } + fd_psm_cleanup(peer, 1); + TRACE_DEBUG(INFO, "'%s'\t-> 'STATE_ZOMBIE' (terminated)\t'%s'", +diff --git a/libfdcore/peers.c b/libfdcore/peers.c +index 5ac9ccf..456638f 100644 +--- a/libfdcore/peers.c ++++ b/libfdcore/peers.c +@@ -397,7 +397,11 @@ int fd_peer_fini() + wait_until.tv_nsec = now.tv_nsec; + } + ++#if 0 /* Open5GS : not stable to finish freeDiameter */ + while ((!list_empty) && (TS_IS_INFERIOR(&now, &wait_until))) { ++#else ++ if (!list_empty) { ++#endif + + /* Allow the PSM(s) to execute */ + usleep(100000); +diff --git a/libfdcore/sctp-internal.h b/libfdcore/sctp-internal.h +new file mode 100644 +index 0000000..128d8df +--- /dev/null ++++ b/libfdcore/sctp-internal.h +@@ -0,0 +1,18 @@ ++#ifndef _SCTP_INTERNAL_H ++#define _SCTP_INTERNAL_H ++ ++extern int sctp_sockopt_event_subscribe_size; ++extern int sctp_sockopt_paddrparams_size; ++ ++struct sctp_event_subscribe; ++struct sctp_paddrparams; ++ ++int determine_sctp_sockopt_event_subscribe_size(void); ++int determine_sctp_sockopt_paddrparams_size(void); ++ ++int sctp_setsockopt_event_subscribe_workaround( ++ int fd, const struct sctp_event_subscribe *event_subscribe); ++int sctp_setsockopt_paddrparams_workaround( ++ int fd, const struct sctp_paddrparams *paddrparams); ++ ++#endif /* _SCTP_INTERNAL_H */ +diff --git a/libfdcore/sctp.c b/libfdcore/sctp.c +index 9305b31..4d376c9 100644 +--- a/libfdcore/sctp.c ++++ b/libfdcore/sctp.c +@@ -39,6 +39,10 @@ + #include <netinet/sctp.h> + #include <sys/uio.h> + ++#if 1 /* Open5GS : for SCTP patch */ ++#include "sctp-internal.h" ++#endif ++ + /* Size of buffer to receive ancilliary data. May need to be enlarged if more sockopt are set... */ + #ifndef CMSG_BUF_LEN + #define CMSG_BUF_LEN 1024 +@@ -48,7 +52,7 @@ + /* #define OLD_SCTP_SOCKET_API */ + + /* Automatically fallback to old API if some of the new symbols are not defined */ +-#if (!defined(SCTP_CONNECTX_4_ARGS) || (!defined(SCTP_RECVRCVINFO)) || (!defined(SCTP_SNDINFO)) || (!defined(SCTP_SEND_FAILED_EVENT))) ++#if (!defined(SCTP_CONNECTX_4_ARGS) || (!defined(SCTP_RECVRCVINFO)) || (!defined(SCTP_SNDINFO)) || (!defined(SCTP_SEND_FAILED_EVENT)) || (!defined(SCTP_NOTIFICATIONS_STOPPED_EVENT))) + # define OLD_SCTP_SOCKET_API + #endif + +@@ -341,13 +345,24 @@ static int fd_setsockopt_prebind(int sk) + + /* Some kernel versions need this to be set */ + parms.spp_address.ss_family = AF_INET; ++ ++#if 1 /* Open5GS : workaround for SCTP */ ++ if (determine_sctp_sockopt_paddrparams_size() < 0) { ++ LOG_E("Cannot determine SCTP_EVENTS socket option size"); ++ return -1; ++ } ++#endif + + if (TRACE_BOOL(ANNOYING)) { + sz = sizeof(parms); + + /* Read socket defaults */ + CHECK_SYS( sctp_opt_info(sk, 0, SCTP_PEER_ADDR_PARAMS, &parms, &sz) ); ++#if 0 /* Open5GS : workaround for SCTP */ + if (sz != sizeof(parms)) ++#else ++ if (sz != sizeof(parms) && sz != sctp_sockopt_paddrparams_size) ++#endif + { + TRACE_DEBUG(INFO, "Invalid size of socket option: %d / %d", sz, (socklen_t)sizeof(parms)); + return ENOTSUP; +@@ -371,7 +386,11 @@ static int fd_setsockopt_prebind(int sk) + #endif /* ADJUST_RTX_PARAMS */ + + /* Set the option to the socket */ ++#if 0 /* Open5GS : workaround for SCTP */ + CHECK_SYS( setsockopt(sk, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, &parms, sizeof(parms)) ); ++#else ++ CHECK_SYS( sctp_setsockopt_paddrparams_workaround(sk, &parms) ); ++#endif + + if (TRACE_BOOL(ANNOYING)) { + /* Check new values */ +@@ -410,12 +429,20 @@ static int fd_setsockopt_prebind(int sk) + // event.sctp_authentication_event = 0; /* when new key is made active */ + + /* Set the option to the socket */ ++#if 0 /* Open5GS : workaround for SCTP */ + CHECK_SYS( setsockopt(sk, IPPROTO_SCTP, SCTP_EVENTS, &event, sizeof(event)) ); ++#else ++ CHECK_SYS( sctp_setsockopt_event_subscribe_workaround(sk, &event) ); ++#endif + + if (TRACE_BOOL(ANNOYING)) { + sz = sizeof(event); + CHECK_SYS( getsockopt(sk, IPPROTO_SCTP, SCTP_EVENTS, &event, &sz) ); ++#if 0 /* Open5GS : workaround for SCTP */ + if (sz != sizeof(event)) ++#else ++ if (sz != sizeof(event) && sz != sctp_sockopt_event_subscribe_size) ++#endif + { + TRACE_DEBUG(INFO, "Invalid size of socket option: %d / %d", sz, (socklen_t)sizeof(event)); + return ENOTSUP; +@@ -1138,10 +1165,12 @@ ssize_t fd_sctp_sendstrv(struct cnxctx * conn, uint16_t strid, const struct iove + hdr->cmsg_type = SCTP_SNDRCV; + sndrcv = (struct sctp_sndrcvinfo *)CMSG_DATA(hdr); + sndrcv->sinfo_stream = strid; ++ sndrcv->sinfo_ppid = htonl(46); + #else /* OLD_SCTP_SOCKET_API */ + hdr->cmsg_type = SCTP_SNDINFO; + sndinf = (struct sctp_sndinfo *)CMSG_DATA(hdr); + sndinf->snd_sid = strid; ++ sndinf->snd_ppid = htonl(46); + #endif /* OLD_SCTP_SOCKET_API */ + /* note : we could store other data also, for example in .sinfo_ppid for remote peer or in .sinfo_context for errors. */ + +diff --git a/libfdcore/sctp_compat.c b/libfdcore/sctp_compat.c +new file mode 100644 +index 0000000..9c7c922 +--- /dev/null ++++ b/libfdcore/sctp_compat.c +@@ -0,0 +1,193 @@ ++#include "fdcore-internal.h" ++#include "sctp-internal.h" ++ ++#include <netinet/sctp.h> ++ ++int sctp_sockopt_event_subscribe_size = 0; ++int sctp_sockopt_paddrparams_size = 0; ++ ++/* is any of the bytes from offset .. u8_size in 'u8' non-zero? return offset ++ * or -1 if all zero */ ++static int byte_nonzero( ++ const uint8_t *u8, unsigned int offset, unsigned int u8_size) ++{ ++ int j; ++ ++ for (j = offset; j < u8_size; j++) { ++ if (u8[j] != 0) ++ return j; ++ } ++ ++ return -1; ++} ++ ++int determine_sctp_sockopt_event_subscribe_size(void) ++{ ++ uint8_t buf[256]; ++ socklen_t buf_len = sizeof(buf); ++ int sd, rc; ++ ++ /* only do this once */ ++ if (sctp_sockopt_event_subscribe_size != 0) ++ return 0; ++ ++ sd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); ++ if (sd < 0) ++ return sd; ++ ++ memset(buf, 0, sizeof(buf)); ++ rc = getsockopt(sd, IPPROTO_SCTP, SCTP_EVENTS, buf, &buf_len); ++ close(sd); ++ if (rc < 0) { ++ LOG_E("getsockopt(SCTP_PEER_ADDR_PARAMS) failed [%d:%s]", ++ rc, strerror(errno)); ++ return rc; ++ } ++ ++ sctp_sockopt_event_subscribe_size = buf_len; ++ ++ LOG_D("sizes of 'struct sctp_event_subscribe': " ++ "compile-time %zu, kernel: %u", ++ sizeof(struct sctp_event_subscribe), ++ sctp_sockopt_event_subscribe_size); ++ return 0; ++} ++ ++/* ++ * The workaround is stolen from libosmo-netif. ++ * - http://osmocom.org/projects/libosmo-netif/repository/revisions/master/entry/src/stream.c ++ * ++ * Attempt to work around Linux kernel ABI breakage ++ * ++ * The Linux kernel ABI for the SCTP_EVENTS socket option has been broken ++ * repeatedly. ++ * - until commit 35ea82d611da59f8bea44a37996b3b11bb1d3fd7 ( kernel < 4.11), ++ * the size is 10 bytes ++ * - in 4.11 it is 11 bytes ++ * - in 4.12 .. 5.4 it is 13 bytes ++ * - in kernels >= 5.5 it is 14 bytes ++ * ++ * This wouldn't be a problem if the kernel didn't have a "stupid" assumption ++ * that the structure size passed by userspace will match 1:1 the length ++ * of the structure at kernel compile time. In an ideal world, it would just ++ * use the known first bytes and assume the remainder is all zero. ++ * But as it doesn't do that, let's try to work around this */ ++int sctp_setsockopt_event_subscribe_workaround( ++ int fd, const struct sctp_event_subscribe *event_subscribe) ++{ ++ const unsigned int compiletime_size = sizeof(*event_subscribe); ++ int rc; ++ ++ if (determine_sctp_sockopt_event_subscribe_size() < 0) { ++ LOG_E("Cannot determine SCTP_EVENTS socket option size"); ++ return -1; ++ } ++ ++ if (compiletime_size == sctp_sockopt_event_subscribe_size) { ++ /* no kernel workaround needed */ ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, ++ event_subscribe, compiletime_size); ++ } else if (compiletime_size < sctp_sockopt_event_subscribe_size) { ++ /* we are using an older userspace with a more modern kernel ++ * and hence need to pad the data */ ++ uint8_t buf[256]; ++ ASSERT(sctp_sockopt_event_subscribe_size <= sizeof(buf)); ++ ++ memcpy(buf, event_subscribe, compiletime_size); ++ memset(buf + sizeof(*event_subscribe), ++ 0, sctp_sockopt_event_subscribe_size - compiletime_size); ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, ++ buf, sctp_sockopt_event_subscribe_size); ++ } else /* if (compiletime_size > sctp_sockopt_event_subscribe_size) */ { ++ /* we are using a newer userspace with an older kernel and hence ++ * need to truncate the data - but only if the caller didn't try ++ * to enable any of the events of the truncated portion */ ++ rc = byte_nonzero((const uint8_t *)event_subscribe, ++ sctp_sockopt_event_subscribe_size, compiletime_size); ++ if (rc >= 0) { ++ LOG_E("Kernel only supports sctp_event_subscribe of %u bytes, " ++ "but caller tried to enable more modern event at offset %u", ++ sctp_sockopt_event_subscribe_size, rc); ++ return -1; ++ } ++ ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, event_subscribe, ++ sctp_sockopt_event_subscribe_size); ++ } ++} ++ ++int determine_sctp_sockopt_paddrparams_size(void) ++{ ++ uint8_t buf[256]; ++ socklen_t buf_len = sizeof(buf); ++ int sd, rc; ++ ++ /* only do this once */ ++ if (sctp_sockopt_paddrparams_size != 0) ++ return 0; ++ ++ sd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); ++ if (sd < 0) ++ return sd; ++ ++ memset(buf, 0, sizeof(buf)); ++ rc = getsockopt(sd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, buf, &buf_len); ++ close(sd); ++ if (rc < 0) { ++ LOG_E("getsockopt(SCTP_PEER_ADDR_PARAMS) failed [%d:%s]", ++ rc, strerror(errno)); ++ return rc; ++ } ++ ++ sctp_sockopt_paddrparams_size = buf_len; ++ ++ LOG_D("sizes of 'struct sctp_event_subscribe': " ++ "compile-time %zu, kernel: %u", ++ sizeof(struct sctp_event_subscribe), ++ sctp_sockopt_event_subscribe_size); ++ return 0; ++} ++ ++int sctp_setsockopt_paddrparams_workaround( ++ int fd, const struct sctp_paddrparams *paddrparams) ++{ ++ const unsigned int compiletime_size = sizeof(*paddrparams); ++ int rc; ++ ++ if (determine_sctp_sockopt_paddrparams_size() < 0) { ++ LOG_E("Cannot determine SCTP_EVENTS socket option size"); ++ return -1; ++ } ++ ++ if (compiletime_size == sctp_sockopt_paddrparams_size) { ++ /* no kernel workaround needed */ ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, ++ paddrparams, compiletime_size); ++ } else if (compiletime_size < sctp_sockopt_paddrparams_size) { ++ /* we are using an older userspace with a more modern kernel ++ * and hence need to pad the data */ ++ uint8_t buf[256]; ++ ASSERT(sctp_sockopt_paddrparams_size <= sizeof(buf)); ++ ++ memcpy(buf, paddrparams, compiletime_size); ++ memset(buf + sizeof(*paddrparams), ++ 0, sctp_sockopt_paddrparams_size - compiletime_size); ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, ++ buf, sctp_sockopt_paddrparams_size); ++ } else /* if (compiletime_size > sctp_sockopt_paddrparams_size) */ { ++ /* we are using a newer userspace with an older kernel and hence ++ * need to truncate the data - but only if the caller didn't try ++ * to enable any of the events of the truncated portion */ ++ rc = byte_nonzero((const uint8_t *)paddrparams, ++ sctp_sockopt_paddrparams_size, compiletime_size); ++ if (rc >= 0) { ++ LOG_E("Kernel only supports sctp_event_subscribe of %u bytes, " ++ "but caller tried to enable more modern event at offset %u", ++ sctp_sockopt_paddrparams_size, rc); ++ return -1; ++ } ++ ++ return setsockopt(fd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, paddrparams, ++ sctp_sockopt_paddrparams_size); ++ } ++} +diff --git a/libfdproto/meson.build b/libfdproto/meson.build +new file mode 100644 +index 0000000..1bf0963 +--- /dev/null ++++ b/libfdproto/meson.build +@@ -0,0 +1,48 @@ ++# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com> ++ ++# This file is part of Open5GS. ++ ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Affero General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <https://www.gnu.org/licenses/>. ++ ++fdproto_sources = files(''' ++ fdproto-internal.h ++ dictionary.c ++ dictionary_functions.c ++ dispatch.c ++ fifo.c ++ init.c ++ lists.c ++ log.c ++ messages.c ++ ostr.c ++ portability.c ++ rt_data.c ++ sessions.c ++ utils.c ++ version.c ++'''.split()) ++ ++libfdproto = library('fdproto', ++ sources : [fdproto_sources], ++ version : freeDiameter_version, ++ soversion : freeDiameter_soversion, ++ include_directories : freeDiameter_includes, ++ dependencies : [threads, librt, libidn ], ++ install : true) ++ ++libfdproto_dep = declare_dependency( ++ link_with : libfdproto, ++ include_directories : freeDiameter_includes, ++ dependencies : [threads, librt, libidn ], ++) +diff --git a/meson.build b/meson.build +new file mode 100644 +index 0000000..42a45b5 +--- /dev/null ++++ b/meson.build +@@ -0,0 +1,71 @@ ++# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com> ++ ++# This file is part of Open5GS. ++ ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Affero General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <https://www.gnu.org/licenses/>. ++ ++project('freediameter', 'c', ++ version : '1.5.0', ++ license : 'BSD-3-clause', ++ meson_version : '>= 0.43.0', ++ default_options : [ ++ 'warning_level=1', ++ 'c_std=gnu89', ++ 'prefix=/usr', ++ ], ++) ++ ++freeDiameter_version = meson.project_version() ++freeDiameter_soversion = '7' ++ ++prefix = get_option('prefix') ++bindir = join_paths(prefix, get_option('bindir')) ++libdir = join_paths(prefix, get_option('libdir')) ++sysconfdir = join_paths(prefix, get_option('sysconfdir')) ++localstatedir = join_paths(prefix, get_option('localstatedir')) ++ ++cc = meson.get_compiler('c') ++host_system = host_machine.system() ++ ++flex = find_program('flex') ++bison = find_program('bison') ++ ++# Compiler flags ++if cc.get_id() == 'gcc' or cc.get_id() == 'clang' ++ possible_cc_flags = [ ++ '-Werror', ++ ++ '-Wno-unused-variable', ++ '-Wno-unused-but-set-variable', ++ '-Wno-maybe-uninitialized', ++ '-Wno-format-truncation', ++ '-Wno-stringop-truncation', ++ ] ++else ++ possible_cc_flags = [] ++endif ++ ++add_project_arguments( ++ cc.get_supported_arguments(possible_cc_flags), ++ language : 'c') ++ ++freeDiameter_includes = include_directories(''' ++ include ++ . ++'''.split()) ++ ++subdir('include/freeDiameter') ++subdir('libfdproto') ++subdir('libfdcore') ++subdir('extensions') diff --git a/debian/patches/series b/debian/patches/series index abf5952..93b529b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,6 +1,7 @@ 0001-Fix-some-spelling-errors.patch 0002-install-extensions-in-usr-lib-freeDiameter.-Do-not-i.patch 0003-Set-default-debian-location-for-freeDiameter-configu.patch -0004-Disable-running-tests-that-require-the-kernel-module.patch -0007-Result-Code-changes-to-Optional.patch -0015-compile-rt_default-rt_redirect-extension-3.patch +ogs-freediameter.patch +#0004-Disable-running-tests-that-require-the-kernel-module.patch +#0007-Result-Code-changes-to-Optional.patch +#0015-compile-rt_default-rt_redirect-extension-3.patch |
