changeset 1549:19ab8ac08a36

Merge
author Sebastien Decugis <sdecugis@freediameter.net>
date Tue, 07 Jul 2020 01:41:54 +0800
parents edfb2b662b91 (diff) 6a35c5470ef4 (current diff)
children 224cb55be2d7
files libfdproto/messages.c
diffstat 72 files changed, 27794 insertions(+), 12768 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -71,6 +71,12 @@
   SET(DEBUG 1)
 ENDIF (CMAKE_BUILD_TYPE MATCHES "Debug|Profiling|DebugValgrind")
 
+# Build with fatal warnings?
+IF (ERRORS_ON_WARNINGS)
+  SET(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}")
+  SET(CMAKE_REQUIRED_FLAGS "-Wno-error ${CMAKE_REQUIRED_FLAGS}")
+ENDIF (ERRORS_ON_WARNINGS)
+
 # some subfolders use yacc and lex parsers
 SET(BISON_GENERATE_DEFINES TRUE)
 SET(BISON_PREFIX_OUTPUTS TRUE)
@@ -109,4 +115,3 @@
 IF ( BUILD_TESTING )
 	SUBDIRS(tests)
 ENDIF ( BUILD_TESTING )
-
--- a/LICENSE	Tue Jul 07 01:24:48 2020 +0800
+++ b/LICENSE	Tue Jul 07 01:41:54 2020 +0800
@@ -52,3 +52,6 @@
 
  * Thomas Klausner:
   several extensions and numerous fixes / improvements.
+
+ * Luke Mewburn:
+  numerous fixes / improvements.
--- a/contrib/debian/changelog	Tue Jul 07 01:24:48 2020 +0800
+++ b/contrib/debian/changelog	Tue Jul 07 01:41:54 2020 +0800
@@ -1,3 +1,126 @@
+freediameter (UNRELEASED) UNRELEASED; urgency=low
+
+  * freeDiameter:
+    - Add -g to help
+    - Change -d and -q to control syslog level, as per stdout logging.
+    - Syslog to LOG_DAEMON.
+    - Actually syslog to LOG_DEBUG, now that -d/-q are used.
+    - Add -p pidfile
+    - SCTP client: bind to local endpoints configured with ListenOn so
+      that the SCTP INIT only contains those local endpoint addresses,
+      matching what is advertised in the CER.
+  * Base dictionary: Add rules for Experimental-Result.
+  * All extensions: Hide symbols except for fd_ext_init() and fd_ext_fini().
+  * dbg_dict_dump.fdx: add extension to write the dictionary
+    to the given file or to the log.
+  * dbg_dict_dump_json.fdx: add extension to write the dictionary as JSON
+    to the given file or stdout.
+  * dict_dcca_3gpp.fdx: Update to 3GPP Release 15, adding many standards.
+    This adds 96 TYPEs, 145 ENUMVALs, 791 AVPs, 52 RULEs.
+    There are various breaking changes (documented below).
+  * contrib/dictionary_dcca_3gpp.json: Remove non-3GPP AVPs that are
+    actually from base IETF RFCs:
+      - MIP6-Feature-Vector (124). IETF RFC 5447
+      - Service-Selection (493). IETF RFC 5778
+      - Mobile-Node-Identifier (506). IETF RFC 5779
+      - QoS-Capability (578). IETF RFC 5777.
+  * New API: fd_msg_add_result(): set Result-Code or Experimental-Result.
+  * New API: log level FD_LOG_INFO.
+  * fd_conf_dump(): fix formatting of local endpoints.
+  * fd_msg_search_avp(): support searching avp as well as msg.
+  * Fix compiler warnings.
+  * Add ERRORS_ON_WARNINGS cmake boolean to enable fatal compiler warnings.
+  * New tool: grep_fd_dict_dump: cleanup fd_dict_dump() output in logs.
+  * New tool: csv_to_fd: convert .csv with AVP tables to freeDiameter C or JSON.
+  * New tool: org_to_csv: convert .org files into .csv files.
+
+  * dict_dcca_3gpp.fdx changes per update to 3GPP Release 15 as at 2019-12:
+    - AVP changes:
+      - 3GPP-CG-IPv6-Address (14) renamed to 3GPP-CG-Ipv6-Address (14).
+      - 3GPP-GGSN-IPv6-Address (16) renamed to 3GPP-GGSN-Ipv6-Address (16).
+      - 3GPP-IPv6-DNS-Servers (17) renamed to 3GPP-Ipv6-DNS-Servers (17).
+      - 3GPP-SGSN-IPv6-Address (15) renamed to 3GPP-SGSN-Ipv6-Address (15).
+      - 3GPP2-BSID (9010) flag M MUST.
+      - 3GPP2-BSID (9010) type changed from OctetString to UTF8String.
+      - ADC-Revalidation-Time (2801) Time removed in 3GPP TS 29.212 V12.1.0 (2013-06).
+      - ADC-Rule-Base-Name (1095) flag M MUST.
+      - ADC-Rule-Definition (1094) flag M MUST.
+      - ADC-Rule-Install (1092) flag M MUST.
+      - ADC-Rule-Name (1096) flag M MUST.
+      - ADC-Rule-Remove (1093) flag M MUST.
+      - ADC-Rule-Report (1097) flag M MUST.
+      - Application-Service-Type (2102) type changed from UTF8String to Enumerated.
+      - Application–Session–Id (2103) type changed from UTF8String to Unsigned32.
+      - Call-Barring-Infor-List (1488) renamed to Call-Barring-Info (1488).
+      - External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String.
+      - LCS-Requestor-Id (1239) renamed to LCS-Requestor-ID (1239).
+      - LCS-Requestor-Id-String (1240) renamed to LCS-Requestor-ID-String (1240).
+      - MBMS-BMSC-SSM-IPv6-Address (919) renamed to MBMS-BMSC-SSM-Ipv6-Address (919).
+      - MBMS-GGSN-IPv6-Address (917) renamed to MBMS-GGSN-Ipv6-Address (917).
+      - MBMSGW-Address (2307) renamed to MBMS-GW-Address (2307).
+      - Measurement-Period-LTE (1656) code changed to Measurement-Period-LTE (1655).
+      - Measurement-Period-UMTS (1655) code changed to Measurement-Period-UMTS (1656).
+      - MME-LocationInformation (1600) renamed to MME-Location-Information(1600).
+      - PDG-Address (895) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - PDG-Charging-Id (896) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - PDN-Connection-ID (1065) flag M MUST NOT.
+      - PoC-User-Role-info-Units (1254) renamed to PoC-User-Role-Info-Units (1254).
+      - PS-to-CS-Session-Continuity (1099) flag M MUST NOT.
+      - SS-Status (1477) type changed from Grouped to OctetString.
+      - Status (2702) renamed to Status-AS-Code (2702).
+      - WAG-Address (890) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WAG-PLMN-Id (891) OctetString removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WLAN-Information (875) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WLAN-Radio-Container (892) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WLAN-Session-Id (1246) UTF8String removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WLAN-Technology (893) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+      - WLAN-UE-Local-IPAddress (894) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).
+    - AVP renames:
+      - Rename Call-Barring-Infor-List (1488) to Call-Barring-Info (1488).
+      - Rename LCS-Requestor-Id (1239) to LCS-Requestor-ID (1239).
+      - Rename LCS-Requestor-Id-String (1240) to LCS-Requestor-ID-String (1240).
+      - Rename MBMSGW-Address (2307) to MBMS-GW-Address (2307).
+      - Rename MME-LocationInformation (1600) to MME-Location-Information(1600).
+      - Rename PoC-User-Role-info-Units (1254) to PoC-User-Role-Info-Units (1254).
+      - Rename Status (2702) to Status-AS-Code (2702).
+    - AVP name conflicts:
+      - Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates
+        Time-Window-29.154 (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).
+    - Add Enumerated(3GPP/Experimental-Result-Code). 145 values.
+    - Update standards:
+      - 3GPP TS 29.061 V15.5.0 (2018-12). 15 AVPs.
+      - 3GPP TS 29.173 V15.0.0 (2018-06). 1 AVP.
+      - 3GPP TS 29.212 V15.9.0 (2019-12). 46 AVPs.
+      - 3GPP TS 29.214 V15.7.0 (2019-09). 27 AVPs.
+      - 3GPP TS 29.229 V15.2.0 (2019-09). 8 AVPs.
+      - 3GPP TS 29.272 V15.10.0 (2019-12). 44 AVPs.
+      - 3GPP TS 29.329 V15.2.0 (2019-09). 5 AVPs.
+      - 3GPP TS 32.299 V15.7.0 (2019-06). 154 AVPs.
+    - Add standards:
+      - 3GPP TS 29.109 V15.0.0 (2017-06). 21 AVPs.
+      - 3GPP TS 29.128 V15.6.0 (2019-09). 25 AVPs.
+      - 3GPP TS 29.153 V15.1.0 (2019-09). 2 AVPs.
+      - 3GPP TS 29.154 V15.3.0 (2019-09). 16 AVPs.
+      - 3GPP TS 29.172 V15.2.0 (2019-12). 66 AVPs.
+      - 3GPP TS 29.209 V6.8.0 (2011-09). 2 AVPs.
+      - 3GPP TS 29.215 V15.2.0 (2019-09). 9 AVPs.
+      - 3GPP TS 29.217 V15.1.0 (2019-09). 14 AVPs.
+      - 3GPP TS 29.219 V15.3.0 (2019-09). 7 AVPs.
+      - 3GPP TS 29.234 V11.2.0 (2013-06). 19 AVPs.
+      - 3GPP TS 29.273 V15.4.0 (2019-09). 40 AVPs.
+      - 3GPP TS 29.283 V15.1.0 (2019-09). 16 AVPs.
+      - 3GPP TS 29.336 V15.7.0 (2019-09). 79 AVPs.
+      - 3GPP TS 29.337 V15.0.0 (2018-06). 4 AVPs.
+      - 3GPP TS 29.338 V15.1.0 (2018-12). 34 AVPs.
+      - 3GPP TS 29.343 V15.1.0 (2019-09). 13 AVPs.
+      - 3GPP TS 29.344 V15.1.0 (2019-09). 7 AVPs.
+      - 3GPP TS 29.345 V15.1.0 (2019-09). 68 AVPs.
+      - 3GPP TS 29.368 V15.1.0 (2019-09). 12 AVPs.
+      - 3GPP TS 29.388 V15.1.0 (2019-09). 3 AVPs.
+      - 3GPP TS 29.389 V15.1.0 (2019-09). 3 AVPs.
+      - 3GPP TS 29.468 V15.8.0 (2019-12). 33 AVPs.
+      - 3GPP TS 29.561 V16.3.0 (2020-03). 9 AVPs.
+
 freediameter (1.4.0) RELEASED; urgency=low
 
   * New API: fd_fifo_set_max to change the capacity of a queue.
--- a/contrib/dict_json/dictionary_dcca_3gpp.json	Tue Jul 07 01:24:48 2020 +0800
+++ b/contrib/dict_json/dictionary_dcca_3gpp.json	Tue Jul 07 01:41:54 2020 +0800
@@ -2930,36 +2930,6 @@
       "Vendor": 10415
     },
     {
-      "Code": 28,
-      "Flags": {
-        "Must": "V",
-        "MustNot": "M"
-      },
-      "Name": "External-Identifier",
-      "Type": "OctetString",
-      "Vendor": 10415
-    },
-    {
-      "Code": 124,
-      "Flags": {
-        "Must": "M",
-        "MustNot": "VP"
-      },
-      "Name": "MIP6-Feature-Vector",
-      "Type": "Unsigned64",
-      "Vendor": 10415
-    },
-    {
-      "Code": 493,
-      "Flags": {
-        "Must": "M",
-        "MustNot": "VP"
-      },
-      "Name": "Service-Selection",
-      "Type": "UTF8String",
-      "Vendor": 10415
-    },
-    {
       "Code": 500,
       "Flags": {
         "Must": "VM",
@@ -3020,16 +2990,6 @@
       "Vendor": 10415
     },
     {
-      "Code": 506,
-      "Flags": {
-        "Must": "M",
-        "MustNot": "VP"
-      },
-      "Name": "Mobile-Node-Identifier",
-      "Type": "UTF8String",
-      "Vendor": 10415
-    },
-    {
       "Code": 507,
       "Flags": {
         "Must": "VM",
@@ -3560,16 +3520,6 @@
       "Vendor": 10415
     },
     {
-      "Code": 578,
-      "Flags": {
-        "Must": "M",
-        "MustNot": "VP"
-      },
-      "Name": "QoS-Capability",
-      "Type": "Grouped",
-      "Vendor": 10415
-    },
-    {
       "Code": 600,
       "Flags": {
         "Must": "VM",
@@ -7956,7 +7906,7 @@
         "MustNot": ""
       },
       "Name": "SS-Status",
-      "Type": "Grouped",
+      "Type": "OctetString",
       "Vendor": 10415
     },
     {
@@ -8065,7 +8015,7 @@
         "Must": "VM",
         "MustNot": ""
       },
-      "Name": "Call-Barring-Infor-List",
+      "Name": "Call-Barring-Info",
       "Type": "Grouped",
       "Vendor": 10415
     },
@@ -8435,7 +8385,7 @@
         "Must": "V",
         "MustNot": "M"
       },
-      "Name": "MME-LocationInformation",
+      "Name": "MME-Location-Information",
       "Type": "Grouped",
       "Vendor": 10415
     },
@@ -10850,6 +10800,16 @@
       "Vendor": 10415
     },
     {
+      "Code": 3111,
+      "Flags": {
+        "Must": "V",
+        "MustNot": "M"
+      },
+      "Name": "External-Identifier",
+      "Type": "UTF8String",
+      "Vendor": 10415
+    },
+    {
       "Code": 3401,
       "Flags": {
         "Must": "VM",
--- a/contrib/test_Gx/main_gx.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/contrib/test_Gx/main_gx.c	Tue Jul 07 01:41:54 2020 +0800
@@ -700,53 +700,6 @@
 
 
 }
-/* Search a given AVP model in an AVP (extracted from libfreediameter/message.c ) */
-int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp )
-{
-       struct avp * nextavp;
-       struct avp_hdr * nextavphdr;
-       struct dict_avp_data    dictdata;
-       
-       
-       TRACE_ENTRY("%p %p %p", groupedavp, what, avp);
-       
-       CHECK_FCT(  fd_dict_getval(what, &dictdata)  );
-       
-       // Loop only in the group AVP 
-       CHECK_FCT(  fd_msg_browse(groupedavp, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL)  );
-       CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr )  );
-       
-       while (nextavphdr) {
-	       
-	       if ( (nextavphdr->avp_code   == dictdata.avp_code) && (nextavphdr->avp_vendor == dictdata.avp_vendor) ) // always 0 if no Vendor flag
-	       {
-		       break;
-	       }
-	       
-	       // Otherwise move to next AVP in the grouped AVP 
-	       CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) );
-	       
-	       if(nextavp!=NULL)
-	       {
-		       CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr )  );
-	       }
-	       else
-		       nextavphdr=NULL;
-       }
-       if (avp)
-	       *avp = nextavp;
-       
-       if (avp && nextavp) {
-	       struct dictionary * dict;
-	       CHECK_FCT( fd_dict_getdict( what, &dict) );
-	       CHECK_FCT_DO( fd_msg_parse_dict( nextavp, dict, NULL ),  );
-       }
-       
-       if (avp || nextavp)
-	       return 0;
-       else
-	       return ENOENT;
-}
 
 static int cca_cb( struct msg ** msg, 
 		   struct avp * t_avp , 
@@ -784,7 +737,7 @@
 
 
 	CHECK_FCT(fd_msg_search_avp ( *msg, chrg_rule_grp, &g_avp ));
-	CHECK_FCT(fd_avp_search_avp(g_avp, chrg_rule_name, &avp));
+	CHECK_FCT(fd_msg_search_avp(g_avp, chrg_rule_name, &avp));
 
 	if(avp) {
 	       CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
--- a/contrib/tools/README	Tue Jul 07 01:24:48 2020 +0800
+++ b/contrib/tools/README	Tue Jul 07 01:41:54 2020 +0800
@@ -1,2 +1,11 @@
+csv_to_fd converts CSV files containing RADIUS or Diameter AVP tables
+into various formats, including freeDiameter C code and JSON documents.
+
+grep_fd_dict_dump processes stdin for the output of fd_dict_dump()
+or dbg_dict_dump.fdx and reformats to remove pointer addresses,
+to allow diff of output between freeDiameter invocations.
+
+org_to_csv converts org files into CSV files, suitable for csv_to_fd.
+
 org_to_fd.pl converts org files like diameter-rfcs.org to C fragments
 that can be included in freeDiameter code.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tools/csv_to_fd	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,662 @@
+#!/usr/bin/env python
+
+"""
+Convert 8 column CSV files containing RADIUS or Diameter AVP tables
+into various formats.
+
+Format of the CSV files is one of:
+- Row per 3GPP AVP tables:
+    Name, Code, Section, DataType, Must, May, ShouldNot, MustNot
+    - Name:
+        AVP Name. String, validated as ALPHA *(ALPHA / DIGIT / "-")
+        per RFC 6733 section 3.2.
+        May start with a DIGIT (e.g., "3GPP-IMSI").
+    - Code:
+        AVP Code. Integer, 0..4294967295.
+    - Section:
+        Section in relevant standard. String.
+    - DataType:
+        AVP Data Type. String, validated per basic and derived types in:
+            - RFC 6733 section 4.2
+            - RFC 6733 section 4.3
+            - RFC 7155 section 4.1
+    - Must, May, ShouldNot, MustNot:
+        Flags, possibly comma or space separated: M, P, V
+
+- Comment row. First cell:
+    # Comment text      'Comment text'
+    #=                  '/*========*/'
+    #                   Blank line
+
+- Parameter row:
+    @Parameter,Value [, ...]
+  Supported Parameter terms:
+    standard    Standard name. E.g. '3GPP TS 29.272', 'RFC 6733'.
+    vendor      Vendor number.
+
+"""
+
+from __future__ import print_function
+from __future__ import with_statement
+
+import abc
+import csv
+import collections
+import json
+import re
+import optparse
+import os
+import sys
+
+CSV_COLUMN_NAMES = [
+    'name',
+    'code',
+    'section',
+    'datatype',
+    'must',
+    'may',
+    'shouldnot',
+    'mustnot',
+]
+
+DERIVED_TO_BASE = {
+    'Address':          'OctetString',  # RFC 6733 section 4.3.1
+    'Time':             'OctetString',  # RFC 6733 section 4.3.1
+    'UTF8String':       'OctetString',  # RFC 6733 section 4.3.1
+    'DiameterIdentity': 'OctetString',  # RFC 6733 section 4.3.1
+    'DiameterURI':      'OctetString',  # RFC 6733 section 4.3.1
+    'Enumerated':       'Integer32',    # RFC 6733 section 4.3.1
+    'IPFilterRule':     'OctetString',  # RFC 6733 section 4.3.1
+    'QoSFilterRule':    'OctetString',  # RFC 7155 section 4.1.1
+}
+
+# See https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
+VENDOR_TO_NAME = {
+    0:      '',
+    193:    'Ericsson',
+    8164:   'Starent',
+    10415:  '3GPP',
+}
+
+
+class Avp(object):
+    """Store an AVP row."""
+
+    # Regex to validate avp-name per RFC 6733 section 3.2,
+    # with changes:
+    # - Allow avp-name to start with numbers (for 3GPP)
+    # - Allow '.' in avp-name, for existing dict_dcca_3gpp usage.
+# TODO: if starts with digit, ensure contains a letter somewhere?
+    _name_re = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9-\.]*$')
+
+    # Regex to validate flags: M, P, V, comma, space
+    _flags_re = re.compile(r'^[MPV, ]*$')
+
+    __slots__ = CSV_COLUMN_NAMES + [
+        'filename', 'line_num', 'standard', 'vendor', ]
+
+    def __init__(self, name, code, section, datatype,
+                 must, may, shouldnot, mustnot, extra_cells=[],
+                 filename='', line_num=0, standard='', vendor=0):
+        # Members from CSV row
+        self.name = name
+        self.code = int(code)
+        self.section = section
+        self.datatype = datatype
+        self.must = must
+        self.may = may
+        self.shouldnot = shouldnot
+        self.mustnot = mustnot
+        # Members from file state
+        self.filename = filename
+        self.line_num = line_num
+        self.standard = standard
+        self.vendor = vendor
+        # Validate CSV fields
+        if not self._name_re.match(self.name):
+            raise ValueError('Invalid AVP name "{}"'.format(self.name))
+        if (self.code < 0 or self.code > 4294967295):
+            raise ValueError('AVP "{}" invalid code {}'.format(
+                self.name, self.code))
+        if (self.datatype not in (
+                'OctetString', 'Integer32', 'Integer64', 'Unsigned32',
+                'Unsigned64', 'Float32', 'Float64', 'Grouped')
+                and self.datatype not in DERIVED_TO_BASE):
+            raise ValueError('{} invalid data type "{}"'.format(
+                self.description(), self.datatype))
+        # Validate flags
+        flags = collections.Counter()
+        for val, desc in [
+                (self.must, 'Must'),
+                (self.may, 'May'),
+                (self.shouldnot, 'Should Not'),
+                (self.mustnot, 'Must Not'),
+                ]:
+            if not self._flags_re.match(val):
+                raise ValueError('{} invalid {} Flags "{}"'.format(
+                    self.description(), desc, val))
+            flags.update(val)
+        # Check occurrence of M,V in Must,May,ShouldNot,MustNot
+        for flag in 'MV':
+            # TODO: can AVP flags not appear at all?
+            # if flags[flag] == 0:
+            #     raise ValueError('{} Flag "{}" not set'.format(
+            #         self.description(), flag))
+            if flags[flag] > 1:
+                raise ValueError('{} Flag "{}" set {} times'.format(
+                    self.description(), flag, flags[flag]))
+        # Compare V presence against vendor
+        if 'V' in self.must:
+            if self.vendor == 0:
+                raise ValueError('{} Flag "V" set for vendor 0'.format(
+                    self.description()))
+        else:
+            if self.vendor != 0:
+                raise ValueError('{} Flag "V" not set for vendor {}'.format(
+                    self.description(), self.vendor))
+
+    @property
+    def __dict__(self):
+        return {s: getattr(self, s) for s in self.__slots__}
+
+    def __eq__(self, other):
+        """Equality comparison of Avp instances.
+        Considered equal if name, vendor, code, datatype, and flags are equal.
+        """
+        if other is self:
+            return True
+        if type(other) is not type(self):
+            return NotImplemented
+        return (
+            other.name, other.vendor, other.code, other.datatype,
+            other.must, other.may, other.shouldnot, other.mustnot,
+            ) == (
+            self.name, self.vendor, self.code, self.datatype,
+            self.must, self.may, self.shouldnot, self.mustnot,
+            )
+
+    def __ne__(self, other):
+        return not self == other
+
+    def description(self):
+        return 'AVP "{}" ({})'.format(self.name, self.code)
+
+
+class Processor(object):
+    """Interface for processor of Avp."""
+
+    __metaclass__ = abc.ABCMeta
+
+    @classmethod
+    def cls_name(cls):
+        """Return the name, lower-case, without "processor" suffix."""
+        suffix = 'processor'
+        name = cls.__name__.lower()
+        if name.endswith(suffix):
+            return name[:-len(suffix)]
+        return name
+
+    @classmethod
+    def cls_desc(cls):
+        """Return the first line of the docstring."""
+        if cls.__doc__ is None:
+            return ""
+        return cls.__doc__.split('\n')[0]
+
+    @abc.abstractmethod
+    def filename(self, filename):
+        """Called when a file is opened."""
+        pass
+
+    @abc.abstractmethod
+    def avp(self, avp):
+        """Process a validated Avp."""
+        pass
+
+    @abc.abstractmethod
+    def comment(self, comment, filename, line_num):
+        """Process a comment row:
+            #comment,
+        """
+        pass
+
+    @abc.abstractmethod
+    def generate(self):
+        """Invoked after all rows processed."""
+        pass
+
+    @abc.abstractmethod
+    def parameter(self, name, value):
+        """Process a parameter row:
+            @name,value.
+        """
+        pass
+
+
+class DebugProcessor(Processor):
+    """Display the CSV parsing."""
+
+    def filename(self, filename):
+        print('File: {}'.format(filename))
+
+    def avp(self, avp):
+        avpdict = vars(avp)
+        print('AVP: {name}, {code}, {datatype}'.format(**avpdict))
+
+    def comment(self, comment, filename, line_num):
+        print('Comment: {}'.format(comment))
+
+    def generate(self):
+        print('Generate')
+
+    def parameter(self, name, value):
+        print('Parameter: {} {}'.format(name, value))
+
+
+class NoopProcessor(Processor):
+    """Validate the CSV; no other output."""
+
+    def filename(self, filename):
+        pass
+
+    def avp(self, avp):
+        pass
+
+    def comment(self, comment, filename, line_num):
+        pass
+
+    def generate(self):
+        pass
+
+    def parameter(self, name, value):
+        pass
+
+
+class FdcProcessor(Processor):
+    """Generate freeDiameter C code.
+
+    Comment cells are parsed as:
+        # text comment  /* text comment */
+        #=              /*==============*/
+        #               [blank line]
+    """
+
+    COMMENT_WIDTH = 64
+
+    class AvpFunction(object):
+        """Maintain per-function state to create DICT_AVP entries.
+        """
+
+        def __init__(self, name):
+            self.__name = name
+            self.__lines = []
+            self.__derived = set()
+
+        @property
+        def name(self):
+            """Return name."""
+            return self.__name
+
+        @property
+        def lines(self):
+            """Return all lines."""
+            return self.__lines
+
+        @lines.setter
+        def lines(self, value):
+            """Set to append a line."""
+            self.__lines.append(value)
+
+        @property
+        def derived(self):
+            """Return list of all derived values."""
+            return list(self.__derived)
+
+        @derived.setter
+        def derived(self, value):
+            """Set to store a derived type."""
+            self.__derived.add(value)
+
+    def __init__(self):
+        self._filenames = []
+        self._functions = collections.OrderedDict()
+
+    def filename(self, filename):
+        self._filenames.append(os.path.basename(filename))
+
+    def avp(self, avp):
+        comment = '{name}, {datatype}, code {code}'.format(**vars(avp))
+        if avp.section != '':
+            comment += ', section {}'.format(avp.section)
+        self.add_comment(comment)
+        self.add('\t{')
+        self.add('\t\tstruct dict_avp_data data = {')
+# TODO: remove comments?
+        self.add('\t\t\t{},\t/* Code */'.format(avp.code))
+        self.add('\t\t\t{},\t/* Vendor */'.format(avp.vendor))
+        self.add('\t\t\t\"{}\",\t/* Name */'.format(avp.name))
+        self.add('\t\t\t{},\t/* Fixed flags */'.format(
+            self.build_flags(', '.join([avp.must, avp.mustnot]))))
+        self.add('\t\t\t{},\t/* Fixed flag values */'.format(
+            self.build_flags(avp.must)))
+# TODO: add trailing comma?
+        self.add('\t\t\tAVP_TYPE_{}\t/* base type of data */'.format(
+            DERIVED_TO_BASE.get(avp.datatype, avp.datatype).upper()))
+        self.add('\t\t};')
+        avp_type = 'NULL'
+        if avp.datatype == 'Enumerated':
+            self.add('\t\tstruct dict_object\t*type;')
+            vendor_prefix = ''
+            if avp.vendor != 0:
+                vendor_prefix = '{}/'.format(VENDOR_TO_NAME[avp.vendor])
+            self.add(
+                '\t\tstruct dict_type_data\t tdata = {{ AVP_TYPE_INTEGER32, '
+                '"Enumerated({prefix}{name})", NULL, NULL, NULL }};'.format(
+                    prefix=vendor_prefix, name=avp.name))
+# XXX: add enumerated values
+            self.add('\t\tCHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);')
+            avp_type = "type"
+        elif avp.datatype in DERIVED_TO_BASE:
+            avp_type = '{}_type'.format(avp.datatype)
+            self.derived(avp.datatype)
+        self.add('\t\tCHECK_dict_new(DICT_AVP, &data, {}, NULL);'.format(
+            avp_type))
+# TODO: remove ; on scope brace
+        self.add('\t};')
+        self.add('')
+
+    def comment(self, comment, filename, line_num):
+        if comment == '':
+            self.add('')
+        elif comment == '=':
+            self.add_header()
+        elif comment.startswith(' '):
+            self.add_comment(comment[1:])
+        else:
+            raise ValueError('Unsupported comment "{}"'.format(comment))
+
+    def generate(self):
+        fp = sys.stdout
+        self.write_introduction(fp)
+        for func in self._functions:
+            self.write_function(fp, self._functions[func])
+
+    def parameter(self, name, value):
+        pass
+
+    # internal methods
+
+    def current_avpfunction(self):
+        """Return current AvpFunction to update.
+
+        Note: allows for easier future enhancement to generate separate
+        C functions per AVP groups such as: by csv file, standard, or vendor.
+        """
+        name = 'add_avps'
+        if name not in self._functions:
+            self._functions[name] = self.AvpFunction(name)
+        return self._functions[name]
+
+    def add(self, line):
+        self.current_avpfunction().lines = line
+
+    def derived(self, value):
+        self.current_avpfunction().derived = value
+
+    def build_c_token(self, value):
+        """Convert a string into a valid C token."""
+        return re.sub(r'[^\w]', '_', value)
+
+    def build_flags(self, flags):
+        result = []
+        if 'V' in flags:
+            result.append('AVP_FLAG_VENDOR')
+        if 'M' in flags:
+            result.append('AVP_FLAG_MANDATORY')
+        if not result:
+            return '0';
+        return ' |'.join(result)
+
+    def add_comment(self, comment):
+        self.add(self.format_comment(comment))
+
+    def add_header(self):
+        self.add(self.format_header())
+
+    def format_comment(self, comment):
+        return '\t/* {:<{width}} */'.format(comment, width=self.COMMENT_WIDTH)
+
+    def format_header(self):
+        return '\t/*={:=<{width}}=*/'.format('', width=self.COMMENT_WIDTH)
+
+    def write_introduction(self, fp):
+        """Write the introduction to the generated file."""
+        fp.write('''\
+/*
+Generated by:
+\tcsv_to_fd -p {processor} {files}
+
+Do not modify; modify the source .csv files instead.
+*/
+
+#include <freeDiameter/extension.h>
+
+#define CHECK_dict_new( _type, _data, _parent, _ref ) \\
+\tCHECK_FCT(  fd_dict_new( fd_g_config->cnf_dict, \
+(_type), (_data), (_parent), (_ref))  );
+
+#define CHECK_dict_search( _type, _criteria, _what, _result ) \\
+\tCHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, \
+(_type), (_criteria), (_what), (_result), ENOENT) );
+'''.format(
+            processor=self.cls_name(),
+            files=' '.join(self._filenames)))
+
+    def write_function(self, fp, avpfunction):
+        """Generate a function from AvpFunction."""
+        function = self.build_c_token(avpfunction.name)
+        # Function start
+        fp.write('''\
+
+int {}()
+{{
+'''.format(function))
+
+        # Create variables used by derived type validation
+        for derived in avpfunction.derived:
+            fp.write('''\
+\tstruct dict_object * {name}_type = NULL;
+\tCHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "{name}", &{name}_type);
+
+'''.format(name=derived))
+
+        # Write generated DICT_AVP creation
+        fp.write('\n'.join(avpfunction.lines))
+
+        # Write function end
+        fp.write('''\
+
+\treturn 0;
+}} /* {}() */
+'''.format(function))
+
+
+class JsonProcessor(Processor):
+    """Generate freeDiameter JSON object.
+    """
+
+    def __init__(self):
+        self.avps = []
+
+    def filename(self, filename):
+        pass
+
+    def avp(self, avp):
+        flags = collections.OrderedDict([
+            ('Must',    self.build_flags(avp.must)),
+            ('MustNot', self.build_flags(avp.mustnot)),
+        ])
+        row = collections.OrderedDict([
+            ('Code',    avp.code),
+            ('Flags',   flags),
+            ('Name',    avp.name),
+            ('Type',    avp.datatype),
+            ('Vendor',  avp.vendor),
+        ])
+        self.avps.append(row)
+
+    def comment(self, comment, filename, line_num):
+        pass
+
+    def generate(self):
+        doc = {"AVPs": self.avps}
+        print(json.dumps(doc, indent=2))
+
+    def parameter(self, name, value):
+        pass
+
+    def build_flags(self, flags):
+        result = []
+        if 'V' in flags:
+            result.append('V')
+        if 'M' in flags:
+            result.append('M')
+        return ''.join(result)
+
+
+def avp_conflict(description, avp, conflict):
+    """Raise error for duplicate or conflicting AVPs.
+    """
+    if avp == conflict:
+        raise ValueError(
+            '{} {} duplicated in'
+            ' file "{}" line {}'.format(
+                avp.description(), description,
+                conflict.filename, conflict.line_num))
+    else:
+        raise ValueError(
+            '{} {} conflicts with {}'
+            ' in file "{}" line {}'.format(
+                avp.description(), description,
+                conflict.description(),
+                conflict.filename, conflict.line_num))
+
+
+def main():
+    """Main application entry.
+    """
+
+    # Build dict of name: NameProcessor
+    processors = {
+        cls.cls_name(): cls
+        for cls in Processor.__subclasses__()
+        }
+
+    # Build Processor name to desc
+    processor_help = '\n'.join(
+        ['  {:8} {}'.format(key, processors[key].cls_desc())
+         for key in sorted(processors)])
+
+    # Custom OptionParser with improved help
+    class MyParser(optparse.OptionParser):
+        """Custom OptionParser without epilog formatting."""
+        def format_help(self, formatter=None):
+            return """\
+{}
+Supported PROCESSOR options:
+{}
+""".format(
+                optparse.OptionParser.format_help(self, formatter),
+                processor_help)
+
+    # Parse options
+    parser = MyParser(
+        usage='%prog [-h] [-p PROCESSOR] FILE ...',
+        description="""\
+Convert CSV files FILE ... containing RADIUS or Diameter AVP tables
+into various formats using the specified processor PROCESSOR.
+""")
+    parser.add_option(
+        '-p', '--processor',
+        default='noop',
+        help='AVP processor. One of: {}. [%default]'.format(
+             ', '.join(processors.keys())))
+    (opts, args) = parser.parse_args()
+    if len(args) < 1:
+        parser.error('Incorrect number of arguments. Use -h for help.')
+
+    # Find processor
+    try:
+        avpproc = processors[opts.processor]()
+    except KeyError as e:
+        parser.error('Unknown processor "{}".'.format(opts.processor))
+
+    # dict of [vendor][code] : Avp
+    avp_codes = collections.defaultdict(dict)
+
+    # dict of [vendor][name] : Avp
+    avp_names = collections.defaultdict(dict)
+
+    # Process files
+    for filename in args:
+        avpproc.filename(filename)
+        with open(filename, 'r') as csvfile:
+            csvdata = csv.DictReader(csvfile, CSV_COLUMN_NAMES,
+                                     restkey='extra_cells', restval='')
+            standard = ''
+            vendor = 0
+            errors = []
+            for row in csvdata:
+                try:
+                    if csvdata.restkey in row:
+                        raise ValueError('Extra cells: {}'.format(
+                            ','.join(row[csvdata.restkey])))
+                    if row['name'] in (None, '', 'Attribute Name'):
+                        continue
+                    elif row['name'].startswith('#'):
+                        comment = row['name'][1:]
+                        avpproc.comment(comment, filename, csvdata.line_num)
+                    elif row['name'].startswith('@'):
+                        parameter = row['name'][1:]
+                        value = row['code']
+                        if False:
+                            pass
+                        elif parameter == 'standard':
+                            standard = value
+                        elif parameter == 'vendor':
+                            vendor = int(value)
+                        else:
+                            raise ValueError('Unknown parameter "{}"'.format(
+                                parameter))
+                        avpproc.parameter(parameter, value)
+                    else:
+                        avp = Avp(filename=filename, line_num=csvdata.line_num,
+                                  standard=standard, vendor=vendor,
+                                  **row)
+                        # Ensure AVP vendor/code not already defined
+                        if avp.code in avp_codes[avp.vendor]:
+                            conflict = avp_codes[avp.vendor][avp.code]
+                            avp_conflict('Code', avp, conflict)
+                        avp_codes[avp.vendor][avp.code] = avp
+                        # Ensure AVP vendor/name not already defined
+                        if avp.name in avp_names[avp.vendor]:
+                            conflict = avp_names[avp.vendor][avp.name]
+                            avp_conflict('Name', avp, conflict)
+                        avp_names[avp.vendor][avp.name] = avp
+                        # Process AVP
+                        avpproc.avp(avp)
+                except (TypeError, ValueError) as e:
+                    errors.append('CSV file "{}" line {}: {}\n'.format(
+                        filename, csvdata.line_num, e))
+            if errors:
+                sys.stderr.write(''.join(errors))
+                sys.exit(1)
+
+    # Generate result
+    avpproc.generate()
+
+
+if __name__ == '__main__':
+    main()
+
+# vim: set et sw=4 sts=4 :
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tools/diameter-rfcs.csv	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,202 @@
+Attribute Name,Code,Section defined,Value Type,MUST,MAY,SHOULD NOT,MUST NOT
+@vendor,0,,,,,,
+@standard,RFC 3588,,,,,,
+#=,,,,,,,
+# RFC 3588 - Diameter #,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Acct-Interim-Interval,85,9.8.2,Unsigned32,M,P,,V
+Accounting-Realtime-Required,483,9.8.7,Enumerated,M,P,,V
+Acct-Multi-Session-Id,50,9.8.5,UTF8String,M,P,,V
+Accounting-Record-Number,485,9.8.3,Unsigned32,M,P,,V
+Accounting-Record-Type,480,9.8.1,Enumerated,M,P,,V
+Accounting-Session-Id,44,9.8.4,OctetString,M,P,,V
+Accounting-Sub-Session-Id,287,9.8.6,Unsigned64,M,P,,V
+Acct-Application-Id,259,6.9,Unsigned32,M,P,,V
+Auth-Application-Id,258,6.8,Unsigned32,M,P,,V
+Auth-Request-Type,274,8.7,Enumerated,M,P,,V
+Authorization-Lifetime,291,8.9,Unsigned32,M,P,,V
+Auth-Grace-Period,276,8.10,Unsigned32,M,P,,V
+Auth-Session-State,277,8.11,Enumerated,M,P,,V
+Re-Auth-Request-Type,285,8.12,Enumerated,M,P,,V
+Class,25,8.20,OctetString,M,P,,V
+Destination-Host,293,6.5,DiameterIdentity,M,P,,V
+Destination-Realm,283,6.6,DiameterIdentity,M,P,,V
+Disconnect-Cause,273,5.4.3,Enumerated,M,P,,V
+E2E-Sequence-AVP,300,6.15,Grouped,M,P,,V
+Error-Message,281,7.3,UTF8String,,P,,"V,M"
+Error-Reporting-Host,294,7.4,DiameterIdentity,,P,,"V,M"
+Event-Timestamp,55,8.21,Time,M,P,,V
+Experimental-Result,297,7.6,Grouped,M,P,,V
+Experimental-Result-Code,298,7.7,Unsigned32,M,P,,V
+Failed-AVP,279,7.5,Grouped,M,P,,V
+Firmware-Revision,267,5.3.4,Unsigned32,,,,"P,V,M"
+Host-IP-Address,257,5.3.5,Address,M,P,,V
+Inband-Security-Id,299,6.10,Unsigned32,M,P,,V
+Multi-Round-Time-Out,272,8.19,Unsigned32,M,P,,V
+Origin-Host,264,6.3,DiameterIdentity,M,P,,V
+Origin-Realm,296,6.4,DiameterIdentity,M,P,,V
+Origin-State-Id,278,8.16,Unsigned32,M,P,,V
+Product-Name,269,5.3.7,UTF8String,,,,"P,V,M"
+Proxy-Host,280,6.7.3,DiameterIdentity,M,,,"P,V"
+Proxy-Info,284,6.7.2,Grouped,M,,,"P,V"
+Proxy-State,33,6.7.4,OctetString,M,,,"P,V"
+Redirect-Host,292,6.12,DiameterURI,M,P,,V
+Redirect-Host-Usage,261,6.13,Enumerated,M,P,,V
+Redirect-Max-Cache-Time,262,6.14,Unsigned32,M,P,,V
+Result-Code,268,7.1,Unsigned32,M,P,,V
+Route-Record,282,6.7.1,DiameterIdentity,M,,,"P,V"
+Session-Id,263,8.8,UTF8String,M,P,,V
+Session-Timeout,27,8.13,Unsigned32,M,P,,V
+Session-Binding,270,8.17,Unsigned32,M,P,,V
+Session-Server-Failover,271,8.18,Enumerated,M,P,,V
+Supported-Vendor-Id,265,5.3.6,Unsigned32,M,P,,V
+Termination-Cause,295,8.15,Enumerated,M,P,,V
+User-Name,1,8.14,UTF8String,M,P,,V
+Vendor-Id,266,5.3.3,Unsigned32,M,P,,V
+Vendor-Specific-Application-Id,260,6.11,Grouped,M,P,,V
+@standard,RFC 4005,,,,,,
+#=,,,,,,,
+# RFC 4005 - NAS #,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+NAS-Port,5,4.2,Unsigned32,M,P,,V
+NAS-Port-Id,87,4.3,UTF8String,M,P,,V
+NAS-Port-Type,61,4.4,Enumerated,M,P,,V
+Called-Station-Id,30,4.5,UTF8String,M,P,,V
+Calling-Station-Id,31,4.6,UTF8String,M,P,,V
+Connect-Info,77,4.7,UTF8String,M,P,,V
+Originating-Line-Info,94,4.8,OctetString,,"M,P",,V
+Reply-Message,18,4.9,UTF8String,M,P,,V
+User-Password,2,5.1,OctetString,M,P,,V
+Password-Retry,75,5.2,Unsigned32,M,P,,V
+Prompt,76,5.3,Enumerated,M,P,,V
+CHAP-Auth,402,5.4,Grouped,M,P,,V
+CHAP-Algorithm,403,5.5,Enumerated,M,P,,V
+CHAP-Ident,404,5.6,OctetString,M,P,,V
+CHAP-Response,405,5.7,OctetString,M,P,,V
+CHAP-Challenge,60,5.8,OctetString,M,P,,V
+ARAP-Password,70,5.9,OctetString,M,P,,V
+ARAP-Challenge-Response,84,5.10,OctetString,M,P,,V
+ARAP-Security,73,5.11,Unsigned32,M,P,,V
+ARAP-Security-Data,74,5.12,OctetString,M,P,,V
+Service-Type,6,6.1,Enumerated,M,P,,V
+Callback-Number,19,6.2,UTF8String,M,P,,V
+Callback-Id,20,6.3,UTF8String,M,P,,V
+Idle-Timeout,28,6.4,Unsigned32,M,P,,V
+Port-Limit,62,6.5,Unsigned32,M,P,,V
+NAS-Filter-Rule,400,6.6,IPFilterRule,M,P,,V
+Filter-Id,11,6.7,UTF8String,M,P,,V
+Configuration-Token,78,6.8,OctetString,M,,,"P,V"
+QoS-Filter-Rule,407,6.9,QoSFilterRule,,,,
+Framed-Protocol,7,6.10.1,Enumerated,M,P,,V
+Framed-Routing,10,6.10.2,Enumerated,M,P,,V
+Framed-MTU,12,6.10.3,Unsigned32,M,P,,V
+Framed-Compression,13,6.10.4,Enumerated,M,P,,V
+Framed-IP-Address,8,6.11.1,OctetString,M,P,,V
+Framed-IP-Netmask,9,6.11.2,OctetString,M,P,,V
+Framed-Route,22,6.11.3,UTF8String,M,P,,V
+Framed-Pool,88,6.11.4,OctetString,M,P,,V
+Framed-Interface-Id,96,6.11.5,Unsigned64,M,P,,V
+Framed-IPv6-Prefix,97,6.11.6,OctetString,M,P,,V
+Framed-IPv6-Route,99,6.11.7,UTF8String,M,P,,V
+Framed-IPv6-Pool,100,6.11.8,OctetString,M,P,,V
+Framed-IPX-Network,23,6.12.1,UTF8String,M,P,,V
+Framed-Appletalk-Link,37,6.13.1,Unsigned32,M,P,,V
+Framed-Appletalk-Network,38,6.13.2,Unsigned32,M,P,,V
+Framed-Appletalk-Zone,39,6.13.3,OctetString,M,P,,V
+ARAP-Features,71,6.14.1,OctetString,M,P,,V
+ARAP-Zone-Access,72,6.14.2,Enumerated,M,P,,V
+Login-IP-Host,14,6.15.1,OctetString,M,P,,V
+Login-IPv6-Host,98,6.15.2,OctetString,M,P,,V
+Login-Service,15,6.15.3,Enumerated,M,P,,V
+Login-TCP-Port,16,6.16.1,Unsigned32,M,P,,V
+Login-LAT-Service,34,6.17.1,OctetString,M,P,,V
+Login-LAT-Node,35,6.17.2,OctetString,M,P,,V
+Login-LAT-Group,36,6.17.3,OctetString,M,P,,V
+Login-LAT-Port,63,6.17.4,OctetString,M,P,,V
+Tunneling,401,7.1,Grouped,M,P,,V
+Tunnel-Type,64,7.2,Enumerated,M,P,,V
+Tunnel-Medium-Type,65,7.3,Enumerated,M,P,,V
+Tunnel-Client-Endpoint,66,7.4,UTF8String,M,P,,V
+Tunnel-Server-Endpoint,67,7.5,UTF8String,M,P,,V
+Tunnel-Password,69,7.6,OctetString,M,P,,V
+Tunnel-Private-Group-Id,81,7.7,OctetString,M,P,,V
+Tunnel-Assignment-Id,82,7.8,OctetString,M,P,,V
+Tunnel-Preference,83,7.9,Unsigned32,M,P,,V
+Tunnel-Client-Auth-Id,90,7.10,UTF8String,M,P,,V
+Tunnel-Server-Auth-Id,91,7.11,UTF8String,M,P,,V
+Accounting-Input-Octets,363,8.1,Unsigned64,M,P,,V
+Accounting-Output-Octets,364,8.2,Unsigned64,M,P,,V
+Accounting-Input-Packets,365,8.3,Unsigned64,M,P,,V
+Accounting-Output-Packets,366,8.4,Unsigned64,M,P,,V
+Acct-Session-Time,46,8.5,Unsigned32,M,P,,V
+Acct-Authentic,45,8.6,Enumerated,M,P,,V
+Acounting-Auth-Method,406,8.7,Enumerated,M,P,,V
+Acct-Delay-Time,41,8.8,Unsigned32,M,P,,V
+Acct-Link-Count,51,8.9,Unsigned32,M,P,,V
+Acct-Tunnel-Connection,68,8.10,OctetString,M,P,,V
+Acct-Tunnel-Packets-Lost,86,8.11,Unsigned32,M,P,,V
+NAS-Identifier,32,9.3.1,UTF8String,M,P,,V
+NAS-IP-Address,4,9.3.2,OctetString,M,P,,V
+NAS-IPv6-Address,95,9.3.3,OctetString,M,P,,V
+State,24,9.3.4,OctetString,M,P,,V
+# Termination-Cause already in RFC 3588,295,9.3.5,Enumerated,M,P,,V
+#,,,,,,,
+Origin-AAA-Protocol,408,9.3.6,Enumerated,M,P,,V
+@standard,RFC 4006,,,,,,
+#=,,,,,,,
+# RFC 4006 - DCCA #,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+CC-Correlation-Id,411,8.1,OctetString,,"P,M",,V
+CC-Input-Octets,412,8.24,Unsigned64,M,P,,V
+CC-Money,413,8.22,Grouped,M,P,,V
+CC-Output-Octets,414,8.25,Unsigned64,M,P,,V
+CC-Request-Number,415,8.2,Unsigned32,M,P,,V
+CC-Request-Type,416,8.3,Enumerated,M,P,,V
+CC-Service-Specific-Units,417,8.26,Unsigned64,M,P,,V
+CC-Session-Failover,418,8.4,Enumerated,M,P,,V
+CC-Sub-Session-Id,419,8.5,Unsigned64,M,P,,V
+CC-Time,420,8.21,Unsigned32,M,P,,V
+CC-Total-Octets,421,8.23,Unsigned64,M,P,,V
+CC-Unit-Type,454,8.32,Enumerated,M,P,,V
+Check-Balance-Result,422,8.6,Enumerated,M,P,,V
+Cost-Information,423,8.7,Grouped,M,P,,V
+Cost-Unit,424,8.12,UTF8String,M,P,,V
+Credit-Control,426,8.13,Enumerated,M,P,,V
+Credit-Control-Failure-Handling,427,8.14,Enumerated,M,P,,V
+Currency-Code,425,8.11,Unsigned32,M,P,,V
+Direct-Debiting-Failure-Handling,428,8.15,Enumerated,M,P,,V
+Exponent,429,8.9,Integer32,M,P,,V
+Final-Unit-Action,449,8.35,Enumerated,M,P,,V
+Final-Unit-Indication,430,8.34,Grouped,M,P,,V
+Granted-Service-Unit,431,8.17,Grouped,M,P,,V
+G-S-U-Pool-Identifier,453,8.31,Unsigned32,M,P,,V
+G-S-U-Pool-Reference,457,8.30,Grouped,M,P,,V
+Multiple-Services-Credit-Control,456,8.16,Grouped,M,P,,V
+Multiple-Services-Indicator,455,8.40,Enumerated,M,P,,V
+Rating-Group,432,8.29,Unsigned32,M,P,,V
+Redirect-Address-Type,433,8.38,Enumerated,M,P,,V
+Redirect-Server,434,8.37,Grouped,M,P,,V
+Redirect-Server-Address,435,8.39,UTF8String,M,P,,V
+Requested-Action,436,8.41,Enumerated,M,P,,V
+Requested-Service-Unit,437,8.18,Grouped,M,P,,V
+Restriction-Filter-Rule,438,8.36,IPFilterRule,M,P,,V
+Service-Context-Id,461,8.42,UTF8String,M,P,,V
+Service-Identifier,439,8.28,Unsigned32,M,P,,V
+Service-Parameter-Info,440,8.43,Grouped,,"P,M",,V
+Service-Parameter-Type,441,8.44,Unsigned32,,"P,M",,V
+Service-Parameter-Value,442,8.45,OctetString,,"P,M",,V
+Subscription-Id,443,8.46,Grouped,M,P,,V
+Subscription-Id-Data,444,8.48,UTF8String,M,P,,V
+Subscription-Id-Type,450,8.47,Enumerated,M,P,,V
+Tariff-Change-Usage,452,8.27,Enumerated,M,P,,V
+Tariff-Time-Change,451,8.20,Time,M,P,,V
+Unit-Value,445,8.8,Grouped,M,P,,V
+Used-Service-Unit,446,8.19,Grouped,M,P,,V
+User-Equipment-Info,458,8.49,Grouped,,"P,M",,V
+User-Equipment-Info-Type,459,8.50,Enumerated,,"P,M",,V
+User-Equipment-Info-Value,460,8.51,OctetString,,"P,M",,V
+Value-Digits,447,8.10,Integer64,M,P,,V
+Validity-Time,448,8.33,Unsigned32,M,P,,V
--- a/contrib/tools/diameter-rfcs.org	Tue Jul 07 01:24:48 2020 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-| 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    |
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tools/grep_fd_dict_dump	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Grep stdin for the output of fd_dict_dump() and reformat to remove
+# pointer addresses.  Use to post-process the output of dict_dump.fdx
+# into a format that's diff-able between freeDiameter invocations.
+
+egrep '^ *{dict|VENDOR|APPLICATION|TYPE|ENUMVAL|AVP|COMMAND|RULE' \
+	| sed \
+	-e 's/{dict.*}(@0x[^ ]*): //' \
+	-e 's/{dict(0x[^ ]*) : \(.*\)}/\1/' \
+	-e 's/p:[^ ]* //'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tools/org_to_csv	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+"""
+Convert |-separated 11-column .org files to CSV,
+with first and last empty columns ignored.
+"""
+
+import csv
+import fileinput
+import re
+import sys
+
+csvout = csv.writer(sys.stdout)
+for line in fileinput.input():
+    row = re.split(r'\s*\|\s*', line)
+    row.extend([''] * (10 - len(row)))
+    csvout.writerow(row[1:10])
+
+# vim: set et sw=4 sts=4 :
--- a/contrib/tools/org_to_fd.pl	Tue Jul 07 01:24:48 2020 +0800
+++ b/contrib/tools/org_to_fd.pl	Tue Jul 07 01:41:54 2020 +0800
@@ -1,12 +1,15 @@
 #!/usr/bin/env perl
 use strict;
+use File::Basename;
 use Getopt::Std;
 
+my ($progname) = basename($0);
+
 our ($opt_V, $opt_v);
 
-# default to 3GPP
-my ($vendor) = 10415;
-my ($vendor_name) = "3GPP";
+# default to Base
+my ($vendor) = 0;
+my ($vendor_name) = "";
 
 sub convert_must_to_flags($) {
     my ($allmust) = @_;
@@ -21,7 +24,7 @@
     my ($type) = @_;
 
     return "AVP_TYPE_GROUPED" if ($type =~ m/Grouped/);
-    return "AVP_TYPE_OCTETSTRING" if ($type =~ m/(Address|DiameterIdentity|DiameterURI|OctetString|IPFilterRule|Time|UTF8String)/);
+    return "AVP_TYPE_OCTETSTRING" if ($type =~ m/(Address|DiameterIdentity|DiameterURI|OctetString|IPFilterRule|Time|UTF8String|QoSFilterRule)/);
     return "AVP_TYPE_INTEGER32" if ($type =~ m/Enumerated|Integer32/);
     return "AVP_TYPE_INTEGER64" if ($type =~ m/Integer64/);
     return "AVP_TYPE_UNSIGNED32" if ($type =~ m/Unsigned32/);
@@ -29,7 +32,19 @@
     return "AVP_TYPE_FLOAT32" if ($type =~ m/Float32/);
     return "AVP_TYPE_FLOAT64" if ($type =~ m/Float64/);
 
-    return "UNKNOWN TYPE: $type";
+    die("unknown type '$type'");
+}
+
+
+my ($comment_width) = 64;
+
+sub print_header() {
+    printf "\t/*=%s=*/\n", '=' x $comment_width;
+}
+
+sub print_comment($) {
+    my ($str) = @_;
+    printf "\t/* %-*s */\n", $comment_width, $str;
 }
 
 sub print_insert($$) {
@@ -39,8 +54,8 @@
     if ($type =~ m/(Grouped|OctetString|Integer32|Integer64|Unsigned32|Unsigned64|Float32|Float64)/) {
         $avp_type = "NULL";
     } elsif ($type =~ m/Enumerated/) {
-        print "\t\tstruct dict_object		*type;\n";
-        print "\t\tstruct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, \"Enumerated(" . ($vendor_name ? "$vendor_name/" : "") ."$name)\", NULL, NULL, NULL };\n";
+        print "\t\tstruct dict_object\t*type;\n";
+        print "\t\tstruct dict_type_data\t tdata = { AVP_TYPE_INTEGER32, \"Enumerated(" . ($vendor_name ? "$vendor_name/" : "") ."$name)\", NULL, NULL, NULL };\n";
         # XXX: add enumerated values
         print "\t\tCHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);\n";
         $avp_type = "type";
@@ -52,8 +67,8 @@
 }
 
 sub usage($) {
-    die("usage: org_to_fd.pl [-V vendor_name -v vendor_code] [file ...]\n");
-    exit(@_);
+    print STDERR "usage: $progname [-V vendor_name] [-v vendor_code] [file ...]\n";
+    exit(1);
 }
 
 getopts("V:v:") || usage(1);
@@ -61,29 +76,45 @@
 if (defined($opt_v)) {
     $vendor = $opt_v;
     if (!defined($opt_V)) {
-	usage(1);
+        usage(1);
     }
     $vendor_name = $opt_V;
 }
 
-print "\t/* The following is created automatically. Do not modify. */\n";
-print "\t/* Changes will be lost during the next update. Modify the source org file instead. */\n\n";
+print_header();
+print_comment("Start of generated data.");
+print_comment("");
+print_comment("The following is created automatically with:");
+print_comment("    org_to_fd.pl -V '$vendor_name' -v $vendor");
+print_comment("Changes will be lost during the next update.");
+print_comment("Do not modify; modify the source .org file instead.");
+print_header();
+print "\n";
 
 while (<>) {
-    my ($dummy, $name, $code, $section, $type, $must, $may, $shouldnot, $mustnot, $encr) = split /\|/;
+    my ($dummy, $name, $code, $section, $type, $must, $may, $shouldnot, $mustnot, $encr) = split /\s*\|\s*/;
 
     next if ($name =~ m/Attribute Name/);
-    if ($name =~ m/ # (.*)/) {
-        print "\t/* $1 */\n";
+    if ($name =~ m/# (.*)/) {
+        print_comment($1);
+        next;
+    }
+    if ($name =~ m/#/) {
+        print("\n");
         next;
     }
-        
+
+    if ($name =~ m/\s/) {
+        die("name '$name' contains space");
+    }
 
-    $name =~ s/ *//g;
-    $code =~ s/ *//g;
-    $type =~ s/ *//g;
-
-    print "\t/* $name */\n\t{\n\t\tstruct dict_avp_data data = {\n";
+    my ($desc) = $name;
+    $desc .= ", " . $type;
+    $desc .= ", code " . $code;
+    $desc .= ", section " . $section if $section ne "";
+    print_comment($desc);
+    print "\t{\n";
+    print "\t\tstruct dict_avp_data data = {\n";
     print "\t\t\t$code,\t/* Code */\n";
     print "\t\t\t$vendor,\t/* Vendor */\n";
     print "\t\t\t\"$name\",\t/* Name */\n";
@@ -94,3 +125,7 @@
     print_insert($type, $name);
     print "\t};\n\n";
 }
+
+print_header();
+print_comment("End of generated data.");
+print_header();
--- a/extensions/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -10,6 +10,8 @@
   ADD_LIBRARY(${EXTNAME} MODULE ${ARGN})
   SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES PREFIX "" )
   SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES SUFFIX ".fdx" )
+  SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES C_VISIBILITY_PRESET hidden )
+  SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES CXX_VISIBILITY_PRESET hidden )
 ENDMACRO(FD_ADD_EXTENSION)
 
 # Use the macro FD_EXTENSION_SUBDIR(extmacroname subdir descr default) to
@@ -88,6 +90,8 @@
 ####
 # Debug & test extensions
 
+FD_EXTENSION_SUBDIR(dbg_dict_dump   "Log dictionary dump"                            ON)
+FD_EXTENSION_SUBDIR(dbg_dict_dump_json   "Dump dictionary as JSON"                            OFF)
 FD_EXTENSION_SUBDIR(dbg_loglevel "Read loglevel from file -- allows runtime change"  ON)
 FD_EXTENSION_SUBDIR(dbg_monitor     "Outputs periodical status information"              ON)
 FD_EXTENSION_SUBDIR(dbg_msg_timings "Show some timing information for messages"      ON)
--- a/extensions/acl_wl/aw_tree.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/acl_wl/aw_tree.c	Tue Jul 07 01:41:54 2020 +0800
@@ -339,7 +339,7 @@
 {
 	struct split_name sn;
 	int lbl, found;
-	struct tree_item * ti;
+	struct tree_item * ti = NULL;
 	struct fd_list * senti, *li;
 	
 	TRACE_ENTRY("%p %p", name, result);
--- a/extensions/app_diameap/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_diameap/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -1,11 +1,26 @@
 # The Diameter EAP Application extension
 PROJECT("Diameter EAP Application extension" C)
 
+INCLUDE (CheckCSourceCompiles)
+
 # Find MySQL 
 FIND_PACKAGE(MySQL REQUIRED)
 FIND_PACKAGE(Gcrypt REQUIRED)
 INCLUDE_DIRECTORIES(${MySQL_INCLUDE_DIR})
 
+# Check for my_bool, deprecated in MySQL 8.0
+SET(CHECK_MYSQL_MY_BOOL "
+#include <mysql.h>
+int main() {
+my_bool f;
+}")
+SET(CMAKE_REQUIRED_INCLUDES ${MySQL_INCLUDE_DIR})
+SET(CMAKE_REQUIRED_LIBRARIES ${MySQL_LIBRARY})
+CHECK_C_SOURCE_COMPILES("${CHECK_MYSQL_MY_BOOL}" HAVE_MYSQL_MY_BOOL)
+IF (HAVE_MYSQL_MY_BOOL)
+  ADD_DEFINITIONS(-DHAVE_MYSQL_MY_BOOL)
+ENDIF()
+
 # Parse plugins
 ADD_SUBDIRECTORY(plugins)
 
--- a/extensions/app_diameap/diameap_eap.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_diameap/diameap_eap.c	Tue Jul 07 01:41:54 2020 +0800
@@ -59,7 +59,7 @@
 		struct eap_packet *eapPacket)
 {
 	TRACE_ENTRY("%p %p",eap_sm, eapPacket);
-	if ((eap_sm->respMethod == TYPE_NAK))
+	if (eap_sm->respMethod == TYPE_NAK)
 	{
 		int id;
 		eap_sm->user.pmethods = 0;
@@ -100,7 +100,7 @@
 
 	if (eap_sm->user.userid == NULL)
 	{
-		if ((eap_sm->currentMethod == TYPE_NONE))
+		if (eap_sm->currentMethod == TYPE_NONE)
 		{
 			*vendor = VENDOR_IETF;
 			*eaptype = TYPE_IDENTITY;
--- a/extensions/app_diameap/diameap_init.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_diameap/diameap_init.c	Tue Jul 07 01:41:54 2020 +0800
@@ -38,6 +38,11 @@
 
 #include "diameap_common.h"
 
+#ifndef HAVE_MYSQL_MY_BOOL
+#include <stdbool.h>
+typedef bool my_bool;
+#endif /* HAVE_MYSQL_MY_BOOL */
+
 /* Dictionary Object templates */
 struct dict_object * dataobj_diameap_cmd = NULL; /* Diameter-EAP-Request Command Code */
 struct dict_object * dataobj_diameap_app = NULL; /* Diameter EAP Application object */
--- a/extensions/app_diameap/diameap_server.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_diameap/diameap_server.c	Tue Jul 07 01:41:54 2020 +0800
@@ -1674,6 +1674,7 @@
 		break;
 	default:
 		TRACE_DEBUG(INFO, "%sUnknown AVP Base Type.",DIAMEAP_EXTENSION)
+		memset(&val, 0, sizeof(val));
 		;
 	}
 	return val;
@@ -1959,22 +1960,16 @@
 	switch (*toadd)
 	{
 	case 1:
-		attribute_op = malloc(strlen(op));
-		memset(attribute_op, 0, strlen(op));
-		strncpy(attribute_op, op + 1, strlen(op) - 1);
-		attribute_op[strlen(op)] = '\0';
+		attribute_op = calloc(strlen(op), sizeof(char *));
+		memcpy(attribute_op, op + 1, strlen(op) - 1);
 		break;
 	case 2:
-		attribute_op = malloc(strlen(op));
-		memset(attribute_op, 0, strlen(op));
-		strncpy(attribute_op, op, strlen(op) - 1);
-		attribute_op[strlen(op)] = '\0';
+		attribute_op = calloc(strlen(op), sizeof(char *));
+		memcpy(attribute_op, op, strlen(op) - 1);
 		break;
 	default:
-		attribute_op = malloc(strlen(op) + 1);
-		memset(attribute_op, 0, strlen(op) + 1);
-		strcpy(attribute_op, op);
-		attribute_op[strlen(op) + 1] = '\0';
+		attribute_op = calloc(strlen(op) + 1, sizeof(char *));
+		memcpy(attribute_op, op, strlen(op));
 	}
 	if (strcmp(attribute_op, "=") == 0)
 	{
@@ -3064,7 +3059,7 @@
 	struct sess_state * diameap_sess_data = NULL;
 	struct diameap_state_machine * diameap_sm = NULL;
 	struct diameap_eap_interface eap_i;
-	struct msg *req, *ans;
+	struct msg *req, *ans = NULL;
 	boolean non_fatal_error = FALSE;
 
 	if (rmsg == NULL)
--- a/extensions/app_radgw/md5.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_radgw/md5.c	Tue Jul 07 01:41:54 2020 +0800
@@ -286,8 +286,7 @@
     byteReverse(ctx->in, 14);
 
     /* Append length in bits and transform */
-    ((u32 *) ctx->in)[14] = ctx->bits[0];
-    ((u32 *) ctx->in)[15] = ctx->bits[1];
+    os_memcpy(&ctx->in[56], &ctx->bits[0], 8);
 
     MD5Transform(ctx->buf, (u32 *) ctx->in);
     byteReverse((unsigned char *) ctx->buf, 4);
--- a/extensions/app_radgw/rgw_clients.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_radgw/rgw_clients.c	Tue Jul 07 01:41:54 2020 +0800
@@ -548,7 +548,7 @@
 	int idx;
 	int valid_nas_info = 0;
 	struct radius_attr_hdr *nas_ip = NULL, *nas_ip6 = NULL, *nas_id = NULL;
-	size_t nas_id_len;
+	size_t nas_id_len = 0;
 	char * oh_str = NULL; size_t oh_strlen = 0; int oh_free = 0;
 	char * or_str = NULL; size_t or_strlen = 0;
 	char * rr_str = NULL; size_t rr_strlen = 0;
@@ -710,7 +710,7 @@
 	ASSERT(nas_id);
 	
 	{
-		int found, ret;
+		int found = 0, ret;
 		struct addrinfo hint, *res, *ptr;
 		
 		/*
@@ -763,7 +763,7 @@
 		hint.ai_flags  = AI_CANONNAME;
 		ret = getaddrinfo(buf, NULL, &hint, &res);
 		if (ret == 0) {
-			strncpy(buf, res->ai_canonname, sizeof(buf));
+			snprintf(buf, sizeof(buf), "%s", res->ai_canonname);
 			/* The name was resolved correctly, does it match the IP of the client? */
 			for (ptr = res; ptr != NULL; ptr = ptr->ai_next) {
 				if (cli->sa->sa_family != ptr->ai_family)
--- a/extensions/app_sip/TODO	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/TODO	Tue Jul 07 01:41:54 2020 +0800
@@ -49,6 +49,10 @@
 * add mutex on mysql writing
 * check multithreading of mysql!
 * get destination host in database for RTR and PPR
+* libapp_sip.c: fix username_pure memory leaks
+* app_sip_MAR_cb:
+  - too much mysql_real_escape_string() use, both within the function and functions it calls
+  - on error, leaks allocated: sipuri, username, query.
 
 
 
--- a/extensions/app_sip/app_sip.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/app_sip.h	Tue Jul 07 01:41:54 2020 +0800
@@ -110,8 +110,6 @@
 void DigestCalcResponse(HASHHEX HA1,char * pszNonce,char * pszNonceCount,char * pszCNonce,char * pszQop,char * pszMethod,char * pszDigestUri,HASHHEX HEntity,HASHHEX Response);
 void DigestCalcResponseAuth(HASHHEX HA1,char * pszNonce,char * pszNonceCount,char * pszCNonce,char * pszQop,char * pszMethod,char * pszDigestUri,HASHHEX HEntity,HASHHEX Response);
 
-int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp );
-
 //thread procedure
 void *rtr_socket(void *);
 void *ppr_socket(void *);
--- a/extensions/app_sip/libapp_sip.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/libapp_sip.c	Tue Jul 07 01:41:54 2020 +0800
@@ -66,54 +66,6 @@
 	return;
 }
 
-
-/* Search a given AVP model in an AVP (extracted from libfreediameter/message.c ) */
-int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp )
-{
-	struct avp * nextavp;
-	struct avp_hdr * nextavphdr;
-	struct dict_avp_data 	dictdata;
-	
-	
-	TRACE_ENTRY("%p %p %p", groupedavp, what, avp);
-	
-	CHECK_FCT(  fd_dict_getval(what, &dictdata)  );
-	
-	// Loop only in the group AVP 
-	CHECK_FCT(  fd_msg_browse(groupedavp, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL)  );
-	CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr )  );
-	
-	while (nextavphdr) {
-		
-		if ( (nextavphdr->avp_code   == dictdata.avp_code) && (nextavphdr->avp_vendor == dictdata.avp_vendor) ) // always 0 if no Vendor flag
-		{
-			break;
-		}
-		
-		// Otherwise move to next AVP in the grouped AVP 
-		CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) );
-		
-		if(nextavp!=NULL)
-		{
-			CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr )  );
-		}
-		else
-			nextavphdr=NULL;
-	}
-	if (avp)
-		*avp = nextavp;
-	
-	if (avp && nextavp) {
-		struct dictionary * dict;
-		CHECK_FCT( fd_dict_getdict( what, &dict) );
-		CHECK_FCT_DO( fd_msg_parse_dict( nextavp, dict, NULL ),  );
-	}
-	
-	if (avp || nextavp)
-		return 0;
-	else
-		return ENOENT;
-}
 struct avp_hdr *walk_digest(struct avp *avp, int avp_code)
 {
 	struct avp_hdr *temphdr=NULL;
--- a/extensions/app_sip/md5.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/md5.c	Tue Jul 07 01:41:54 2020 +0800
@@ -309,8 +309,7 @@
     byteReverse(ctx->in, 14);
 
     /* Append length in bits and transform */
-    ((u32 *) ctx->in)[14] = ctx->bits[0];
-    ((u32 *) ctx->in)[15] = ctx->bits[1];
+    os_memcpy(&ctx->in[56], &ctx->bits[0], 8);
 
     MD5Transform(ctx->buf, (u32 *) ctx->in);
     byteReverse((unsigned char *) ctx->buf, 4);
--- a/extensions/app_sip/multimediaauth.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/multimediaauth.c	Tue Jul 07 01:41:54 2020 +0800
@@ -50,7 +50,7 @@
 	union avp_value val;
 	int found_cnonce=0;
 	struct avp * tempavp=NULL,*sipAuthentication=NULL,*sipAuthenticate=NULL;
-	char * result;
+	char * result = NULL;
 	char password[51];
 	int idx=0, number_of_auth_items=0,i=0, ret=0;
 	//Flags and variables for Database
@@ -148,7 +148,7 @@
 				
 				if(not_found)
 				{
-					TRACE_DEBUG(FULL,"The user %s doesn't exist!",username);
+					TRACE_DEBUG(FULL,"The user %s doesn't exist!", avphdr->avp_value->os.data);
 					result="DIAMETER_ERROR_USER_UNKNOWN";
 					free(username);	
 					goto out;
@@ -320,7 +320,7 @@
 							//CHECK_FCT(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL) );
 							
 							
-							CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
+							CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
 							
 							if(a2!=NULL)
 								found_cnonce=1;
@@ -457,7 +457,7 @@
 									char * digest_username=NULL, *digest_uri=NULL, *digest_response=NULL, *digest_realm=NULL, *digest_nonce=NULL, *digest_method=NULL, *digest_qop=NULL, *digest_algorithm=NULL, *digest_cnonce=NULL, *digest_noncecount=NULL;
 									
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -486,7 +486,7 @@
 										}
 											
 									}
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Response, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Response, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -500,7 +500,7 @@
 										}
 										
 									}
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Realm, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Realm, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -514,7 +514,7 @@
 										}
 									}
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Method, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Method, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -530,7 +530,7 @@
 									else
 										digest_method="";
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_URI, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_URI, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -544,7 +544,7 @@
 										}
 									}
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_QOP, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_QOP, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -559,7 +559,7 @@
 									}
 									else
 										digest_qop=NULL;
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Algorithm, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Algorithm, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -574,7 +574,7 @@
 									}
 									else
 										digest_algorithm=NULL;
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -589,7 +589,7 @@
 									}
 									else
 										digest_cnonce="";
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -604,7 +604,7 @@
 									}
 									else
 										digest_noncecount="";
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Username, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Username, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
--- a/extensions/app_sip/registrationtermination.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/app_sip/registrationtermination.c	Tue Jul 07 01:41:54 2020 +0800
@@ -114,7 +114,7 @@
 		}
 	}
 	
-	if(structure->strreason!='\0')
+	if(structure->strreason[0]!='\0')
 		got_streason=1;
 	
 	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dbg_dict_dump/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,12 @@
+# Dictionary dump extension
+PROJECT("Dictionary dump extension" C)
+FD_ADD_EXTENSION(dbg_dict_dump dbg_dict_dump.c)
+
+
+####
+## INSTALL section ##
+
+INSTALL(TARGETS dbg_dict_dump
+	LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
+	COMPONENT freeDiameter-debug-tools)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dbg_dict_dump/dbg_dict_dump.c	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,87 @@
+/*********************************************************************************************************
+* Software License Agreement (BSD License)                                                               *
+* Author: Luke Mewburn <luke@mewburn.net>								 *
+*													 *
+* Copyright (c) 2020, WIDE Project and NICT								 *
+* All rights reserved.											 *
+* 													 *
+* Redistribution and use of this software in source and binary forms, with or without modification, are  *
+* permitted provided that the following conditions are met:						 *
+* 													 *
+* * Redistributions of source code must retain the above 						 *
+*   copyright notice, this list of conditions and the 							 *
+*   following disclaimer.										 *
+*    													 *
+* * Redistributions in binary form must reproduce the above 						 *
+*   copyright notice, this list of conditions and the 							 *
+*   following disclaimer in the documentation and/or other						 *
+*   materials provided with the distribution.								 *
+* 													 *
+* * Neither the name of the WIDE Project or NICT nor the 						 *
+*   names of its contributors may be used to endorse or 						 *
+*   promote products derived from this software without 						 *
+*   specific prior written permission of WIDE Project and 						 *
+*   NICT.												 *
+* 													 *
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
+* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 	 *
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 	 *
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
+* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF   *
+* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.								 *
+*********************************************************************************************************/
+
+/*
+ * Dump Diameter dictionary (using fd_dict_dump()) to a file or the log.
+ *
+ * If conffile is provided, write the dump to that file,
+ * otherwise write to log.
+ */
+
+#include <freeDiameter/extension.h>
+
+static int dbg_dict_dump_entry(char * conffile)
+{
+	TRACE_ENTRY("%p", conffile);
+
+	FILE * out = NULL;
+	if (conffile) {
+		LOG_N("Dictionary dump to file '%s'", conffile);
+		out = fopen(conffile, "w");
+		if (NULL == out) {
+			LOG_E("Cannot open output file '%s' for writing", conffile);
+			return EINVAL;
+		}
+	} else {
+		LOG_N("Dictionary dump to log");
+	}
+
+	char * tbuf = NULL; size_t tbuflen = 0;
+	if (NULL == fd_dict_dump(&tbuf, &tbuflen, NULL, fd_g_config->cnf_dict)) {
+		LOG_E("Cannot dump dictionary");
+	} else if (out) {
+		fprintf(out, "%s\n", tbuf);
+	} else {
+		LOG_N("%s", fd_dict_dump(&tbuf, &tbuflen, NULL, fd_g_config->cnf_dict));
+	}
+	free(tbuf);
+	if (out) {
+		fclose(out);
+		out = NULL;
+	}
+
+	LOG_N("Dictionary dump completed");
+	return 0;
+}
+
+void fd_ext_fini(void)
+{
+	TRACE_ENTRY();
+
+	/* Nothing to do */
+	return;
+}
+
+EXTENSION_ENTRY("dbg_dict_dump", dbg_dict_dump_entry);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dbg_dict_dump_json/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,21 @@
+PROJECT("Dictionary dump to JSON extension" C)
+FD_ADD_EXTENSION(dbg_dict_dump_json dbg_dict_dump_json.cc)
+
+# sneakily uses dictionary-internal.h
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../libfdproto)
+
+INCLUDE(FindPkgConfig)
+
+# Uses JSONCPP to write JSON files
+PKG_CHECK_MODULES(JSONCPP REQUIRED jsoncpp)
+INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIRS})
+LINK_DIRECTORIES(${JSONCPP_LIBDIR})
+TARGET_LINK_LIBRARIES(dbg_dict_dump_json ${JSONCPP_LIBRARIES})
+
+####
+## INSTALL section ##
+
+INSTALL(TARGETS dbg_dict_dump_json
+	LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
+	COMPONENT freeDiameter-debug-tools)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dbg_dict_dump_json/dbg_dict_dump_json.cc	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,441 @@
+/**********************************************************************************************************
+ * Software License Agreement (BSD License)                                                               *
+ * Author: Thomas Klausner <tk@giga.or.at>                                                                *
+ *                                                                                                        *
+ * Copyright (c) 2020 Thomas Klausner                                                                     *
+ * All rights reserved.                                                                                   *
+ *                                                                                                        *
+ * Written under contract by nfotex IT GmbH, http://nfotex.com/                                           *
+ *                                                                                                        *
+ * Redistribution and use of this software in source and binary forms, with or without modification, are  *
+ * permitted provided that the following conditions are met:                                              *
+ *                                                                                                        *
+ * * Redistributions of source code must retain the above                                                 *
+ *   copyright notice, this list of conditions and the                                                    *
+ *   following disclaimer.                                                                                *
+ *                                                                                                        *
+ * * Redistributions in binary form must reproduce the above                                              *
+ *   copyright notice, this list of conditions and the                                                    *
+ *   following disclaimer in the documentation and/or other                                               *
+ *   materials provided with the distribution.                                                            *
+ *                                                                                                        *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT     *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS    *
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF   *
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                                             *
+ **********************************************************************************************************/
+
+
+/*
+ * Dump Diameter dictionary to JSON file.
+ */
+
+#include <freeDiameter/extension.h>
+#include "dictionary-internal.h"
+#include <json/json.h>
+#include <sys/stat.h>
+
+#include <iomanip>
+#include <sstream>
+
+
+void
+dump_vendor(dict_object *self, struct dict_vendor_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        Json::Value vendor;
+
+        vendor["Code"] = Json::Value(data->vendor_id);
+        vendor["Name"] = Json::Value(data->vendor_name);
+        main["Vendors"].append(vendor);
+}
+
+void
+dump_application(dict_object *self, struct dict_application_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        Json::Value application;
+
+        application["Code"] = Json::Value(data->application_id);
+        application["Name"] = Json::Value(data->application_name);
+        main["Applications"].append(application);
+}
+
+void
+dump_enumval(dict_object *self, struct dict_enumval_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        enum dict_avp_basetype type;
+        struct dict_type_data type_data;
+        Json::Value enumval;
+        bool is_printable;
+
+        type = parent->data.type.type_base;
+
+        /* Standard only allows Integer32 Enumerated values, but freeDiameter is more permissive */
+        switch (type) {
+        case AVP_TYPE_OCTETSTRING:
+                is_printable = true;
+                for (size_t i = 0; i < data->enum_value.os.len; i++) {
+                        if (isprint(data->enum_value.os.data[i]) == 0) {
+                                is_printable = false;
+                                break;
+                        }
+                }
+                if (is_printable) {
+                        std::string output((const char*)data->enum_value.os.data, (size_t)data->enum_value.os.len);
+                        enumval["Code"] = Json::Value(output);
+                } else {
+                        std::stringstream quoted_string;
+                        quoted_string << "<";
+                        for (size_t i = 0; i < data->enum_value.os.len; i++) {
+                                quoted_string << std::hex << std::setfill('0') << std::setw(2) << (int)data->enum_value.os.data[i];
+                        }
+                        quoted_string << ">";
+                        enumval["Code"] = Json::Value(quoted_string.str());
+                }
+                break;
+
+        case AVP_TYPE_INTEGER32:
+                enumval["Code"] = Json::Value(data->enum_value.i32);
+                break;
+
+        case AVP_TYPE_INTEGER64:
+                enumval["Code"] = Json::Value(static_cast<Json::Int64>(data->enum_value.i64));
+                break;
+
+        case AVP_TYPE_UNSIGNED32:
+                enumval["Code"] = Json::Value(data->enum_value.u32);
+                break;
+
+        case AVP_TYPE_UNSIGNED64:
+                enumval["Code"] = Json::Value(static_cast<Json::UInt64>(data->enum_value.u64));
+                break;
+
+        case AVP_TYPE_FLOAT32:
+                enumval["Code"] = Json::Value(data->enum_value.f32);
+                break;
+
+        case AVP_TYPE_FLOAT64:
+                enumval["Code"] = Json::Value(data->enum_value.f64);
+                break;
+
+        default:
+                printf("??? (ERROR unknown type %d)", type);
+                break;
+        }
+        if (fd_dict_getval(parent, &type_data) != 0) {
+                /* TODO: fd_dict_getval error */
+                return;
+        }
+        if (!main.isMember("Types") || !main["Types"].isMember(type_data.type_name)) {
+                /* TODO: missing type error */
+                return;
+        }
+
+        enumval["Name"] = Json::Value(data->enum_name);
+        main["Types"][type_data.type_name]["EnumValues"].append(enumval);
+}
+
+void
+dump_type(dict_object *self, struct dict_type_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        Json::Value type;
+
+        type["Name"] = Json::Value(data->type_name);
+        type["Base"] = Json::Value(type_base_name[data->type_base]);
+        main["Types"][data->type_name] = type;
+}
+
+#define AVPFL_str "%s%s"
+#define AVPFL_val(_val) (_val & AVP_FLAG_VENDOR)?"V":"" , (_val & AVP_FLAG_MANDATORY)?"M":""
+
+void
+dump_avp(dict_object *self, struct dict_avp_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        struct dict_object *type = NULL;
+        struct dict_type_data type_data;
+        Json::Value avp;
+        char flags[10];
+
+        if (fd_dict_search(fd_g_config->cnf_dict, DICT_TYPE, TYPE_OF_AVP, self, &type, 0) != 0) {
+                /* TODO: fd_dict_search error */
+                return;
+	}
+
+        if ((type == NULL) || (fd_dict_getval(type, &type_data) != 0)) {
+                avp["Type"] = Json::Value(type_base_name[data->avp_basetype]);
+        } else {
+                if (strstr(type_data.type_name, "Enumerated") != 0) {
+                        if (data->avp_basetype == AVP_TYPE_INTEGER32) {
+                                avp["Type"] = "Enumerated";
+                        } else {
+                                /* freeDiameter allows enumerated types not based on integer32;
+                                 * write those out with their basic type for dict_json */
+                                avp["Type"] = Json::Value(type_base_name[data->avp_basetype]);
+                        }
+                } else {
+                        avp["Type"] = Json::Value(type_data.type_name);
+                }
+                if (main["Types"].isMember(type_data.type_name) && main["Types"][type_data.type_name].isMember("EnumValues")) {
+                        avp["EnumValues"] = main["Types"][type_data.type_name]["EnumValues"];
+                }
+        }
+
+        avp["Code"] = Json::Value(data->avp_code);
+        if (data->avp_vendor != 0) {
+                avp["Vendor"] = Json::Value(data->avp_vendor);
+        }
+        avp["Name"] = Json::Value(data->avp_name);
+        snprintf(flags, sizeof(flags), AVPFL_str, AVPFL_val(data->avp_flag_val));
+        avp["Flags"]["Must"] = Json::Value(flags);
+        snprintf(flags, sizeof(flags), AVPFL_str, AVPFL_val(data->avp_flag_mask & ~data->avp_flag_val));
+        avp["Flags"]["MustNot"] = Json::Value(flags);
+
+        main["AVPs"].append(avp);
+}
+
+#define CMDFL_str "%s%s%s%s"
+#define CMDFL_val(_val) (_val & CMD_FLAG_REQUEST)?"R":"" , (_val & CMD_FLAG_PROXIABLE)?"P":"" , (_val & CMD_FLAG_ERROR)?"E":"" , (_val & CMD_FLAG_RETRANSMIT)?"T":""
+
+void
+dump_command(dict_object *self, struct dict_cmd_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        Json::Value command;
+        char flags[10];
+
+        command["Code"] = Json::Value(data->cmd_code);
+        command["Name"] = Json::Value(data->cmd_name);
+        snprintf(flags, sizeof(flags), CMDFL_str, CMDFL_val(data->cmd_flag_val));
+        command["Flags"]["Must"] = Json::Value(flags);
+        snprintf(flags, sizeof(flags), CMDFL_str, CMDFL_val(data->cmd_flag_mask & ~data->cmd_flag_val));
+        command["Flags"]["MustNot"] = Json::Value(flags);
+        main["Commands"].append(command);
+}
+
+bool dump_object(dict_object *self, int depth, Json::Value &main);
+
+void
+dump_rule(dict_object *self, struct dict_rule_data *data, struct dict_object *parent, int depth, Json::Value &main)
+{
+        Json::Value avp_rule;
+        struct dict_avp_data avp_data;
+        const char *slot, *entry, *parent_avp_name;
+        vendor_id_t parent_avp_vendor;
+        unsigned int i;
+        bool found = false;
+        enum dict_object_type parent_type;
+
+        if (fd_dict_getval(data->rule_avp, &avp_data) != 0) {
+                /* TODO: fd_dict_getval error */
+                return;
+        }
+
+        if (avp_data.avp_vendor != 0) {
+                avp_rule["Vendor"] = Json::Value(avp_data.avp_vendor);
+        }
+        avp_rule["AVP"] = Json::Value(avp_data.avp_name);
+        /* TODO is this correct? what does rule_order specify? */
+        if (data->rule_position == RULE_FIXED_HEAD) {
+                avp_rule["First"] = Json::Value(true);
+        }
+        /* TODO: insert "unbounded" for -1? */
+        if (data->rule_min != -1) {
+                avp_rule["Min"] = Json::Value(data->rule_min);
+        }
+        if (data->rule_max != -1) {
+                avp_rule["Max"] = Json::Value(data->rule_max);
+        }
+
+        int ret = fd_dict_gettype(parent, &parent_type);
+        if (ret != 0) {
+                /* TODO: fd_dict_gettype error */
+                return;
+        }
+
+        if (parent_type == DICT_AVP) {
+                struct dict_avp_data parent_data;
+
+                slot = "AVPRules";
+                entry = "AVP";
+                if (fd_dict_getval(parent, &parent_data) != 0) {
+                        /* TODO: fd_dict_getval error */
+                        return;
+                }
+                parent_avp_name = parent_data.avp_name;
+                parent_avp_vendor = parent_data.avp_vendor;
+        } else if (parent_type == DICT_COMMAND) {
+                struct dict_cmd_data parent_data;
+
+                slot = "CommandRules";
+                entry = "Command";
+                if (fd_dict_getval(parent, &parent_data) != 0) {
+                        /* TODO: fd_dict_getval error */
+                        return;
+                }
+                parent_avp_name = parent_data.cmd_name;
+                parent_avp_vendor = 0;
+        } else {
+                /* TODO: error, unknown case */
+                return;
+        }
+
+        for (i=0; i<main[slot].size(); i++) {
+                if (main[slot][i][entry] == parent_avp_name
+                    && (parent_avp_vendor == 0 || !main[slot][i].isMember("Vendor") || parent_avp_vendor == main[slot][i]["Vendor"].asUInt())) {
+                        found = true;
+                        main[slot][i]["Content"].append(avp_rule);
+                        break;
+                }
+        }
+        if (!found) {
+                Json::Value parent_avp;
+                parent_avp[entry] = parent_avp_name;
+                if (parent_avp_vendor != 0) {
+                        parent_avp["Vendor"] = Json::Value(parent_avp_vendor);
+                }
+                parent_avp["Content"].append(avp_rule);
+                main[slot].append(parent_avp);
+        }
+
+}
+
+bool
+dump_list(struct fd_list *list, const char *type, int depth, Json::Value &main) {
+        fd_list *li;
+        for (li = list->next; li != list; li = li->next) {
+                if (!dump_object((dict_object *)li->o, depth, main)) {
+                        LOG_E("error dumping %s", type);
+                        return false;
+                }
+        }
+        return true;
+}
+
+bool
+dump_object(dict_object *self, int depth, Json::Value &main)
+{
+        enum dict_object_type t;
+        int ret = fd_dict_gettype (self, &t);
+        if (ret != 0) {
+                return false;
+        }
+
+        switch (t) {
+#define DUMP_OBJECT_CASE(TYPE, STRUCT, DUMP_FUNCTION)                   \
+                case TYPE: {                                            \
+                        struct STRUCT * data = NULL;                    \
+                        int i;                                          \
+                        data = (struct STRUCT *)malloc(sizeof(struct STRUCT)); \
+                        if (!data) {                                    \
+                                /* TODO: malloc error */                \
+                                return false;                           \
+                        }                                               \
+                        ret = fd_dict_getval(self, data);               \
+                        if (ret != 0) {                                 \
+                                /* TODO: fd_dict_getval error */        \
+                                free(data);                             \
+                                return false;                           \
+                        }                                               \
+                        DUMP_FUNCTION(self, data, self->parent, depth, main); \
+                        if (depth > 0) {                                \
+                                for (i=0; i<NB_LISTS_PER_OBJ; i++) {    \
+                                        if ((self->list[i].o == NULL) && (self->list[i].next != &self->list[i])) { \
+                                                dump_list(&self->list[i], 0, depth-1, main); \
+                                                break;                  \
+                                        }                               \
+                                }                                       \
+                        }                                               \
+                }                                                       \
+                        break;
+
+                DUMP_OBJECT_CASE(DICT_VENDOR, dict_vendor_data, dump_vendor);
+                DUMP_OBJECT_CASE(DICT_APPLICATION, dict_application_data, dump_application);
+                DUMP_OBJECT_CASE(DICT_TYPE, dict_type_data, dump_type);
+                DUMP_OBJECT_CASE(DICT_ENUMVAL, dict_enumval_data, dump_enumval);
+                DUMP_OBJECT_CASE(DICT_AVP, dict_avp_data, dump_avp);
+                DUMP_OBJECT_CASE(DICT_COMMAND, dict_cmd_data, dump_command);
+                DUMP_OBJECT_CASE(DICT_RULE, dict_rule_data, dump_rule);
+        default:
+                /* TODO: unhandled type error */
+                return false;
+        }
+        return true;
+}
+
+bool
+dump_dictionary_to_json(dictionary *dict, Json::Value &main)
+{
+        if (dict == NULL) {
+                return false;
+        }
+
+        if (pthread_rwlock_rdlock(&dict->dict_lock) != 0) {
+                return false;
+        }
+
+        dump_list(&(dict->dict_types), "types", 2, main);
+        dump_object(&(dict->dict_vendors), 3, main);
+        dump_list(&(dict->dict_vendors.list[0]), "vendors", 3, main);
+        dump_object(&(dict->dict_applications), 1, main);
+        dump_list(&(dict->dict_applications.list[0]), "applications", 1, main);
+        dump_list(&(dict->dict_cmd_code), "commands", 1, main);
+
+        if (pthread_rwlock_unlock( &dict->dict_lock) != 0) {
+                return false;
+        }
+
+        return true;
+}
+
+
+static int
+dbg_dict_dump_json_entry(char * conffile)
+{
+        TRACE_ENTRY("%p", conffile);
+        Json::Value main;
+        Json::Value types = Json::Value::null;
+        Json::StyledWriter writer;
+        FILE *out = stdout;
+
+        if (conffile) {
+                if ((out=fopen(conffile, "w")) == NULL) {
+                        LOG_E("cannot open output file '%s' for writing", conffile);
+                        return EINVAL;
+                }
+        }
+
+        /* get main dictionary */
+        struct dictionary * dict = fd_g_config->cnf_dict;
+        if (!dump_dictionary_to_json(dict, main)) {
+                LOG_E("error dumping dictionary to JSON");
+                return EINVAL;
+        }
+        /* remove enumerated types before dumping, they are in AVPs */
+        /* convert remaining ones to array */
+        Json::Value::Members members = main["Types"].getMemberNames();
+        for (Json::Value::Members::const_iterator it = members.begin() ; it != members.end(); ++it) {
+                if (strncmp("Enumerated", main["Types"][*it]["Name"].asCString(), strlen("Enumerated")) == 0) {
+                        main["Types"].removeMember(*it);
+                } else {
+                        types.append(main["Types"][*it]);
+                }
+        }
+        main.removeMember("Types");
+        main["Types"] = types;
+
+        std::string value_str = writer.write(main);
+        fprintf(out, "%s\n", value_str.c_str());
+
+        if (conffile) {
+                fclose(out);
+        }
+
+        LOG_N("Extension 'Dump dictionaries to JSON' initialized");
+        return 0;
+}
+
+extern "C" {
+        EXTENSION_ENTRY("dbg_dict_dump_json", dbg_dict_dump_json_entry);
+}
--- a/extensions/dbg_monitor/dbg_monitor.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dbg_monitor/dbg_monitor.c	Tue Jul 07 01:41:54 2020 +0800
@@ -75,7 +75,9 @@
 static pthread_t thr;
 static void * mn_thr(void * arg)
 {
+#ifdef DEBUG
 	int i = 0;
+#endif
 	fd_log_threadname("Monitor thread");
 	char * buf = NULL;
 	size_t len;
--- a/extensions/dbg_rt/dbg_rt.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dbg_rt/dbg_rt.c	Tue Jul 07 01:41:54 2020 +0800
@@ -33,8 +33,8 @@
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.								 *
 *********************************************************************************************************/
 
-/* 
- * Debug-only extension for routing module; 
+/*
+ * Debug-only extension for routing module;
  * displays state information at the end of routing information process.
  */
 #include <freeDiameter/extension.h>
@@ -47,7 +47,7 @@
 {
 	char * buf = NULL; size_t buflen;
 	TRACE_ENTRY("%p %p", cbdata, msg);
-	
+
 	LOG_D("[dbg_rt] FWD routing message: %p", msg ? *msg : NULL);
 	if (msg) {
 		CHECK_MALLOC( fd_msg_dump_treeview(&buf, &buflen, NULL, *msg, NULL, 0, 1) );
@@ -63,19 +63,20 @@
 	struct fd_list * li;
 	struct msg * msg = *pmsg;
 	char * buf = NULL; size_t buflen;
-	
+
 	TRACE_ENTRY("%p %p %p", cbdata, msg, candidates);
-	
+
 	LOG_D("[dbg_rt] OUT routing message: %p", msg);
 	CHECK_MALLOC( fd_msg_dump_treeview(&buf, &buflen, NULL, msg, NULL, 0, 1) );
 	LOG_D("%s", buf);
+	free(buf);
 	LOG_D("[dbg_rt] Current list of candidates (%p): (score - id)", msg);
-	
+
 	for (li = candidates->next; li != candidates; li = li->next) {
 		struct rtd_candidate *c = (struct rtd_candidate *) li;
 		LOG_D("[dbg_rt]   %d -\t%s", c->score, c->diamid);
 	}
-	
+
 	return 0;
 }
 
@@ -83,7 +84,7 @@
 static int dbgrt_main(char * conffile)
 {
 	TRACE_ENTRY("%p", conffile);
-	
+
 	CHECK_FCT( fd_rt_fwd_register ( dbgrt_fwd_cb, NULL, RT_FWD_ALL, &fwd_hdl ) );
 	CHECK_FCT( fd_rt_out_register ( dbgrt_out_cb, NULL, -1 /* so that it is called late */, &out_hdl ) );
 
@@ -94,11 +95,11 @@
 void fd_ext_fini(void)
 {
 	TRACE_ENTRY();
-	
+
 	/* Unregister the modules */
 	CHECK_FCT_DO( fd_rt_fwd_unregister ( fwd_hdl, NULL ), /* continue */ );
 	CHECK_FCT_DO( fd_rt_out_unregister ( out_hdl, NULL ), /* continue */ );
-	
+
 	return ;
 }
 
--- a/extensions/dict_dcca_3gpp/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dict_dcca_3gpp/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -2,7 +2,7 @@
 PROJECT("Diameter DCCA (Diameter Credit Control Application) 3GPP dictionary definitions" C)
 
 # Compile as a module
-FD_ADD_EXTENSION(dict_dcca_3gpp dict_dcca_3gpp.c)
+FD_ADD_EXTENSION(dict_dcca_3gpp dict_dcca_3gpp.c add_avps.c)
 
 
 ####
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dict_dcca_3gpp/add_avps.c	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,21454 @@
+/*
+Generated by:
+	csv_to_fd -p fdc dict_dcca_3gpp.csv
+
+Do not modify; modify the source .csv files instead.
+*/
+
+#include <freeDiameter/extension.h>
+
+#define CHECK_dict_new( _type, _data, _parent, _ref ) \
+	CHECK_FCT(  fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref))  );
+
+#define CHECK_dict_search( _type, _criteria, _what, _result ) \
+	CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
+
+int add_avps()
+{
+	struct dict_object * DiameterIdentity_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
+
+	struct dict_object * DiameterURI_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
+
+	struct dict_object * Time_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
+
+	struct dict_object * UTF8String_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
+
+	struct dict_object * IPFilterRule_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
+
+	struct dict_object * Address_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
+
+	/*==================================================================*/
+	/* 3GPP TS 29.061 V15.5.0 (2018-12)                                 */
+	/* Interworking between the Public Land Mobile Network (PLMN)       */
+	/* supporting packet based services and                             */
+	/* Packet Data Networks (PDN)                                       */
+	/*                                                                  */
+	/* From 3GPP 29061-f50.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.061 Table 9a: Gi/Sgi specific AVPs                    */
+
+	/* Note: 3GPP TS 29.061 is unclear and inconsistent about M.        */
+	/* For this reason, other sources are assumed more trustworthy.     */
+	/*==================================================================*/
+
+	/* Fix: 3GPP-IMSI (1) changed to Must M.                            */
+	/* 3GPP-IMSI, UTF8String, code 1, section 16.4.7                    */
+	{
+		struct dict_avp_data data = {
+			1,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-IMSI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Fix: 3GPP-Charging-Id (2) type changed from OctetString to Unsigned32, */
+	/* per 3GPP TS 29.061 clause 16.4.7.2/2 and packet dumps.           */
+	/* 3GPP-Charging-Id, Unsigned32, code 2, section 16.4.7             */
+	{
+		struct dict_avp_data data = {
+			2,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Charging-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-PDP-Type (3) changed to Must M.                        */
+	/* 3GPP-PDP-Type, Enumerated, code 3, section 16.4.7                */
+	{
+		struct dict_avp_data data = {
+			3,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-PDP-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PDP-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* 3GPP-CG-Address, OctetString, code 4, section 16.4.7             */
+	{
+		struct dict_avp_data data = {
+			4,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-CG-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-GPRS-Negotiated-QoS-Profile (5) changed to Must M per contrib/3gpp. */
+	/* 3GPP-GPRS-Negotiated-QoS-Profile, UTF8String, code 5, section 16.4.7 */
+	{
+		struct dict_avp_data data = {
+			5,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-GPRS-Negotiated-QoS-Profile",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* 3GPP-SGSN-Address, OctetString, code 6, section 16.4.7           */
+	{
+		struct dict_avp_data data = {
+			6,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-SGSN-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-GGSN-Address, OctetString, code 7, section 16.4.7           */
+	{
+		struct dict_avp_data data = {
+			7,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-GGSN-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-IMSI-MCC-MNC (8) changed to Must M per packet dumps.   */
+	/* 3GPP-IMSI-MCC-MNC, UTF8String, code 8, section 16.4.7            */
+	{
+		struct dict_avp_data data = {
+			8,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-IMSI-MCC-MNC",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Fix: 3GPP-GGSN-MCC-MNC (9) changed to Must M per contrib/3gpp.   */
+	/* 3GPP-GGSN-MCC-MNC, UTF8String, code 9, section 16.4.7            */
+	{
+		struct dict_avp_data data = {
+			9,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-GGSN-MCC-MNC",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Fix: 3GPP-NSAPI (10) changed to Must M per contrib/3gpp.         */
+	/* 3GPP-NSAPI, OctetString, code 10, section 16.4.7                 */
+	{
+		struct dict_avp_data data = {
+			10,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-NSAPI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 Table 9a does not define                    */
+	/* 3GPP-Session-Stop-Indicator (11) even when it is referenced      */
+	/* by other 3GPP Diameter AVPs including PS-Information (874).      */
+	/*                                                                  */
+	/* Fix: Add 3GPP-Session-Stop-Indicator (11) OctetString.           */
+	/* 3GPP-Session-Stop-Indicator, OctetString, code 11, section 16.4.7 */
+	{
+		struct dict_avp_data data = {
+			11,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Session-Stop-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-Selection-Mode (12) changed to Must M per contrib/3gpp. */
+	/* 3GPP-Selection-Mode, UTF8String, code 12, section 16.4.7         */
+	{
+		struct dict_avp_data data = {
+			12,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Selection-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Fix: 3GPP-Charging-Characteristics (13) changed to Must M per contrib/3gpp. */
+	/* 3GPP-Charging-Characteristics, UTF8String, code 13, section 16.4.7 */
+	{
+		struct dict_avp_data data = {
+			13,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Charging-Characteristics",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* 3GPP-CG-IPv6-Address (14) to 3GPP-CG-Ipv6-Address.               */
+	/*                                                                  */
+	/* Fix: 3GPP-CG-Ipv6-Address (14) changed to Must M per contrib/3gpp. */
+	/* Change-1.4.0: 3GPP-CG-IPv6-Address (14) renamed to 3GPP-CG-Ipv6-Address (14). */
+	/* 3GPP-CG-Ipv6-Address, OctetString, code 14, section 16.4.7       */
+	{
+		struct dict_avp_data data = {
+			14,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-CG-Ipv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* 3GPP-SGSN-IPv6-Address (15) to 3GPP-SGSN-Ipv6-Address.           */
+	/*                                                                  */
+	/* Fix: 3GPP-SGSN-Ipv6-Address (15) changed to Must M per contrib/3gpp. */
+	/* Change-1.4.0: 3GPP-SGSN-IPv6-Address (15) renamed to 3GPP-SGSN-Ipv6-Address (15). */
+	/* 3GPP-SGSN-Ipv6-Address, OctetString, code 15, section 16.4.7     */
+	{
+		struct dict_avp_data data = {
+			15,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-SGSN-Ipv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* 3GPP-GGSN-IPv6-Address (16) to 3GPP-GGSN-Ipv6-Address.           */
+	/*                                                                  */
+	/* Fix: 3GPP-GGSN-Ipv6-Address (16) changed to Must M per contrib/3gpp. */
+	/* Change-1.4.0: 3GPP-GGSN-IPv6-Address (16) renamed to 3GPP-GGSN-Ipv6-Address (16). */
+	/* 3GPP-GGSN-Ipv6-Address, OctetString, code 16, section 16.4.7     */
+	{
+		struct dict_avp_data data = {
+			16,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-GGSN-Ipv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* 3GPP-IPv6-DNS-Servers (17) to 3GPP-Ipv6-DNS-Servers.             */
+	/*                                                                  */
+	/* Fix: 3GPP-Ipv6-DNS-Servers (17) changed to Must M per contrib/3gpp. */
+	/* Change-1.4.0: 3GPP-IPv6-DNS-Servers (17) renamed to 3GPP-Ipv6-DNS-Servers (17). */
+	/* 3GPP-Ipv6-DNS-Servers, OctetString, code 17, section 16.4.7      */
+	{
+		struct dict_avp_data data = {
+			17,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Ipv6-DNS-Servers",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-SGSN-MCC-MNC (18) changed to Must M per contrib/3gpp.  */
+	/* 3GPP-SGSN-MCC-MNC, UTF8String, code 18, section 16.4.7           */
+	{
+		struct dict_avp_data data = {
+			18,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-SGSN-MCC-MNC",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Fix: 3GPP-IMEISV (20) changed to Must M.                         */
+	/* 3GPP-IMEISV, OctetString, code 20, section 16.4.7                */
+	{
+		struct dict_avp_data data = {
+			20,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-IMEISV",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-RAT-Type (21) changed to Must M.                       */
+	/* 3GPP-RAT-Type, OctetString, code 21, section 16.4.7              */
+	{
+		struct dict_avp_data data = {
+			21,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-RAT-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-User-Location-Info (22) changed to Must M.             */
+	/* 3GPP-User-Location-Info, OctetString, code 22, section 16.4.7    */
+	{
+		struct dict_avp_data data = {
+			22,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-User-Location-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fix: 3GPP-MS-TimeZone (23) changed to Must M.                    */
+	/* 3GPP-MS-TimeZone, OctetString, code 23, section 16.4.7           */
+	{
+		struct dict_avp_data data = {
+			23,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-MS-TimeZone",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-CAMEL-Charging-Info, OctetString, code 24, section 16.4.7   */
+	{
+		struct dict_avp_data data = {
+			24,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-CAMEL-Charging-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Packet-Filter, OctetString, code 25, section 16.4.7         */
+	{
+		struct dict_avp_data data = {
+			25,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Packet-Filter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Negotiated-DSCP, OctetString, code 26, section 16.4.7       */
+	{
+		struct dict_avp_data data = {
+			26,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Negotiated-DSCP",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Allocate-IP-Type, OctetString, code 27, section 16.4.7      */
+	{
+		struct dict_avp_data data = {
+			27,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Allocate-IP-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 Table 9a does not define                    */
+	/* External-Identifier (28) for Diameter; it is RADIUS only.        */
+	/* 3GPP TS 29.061 Table 9b refers to 3GPP TS 29.336                 */
+	/* for External-Identifier (3111).                                  */
+	/*                                                                  */
+	/* Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String. */
+
+	/* TWAN-Identifier, OctetString, code 29, section 16.4.7            */
+	{
+		struct dict_avp_data data = {
+			29,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-User-Location-Info-Time, OctetString, code 30, section 16.4.7 */
+	{
+		struct dict_avp_data data = {
+			30,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-User-Location-Info-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Secondary-RAT-Usage, OctetString, code 31, section 16.4.7   */
+	{
+		struct dict_avp_data data = {
+			31,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Secondary-RAT-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.061 Table 10: Gmb specific AVPs                       */
+	/*==================================================================*/
+
+	/* TMGI, OctetString, code 900, section 17.7.2                      */
+	{
+		struct dict_avp_data data = {
+			900,	/* Code */
+			10415,	/* Vendor */
+			"TMGI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Required-MBMS-Bearer-Capabilities, UTF8String, code 901, section 17.7.3 */
+	{
+		struct dict_avp_data data = {
+			901,	/* Code */
+			10415,	/* Vendor */
+			"Required-MBMS-Bearer-Capabilities",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* MBMS-StartStop-Indication, Enumerated, code 902, section 17.7.5  */
+	{
+		struct dict_avp_data data = {
+			902,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-StartStop-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-StartStop-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-Service-Area, OctetString, code 903, section 17.7.6         */
+	{
+		struct dict_avp_data data = {
+			903,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Service-Area",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Session-Duration, OctetString, code 904, section 17.7.7     */
+	{
+		struct dict_avp_data data = {
+			904,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Session-Duration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Alternative-APN, UTF8String, code 905, section 17.7.8            */
+	{
+		struct dict_avp_data data = {
+			905,	/* Code */
+			10415,	/* Vendor */
+			"Alternative-APN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* MBMS-Service-Type, Enumerated, code 906, section 17.7.9          */
+	{
+		struct dict_avp_data data = {
+			906,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Service-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-2G-3G-Indicator, Enumerated, code 907, section 17.7.10      */
+	{
+		struct dict_avp_data data = {
+			907,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-2G-3G-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-2G-3G-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-Session-Identity, OctetString, code 908, section 17.7.11    */
+	{
+		struct dict_avp_data data = {
+			908,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Session-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAI, UTF8String, code 909, section 17.7.12                       */
+	{
+		struct dict_avp_data data = {
+			909,	/* Code */
+			10415,	/* Vendor */
+			"RAI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Additional-MBMS-Trace-Info, OctetString, code 910, section 17.7.13 */
+	{
+		struct dict_avp_data data = {
+			910,	/* Code */
+			10415,	/* Vendor */
+			"Additional-MBMS-Trace-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Time-To-Data-Transfer, OctetString, code 911, section 17.7.14 */
+	{
+		struct dict_avp_data data = {
+			911,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Time-To-Data-Transfer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Session-Repetition-Number, OctetString, code 912, section 17.7.15 */
+	{
+		struct dict_avp_data data = {
+			912,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Session-Repetition-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Required-QoS, UTF8String, code 913, section 17.7.16         */
+	{
+		struct dict_avp_data data = {
+			913,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Required-QoS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* MBMS-Counting-Information, Enumerated, code 914, section 17.7.17 */
+	{
+		struct dict_avp_data data = {
+			914,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Counting-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Counting-Information)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-User-Data-Mode-Indication, Enumerated, code 915, section 17.7.18 */
+	{
+		struct dict_avp_data data = {
+			915,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-User-Data-Mode-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Data-Mode-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-GGSN-Address, OctetString, code 916, section 17.7.19        */
+	{
+		struct dict_avp_data data = {
+			916,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GGSN-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* MBMS-GGSN-IPv6-Address (917) to MBMS-GGSN-Ipv6-Address.          */
+	/*                                                                  */
+	/* Change-1.4.0: MBMS-GGSN-IPv6-Address (917) renamed to MBMS-GGSN-Ipv6-Address (917). */
+	/* MBMS-GGSN-Ipv6-Address, OctetString, code 917, section 17.7.20   */
+	{
+		struct dict_avp_data data = {
+			917,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GGSN-Ipv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-BMSC-SSM-IP-Address, OctetString, code 918, section 17.7.21 */
+	{
+		struct dict_avp_data data = {
+			918,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-BMSC-SSM-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* MBMS-BMSC-SSM-IPv6-Address (919) to MBMS-BMSC-SSM-Ipv6-Address.  */
+	/*                                                                  */
+	/* Change-1.4.0: MBMS-BMSC-SSM-IPv6-Address (919) renamed to MBMS-BMSC-SSM-Ipv6-Address (919). */
+	/* MBMS-BMSC-SSM-Ipv6-Address, OctetString, code 919, section 17.7.22 */
+	{
+		struct dict_avp_data data = {
+			919,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-BMSC-SSM-Ipv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Flow-Identifier, OctetString, code 920, section 17.7.23     */
+	{
+		struct dict_avp_data data = {
+			920,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Flow-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CN-IP-Multicast-Distribution, Enumerated, code 921, section 17.7.24 */
+	{
+		struct dict_avp_data data = {
+			921,	/* Code */
+			10415,	/* Vendor */
+			"CN-IP-Multicast-Distribution",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-IP-Multicast-Distribution)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-HC-Indicator, Enumerated, code 922, section 17.7.25         */
+	{
+		struct dict_avp_data data = {
+			922,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-HC-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-HC-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.061 Table 20.5a.1: SGmb specific AVPs                 */
+	/*==================================================================*/
+
+	/* MBMS-Access-Indicator, Enumerated, code 923, section 20.5a.1     */
+	{
+		struct dict_avp_data data = {
+			923,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Access-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Access-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (3522). */
+	/* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924). */
+	/* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522). */
+	/* MBMS-GW-SSM-IP-Address, OctetString, code 924, section 20.5a.2   */
+	{
+		struct dict_avp_data data = {
+			924,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-SSM-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed                   */
+	/* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.      */
+	/* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (3523). */
+	/* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925). */
+	/* 3GPP TS 29.061 V12.6.0 (2014-06) renamed                         */
+	/* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.      */
+	/* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523). */
+	/* MBMS-GW-SSM-IPv6-Address, OctetString, code 925, section 20.5a.3 */
+	{
+		struct dict_avp_data data = {
+			925,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-SSM-IPv6-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-BMSC-SSM-UDP-Port, OctetString, code 926, section 20.5a.4   */
+	{
+		struct dict_avp_data data = {
+			926,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-BMSC-SSM-UDP-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-GW-UDP-Port, OctetString, code 927, section 20.5a.5         */
+	{
+		struct dict_avp_data data = {
+			927,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-UDP-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-GW-UDP-Port-Indicator, Enumerated, code 928, section 20.5a.6 */
+	{
+		struct dict_avp_data data = {
+			928,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-UDP-Port-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-GW-UDP-Port-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-Data-Transfer-Start, Unsigned64, code 929, section 20.5a.7  */
+	{
+		struct dict_avp_data data = {
+			929,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Data-Transfer-Start",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Data-Transfer-Stop, Unsigned64, code 930, section 20.5a.8   */
+	{
+		struct dict_avp_data data = {
+			930,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Data-Transfer-Stop",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 Table 20.5a.1 row MBMS-Flag (931) has       */
+	/* incorrect name and should be "MBMS-Flags" per clause 20.5a.9.    */
+	/*                                                                  */
+	/* Fix: MBMS-Flag (931) renamed to MBMS-Flags (931).                */
+	/* MBMS-Flags, Unsigned32, code 931, section 20.5a.9                */
+	{
+		struct dict_avp_data data = {
+			931,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Restart-Counter, Unsigned32, code 932, section 20.5a.10          */
+	{
+		struct dict_avp_data data = {
+			932,	/* Code */
+			10415,	/* Vendor */
+			"Restart-Counter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Diagnostic-Info, Unsigned32, code 933, section 20.5a.11          */
+	{
+		struct dict_avp_data data = {
+			933,	/* Code */
+			10415,	/* Vendor */
+			"Diagnostic-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Cell-List, OctetString, code 934, section 20.5a.12          */
+	{
+		struct dict_avp_data data = {
+			934,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Cell-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.109 V15.0.0 (2017-06)                                 */
+	/* Generic Authentication Architecture (GAA);                       */
+	/* Zh and Zn Interfaces based on the Diameter protocol;             */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29109-f00.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.109 Table 6.1: New Diameter Multimedia Application AVPs */
+	/*==================================================================*/
+
+	/* GBA-UserSecSettings, OctetString, code 400, section 6.3.1.1      */
+	{
+		struct dict_avp_data data = {
+			400,	/* Code */
+			10415,	/* Vendor */
+			"GBA-UserSecSettings",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transaction-Identifier, OctetString, code 401, section 6.3.1.2   */
+	{
+		struct dict_avp_data data = {
+			401,	/* Code */
+			10415,	/* Vendor */
+			"Transaction-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NAF-Id, OctetString, code 402, section 6.3.1.3                   */
+	{
+		struct dict_avp_data data = {
+			402,	/* Code */
+			10415,	/* Vendor */
+			"NAF-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GAA-Service-Identifier, OctetString, code 403, section 6.3.1.4   */
+	{
+		struct dict_avp_data data = {
+			403,	/* Code */
+			10415,	/* Vendor */
+			"GAA-Service-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Key-ExpiryTime, Time, code 404, section 6.3.1.5                  */
+	{
+		struct dict_avp_data data = {
+			404,	/* Code */
+			10415,	/* Vendor */
+			"Key-ExpiryTime",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* ME-Key-Material, OctetString, code 405, section 6.3.1.6          */
+	{
+		struct dict_avp_data data = {
+			405,	/* Code */
+			10415,	/* Vendor */
+			"ME-Key-Material",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UICC-Key-Material, OctetString, code 406, section 6.3.1.7        */
+	{
+		struct dict_avp_data data = {
+			406,	/* Code */
+			10415,	/* Vendor */
+			"UICC-Key-Material",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.109 Table 6.1 row GBA_U-Awareness-Indicator (407) */
+	/* has an underscore in the name (contrary to RFC 6733 section 4.1). */
+	/*                                                                  */
+	/* Fix: GBA_U-Awareness-Indicator (407) renamed to GBA-U-Awareness-Indicator (407). */
+	/* GBA-U-Awareness-Indicator, Enumerated, code 407, section 6.3.1.8 */
+	{
+		struct dict_avp_data data = {
+			407,	/* Code */
+			10415,	/* Vendor */
+			"GBA-U-Awareness-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GBA-U-Awareness-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* BootstrapInfoCreationTime, Time, code 408, section 6.3.1.9       */
+	{
+		struct dict_avp_data data = {
+			408,	/* Code */
+			10415,	/* Vendor */
+			"BootstrapInfoCreationTime",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* GUSS-Timestamp, Time, code 409, section 6.3.1.10                 */
+	{
+		struct dict_avp_data data = {
+			409,	/* Code */
+			10415,	/* Vendor */
+			"GUSS-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* GBA-Type, Enumerated, code 410, section 6.3.1.11                 */
+	{
+		struct dict_avp_data data = {
+			410,	/* Code */
+			10415,	/* Vendor */
+			"GBA-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GBA-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* UE-Id, OctetString, code 411, section 6.3.1.12                   */
+	{
+		struct dict_avp_data data = {
+			411,	/* Code */
+			10415,	/* Vendor */
+			"UE-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-Id-Type, Enumerated, code 412, section 6.3.1.13               */
+	{
+		struct dict_avp_data data = {
+			412,	/* Code */
+			10415,	/* Vendor */
+			"UE-Id-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-Id-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* UICC-App-Label, OctetString, code 413, section 6.3.1.14          */
+	{
+		struct dict_avp_data data = {
+			413,	/* Code */
+			10415,	/* Vendor */
+			"UICC-App-Label",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UICC-ME, Enumerated, code 414, section 6.3.1.15                  */
+	{
+		struct dict_avp_data data = {
+			414,	/* Code */
+			10415,	/* Vendor */
+			"UICC-ME",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UICC-ME)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Requested-Key-Lifetime, Time, code 415, section 6.3.1.16         */
+	{
+		struct dict_avp_data data = {
+			415,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Key-Lifetime",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Private-Identity-Request, Enumerated, code 416, section 6.3.1.17 */
+	{
+		struct dict_avp_data data = {
+			416,	/* Code */
+			10415,	/* Vendor */
+			"Private-Identity-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Private-Identity-Request)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* GBA-Push-Info, OctetString, code 417, section 6.3.1.18           */
+	{
+		struct dict_avp_data data = {
+			417,	/* Code */
+			10415,	/* Vendor */
+			"GBA-Push-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NAF-SA-Identifier, OctetString, code 418, section 6.3.1.19       */
+	{
+		struct dict_avp_data data = {
+			418,	/* Code */
+			10415,	/* Vendor */
+			"NAF-SA-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Security-Feature-Request, OctetString, code 419, section 6.3.1.20 */
+	{
+		struct dict_avp_data data = {
+			419,	/* Code */
+			10415,	/* Vendor */
+			"Security-Feature-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Security-Feature-Response, OctetString, code 420, section 6.3.1.21 */
+	{
+		struct dict_avp_data data = {
+			420,	/* Code */
+			10415,	/* Vendor */
+			"Security-Feature-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.128 V15.6.0 (2019-09)                                 */
+	/* Mobility Management Entity (MME) and Serving GPRS Support        */
+	/* Node (SGSN) interfaces for interworking with packet data         */
+	/* networks and applications                                        */
+	/*                                                                  */
+	/* From 3GPP 29128-f60.docx                                         */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.128 Table 6.4.1-1: T6a/T6b specific Diameter AVPs     */
+	/*==================================================================*/
+
+	/* Communication-Failure-Information, Grouped, code 4300, section 6.4.4 */
+	{
+		struct dict_avp_data data = {
+			4300,	/* Code */
+			10415,	/* Vendor */
+			"Communication-Failure-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Cause-Type, Unsigned32, code 4301, section 6.4.5                 */
+	{
+		struct dict_avp_data data = {
+			4301,	/* Code */
+			10415,	/* Vendor */
+			"Cause-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* S1AP-Cause, Unsigned32, code 4302, section 6.4.6                 */
+	{
+		struct dict_avp_data data = {
+			4302,	/* Code */
+			10415,	/* Vendor */
+			"S1AP-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RANAP-Cause, Unsigned32, code 4303, section 6.4.7                */
+	{
+		struct dict_avp_data data = {
+			4303,	/* Code */
+			10415,	/* Vendor */
+			"RANAP-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* BSSGP-Cause, Unsigned32, code 4309, section 6.4.8                */
+	{
+		struct dict_avp_data data = {
+			4309,	/* Code */
+			10415,	/* Vendor */
+			"BSSGP-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GMM-Cause, Unsigned32, code 4304, section 6.4.9                  */
+	{
+		struct dict_avp_data data = {
+			4304,	/* Code */
+			10415,	/* Vendor */
+			"GMM-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Cause, Unsigned32, code 4305, section 6.4.10                  */
+	{
+		struct dict_avp_data data = {
+			4305,	/* Code */
+			10415,	/* Vendor */
+			"SM-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-UE-Per-Location-Configuration, Grouped, code 4306, section 6.4.11 */
+	{
+		struct dict_avp_data data = {
+			4306,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-UE-Per-Location-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-UE-Per-Location-Report, Grouped, code 4307, section 6.4.12 */
+	{
+		struct dict_avp_data data = {
+			4307,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-UE-Per-Location-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-Count, Unsigned32, code 4308, section 6.4.13                  */
+	{
+		struct dict_avp_data data = {
+			4308,	/* Code */
+			10415,	/* Vendor */
+			"UE-Count",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Connection-Action, Unsigned32, code 4314, section 6.4.18         */
+	{
+		struct dict_avp_data data = {
+			4314,	/* Code */
+			10415,	/* Vendor */
+			"Connection-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Non-IP-Data, OctetString, code 4315, section 6.4.19              */
+	{
+		struct dict_avp_data data = {
+			4315,	/* Code */
+			10415,	/* Vendor */
+			"Non-IP-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Serving-PLMN-Rate-Control, Grouped, code 4310, section 6.4.21    */
+	{
+		struct dict_avp_data data = {
+			4310,	/* Code */
+			10415,	/* Vendor */
+			"Serving-PLMN-Rate-Control",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Uplink-Rate-Limit, Unsigned32, code 4311, section 6.4.23         */
+	{
+		struct dict_avp_data data = {
+			4311,	/* Code */
+			10415,	/* Vendor */
+			"Uplink-Rate-Limit",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Downlink-Rate-Limit, Unsigned32, code 4312, section 6.4.22       */
+	{
+		struct dict_avp_data data = {
+			4312,	/* Code */
+			10415,	/* Vendor */
+			"Downlink-Rate-Limit",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-PCO, OctetString, code 4313, section 6.4.26             */
+	{
+		struct dict_avp_data data = {
+			4313,	/* Code */
+			10415,	/* Vendor */
+			"Extended-PCO",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCEF-Wait-Time, Time, code 4316, section 6.4.24                  */
+	{
+		struct dict_avp_data data = {
+			4316,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-Wait-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* CMR-Flags, Unsigned32, code 4317, section 6.4.25                 */
+	{
+		struct dict_avp_data data = {
+			4317,	/* Code */
+			10415,	/* Vendor */
+			"CMR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RRC-Cause-Counter, Grouped, code 4318, section 6.4.27            */
+	{
+		struct dict_avp_data data = {
+			4318,	/* Code */
+			10415,	/* Vendor */
+			"RRC-Cause-Counter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Counter-Value, Unsigned32, code 4319, section 6.4.28             */
+	{
+		struct dict_avp_data data = {
+			4319,	/* Code */
+			10415,	/* Vendor */
+			"Counter-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RRC-Counter-Timestamp, Time, code 4320, section 6.4.29           */
+	{
+		struct dict_avp_data data = {
+			4320,	/* Code */
+			10415,	/* Vendor */
+			"RRC-Counter-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* TDA-Flags, Unsigned32, code 4321, section 6.4.31                 */
+	{
+		struct dict_avp_data data = {
+			4321,	/* Code */
+			10415,	/* Vendor */
+			"TDA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Idle-Status-Indication, Grouped, code 4322, section 6.4.32       */
+	{
+		struct dict_avp_data data = {
+			4322,	/* Code */
+			10415,	/* Vendor */
+			"Idle-Status-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Idle-Status-Timestamp, Time, code 4323, section 6.4.33           */
+	{
+		struct dict_avp_data data = {
+			4323,	/* Code */
+			10415,	/* Vendor */
+			"Idle-Status-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Active-Time, Unsigned32, code 4324, section 6.4.34               */
+	{
+		struct dict_avp_data data = {
+			4324,	/* Code */
+			10415,	/* Vendor */
+			"Active-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.140 V7.0.0 (2007-06)                                  */
+	/* MM10 interface based on Diameter protocol;                       */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29140-700.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.140 Table 6.3.1: Diameter MM10 Application AVPs       */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* Served-User-Identity, Grouped, code 1100, section 6.3.1          */
+	{
+		struct dict_avp_data data = {
+			1100,	/* Code */
+			10415,	/* Vendor */
+			"Served-User-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* VASP-ID, UTF8String, code 1101, section 6.3.3                    */
+	{
+		struct dict_avp_data data = {
+			1101,	/* Code */
+			10415,	/* Vendor */
+			"VASP-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* VAS-ID, UTF8String, code 1102, section 6.3.4                     */
+	{
+		struct dict_avp_data data = {
+			1102,	/* Code */
+			10415,	/* Vendor */
+			"VAS-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Trigger-Event, Enumerated, code 1103, section 6.3.5              */
+	{
+		struct dict_avp_data data = {
+			1103,	/* Code */
+			10415,	/* Vendor */
+			"Trigger-Event",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Event)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Sender-Address, UTF8String, code 1104, section 6.3.7             */
+	{
+		struct dict_avp_data data = {
+			1104,	/* Code */
+			10415,	/* Vendor */
+			"Sender-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Initial-Recipient-Address, Grouped, code 1105, section 6.3.8     */
+	{
+		struct dict_avp_data data = {
+			1105,	/* Code */
+			10415,	/* Vendor */
+			"Initial-Recipient-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Result-Recipient-Address, Grouped, code 1106, section 6.3.9      */
+	{
+		struct dict_avp_data data = {
+			1106,	/* Code */
+			10415,	/* Vendor */
+			"Result-Recipient-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.329 Sequence-Number (716)    */
+	/* and 3GPP TS 29.283 Sequence-Number (4512).                       */
+	/* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */
+	/* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */
+	/* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */
+	/*                                                                  */
+	/* Fix: Sequence-Number (1107) renamed to Sequence-Number-29.140 (1107). */
+	/* Sequence-Number-29.140, Unsigned32, code 1107, section 6.3.10    */
+	{
+		struct dict_avp_data data = {
+			1107,	/* Code */
+			10415,	/* Vendor */
+			"Sequence-Number-29.140",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201); */
+	/* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108). */
+	/* 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201). */
+	/*                                                                  */
+	/* Fix: Recipient-Address (1108) renamed to Recipient-Address-29.140 (1108). */
+	/* Recipient-Address-29.140, UTF8String, code 1108, section 6.3.11  */
+	{
+		struct dict_avp_data data = {
+			1108,	/* Code */
+			10415,	/* Vendor */
+			"Recipient-Address-29.140",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Routeing-Address, UTF8String, code 1109, section 6.3.12          */
+	{
+		struct dict_avp_data data = {
+			1109,	/* Code */
+			10415,	/* Vendor */
+			"Routeing-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Originating-Interface, Enumerated, code 1110, section 6.3.13     */
+	{
+		struct dict_avp_data data = {
+			1110,	/* Code */
+			10415,	/* Vendor */
+			"Originating-Interface",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Interface)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Delivery-Report, Enumerated, code 1111, section 6.3.14           */
+	{
+		struct dict_avp_data data = {
+			1111,	/* Code */
+			10415,	/* Vendor */
+			"Delivery-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Read-Reply, Enumerated, code 1112, section 6.3.15                */
+	{
+		struct dict_avp_data data = {
+			1112,	/* Code */
+			10415,	/* Vendor */
+			"Read-Reply",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Sender-Visibility, Enumerated, code 1113, section 6.3.16         */
+	{
+		struct dict_avp_data data = {
+			1113,	/* Code */
+			10415,	/* Vendor */
+			"Sender-Visibility",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sender-Visibility)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Service-Key, UTF8String, code 1114, section 6.3.17               */
+	{
+		struct dict_avp_data data = {
+			1114,	/* Code */
+			10415,	/* Vendor */
+			"Service-Key",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Billing-Information, UTF8String, code 1115, section 6.3.18       */
+	{
+		struct dict_avp_data data = {
+			1115,	/* Code */
+			10415,	/* Vendor */
+			"Billing-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 32.299 V11.6.0 Status (2702).   */
+	/* 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed                */
+	/* Status (2702) to Status-Code (2702).                             */
+	/* 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed                */
+	/* Status-Code (2702) to Status-AS-Code (2702).                     */
+	/*                                                                  */
+	/* TODO: rename back to Status ?                                    */
+	/* Fix: Status (1116) renamed to Status-29.140 (1116).              */
+	/* Status-29.140, Grouped, code 1116, section 6.3.19                */
+	{
+		struct dict_avp_data data = {
+			1116,	/* Code */
+			10415,	/* Vendor */
+			"Status-29.140",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Status-Code, UTF8String, code 1117, section 6.3.20               */
+	{
+		struct dict_avp_data data = {
+			1117,	/* Code */
+			10415,	/* Vendor */
+			"Status-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Status-Text, UTF8String, code 1118, section 6.3.21               */
+	{
+		struct dict_avp_data data = {
+			1118,	/* Code */
+			10415,	/* Vendor */
+			"Status-Text",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Routeing-Address-Resolution, Enumerated, code 1119, section 6.3.22 */
+	{
+		struct dict_avp_data data = {
+			1119,	/* Code */
+			10415,	/* Vendor */
+			"Routeing-Address-Resolution",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Routeing-Address-Resolution)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.153 V15.1.0 (2019-09)                                 */
+	/* Service capability exposure functionality over Ns                */
+	/* reference point                                                  */
+	/*                                                                  */
+	/* From 3GPP 29153-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.153 Table 5.3.1.1: Ns specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Network-Congestion-Area-Report, Grouped, code 4101, section 5.3.2 */
+	{
+		struct dict_avp_data data = {
+			4101,	/* Code */
+			10415,	/* Vendor */
+			"Network-Congestion-Area-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Ns-Request-Type, Unsigned32, code 4102, section 5.3.3            */
+	{
+		struct dict_avp_data data = {
+			4102,	/* Code */
+			10415,	/* Vendor */
+			"Ns-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.154 V15.3.0 (2019-09)                                 */
+	/* Service capability exposure functionality over                   */
+	/* Nt reference point                                               */
+	/*                                                                  */
+	/* From 3GPP 29154-f30.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.154 Table 5.3.1.1: Nt specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Network-Area-Info-List, OctetString, code 4201, section 5.3.2    */
+	{
+		struct dict_avp_data data = {
+			4201,	/* Code */
+			10415,	/* Vendor */
+			"Network-Area-Info-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-UEs, Unsigned32, code 4209, section 5.3.10             */
+	{
+		struct dict_avp_data data = {
+			4209,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-UEs",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reference-Id, OctetString, code 4202, section 5.3.3              */
+	{
+		struct dict_avp_data data = {
+			4202,	/* Code */
+			10415,	/* Vendor */
+			"Reference-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transfer-Request-Type, Unsigned32, code 4203, section 5.3.4      */
+	{
+		struct dict_avp_data data = {
+			4203,	/* Code */
+			10415,	/* Vendor */
+			"Transfer-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.345 Time-Window (3818).      */
+	/* Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates  */
+	/* Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).          */
+	/*                                                                  */
+	/* Fix: Time-Window (4204) renamed to Time-Window-29.154 (4204).    */
+	/* Time-Window-29.154, Grouped, code 4204, section 5.3.5            */
+	{
+		struct dict_avp_data data = {
+			4204,	/* Code */
+			10415,	/* Vendor */
+			"Time-Window-29.154",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transfer-End-Time, Time, code 4205, section 5.3.6                */
+	{
+		struct dict_avp_data data = {
+			4205,	/* Code */
+			10415,	/* Vendor */
+			"Transfer-End-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Transfer-Policy, Grouped, code 4207, section 5.3.8               */
+	{
+		struct dict_avp_data data = {
+			4207,	/* Code */
+			10415,	/* Vendor */
+			"Transfer-Policy",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transfer-Policy-Id, Unsigned32, code 4208, section 5.3.9         */
+	{
+		struct dict_avp_data data = {
+			4208,	/* Code */
+			10415,	/* Vendor */
+			"Transfer-Policy-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transfer-Start-Time, Time, code 4206, section 5.3.7              */
+	{
+		struct dict_avp_data data = {
+			4206,	/* Code */
+			10415,	/* Vendor */
+			"Transfer-Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.154 Table A.6.3.1-1: Nta specific Diameter AVPs       */
+	/*==================================================================*/
+
+	/* Access-Network-Reports, Grouped, code 4210, section A.6.3.2      */
+	{
+		struct dict_avp_data data = {
+			4210,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Reports",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Configuration, Grouped, code 4211, section A.6.3.3         */
+	{
+		struct dict_avp_data data = {
+			4211,	/* Code */
+			10415,	/* Vendor */
+			"Event-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Configuration-State, Unsigned32, code 4212, section A.6.3.4 */
+	{
+		struct dict_avp_data data = {
+			4212,	/* Code */
+			10415,	/* Vendor */
+			"Event-Configuration-State",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Configuration-Status, Grouped, code 4213, section A.6.3.5  */
+	{
+		struct dict_avp_data data = {
+			4213,	/* Code */
+			10415,	/* Vendor */
+			"Event-Configuration-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Reporting-Results, Unsigned32, code 4214, section A.6.3.6  */
+	{
+		struct dict_avp_data data = {
+			4214,	/* Code */
+			10415,	/* Vendor */
+			"Event-Reporting-Results",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Reports, Grouped, code 4215, section A.6.3.7               */
+	{
+		struct dict_avp_data data = {
+			4215,	/* Code */
+			10415,	/* Vendor */
+			"Event-Reports",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-SCEF-Reference-ID, Unsigned64, code 4216, section A.6.3.8 */
+	{
+		struct dict_avp_data data = {
+			4216,	/* Code */
+			10415,	/* Vendor */
+			"Extended-SCEF-Reference-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.172 V15.2.0 (2019-12)                                 */
+	/* Location Services (LCS);                                         */
+	/* Evolved Packet Core (EPC) LCS Protocol (ELP) between the         */
+	/* Gateway Mobile Location Centre (GMLC) and the                    */
+	/* Mobile Management Entity (MME);                                  */
+	/* SLg interface                                                    */
+	/*                                                                  */
+	/* From 3GPP 29172-f20.docx                                         */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.172 Table 7.4.1-1: Diameter ELP Application AVPs      */
+	/*==================================================================*/
+
+	/* SLg-Location-Type, Enumerated, code 2500, section 7.4.2          */
+	{
+		struct dict_avp_data data = {
+			2500,	/* Code */
+			10415,	/* Vendor */
+			"SLg-Location-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SLg-Location-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LCS-EPS-Client-Name, Grouped, code 2501, section 7.4.3           */
+	{
+		struct dict_avp_data data = {
+			2501,	/* Code */
+			10415,	/* Vendor */
+			"LCS-EPS-Client-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Requestor-Name, Grouped, code 2502, section 7.4.4            */
+	{
+		struct dict_avp_data data = {
+			2502,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Requestor-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Priority, Unsigned32, code 2503, section 7.4.5               */
+	{
+		struct dict_avp_data data = {
+			2503,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-QoS, Grouped, code 2504, section 7.4.6                       */
+	{
+		struct dict_avp_data data = {
+			2504,	/* Code */
+			10415,	/* Vendor */
+			"LCS-QoS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Horizontal-Accuracy, Unsigned32, code 2505, section 7.4.7        */
+	{
+		struct dict_avp_data data = {
+			2505,	/* Code */
+			10415,	/* Vendor */
+			"Horizontal-Accuracy",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Vertical-Accuracy, Unsigned32, code 2506, section 7.4.8          */
+	{
+		struct dict_avp_data data = {
+			2506,	/* Code */
+			10415,	/* Vendor */
+			"Vertical-Accuracy",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Vertical-Requested, Enumerated, code 2507, section 7.4.9         */
+	{
+		struct dict_avp_data data = {
+			2507,	/* Code */
+			10415,	/* Vendor */
+			"Vertical-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Vertical-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Velocity-Requested, Enumerated, code 2508, section 7.4.10        */
+	{
+		struct dict_avp_data data = {
+			2508,	/* Code */
+			10415,	/* Vendor */
+			"Velocity-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Velocity-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Response-Time, Enumerated, code 2509, section 7.4.11             */
+	{
+		struct dict_avp_data data = {
+			2509,	/* Code */
+			10415,	/* Vendor */
+			"Response-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Response-Time)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Supported-GAD-Shapes, Unsigned32, code 2510, section 7.4.12      */
+	{
+		struct dict_avp_data data = {
+			2510,	/* Code */
+			10415,	/* Vendor */
+			"Supported-GAD-Shapes",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Codeword, UTF8String, code 2511, section 7.4.13              */
+	{
+		struct dict_avp_data data = {
+			2511,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Codeword",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* LCS-Privacy-Check, Enumerated, code 2512, section 7.4.14         */
+	{
+		struct dict_avp_data data = {
+			2512,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Privacy-Check",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Privacy-Check)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Accuracy-Fulfilment-Indicator, Enumerated, code 2513, section 7.4.15 */
+	{
+		struct dict_avp_data data = {
+			2513,	/* Code */
+			10415,	/* Vendor */
+			"Accuracy-Fulfilment-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Accuracy-Fulfilment-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Age-Of-Location-Estimate, Unsigned32, code 2514, section 7.4.16  */
+	{
+		struct dict_avp_data data = {
+			2514,	/* Code */
+			10415,	/* Vendor */
+			"Age-Of-Location-Estimate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Velocity-Estimate, OctetString, code 2515, section 7.4.17        */
+	{
+		struct dict_avp_data data = {
+			2515,	/* Code */
+			10415,	/* Vendor */
+			"Velocity-Estimate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* EUTRAN-Positioning-Data, OctetString, code 2516, section 7.4.18  */
+	{
+		struct dict_avp_data data = {
+			2516,	/* Code */
+			10415,	/* Vendor */
+			"EUTRAN-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ECGI, OctetString, code 2517, section 7.4.19                     */
+	{
+		struct dict_avp_data data = {
+			2517,	/* Code */
+			10415,	/* Vendor */
+			"ECGI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Event, Enumerated, code 2518, section 7.4.20            */
+	{
+		struct dict_avp_data data = {
+			2518,	/* Code */
+			10415,	/* Vendor */
+			"Location-Event",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Event)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Pseudonym-Indicator, Enumerated, code 2519, section 7.4.21       */
+	{
+		struct dict_avp_data data = {
+			2519,	/* Code */
+			10415,	/* Vendor */
+			"Pseudonym-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pseudonym-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LCS-Service-Type-ID, Unsigned32, code 2520, section 7.4.22       */
+	{
+		struct dict_avp_data data = {
+			2520,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Service-Type-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Privacy-Check-Non-Session, Grouped, code 2521, section 7.4.23 */
+	{
+		struct dict_avp_data data = {
+			2521,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Privacy-Check-Non-Session",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Privacy-Check-Session, Grouped, code 2522, section 7.4.24    */
+	{
+		struct dict_avp_data data = {
+			2522,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Privacy-Check-Session",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-QoS-Class, Enumerated, code 2523, section 7.4.27             */
+	{
+		struct dict_avp_data data = {
+			2523,	/* Code */
+			10415,	/* Vendor */
+			"LCS-QoS-Class",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-QoS-Class)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* GERAN-Positioning-Info, Grouped, code 2524, section 7.4.29       */
+	{
+		struct dict_avp_data data = {
+			2524,	/* Code */
+			10415,	/* Vendor */
+			"GERAN-Positioning-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GERAN-Positioning-Data, OctetString, code 2525, section 7.4.30   */
+	{
+		struct dict_avp_data data = {
+			2525,	/* Code */
+			10415,	/* Vendor */
+			"GERAN-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GERAN-GANSS-Positioning-Data, OctetString, code 2526, section 7.4.31 */
+	{
+		struct dict_avp_data data = {
+			2526,	/* Code */
+			10415,	/* Vendor */
+			"GERAN-GANSS-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTRAN-Positioning-Info, Grouped, code 2527, section 7.4.32       */
+	{
+		struct dict_avp_data data = {
+			2527,	/* Code */
+			10415,	/* Vendor */
+			"UTRAN-Positioning-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTRAN-Positioning-Data, OctetString, code 2528, section 7.4.33   */
+	{
+		struct dict_avp_data data = {
+			2528,	/* Code */
+			10415,	/* Vendor */
+			"UTRAN-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTRAN-GANSS-Positioning-Data, OctetString, code 2529, section 7.4.34 */
+	{
+		struct dict_avp_data data = {
+			2529,	/* Code */
+			10415,	/* Vendor */
+			"UTRAN-GANSS-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LRR-Flags, Unsigned32, code 2530, section 7.4.35                 */
+	{
+		struct dict_avp_data data = {
+			2530,	/* Code */
+			10415,	/* Vendor */
+			"LRR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Reference-Number, OctetString, code 2531, section 7.4.37     */
+	{
+		struct dict_avp_data data = {
+			2531,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Reference-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Deferred-Location-Type, Unsigned32, code 2532, section 7.4.36    */
+	{
+		struct dict_avp_data data = {
+			2532,	/* Code */
+			10415,	/* Vendor */
+			"Deferred-Location-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Area-Event-Info, Grouped, code 2533, section 7.4.38              */
+	{
+		struct dict_avp_data data = {
+			2533,	/* Code */
+			10415,	/* Vendor */
+			"Area-Event-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Area-Definition, Grouped, code 2534, section 7.4.39              */
+	{
+		struct dict_avp_data data = {
+			2534,	/* Code */
+			10415,	/* Vendor */
+			"Area-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Area, Grouped, code 2535, section 7.4.40                         */
+	{
+		struct dict_avp_data data = {
+			2535,	/* Code */
+			10415,	/* Vendor */
+			"Area",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Area-Type, Unsigned32, code 2536, section 7.4.41                 */
+	{
+		struct dict_avp_data data = {
+			2536,	/* Code */
+			10415,	/* Vendor */
+			"Area-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Area-Identification, Grouped, code 2537, section 7.4.42          */
+	{
+		struct dict_avp_data data = {
+			2537,	/* Code */
+			10415,	/* Vendor */
+			"Area-Identification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Occurrence-Info, Enumerated, code 2538, section 7.4.43           */
+	{
+		struct dict_avp_data data = {
+			2538,	/* Code */
+			10415,	/* Vendor */
+			"Occurrence-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Occurrence-Info)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Interval-Time, Unsigned32, code 2539, section 7.4.44             */
+	{
+		struct dict_avp_data data = {
+			2539,	/* Code */
+			10415,	/* Vendor */
+			"Interval-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Periodic-LDR-Information, Grouped, code 2540, section 7.4.45     */
+	{
+		struct dict_avp_data data = {
+			2540,	/* Code */
+			10415,	/* Vendor */
+			"Periodic-LDR-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Amount, Unsigned32, code 2541, section 7.4.46          */
+	{
+		struct dict_avp_data data = {
+			2541,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Amount",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Interval, Unsigned32, code 2542, section 7.4.47        */
+	{
+		struct dict_avp_data data = {
+			2542,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-PLMN-List, Grouped, code 2543, section 7.4.48          */
+	{
+		struct dict_avp_data data = {
+			2543,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-PLMN-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PLMN-ID-List, Grouped, code 2544, section 7.4.49                 */
+	{
+		struct dict_avp_data data = {
+			2544,	/* Code */
+			10415,	/* Vendor */
+			"PLMN-ID-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PLR-Flags, Unsigned32, code 2545, section 7.4.52                 */
+	{
+		struct dict_avp_data data = {
+			2545,	/* Code */
+			10415,	/* Vendor */
+			"PLR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PLA-Flags, Unsigned32, code 2546, section 7.4.53                 */
+	{
+		struct dict_avp_data data = {
+			2546,	/* Code */
+			10415,	/* Vendor */
+			"PLA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Deferred-MT-LR-Data, Grouped, code 2547, section 7.4.54          */
+	{
+		struct dict_avp_data data = {
+			2547,	/* Code */
+			10415,	/* Vendor */
+			"Deferred-MT-LR-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Termination-Cause, Unsigned32, code 2548, section 7.4.55         */
+	{
+		struct dict_avp_data data = {
+			2548,	/* Code */
+			10415,	/* Vendor */
+			"Termination-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LRA-Flags, Unsigned32, code 2549, section 7.4.56                 */
+	{
+		struct dict_avp_data data = {
+			2549,	/* Code */
+			10415,	/* Vendor */
+			"LRA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Periodic-Location-Support-Indicator, Enumerated, code 2550, section 7.4.50 */
+	{
+		struct dict_avp_data data = {
+			2550,	/* Code */
+			10415,	/* Vendor */
+			"Periodic-Location-Support-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Periodic-Location-Support-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Prioritized-List-Indicator, Enumerated, code 2551, section 7.4.51 */
+	{
+		struct dict_avp_data data = {
+			2551,	/* Code */
+			10415,	/* Vendor */
+			"Prioritized-List-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Prioritized-List-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ESMLC-Cell-Info, Grouped, code 2552, section 7.4.57              */
+	{
+		struct dict_avp_data data = {
+			2552,	/* Code */
+			10415,	/* Vendor */
+			"ESMLC-Cell-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Cell-Portion-ID, Unsigned32, code 2553, section 7.4.58           */
+	{
+		struct dict_avp_data data = {
+			2553,	/* Code */
+			10415,	/* Vendor */
+			"Cell-Portion-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 1xRTT-RCID, OctetString, code 2554, section 7.4.59               */
+	{
+		struct dict_avp_data data = {
+			2554,	/* Code */
+			10415,	/* Vendor */
+			"1xRTT-RCID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Delayed-Location-Reporting-Data, Grouped, code 2555, section 7.4.60 */
+	{
+		struct dict_avp_data data = {
+			2555,	/* Code */
+			10415,	/* Vendor */
+			"Delayed-Location-Reporting-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Civic-Address, UTF8String, code 2556, section 7.4.61             */
+	{
+		struct dict_avp_data data = {
+			2556,	/* Code */
+			10415,	/* Vendor */
+			"Civic-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Barometric-Pressure, Unsigned32, code 2557, section 7.4.62       */
+	{
+		struct dict_avp_data data = {
+			2557,	/* Code */
+			10415,	/* Vendor */
+			"Barometric-Pressure",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTRAN-Additional-Positioning-Data, OctetString, code 2558, section 7.4.63 */
+	{
+		struct dict_avp_data data = {
+			2558,	/* Code */
+			10415,	/* Vendor */
+			"UTRAN-Additional-Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Motion-Event-Info, Grouped, code 2559, section 7.4.64            */
+	{
+		struct dict_avp_data data = {
+			2559,	/* Code */
+			10415,	/* Vendor */
+			"Motion-Event-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Linear-Distance, Unsigned32, code 2560, section 7.4.65           */
+	{
+		struct dict_avp_data data = {
+			2560,	/* Code */
+			10415,	/* Vendor */
+			"Linear-Distance",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Interval, Unsigned32, code 2561, section 7.4.66          */
+	{
+		struct dict_avp_data data = {
+			2561,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Sampling-Interval, Unsigned32, code 2562, section 7.4.67         */
+	{
+		struct dict_avp_data data = {
+			2562,	/* Code */
+			10415,	/* Vendor */
+			"Sampling-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Duration, Unsigned32, code 2563, section 7.4.68        */
+	{
+		struct dict_avp_data data = {
+			2563,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Duration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Location-Requirements, Unsigned32, code 2564, section 7.4.69 */
+	{
+		struct dict_avp_data data = {
+			2564,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Location-Requirements",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Additional-Area, Grouped, code 2565, section 7.4.70              */
+	{
+		struct dict_avp_data data = {
+			2565,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Area",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.173 V15.0.0 (2018-06)                                 */
+	/* Location Services (LCS);                                         */
+	/* Diameter-based SLh interface for Control Plane LCS               */
+	/*                                                                  */
+	/* From 3GPP 29173-f00.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.173 Table 6.4.1/1: SLh specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* LMSI, OctetString, code 2400, section 6.4.2                      */
+	{
+		struct dict_avp_data data = {
+			2400,	/* Code */
+			10415,	/* Vendor */
+			"LMSI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Serving-Node, Grouped, code 2401, section 6.4.3                  */
+	{
+		struct dict_avp_data data = {
+			2401,	/* Code */
+			10415,	/* Vendor */
+			"Serving-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MME-Name, DiameterIdentity, code 2402, section 6.4.4             */
+	{
+		struct dict_avp_data data = {
+			2402,	/* Code */
+			10415,	/* Vendor */
+			"MME-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* MSC-Number, OctetString, code 2403, section 6.4.5                */
+	{
+		struct dict_avp_data data = {
+			2403,	/* Code */
+			10415,	/* Vendor */
+			"MSC-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Capabilities-Sets, Unsigned32, code 2404, section 6.4.6      */
+	{
+		struct dict_avp_data data = {
+			2404,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Capabilities-Sets",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GMLC-Address, Address, code 2405, section 6.4.7                  */
+	{
+		struct dict_avp_data data = {
+			2405,	/* Code */
+			10415,	/* Vendor */
+			"GMLC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Additional-Serving-Node, Grouped, code 2406, section 6.4.8       */
+	{
+		struct dict_avp_data data = {
+			2406,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Serving-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PPR-Address, Address, code 2407, section 6.4.9                   */
+	{
+		struct dict_avp_data data = {
+			2407,	/* Code */
+			10415,	/* Vendor */
+			"PPR-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* MME-Realm, DiameterIdentity, code 2408, section 6.4.12           */
+	{
+		struct dict_avp_data data = {
+			2408,	/* Code */
+			10415,	/* Vendor */
+			"MME-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* SGSN-Name, DiameterIdentity, code 2409, section 6.4.13           */
+	{
+		struct dict_avp_data data = {
+			2409,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* SGSN-Realm, DiameterIdentity, code 2410, section 6.4.14          */
+	{
+		struct dict_avp_data data = {
+			2410,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* RIA-Flags, Unsigned32, code 2411, section 6.4.15                 */
+	{
+		struct dict_avp_data data = {
+			2411,	/* Code */
+			10415,	/* Vendor */
+			"RIA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.209 V6.8.0 (2011-09)                                  */
+	/* Policy control over Gq interface                                 */
+	/*                                                                  */
+	/* From 3GPP 29209-680.doc                                          */
+	/*                                                                  */
+	/* Replaced by 3GPP TS 29.214.                                      */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.209 Table 6.5.1: Gq specific Diameter AVPs            */
+	/* Note: Only AVPs not provided by 3GPP TS 29.214.                  */
+	/*==================================================================*/
+
+	/* Authorization-Token, OctetString, code 506, section 6.5.7        */
+	{
+		struct dict_avp_data data = {
+			506,	/* Code */
+			10415,	/* Vendor */
+			"Authorization-Token",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flow-Grouping, Grouped, code 508, section 6.5.9                  */
+	{
+		struct dict_avp_data data = {
+			508,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Grouping",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.210 V6.7.0 (2006-12)                                  */
+	/* Charging rule provisioning over Gx interface                     */
+	/*                                                                  */
+	/* From 3GPP 29210-670.doc                                          */
+	/*                                                                  */
+	/* Replaced by 3GPP TS 29.212.                                      */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.210 Table 5.2: Gx specific Diameter AVPs              */
+	/* Note: Only AVPs not provided by 3GPP TS 29.212.                  */
+	/*==================================================================*/
+
+	/* PDP-Session-Operation, Enumerated, code 1015, section 5.2.21     */
+	{
+		struct dict_avp_data data = {
+			1015,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Session-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Session-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 V15.9.0 (2019-12)                                 */
+	/* Policy and Charging Control (PCC); Reference points              */
+	/*                                                                  */
+	/* From 3GPP 29212-f90.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 Table 5.3.0.1: Gx specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Change-1.4.0: ADC-Revalidation-Time (2801) Time removed in 3GPP TS 29.212 V12.1.0 (2013-06). */
+
+	/* Note: Name conflict with 3GPP TS 32.299 3GPP-PS-Data-Off-Status (4406). */
+	/* 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847). */
+	/* 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406). */
+	/* 3GPP-PS-Data-Off-Status, Enumerated, code 2847, section 5.3.133  */
+	{
+		struct dict_avp_data data = {
+			2847,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-PS-Data-Off-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PS-Data-Off-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Access-Availability-Change-Reason, Unsigned32, code 2833, section 5.3.121 */
+	{
+		struct dict_avp_data data = {
+			2833,	/* Code */
+			10415,	/* Vendor */
+			"Access-Availability-Change-Reason",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Network-Charging-Identifier-Gx, Grouped, code 1022, section 5.3.22 */
+	{
+		struct dict_avp_data data = {
+			1022,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Charging-Identifier-Gx",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Allocation-Retention-Priority, Grouped, code 1034, section 5.3.32 */
+	{
+		struct dict_avp_data data = {
+			1034,	/* Code */
+			10415,	/* Vendor */
+			"Allocation-Retention-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AN-GW-Address, Address, code 1050, section 5.3.49                */
+	{
+		struct dict_avp_data data = {
+			1050,	/* Code */
+			10415,	/* Vendor */
+			"AN-GW-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* AN-GW-Status, Enumerated, code 2811, section 5.3.100             */
+	{
+		struct dict_avp_data data = {
+			2811,	/* Code */
+			10415,	/* Vendor */
+			"AN-GW-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AN-GW-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* APN-Aggregate-Max-Bitrate-DL, Unsigned32, code 1040, section 5.3.39 */
+	{
+		struct dict_avp_data data = {
+			1040,	/* Code */
+			10415,	/* Vendor */
+			"APN-Aggregate-Max-Bitrate-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Aggregate-Max-Bitrate-UL, Unsigned32, code 1041, section 5.3.40 */
+	{
+		struct dict_avp_data data = {
+			1041,	/* Code */
+			10415,	/* Vendor */
+			"APN-Aggregate-Max-Bitrate-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Application-Detection-Information, Grouped, code 1098, section 5.3.91 */
+	{
+		struct dict_avp_data data = {
+			1098,	/* Code */
+			10415,	/* Vendor */
+			"Application-Detection-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Bearer-Control-Mode, Enumerated, code 1023, section 5.3.23       */
+	{
+		struct dict_avp_data data = {
+			1023,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Control-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Control-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Bearer-Identifier, OctetString, code 1020, section 5.3.20        */
+	{
+		struct dict_avp_data data = {
+			1020,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Bearer-Operation, Enumerated, code 1021, section 5.3.21          */
+	{
+		struct dict_avp_data data = {
+			1021,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Bearer-Usage, Enumerated, code 1000, section 5.3.1               */
+	{
+		struct dict_avp_data data = {
+			1000,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Usage)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Charging-Correlation-Indicator, Enumerated, code 1073, section 5.3.67 */
+	{
+		struct dict_avp_data data = {
+			1073,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Correlation-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Correlation-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Charging-Rule-Base-Name, UTF8String, code 1004, section 5.3.5    */
+	{
+		struct dict_avp_data data = {
+			1004,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Base-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Charging-Rule-Definition, Grouped, code 1003, section 5.3.4      */
+	{
+		struct dict_avp_data data = {
+			1003,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Rule-Install, Grouped, code 1001, section 5.3.2         */
+	{
+		struct dict_avp_data data = {
+			1001,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Install",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Rule-Name, OctetString, code 1005, section 5.3.6        */
+	{
+		struct dict_avp_data data = {
+			1005,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Rule-Remove, Grouped, code 1002, section 5.3.3          */
+	{
+		struct dict_avp_data data = {
+			1002,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Remove",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Rule-Report, Grouped, code 1018, section 5.3.18         */
+	{
+		struct dict_avp_data data = {
+			1018,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Rule-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CoA-Information, Grouped, code 1039, section 5.3.37              */
+	{
+		struct dict_avp_data data = {
+			1039,	/* Code */
+			10415,	/* Vendor */
+			"CoA-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CoA-IP-Address, Address, code 1035, section 5.3.33               */
+	{
+		struct dict_avp_data data = {
+			1035,	/* Code */
+			10415,	/* Vendor */
+			"CoA-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Conditional-APN-Aggregate-Max-Bitrate, Grouped, code 2818, section 5.3.105 */
+	{
+		struct dict_avp_data data = {
+			2818,	/* Code */
+			10415,	/* Vendor */
+			"Conditional-APN-Aggregate-Max-Bitrate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Conditional-Policy-Information, Grouped, code 2840, section 5.3.128 */
+	{
+		struct dict_avp_data data = {
+			2840,	/* Code */
+			10415,	/* Vendor */
+			"Conditional-Policy-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Credit-Management-Status, Unsigned32, code 1082, section 5.3.102 */
+	{
+		struct dict_avp_data data = {
+			1082,	/* Code */
+			10415,	/* Vendor */
+			"Credit-Management-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CSG-Information-Reporting, Enumerated, code 1071, section 5.3.64 */
+	{
+		struct dict_avp_data data = {
+			1071,	/* Code */
+			10415,	/* Vendor */
+			"CSG-Information-Reporting",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Information-Reporting)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Default-Access, Enumerated, code 2829, section 5.3.120           */
+	{
+		struct dict_avp_data data = {
+			2829,	/* Code */
+			10415,	/* Vendor */
+			"Default-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Default-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Default-Bearer-Indication, Enumerated, code 2844, section 5.3.132 */
+	{
+		struct dict_avp_data data = {
+			2844,	/* Code */
+			10415,	/* Vendor */
+			"Default-Bearer-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Default-Bearer-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Default-EPS-Bearer-QoS, Grouped, code 1049, section 5.3.48       */
+	{
+		struct dict_avp_data data = {
+			1049,	/* Code */
+			10415,	/* Vendor */
+			"Default-EPS-Bearer-QoS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Default-QoS-Information, Grouped, code 2816, section 5.3.103     */
+	{
+		struct dict_avp_data data = {
+			2816,	/* Code */
+			10415,	/* Vendor */
+			"Default-QoS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Default-QoS-Name, UTF8String, code 2817, section 5.3.104         */
+	{
+		struct dict_avp_data data = {
+			2817,	/* Code */
+			10415,	/* Vendor */
+			"Default-QoS-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Event-Report-Indication, Grouped, code 1033, section 5.3.30      */
+	{
+		struct dict_avp_data data = {
+			1033,	/* Code */
+			10415,	/* Vendor */
+			"Event-Report-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Trigger, Enumerated, code 1006, section 5.3.7              */
+	{
+		struct dict_avp_data data = {
+			1006,	/* Code */
+			10415,	/* Vendor */
+			"Event-Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Event-Trigger)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Execution-Time, Time, code 2839, section 5.3.127                 */
+	{
+		struct dict_avp_data data = {
+			2839,	/* Code */
+			10415,	/* Vendor */
+			"Execution-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Extended-APN-AMBR-DL, Unsigned32, code 2848, section 5.3.134     */
+	{
+		struct dict_avp_data data = {
+			2848,	/* Code */
+			10415,	/* Vendor */
+			"Extended-APN-AMBR-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-APN-AMBR-UL, Unsigned32, code 2849, section 5.3.135     */
+	{
+		struct dict_avp_data data = {
+			2849,	/* Code */
+			10415,	/* Vendor */
+			"Extended-APN-AMBR-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-GBR-DL, Unsigned32, code 2850, section 5.3.136          */
+	{
+		struct dict_avp_data data = {
+			2850,	/* Code */
+			10415,	/* Vendor */
+			"Extended-GBR-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-GBR-UL, Unsigned32, code 2851, section 5.3.137          */
+	{
+		struct dict_avp_data data = {
+			2851,	/* Code */
+			10415,	/* Vendor */
+			"Extended-GBR-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flow-Direction, Enumerated, code 1080, section 5.3.65            */
+	{
+		struct dict_avp_data data = {
+			1080,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Direction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Direction)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Flow-Information, Grouped, code 1058, section 5.3.53             */
+	{
+		struct dict_avp_data data = {
+			1058,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flow-Label, OctetString, code 1057, section 5.3.52               */
+	{
+		struct dict_avp_data data = {
+			1057,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Label",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Fixed-User-Location-Info, Grouped, code 2825, section 5.3.112    */
+	{
+		struct dict_avp_data data = {
+			2825,	/* Code */
+			10415,	/* Vendor */
+			"Fixed-User-Location-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Guaranteed-Bitrate-DL, Unsigned32, code 1025, section 5.3.25     */
+	{
+		struct dict_avp_data data = {
+			1025,	/* Code */
+			10415,	/* Vendor */
+			"Guaranteed-Bitrate-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Guaranteed-Bitrate-UL, Unsigned32, code 1026, section 5.3.26     */
+	{
+		struct dict_avp_data data = {
+			1026,	/* Code */
+			10415,	/* Vendor */
+			"Guaranteed-Bitrate-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: HeNB-BBF-FQDN (2803) UTF8String removed in 3GPP TS 29.212 V11.8.0 (2013-03). */
+
+	/* HeNB-Local-IP-Address, Address, code 2804, section 5.3.95        */
+	{
+		struct dict_avp_data data = {
+			2804,	/* Code */
+			10415,	/* Vendor */
+			"HeNB-Local-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* IP-CAN-Session-Charging-Scope, Enumerated, code 2827, section 5.3.114 */
+	{
+		struct dict_avp_data data = {
+			2827,	/* Code */
+			10415,	/* Vendor */
+			"IP-CAN-Session-Charging-Scope",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Session-Charging-Scope)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* IP-CAN-Type, Enumerated, code 1027, section 5.3.27               */
+	{
+		struct dict_avp_data data = {
+			1027,	/* Code */
+			10415,	/* Vendor */
+			"IP-CAN-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-DL (2852)         */
+	/* incorrectly lists type as Unsigned32 instead of Float32.         */
+	/* 3GPP TS 29.212 clause 5.3.138 uses Float32.                      */
+	/*                                                                  */
+	/* Fix: Max-PLR-DL (2852) type changed from Float32 to Unsigned32.  */
+	/* Max-PLR-DL, Unsigned32, code 2852, section 5.3.138               */
+	{
+		struct dict_avp_data data = {
+			2852,	/* Code */
+			10415,	/* Vendor */
+			"Max-PLR-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-UL (2853)         */
+	/* incorrectly lists type as Unsigned32 instead of Float32.         */
+	/* 3GPP TS 29.212 clause 5.3.139 uses Float32.                      */
+	/*                                                                  */
+	/* Fix: Max-PLR-UL (2853) type changed from Float32 to Unsigned32.  */
+	/* Max-PLR-UL, Unsigned32, code 2853, section 5.3.139               */
+	{
+		struct dict_avp_data data = {
+			2853,	/* Code */
+			10415,	/* Vendor */
+			"Max-PLR-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Metering-Method, Enumerated, code 1007, section 5.3.8            */
+	{
+		struct dict_avp_data data = {
+			1007,	/* Code */
+			10415,	/* Vendor */
+			"Metering-Method",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Metering-Method)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Monitoring-Flags, Unsigned32, code 2828, section 5.3.115         */
+	{
+		struct dict_avp_data data = {
+			2828,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Key, OctetString, code 1066, section 5.3.59           */
+	{
+		struct dict_avp_data data = {
+			1066,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Key",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Mute-Notification, Enumerated, code 2809, section 5.3.98         */
+	{
+		struct dict_avp_data data = {
+			2809,	/* Code */
+			10415,	/* Vendor */
+			"Mute-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Mute-Notification)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Monitoring-Time, Time, code 2810, section 5.3.99                 */
+	{
+		struct dict_avp_data data = {
+			2810,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* NBIFOM-Mode, Enumerated, code 2830, section 5.3.117              */
+	{
+		struct dict_avp_data data = {
+			2830,	/* Code */
+			10415,	/* Vendor */
+			"NBIFOM-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NBIFOM-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* NBIFOM-Support, Enumerated, code 2831, section 5.3.116           */
+	{
+		struct dict_avp_data data = {
+			2831,	/* Code */
+			10415,	/* Vendor */
+			"NBIFOM-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NBIFOM-Support)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* NetLoc-Access-Support, Unsigned32, code 2824, section 5.3.111    */
+	{
+		struct dict_avp_data data = {
+			2824,	/* Code */
+			10415,	/* Vendor */
+			"NetLoc-Access-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Network-Request-Support, Enumerated, code 1024, section 5.3.24   */
+	{
+		struct dict_avp_data data = {
+			1024,	/* Code */
+			10415,	/* Vendor */
+			"Network-Request-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Request-Support)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Offline, Enumerated, code 1008, section 5.3.9                    */
+	{
+		struct dict_avp_data data = {
+			1008,	/* Code */
+			10415,	/* Vendor */
+			"Offline",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Offline)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Online, Enumerated, code 1009, section 5.3.10                    */
+	{
+		struct dict_avp_data data = {
+			1009,	/* Code */
+			10415,	/* Vendor */
+			"Online",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Packet-Filter-Content, IPFilterRule, code 1059, section 5.3.54   */
+	{
+		struct dict_avp_data data = {
+			1059,	/* Code */
+			10415,	/* Vendor */
+			"Packet-Filter-Content",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
+	};
+
+	/* Packet-Filter-Identifier, OctetString, code 1060, section 5.3.55 */
+	{
+		struct dict_avp_data data = {
+			1060,	/* Code */
+			10415,	/* Vendor */
+			"Packet-Filter-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Packet-Filter-Information, Grouped, code 1061, section 5.3.56    */
+	{
+		struct dict_avp_data data = {
+			1061,	/* Code */
+			10415,	/* Vendor */
+			"Packet-Filter-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Packet-Filter-Operation, Enumerated, code 1062, section 5.3.57   */
+	{
+		struct dict_avp_data data = {
+			1062,	/* Code */
+			10415,	/* Vendor */
+			"Packet-Filter-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Packet-Filter-Usage, Enumerated, code 1072, section 5.3.66       */
+	{
+		struct dict_avp_data data = {
+			1072,	/* Code */
+			10415,	/* Vendor */
+			"Packet-Filter-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Usage)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PCC-Rule-Status, Enumerated, code 1019, section 5.3.19           */
+	{
+		struct dict_avp_data data = {
+			1019,	/* Code */
+			10415,	/* Vendor */
+			"PCC-Rule-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PCC-Rule-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.212 Table 5.3.0.1 row PDN-Connection-ID (1065)  */
+	/* missing M, assume MUST NOT.                                      */
+	/*                                                                  */
+	/* Change-1.4.0: PDN-Connection-ID (1065) flag M MUST NOT.          */
+	/* PDN-Connection-ID, OctetString, code 1065, section 5.3.58        */
+	{
+		struct dict_avp_data data = {
+			1065,	/* Code */
+			10415,	/* Vendor */
+			"PDN-Connection-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PRA-Install, Grouped, code 2845, section 5.3.130                 */
+	{
+		struct dict_avp_data data = {
+			2845,	/* Code */
+			10415,	/* Vendor */
+			"PRA-Install",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PRA-Remove, Grouped, code 2846, section 5.3.131                  */
+	{
+		struct dict_avp_data data = {
+			2846,	/* Code */
+			10415,	/* Vendor */
+			"PRA-Remove",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Precedence, Unsigned32, code 1010, section 5.3.11                */
+	{
+		struct dict_avp_data data = {
+			1010,	/* Code */
+			10415,	/* Vendor */
+			"Precedence",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Pre-emption-Capability, Enumerated, code 1047, section 5.3.46    */
+	{
+		struct dict_avp_data data = {
+			1047,	/* Code */
+			10415,	/* Vendor */
+			"Pre-emption-Capability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Capability)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Pre-emption-Vulnerability, Enumerated, code 1048, section 5.3.47 */
+	{
+		struct dict_avp_data data = {
+			1048,	/* Code */
+			10415,	/* Vendor */
+			"Pre-emption-Vulnerability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Vulnerability)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Presence-Reporting-Area-Elements-List, OctetString, code 2820, section 5.3.107 */
+	{
+		struct dict_avp_data data = {
+			2820,	/* Code */
+			10415,	/* Vendor */
+			"Presence-Reporting-Area-Elements-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Presence-Reporting-Area-Identifier, OctetString, code 2821, section 5.3.108 */
+	{
+		struct dict_avp_data data = {
+			2821,	/* Code */
+			10415,	/* Vendor */
+			"Presence-Reporting-Area-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Presence-Reporting-Area-Information, Grouped, code 2822, section 5.3.109 */
+	{
+		struct dict_avp_data data = {
+			2822,	/* Code */
+			10415,	/* Vendor */
+			"Presence-Reporting-Area-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Presence-Reporting-Area-Node, Unsigned32, code 2855, section 5.3.141 */
+	{
+		struct dict_avp_data data = {
+			2855,	/* Code */
+			10415,	/* Vendor */
+			"Presence-Reporting-Area-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Presence-Reporting-Area-Status, Unsigned32, code 2823, section 5.3.110 */
+	{
+		struct dict_avp_data data = {
+			2823,	/* Code */
+			10415,	/* Vendor */
+			"Presence-Reporting-Area-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Priority-Level, Unsigned32, code 1046, section 5.3.45            */
+	{
+		struct dict_avp_data data = {
+			1046,	/* Code */
+			10415,	/* Vendor */
+			"Priority-Level",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.212 Table 5.3.0.1 row PS-to-CS-Session-Continuity (1099) */
+	/* missing M, assume MUST NOT.                                      */
+	/*                                                                  */
+	/* Change-1.4.0: PS-to-CS-Session-Continuity (1099) flag M MUST NOT. */
+	/* PS-to-CS-Session-Continuity, Enumerated, code 1099, section 5.3.84 */
+	{
+		struct dict_avp_data data = {
+			1099,	/* Code */
+			10415,	/* Vendor */
+			"PS-to-CS-Session-Continuity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-to-CS-Session-Continuity)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* QoS-Class-Identifier, Enumerated, code 1028, section 5.3.17      */
+	{
+		struct dict_avp_data data = {
+			1028,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Class-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Class-Identifier)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* QoS-Information, Grouped, code 1016, section 5.3.16              */
+	{
+		struct dict_avp_data data = {
+			1016,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* QoS-Negotiation, Enumerated, code 1029, section 5.3.28           */
+	{
+		struct dict_avp_data data = {
+			1029,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Negotiation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Negotiation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* QoS-Upgrade, Enumerated, code 1030, section 5.3.29               */
+	{
+		struct dict_avp_data data = {
+			1030,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Upgrade",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Upgrade)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* RAN-NAS-Release-Cause, OctetString, code 2819, section 5.3.106   */
+	{
+		struct dict_avp_data data = {
+			2819,	/* Code */
+			10415,	/* Vendor */
+			"RAN-NAS-Release-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAN-Rule-Support, Unsigned32, code 2832, section 5.3.122         */
+	{
+		struct dict_avp_data data = {
+			2832,	/* Code */
+			10415,	/* Vendor */
+			"RAN-Rule-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAT-Type, Enumerated, code 1032, section 5.3.31                  */
+	{
+		struct dict_avp_data data = {
+			1032,	/* Code */
+			10415,	/* Vendor */
+			"RAT-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RAT-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Redirect-Information, Grouped, code 1085, section 5.3.82         */
+	{
+		struct dict_avp_data data = {
+			1085,	/* Code */
+			10415,	/* Vendor */
+			"Redirect-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Redirect-Support, Enumerated, code 1086, section 5.3.83          */
+	{
+		struct dict_avp_data data = {
+			1086,	/* Code */
+			10415,	/* Vendor */
+			"Redirect-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Redirect-Support)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Removal-Of-Access, Enumerated, code 2842, section 5.3.126        */
+	{
+		struct dict_avp_data data = {
+			2842,	/* Code */
+			10415,	/* Vendor */
+			"Removal-Of-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Removal-Of-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Reporting-Level, Enumerated, code 1011, section 5.3.12           */
+	{
+		struct dict_avp_data data = {
+			1011,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Level",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Level)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Resource-Allocation-Notification, Enumerated, code 1063, section 5.3.50 */
+	{
+		struct dict_avp_data data = {
+			1063,	/* Code */
+			10415,	/* Vendor */
+			"Resource-Allocation-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Allocation-Notification)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Resource-Release-Notification, Enumerated, code 2841, section 5.3.125 */
+	{
+		struct dict_avp_data data = {
+			2841,	/* Code */
+			10415,	/* Vendor */
+			"Resource-Release-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Release-Notification)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Revalidation-Time, Time, code 1042, section 5.3.41               */
+	{
+		struct dict_avp_data data = {
+			1042,	/* Code */
+			10415,	/* Vendor */
+			"Revalidation-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Routing-Filter, Grouped, code 1078, section 5.3.72               */
+	{
+		struct dict_avp_data data = {
+			1078,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Filter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-IP-Address, Address, code 1079, section 5.3.73           */
+	{
+		struct dict_avp_data data = {
+			1079,	/* Code */
+			10415,	/* Vendor */
+			"Routing-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Routing-Rule-Definition, Grouped, code 1076, section 5.3.70      */
+	{
+		struct dict_avp_data data = {
+			1076,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Rule-Identifier, OctetString, code 1077, section 5.3.71  */
+	{
+		struct dict_avp_data data = {
+			1077,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Rule-Install, Grouped, code 1081, section 5.3.68         */
+	{
+		struct dict_avp_data data = {
+			1081,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Install",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Rule-Remove, Grouped, code 1075, section 5.3.69          */
+	{
+		struct dict_avp_data data = {
+			1075,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Remove",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Rule-Failure-Code, Unsigned32, code 2834, section 5.3.119 */
+	{
+		struct dict_avp_data data = {
+			2834,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Failure-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Rule-Report, Grouped, code 2835, section 5.3.118         */
+	{
+		struct dict_avp_data data = {
+			2835,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Rule-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Rule-Activation-Time, Time, code 1043, section 5.3.42            */
+	{
+		struct dict_avp_data data = {
+			1043,	/* Code */
+			10415,	/* Vendor */
+			"Rule-Activation-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Rule-Deactivation-Time, Time, code 1044, section 5.3.43          */
+	{
+		struct dict_avp_data data = {
+			1044,	/* Code */
+			10415,	/* Vendor */
+			"Rule-Deactivation-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Rule-Failure-Code, Enumerated, code 1031, section 5.3.38         */
+	{
+		struct dict_avp_data data = {
+			1031,	/* Code */
+			10415,	/* Vendor */
+			"Rule-Failure-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rule-Failure-Code)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Security-Parameter-Index, OctetString, code 1056, section 5.3.51 */
+	{
+		struct dict_avp_data data = {
+			1056,	/* Code */
+			10415,	/* Vendor */
+			"Security-Parameter-Index",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Session-Release-Cause, Enumerated, code 1045, section 5.3.44     */
+	{
+		struct dict_avp_data data = {
+			1045,	/* Code */
+			10415,	/* Vendor */
+			"Session-Release-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Release-Cause)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* TCP-Source-Port, Unsigned32, code 2843, section 5.3.129          */
+	{
+		struct dict_avp_data data = {
+			2843,	/* Code */
+			10415,	/* Vendor */
+			"TCP-Source-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TDF-Information, Grouped, code 1087, section 5.3.78              */
+	{
+		struct dict_avp_data data = {
+			1087,	/* Code */
+			10415,	/* Vendor */
+			"TDF-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TDF-Application-Identifier, OctetString, code 1088, section 5.3.77 */
+	{
+		struct dict_avp_data data = {
+			1088,	/* Code */
+			10415,	/* Vendor */
+			"TDF-Application-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TDF-Application-Instance-Identifier, OctetString, code 2802, section 5.3.92 */
+	{
+		struct dict_avp_data data = {
+			2802,	/* Code */
+			10415,	/* Vendor */
+			"TDF-Application-Instance-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TDF-Destination-Host, DiameterIdentity, code 1089, section 5.3.80 */
+	{
+		struct dict_avp_data data = {
+			1089,	/* Code */
+			10415,	/* Vendor */
+			"TDF-Destination-Host",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* TDF-Destination-Realm, DiameterIdentity, code 1090, section 5.3.79 */
+	{
+		struct dict_avp_data data = {
+			1090,	/* Code */
+			10415,	/* Vendor */
+			"TDF-Destination-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* TDF-IP-Address, Address, code 1091, section 5.3.81               */
+	{
+		struct dict_avp_data data = {
+			1091,	/* Code */
+			10415,	/* Vendor */
+			"TDF-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* TFT-Filter, IPFilterRule, code 1012, section 5.3.13              */
+	{
+		struct dict_avp_data data = {
+			1012,	/* Code */
+			10415,	/* Vendor */
+			"TFT-Filter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
+	};
+
+	/* TFT-Packet-Filter-Information, Grouped, code 1013, section 5.3.14 */
+	{
+		struct dict_avp_data data = {
+			1013,	/* Code */
+			10415,	/* Vendor */
+			"TFT-Packet-Filter-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Traffic-Steering-Policy-Identifier-DL, OctetString, code 2836, section 5.3.123 */
+	{
+		struct dict_avp_data data = {
+			2836,	/* Code */
+			10415,	/* Vendor */
+			"Traffic-Steering-Policy-Identifier-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Traffic-Steering-Policy-Identifier-UL, OctetString, code 2837, section 5.3.124 */
+	{
+		struct dict_avp_data data = {
+			2837,	/* Code */
+			10415,	/* Vendor */
+			"Traffic-Steering-Policy-Identifier-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ToS-Traffic-Class, OctetString, code 1014, section 5.3.15        */
+	{
+		struct dict_avp_data data = {
+			1014,	/* Code */
+			10415,	/* Vendor */
+			"ToS-Traffic-Class",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Tunnel-Header-Filter, IPFilterRule, code 1036, section 5.3.34    */
+	{
+		struct dict_avp_data data = {
+			1036,	/* Code */
+			10415,	/* Vendor */
+			"Tunnel-Header-Filter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
+	};
+
+	/* Tunnel-Header-Length, Unsigned32, code 1037, section 5.3.35      */
+	{
+		struct dict_avp_data data = {
+			1037,	/* Code */
+			10415,	/* Vendor */
+			"Tunnel-Header-Length",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Tunnel-Information, Grouped, code 1038, section 5.3.36           */
+	{
+		struct dict_avp_data data = {
+			1038,	/* Code */
+			10415,	/* Vendor */
+			"Tunnel-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UDP-Source-Port, Unsigned32, code 2806, section 5.3.97           */
+	{
+		struct dict_avp_data data = {
+			2806,	/* Code */
+			10415,	/* Vendor */
+			"UDP-Source-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-Local-IP-Address, Address, code 2805, section 5.3.96          */
+	{
+		struct dict_avp_data data = {
+			2805,	/* Code */
+			10415,	/* Vendor */
+			"UE-Local-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* UE-Status, Unsigned32, code 2854, section 5.3.140                */
+	{
+		struct dict_avp_data data = {
+			2854,	/* Code */
+			10415,	/* Vendor */
+			"UE-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Usage-Monitoring-Information, Grouped, code 1067, section 5.3.60 */
+	{
+		struct dict_avp_data data = {
+			1067,	/* Code */
+			10415,	/* Vendor */
+			"Usage-Monitoring-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Usage-Monitoring-Level, Enumerated, code 1068, section 5.3.61    */
+	{
+		struct dict_avp_data data = {
+			1068,	/* Code */
+			10415,	/* Vendor */
+			"Usage-Monitoring-Level",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Level)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Usage-Monitoring-Report, Enumerated, code 1069, section 5.3.62   */
+	{
+		struct dict_avp_data data = {
+			1069,	/* Code */
+			10415,	/* Vendor */
+			"Usage-Monitoring-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Report)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Usage-Monitoring-Support, Enumerated, code 1070, section 5.3.63  */
+	{
+		struct dict_avp_data data = {
+			1070,	/* Code */
+			10415,	/* Vendor */
+			"Usage-Monitoring-Support",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Support)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* User-Location-Info-Time, Time, code 2812, section 5.3.101        */
+	{
+		struct dict_avp_data data = {
+			2812,	/* Code */
+			10415,	/* Vendor */
+			"User-Location-Info-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* PCSCF-Restoration-Indication, Unsigned32, code 2826, section 5.3.113 */
+	{
+		struct dict_avp_data data = {
+			2826,	/* Code */
+			10415,	/* Vendor */
+			"PCSCF-Restoration-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 Table 5a.3.0.1: Gxx specific Diameter AVPs        */
+	/*==================================================================*/
+
+	/* QoS-Rule-Install, Grouped, code 1051, section 5a.3.1             */
+	{
+		struct dict_avp_data data = {
+			1051,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Install",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* QoS-Rule-Remove, Grouped, code 1052, section 5a.3.2              */
+	{
+		struct dict_avp_data data = {
+			1052,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Remove",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* QoS-Rule-Definition, Grouped, code 1053, section 5a.3.3          */
+	{
+		struct dict_avp_data data = {
+			1053,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* QoS-Rule-Name, OctetString, code 1054, section 5a.3.4            */
+	{
+		struct dict_avp_data data = {
+			1054,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* QoS-Rule-Base-Name, UTF8String, code 1074, section 5a.3.7        */
+	{
+		struct dict_avp_data data = {
+			1074,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Base-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* QoS-Rule-Report, Grouped, code 1055, section 5a.3.5              */
+	{
+		struct dict_avp_data data = {
+			1055,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Rule-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Session-Linking-Indicator, Enumerated, code 1064, section 5a.3.6 */
+	{
+		struct dict_avp_data data = {
+			1064,	/* Code */
+			10415,	/* Vendor */
+			"Session-Linking-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Linking-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 Table 5b.3.0.1: Sd specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* Change-1.4.0: ADC-Rule-Base-Name (1095) flag M MUST.             */
+	/* ADC-Rule-Base-Name, UTF8String, code 1095, section 5b.3.4        */
+	{
+		struct dict_avp_data data = {
+			1095,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Base-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Change-1.4.0: ADC-Rule-Definition (1094) flag M MUST.            */
+	/* ADC-Rule-Definition, Grouped, code 1094, section 5b.3.3          */
+	{
+		struct dict_avp_data data = {
+			1094,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-1.4.0: ADC-Rule-Install (1092) flag M MUST.               */
+	/* ADC-Rule-Install, Grouped, code 1092, section 5b.3.1             */
+	{
+		struct dict_avp_data data = {
+			1092,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Install",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-1.4.0: ADC-Rule-Name (1096) flag M MUST.                  */
+	/* ADC-Rule-Name, OctetString, code 1096, section 5b.3.5            */
+	{
+		struct dict_avp_data data = {
+			1096,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-1.4.0: ADC-Rule-Remove (1093) flag M MUST.                */
+	/* ADC-Rule-Remove, Grouped, code 1093, section 5b.3.2              */
+	{
+		struct dict_avp_data data = {
+			1093,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Remove",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-1.4.0: ADC-Rule-Report (1097) flag M MUST.                */
+	/* ADC-Rule-Report, Grouped, code 1097, section 5b.3.6              */
+	{
+		struct dict_avp_data data = {
+			1097,	/* Code */
+			10415,	/* Vendor */
+			"ADC-Rule-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 Table 5c.3.1.1: St specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* Request-Type, Unsigned32, code 2838, section 5c.3.2              */
+	{
+		struct dict_avp_data data = {
+			2838,	/* Code */
+			10415,	/* Vendor */
+			"Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 Table E.6.3.1.1: S15 specific Diameter AVPs       */
+	/*==================================================================*/
+
+	/* CS-Service-Qos-Request-Identifier, OctetString, code 2807, section E.6.3.2 */
+	{
+		struct dict_avp_data data = {
+			2807,	/* Code */
+			10415,	/* Vendor */
+			"CS-Service-Qos-Request-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CS-Service-QoS-Request-Operation, Enumerated, code 2808, section E.6.3.3 */
+	{
+		struct dict_avp_data data = {
+			2808,	/* Code */
+			10415,	/* Vendor */
+			"CS-Service-QoS-Request-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-QoS-Request-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CS-Service-Resource-Report, Grouped, code 2813, section E.6.3.6  */
+	{
+		struct dict_avp_data data = {
+			2813,	/* Code */
+			10415,	/* Vendor */
+			"CS-Service-Resource-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CS-Service-Resource-Failure-Cause, Enumerated, code 2814, section E.6.3.5 */
+	{
+		struct dict_avp_data data = {
+			2814,	/* Code */
+			10415,	/* Vendor */
+			"CS-Service-Resource-Failure-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-Resource-Failure-Cause)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CS-Service-Resource-Result-Operation, Enumerated, code 2815, section E.6.3.4 */
+	{
+		struct dict_avp_data data = {
+			2815,	/* Code */
+			10415,	/* Vendor */
+			"CS-Service-Resource-Result-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-Resource-Result-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.214 V15.7.0 (2019-09)                                 */
+	/* Policy and Charging Control over Rx reference point              */
+	/*                                                                  */
+	/* From 3GPP 29214-f70.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.214 Table 5.3.0.1: Rx specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Abort-Cause, Enumerated, code 500, section 5.3.1                 */
+	{
+		struct dict_avp_data data = {
+			500,	/* Code */
+			10415,	/* Vendor */
+			"Abort-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Abort-Cause)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Access-Network-Charging-Address, Address, code 501, section 5.3.2 */
+	{
+		struct dict_avp_data data = {
+			501,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Charging-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Access-Network-Charging-Identifier, Grouped, code 502, section 5.3.3 */
+	{
+		struct dict_avp_data data = {
+			502,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Charging-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Network-Charging-Identifier-Value, OctetString, code 503, section 5.3.4 */
+	{
+		struct dict_avp_data data = {
+			503,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Charging-Identifier-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Acceptable-Service-Info, Grouped, code 526, section 5.3.24       */
+	{
+		struct dict_avp_data data = {
+			526,	/* Code */
+			10415,	/* Vendor */
+			"Acceptable-Service-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AF-Application-Identifier, OctetString, code 504, section 5.3.5  */
+	{
+		struct dict_avp_data data = {
+			504,	/* Code */
+			10415,	/* Vendor */
+			"AF-Application-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AF-Charging-Identifier, OctetString, code 505, section 5.3.6     */
+	{
+		struct dict_avp_data data = {
+			505,	/* Code */
+			10415,	/* Vendor */
+			"AF-Charging-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AF-Requested-Data, Unsigned32, code 551, section 5.3.50          */
+	{
+		struct dict_avp_data data = {
+			551,	/* Code */
+			10415,	/* Vendor */
+			"AF-Requested-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AF-Signalling-Protocol, Enumerated, code 529, section 5.3.26     */
+	{
+		struct dict_avp_data data = {
+			529,	/* Code */
+			10415,	/* Vendor */
+			"AF-Signalling-Protocol",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AF-Signalling-Protocol)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Application-Service-Provider-Identity, UTF8String, code 532, section 5.3.29 */
+	{
+		struct dict_avp_data data = {
+			532,	/* Code */
+			10415,	/* Vendor */
+			"Application-Service-Provider-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Codec-Data, OctetString, code 524, section 5.3.7                 */
+	{
+		struct dict_avp_data data = {
+			524,	/* Code */
+			10415,	/* Vendor */
+			"Codec-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Content-Version, Unsigned64, code 552, section 5.3.49            */
+	{
+		struct dict_avp_data data = {
+			552,	/* Code */
+			10415,	/* Vendor */
+			"Content-Version",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Max-Requested-BW-DL, Unsigned32, code 554, section 5.3.52 */
+	{
+		struct dict_avp_data data = {
+			554,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Max-Requested-BW-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Max-Requested-BW-UL, Unsigned32, code 555, section 5.3.53 */
+	{
+		struct dict_avp_data data = {
+			555,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Max-Requested-BW-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Max-Supported-BW-DL, Unsigned32, code 556, section 5.3.54 */
+	{
+		struct dict_avp_data data = {
+			556,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Max-Supported-BW-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Max-Supported-BW-UL, Unsigned32, code 557, section 5.3.55 */
+	{
+		struct dict_avp_data data = {
+			557,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Max-Supported-BW-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Min-Desired-BW-DL, Unsigned32, code 558, section 5.3.56 */
+	{
+		struct dict_avp_data data = {
+			558,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Min-Desired-BW-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Min-Desired-BW-UL, Unsigned32, code 559, section 5.3.57 */
+	{
+		struct dict_avp_data data = {
+			559,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Min-Desired-BW-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Min-Requested-BW-DL, Unsigned32, code 560, section 5.3.58 */
+	{
+		struct dict_avp_data data = {
+			560,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Min-Requested-BW-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-Min-Requested-BW-UL, Unsigned32, code 561, section 5.3.59 */
+	{
+		struct dict_avp_data data = {
+			561,	/* Code */
+			10415,	/* Vendor */
+			"Extended-Min-Requested-BW-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flow-Description, IPFilterRule, code 507, section 5.3.8          */
+	{
+		struct dict_avp_data data = {
+			507,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Description",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
+	};
+
+	/* Flow-Number, Unsigned32, code 509, section 5.3.9                 */
+	{
+		struct dict_avp_data data = {
+			509,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flows, Grouped, code 510, section 5.3.10                         */
+	{
+		struct dict_avp_data data = {
+			510,	/* Code */
+			10415,	/* Vendor */
+			"Flows",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Flow-Status, Enumerated, code 511, section 5.3.11                */
+	{
+		struct dict_avp_data data = {
+			511,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Flow-Usage, Enumerated, code 512, section 5.3.12                 */
+	{
+		struct dict_avp_data data = {
+			512,	/* Code */
+			10415,	/* Vendor */
+			"Flow-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Usage)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* GCS-Identifier, OctetString, code 538, section 5.3.36            */
+	{
+		struct dict_avp_data data = {
+			538,	/* Code */
+			10415,	/* Vendor */
+			"GCS-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content-Identifier (563) */
+	/* missing M, assume MUST NOT.                                      */
+	/*                                                                  */
+	/* Fix: IMS-Content-Identifier (563) flag M MUST NOT.               */
+	/* IMS-Content-Identifier, OctetString, code 563, section 5.3.60    */
+	{
+		struct dict_avp_data data = {
+			563,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Content-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content (564)         */
+	/* missing M, assume MUST NOT.                                      */
+	/*                                                                  */
+	/* Fix: IMS-Content (564) flag M MUST NOT.                          */
+	/* IMS-Content-Type, Enumerated, code 564, section 5.3.61           */
+	{
+		struct dict_avp_data data = {
+			564,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Content-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Content-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* IP-Domain-Id, OctetString, code 537, section 5.3.35              */
+	{
+		struct dict_avp_data data = {
+			537,	/* Code */
+			10415,	/* Vendor */
+			"IP-Domain-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Max-Requested-Bandwidth-DL, Unsigned32, code 515, section 5.3.14 */
+	{
+		struct dict_avp_data data = {
+			515,	/* Code */
+			10415,	/* Vendor */
+			"Max-Requested-Bandwidth-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Max-Requested-Bandwidth-UL, Unsigned32, code 516, section 5.3.15 */
+	{
+		struct dict_avp_data data = {
+			516,	/* Code */
+			10415,	/* Vendor */
+			"Max-Requested-Bandwidth-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Max-Supported-Bandwidth-DL, Unsigned32, code 543, section 5.3.41 */
+	{
+		struct dict_avp_data data = {
+			543,	/* Code */
+			10415,	/* Vendor */
+			"Max-Supported-Bandwidth-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Max-Supported-Bandwidth-UL, Unsigned32, code 544, section 5.3.42 */
+	{
+		struct dict_avp_data data = {
+			544,	/* Code */
+			10415,	/* Vendor */
+			"Max-Supported-Bandwidth-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MCPTT-Identifier, OctetString, code 547, section 5.3.45          */
+	{
+		struct dict_avp_data data = {
+			547,	/* Code */
+			10415,	/* Vendor */
+			"MCPTT-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MCVideo-Identifier, OctetString, code 562, section 5.3.45a       */
+	{
+		struct dict_avp_data data = {
+			562,	/* Code */
+			10415,	/* Vendor */
+			"MCVideo-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Media-Component-Description, Grouped, code 517, section 5.3.16   */
+	{
+		struct dict_avp_data data = {
+			517,	/* Code */
+			10415,	/* Vendor */
+			"Media-Component-Description",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Media-Component-Number, Unsigned32, code 518, section 5.3.17     */
+	{
+		struct dict_avp_data data = {
+			518,	/* Code */
+			10415,	/* Vendor */
+			"Media-Component-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Media-Component-Status, Unsigned32, code 549, section 5.3.48     */
+	{
+		struct dict_avp_data data = {
+			549,	/* Code */
+			10415,	/* Vendor */
+			"Media-Component-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Media-Sub-Component, Grouped, code 519, section 5.3.18           */
+	{
+		struct dict_avp_data data = {
+			519,	/* Code */
+			10415,	/* Vendor */
+			"Media-Sub-Component",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Media-Type, Enumerated, code 520, section 5.3.19                 */
+	{
+		struct dict_avp_data data = {
+			520,	/* Code */
+			10415,	/* Vendor */
+			"Media-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MPS-Identifier, OctetString, code 528, section 5.3.30            */
+	{
+		struct dict_avp_data data = {
+			528,	/* Code */
+			10415,	/* Vendor */
+			"MPS-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Min-Desired-Bandwidth-DL, Unsigned32, code 545, section 5.3.43   */
+	{
+		struct dict_avp_data data = {
+			545,	/* Code */
+			10415,	/* Vendor */
+			"Min-Desired-Bandwidth-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Min-Desired-Bandwidth-UL, Unsigned32, code 546, section 5.3.44   */
+	{
+		struct dict_avp_data data = {
+			546,	/* Code */
+			10415,	/* Vendor */
+			"Min-Desired-Bandwidth-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Min-Requested-Bandwidth-DL, Unsigned32, code 534, section 5.3.32 */
+	{
+		struct dict_avp_data data = {
+			534,	/* Code */
+			10415,	/* Vendor */
+			"Min-Requested-Bandwidth-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Min-Requested-Bandwidth-UL, Unsigned32, code 535, section 5.3.33 */
+	{
+		struct dict_avp_data data = {
+			535,	/* Code */
+			10415,	/* Vendor */
+			"Min-Requested-Bandwidth-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Priority-Sharing-Indicator, Enumerated, code 550, section 5.3.47 */
+	{
+		struct dict_avp_data data = {
+			550,	/* Code */
+			10415,	/* Vendor */
+			"Priority-Sharing-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority-Sharing-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Pre-emption-Control-Info, Unsigned32, code 553, section 5.3.51   */
+	{
+		struct dict_avp_data data = {
+			553,	/* Code */
+			10415,	/* Vendor */
+			"Pre-emption-Control-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Required-Access-Info, Enumerated, code 536, section 5.3.34       */
+	{
+		struct dict_avp_data data = {
+			536,	/* Code */
+			10415,	/* Vendor */
+			"Required-Access-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Required-Access-Info)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Retry-Interval, Unsigned32, code 541, section 5.3.39             */
+	{
+		struct dict_avp_data data = {
+			541,	/* Code */
+			10415,	/* Vendor */
+			"Retry-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Rx-Request-Type, Enumerated, code 533, section 5.3.31            */
+	{
+		struct dict_avp_data data = {
+			533,	/* Code */
+			10415,	/* Vendor */
+			"Rx-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rx-Request-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* RR-Bandwidth, Unsigned32, code 521, section 5.3.20               */
+	{
+		struct dict_avp_data data = {
+			521,	/* Code */
+			10415,	/* Vendor */
+			"RR-Bandwidth",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RS-Bandwidth, Unsigned32, code 522, section 5.3.21               */
+	{
+		struct dict_avp_data data = {
+			522,	/* Code */
+			10415,	/* Vendor */
+			"RS-Bandwidth",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Authorization-Info, Unsigned32, code 548, section 5.3.46 */
+	{
+		struct dict_avp_data data = {
+			548,	/* Code */
+			10415,	/* Vendor */
+			"Service-Authorization-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-URN, OctetString, code 525, section 5.3.23               */
+	{
+		struct dict_avp_data data = {
+			525,	/* Code */
+			10415,	/* Vendor */
+			"Service-URN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Info-Status, Enumerated, code 527, section 5.3.25        */
+	{
+		struct dict_avp_data data = {
+			527,	/* Code */
+			10415,	/* Vendor */
+			"Service-Info-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-Info-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Sharing-Key-DL, Unsigned32, code 539, section 5.3.37             */
+	{
+		struct dict_avp_data data = {
+			539,	/* Code */
+			10415,	/* Vendor */
+			"Sharing-Key-DL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Sharing-Key-UL, Unsigned32, code 540, section 5.3.38             */
+	{
+		struct dict_avp_data data = {
+			540,	/* Code */
+			10415,	/* Vendor */
+			"Sharing-Key-UL",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Specific-Action, Enumerated, code 513, section 5.3.13            */
+	{
+		struct dict_avp_data data = {
+			513,	/* Code */
+			10415,	/* Vendor */
+			"Specific-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Specific-Action)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SIP-Forking-Indication, Enumerated, code 523, section 5.3.22     */
+	{
+		struct dict_avp_data data = {
+			523,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Forking-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIP-Forking-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Sponsor-Identity, UTF8String, code 531, section 5.3.28           */
+	{
+		struct dict_avp_data data = {
+			531,	/* Code */
+			10415,	/* Vendor */
+			"Sponsor-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Sponsored-Connectivity-Data, Grouped, code 530, section 5.3.27   */
+	{
+		struct dict_avp_data data = {
+			530,	/* Code */
+			10415,	/* Vendor */
+			"Sponsored-Connectivity-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Sponsoring-Action, Enumerated, code 542, section 5.3.40          */
+	{
+		struct dict_avp_data data = {
+			542,	/* Code */
+			10415,	/* Vendor */
+			"Sponsoring-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sponsoring-Action)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.215 V15.2.0 (2019-09)                                 */
+	/* Policy and Charging Control (PCC) over S9 reference point;       */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29215-f20.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.215 Table 5.3.0.1: S9 specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* DRA-Deployment, Enumerated, code 2206, section 5.3.7             */
+	{
+		struct dict_avp_data data = {
+			2206,	/* Code */
+			10415,	/* Vendor */
+			"DRA-Deployment",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRA-Deployment)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Multiple-BBERF-Action, Enumerated, code 2204, section 5.3.6      */
+	{
+		struct dict_avp_data data = {
+			2204,	/* Code */
+			10415,	/* Vendor */
+			"Multiple-BBERF-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-BBERF-Action)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Subsession-Decision-Info, Grouped, code 2200, section 5.3.1      */
+	{
+		struct dict_avp_data data = {
+			2200,	/* Code */
+			10415,	/* Vendor */
+			"Subsession-Decision-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subsession-Enforcement-Info, Grouped, code 2201, section 5.3.2   */
+	{
+		struct dict_avp_data data = {
+			2201,	/* Code */
+			10415,	/* Vendor */
+			"Subsession-Enforcement-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subsession-Id, Unsigned32, code 2202, section 5.3.3              */
+	{
+		struct dict_avp_data data = {
+			2202,	/* Code */
+			10415,	/* Vendor */
+			"Subsession-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subsession-Operation, Enumerated, code 2203, section 5.3.4       */
+	{
+		struct dict_avp_data data = {
+			2203,	/* Code */
+			10415,	/* Vendor */
+			"Subsession-Operation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subsession-Operation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* DRA-Binding, Enumerated, code 2208, section 5.3.x                */
+	{
+		struct dict_avp_data data = {
+			2208,	/* Code */
+			10415,	/* Vendor */
+			"DRA-Binding",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRA-Binding)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.215 Table A.7.3.1.1: S9a specific Diameter AVPs       */
+	/*==================================================================*/
+
+	/* PCRF-Address, DiameterIdentity, code 2207, section A.7.3.1.1     */
+	{
+		struct dict_avp_data data = {
+			2207,	/* Code */
+			10415,	/* Vendor */
+			"PCRF-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.215 Table A.8.3.1.1: S9a* specific Diameter AVPs      */
+	/*==================================================================*/
+
+	/* UE-Local-IPv6-Prefix, OctetString, code 2205, section A.8.3.1    */
+	{
+		struct dict_avp_data data = {
+			2205,	/* Code */
+			10415,	/* Vendor */
+			"UE-Local-IPv6-Prefix",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.217 V15.1.0 (2019-09)                                 */
+	/* Policy and Charging Control (PCC);                               */
+	/* Congestion reporting over Np reference point                     */
+	/*                                                                  */
+	/* From 3GPP 29217-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.217 Table 5.3.1.1: Np specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Aggregated-Congestion-Info, Grouped, code 4000, section 5.3.2    */
+	{
+		struct dict_avp_data data = {
+			4000,	/* Code */
+			10415,	/* Vendor */
+			"Aggregated-Congestion-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Aggregated-RUCI-Report, Grouped, code 4001, section 5.3.3        */
+	{
+		struct dict_avp_data data = {
+			4001,	/* Code */
+			10415,	/* Vendor */
+			"Aggregated-RUCI-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Congestion-Level-Definition, Grouped, code 4002, section 5.3.4   */
+	{
+		struct dict_avp_data data = {
+			4002,	/* Code */
+			10415,	/* Vendor */
+			"Congestion-Level-Definition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Congestion-Level-Range, Unsigned32, code 4003, section 5.3.5     */
+	{
+		struct dict_avp_data data = {
+			4003,	/* Code */
+			10415,	/* Vendor */
+			"Congestion-Level-Range",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Congestion-Level-Set-Id, Unsigned32, code 4004, section 5.3.6    */
+	{
+		struct dict_avp_data data = {
+			4004,	/* Code */
+			10415,	/* Vendor */
+			"Congestion-Level-Set-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Congestion-Level-Value, Unsigned32, code 4005, section 5.3.7     */
+	{
+		struct dict_avp_data data = {
+			4005,	/* Code */
+			10415,	/* Vendor */
+			"Congestion-Level-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Congestion-Location-Id, Grouped, code 4006, section 5.3.8        */
+	{
+		struct dict_avp_data data = {
+			4006,	/* Code */
+			10415,	/* Vendor */
+			"Congestion-Location-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Conditional-Restriction, Unsigned32, code 4007, section 5.3.9    */
+	{
+		struct dict_avp_data data = {
+			4007,	/* Code */
+			10415,	/* Vendor */
+			"Conditional-Restriction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* eNodeB-Id, OctetString, code 4008, section 5.3.10                */
+	{
+		struct dict_avp_data data = {
+			4008,	/* Code */
+			10415,	/* Vendor */
+			"eNodeB-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMSI-List, OctetString, code 4009, section 5.3.11                */
+	{
+		struct dict_avp_data data = {
+			4009,	/* Code */
+			10415,	/* Vendor */
+			"IMSI-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RCAF-Id, DiameterIdentity, code 4010, section 5.3.12             */
+	{
+		struct dict_avp_data data = {
+			4010,	/* Code */
+			10415,	/* Vendor */
+			"RCAF-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* Reporting-Restriction, Unsigned32, code 4011, section 5.3.13     */
+	{
+		struct dict_avp_data data = {
+			4011,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Restriction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RUCI-Action, Unsigned32, code 4012, section 5.3.14               */
+	{
+		struct dict_avp_data data = {
+			4012,	/* Code */
+			10415,	/* Vendor */
+			"RUCI-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Extended-eNodeB-Id, OctetString, code 4013, section 5.3.15       */
+	{
+		struct dict_avp_data data = {
+			4013,	/* Code */
+			10415,	/* Vendor */
+			"Extended-eNodeB-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.219 V15.3.0 (2019-09)                                 */
+	/* Policy and Charging Control: Spending Limit Reporting over       */
+	/* Sy reference point                                               */
+	/*                                                                  */
+	/* From 3GPP 29219-f30.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.219 Table 5.3.0.1: Sy specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* Pending-Policy-Counter-Information, Grouped, code 2905, section 5.3.5 */
+	{
+		struct dict_avp_data data = {
+			2905,	/* Code */
+			10415,	/* Vendor */
+			"Pending-Policy-Counter-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Pending-Policy-Counter-Change-Time, Time, code 2906, section 5.3.6 */
+	{
+		struct dict_avp_data data = {
+			2906,	/* Code */
+			10415,	/* Vendor */
+			"Pending-Policy-Counter-Change-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Policy-Counter-Identifier, UTF8String, code 2901, section 5.3.1  */
+	{
+		struct dict_avp_data data = {
+			2901,	/* Code */
+			10415,	/* Vendor */
+			"Policy-Counter-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Policy-Counter-Status, UTF8String, code 2902, section 5.3.2      */
+	{
+		struct dict_avp_data data = {
+			2902,	/* Code */
+			10415,	/* Vendor */
+			"Policy-Counter-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Policy-Counter-Status-Report, Grouped, code 2903, section 5.3.3  */
+	{
+		struct dict_avp_data data = {
+			2903,	/* Code */
+			10415,	/* Vendor */
+			"Policy-Counter-Status-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SL-Request-Type, Enumerated, code 2904, section 5.3.4            */
+	{
+		struct dict_avp_data data = {
+			2904,	/* Code */
+			10415,	/* Vendor */
+			"SL-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SL-Request-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SN-Request-Type, Unsigned32, code 2907, section 5.3.7            */
+	{
+		struct dict_avp_data data = {
+			2907,	/* Code */
+			10415,	/* Vendor */
+			"SN-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.229 V15.2.0 (2019-09)                                 */
+	/* Cx and Dx interfaces based on the Diameter protocol;             */
+	/* Protocol details                                                 */
+	/*                                                                  */
+	/* From 3GPP 29229-f20.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.229 Table 6.3.1: Diameter Multimedia Application AVPs */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* Visited-Network-Identifier, OctetString, code 600, section 6.3.1 */
+	{
+		struct dict_avp_data data = {
+			600,	/* Code */
+			10415,	/* Vendor */
+			"Visited-Network-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Public-Identity, UTF8String, code 601, section 6.3.2             */
+	{
+		struct dict_avp_data data = {
+			601,	/* Code */
+			10415,	/* Vendor */
+			"Public-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Server-Name, UTF8String, code 602, section 6.3.3                 */
+	{
+		struct dict_avp_data data = {
+			602,	/* Code */
+			10415,	/* Vendor */
+			"Server-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Server-Capabilities, Grouped, code 603, section 6.3.4            */
+	{
+		struct dict_avp_data data = {
+			603,	/* Code */
+			10415,	/* Vendor */
+			"Server-Capabilities",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Mandatory-Capability, Unsigned32, code 604, section 6.3.5        */
+	{
+		struct dict_avp_data data = {
+			604,	/* Code */
+			10415,	/* Vendor */
+			"Mandatory-Capability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Optional-Capability, Unsigned32, code 605, section 6.3.6         */
+	{
+		struct dict_avp_data data = {
+			605,	/* Code */
+			10415,	/* Vendor */
+			"Optional-Capability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.329 User-Data (702).         */
+	/* 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).       */
+	/* 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).       */
+	/* User-Data, OctetString, code 606, section 6.3.7                  */
+	{
+		struct dict_avp_data data = {
+			606,	/* Code */
+			10415,	/* Vendor */
+			"User-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Number-Auth-Items, Unsigned32, code 607, section 6.3.8       */
+	{
+		struct dict_avp_data data = {
+			607,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Number-Auth-Items",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Authentication-Scheme, UTF8String, code 608, section 6.3.9   */
+	{
+		struct dict_avp_data data = {
+			608,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Authentication-Scheme",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SIP-Authenticate, OctetString, code 609, section 6.3.10          */
+	{
+		struct dict_avp_data data = {
+			609,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Authenticate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Authorization, OctetString, code 610, section 6.3.11         */
+	{
+		struct dict_avp_data data = {
+			610,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Authorization",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Authentication-Context, OctetString, code 611, section 6.3.12 */
+	{
+		struct dict_avp_data data = {
+			611,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Authentication-Context",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Auth-Data-Item, Grouped, code 612, section 6.3.13            */
+	{
+		struct dict_avp_data data = {
+			612,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Auth-Data-Item",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Item-Number, Unsigned32, code 613, section 6.3.14            */
+	{
+		struct dict_avp_data data = {
+			613,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Item-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Server-Assignment-Type, Enumerated, code 614, section 6.3.15     */
+	{
+		struct dict_avp_data data = {
+			614,	/* Code */
+			10415,	/* Vendor */
+			"Server-Assignment-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Server-Assignment-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Deregistration-Reason, Grouped, code 615, section 6.3.16         */
+	{
+		struct dict_avp_data data = {
+			615,	/* Code */
+			10415,	/* Vendor */
+			"Deregistration-Reason",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reason-Code, Enumerated, code 616, section 6.3.17                */
+	{
+		struct dict_avp_data data = {
+			616,	/* Code */
+			10415,	/* Vendor */
+			"Reason-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reason-Code)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Reason-Info, UTF8String, code 617, section 6.3.18                */
+	{
+		struct dict_avp_data data = {
+			617,	/* Code */
+			10415,	/* Vendor */
+			"Reason-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Charging-Information, Grouped, code 618, section 6.3.19          */
+	{
+		struct dict_avp_data data = {
+			618,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Primary-Event-Charging-Function-Name, DiameterURI, code 619, section 6.3.20 */
+	{
+		struct dict_avp_data data = {
+			619,	/* Code */
+			10415,	/* Vendor */
+			"Primary-Event-Charging-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
+	};
+
+	/* Secondary-Event-Charging-Function-Name, DiameterURI, code 620, section 6.3.21 */
+	{
+		struct dict_avp_data data = {
+			620,	/* Code */
+			10415,	/* Vendor */
+			"Secondary-Event-Charging-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
+	};
+
+	/* Primary-Charging-Collection-Function-Name, DiameterURI, code 621, section 6.3.22 */
+	{
+		struct dict_avp_data data = {
+			621,	/* Code */
+			10415,	/* Vendor */
+			"Primary-Charging-Collection-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
+	};
+
+	/* Secondary-Charging-Collection-Function-Name, DiameterURI, code 622, section 6.3.23 */
+	{
+		struct dict_avp_data data = {
+			622,	/* Code */
+			10415,	/* Vendor */
+			"Secondary-Charging-Collection-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
+	};
+
+	/* User-Authorization-Type, Enumerated, code 623, section 6.3.24    */
+	{
+		struct dict_avp_data data = {
+			623,	/* Code */
+			10415,	/* Vendor */
+			"User-Authorization-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Authorization-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* User-Data-Already-Available, Enumerated, code 624, section 6.3.26 */
+	{
+		struct dict_avp_data data = {
+			624,	/* Code */
+			10415,	/* Vendor */
+			"User-Data-Already-Available",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Data-Already-Available)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Confidentiality-Key, OctetString, code 625, section 6.3.27       */
+	{
+		struct dict_avp_data data = {
+			625,	/* Code */
+			10415,	/* Vendor */
+			"Confidentiality-Key",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Integrity-Key, OctetString, code 626, section 6.3.28             */
+	{
+		struct dict_avp_data data = {
+			626,	/* Code */
+			10415,	/* Vendor */
+			"Integrity-Key",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: User-Data-Request-Type (627) removed in 3GPP TS 29.229 V6.5.0 (2005-06). */
+
+	/* Supported-Features, Grouped, code 628, section 6.3.29            */
+	{
+		struct dict_avp_data data = {
+			628,	/* Code */
+			10415,	/* Vendor */
+			"Supported-Features",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Feature-List-ID, Unsigned32, code 629, section 6.3.30            */
+	{
+		struct dict_avp_data data = {
+			629,	/* Code */
+			10415,	/* Vendor */
+			"Feature-List-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Feature-List, Unsigned32, code 630, section 6.3.31               */
+	{
+		struct dict_avp_data data = {
+			630,	/* Code */
+			10415,	/* Vendor */
+			"Feature-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Supported-Applications, Grouped, code 631, section 6.3.32        */
+	{
+		struct dict_avp_data data = {
+			631,	/* Code */
+			10415,	/* Vendor */
+			"Supported-Applications",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Associated-Identities, Grouped, code 632, section 6.3.33         */
+	{
+		struct dict_avp_data data = {
+			632,	/* Code */
+			10415,	/* Vendor */
+			"Associated-Identities",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Originating-Request, Enumerated, code 633, section 6.3.34        */
+	{
+		struct dict_avp_data data = {
+			633,	/* Code */
+			10415,	/* Vendor */
+			"Originating-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Request)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Wildcarded-Public-Identity, UTF8String, code 634, section 6.3.35 */
+	{
+		struct dict_avp_data data = {
+			634,	/* Code */
+			10415,	/* Vendor */
+			"Wildcarded-Public-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SIP-Digest-Authenticate, Grouped, code 635, section 6.3.36       */
+	{
+		struct dict_avp_data data = {
+			635,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Digest-Authenticate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Wildcarded-IMPU, UTF8String, code 636, section 6.3.43            */
+	{
+		struct dict_avp_data data = {
+			636,	/* Code */
+			10415,	/* Vendor */
+			"Wildcarded-IMPU",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* UAR-Flags, Unsigned32, code 637, section 6.3.44                  */
+	{
+		struct dict_avp_data data = {
+			637,	/* Code */
+			10415,	/* Vendor */
+			"UAR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Loose-Route-Indication, Enumerated, code 638, section 6.3.45     */
+	{
+		struct dict_avp_data data = {
+			638,	/* Code */
+			10415,	/* Vendor */
+			"Loose-Route-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Loose-Route-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SCSCF-Restoration-Info, Grouped, code 639, section 6.3.46        */
+	{
+		struct dict_avp_data data = {
+			639,	/* Code */
+			10415,	/* Vendor */
+			"SCSCF-Restoration-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Path, OctetString, code 640, section 6.3.47                      */
+	{
+		struct dict_avp_data data = {
+			640,	/* Code */
+			10415,	/* Vendor */
+			"Path",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Contact, OctetString, code 641, section 6.3.48                   */
+	{
+		struct dict_avp_data data = {
+			641,	/* Code */
+			10415,	/* Vendor */
+			"Contact",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subscription-Info, Grouped, code 642, section 6.3.49             */
+	{
+		struct dict_avp_data data = {
+			642,	/* Code */
+			10415,	/* Vendor */
+			"Subscription-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Call-ID-SIP-Header, OctetString, code 643, section 6.3.49.1      */
+	{
+		struct dict_avp_data data = {
+			643,	/* Code */
+			10415,	/* Vendor */
+			"Call-ID-SIP-Header",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* From-SIP-Header, OctetString, code 644, section 6.3.49.2         */
+	{
+		struct dict_avp_data data = {
+			644,	/* Code */
+			10415,	/* Vendor */
+			"From-SIP-Header",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* To-SIP-Header, OctetString, code 645, section 6.3.49.3           */
+	{
+		struct dict_avp_data data = {
+			645,	/* Code */
+			10415,	/* Vendor */
+			"To-SIP-Header",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Record-Route, OctetString, code 646, section 6.3.49.4            */
+	{
+		struct dict_avp_data data = {
+			646,	/* Code */
+			10415,	/* Vendor */
+			"Record-Route",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Associated-Registered-Identities, Grouped, code 647, section 6.3.50 */
+	{
+		struct dict_avp_data data = {
+			647,	/* Code */
+			10415,	/* Vendor */
+			"Associated-Registered-Identities",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Multiple-Registration-Indication, Enumerated, code 648, section 6.3.51 */
+	{
+		struct dict_avp_data data = {
+			648,	/* Code */
+			10415,	/* Vendor */
+			"Multiple-Registration-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-Registration-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Restoration-Info, Grouped, code 649, section 6.3.52              */
+	{
+		struct dict_avp_data data = {
+			649,	/* Code */
+			10415,	/* Vendor */
+			"Restoration-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Session-Priority, Enumerated, code 650, section 6.3.56           */
+	{
+		struct dict_avp_data data = {
+			650,	/* Code */
+			10415,	/* Vendor */
+			"Session-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Priority)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Identity-with-Emergency-Registration, Grouped, code 651, section 6.3.57 */
+	{
+		struct dict_avp_data data = {
+			651,	/* Code */
+			10415,	/* Vendor */
+			"Identity-with-Emergency-Registration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Priviledged-Sender-Indication, Enumerated, code 652, section 6.3.58 */
+	{
+		struct dict_avp_data data = {
+			652,	/* Code */
+			10415,	/* Vendor */
+			"Priviledged-Sender-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priviledged-Sender-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LIA-Flags, Unsigned32, code 653, section 6.3.59                  */
+	{
+		struct dict_avp_data data = {
+			653,	/* Code */
+			10415,	/* Vendor */
+			"LIA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Initial-CSeq-Sequence-Number, Unsigned32, code 654, section 6.3.62 */
+	{
+		struct dict_avp_data data = {
+			654,	/* Code */
+			10415,	/* Vendor */
+			"Initial-CSeq-Sequence-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SAR-Flags, Unsigned32, code 655, section 6.3.63                  */
+	{
+		struct dict_avp_data data = {
+			655,	/* Code */
+			10415,	/* Vendor */
+			"SAR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Allowed-WAF-WWSF-Identities, Grouped, code 656, section 6.3.64   */
+	{
+		struct dict_avp_data data = {
+			656,	/* Code */
+			10415,	/* Vendor */
+			"Allowed-WAF-WWSF-Identities",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WebRTC-Authentication-Function-Name, UTF8String, code 657, section 6.3.65 */
+	{
+		struct dict_avp_data data = {
+			657,	/* Code */
+			10415,	/* Vendor */
+			"WebRTC-Authentication-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* WebRTC-Web-Server-Function-Name, UTF8String, code 658, section 6.3.66 */
+	{
+		struct dict_avp_data data = {
+			658,	/* Code */
+			10415,	/* Vendor */
+			"WebRTC-Web-Server-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* RTR-Flags, Unsigned32, code 659, section 6.3.69                  */
+	{
+		struct dict_avp_data data = {
+			659,	/* Code */
+			10415,	/* Vendor */
+			"RTR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.234 V11.2.0 (2013-06)                                 */
+	/* 3GPP system to Wireless Local Area Network (WLAN)                */
+	/* interworking;                                                    */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29234-b20.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.234 Table 10.1.1: Diameter Multimedia Application AVPs */
+	/*==================================================================*/
+
+	/* 3GPP-WLAN-APN-Id, OctetString, code 100, section 10.1.15         */
+	{
+		struct dict_avp_data data = {
+			100,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-WLAN-APN-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Authentication-Method, Enumerated, code 300, section 10.1.5      */
+	{
+		struct dict_avp_data data = {
+			300,	/* Code */
+			10415,	/* Vendor */
+			"Authentication-Method",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Authentication-Method)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Authentication-Information-SIM, OctetString, code 301, section 10.1.6 */
+	{
+		struct dict_avp_data data = {
+			301,	/* Code */
+			10415,	/* Vendor */
+			"Authentication-Information-SIM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Authorization-Information-SIM, OctetString, code 302, section 10.1.7 */
+	{
+		struct dict_avp_data data = {
+			302,	/* Code */
+			10415,	/* Vendor */
+			"Authorization-Information-SIM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-User-Data, Grouped, code 303, section 10.1.8                */
+	{
+		struct dict_avp_data data = {
+			303,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-User-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Data, Grouped, code 304, section 10.1.10                */
+	{
+		struct dict_avp_data data = {
+			304,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Access, Enumerated, code 305, section 10.1.11               */
+	{
+		struct dict_avp_data data = {
+			305,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* WLAN-3GPP-IP-Access, Enumerated, code 306, section 10.1.12       */
+	{
+		struct dict_avp_data data = {
+			306,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-3GPP-IP-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-3GPP-IP-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* APN-Authorized, Grouped, code 307, section 10.1.14               */
+	{
+		struct dict_avp_data data = {
+			307,	/* Code */
+			10415,	/* Vendor */
+			"APN-Authorized",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: APN-Id (308) OctetString removed in 3GPP TS 29.234 V6.5.0 (2005-12). */
+
+	/* APN-Barring-Type, Enumerated, code 309, section 10.1.16          */
+	{
+		struct dict_avp_data data = {
+			309,	/* Code */
+			10415,	/* Vendor */
+			"APN-Barring-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/APN-Barring-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* WLAN-Direct-IP-Access, Enumerated, code 310, section 10.1.17     */
+	{
+		struct dict_avp_data data = {
+			310,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Direct-IP-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-Direct-IP-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Session-Request-Type, Enumerated, code 311, section 10.1.23      */
+	{
+		struct dict_avp_data data = {
+			311,	/* Code */
+			10415,	/* Vendor */
+			"Session-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Request-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Routing-Policy, IPFilterRule, code 312, section 10.1.24          */
+	{
+		struct dict_avp_data data = {
+			312,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Policy",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
+	};
+
+	/* Max-Requested-Bandwidth, OctetString, code 313, section 10.1.26  */
+	{
+		struct dict_avp_data data = {
+			313,	/* Code */
+			10415,	/* Vendor */
+			"Max-Requested-Bandwidth",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Characteristics, Integer32, code 314, section 10.1.27   */
+	{
+		struct dict_avp_data data = {
+			314,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Characteristics",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Charging-Nodes, Grouped, code 315, section 10.1.28               */
+	{
+		struct dict_avp_data data = {
+			315,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Nodes",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Primary-OCS-Charging-Function-Name, DiameterIdentity, code 316, section 10.1.29 */
+	{
+		struct dict_avp_data data = {
+			316,	/* Code */
+			10415,	/* Vendor */
+			"Primary-OCS-Charging-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* Secondary-OCS-Charging-Function-Name, DiameterIdentity, code 317, section 10.1.30 */
+	{
+		struct dict_avp_data data = {
+			317,	/* Code */
+			10415,	/* Vendor */
+			"Secondary-OCS-Charging-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.273 from Release 12 now defines 3GPP-AAA-Server-Name (318). */
+	/*                                                                  */
+	/* Maximum-Number-Accesses, Unsigned32, code 319, section 10.1.38   */
+	{
+		struct dict_avp_data data = {
+			319,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Number-Accesses",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.272 V15.10.0 (2019-12)                                */
+	/* Mobility Management Entity (MME)                                 */
+	/* and Serving GPRS Support Node (SGSN) related interfaces          */
+	/* based on Diameter protocol                                       */
+	/*                                                                  */
+	/* From 3GPP 29272-fa0.docx                                         */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.272 Table 7.3.1/1: S6a/S6d, S7a/S7d and S13/S13' specific DiameterAVPs */
+	/*==================================================================*/
+
+	/* Subscription-Data, Grouped, code 1400, section 7.3.2             */
+	{
+		struct dict_avp_data data = {
+			1400,	/* Code */
+			10415,	/* Vendor */
+			"Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Terminal-Information, Grouped, code 1401, section 7.3.3          */
+	{
+		struct dict_avp_data data = {
+			1401,	/* Code */
+			10415,	/* Vendor */
+			"Terminal-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMEI, UTF8String, code 1402, section 7.3.4                       */
+	{
+		struct dict_avp_data data = {
+			1402,	/* Code */
+			10415,	/* Vendor */
+			"IMEI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Software-Version, UTF8String, code 1403, section 7.3.5           */
+	{
+		struct dict_avp_data data = {
+			1403,	/* Code */
+			10415,	/* Vendor */
+			"Software-Version",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* QoS-Subscribed, OctetString, code 1404, section 7.3.77           */
+	{
+		struct dict_avp_data data = {
+			1404,	/* Code */
+			10415,	/* Vendor */
+			"QoS-Subscribed",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ULR-Flags, Unsigned32, code 1405, section 7.3.7                  */
+	{
+		struct dict_avp_data data = {
+			1405,	/* Code */
+			10415,	/* Vendor */
+			"ULR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ULA-Flags, Unsigned32, code 1406, section 7.3.8                  */
+	{
+		struct dict_avp_data data = {
+			1406,	/* Code */
+			10415,	/* Vendor */
+			"ULA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Visited-PLMN-Id, OctetString, code 1407, section 7.3.9           */
+	{
+		struct dict_avp_data data = {
+			1407,	/* Code */
+			10415,	/* Vendor */
+			"Visited-PLMN-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Requested-EUTRAN-Authentication-Info, Grouped, code 1408, section 7.3.11 */
+	{
+		struct dict_avp_data data = {
+			1408,	/* Code */
+			10415,	/* Vendor */
+			"Requested-EUTRAN-Authentication-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Requested-UTRAN-GERAN-Authentication-Info, Grouped, code 1409, section 7.3.12 */
+	{
+		struct dict_avp_data data = {
+			1409,	/* Code */
+			10415,	/* Vendor */
+			"Requested-UTRAN-GERAN-Authentication-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Requested-Vectors, Unsigned32, code 1410, section 7.3.14 */
+	{
+		struct dict_avp_data data = {
+			1410,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Requested-Vectors",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Re-Synchronization-Info, OctetString, code 1411, section 7.3.15  */
+	{
+		struct dict_avp_data data = {
+			1411,	/* Code */
+			10415,	/* Vendor */
+			"Re-Synchronization-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Immediate-Response-Preferred, Unsigned32, code 1412, section 7.3.16 */
+	{
+		struct dict_avp_data data = {
+			1412,	/* Code */
+			10415,	/* Vendor */
+			"Immediate-Response-Preferred",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Authentication-Info, Grouped, code 1413, section 7.3.17          */
+	{
+		struct dict_avp_data data = {
+			1413,	/* Code */
+			10415,	/* Vendor */
+			"Authentication-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* E-UTRAN-Vector, Grouped, code 1414, section 7.3.18               */
+	{
+		struct dict_avp_data data = {
+			1414,	/* Code */
+			10415,	/* Vendor */
+			"E-UTRAN-Vector",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTRAN-Vector, Grouped, code 1415, section 7.3.19                 */
+	{
+		struct dict_avp_data data = {
+			1415,	/* Code */
+			10415,	/* Vendor */
+			"UTRAN-Vector",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GERAN-Vector, Grouped, code 1416, section 7.3.20                 */
+	{
+		struct dict_avp_data data = {
+			1416,	/* Code */
+			10415,	/* Vendor */
+			"GERAN-Vector",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Network-Access-Mode, Enumerated, code 1417, section 7.3.21       */
+	{
+		struct dict_avp_data data = {
+			1417,	/* Code */
+			10415,	/* Vendor */
+			"Network-Access-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Access-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* HPLMN-ODB, Unsigned32, code 1418, section 7.3.22                 */
+	{
+		struct dict_avp_data data = {
+			1418,	/* Code */
+			10415,	/* Vendor */
+			"HPLMN-ODB",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Item-Number, Unsigned32, code 1419, section 7.3.23               */
+	{
+		struct dict_avp_data data = {
+			1419,	/* Code */
+			10415,	/* Vendor */
+			"Item-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Cancellation-Type, Enumerated, code 1420, section 7.3.24         */
+	{
+		struct dict_avp_data data = {
+			1420,	/* Code */
+			10415,	/* Vendor */
+			"Cancellation-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Cancellation-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* DSR-Flags, Unsigned32, code 1421, section 7.3.25                 */
+	{
+		struct dict_avp_data data = {
+			1421,	/* Code */
+			10415,	/* Vendor */
+			"DSR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DSA-Flags, Unsigned32, code 1422, section 7.3.26                 */
+	{
+		struct dict_avp_data data = {
+			1422,	/* Code */
+			10415,	/* Vendor */
+			"DSA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Context-Identifier, Unsigned32, code 1423, section 7.3.27        */
+	{
+		struct dict_avp_data data = {
+			1423,	/* Code */
+			10415,	/* Vendor */
+			"Context-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subscriber-Status, Enumerated, code 1424, section 7.3.29         */
+	{
+		struct dict_avp_data data = {
+			1424,	/* Code */
+			10415,	/* Vendor */
+			"Subscriber-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Operator-Determined-Barring, Unsigned32, code 1425, section 7.3.30 */
+	{
+		struct dict_avp_data data = {
+			1425,	/* Code */
+			10415,	/* Vendor */
+			"Operator-Determined-Barring",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Restriction-Data, Unsigned32, code 1426, section 7.3.31   */
+	{
+		struct dict_avp_data data = {
+			1426,	/* Code */
+			10415,	/* Vendor */
+			"Access-Restriction-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-OI-Replacement, UTF8String, code 1427, section 7.3.32        */
+	{
+		struct dict_avp_data data = {
+			1427,	/* Code */
+			10415,	/* Vendor */
+			"APN-OI-Replacement",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* All-APN-Configurations-Included-Indicator, Enumerated, code 1428, section 7.3.33 */
+	{
+		struct dict_avp_data data = {
+			1428,	/* Code */
+			10415,	/* Vendor */
+			"All-APN-Configurations-Included-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/All-APN-Configurations-Included-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* APN-Configuration-Profile, Grouped, code 1429, section 7.3.34    */
+	{
+		struct dict_avp_data data = {
+			1429,	/* Code */
+			10415,	/* Vendor */
+			"APN-Configuration-Profile",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Configuration, Grouped, code 1430, section 7.3.35            */
+	{
+		struct dict_avp_data data = {
+			1430,	/* Code */
+			10415,	/* Vendor */
+			"APN-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* EPS-Subscribed-QoS-Profile, Grouped, code 1431, section 7.3.37   */
+	{
+		struct dict_avp_data data = {
+			1431,	/* Code */
+			10415,	/* Vendor */
+			"EPS-Subscribed-QoS-Profile",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* VPLMN-Dynamic-Address-Allowed, Enumerated, code 1432, section 7.3.38 */
+	{
+		struct dict_avp_data data = {
+			1432,	/* Code */
+			10415,	/* Vendor */
+			"VPLMN-Dynamic-Address-Allowed",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-Dynamic-Address-Allowed)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* STN-SR, OctetString, code 1433, section 7.3.39                   */
+	{
+		struct dict_avp_data data = {
+			1433,	/* Code */
+			10415,	/* Vendor */
+			"STN-SR",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Alert-Reason, Enumerated, code 1434, section 7.3.83              */
+	{
+		struct dict_avp_data data = {
+			1434,	/* Code */
+			10415,	/* Vendor */
+			"Alert-Reason",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Alert-Reason)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AMBR, Grouped, code 1435, section 7.3.41                         */
+	{
+		struct dict_avp_data data = {
+			1435,	/* Code */
+			10415,	/* Vendor */
+			"AMBR",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CSG-Subscription-Data, Grouped, code 1436, section 7.3.78        */
+	{
+		struct dict_avp_data data = {
+			1436,	/* Code */
+			10415,	/* Vendor */
+			"CSG-Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CSG-Id, Unsigned32, code 1437, section 7.3.79                    */
+	{
+		struct dict_avp_data data = {
+			1437,	/* Code */
+			10415,	/* Vendor */
+			"CSG-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDN-GW-Allocation-Type, Enumerated, code 1438, section 7.3.44    */
+	{
+		struct dict_avp_data data = {
+			1438,	/* Code */
+			10415,	/* Vendor */
+			"PDN-GW-Allocation-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-GW-Allocation-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Expiration-Date, Time, code 1439, section 7.3.80                 */
+	{
+		struct dict_avp_data data = {
+			1439,	/* Code */
+			10415,	/* Vendor */
+			"Expiration-Date",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* RAT-Frequency-Selection-Priority-ID, Unsigned32, code 1440, section 7.3.46 */
+	{
+		struct dict_avp_data data = {
+			1440,	/* Code */
+			10415,	/* Vendor */
+			"RAT-Frequency-Selection-Priority-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IDA-Flags, Unsigned32, code 1441, section 7.3.47                 */
+	{
+		struct dict_avp_data data = {
+			1441,	/* Code */
+			10415,	/* Vendor */
+			"IDA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PUA-Flags, Unsigned32, code 1442, section 7.3.48                 */
+	{
+		struct dict_avp_data data = {
+			1442,	/* Code */
+			10415,	/* Vendor */
+			"PUA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NOR-Flags, Unsigned32, code 1443, section 7.3.49                 */
+	{
+		struct dict_avp_data data = {
+			1443,	/* Code */
+			10415,	/* Vendor */
+			"NOR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* User-Id, UTF8String, code 1444, section 7.3.50                   */
+	{
+		struct dict_avp_data data = {
+			1444,	/* Code */
+			10415,	/* Vendor */
+			"User-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Equipment-Status, Enumerated, code 1445, section 7.3.51          */
+	{
+		struct dict_avp_data data = {
+			1445,	/* Code */
+			10415,	/* Vendor */
+			"Equipment-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Equipment-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Regional-Subscription-Zone-Code, OctetString, code 1446, section 7.3.52 */
+	{
+		struct dict_avp_data data = {
+			1446,	/* Code */
+			10415,	/* Vendor */
+			"Regional-Subscription-Zone-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAND, OctetString, code 1447, section 7.3.53                     */
+	{
+		struct dict_avp_data data = {
+			1447,	/* Code */
+			10415,	/* Vendor */
+			"RAND",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* XRES, OctetString, code 1448, section 7.3.54                     */
+	{
+		struct dict_avp_data data = {
+			1448,	/* Code */
+			10415,	/* Vendor */
+			"XRES",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AUTN, OctetString, code 1449, section 7.3.55                     */
+	{
+		struct dict_avp_data data = {
+			1449,	/* Code */
+			10415,	/* Vendor */
+			"AUTN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* KASME, OctetString, code 1450, section 7.3.56                    */
+	{
+		struct dict_avp_data data = {
+			1450,	/* Code */
+			10415,	/* Vendor */
+			"KASME",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trace-Collection-Entity, Address, code 1452, section 7.3.98      */
+	{
+		struct dict_avp_data data = {
+			1452,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Collection-Entity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Kc, OctetString, code 1453, section 7.3.59                       */
+	{
+		struct dict_avp_data data = {
+			1453,	/* Code */
+			10415,	/* Vendor */
+			"Kc",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SRES, OctetString, code 1454, section 7.3.60                     */
+	{
+		struct dict_avp_data data = {
+			1454,	/* Code */
+			10415,	/* Vendor */
+			"SRES",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDN-Type, Enumerated, code 1456, section 7.3.62                  */
+	{
+		struct dict_avp_data data = {
+			1456,	/* Code */
+			10415,	/* Vendor */
+			"PDN-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Roaming-Restricted-Due-To-Unsupported-Feature, Enumerated, code 1457, section 7.3.81 */
+	{
+		struct dict_avp_data data = {
+			1457,	/* Code */
+			10415,	/* Vendor */
+			"Roaming-Restricted-Due-To-Unsupported-Feature",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Roaming-Restricted-Due-To-Unsupported-Feature)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Trace-Data, Grouped, code 1458, section 7.3.63                   */
+	{
+		struct dict_avp_data data = {
+			1458,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trace-Reference, OctetString, code 1459, section 7.3.64          */
+	{
+		struct dict_avp_data data = {
+			1459,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Reference",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trace-Depth, Enumerated, code 1462, section 7.3.67               */
+	{
+		struct dict_avp_data data = {
+			1462,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Depth",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trace-Depth)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Trace-NE-Type-List, OctetString, code 1463, section 7.3.68       */
+	{
+		struct dict_avp_data data = {
+			1463,	/* Code */
+			10415,	/* Vendor */
+			"Trace-NE-Type-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trace-Interface-List, OctetString, code 1464, section 7.3.69     */
+	{
+		struct dict_avp_data data = {
+			1464,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Interface-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trace-Event-List, OctetString, code 1465, section 7.3.70         */
+	{
+		struct dict_avp_data data = {
+			1465,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Event-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* OMC-Id, OctetString, code 1466, section 7.3.71                   */
+	{
+		struct dict_avp_data data = {
+			1466,	/* Code */
+			10415,	/* Vendor */
+			"OMC-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GPRS-Subscription-Data, Grouped, code 1467, section 7.3.72       */
+	{
+		struct dict_avp_data data = {
+			1467,	/* Code */
+			10415,	/* Vendor */
+			"GPRS-Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Complete-Data-List-Included-Indicator, Enumerated, code 1468, section 7.3.73 */
+	{
+		struct dict_avp_data data = {
+			1468,	/* Code */
+			10415,	/* Vendor */
+			"Complete-Data-List-Included-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Complete-Data-List-Included-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PDP-Context, Grouped, code 1469, section 7.3.74                  */
+	{
+		struct dict_avp_data data = {
+			1469,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Context",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDP-Type, OctetString, code 1470, section 7.3.75                 */
+	{
+		struct dict_avp_data data = {
+			1470,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP2-MEID, OctetString, code 1471, section 7.3.6                */
+	{
+		struct dict_avp_data data = {
+			1471,	/* Code */
+			10415,	/* Vendor */
+			"3GPP2-MEID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Specific-APN-Info, Grouped, code 1472, section 7.3.82            */
+	{
+		struct dict_avp_data data = {
+			1472,	/* Code */
+			10415,	/* Vendor */
+			"Specific-APN-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Info, Grouped, code 1473, section 7.3.84                     */
+	{
+		struct dict_avp_data data = {
+			1473,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GMLC-Number, OctetString, code 1474, section 7.3.85              */
+	{
+		struct dict_avp_data data = {
+			1474,	/* Code */
+			10415,	/* Vendor */
+			"GMLC-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-PrivacyException, Grouped, code 1475, section 7.3.86         */
+	{
+		struct dict_avp_data data = {
+			1475,	/* Code */
+			10415,	/* Vendor */
+			"LCS-PrivacyException",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SS-Code, OctetString, code 1476, section 7.3.87                  */
+	{
+		struct dict_avp_data data = {
+			1476,	/* Code */
+			10415,	/* Vendor */
+			"SS-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 V12.5.0 (2014-06) Table 7.3.1/1             */
+	/* changed row SS-Status (1477) to be OctetString instead of Grouped. */
+	/* Clause 7.3.88 already described SS-Status (1147) as OctetString. */
+	/*                                                                  */
+	/* Change-1.4.0: SS-Status (1477) type changed from Grouped to OctetString. */
+	/* SS-Status, OctetString, code 1477, section 7.3.88                */
+	{
+		struct dict_avp_data data = {
+			1477,	/* Code */
+			10415,	/* Vendor */
+			"SS-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Notification-To-UE-User, Enumerated, code 1478, section 7.3.89   */
+	{
+		struct dict_avp_data data = {
+			1478,	/* Code */
+			10415,	/* Vendor */
+			"Notification-To-UE-User",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Notification-To-UE-User)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* External-Client, Grouped, code 1479, section 7.3.90              */
+	{
+		struct dict_avp_data data = {
+			1479,	/* Code */
+			10415,	/* Vendor */
+			"External-Client",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Client-Identity, OctetString, code 1480, section 7.3.91          */
+	{
+		struct dict_avp_data data = {
+			1480,	/* Code */
+			10415,	/* Vendor */
+			"Client-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* GMLC-Restriction, Enumerated, code 1481, section 7.3.92          */
+	{
+		struct dict_avp_data data = {
+			1481,	/* Code */
+			10415,	/* Vendor */
+			"GMLC-Restriction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GMLC-Restriction)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PLMN-Client, Enumerated, code 1482, section 7.3.93               */
+	{
+		struct dict_avp_data data = {
+			1482,	/* Code */
+			10415,	/* Vendor */
+			"PLMN-Client",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-Client)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Service-Type, Grouped, code 1483, section 7.3.94                 */
+	{
+		struct dict_avp_data data = {
+			1483,	/* Code */
+			10415,	/* Vendor */
+			"Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ServiceTypeIdentity, Unsigned32, code 1484, section 7.3.95       */
+	{
+		struct dict_avp_data data = {
+			1484,	/* Code */
+			10415,	/* Vendor */
+			"ServiceTypeIdentity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MO-LR, Grouped, code 1485, section 7.3.96                        */
+	{
+		struct dict_avp_data data = {
+			1485,	/* Code */
+			10415,	/* Vendor */
+			"MO-LR",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Teleservice-List, Grouped, code 1486, section 7.3.99             */
+	{
+		struct dict_avp_data data = {
+			1486,	/* Code */
+			10415,	/* Vendor */
+			"Teleservice-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TS-Code, OctetString, code 1487, section 7.3.100                 */
+	{
+		struct dict_avp_data data = {
+			1487,	/* Code */
+			10415,	/* Vendor */
+			"TS-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 V12.4.0 (2014-03) renamed                   */
+	/* Call-Barring-Infor-List (1488) to Call-Barring-Info (1488).      */
+	/*                                                                  */
+	/* Change-1.4.0: Call-Barring-Infor-List (1488) renamed to Call-Barring-Info (1488). */
+	/* Call-Barring-Info, Grouped, code 1488, section 7.3.101           */
+	{
+		struct dict_avp_data data = {
+			1488,	/* Code */
+			10415,	/* Vendor */
+			"Call-Barring-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGSN-Number, OctetString, code 1489, section 7.3.102             */
+	{
+		struct dict_avp_data data = {
+			1489,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IDR-Flags, Unsigned32, code 1490, section 7.3.103                */
+	{
+		struct dict_avp_data data = {
+			1490,	/* Code */
+			10415,	/* Vendor */
+			"IDR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ICS-Indicator, Enumerated, code 1491, section 7.3.104            */
+	{
+		struct dict_avp_data data = {
+			1491,	/* Code */
+			10415,	/* Vendor */
+			"ICS-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ICS-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* IMS-Voice-Over-PS-Sessions-Supported, Enumerated, code 1492, section 7.3.106 */
+	{
+		struct dict_avp_data data = {
+			1492,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Voice-Over-PS-Sessions-Supported",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Voice-Over-PS-Sessions-Supported)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions, Enumerated, code 1493, section 7.3.107 */
+	{
+		struct dict_avp_data data = {
+			1493,	/* Code */
+			10415,	/* Vendor */
+			"Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Last-UE-Activity-Time, Time, code 1494, section 7.3.108          */
+	{
+		struct dict_avp_data data = {
+			1494,	/* Code */
+			10415,	/* Vendor */
+			"Last-UE-Activity-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* EPS-User-State, Grouped, code 1495, section 7.3.110              */
+	{
+		struct dict_avp_data data = {
+			1495,	/* Code */
+			10415,	/* Vendor */
+			"EPS-User-State",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* EPS-Location-Information, Grouped, code 1496, section 7.3.111    */
+	{
+		struct dict_avp_data data = {
+			1496,	/* Code */
+			10415,	/* Vendor */
+			"EPS-Location-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MME-User-State, Grouped, code 1497, section 7.3.112              */
+	{
+		struct dict_avp_data data = {
+			1497,	/* Code */
+			10415,	/* Vendor */
+			"MME-User-State",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGSN-User-State, Grouped, code 1498, section 7.3.113             */
+	{
+		struct dict_avp_data data = {
+			1498,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-User-State",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* User-State, Enumerated, code 1499, section 7.3.114               */
+	{
+		struct dict_avp_data data = {
+			1499,	/* Code */
+			10415,	/* Vendor */
+			"User-State",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-State)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 Table 7.3.1/1 row MME-Location-Information (1600) */
+	/* incorrectly has a space instead of hyphen in the name.           */
+	/*                                                                  */
+	/* Change-1.4.0: MME-LocationInformation (1600) renamed to MME-Location-Information(1600). */
+	/* MME-Location-Information, Grouped, code 1600, section 7.3.115    */
+	{
+		struct dict_avp_data data = {
+			1600,	/* Code */
+			10415,	/* Vendor */
+			"MME-Location-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGSN-Location-Information, Grouped, code 1601, section 7.3.116   */
+	{
+		struct dict_avp_data data = {
+			1601,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Location-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* E-UTRAN-Cell-Global-Identity, OctetString, code 1602, section 7.3.117 */
+	{
+		struct dict_avp_data data = {
+			1602,	/* Code */
+			10415,	/* Vendor */
+			"E-UTRAN-Cell-Global-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Tracking-Area-Identity, OctetString, code 1603, section 7.3.118  */
+	{
+		struct dict_avp_data data = {
+			1603,	/* Code */
+			10415,	/* Vendor */
+			"Tracking-Area-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Cell-Global-Identity, OctetString, code 1604, section 7.3.119    */
+	{
+		struct dict_avp_data data = {
+			1604,	/* Code */
+			10415,	/* Vendor */
+			"Cell-Global-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Routing-Area-Identity, OctetString, code 1605, section 7.3.120   */
+	{
+		struct dict_avp_data data = {
+			1605,	/* Code */
+			10415,	/* Vendor */
+			"Routing-Area-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Area-Identity, OctetString, code 1606, section 7.3.121  */
+	{
+		struct dict_avp_data data = {
+			1606,	/* Code */
+			10415,	/* Vendor */
+			"Location-Area-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Area-Identity, OctetString, code 1607, section 7.3.122   */
+	{
+		struct dict_avp_data data = {
+			1607,	/* Code */
+			10415,	/* Vendor */
+			"Service-Area-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Geographical-Information, OctetString, code 1608, section 7.3.123 */
+	{
+		struct dict_avp_data data = {
+			1608,	/* Code */
+			10415,	/* Vendor */
+			"Geographical-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Geodetic-Information, OctetString, code 1609, section 7.3.124    */
+	{
+		struct dict_avp_data data = {
+			1609,	/* Code */
+			10415,	/* Vendor */
+			"Geodetic-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Current-Location-Retrieved, Enumerated, code 1610, section 7.3.125 */
+	{
+		struct dict_avp_data data = {
+			1610,	/* Code */
+			10415,	/* Vendor */
+			"Current-Location-Retrieved",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location-Retrieved)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Age-Of-Location-Information, Unsigned32, code 1611, section 7.3.126 */
+	{
+		struct dict_avp_data data = {
+			1611,	/* Code */
+			10415,	/* Vendor */
+			"Age-Of-Location-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Active-APN, Grouped, code 1612, section 7.3.127                  */
+	{
+		struct dict_avp_data data = {
+			1612,	/* Code */
+			10415,	/* Vendor */
+			"Active-APN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Error-Diagnostic, Enumerated, code 1614, section 7.3.128         */
+	{
+		struct dict_avp_data data = {
+			1614,	/* Code */
+			10415,	/* Vendor */
+			"Error-Diagnostic",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Error-Diagnostic)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Ext-PDP-Address, Address, code 1621, section 7.3.129             */
+	{
+		struct dict_avp_data data = {
+			1621,	/* Code */
+			10415,	/* Vendor */
+			"Ext-PDP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* UE-SRVCC-Capability, Enumerated, code 1615, section 7.3.130      */
+	{
+		struct dict_avp_data data = {
+			1615,	/* Code */
+			10415,	/* Vendor */
+			"UE-SRVCC-Capability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-SRVCC-Capability)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MPS-Priority, Unsigned32, code 1616, section 7.3.131             */
+	{
+		struct dict_avp_data data = {
+			1616,	/* Code */
+			10415,	/* Vendor */
+			"MPS-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* VPLMN-LIPA-Allowed, Enumerated, code 1617, section 7.3.132       */
+	{
+		struct dict_avp_data data = {
+			1617,	/* Code */
+			10415,	/* Vendor */
+			"VPLMN-LIPA-Allowed",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-LIPA-Allowed)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LIPA-Permission, Enumerated, code 1618, section 7.3.133          */
+	{
+		struct dict_avp_data data = {
+			1618,	/* Code */
+			10415,	/* Vendor */
+			"LIPA-Permission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LIPA-Permission)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Subscribed-Periodic-RAU-TAU-Timer, Unsigned32, code 1619, section 7.3.134 */
+	{
+		struct dict_avp_data data = {
+			1619,	/* Code */
+			10415,	/* Vendor */
+			"Subscribed-Periodic-RAU-TAU-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Ext-PDP-Type, OctetString, code 1620, section 7.3.75A            */
+	{
+		struct dict_avp_data data = {
+			1620,	/* Code */
+			10415,	/* Vendor */
+			"Ext-PDP-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIPTO-Permission, Enumerated, code 1613, section 7.3.135         */
+	{
+		struct dict_avp_data data = {
+			1613,	/* Code */
+			10415,	/* Vendor */
+			"SIPTO-Permission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIPTO-Permission)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MDT-Configuration, Grouped, code 1622, section 7.3.136           */
+	{
+		struct dict_avp_data data = {
+			1622,	/* Code */
+			10415,	/* Vendor */
+			"MDT-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Job-Type, Enumerated, code 1623, section 7.3.137                 */
+	{
+		struct dict_avp_data data = {
+			1623,	/* Code */
+			10415,	/* Vendor */
+			"Job-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Job-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Area-Scope, Grouped, code 1624, section 7.3.138                  */
+	{
+		struct dict_avp_data data = {
+			1624,	/* Code */
+			10415,	/* Vendor */
+			"Area-Scope",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* List-Of-Measurements, Unsigned32, code 1625, section 7.3.139     */
+	{
+		struct dict_avp_data data = {
+			1625,	/* Code */
+			10415,	/* Vendor */
+			"List-Of-Measurements",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Trigger, Unsigned32, code 1626, section 7.3.140        */
+	{
+		struct dict_avp_data data = {
+			1626,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Report-Interval, Enumerated, code 1627, section 7.3.141          */
+	{
+		struct dict_avp_data data = {
+			1627,	/* Code */
+			10415,	/* Vendor */
+			"Report-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Interval)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Report-Amount, Enumerated, code 1628, section 7.3.142            */
+	{
+		struct dict_avp_data data = {
+			1628,	/* Code */
+			10415,	/* Vendor */
+			"Report-Amount",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Amount)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Event-Threshold-RSRP, Unsigned32, code 1629, section 7.3.143     */
+	{
+		struct dict_avp_data data = {
+			1629,	/* Code */
+			10415,	/* Vendor */
+			"Event-Threshold-RSRP",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Threshold-RSRQ, Unsigned32, code 1630, section 7.3.144     */
+	{
+		struct dict_avp_data data = {
+			1630,	/* Code */
+			10415,	/* Vendor */
+			"Event-Threshold-RSRQ",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Logging-Interval, Enumerated, code 1631, section 7.3.145         */
+	{
+		struct dict_avp_data data = {
+			1631,	/* Code */
+			10415,	/* Vendor */
+			"Logging-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Interval)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Logging-Duration, Enumerated, code 1632, section 7.3.146         */
+	{
+		struct dict_avp_data data = {
+			1632,	/* Code */
+			10415,	/* Vendor */
+			"Logging-Duration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Duration)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Relay-Node-Indicator, Enumerated, code 1633, section 7.3.147     */
+	{
+		struct dict_avp_data data = {
+			1633,	/* Code */
+			10415,	/* Vendor */
+			"Relay-Node-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relay-Node-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MDT-User-Consent, Enumerated, code 1634, section 7.3.148         */
+	{
+		struct dict_avp_data data = {
+			1634,	/* Code */
+			10415,	/* Vendor */
+			"MDT-User-Consent",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MDT-User-Consent)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PUR-Flags, Unsigned32, code 1635, section 7.3.149                */
+	{
+		struct dict_avp_data data = {
+			1635,	/* Code */
+			10415,	/* Vendor */
+			"PUR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subscribed-VSRVCC, Enumerated, code 1636, section 7.3.150        */
+	{
+		struct dict_avp_data data = {
+			1636,	/* Code */
+			10415,	/* Vendor */
+			"Subscribed-VSRVCC",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscribed-VSRVCC)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Equivalent-PLMN-List, Grouped, code 1637, section 7.3.151        */
+	{
+		struct dict_avp_data data = {
+			1637,	/* Code */
+			10415,	/* Vendor */
+			"Equivalent-PLMN-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CLR-Flags, Unsigned32, code 1638, section 7.3.152                */
+	{
+		struct dict_avp_data data = {
+			1638,	/* Code */
+			10415,	/* Vendor */
+			"CLR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UVR-Flags, Unsigned32, code 1639, section 7.3.153                */
+	{
+		struct dict_avp_data data = {
+			1639,	/* Code */
+			10415,	/* Vendor */
+			"UVR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UVA-Flags, Unsigned32, code 1640, section 7.3.154                */
+	{
+		struct dict_avp_data data = {
+			1640,	/* Code */
+			10415,	/* Vendor */
+			"UVA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* VPLMN-CSG-Subscription-Data, Grouped, code 1641, section 7.3.155 */
+	{
+		struct dict_avp_data data = {
+			1641,	/* Code */
+			10415,	/* Vendor */
+			"VPLMN-CSG-Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Time-Zone, UTF8String, code 1642, section 7.3.163                */
+	{
+		struct dict_avp_data data = {
+			1642,	/* Code */
+			10415,	/* Vendor */
+			"Time-Zone",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* A-MSISDN, OctetString, code 1643, section 7.3.157                */
+	{
+		struct dict_avp_data data = {
+			1643,	/* Code */
+			10415,	/* Vendor */
+			"A-MSISDN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MME-Number-for-MT-SMS, OctetString, code 1645, section 7.3.159   */
+	{
+		struct dict_avp_data data = {
+			1645,	/* Code */
+			10415,	/* Vendor */
+			"MME-Number-for-MT-SMS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SMS-Register-Request, Enumerated, code 1648, section 7.3.162     */
+	{
+		struct dict_avp_data data = {
+			1648,	/* Code */
+			10415,	/* Vendor */
+			"SMS-Register-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Register-Request)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Local-Time-Zone, Grouped, code 1649, section 7.3.156             */
+	{
+		struct dict_avp_data data = {
+			1649,	/* Code */
+			10415,	/* Vendor */
+			"Local-Time-Zone",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Daylight-Saving-Time, Enumerated, code 1650, section 7.3.164     */
+	{
+		struct dict_avp_data data = {
+			1650,	/* Code */
+			10415,	/* Vendor */
+			"Daylight-Saving-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Daylight-Saving-Time)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Subscription-Data-Flags, Unsigned32, code 1654, section 7.3.165  */
+	{
+		struct dict_avp_data data = {
+			1654,	/* Code */
+			10415,	/* Vendor */
+			"Subscription-Data-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of       */
+	/* Measurement-Period-LTE (1655) from 1656.                         */
+	/*                                                                  */
+	/* Change-1.4.0: Measurement-Period-LTE (1656) code changed to Measurement-Period-LTE (1655). */
+	/* Measurement-Period-LTE, Enumerated, code 1655, section 7.3.166   */
+	{
+		struct dict_avp_data data = {
+			1655,	/* Code */
+			10415,	/* Vendor */
+			"Measurement-Period-LTE",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-LTE)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of       */
+	/* Measurement-Period-UMTS (1656) from 1655.                        */
+	/*                                                                  */
+	/* Change-1.4.0: Measurement-Period-UMTS (1655) code changed to Measurement-Period-UMTS (1656). */
+	/* Measurement-Period-UMTS, Enumerated, code 1656, section 7.3.167  */
+	{
+		struct dict_avp_data data = {
+			1656,	/* Code */
+			10415,	/* Vendor */
+			"Measurement-Period-UMTS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-UMTS)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Collection-Period-RRM-LTE, Enumerated, code 1657, section 7.3.168 */
+	{
+		struct dict_avp_data data = {
+			1657,	/* Code */
+			10415,	/* Vendor */
+			"Collection-Period-RRM-LTE",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-LTE)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Collection-Period-RRM-UMTS, Enumerated, code 1658, section 7.3.169 */
+	{
+		struct dict_avp_data data = {
+			1658,	/* Code */
+			10415,	/* Vendor */
+			"Collection-Period-RRM-UMTS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-UMTS)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Positioning-Method, OctetString, code 1659, section 7.3.170      */
+	{
+		struct dict_avp_data data = {
+			1659,	/* Code */
+			10415,	/* Vendor */
+			"Positioning-Method",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Measurement-Quantity, OctetString, code 1660, section 7.3.171    */
+	{
+		struct dict_avp_data data = {
+			1660,	/* Code */
+			10415,	/* Vendor */
+			"Measurement-Quantity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Threshold-Event-1F, Integer32, code 1661, section 7.3.172  */
+	{
+		struct dict_avp_data data = {
+			1661,	/* Code */
+			10415,	/* Vendor */
+			"Event-Threshold-Event-1F",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Event-Threshold-Event-1I, Integer32, code 1662, section 7.3.173  */
+	{
+		struct dict_avp_data data = {
+			1662,	/* Code */
+			10415,	/* Vendor */
+			"Event-Threshold-Event-1I",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Restoration-Priority, Unsigned32, code 1663, section 7.3.174     */
+	{
+		struct dict_avp_data data = {
+			1663,	/* Code */
+			10415,	/* Vendor */
+			"Restoration-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGs-MME-Identity, UTF8String, code 1664, section 7.3.175         */
+	{
+		struct dict_avp_data data = {
+			1664,	/* Code */
+			10415,	/* Vendor */
+			"SGs-MME-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SIPTO-Local-Network-Permission, Unsigned32, code 1665, section 7.3.176 */
+	{
+		struct dict_avp_data data = {
+			1665,	/* Code */
+			10415,	/* Vendor */
+			"SIPTO-Local-Network-Permission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Coupled-Node-Diameter-ID, DiameterIdentity, code 1666, section 7.3.177 */
+	{
+		struct dict_avp_data data = {
+			1666,	/* Code */
+			10415,	/* Vendor */
+			"Coupled-Node-Diameter-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* WLAN-offloadability, Grouped, code 1667, section 7.3.181         */
+	{
+		struct dict_avp_data data = {
+			1667,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-offloadability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-offloadability-EUTRAN, Unsigned32, code 1668, section 7.3.182 */
+	{
+		struct dict_avp_data data = {
+			1668,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-offloadability-EUTRAN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-offloadability-UTRAN, Unsigned32, code 1669, section 7.3.183 */
+	{
+		struct dict_avp_data data = {
+			1669,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-offloadability-UTRAN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reset-ID, OctetString, code 1670, section 7.3.184                */
+	{
+		struct dict_avp_data data = {
+			1670,	/* Code */
+			10415,	/* Vendor */
+			"Reset-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MDT-Allowed-PLMN-Id, OctetString, code 1671, section 7.3.185     */
+	{
+		struct dict_avp_data data = {
+			1671,	/* Code */
+			10415,	/* Vendor */
+			"MDT-Allowed-PLMN-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Adjacent-PLMNs, Grouped, code 1672, section 7.3.186              */
+	{
+		struct dict_avp_data data = {
+			1672,	/* Code */
+			10415,	/* Vendor */
+			"Adjacent-PLMNs",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Adjacent-Access-Restriction-Data, Grouped, code 1673, section 7.3.187 */
+	{
+		struct dict_avp_data data = {
+			1673,	/* Code */
+			10415,	/* Vendor */
+			"Adjacent-Access-Restriction-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DL-Buffering-Suggested-Packet-Count, Integer32, code 1674, section 7.3.188 */
+	{
+		struct dict_avp_data data = {
+			1674,	/* Code */
+			10415,	/* Vendor */
+			"DL-Buffering-Suggested-Packet-Count",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMSI-Group-Id, Grouped, code 1675, section 7.3.189               */
+	{
+		struct dict_avp_data data = {
+			1675,	/* Code */
+			10415,	/* Vendor */
+			"IMSI-Group-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-Service-Id, Unsigned32, code 1676, section 7.3.190         */
+	{
+		struct dict_avp_data data = {
+			1676,	/* Code */
+			10415,	/* Vendor */
+			"Group-Service-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-PLMN-Id, OctetString, code 1677, section 7.3.191           */
+	{
+		struct dict_avp_data data = {
+			1677,	/* Code */
+			10415,	/* Vendor */
+			"Group-PLMN-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Local-Group-Id, OctetString, code 1678, section 7.3.192          */
+	{
+		struct dict_avp_data data = {
+			1678,	/* Code */
+			10415,	/* Vendor */
+			"Local-Group-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AIR-Flags, Unsigned32, code 1679, section 7.3.201                */
+	{
+		struct dict_avp_data data = {
+			1679,	/* Code */
+			10415,	/* Vendor */
+			"AIR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-Usage-Type, Unsigned32, code 1680, section 7.3.202            */
+	{
+		struct dict_avp_data data = {
+			1680,	/* Code */
+			10415,	/* Vendor */
+			"UE-Usage-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Non-IP-PDN-Type-Indicator, Enumerated, code 1681, section 7.3.204 */
+	{
+		struct dict_avp_data data = {
+			1681,	/* Code */
+			10415,	/* Vendor */
+			"Non-IP-PDN-Type-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-IP-PDN-Type-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Non-IP-Data-Delivery-Mechanism, Unsigned32, code 1682, section 7.3.205 */
+	{
+		struct dict_avp_data data = {
+			1682,	/* Code */
+			10415,	/* Vendor */
+			"Non-IP-Data-Delivery-Mechanism",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 Table 7.3.1/1 row Additional-Context-ID (1683) has */
+	/* incorrect name and should be "Additional-Context-Identifier" per clause 7.3.206. */
+	/*                                                                  */
+	/* Fix: Additional-Context-ID (1683) renamed to Additional-Context-Identifier (1683). */
+	/* Additional-Context-Identifier, Unsigned32, code 1683, section 7.3.206 */
+	{
+		struct dict_avp_data data = {
+			1683,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Context-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCEF-Realm, DiameterIdentity, code 1684, section 7.3.207         */
+	{
+		struct dict_avp_data data = {
+			1684,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* Subscription-Data-Deletion, Grouped, code 1685, section 7.3.208  */
+	{
+		struct dict_avp_data data = {
+			1685,	/* Code */
+			10415,	/* Vendor */
+			"Subscription-Data-Deletion",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.272 Table 7.3.1/1 row Preferred-Data-Mode (1686) */
+	/* incorrectly has value type Grouped instead of Unsigned32,        */
+	/* conflicting with clause 7.3.209.                                 */
+	/*                                                                  */
+	/* Fix: Preferred-Data-Mode (1686) type changed from Grouped to Unsigned32. */
+	/* Preferred-Data-Mode, Unsigned32, code 1686, section 7.3.209      */
+	{
+		struct dict_avp_data data = {
+			1686,	/* Code */
+			10415,	/* Vendor */
+			"Preferred-Data-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Emergency-Info, Grouped, code 1687, section 7.3.210              */
+	{
+		struct dict_avp_data data = {
+			1687,	/* Code */
+			10415,	/* Vendor */
+			"Emergency-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Subscription-Data, Grouped, code 1688, section 7.3.212       */
+	{
+		struct dict_avp_data data = {
+			1688,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Permission, Unsigned32, code 1689, section 7.3.213           */
+	{
+		struct dict_avp_data data = {
+			1689,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Permission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDN-Connection-Continuity, Unsigned32, code 1690, section 7.3.214 */
+	{
+		struct dict_avp_data data = {
+			1690,	/* Code */
+			10415,	/* Vendor */
+			"PDN-Connection-Continuity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* eDRX-Cycle-Length, Grouped, code 1691, section 7.3.215           */
+	{
+		struct dict_avp_data data = {
+			1691,	/* Code */
+			10415,	/* Vendor */
+			"eDRX-Cycle-Length",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* eDRX-Cycle-Length-Value, OctetString, code 1692, section 7.3.216 */
+	{
+		struct dict_avp_data data = {
+			1692,	/* Code */
+			10415,	/* Vendor */
+			"eDRX-Cycle-Length-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-PC5-AMBR, Unsigned32, code 1693, section 7.3.217              */
+	{
+		struct dict_avp_data data = {
+			1693,	/* Code */
+			10415,	/* Vendor */
+			"UE-PC5-AMBR",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBSFN-Area, Grouped, code 1694, section 7.3.219                  */
+	{
+		struct dict_avp_data data = {
+			1694,	/* Code */
+			10415,	/* Vendor */
+			"MBSFN-Area",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBSFN-Area-ID, Unsigned32, code 1695, section 7.3.220            */
+	{
+		struct dict_avp_data data = {
+			1695,	/* Code */
+			10415,	/* Vendor */
+			"MBSFN-Area-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Carrier-Frequency, Unsigned32, code 1696, section 7.3.221        */
+	{
+		struct dict_avp_data data = {
+			1696,	/* Code */
+			10415,	/* Vendor */
+			"Carrier-Frequency",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RDS-Indicator, Enumerated, code 1697, section 7.3.222            */
+	{
+		struct dict_avp_data data = {
+			1697,	/* Code */
+			10415,	/* Vendor */
+			"RDS-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RDS-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Service-Gap-Time, Unsigned32, code 1698, section 7.3.223         */
+	{
+		struct dict_avp_data data = {
+			1698,	/* Code */
+			10415,	/* Vendor */
+			"Service-Gap-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Aerial-UE-Subscription-Information, Unsigned32, code 1699, section 7.3.224 */
+	{
+		struct dict_avp_data data = {
+			1699,	/* Code */
+			10415,	/* Vendor */
+			"Aerial-UE-Subscription-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Broadcast-Location-Assistance-Data-Types, Unsigned64, code 1700, section 7.3.225 */
+	{
+		struct dict_avp_data data = {
+			1700,	/* Code */
+			10415,	/* Vendor */
+			"Broadcast-Location-Assistance-Data-Types",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Paging-Time-Window, Grouped, code 1701, section 7.3.226          */
+	{
+		struct dict_avp_data data = {
+			1701,	/* Code */
+			10415,	/* Vendor */
+			"Paging-Time-Window",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Operation-Mode, Unsigned32, code 1702, section 7.3.227           */
+	{
+		struct dict_avp_data data = {
+			1702,	/* Code */
+			10415,	/* Vendor */
+			"Operation-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Paging-Time-Window-Length, OctetString, code 1703, section 7.3.228 */
+	{
+		struct dict_avp_data data = {
+			1703,	/* Code */
+			10415,	/* Vendor */
+			"Paging-Time-Window-Length",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Core-Network-Restrictions, Unsigned32, code 1704, section 7.3.230 */
+	{
+		struct dict_avp_data data = {
+			1704,	/* Code */
+			10415,	/* Vendor */
+			"Core-Network-Restrictions",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* eDRX-Related-RAT, Grouped, code 1705, section 7.3.229            */
+	{
+		struct dict_avp_data data = {
+			1705,	/* Code */
+			10415,	/* Vendor */
+			"eDRX-Related-RAT",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Interworking-5GS-Indicator, Enumerated, code 1706, section 7.3.231 */
+	{
+		struct dict_avp_data data = {
+			1706,	/* Code */
+			10415,	/* Vendor */
+			"Interworking-5GS-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interworking-5GS-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 V15.4.0 (2019-09)                                 */
+	/* Evolved Packet System (EPS);                                     */
+	/* 3GPP EPS AAA interfaces                                          */
+	/*                                                                  */
+	/* From 3GPP 29273-f40.docx                                         */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 5.2.3.1/1: Diameter STa AVPs                */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* ANID, UTF8String, code 1504, section 5.2.3.7                     */
+	{
+		struct dict_avp_data data = {
+			1504,	/* Code */
+			10415,	/* Vendor */
+			"ANID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* AN-Trusted, Enumerated, code 1503, section 5.2.3.9               */
+	{
+		struct dict_avp_data data = {
+			1503,	/* Code */
+			10415,	/* Vendor */
+			"AN-Trusted",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AN-Trusted)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MIP-FA-RK, OctetString, code 1506, section 5.2.3.12              */
+	{
+		struct dict_avp_data data = {
+			1506,	/* Code */
+			10415,	/* Vendor */
+			"MIP-FA-RK",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MIP-FA-RK-SPI, Unsigned32, code 1507, section 5.2.3.13           */
+	{
+		struct dict_avp_data data = {
+			1507,	/* Code */
+			10415,	/* Vendor */
+			"MIP-FA-RK-SPI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Full-Network-Name, OctetString, code 1516, section 5.2.3.14      */
+	{
+		struct dict_avp_data data = {
+			1516,	/* Code */
+			10415,	/* Vendor */
+			"Full-Network-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Short-Network-Name, OctetString, code 1517, section 5.2.3.15     */
+	{
+		struct dict_avp_data data = {
+			1517,	/* Code */
+			10415,	/* Vendor */
+			"Short-Network-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Identifier, Grouped, code 1509, section 5.2.3.18            */
+	{
+		struct dict_avp_data data = {
+			1509,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AAA-Failure-Indication, Unsigned32, code 1518, section 8.2.3.21  */
+	{
+		struct dict_avp_data data = {
+			1518,	/* Code */
+			10415,	/* Vendor */
+			"AAA-Failure-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transport-Access-Type, Enumerated, code 1519, section 5.2.3.19   */
+	{
+		struct dict_avp_data data = {
+			1519,	/* Code */
+			10415,	/* Vendor */
+			"Transport-Access-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transport-Access-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* DER-Flags, Unsigned32, code 1520, section 5.2.3.20               */
+	{
+		struct dict_avp_data data = {
+			1520,	/* Code */
+			10415,	/* Vendor */
+			"DER-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DEA-Flags, Unsigned32, code 1521, section 5.2.3.21               */
+	{
+		struct dict_avp_data data = {
+			1521,	/* Code */
+			10415,	/* Vendor */
+			"DEA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SSID, UTF8String, code 1524, section 5.2.3.22                    */
+	{
+		struct dict_avp_data data = {
+			1524,	/* Code */
+			10415,	/* Vendor */
+			"SSID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* HESSID, UTF8String, code 1525, section 5.2.3.23                  */
+	{
+		struct dict_avp_data data = {
+			1525,	/* Code */
+			10415,	/* Vendor */
+			"HESSID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Access-Network-Info, Grouped, code 1526, section 5.2.3.24        */
+	{
+		struct dict_avp_data data = {
+			1526,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAN-Connection-Mode, Unsigned32, code 1527, section 5.2.3.25    */
+	{
+		struct dict_avp_data data = {
+			1527,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-Connection-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAN-Connectivity-Parameters, Grouped, code 1528, section 5.2.3.26 */
+	{
+		struct dict_avp_data data = {
+			1528,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-Connectivity-Parameters",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Connectivity-Flags, Unsigned32, code 1529, section 5.2.3.27      */
+	{
+		struct dict_avp_data data = {
+			1529,	/* Code */
+			10415,	/* Vendor */
+			"Connectivity-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAN-PCO, OctetString, code 1530, section 5.2.3.28               */
+	{
+		struct dict_avp_data data = {
+			1530,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-PCO",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAG-CP-Address, Address, code 1531, section 5.2.3.29            */
+	{
+		struct dict_avp_data data = {
+			1531,	/* Code */
+			10415,	/* Vendor */
+			"TWAG-CP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* TWAG-UP-Address, UTF8String, code 1532, section 5.2.3.30         */
+	{
+		struct dict_avp_data data = {
+			1532,	/* Code */
+			10415,	/* Vendor */
+			"TWAG-UP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* TWAN-S2a-Failure-Cause, Unsigned32, code 1533, section 5.2.3.31  */
+	{
+		struct dict_avp_data data = {
+			1533,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-S2a-Failure-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Back-Off-Timer, Unsigned32, code 1534, section 5.2.3.32       */
+	{
+		struct dict_avp_data data = {
+			1534,	/* Code */
+			10415,	/* Vendor */
+			"SM-Back-Off-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLCP-Key, OctetString, code 1535, section 5.2.3.33               */
+	{
+		struct dict_avp_data data = {
+			1535,	/* Code */
+			10415,	/* Vendor */
+			"WLCP-Key",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Emergency-Services, Unsigned32, code 1538, section 7.2.3.4       */
+	{
+		struct dict_avp_data data = {
+			1538,	/* Code */
+			10415,	/* Vendor */
+			"Emergency-Services",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMEI-Check-In-VPLMN-Result, Unsigned32, code 1540, section 5.2.3.35 */
+	{
+		struct dict_avp_data data = {
+			1540,	/* Code */
+			10415,	/* Vendor */
+			"IMEI-Check-In-VPLMN-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 6.2.3.1/1: Diameter SWd AVPs                */
+	/*                                                                  */
+	/* Note: No AVPs are first defined in this table.                   */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 7.2.3.1/1: Diameter SWm AVPs                */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* Trace-Info, Grouped, code 1505, section 8.2.3.1.3                */
+	{
+		struct dict_avp_data data = {
+			1505,	/* Code */
+			10415,	/* Vendor */
+			"Trace-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AAR-Flags, Unsigned32, code 1539, section 7.2.3.5                */
+	{
+		struct dict_avp_data data = {
+			1539,	/* Code */
+			10415,	/* Vendor */
+			"AAR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 8.2.3.0/1: Diameter SWx AVPs                */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* Non-3GPP-User-Data, Grouped, code 1500, section 8.2.3.1          */
+	{
+		struct dict_avp_data data = {
+			1500,	/* Code */
+			10415,	/* Vendor */
+			"Non-3GPP-User-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Non-3GPP-IP-Access, Enumerated, code 1501, section 8.2.3.3       */
+	{
+		struct dict_avp_data data = {
+			1501,	/* Code */
+			10415,	/* Vendor */
+			"Non-3GPP-IP-Access",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-3GPP-IP-Access)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Non-3GPP-IP-Access-APN, Enumerated, code 1502, section 8.2.3.4   */
+	{
+		struct dict_avp_data data = {
+			1502,	/* Code */
+			10415,	/* Vendor */
+			"Non-3GPP-IP-Access-APN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-3GPP-IP-Access-APN)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PPR-Flags, Unsigned32, code 1508, section 8.2.3.17               */
+	{
+		struct dict_avp_data data = {
+			1508,	/* Code */
+			10415,	/* Vendor */
+			"PPR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAN-Default-APN-Context-Id, Unsigned32, code 1512, section 8.2.3.18 */
+	{
+		struct dict_avp_data data = {
+			1512,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-Default-APN-Context-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAN-Access-Info, Grouped, code 1510, section 8.2.3.19           */
+	{
+		struct dict_avp_data data = {
+			1510,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-Access-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Authorization-Flags, Unsigned32, code 1511, section 8.2.3.20 */
+	{
+		struct dict_avp_data data = {
+			1511,	/* Code */
+			10415,	/* Vendor */
+			"Access-Authorization-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-AAA-Server-Name, DiameterIdentity, code 318, section 8.2.3.24 */
+	{
+		struct dict_avp_data data = {
+			318,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-AAA-Server-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* ERP-Authorization, Unsigned32, code 1541, section 8.2.3.27       */
+	{
+		struct dict_avp_data data = {
+			1541,	/* Code */
+			10415,	/* Vendor */
+			"ERP-Authorization",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 9.2.3.1.1/1: Diameter S6b AVPs for DSMIPv6  */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* RAR-Flags, Unsigned32, code 1522, section 9.2.3.1.5              */
+	{
+		struct dict_avp_data data = {
+			1522,	/* Code */
+			10415,	/* Vendor */
+			"RAR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Trust-Relationship-Update (1515) Enumerated removed in 3GPP TS 29.273 V11.4.0 (2012-12). */
+
+	/* DER-S6b-Flags, Unsigned32, code 1523, section 9.2.3.7            */
+	{
+		struct dict_avp_data data = {
+			1523,	/* Code */
+			10415,	/* Vendor */
+			"DER-S6b-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 9.2.3.2.1/1: Diameter S6b AVPs for PMIPv6 or GTPv2 */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* Origination-Time-Stamp, Unsigned64, code 1536, section 9.2.3.2.6 */
+	{
+		struct dict_avp_data data = {
+			1536,	/* Code */
+			10415,	/* Vendor */
+			"Origination-Time-Stamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Wait-Time, Unsigned32, code 1537, section 9.2.3.2.7      */
+	{
+		struct dict_avp_data data = {
+			1537,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Wait-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+
+	/*==================================================================*/
+	/* 3GPP TS 29.273 Table 9.2.3.6.1/1: Diameter S6b AVPs for MIPv4 FACoA */
+	/*                                                                  */
+	/* Note: No AVPs are first defined in this table.                   */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.283 V15.1.0 (2019-09)                                 */
+	/* Diameter Data Management Applications                            */
+	/*                                                                  */
+	/* From 3GPP 29283-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.283 Table 7.3.1-1: MCPTT-2, MCVideo-2, MCData-2 and CSC-13 specific Diameter AVPs */
+	/*==================================================================*/
+
+	/* MCPTT-ID, UTF8String, code 4500, section 7.3.2                   */
+	{
+		struct dict_avp_data data = {
+			4500,	/* Code */
+			10415,	/* Vendor */
+			"MCPTT-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Data-Identification, Grouped, code 4501, section 7.3.3           */
+	{
+		struct dict_avp_data data = {
+			4501,	/* Code */
+			10415,	/* Vendor */
+			"Data-Identification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Data-Identification-Prefix, Unsigned32, code 4502, section 7.3.11 */
+	{
+		struct dict_avp_data data = {
+			4502,	/* Code */
+			10415,	/* Vendor */
+			"Data-Identification-Prefix",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Data-Identification-Flags, Unsigned64, code 4503, section 7.3.12 */
+	{
+		struct dict_avp_data data = {
+			4503,	/* Code */
+			10415,	/* Vendor */
+			"Data-Identification-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DPR-Flags, Unsigned32, code 4504, section 7.3.13                 */
+	{
+		struct dict_avp_data data = {
+			4504,	/* Code */
+			10415,	/* Vendor */
+			"DPR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DPA-Flags, Unsigned32, code 4505, section 7.3.14                 */
+	{
+		struct dict_avp_data data = {
+			4505,	/* Code */
+			10415,	/* Vendor */
+			"DPA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DUR-Flags, Unsigned32, code 4506, section 7.3.15                 */
+	{
+		struct dict_avp_data data = {
+			4506,	/* Code */
+			10415,	/* Vendor */
+			"DUR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DUA-Flags, Unsigned32, code 4507, section 7.3.16                 */
+	{
+		struct dict_avp_data data = {
+			4507,	/* Code */
+			10415,	/* Vendor */
+			"DUA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NDR-Flags, Unsigned32, code 4508, section 7.3.17                 */
+	{
+		struct dict_avp_data data = {
+			4508,	/* Code */
+			10415,	/* Vendor */
+			"NDR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NDA-Flags, Unsigned32, code 4509, section 7.3.18                 */
+	{
+		struct dict_avp_data data = {
+			4509,	/* Code */
+			10415,	/* Vendor */
+			"NDA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* User-Data-Id, Unsigned32, code 4510, section 7.3.19              */
+	{
+		struct dict_avp_data data = {
+			4510,	/* Code */
+			10415,	/* Vendor */
+			"User-Data-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MC-Service-User-Profile-Data, Grouped, code 4511, section 7.3.20 */
+	{
+		struct dict_avp_data data = {
+			4511,	/* Code */
+			10415,	/* Vendor */
+			"MC-Service-User-Profile-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107).  */
+	/* and 3GPP TS 29.329 Sequence-Number (716).                        */
+	/* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */
+	/* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */
+	/* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */
+	/*                                                                  */
+	/* Fix: Sequence-Number (4512) renamed to Sequence-Number-29.283 (4512). */
+	/* Sequence-Number-29.283, Unsigned32, code 4512, section 7.3.21    */
+	{
+		struct dict_avp_data data = {
+			4512,	/* Code */
+			10415,	/* Vendor */
+			"Sequence-Number-29.283",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Data, Grouped, code 4513, section 7.3.22                         */
+	{
+		struct dict_avp_data data = {
+			4513,	/* Code */
+			10415,	/* Vendor */
+			"Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MCVideo-ID, UTF8String, code 4514, section 7.3.24                */
+	{
+		struct dict_avp_data data = {
+			4514,	/* Code */
+			10415,	/* Vendor */
+			"MCVideo-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* MCData-ID, UTF8String, code 4515, section 7.3.25                 */
+	{
+		struct dict_avp_data data = {
+			4515,	/* Code */
+			10415,	/* Vendor */
+			"MCData-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.329 V15.2.0 (2019-09)                                 */
+	/* Sh Interface based on the Diameter protocol;                     */
+	/* Protocol details                                                 */
+	/*                                                                  */
+	/* From 3GPP 29329-f20.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.329 Table 6.3.1: Table 6.3.1: Diameter Multimedia Application AVPs */
+	/*                                                                  */
+	/* Note: AVPs referenced from other sources are not added here.     */
+	/*==================================================================*/
+
+	/* User-Identity, Grouped, code 700, section 6.3.1                  */
+	{
+		struct dict_avp_data data = {
+			700,	/* Code */
+			10415,	/* Vendor */
+			"User-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MSISDN, OctetString, code 701, section 6.3.2                     */
+	{
+		struct dict_avp_data data = {
+			701,	/* Code */
+			10415,	/* Vendor */
+			"MSISDN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.229 User-Data (606).         */
+	/* 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).       */
+	/* 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).       */
+	/*                                                                  */
+	/* Fix: User-Data (702) renamed to User-Data-29.329 (702).          */
+	/* User-Data-29.329, OctetString, code 702, section 6.3.3           */
+	{
+		struct dict_avp_data data = {
+			702,	/* Code */
+			10415,	/* Vendor */
+			"User-Data-29.329",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Data-Reference, Enumerated, code 703, section 6.3.4              */
+	{
+		struct dict_avp_data data = {
+			703,	/* Code */
+			10415,	/* Vendor */
+			"Data-Reference",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Data-Reference)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Service-Indication, OctetString, code 704, section 6.3.5         */
+	{
+		struct dict_avp_data data = {
+			704,	/* Code */
+			10415,	/* Vendor */
+			"Service-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Subs-Req-Type, Enumerated, code 705, section 6.3.6               */
+	{
+		struct dict_avp_data data = {
+			705,	/* Code */
+			10415,	/* Vendor */
+			"Subs-Req-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subs-Req-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Requested-Domain, Enumerated, code 706, section 6.3.7            */
+	{
+		struct dict_avp_data data = {
+			706,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Domain",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Requested-Domain)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Current-Location, Enumerated, code 707, section 6.3.8            */
+	{
+		struct dict_avp_data data = {
+			707,	/* Code */
+			10415,	/* Vendor */
+			"Current-Location",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Identity-Set, Enumerated, code 708, section 6.3.10               */
+	{
+		struct dict_avp_data data = {
+			708,	/* Code */
+			10415,	/* Vendor */
+			"Identity-Set",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Identity-Set)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Expiry-Time, Time, code 709, section 6.3.16                      */
+	{
+		struct dict_avp_data data = {
+			709,	/* Code */
+			10415,	/* Vendor */
+			"Expiry-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Send-Data-Indication, Enumerated, code 710, section 6.3.17       */
+	{
+		struct dict_avp_data data = {
+			710,	/* Code */
+			10415,	/* Vendor */
+			"Send-Data-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Send-Data-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* DSAI-Tag, OctetString, code 711, section 6.3.18                  */
+	{
+		struct dict_avp_data data = {
+			711,	/* Code */
+			10415,	/* Vendor */
+			"DSAI-Tag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* One-Time-Notification, Enumerated, code 712, section 6.3.22      */
+	{
+		struct dict_avp_data data = {
+			712,	/* Code */
+			10415,	/* Vendor */
+			"One-Time-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/One-Time-Notification)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Requested-Nodes, Unsigned32, code 713, section 6.3.7A            */
+	{
+		struct dict_avp_data data = {
+			713,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Nodes",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Serving-Node-Indication, Enumerated, code 714, section 6.3.23    */
+	{
+		struct dict_avp_data data = {
+			714,	/* Code */
+			10415,	/* Vendor */
+			"Serving-Node-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Repository-Data-ID, Grouped, code 715, section 6.3.24            */
+	{
+		struct dict_avp_data data = {
+			715,	/* Code */
+			10415,	/* Vendor */
+			"Repository-Data-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107)   */
+	/* and 3GPP TS 29.283 Sequence-Number (4512).                       */
+	/* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */
+	/* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */
+	/* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */
+	/* Sequence-Number, Unsigned32, code 716, section 6.3.25            */
+	{
+		struct dict_avp_data data = {
+			716,	/* Code */
+			10415,	/* Vendor */
+			"Sequence-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Pre-paging-Supported, Enumerated, code 717, section 6.3.26       */
+	{
+		struct dict_avp_data data = {
+			717,	/* Code */
+			10415,	/* Vendor */
+			"Pre-paging-Supported",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-paging-Supported)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Local-Time-Zone-Indication, Enumerated, code 718, section 6.3.27 */
+	{
+		struct dict_avp_data data = {
+			718,	/* Code */
+			10415,	/* Vendor */
+			"Local-Time-Zone-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-Time-Zone-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* UDR-Flags, Unsigned32, code 719, section 6.3.28                  */
+	{
+		struct dict_avp_data data = {
+			719,	/* Code */
+			10415,	/* Vendor */
+			"UDR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Call-Reference-Info, Grouped, code 720, section 6.3.29           */
+	{
+		struct dict_avp_data data = {
+			720,	/* Code */
+			10415,	/* Vendor */
+			"Call-Reference-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Call-Reference-Number, OctetString, code 721, section 6.3.30     */
+	{
+		struct dict_avp_data data = {
+			721,	/* Code */
+			10415,	/* Vendor */
+			"Call-Reference-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AS-Number, OctetString, code 722, section 6.3.31                 */
+	{
+		struct dict_avp_data data = {
+			722,	/* Code */
+			10415,	/* Vendor */
+			"AS-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.336 V15.7.0 (2019-09)                                 */
+	/* Home Subscriber Server (HSS) diameter interfaces for             */
+	/* interworking with packet data networks and applications          */
+	/*                                                                  */
+	/* From 3GPP 29336-f70.docx                                         */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.336 Table 6.4.1/1: S6m/S6n specific Diameter AVPs     */
+	/*==================================================================*/
+
+	/* IP-SM-GW-Number, OctetString, code 3100, section 6.4.14          */
+	{
+		struct dict_avp_data data = {
+			3100,	/* Code */
+			10415,	/* Vendor */
+			"IP-SM-GW-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IP-SM-GW-Name, DiameterIdentity, code 3101, section 6.4.15       */
+	{
+		struct dict_avp_data data = {
+			3101,	/* Code */
+			10415,	/* Vendor */
+			"IP-SM-GW-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* User-Identifier, Grouped, code 3102, section 6.4.2               */
+	{
+		struct dict_avp_data data = {
+			3102,	/* Code */
+			10415,	/* Vendor */
+			"User-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-ID, Enumerated, code 3103, section 6.4.3                 */
+	{
+		struct dict_avp_data data = {
+			3103,	/* Code */
+			10415,	/* Vendor */
+			"Service-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-ID)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SCS-Identity, OctetString, code 3104, section 6.4.4              */
+	{
+		struct dict_avp_data data = {
+			3104,	/* Code */
+			10415,	/* Vendor */
+			"SCS-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Parameters, Grouped, code 3105, section 6.4.5            */
+	{
+		struct dict_avp_data data = {
+			3105,	/* Code */
+			10415,	/* Vendor */
+			"Service-Parameters",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* T4-Parameters, Grouped, code 3106, section 6.4.6                 */
+	{
+		struct dict_avp_data data = {
+			3106,	/* Code */
+			10415,	/* Vendor */
+			"T4-Parameters",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Data, Grouped, code 3107, section 6.4.7                  */
+	{
+		struct dict_avp_data data = {
+			3107,	/* Code */
+			10415,	/* Vendor */
+			"Service-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* T4-Data, Grouped, code 3108, section 6.4.8                       */
+	{
+		struct dict_avp_data data = {
+			3108,	/* Code */
+			10415,	/* Vendor */
+			"T4-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* HSS-Cause, Unsigned32, code 3109, section 6.4.9                  */
+	{
+		struct dict_avp_data data = {
+			3109,	/* Code */
+			10415,	/* Vendor */
+			"HSS-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIR-Flags, Unsigned32, code 3110, section 6.4.10                 */
+	{
+		struct dict_avp_data data = {
+			3110,	/* Code */
+			10415,	/* Vendor */
+			"SIR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.061 External-Identifier (28) OctetString replaced by */
+	/* 3GPP TS 29.336 External-Identifier (3111) UTF8String.            */
+	/*                                                                  */
+	/* Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String. */
+	/* External-Identifier, UTF8String, code 3111, section 6.4.11       */
+	{
+		struct dict_avp_data data = {
+			3111,	/* Code */
+			10415,	/* Vendor */
+			"External-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IP-SM-GW-Realm, DiameterIdentity, code 3112, section 6.4.18      */
+	{
+		struct dict_avp_data data = {
+			3112,	/* Code */
+			10415,	/* Vendor */
+			"IP-SM-GW-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.336 Table 8.4.1-1: S6t specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* AESE-Communication-Pattern, Grouped, code 3113, section 8.4.25   */
+	{
+		struct dict_avp_data data = {
+			3113,	/* Code */
+			10415,	/* Vendor */
+			"AESE-Communication-Pattern",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Communication-Pattern-Set, Grouped, code 3114, section 8.4.26    */
+	{
+		struct dict_avp_data data = {
+			3114,	/* Code */
+			10415,	/* Vendor */
+			"Communication-Pattern-Set",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Periodic-Communication-Indicator, Unsigned32, code 3115, section 8.4.27 */
+	{
+		struct dict_avp_data data = {
+			3115,	/* Code */
+			10415,	/* Vendor */
+			"Periodic-Communication-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Communication-Duration-Time, Unsigned32, code 3116, section 8.4.28 */
+	{
+		struct dict_avp_data data = {
+			3116,	/* Code */
+			10415,	/* Vendor */
+			"Communication-Duration-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.336 Table 8.4.1-1 row Periodic-time (3117) has  */
+	/* incorrect name and should be "Periodic-Time" per majority use.   */
+	/*                                                                  */
+	/* Fix: Periodic-time (3117) renamed to Periodic-Time (931).        */
+	/* Periodic-Time, Unsigned32, code 3117, section 8.4.29             */
+	{
+		struct dict_avp_data data = {
+			3117,	/* Code */
+			10415,	/* Vendor */
+			"Periodic-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Scheduled-Communication-Time, Grouped, code 3118, section 8.4.30 */
+	{
+		struct dict_avp_data data = {
+			3118,	/* Code */
+			10415,	/* Vendor */
+			"Scheduled-Communication-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Stationary-Indication, Unsigned32, code 3119, section 8.4.31     */
+	{
+		struct dict_avp_data data = {
+			3119,	/* Code */
+			10415,	/* Vendor */
+			"Stationary-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AESE-Communication-Pattern-Config-Status, Grouped, code 3120, section 8.4.32 */
+	{
+		struct dict_avp_data data = {
+			3120,	/* Code */
+			10415,	/* Vendor */
+			"AESE-Communication-Pattern-Config-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AESE-Error-Report, Grouped, code 3121, section 8.4.33            */
+	{
+		struct dict_avp_data data = {
+			3121,	/* Code */
+			10415,	/* Vendor */
+			"AESE-Error-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Configuration, Grouped, code 3122, section 8.4.2 */
+	{
+		struct dict_avp_data data = {
+			3122,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Report, Grouped, code 3123, section 8.4.3       */
+	{
+		struct dict_avp_data data = {
+			3123,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCEF-Reference-ID, Unsigned32, code 3124, section 8.4.4          */
+	{
+		struct dict_avp_data data = {
+			3124,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-Reference-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCEF-ID, DiameterIdentity, code 3125, section 8.4.5              */
+	{
+		struct dict_avp_data data = {
+			3125,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* SCEF-Reference-ID-for-Deletion, Unsigned32, code 3126, section 8.4.6 */
+	{
+		struct dict_avp_data data = {
+			3126,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-Reference-ID-for-Deletion",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Type, Unsigned32, code 3127, section 8.4.7            */
+	{
+		struct dict_avp_data data = {
+			3127,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Number-of-Reports, Unsigned32, code 3128, section 8.4.8  */
+	{
+		struct dict_avp_data data = {
+			3128,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Number-of-Reports",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UE-Reachability-Configuration, Grouped, code 3129, section 8.4.9 */
+	{
+		struct dict_avp_data data = {
+			3129,	/* Code */
+			10415,	/* Vendor */
+			"UE-Reachability-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Duration, Time, code 3130, section 8.4.10             */
+	{
+		struct dict_avp_data data = {
+			3130,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Duration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Maximum-Detection-Time, Unsigned32, code 3131, section 8.4.11    */
+	{
+		struct dict_avp_data data = {
+			3131,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Detection-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reachability-Type, Unsigned32, code 3132, section 8.4.12         */
+	{
+		struct dict_avp_data data = {
+			3132,	/* Code */
+			10415,	/* Vendor */
+			"Reachability-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Latency, Unsigned32, code 3133, section 8.4.13           */
+	{
+		struct dict_avp_data data = {
+			3133,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Latency",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Response-Time, Unsigned32, code 3134, section 8.4.14     */
+	{
+		struct dict_avp_data data = {
+			3134,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Response-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Information-Configuration, Grouped, code 3135, section 8.4.15 */
+	{
+		struct dict_avp_data data = {
+			3135,	/* Code */
+			10415,	/* Vendor */
+			"Location-Information-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MONTE-Location-Type, Unsigned32, code 3136, section 8.4.16       */
+	{
+		struct dict_avp_data data = {
+			3136,	/* Code */
+			10415,	/* Vendor */
+			"MONTE-Location-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Accuracy, Unsigned32, code 3137, section 8.4.17                  */
+	{
+		struct dict_avp_data data = {
+			3137,	/* Code */
+			10415,	/* Vendor */
+			"Accuracy",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Association-Type, Unsigned32, code 3138, section 8.4.18          */
+	{
+		struct dict_avp_data data = {
+			3138,	/* Code */
+			10415,	/* Vendor */
+			"Association-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Roaming-Information, Unsigned32, code 3139, section 8.4.19       */
+	{
+		struct dict_avp_data data = {
+			3139,	/* Code */
+			10415,	/* Vendor */
+			"Roaming-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reachability-Information, Unsigned32, code 3140, section 8.4.20  */
+	{
+		struct dict_avp_data data = {
+			3140,	/* Code */
+			10415,	/* Vendor */
+			"Reachability-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMEI-Change, Unsigned32, code 3141, section 8.4.22               */
+	{
+		struct dict_avp_data data = {
+			3141,	/* Code */
+			10415,	/* Vendor */
+			"IMEI-Change",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Config-Status, Grouped, code 3142, section 8.4.24 */
+	{
+		struct dict_avp_data data = {
+			3142,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Config-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Supported-Services, Grouped, code 3143, section 8.4.40           */
+	{
+		struct dict_avp_data data = {
+			3143,	/* Code */
+			10415,	/* Vendor */
+			"Supported-Services",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Supported-Monitoring-Events, Unsigned64, code 3144, section 8.4.41 */
+	{
+		struct dict_avp_data data = {
+			3144,	/* Code */
+			10415,	/* Vendor */
+			"Supported-Monitoring-Events",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CIR-Flags, Unsigned32, code 3145, section 8.4.39                 */
+	{
+		struct dict_avp_data data = {
+			3145,	/* Code */
+			10415,	/* Vendor */
+			"CIR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Result, Grouped, code 3146, section 8.4.37               */
+	{
+		struct dict_avp_data data = {
+			3146,	/* Code */
+			10415,	/* Vendor */
+			"Service-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Result-Code, Unsigned32, code 3147, section 8.4.38       */
+	{
+		struct dict_avp_data data = {
+			3147,	/* Code */
+			10415,	/* Vendor */
+			"Service-Result-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reference-ID-Validity-Time, Time, code 3148, section 8.4.42      */
+	{
+		struct dict_avp_data data = {
+			3148,	/* Code */
+			10415,	/* Vendor */
+			"Reference-ID-Validity-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Event-Handling, Unsigned32, code 3149, section 8.4.43            */
+	{
+		struct dict_avp_data data = {
+			3149,	/* Code */
+			10415,	/* Vendor */
+			"Event-Handling",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NIDD-Authorization-Request, Grouped, code 3150, section 8.4.44   */
+	{
+		struct dict_avp_data data = {
+			3150,	/* Code */
+			10415,	/* Vendor */
+			"NIDD-Authorization-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NIDD-Authorization-Response, Grouped, code 3151, section 8.4.45  */
+	{
+		struct dict_avp_data data = {
+			3151,	/* Code */
+			10415,	/* Vendor */
+			"NIDD-Authorization-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Report, Grouped, code 3152, section 8.4.47               */
+	{
+		struct dict_avp_data data = {
+			3152,	/* Code */
+			10415,	/* Vendor */
+			"Service-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Node-Type, Unsigned32, code 3153, section 8.4.48                 */
+	{
+		struct dict_avp_data data = {
+			3153,	/* Code */
+			10415,	/* Vendor */
+			"Node-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* S6t-HSS-Cause, Unsigned32, code 3154, section 8.4.50             */
+	{
+		struct dict_avp_data data = {
+			3154,	/* Code */
+			10415,	/* Vendor */
+			"S6t-HSS-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Enhanced-Coverage-Restriction, Grouped, code 3155, section 8.4.51 */
+	{
+		struct dict_avp_data data = {
+			3155,	/* Code */
+			10415,	/* Vendor */
+			"Enhanced-Coverage-Restriction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Enhanced-Coverage-Restriction-Data, Grouped, code 3156, section 8.4.52 */
+	{
+		struct dict_avp_data data = {
+			3156,	/* Code */
+			10415,	/* Vendor */
+			"Enhanced-Coverage-Restriction-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Restricted-PLMN-List, Grouped, code 3157, section 8.4.53         */
+	{
+		struct dict_avp_data data = {
+			3157,	/* Code */
+			10415,	/* Vendor */
+			"Restricted-PLMN-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Allowed-PLMN-List, Grouped, code 3158, section 8.4.54            */
+	{
+		struct dict_avp_data data = {
+			3158,	/* Code */
+			10415,	/* Vendor */
+			"Allowed-PLMN-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Requested-Validity-Time, Time, code 3159, section 8.4.55         */
+	{
+		struct dict_avp_data data = {
+			3159,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Validity-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Granted-Validity-Time, Time, code 3160, section 8.4.56           */
+	{
+		struct dict_avp_data data = {
+			3160,	/* Code */
+			10415,	/* Vendor */
+			"Granted-Validity-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* NIDD-Authorization-Update, Grouped, code 3161, section 8.4.57    */
+	{
+		struct dict_avp_data data = {
+			3161,	/* Code */
+			10415,	/* Vendor */
+			"NIDD-Authorization-Update",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Loss-Of-Connectivity-Reason, Unsigned32, code 3162, section 8.4.58 */
+	{
+		struct dict_avp_data data = {
+			3162,	/* Code */
+			10415,	/* Vendor */
+			"Loss-Of-Connectivity-Reason",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-Reporting-Guard-Timer, Unsigned32, code 3163, section 8.4.59 */
+	{
+		struct dict_avp_data data = {
+			3163,	/* Code */
+			10415,	/* Vendor */
+			"Group-Reporting-Guard-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CIA-Flags, Unsigned32, code 3164, section 8.4.60                 */
+	{
+		struct dict_avp_data data = {
+			3164,	/* Code */
+			10415,	/* Vendor */
+			"CIA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-Monitoring-Event-Report, Grouped, code 3165, section 8.4.61 */
+	{
+		struct dict_avp_data data = {
+			3165,	/* Code */
+			10415,	/* Vendor */
+			"Group-Monitoring-Event-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-Monitoring-Event-Report-Item, Grouped, code 3166, section 8.4.62 */
+	{
+		struct dict_avp_data data = {
+			3166,	/* Code */
+			10415,	/* Vendor */
+			"Group-Monitoring-Event-Report-Item",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RIR-Flags, Unsigned32, code 3167, section 8.4.63                 */
+	{
+		struct dict_avp_data data = {
+			3167,	/* Code */
+			10415,	/* Vendor */
+			"RIR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Type-Of-External-Identifier, Unsigned32, code 3168, section 8.4.64 */
+	{
+		struct dict_avp_data data = {
+			3168,	/* Code */
+			10415,	/* Vendor */
+			"Type-Of-External-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Validity-Time, Grouped, code 3169, section 8.4.65            */
+	{
+		struct dict_avp_data data = {
+			3169,	/* Code */
+			10415,	/* Vendor */
+			"APN-Validity-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Suggested-Network-Configuration, Grouped, code 3170, section 8.4.66 */
+	{
+		struct dict_avp_data data = {
+			3170,	/* Code */
+			10415,	/* Vendor */
+			"Suggested-Network-Configuration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Report-Status, Grouped, code 3171, section 8.4.67 */
+	{
+		struct dict_avp_data data = {
+			3171,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Report-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PLMN-ID-Requested, Enumerated, code 3172, section 8.4.68         */
+	{
+		struct dict_avp_data data = {
+			3172,	/* Code */
+			10415,	/* Vendor */
+			"PLMN-ID-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-ID-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AdditionalIdentifiers, Grouped, code 3173, section 8.4.69        */
+	{
+		struct dict_avp_data data = {
+			3173,	/* Code */
+			10415,	/* Vendor */
+			"AdditionalIdentifiers",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NIR-Flags, Unsigned32, code 3174, section 8.4.70                 */
+	{
+		struct dict_avp_data data = {
+			3174,	/* Code */
+			10415,	/* Vendor */
+			"NIR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reporting-Time-Stamp, Time, code 3175, section 8.4.71            */
+	{
+		struct dict_avp_data data = {
+			3175,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Time-Stamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* NIA-Flags, Unsigned32, code 3176, section 8.4.72                 */
+	{
+		struct dict_avp_data data = {
+			3176,	/* Code */
+			10415,	/* Vendor */
+			"NIA-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Group-User-Identifier, Grouped, code 3177, section 8.4.73        */
+	{
+		struct dict_avp_data data = {
+			3177,	/* Code */
+			10415,	/* Vendor */
+			"Group-User-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MTC-Provider-Info, Grouped, code 3178, section 8.4.74            */
+	{
+		struct dict_avp_data data = {
+			3178,	/* Code */
+			10415,	/* Vendor */
+			"MTC-Provider-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MTC-Provider-ID, UTF8String, code 3179, section 8.4.75           */
+	{
+		struct dict_avp_data data = {
+			3179,	/* Code */
+			10415,	/* Vendor */
+			"MTC-Provider-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.337 V15.0.0 (2018-06)                                 */
+	/* Diameter-based T4 interface for communications with packet       */
+	/* data networks and applications                                   */
+	/*                                                                  */
+	/* From 3GPP 29337-f00.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.337 Table 6.3.1/1: T4 specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* SM-Delivery-Outcome-T4, Enumerated, code 3200, section 6.3.1     */
+	{
+		struct dict_avp_data data = {
+			3200,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Outcome-T4",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Outcome-T4)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Absent-Subscriber-Diagnostic-T4, Enumerated, code 3201, section 6.3.2 */
+	{
+		struct dict_avp_data data = {
+			3201,	/* Code */
+			10415,	/* Vendor */
+			"Absent-Subscriber-Diagnostic-T4",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Absent-Subscriber-Diagnostic-T4)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Trigger-Action, Unsigned32, code 3202, section 6.3.6             */
+	{
+		struct dict_avp_data data = {
+			3202,	/* Code */
+			10415,	/* Vendor */
+			"Trigger-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MTC-Error-Diagnostic, Unsigned32, code 3203, section 6.3.7       */
+	{
+		struct dict_avp_data data = {
+			3203,	/* Code */
+			10415,	/* Vendor */
+			"MTC-Error-Diagnostic",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.338 V15.1.0 (2018-12)                                 */
+	/* Diameter based protocols to support                              */
+	/* Short Message Service (SMS) capable                              */
+	/* Mobile Management Entities (MMEs)                                */
+	/*                                                                  */
+	/* From 3GPP 29338-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.338 Table 5.3.3.1/1: S6c specific Diameter AVPs       */
+	/*==================================================================*/
+
+	/* SM-RP-MTI, Enumerated, code 3308, section 5.3.3.2                */
+	{
+		struct dict_avp_data data = {
+			3308,	/* Code */
+			10415,	/* Vendor */
+			"SM-RP-MTI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-RP-MTI)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SM-RP-SMEA, OctetString, code 3309, section 5.3.3.3              */
+	{
+		struct dict_avp_data data = {
+			3309,	/* Code */
+			10415,	/* Vendor */
+			"SM-RP-SMEA",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SRR-Flags, Unsigned32, code 3310, section 5.3.3.4                */
+	{
+		struct dict_avp_data data = {
+			3310,	/* Code */
+			10415,	/* Vendor */
+			"SRR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Not-Intended, Enumerated, code 3311, section 5.3.3.5 */
+	{
+		struct dict_avp_data data = {
+			3311,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Not-Intended",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Not-Intended)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MWD-Status, Unsigned32, code 3312, section 5.3.3.8               */
+	{
+		struct dict_avp_data data = {
+			3312,	/* Code */
+			10415,	/* Vendor */
+			"MWD-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MME-Absent-User-Diagnostic-SM, Unsigned32, code 3313, section 5.3.3.9 */
+	{
+		struct dict_avp_data data = {
+			3313,	/* Code */
+			10415,	/* Vendor */
+			"MME-Absent-User-Diagnostic-SM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MSC-Absent-User-Diagnostic-SM, Unsigned32, code 3314, section 5.3.3.10 */
+	{
+		struct dict_avp_data data = {
+			3314,	/* Code */
+			10415,	/* Vendor */
+			"MSC-Absent-User-Diagnostic-SM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGSN-Absent-User-Diagnostic-SM, Unsigned32, code 3315, section 5.3.3.11 */
+	{
+		struct dict_avp_data data = {
+			3315,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Absent-User-Diagnostic-SM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Outcome, Grouped, code 3316, section 5.3.3.14        */
+	{
+		struct dict_avp_data data = {
+			3316,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MME-SM-Delivery-Outcome, Grouped, code 3317, section 5.3.3.15    */
+	{
+		struct dict_avp_data data = {
+			3317,	/* Code */
+			10415,	/* Vendor */
+			"MME-SM-Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MSC-SM-Delivery-Outcome, Grouped, code 3318, section 5.3.3.16    */
+	{
+		struct dict_avp_data data = {
+			3318,	/* Code */
+			10415,	/* Vendor */
+			"MSC-SM-Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SGSN-SM-Delivery-Outcome, Grouped, code 3319, section 5.3.3.17   */
+	{
+		struct dict_avp_data data = {
+			3319,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-SM-Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IP-SM-GW-SM-Delivery-Outcome, Grouped, code 3320, section 5.3.3.18 */
+	{
+		struct dict_avp_data data = {
+			3320,	/* Code */
+			10415,	/* Vendor */
+			"IP-SM-GW-SM-Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Cause, Enumerated, code 3321, section 5.3.3.19       */
+	{
+		struct dict_avp_data data = {
+			3321,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Cause)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Absent-User-Diagnostic-SM, Unsigned32, code 3322, section 5.3.3.20 */
+	{
+		struct dict_avp_data data = {
+			3322,	/* Code */
+			10415,	/* Vendor */
+			"Absent-User-Diagnostic-SM",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RDR-Flags, Unsigned32, code 3323, section 5.3.3.21               */
+	{
+		struct dict_avp_data data = {
+			3323,	/* Code */
+			10415,	/* Vendor */
+			"RDR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-UE-Availability-Time, Time, code 3329, section 5.3.3.22  */
+	{
+		struct dict_avp_data data = {
+			3329,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-UE-Availability-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SMS-GMSC-Alert-Event, Unsigned32, code 3333, section 5.3.3.23    */
+	{
+		struct dict_avp_data data = {
+			3333,	/* Code */
+			10415,	/* Vendor */
+			"SMS-GMSC-Alert-Event",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.338 Table 6.3.3.1/1: SGd/Gdd specific Diameter AVPs   */
+	/*==================================================================*/
+
+	/* SC-Address, OctetString, code 3300, section 6.3.3.2              */
+	{
+		struct dict_avp_data data = {
+			3300,	/* Code */
+			10415,	/* Vendor */
+			"SC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-RP-UI, OctetString, code 3301, section 6.3.3.3                */
+	{
+		struct dict_avp_data data = {
+			3301,	/* Code */
+			10415,	/* Vendor */
+			"SM-RP-UI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TFR-Flags, Unsigned32, code 3302, section 6.3.3.4                */
+	{
+		struct dict_avp_data data = {
+			3302,	/* Code */
+			10415,	/* Vendor */
+			"TFR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Failure-Cause, Grouped, code 3303, section 6.3.3.5   */
+	{
+		struct dict_avp_data data = {
+			3303,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Failure-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Enumerated-Delivery-Failure-Cause, Enumerated, code 3304, section 6.3.3.6 */
+	{
+		struct dict_avp_data data = {
+			3304,	/* Code */
+			10415,	/* Vendor */
+			"SM-Enumerated-Delivery-Failure-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Enumerated-Delivery-Failure-Cause)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SM-Diagnostic-Info, OctetString, code 3305, section 6.3.3.7      */
+	{
+		struct dict_avp_data data = {
+			3305,	/* Code */
+			10415,	/* Vendor */
+			"SM-Diagnostic-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Timer, Unsigned32, code 3306, section 6.3.3.10       */
+	{
+		struct dict_avp_data data = {
+			3306,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Delivery-Start-Time, Time, code 3307, section 6.3.3.11        */
+	{
+		struct dict_avp_data data = {
+			3307,	/* Code */
+			10415,	/* Vendor */
+			"SM-Delivery-Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SMSMI-Correlation-ID, Grouped, code 3324, section 6.3.3.13       */
+	{
+		struct dict_avp_data data = {
+			3324,	/* Code */
+			10415,	/* Vendor */
+			"SMSMI-Correlation-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.338 Table 6.3.3.1/1 row HSS-ID (3325)           */
+	/* incorrectly lists type as OctetString instead of UTF8String.     */
+	/* 3GPP TS 29.338 clause 6.3.3.14 uses UTF8String.                  */
+	/*                                                                  */
+	/* Fix: HSS-ID (3325) type changed from OctetString to UTF8String.  */
+	/* HSS-ID, UTF8String, code 3325, section 6.3.3.14                  */
+	{
+		struct dict_avp_data data = {
+			3325,	/* Code */
+			10415,	/* Vendor */
+			"HSS-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Originating-SIP-URI, UTF8String, code 3326, section 6.3.3.15     */
+	{
+		struct dict_avp_data data = {
+			3326,	/* Code */
+			10415,	/* Vendor */
+			"Originating-SIP-URI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Destination-SIP-URI, UTF8String, code 3327, section 6.3.3.16     */
+	{
+		struct dict_avp_data data = {
+			3327,	/* Code */
+			10415,	/* Vendor */
+			"Destination-SIP-URI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* OFR-Flags, Unsigned32, code 3328, section 6.3.3.12               */
+	{
+		struct dict_avp_data data = {
+			3328,	/* Code */
+			10415,	/* Vendor */
+			"OFR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Maximum-Retransmission-Time, Time, code 3330, section 6.3.3.17   */
+	{
+		struct dict_avp_data data = {
+			3330,	/* Code */
+			10415,	/* Vendor */
+			"Maximum-Retransmission-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Requested-Retransmission-Time, Time, code 3331, section 6.3.3.18 */
+	{
+		struct dict_avp_data data = {
+			3331,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Retransmission-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SMS-GMSC-Address, OctetString, code 3332, section 6.3.3.19       */
+	{
+		struct dict_avp_data data = {
+			3332,	/* Code */
+			10415,	/* Vendor */
+			"SMS-GMSC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.343 V15.1.0 (2019-09)                                 */
+	/* Proximity-services (ProSe) function to                           */
+	/* ProSe application server aspects (PC2);                          */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29343-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.343 Table 6.4.1-1: PC2 specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* Origin-App-Layer-User-Id, UTF8String, code 3600, section 6.4.2   */
+	{
+		struct dict_avp_data data = {
+			3600,	/* Code */
+			10415,	/* Vendor */
+			"Origin-App-Layer-User-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Target-App-Layer-User-Id, UTF8String, code 3601, section 6.4.3   */
+	{
+		struct dict_avp_data data = {
+			3601,	/* Code */
+			10415,	/* Vendor */
+			"Target-App-Layer-User-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* ProSe-Function-ID, OctetString, code 3602, section 6.4.4         */
+	{
+		struct dict_avp_data data = {
+			3602,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Function-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Request-Type, Unsigned32, code 3603, section 6.4.5         */
+	{
+		struct dict_avp_data data = {
+			3603,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDUID, OctetString, code 3604, section 6.4.6                     */
+	{
+		struct dict_avp_data data = {
+			3604,	/* Code */
+			10415,	/* Vendor */
+			"PDUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Application-Data, UTF8String, code 3605, section 6.4.7           */
+	{
+		struct dict_avp_data data = {
+			3605,	/* Code */
+			10415,	/* Vendor */
+			"Application-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Allowed-Suffixes-Number, Unsigned32, code 3606, section 6.4.8    */
+	{
+		struct dict_avp_data data = {
+			3606,	/* Code */
+			10415,	/* Vendor */
+			"Allowed-Suffixes-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitor-Target, Grouped, code 3607, section 6.4.9                */
+	{
+		struct dict_avp_data data = {
+			3607,	/* Code */
+			10415,	/* Vendor */
+			"Monitor-Target",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Code-Suffix-Mask, Grouped, code 3608, section 6.4.10       */
+	{
+		struct dict_avp_data data = {
+			3608,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Code-Suffix-Mask",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Suffix-Code, OctetString, code 3609, section 6.4.11              */
+	{
+		struct dict_avp_data data = {
+			3609,	/* Code */
+			10415,	/* Vendor */
+			"Suffix-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Suffix-Mask, OctetString, code 3610, section 6.4.12              */
+	{
+		struct dict_avp_data data = {
+			3610,	/* Code */
+			10415,	/* Vendor */
+			"Suffix-Mask",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Banned-User-Target, Grouped, code 3611, section 6.4.17           */
+	{
+		struct dict_avp_data data = {
+			3611,	/* Code */
+			10415,	/* Vendor */
+			"Banned-User-Target",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Metadata-Indicator, Unsigned32, code 3612, section 6.4.18        */
+	{
+		struct dict_avp_data data = {
+			3612,	/* Code */
+			10415,	/* Vendor */
+			"Metadata-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.344 V15.1.0 (2019-09)                                 */
+	/* Proximity-services (ProSe) Function to Home Subscriber           */
+	/* Server (HSS) aspects;                                            */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29344-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.344 Table 6.3.1-1: PC4a specific Diameter AVPs        */
+	/*==================================================================*/
+
+	/* ProSe-Subscription-Data, Grouped, code 3701, section 6.3.2       */
+	{
+		struct dict_avp_data data = {
+			3701,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Subscription-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Permission, Unsigned32, code 3702, section 6.3.3           */
+	{
+		struct dict_avp_data data = {
+			3702,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Permission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Allowed-PLMN, Grouped, code 3703, section 6.3.4            */
+	{
+		struct dict_avp_data data = {
+			3703,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Allowed-PLMN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Direct-Allowed, Unsigned32, code 3704, section 6.3.5       */
+	{
+		struct dict_avp_data data = {
+			3704,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Direct-Allowed",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UPR-Flags, Unsigned32, code 3705, section 6.3.6                  */
+	{
+		struct dict_avp_data data = {
+			3705,	/* Code */
+			10415,	/* Vendor */
+			"UPR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PNR-Flags, Unsigned32, code 3706, section 6.3.7                  */
+	{
+		struct dict_avp_data data = {
+			3706,	/* Code */
+			10415,	/* Vendor */
+			"PNR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Initial-Location-Information, Grouped, code 3707, section 6.3.9 */
+	{
+		struct dict_avp_data data = {
+			3707,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Initial-Location-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.344 Table 6.3.1-1 missing Authorized-Discovery-Range. */
+	/* Present in 3GPP TS 29.344 clause 6.3.13 and 3GPP TS 29.230 Table 7.1. */
+	/*                                                                  */
+	/* Fix: Add Authorized-Discovery-Range (3708) Unsigned32.           */
+	/* Authorized-Discovery-Range, Unsigned32, code 3708, section 6.3.13 */
+	{
+		struct dict_avp_data data = {
+			3708,	/* Code */
+			10415,	/* Vendor */
+			"Authorized-Discovery-Range",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.345 V15.1.0 (2019-09)                                 */
+	/* Inter-Proximity-services (ProSe) Function signalling aspects;    */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29345-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.345 Table 6.3.1-1: PC6/PC7 specific Diameter AVPs     */
+	/*==================================================================*/
+
+	/* App-Layer-User-Id, UTF8String, code 3801, section 6.3.2          */
+	{
+		struct dict_avp_data data = {
+			3801,	/* Code */
+			10415,	/* Vendor */
+			"App-Layer-User-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: 3GPP TS 29.345 Table 6.3.1-1 row Assistance-info (3802) has */
+	/* incorrect name and should be "Assistance-Info" per clause 6.3.3. */
+	/*                                                                  */
+	/* Fix: Assistance-info (3802) renamed to Assistance-Info (3802).   */
+	/* Assistance-Info, Grouped, code 3802, section 6.3.3               */
+	{
+		struct dict_avp_data data = {
+			3802,	/* Code */
+			10415,	/* Vendor */
+			"Assistance-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Assistance-Info-Validity-Timer, Unsigned32, code 3803, section 6.3.4 */
+	{
+		struct dict_avp_data data = {
+			3803,	/* Code */
+			10415,	/* Vendor */
+			"Assistance-Info-Validity-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Discovery-Type, Unsigned32, code 3804, section 6.3.5             */
+	{
+		struct dict_avp_data data = {
+			3804,	/* Code */
+			10415,	/* Vendor */
+			"Discovery-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Filter-Id, OctetString, code 3805, section 6.3.9                 */
+	{
+		struct dict_avp_data data = {
+			3805,	/* Code */
+			10415,	/* Vendor */
+			"Filter-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MAC-Address, UTF8String, code 3806, section 6.3.11               */
+	{
+		struct dict_avp_data data = {
+			3806,	/* Code */
+			10415,	/* Vendor */
+			"MAC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Match-Report, Grouped, code 3807, section 6.3.12                 */
+	{
+		struct dict_avp_data data = {
+			3807,	/* Code */
+			10415,	/* Vendor */
+			"Match-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Operating-Channel, Unsigned32, code 3808, section 6.3.14         */
+	{
+		struct dict_avp_data data = {
+			3808,	/* Code */
+			10415,	/* Vendor */
+			"Operating-Channel",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* P2P-Features, Unsigned32, code 3809, section 6.3.15              */
+	{
+		struct dict_avp_data data = {
+			3809,	/* Code */
+			10415,	/* Vendor */
+			"P2P-Features",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-App-Code, OctetString, code 3810, section 6.3.16           */
+	{
+		struct dict_avp_data data = {
+			3810,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-App-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-App-Id, UTF8String, code 3811, section 6.3.17              */
+	{
+		struct dict_avp_data data = {
+			3811,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-App-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* ProSe-App-Mask, OctetString, code 3812, section 6.3.18           */
+	{
+		struct dict_avp_data data = {
+			3812,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-App-Mask",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Discovery-Filter, Grouped, code 3813, section 6.3.20       */
+	{
+		struct dict_avp_data data = {
+			3813,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Discovery-Filter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PRR-Flags, Unsigned32, code 3814, section 6.3.21                 */
+	{
+		struct dict_avp_data data = {
+			3814,	/* Code */
+			10415,	/* Vendor */
+			"PRR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Validity-Timer, Unsigned32, code 3815, section 6.3.22      */
+	{
+		struct dict_avp_data data = {
+			3815,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Validity-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Requesting-EPUID, UTF8String, code 3816, section 6.3.23          */
+	{
+		struct dict_avp_data data = {
+			3816,	/* Code */
+			10415,	/* Vendor */
+			"Requesting-EPUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Targeted-EPUID, UTF8String, code 3817, section 6.3.26            */
+	{
+		struct dict_avp_data data = {
+			3817,	/* Code */
+			10415,	/* Vendor */
+			"Targeted-EPUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.154 Time-Window (4204).      */
+	/* Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates  */
+	/* Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).          */
+	/* Time-Window, Unsigned32, code 3818, section 6.3.27               */
+	{
+		struct dict_avp_data data = {
+			3818,	/* Code */
+			10415,	/* Vendor */
+			"Time-Window",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WiFi-P2P-Assistance-Info, Grouped, code 3819, section 6.3.30     */
+	{
+		struct dict_avp_data data = {
+			3819,	/* Code */
+			10415,	/* Vendor */
+			"WiFi-P2P-Assistance-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Assistance-Info, Grouped, code 3820, section 6.3.31         */
+	{
+		struct dict_avp_data data = {
+			3820,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Assistance-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Link-Layer-Id, OctetString, code 3821, section 6.3.32       */
+	{
+		struct dict_avp_data data = {
+			3821,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Link-Layer-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Link-Layer-Id-List, Grouped, code 3822, section 6.3.33      */
+	{
+		struct dict_avp_data data = {
+			3822,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Link-Layer-Id-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Update-Trigger, Grouped, code 3823, section 6.3.42      */
+	{
+		struct dict_avp_data data = {
+			3823,	/* Code */
+			10415,	/* Vendor */
+			"Location-Update-Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Update-Event-Type, Unsigned32, code 3824, section 6.3.43 */
+	{
+		struct dict_avp_data data = {
+			3824,	/* Code */
+			10415,	/* Vendor */
+			"Location-Update-Event-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-Of-Area-Type, Grouped, code 3825, section 6.3.44          */
+	{
+		struct dict_avp_data data = {
+			3825,	/* Code */
+			10415,	/* Vendor */
+			"Change-Of-Area-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Update-Event-Trigger, Unsigned32, code 3826, section 6.3.45 */
+	{
+		struct dict_avp_data data = {
+			3826,	/* Code */
+			10415,	/* Vendor */
+			"Location-Update-Event-Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Report-Cardinality, Enumerated, code 3827, section 6.3.46        */
+	{
+		struct dict_avp_data data = {
+			3827,	/* Code */
+			10415,	/* Vendor */
+			"Report-Cardinality",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Cardinality)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Minimum-Interval-Time, Unsigned32, code 3828, section 6.3.47     */
+	{
+		struct dict_avp_data data = {
+			3828,	/* Code */
+			10415,	/* Vendor */
+			"Minimum-Interval-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Periodic-Location-Type, Grouped, code 3829, section 6.3.48       */
+	{
+		struct dict_avp_data data = {
+			3829,	/* Code */
+			10415,	/* Vendor */
+			"Periodic-Location-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Report-Interval-Time, Unsigned32, code 3830, section 6.3.49 */
+	{
+		struct dict_avp_data data = {
+			3830,	/* Code */
+			10415,	/* Vendor */
+			"Location-Report-Interval-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Total-Number-Of-Reports, Unsigned32, code 3831, section 6.3.50   */
+	{
+		struct dict_avp_data data = {
+			3831,	/* Code */
+			10415,	/* Vendor */
+			"Total-Number-Of-Reports",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Validity-Time-Announce, Unsigned32, code 3832, section 6.3.36    */
+	{
+		struct dict_avp_data data = {
+			3832,	/* Code */
+			10415,	/* Vendor */
+			"Validity-Time-Announce",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Validity-Time-Monitor, Unsigned32, code 3833, section 6.3.37     */
+	{
+		struct dict_avp_data data = {
+			3833,	/* Code */
+			10415,	/* Vendor */
+			"Validity-Time-Monitor",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Validity-Time-Communication, Unsigned32, code 3834, section 6.3.38 */
+	{
+		struct dict_avp_data data = {
+			3834,	/* Code */
+			10415,	/* Vendor */
+			"Validity-Time-Communication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-App-Code-Info, Grouped, code 3835, section 6.3.39          */
+	{
+		struct dict_avp_data data = {
+			3835,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-App-Code-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MIC, OctetString, code 3836, section 6.3.40                      */
+	{
+		struct dict_avp_data data = {
+			3836,	/* Code */
+			10415,	/* Vendor */
+			"MIC",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* UTC-based-Counter, Unsigned32, code 3837, section 6.3.41         */
+	{
+		struct dict_avp_data data = {
+			3837,	/* Code */
+			10415,	/* Vendor */
+			"UTC-based-Counter",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Match-Refresh-Timer, Unsigned32, code 3838, section 6.3.52 */
+	{
+		struct dict_avp_data data = {
+			3838,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Match-Refresh-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Metadata-Index-Mask, OctetString, code 3839, section 6.3.60 */
+	{
+		struct dict_avp_data data = {
+			3839,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Metadata-Index-Mask",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* App-Identifier, Grouped, code 3840, section 6.3.61               */
+	{
+		struct dict_avp_data data = {
+			3840,	/* Code */
+			10415,	/* Vendor */
+			"App-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* OS-ID, OctetString, code 3841, section 6.3.62                    */
+	{
+		struct dict_avp_data data = {
+			3841,	/* Code */
+			10415,	/* Vendor */
+			"OS-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* OS-App-ID, UTF8String, code 3842, section 6.3.63                 */
+	{
+		struct dict_avp_data data = {
+			3842,	/* Code */
+			10415,	/* Vendor */
+			"OS-App-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Requesting-RPAUID, UTF8String, code 3843, section 6.3.64         */
+	{
+		struct dict_avp_data data = {
+			3843,	/* Code */
+			10415,	/* Vendor */
+			"Requesting-RPAUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Target-RPAUID, UTF8String, code 3844, section 6.3.65             */
+	{
+		struct dict_avp_data data = {
+			3844,	/* Code */
+			10415,	/* Vendor */
+			"Target-RPAUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Target-PDUID, OctetString, code 3845, section 6.3.66             */
+	{
+		struct dict_avp_data data = {
+			3845,	/* Code */
+			10415,	/* Vendor */
+			"Target-PDUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Restricted-Code, OctetString, code 3846, section 6.3.67    */
+	{
+		struct dict_avp_data data = {
+			3846,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Restricted-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Restricted-Code-Suffix-Range, OctetString, code 3847, section 6.3.68 */
+	{
+		struct dict_avp_data data = {
+			3847,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Restricted-Code-Suffix-Range",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Beginning-Suffix, OctetString, code 3848, section 6.3.69         */
+	{
+		struct dict_avp_data data = {
+			3848,	/* Code */
+			10415,	/* Vendor */
+			"Beginning-Suffix",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Ending-Suffix, OctetString, code 3849, section 6.3.70            */
+	{
+		struct dict_avp_data data = {
+			3849,	/* Code */
+			10415,	/* Vendor */
+			"Ending-Suffix",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Discovery-Entry-ID, Unsigned32, code 3850, section 6.3.59        */
+	{
+		struct dict_avp_data data = {
+			3850,	/* Code */
+			10415,	/* Vendor */
+			"Discovery-Entry-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Match-Timestamp, Time, code 3851, section 6.3.71                 */
+	{
+		struct dict_avp_data data = {
+			3851,	/* Code */
+			10415,	/* Vendor */
+			"Match-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* PMR-Flags, Unsigned32, code 3852, section 6.3.57                 */
+	{
+		struct dict_avp_data data = {
+			3852,	/* Code */
+			10415,	/* Vendor */
+			"PMR-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Application-Metadata, UTF8String, code 3853, section 6.3.58 */
+	{
+		struct dict_avp_data data = {
+			3853,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Application-Metadata",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Discovery-Auth-Request, Grouped, code 3854, section 6.3.53       */
+	{
+		struct dict_avp_data data = {
+			3854,	/* Code */
+			10415,	/* Vendor */
+			"Discovery-Auth-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Discovery-Auth-Response, Grouped, code 3855, section 6.3.54      */
+	{
+		struct dict_avp_data data = {
+			3855,	/* Code */
+			10415,	/* Vendor */
+			"Discovery-Auth-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Match-Request, Grouped, code 3856, section 6.3.55                */
+	{
+		struct dict_avp_data data = {
+			3856,	/* Code */
+			10415,	/* Vendor */
+			"Match-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Match-Report-Info, Grouped, code 3857, section 6.3.56            */
+	{
+		struct dict_avp_data data = {
+			3857,	/* Code */
+			10415,	/* Vendor */
+			"Match-Report-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Banned-RPAUID, UTF8String, code 3858, section 6.3.73             */
+	{
+		struct dict_avp_data data = {
+			3858,	/* Code */
+			10415,	/* Vendor */
+			"Banned-RPAUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Banned-PDUID, OctetString, code 3859, section 6.3.74             */
+	{
+		struct dict_avp_data data = {
+			3859,	/* Code */
+			10415,	/* Vendor */
+			"Banned-PDUID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Code-Receiving-Security-Material, Grouped, code 3860, section 6.3.75 */
+	{
+		struct dict_avp_data data = {
+			3860,	/* Code */
+			10415,	/* Vendor */
+			"Code-Receiving-Security-Material",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Code-Sending-Security-Material, Grouped, code 3861, section 6.3.76 */
+	{
+		struct dict_avp_data data = {
+			3861,	/* Code */
+			10415,	/* Vendor */
+			"Code-Sending-Security-Material",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DUSK, OctetString, code 3862, section 6.3.77                     */
+	{
+		struct dict_avp_data data = {
+			3862,	/* Code */
+			10415,	/* Vendor */
+			"DUSK",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DUIK, OctetString, code 3863, section 6.3.78                     */
+	{
+		struct dict_avp_data data = {
+			3863,	/* Code */
+			10415,	/* Vendor */
+			"DUIK",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* DUCK, OctetString, code 3864, section 6.3.79                     */
+	{
+		struct dict_avp_data data = {
+			3864,	/* Code */
+			10415,	/* Vendor */
+			"DUCK",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 29.345 Table 6.3.1-1 row MIC-Check-indicator (3865) has */
+	/* incorrect name and should be "MIC-Check-Indicator" per clause 6.3.80. */
+	/*                                                                  */
+	/* Fix: MIC-Check-indicator (3865) renamed to MIC-Check-Indicator (3865). */
+	/* MIC-Check-Indicator, Unsigned32, code 3865, section 6.3.80       */
+	{
+		struct dict_avp_data data = {
+			3865,	/* Code */
+			10415,	/* Vendor */
+			"MIC-Check-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Encrypted-Bitmask, OctetString, code 3866, section 6.3.81        */
+	{
+		struct dict_avp_data data = {
+			3866,	/* Code */
+			10415,	/* Vendor */
+			"Encrypted-Bitmask",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-App-Code-Suffix-Range, OctetString, code 3867, section 6.3.82 */
+	{
+		struct dict_avp_data data = {
+			3867,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-App-Code-Suffix-Range",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PC5-tech, OctetString, code 3868, section 6.3.84                 */
+	{
+		struct dict_avp_data data = {
+			3868,	/* Code */
+			10415,	/* Vendor */
+			"PC5-tech",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.368 V15.1.0 (2019-09)                                 */
+	/* Tsp interface protocol between the MTC Interworking Function     */
+	/* (MTC-IWF) and Service Capability Server (SCS)                    */
+	/*                                                                  */
+	/* From 3GPP 29368-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.368 Table 6.4.1.1: Tsp specific Diameter AVPs         */
+	/*==================================================================*/
+
+	/* Device-Action, Grouped, code 3001, section 6. 4.2                */
+	{
+		struct dict_avp_data data = {
+			3001,	/* Code */
+			10415,	/* Vendor */
+			"Device-Action",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Device-Notification, Grouped, code 3002, section 6.4.3           */
+	{
+		struct dict_avp_data data = {
+			3002,	/* Code */
+			10415,	/* Vendor */
+			"Device-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trigger-Data, Grouped, code 3003, section 6.4.4                  */
+	{
+		struct dict_avp_data data = {
+			3003,	/* Code */
+			10415,	/* Vendor */
+			"Trigger-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Payload, OctetString, code 3004, section 6.4.5                   */
+	{
+		struct dict_avp_data data = {
+			3004,	/* Code */
+			10415,	/* Vendor */
+			"Payload",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Action-Type, Enumerated, code 3005, section 6.4.6                */
+	{
+		struct dict_avp_data data = {
+			3005,	/* Code */
+			10415,	/* Vendor */
+			"Action-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Action-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Priority-Indication, Enumerated, code 3006, section 6.4.7        */
+	{
+		struct dict_avp_data data = {
+			3006,	/* Code */
+			10415,	/* Vendor */
+			"Priority-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Reference-Number, Unsigned32, code 3007, section 6.4.8           */
+	{
+		struct dict_avp_data data = {
+			3007,	/* Code */
+			10415,	/* Vendor */
+			"Reference-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Request-Status, Enumerated, code 3008, section 6.4.9             */
+	{
+		struct dict_avp_data data = {
+			3008,	/* Code */
+			10415,	/* Vendor */
+			"Request-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Request-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Delivery-Outcome, Enumerated, code 3009, section 6.4.10          */
+	{
+		struct dict_avp_data data = {
+			3009,	/* Code */
+			10415,	/* Vendor */
+			"Delivery-Outcome",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Outcome)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Application-Port-Identifier, Unsigned32, code 3010, section 6.4.11 */
+	{
+		struct dict_avp_data data = {
+			3010,	/* Code */
+			10415,	/* Vendor */
+			"Application-Port-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Old-Reference-Number, Unsigned32, code 3011, section 6.4.12      */
+	{
+		struct dict_avp_data data = {
+			3011,	/* Code */
+			10415,	/* Vendor */
+			"Old-Reference-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Feature-Supported-In-Final-Target, Unsigned32, code 3012, section 6.4.13 */
+	{
+		struct dict_avp_data data = {
+			3012,	/* Code */
+			10415,	/* Vendor */
+			"Feature-Supported-In-Final-Target",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.388 V15.1.0 (2019-09)                                 */
+	/* V2X Control Function to Home Subscriber Server (HSS)             */
+	/* aspects (V4);                                                    */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29388-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.388 Table 6.3.1-1: V4 specific Diameter AVPs          */
+	/*==================================================================*/
+
+	/* V2X-PC5-Allowed-PLMN, Grouped, code 4600, section 6.3.3          */
+	{
+		struct dict_avp_data data = {
+			4600,	/* Code */
+			10415,	/* Vendor */
+			"V2X-PC5-Allowed-PLMN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Update-Flags, Unsigned32, code 4601, section 6.3.4           */
+	{
+		struct dict_avp_data data = {
+			4601,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Update-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Notify-Flags, Unsigned32, code 4602, section 6.3.5           */
+	{
+		struct dict_avp_data data = {
+			4602,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Notify-Flags",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.389 V15.1.0 (2019-09)                                 */
+	/* Inter-V2X Control Function Signalling aspects (V6);              */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29389-f10.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.389 Table 6.3.1-1: V6 specific Diameter AVPs          */
+	/*                                                                  */
+	/* Fix: All AVPs were missing M and V; assume MUST for both.        */
+	/*==================================================================*/
+
+	/* V2X-Authorization-Data, Grouped, code 4700, section 6.3.2        */
+	{
+		struct dict_avp_data data = {
+			4700,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Authorization-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Permission-in-VPLMN, Unsigned32, code 4701, section 6.3.3    */
+	{
+		struct dict_avp_data data = {
+			4701,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Permission-in-VPLMN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* V2X-Application-Server, Grouped, code 4702, section 6.3.4        */
+	{
+		struct dict_avp_data data = {
+			4702,	/* Code */
+			10415,	/* Vendor */
+			"V2X-Application-Server",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.468 V15.8.0 (2019-12)                                 */
+	/* Group Communication System Enablers for LTE (GCSE_LTE);          */
+	/* MB2 Reference Point;                                             */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29468-f80.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.468 Table 6.4.1 1: MB2 C specific Diameter AVPs       */
+	/*==================================================================*/
+
+	/* BMSC-Address, Address, code 3500, section 6.4.2                  */
+	{
+		struct dict_avp_data data = {
+			3500,	/* Code */
+			10415,	/* Vendor */
+			"BMSC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* BMSC-Port, Unsigned32, code 3501, section 6.4.3                  */
+	{
+		struct dict_avp_data data = {
+			3501,	/* Code */
+			10415,	/* Vendor */
+			"BMSC-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Common-Tunnel-Endpoint-Identifier, OctetString, code 3524, section 6.4.26 */
+	{
+		struct dict_avp_data data = {
+			3524,	/* Code */
+			10415,	/* Vendor */
+			"Common-Tunnel-Endpoint-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* FEC-Request, OctetString, code 3525, section 6.4.27              */
+	{
+		struct dict_avp_data data = {
+			3525,	/* Code */
+			10415,	/* Vendor */
+			"FEC-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* FEC-Result, Unsigned32, code 3531, section 6.4.33                */
+	{
+		struct dict_avp_data data = {
+			3531,	/* Code */
+			10415,	/* Vendor */
+			"FEC-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Local-M1-Information, Grouped, code 3518, section 6.4.20         */
+	{
+		struct dict_avp_data data = {
+			3518,	/* Code */
+			10415,	/* Vendor */
+			"Local-M1-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Local-MB2-U-Information, Grouped, code 3519, section 6.4.21      */
+	{
+		struct dict_avp_data data = {
+			3519,	/* Code */
+			10415,	/* Vendor */
+			"Local-MB2-U-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MB2U-Security, Unsigned32, code 3517, section 6.4.19             */
+	{
+		struct dict_avp_data data = {
+			3517,	/* Code */
+			10415,	/* Vendor */
+			"MB2U-Security",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Bearer-Event, Unsigned32, code 3502, section 6.4.4          */
+	{
+		struct dict_avp_data data = {
+			3502,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Bearer-Event",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Bearer-Event-Notification, Grouped, code 3503, section 6.4.5 */
+	{
+		struct dict_avp_data data = {
+			3503,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Bearer-Event-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Bearer-Request, Grouped, code 3504, section 6.4.6           */
+	{
+		struct dict_avp_data data = {
+			3504,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Bearer-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Bearer-Response, Grouped, code 3505, section 6.4.7          */
+	{
+		struct dict_avp_data data = {
+			3505,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Bearer-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-Bearer-Result, Unsigned32, code 3506, section 6.4.8         */
+	{
+		struct dict_avp_data data = {
+			3506,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Bearer-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-eNB-IP-Multicast-Address, Address, code 3520, section 6.4.22 */
+	{
+		struct dict_avp_data data = {
+			3520,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-eNB-IP-Multicast-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* MBMS-eNB-IPv6-Multicast-Address, Address, code 3521, section 6.4.23 */
+	{
+		struct dict_avp_data data = {
+			3521,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-eNB-IPv6-Multicast-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (924). */
+	/* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924). */
+	/* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522). */
+	/*                                                                  */
+	/* Fix: MBMS-GW-SSM-IP-Address (3522) renamed to MBMS-GW-SSM-IP-Address-29.468 (3522). */
+	/* MBMS-GW-SSM-IP-Address-29.468, Address, code 3522, section 6.4.24 */
+	{
+		struct dict_avp_data data = {
+			3522,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-SSM-IP-Address-29.468",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (925). */
+	/* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925). */
+	/* 3GPP TS 29.061 V12.6.0 (2014-06) renamed                         */
+	/* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.      */
+	/* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523). */
+	/*                                                                  */
+	/* Fix: MBMS-GW-SSM-IPv6-Address (3523) renamed to MBMS-GW-SSM-IPv6-Address-29.468 (3523). */
+	/* MBMS-GW-SSM-IPv6-Address-29.468, Address, code 3523, section 6.4.25 */
+	{
+		struct dict_avp_data data = {
+			3523,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-SSM-IPv6-Address-29.468",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* MBMS-Start-Time, Time, code 3507, section 6.4.9                  */
+	{
+		struct dict_avp_data data = {
+			3507,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3462).  */
+	/* 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).   */
+	/* 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462). */
+	/*                                                                  */
+	/* Fix: Radio-Frequency (3508) renamed to Radio-Frequency-29.468 (3508). */
+	/* Radio-Frequency-29.468, Unsigned32, code 3508, section 6.4.10    */
+	{
+		struct dict_avp_data data = {
+			3508,	/* Code */
+			10415,	/* Vendor */
+			"Radio-Frequency-29.468",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ROHC-Full-Header-Periodicity, Float32, code 3527, section 6.4.29 */
+	{
+		struct dict_avp_data data = {
+			3527,	/* Code */
+			10415,	/* Vendor */
+			"ROHC-Full-Header-Periodicity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_FLOAT32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ROHC-Max-CID, Unsigned32, code 3532, section 6.4.34              */
+	{
+		struct dict_avp_data data = {
+			3532,	/* Code */
+			10415,	/* Vendor */
+			"ROHC-Max-CID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ROHC-Profile, Unsigned32, code 3528, section 6.4.30              */
+	{
+		struct dict_avp_data data = {
+			3528,	/* Code */
+			10415,	/* Vendor */
+			"ROHC-Profile",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ROHC-Request, Grouped, code 3526, section 6.4.28                 */
+	{
+		struct dict_avp_data data = {
+			3526,	/* Code */
+			10415,	/* Vendor */
+			"ROHC-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ROHC-Result, Unsigned32, code 3530, section 6.4.32               */
+	{
+		struct dict_avp_data data = {
+			3530,	/* Code */
+			10415,	/* Vendor */
+			"ROHC-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Allocation-Request, Grouped, code 3509, section 6.4.11      */
+	{
+		struct dict_avp_data data = {
+			3509,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Allocation-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Allocation-Response, Grouped, code 3510, section 6.4.12     */
+	{
+		struct dict_avp_data data = {
+			3510,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Allocation-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Allocation-Result, Unsigned32, code 3511, section 6.4.13    */
+	{
+		struct dict_avp_data data = {
+			3511,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Allocation-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Deallocation-Request, Grouped, code 3512, section 6.4.14    */
+	{
+		struct dict_avp_data data = {
+			3512,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Deallocation-Request",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Deallocation-Response, Grouped, code 3513, section 6.4.15   */
+	{
+		struct dict_avp_data data = {
+			3513,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Deallocation-Response",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Deallocation-Result, Unsigned32, code 3514, section 6.4.16  */
+	{
+		struct dict_avp_data data = {
+			3514,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Deallocation-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Expiry, Grouped, code 3515, section 6.4.17                  */
+	{
+		struct dict_avp_data data = {
+			3515,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Expiry",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TMGI-Number, Unsigned32, code 3516, section 6.4.18               */
+	{
+		struct dict_avp_data data = {
+			3516,	/* Code */
+			10415,	/* Vendor */
+			"TMGI-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Userplane-Protocol-Result, Grouped, code 3529, section 6.4.31    */
+	{
+		struct dict_avp_data data = {
+			3529,	/* Code */
+			10415,	/* Vendor */
+			"Userplane-Protocol-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 29.561 V16.3.0 (2020-03)                                 */
+	/* 5G System; Interworking between 5G Network and external          */
+	/* Data Networks;                                                   */
+	/* Stage 3                                                          */
+	/*                                                                  */
+	/* From 3GPP 29561-g30.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* Table 12.4-1: N6 re-used Diameter AVPs                           */
+
+	/* Note: Only AVPs defined in 3GPP TS 29.561.                       */
+	/*==================================================================*/
+
+	/* 3GPP-Notification, OctetString, code 110, section 11.3.1         */
+	{
+		struct dict_avp_data data = {
+			110,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Notification",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-UE-MAC-Address, OctetString, code 111, section 11.3.1       */
+	{
+		struct dict_avp_data data = {
+			111,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-UE-MAC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Authorization-Reference, OctetString, code 112, section 11.3.1 */
+	{
+		struct dict_avp_data data = {
+			112,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Authorization-Reference",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Policy-Reference, OctetString, code 113, section 11.3.1     */
+	{
+		struct dict_avp_data data = {
+			113,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Policy-Reference",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Session-AMBR, OctetString, code 114, section 11.3.1         */
+	{
+		struct dict_avp_data data = {
+			114,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Session-AMBR",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-NAI, OctetString, code 115, section 11.3.1                  */
+	{
+		struct dict_avp_data data = {
+			115,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-NAI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-Session-AMBR-v2, OctetString, code 116, section 11.3.1      */
+	{
+		struct dict_avp_data data = {
+			116,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-Session-AMBR-v2",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-IP-Address-Pool-Id, OctetString, code 118, section 11.3.1   */
+	{
+		struct dict_avp_data data = {
+			118,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-IP-Address-Pool-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* Table 17.4-1: Additional information needed for network slice specific authentication */
+	/*==================================================================*/
+
+	/* 3GPP-S-NSSAI, UTF8String, code 200, section 16.3.1               */
+	{
+		struct dict_avp_data data = {
+			200,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-S-NSSAI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP TS 32.299 V15.7.0 (2019-06)                                 */
+	/* Charging management;                                             */
+	/* Diameter charging applications                                   */
+	/*                                                                  */
+	/* From 3GPP 32299-f70.doc                                          */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 32.299 Table 7.2.0.1: 3GPP specific AVPs                 */
+	/*==================================================================*/
+
+	/* 3GPP-OC-Specific-Reduction, Grouped, code 1320                   */
+	{
+		struct dict_avp_data data = {
+			1320,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-OC-Specific-Reduction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-OC-Rating-Group, Unsigned32, code 1321                      */
+	{
+		struct dict_avp_data data = {
+			1321,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-OC-Rating-Group",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* 3GPP-OC-Request-Type, Enumerated, code 1322                      */
+	{
+		struct dict_avp_data data = {
+			1322,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-OC-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-OC-Request-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 29.212 3GPP-PS-Data-Off-Status (2847). */
+	/* 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847). */
+	/* 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406). */
+	/*                                                                  */
+	/* Fix: 3GPP-PS-Data-Off-Status (4406) renamed to 3GPP-PS-Data-Off-Status-32.299 (4406). */
+	/* 3GPP-PS-Data-Off-Status-32.299, Enumerated, code 4406            */
+	{
+		struct dict_avp_data data = {
+			4406,	/* Code */
+			10415,	/* Vendor */
+			"3GPP-PS-Data-Off-Status-32.299",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PS-Data-Off-Status-32.299)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Access-Network-Info-Change, Grouped, code 4401                   */
+	{
+		struct dict_avp_data data = {
+			4401,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Info-Change",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Network-Information, OctetString, code 1263               */
+	{
+		struct dict_avp_data data = {
+			1263,	/* Code */
+			10415,	/* Vendor */
+			"Access-Network-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Transfer-Information, Grouped, code 2709                  */
+	{
+		struct dict_avp_data data = {
+			2709,	/* Code */
+			10415,	/* Vendor */
+			"Access-Transfer-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Access-Transfer-Type, Enumerated, code 2710                      */
+	{
+		struct dict_avp_data data = {
+			2710,	/* Code */
+			10415,	/* Vendor */
+			"Access-Transfer-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Access-Transfer-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Account-Expiration, Time, code 2309                              */
+	{
+		struct dict_avp_data data = {
+			2309,	/* Code */
+			10415,	/* Vendor */
+			"Account-Expiration",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Accumulated-Cost, Grouped, code 2052                             */
+	{
+		struct dict_avp_data data = {
+			2052,	/* Code */
+			10415,	/* Vendor */
+			"Accumulated-Cost",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Adaptations, Enumerated, code 1217                               */
+	{
+		struct dict_avp_data data = {
+			1217,	/* Code */
+			10415,	/* Vendor */
+			"Adaptations",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Adaptations)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Additional-Content-Information, Grouped, code 1207               */
+	{
+		struct dict_avp_data data = {
+			1207,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Content-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Additional-Exception-Reports, Enumerated, code 3936              */
+	{
+		struct dict_avp_data data = {
+			3936,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Exception-Reports",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Additional-Exception-Reports)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Additional-Type-Information, UTF8String, code 1205               */
+	{
+		struct dict_avp_data data = {
+			1205,	/* Code */
+			10415,	/* Vendor */
+			"Additional-Type-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Address-Data, UTF8String, code 897                               */
+	{
+		struct dict_avp_data data = {
+			897,	/* Code */
+			10415,	/* Vendor */
+			"Address-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Address-Domain, Grouped, code 898                                */
+	{
+		struct dict_avp_data data = {
+			898,	/* Code */
+			10415,	/* Vendor */
+			"Address-Domain",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Addressee-Type, Enumerated, code 1208                            */
+	{
+		struct dict_avp_data data = {
+			1208,	/* Code */
+			10415,	/* Vendor */
+			"Addressee-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Addressee-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Address-Type, Enumerated, code 899                               */
+	{
+		struct dict_avp_data data = {
+			899,	/* Code */
+			10415,	/* Vendor */
+			"Address-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Address-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AF-Correlation-Information, Grouped, code 1276                   */
+	{
+		struct dict_avp_data data = {
+			1276,	/* Code */
+			10415,	/* Vendor */
+			"AF-Correlation-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Alternate-Charged-Party-Address, UTF8String, code 1280           */
+	{
+		struct dict_avp_data data = {
+			1280,	/* Code */
+			10415,	/* Vendor */
+			"Alternate-Charged-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Announcement-Identifier, Unsigned32, code 3905                   */
+	{
+		struct dict_avp_data data = {
+			3905,	/* Code */
+			10415,	/* Vendor */
+			"Announcement-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Announcement-Information, Grouped, code 3904                     */
+	{
+		struct dict_avp_data data = {
+			3904,	/* Code */
+			10415,	/* Vendor */
+			"Announcement-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Announcement-Order, Unsigned32, code 3906                        */
+	{
+		struct dict_avp_data data = {
+			3906,	/* Code */
+			10415,	/* Vendor */
+			"Announcement-Order",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Announcing-PLMN-ID, UTF8String, code 4408                        */
+	{
+		struct dict_avp_data data = {
+			4408,	/* Code */
+			10415,	/* Vendor */
+			"Announcing-PLMN-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Announcing-UE-HPLMN-Identifier, UTF8String, code 3426            */
+	{
+		struct dict_avp_data data = {
+			3426,	/* Code */
+			10415,	/* Vendor */
+			"Announcing-UE-HPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Announcing-UE-VPLMN-Identifier, UTF8String, code 3427            */
+	{
+		struct dict_avp_data data = {
+			3427,	/* Code */
+			10415,	/* Vendor */
+			"Announcing-UE-VPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* AoC-Cost-Information, Grouped, code 2053                         */
+	{
+		struct dict_avp_data data = {
+			2053,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Cost-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AoC-Format, Enumerated, code 2310                                */
+	{
+		struct dict_avp_data data = {
+			2310,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Format",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Format)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AoC-Information, Grouped, code 2054                              */
+	{
+		struct dict_avp_data data = {
+			2054,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AoC-Request-Type, Enumerated, code 2055                          */
+	{
+		struct dict_avp_data data = {
+			2055,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Request-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Request-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AoC-Service, Grouped, code 2311                                  */
+	{
+		struct dict_avp_data data = {
+			2311,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Service",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* AoC-Service-Obligatory-Type, Enumerated, code 2312               */
+	{
+		struct dict_avp_data data = {
+			2312,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Service-Obligatory-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Obligatory-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AoC-Service-Type, Enumerated, code 2313                          */
+	{
+		struct dict_avp_data data = {
+			2313,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* AoC-Subscription-Information, Grouped, code 2314                 */
+	{
+		struct dict_avp_data data = {
+			2314,	/* Code */
+			10415,	/* Vendor */
+			"AoC-Subscription-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* API-Content, UTF8String, code 1309                               */
+	{
+		struct dict_avp_data data = {
+			1309,	/* Code */
+			10415,	/* Vendor */
+			"API-Content",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* API-Direction, Enumerated, code 1310                             */
+	{
+		struct dict_avp_data data = {
+			1310,	/* Code */
+			10415,	/* Vendor */
+			"API-Direction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/API-Direction)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* API-Identifier, OctetString, code 1311                           */
+	{
+		struct dict_avp_data data = {
+			1311,	/* Code */
+			10415,	/* Vendor */
+			"API-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* API-Invocation-Timestamp, Time, code 1312                        */
+	{
+		struct dict_avp_data data = {
+			1312,	/* Code */
+			10415,	/* Vendor */
+			"API-Invocation-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* API-Network-Service-Node, Enumerated, code 1315                  */
+	{
+		struct dict_avp_data data = {
+			1315,	/* Code */
+			10415,	/* Vendor */
+			"API-Network-Service-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/API-Network-Service-Node)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* API-Result-Code, Unsigned32, code 1313                           */
+	{
+		struct dict_avp_data data = {
+			1313,	/* Code */
+			10415,	/* Vendor */
+			"API-Result-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* API-Size, Unsigned64, code 1314                                  */
+	{
+		struct dict_avp_data data = {
+			1314,	/* Code */
+			10415,	/* Vendor */
+			"API-Size",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Rate-Control, Grouped, code 3933                             */
+	{
+		struct dict_avp_data data = {
+			3933,	/* Code */
+			10415,	/* Vendor */
+			"APN-Rate-Control",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Rate-Control-Downlink, Grouped, code 3934                    */
+	{
+		struct dict_avp_data data = {
+			3934,	/* Code */
+			10415,	/* Vendor */
+			"APN-Rate-Control-Downlink",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* APN-Rate-Control-Uplink, Grouped, code 3935                      */
+	{
+		struct dict_avp_data data = {
+			3935,	/* Code */
+			10415,	/* Vendor */
+			"APN-Rate-Control-Uplink",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Applic-ID, UTF8String, code 1218                                 */
+	{
+		struct dict_avp_data data = {
+			1218,	/* Code */
+			10415,	/* Vendor */
+			"Applic-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Application-Provided-Called-Party-Address, UTF8String, code 837  */
+	{
+		struct dict_avp_data data = {
+			837,	/* Code */
+			10415,	/* Vendor */
+			"Application-Provided-Called-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Application-Server, UTF8String, code 836                         */
+	{
+		struct dict_avp_data data = {
+			836,	/* Code */
+			10415,	/* Vendor */
+			"Application-Server",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Application-Server-Information, Grouped, code 850                */
+	{
+		struct dict_avp_data data = {
+			850,	/* Code */
+			10415,	/* Vendor */
+			"Application-Server-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Application-Specific-Data, OctetString, code 3458                */
+	{
+		struct dict_avp_data data = {
+			3458,	/* Code */
+			10415,	/* Vendor */
+			"Application-Specific-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Associated-Party-Address, UTF8String, code 2035                  */
+	{
+		struct dict_avp_data data = {
+			2035,	/* Code */
+			10415,	/* Vendor */
+			"Associated-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Associated-URI, UTF8String, code 856                             */
+	{
+		struct dict_avp_data data = {
+			856,	/* Code */
+			10415,	/* Vendor */
+			"Associated-URI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Authorised-QoS, UTF8String, code 849                             */
+	{
+		struct dict_avp_data data = {
+			849,	/* Code */
+			10415,	/* Vendor */
+			"Authorised-QoS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Aux-Applic-Info, UTF8String, code 1219                           */
+	{
+		struct dict_avp_data data = {
+			1219,	/* Code */
+			10415,	/* Vendor */
+			"Aux-Applic-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Base-Time-Interval, Unsigned32, code 1265                        */
+	{
+		struct dict_avp_data data = {
+			1265,	/* Code */
+			10415,	/* Vendor */
+			"Base-Time-Interval",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Basic-Service-Code, Grouped, code 3411                           */
+	{
+		struct dict_avp_data data = {
+			3411,	/* Code */
+			10415,	/* Vendor */
+			"Basic-Service-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Bearer-Capability, OctetString, code 3412                        */
+	{
+		struct dict_avp_data data = {
+			3412,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Capability",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Bearer-Service, OctetString, code 854                            */
+	{
+		struct dict_avp_data data = {
+			854,	/* Code */
+			10415,	/* Vendor */
+			"Bearer-Service",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* BSSID, UTF8String, code 2716                                     */
+	{
+		struct dict_avp_data data = {
+			2716,	/* Code */
+			10415,	/* Vendor */
+			"BSSID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Called-Asserted-Identity, UTF8String, code 1250                  */
+	{
+		struct dict_avp_data data = {
+			1250,	/* Code */
+			10415,	/* Vendor */
+			"Called-Asserted-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Called-Identity, UTF8String, code 3916                           */
+	{
+		struct dict_avp_data data = {
+			3916,	/* Code */
+			10415,	/* Vendor */
+			"Called-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Called-Identity-Change, Grouped, code 3917                       */
+	{
+		struct dict_avp_data data = {
+			3917,	/* Code */
+			10415,	/* Vendor */
+			"Called-Identity-Change",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Called-Party-Address, UTF8String, code 832                       */
+	{
+		struct dict_avp_data data = {
+			832,	/* Code */
+			10415,	/* Vendor */
+			"Called-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Calling-Party-Address, UTF8String, code 831                      */
+	{
+		struct dict_avp_data data = {
+			831,	/* Code */
+			10415,	/* Vendor */
+			"Calling-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Carrier-Select-Routing-Information, UTF8String, code 2023        */
+	{
+		struct dict_avp_data data = {
+			2023,	/* Code */
+			10415,	/* Vendor */
+			"Carrier-Select-Routing-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Cause-Code, Integer32, code 861                                  */
+	{
+		struct dict_avp_data data = {
+			861,	/* Code */
+			10415,	/* Vendor */
+			"Cause-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Cellular-Network-Information, OctetString, code 3924             */
+	{
+		struct dict_avp_data data = {
+			3924,	/* Code */
+			10415,	/* Vendor */
+			"Cellular-Network-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CG-Address, Address, code 846                                    */
+	{
+		struct dict_avp_data data = {
+			846,	/* Code */
+			10415,	/* Vendor */
+			"CG-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Change-Condition, Integer32, code 2037                           */
+	{
+		struct dict_avp_data data = {
+			2037,	/* Code */
+			10415,	/* Vendor */
+			"Change-Condition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-Time, Time, code 2038                                     */
+	{
+		struct dict_avp_data data = {
+			2038,	/* Code */
+			10415,	/* Vendor */
+			"Change-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Charge-Reason-Code, Enumerated, code 2118                        */
+	{
+		struct dict_avp_data data = {
+			2118,	/* Code */
+			10415,	/* Vendor */
+			"Charge-Reason-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charge-Reason-Code)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Charged-Party, UTF8String, code 857                              */
+	{
+		struct dict_avp_data data = {
+			857,	/* Code */
+			10415,	/* Vendor */
+			"Charged-Party",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Charging-Characteristics-Selection-Mode, Enumerated, code 2066   */
+	{
+		struct dict_avp_data data = {
+			2066,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Characteristics-Selection-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Characteristics-Selection-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Charging-Per-IP-CAN-Session-Indicator, Enumerated, code 4400     */
+	{
+		struct dict_avp_data data = {
+			4400,	/* Code */
+			10415,	/* Vendor */
+			"Charging-Per-IP-CAN-Session-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Per-IP-CAN-Session-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Civic-Address-Information, UTF8String, code 1305                 */
+	{
+		struct dict_avp_data data = {
+			1305,	/* Code */
+			10415,	/* Vendor */
+			"Civic-Address-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Class-Identifier, Enumerated, code 1214                          */
+	{
+		struct dict_avp_data data = {
+			1214,	/* Code */
+			10415,	/* Vendor */
+			"Class-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Class-Identifier)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Client-Address, Address, code 2018                               */
+	{
+		struct dict_avp_data data = {
+			2018,	/* Code */
+			10415,	/* Vendor */
+			"Client-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* CN-Operator-Selection-Entity, Enumerated, code 3421              */
+	{
+		struct dict_avp_data data = {
+			3421,	/* Code */
+			10415,	/* Vendor */
+			"CN-Operator-Selection-Entity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-Operator-Selection-Entity)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Content-Class, Enumerated, code 1220                             */
+	{
+		struct dict_avp_data data = {
+			1220,	/* Code */
+			10415,	/* Vendor */
+			"Content-Class",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Content-Class)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Content-Disposition, UTF8String, code 828                        */
+	{
+		struct dict_avp_data data = {
+			828,	/* Code */
+			10415,	/* Vendor */
+			"Content-Disposition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Content-Length, Unsigned32, code 827                             */
+	{
+		struct dict_avp_data data = {
+			827,	/* Code */
+			10415,	/* Vendor */
+			"Content-Length",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Content-Size, Unsigned32, code 1206                              */
+	{
+		struct dict_avp_data data = {
+			1206,	/* Code */
+			10415,	/* Vendor */
+			"Content-Size",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Content-Type, UTF8String, code 826                               */
+	{
+		struct dict_avp_data data = {
+			826,	/* Code */
+			10415,	/* Vendor */
+			"Content-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Coverage-Info, Grouped, code 3459                                */
+	{
+		struct dict_avp_data data = {
+			3459,	/* Code */
+			10415,	/* Vendor */
+			"Coverage-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Coverage-Status, Enumerated, code 3428                           */
+	{
+		struct dict_avp_data data = {
+			3428,	/* Code */
+			10415,	/* Vendor */
+			"Coverage-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Coverage-Status)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CP-CIoT-EPS-Optimisation-Indicator, Enumerated, code 3930        */
+	{
+		struct dict_avp_data data = {
+			3930,	/* Code */
+			10415,	/* Vendor */
+			"CP-CIoT-EPS-Optimisation-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CP-CIoT-EPS-Optimisation-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CPDT-Information, Grouped, code 3927                             */
+	{
+		struct dict_avp_data data = {
+			3927,	/* Code */
+			10415,	/* Vendor */
+			"CPDT-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* CSG-Access-Mode, Enumerated, code 2317                           */
+	{
+		struct dict_avp_data data = {
+			2317,	/* Code */
+			10415,	/* Vendor */
+			"CSG-Access-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Access-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CSG-Membership-Indication, Enumerated, code 2318                 */
+	{
+		struct dict_avp_data data = {
+			2318,	/* Code */
+			10415,	/* Vendor */
+			"CSG-Membership-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Membership-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* CUG-Information, OctetString, code 2304                          */
+	{
+		struct dict_avp_data data = {
+			2304,	/* Code */
+			10415,	/* Vendor */
+			"CUG-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Current-Tariff, Grouped, code 2056                               */
+	{
+		struct dict_avp_data data = {
+			2056,	/* Code */
+			10415,	/* Vendor */
+			"Current-Tariff",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Data-Coding-Scheme, Integer32, code 2001                         */
+	{
+		struct dict_avp_data data = {
+			2001,	/* Code */
+			10415,	/* Vendor */
+			"Data-Coding-Scheme",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Deferred-Location-Event-Type, UTF8String, code 1230              */
+	{
+		struct dict_avp_data data = {
+			1230,	/* Code */
+			10415,	/* Vendor */
+			"Deferred-Location-Event-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Delivery-Report-Requested, Enumerated, code 1216                 */
+	{
+		struct dict_avp_data data = {
+			1216,	/* Code */
+			10415,	/* Vendor */
+			"Delivery-Report-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Destination-Interface, Grouped, code 2002                        */
+	{
+		struct dict_avp_data data = {
+			2002,	/* Code */
+			10415,	/* Vendor */
+			"Destination-Interface",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Diagnostics, Integer32, code 2039                                */
+	{
+		struct dict_avp_data data = {
+			2039,	/* Code */
+			10415,	/* Vendor */
+			"Diagnostics",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Discoveree-UE-HPLMN-Identifier, UTF8String, code 4402            */
+	{
+		struct dict_avp_data data = {
+			4402,	/* Code */
+			10415,	/* Vendor */
+			"Discoveree-UE-HPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Discoveree-UE-VPLMN-Identifier, UTF8String, code 4403            */
+	{
+		struct dict_avp_data data = {
+			4403,	/* Code */
+			10415,	/* Vendor */
+			"Discoveree-UE-VPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Discoverer-UE-HPLMN-Identifier, UTF8String, code 4404            */
+	{
+		struct dict_avp_data data = {
+			4404,	/* Code */
+			10415,	/* Vendor */
+			"Discoverer-UE-HPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Discoverer-UE-VPLMN-Identifier, UTF8String, code 4405            */
+	{
+		struct dict_avp_data data = {
+			4405,	/* Code */
+			10415,	/* Vendor */
+			"Discoverer-UE-VPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Domain-Name, UTF8String, code 1200                               */
+	{
+		struct dict_avp_data data = {
+			1200,	/* Code */
+			10415,	/* Vendor */
+			"Domain-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* DRM-Content, Enumerated, code 1221                               */
+	{
+		struct dict_avp_data data = {
+			1221,	/* Code */
+			10415,	/* Vendor */
+			"DRM-Content",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRM-Content)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Dynamic-Address-Flag, Enumerated, code 2051                      */
+	{
+		struct dict_avp_data data = {
+			2051,	/* Code */
+			10415,	/* Vendor */
+			"Dynamic-Address-Flag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Dynamic-Address-Flag-Extension, Enumerated, code 2068            */
+	{
+		struct dict_avp_data data = {
+			2068,	/* Code */
+			10415,	/* Vendor */
+			"Dynamic-Address-Flag-Extension",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag-Extension)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Early-Media-Description, Grouped, code 1272                      */
+	{
+		struct dict_avp_data data = {
+			1272,	/* Code */
+			10415,	/* Vendor */
+			"Early-Media-Description",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Enhanced-Diagnostics, Grouped, code 3901                         */
+	{
+		struct dict_avp_data data = {
+			3901,	/* Code */
+			10415,	/* Vendor */
+			"Enhanced-Diagnostics",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Envelope, Grouped, code 1266                                     */
+	{
+		struct dict_avp_data data = {
+			1266,	/* Code */
+			10415,	/* Vendor */
+			"Envelope",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Envelope-End-Time, Time, code 1267                               */
+	{
+		struct dict_avp_data data = {
+			1267,	/* Code */
+			10415,	/* Vendor */
+			"Envelope-End-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Envelope-Reporting, Enumerated, code 1268                        */
+	{
+		struct dict_avp_data data = {
+			1268,	/* Code */
+			10415,	/* Vendor */
+			"Envelope-Reporting",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Envelope-Reporting)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Envelope-Start-Time, Time, code 1269                             */
+	{
+		struct dict_avp_data data = {
+			1269,	/* Code */
+			10415,	/* Vendor */
+			"Envelope-Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* EPDG-Address, Address, code 3425                                 */
+	{
+		struct dict_avp_data data = {
+			3425,	/* Code */
+			10415,	/* Vendor */
+			"EPDG-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Event, UTF8String, code 825                                      */
+	{
+		struct dict_avp_data data = {
+			825,	/* Code */
+			10415,	/* Vendor */
+			"Event",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Event-Charging-TimeStamp, Time, code 1258                        */
+	{
+		struct dict_avp_data data = {
+			1258,	/* Code */
+			10415,	/* Vendor */
+			"Event-Charging-TimeStamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Event-Type, Grouped, code 823                                    */
+	{
+		struct dict_avp_data data = {
+			823,	/* Code */
+			10415,	/* Vendor */
+			"Event-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Expires, Unsigned32, code 888                                    */
+	{
+		struct dict_avp_data data = {
+			888,	/* Code */
+			10415,	/* Vendor */
+			"Expires",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Exposure-Function-API-Information, Grouped, code 1316            */
+	{
+		struct dict_avp_data data = {
+			1316,	/* Code */
+			10415,	/* Vendor */
+			"Exposure-Function-API-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* FE-Identifier-List, UTF8String, code 4413                        */
+	{
+		struct dict_avp_data data = {
+			4413,	/* Code */
+			10415,	/* Vendor */
+			"FE-Identifier-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* File-Repair-Supported, Enumerated, code 1224                     */
+	{
+		struct dict_avp_data data = {
+			1224,	/* Code */
+			10415,	/* Vendor */
+			"File-Repair-Supported",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/File-Repair-Supported)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Forwarding-Pending, Enumerated, code 3415                        */
+	{
+		struct dict_avp_data data = {
+			3415,	/* Code */
+			10415,	/* Vendor */
+			"Forwarding-Pending",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Forwarding-Pending)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* From-Address, UTF8String, code 2708                              */
+	{
+		struct dict_avp_data data = {
+			2708,	/* Code */
+			10415,	/* Vendor */
+			"From-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* GGSN-Address, Address, code 847                                  */
+	{
+		struct dict_avp_data data = {
+			847,	/* Code */
+			10415,	/* Vendor */
+			"GGSN-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* IMS-Application-Reference-Identifier, UTF8String, code 2601      */
+	{
+		struct dict_avp_data data = {
+			2601,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Application-Reference-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IMS-Charging-Identifier, UTF8String, code 841                    */
+	{
+		struct dict_avp_data data = {
+			841,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Charging-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IMS-Communication-Service-Identifier, UTF8String, code 1281      */
+	{
+		struct dict_avp_data data = {
+			1281,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Communication-Service-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IMS-Emergency-Indicator, Enumerated, code 2322                   */
+	{
+		struct dict_avp_data data = {
+			2322,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Emergency-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Emergency-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* IMS-Information, Grouped, code 876                               */
+	{
+		struct dict_avp_data data = {
+			876,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* IMS-Visited-Network-Identifier, UTF8String, code 2713            */
+	{
+		struct dict_avp_data data = {
+			2713,	/* Code */
+			10415,	/* Vendor */
+			"IMS-Visited-Network-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IMSI-Unauthenticated-Flag, Enumerated, code 2308                 */
+	{
+		struct dict_avp_data data = {
+			2308,	/* Code */
+			10415,	/* Vendor */
+			"IMSI-Unauthenticated-Flag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMSI-Unauthenticated-Flag)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Incoming-Trunk-Group-Id, UTF8String, code 852                    */
+	{
+		struct dict_avp_data data = {
+			852,	/* Code */
+			10415,	/* Vendor */
+			"Incoming-Trunk-Group-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Incremental-Cost, Grouped, code 2062                             */
+	{
+		struct dict_avp_data data = {
+			2062,	/* Code */
+			10415,	/* Vendor */
+			"Incremental-Cost",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Initial-IMS-Charging-Identifier, UTF8String, code 2321           */
+	{
+		struct dict_avp_data data = {
+			2321,	/* Code */
+			10415,	/* Vendor */
+			"Initial-IMS-Charging-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Instance-Id, UTF8String, code 3402                               */
+	{
+		struct dict_avp_data data = {
+			3402,	/* Code */
+			10415,	/* Vendor */
+			"Instance-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Interface-Id, UTF8String, code 2003                              */
+	{
+		struct dict_avp_data data = {
+			2003,	/* Code */
+			10415,	/* Vendor */
+			"Interface-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Interface-Port, UTF8String, code 2004                            */
+	{
+		struct dict_avp_data data = {
+			2004,	/* Code */
+			10415,	/* Vendor */
+			"Interface-Port",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Interface-Text, UTF8String, code 2005                            */
+	{
+		struct dict_avp_data data = {
+			2005,	/* Code */
+			10415,	/* Vendor */
+			"Interface-Text",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Interface-Type, Enumerated, code 2006                            */
+	{
+		struct dict_avp_data data = {
+			2006,	/* Code */
+			10415,	/* Vendor */
+			"Interface-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interface-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Inter-Operator-Identifier, Grouped, code 838                     */
+	{
+		struct dict_avp_data data = {
+			838,	/* Code */
+			10415,	/* Vendor */
+			"Inter-Operator-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Inter-UE-Transfer, Enumerated, code 3902                         */
+	{
+		struct dict_avp_data data = {
+			3902,	/* Code */
+			10415,	/* Vendor */
+			"Inter-UE-Transfer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Inter-UE-Transfer)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* IP-Realm-Default-Indication, Enumerated, code 2603               */
+	{
+		struct dict_avp_data data = {
+			2603,	/* Code */
+			10415,	/* Vendor */
+			"IP-Realm-Default-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-Realm-Default-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ISUP-Cause, Grouped, code 3416                                   */
+	{
+		struct dict_avp_data data = {
+			3416,	/* Code */
+			10415,	/* Vendor */
+			"ISUP-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ISUP-Cause-Diagnostics, OctetString, code 3422                   */
+	{
+		struct dict_avp_data data = {
+			3422,	/* Code */
+			10415,	/* Vendor */
+			"ISUP-Cause-Diagnostics",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ISUP-Cause-Location, Unsigned32, code 3423                       */
+	{
+		struct dict_avp_data data = {
+			3423,	/* Code */
+			10415,	/* Vendor */
+			"ISUP-Cause-Location",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ISUP-Cause-Value, Unsigned32, code 3424                          */
+	{
+		struct dict_avp_data data = {
+			3424,	/* Code */
+			10415,	/* Vendor */
+			"ISUP-Cause-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ISUP-Location-Number, OctetString, code 3414                     */
+	{
+		struct dict_avp_data data = {
+			3414,	/* Code */
+			10415,	/* Vendor */
+			"ISUP-Location-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Language, UTF8String, code 3914                                  */
+	{
+		struct dict_avp_data data = {
+			3914,	/* Code */
+			10415,	/* Vendor */
+			"Language",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Layer-2-Group-ID, OctetString, code 3429                         */
+	{
+		struct dict_avp_data data = {
+			3429,	/* Code */
+			10415,	/* Vendor */
+			"Layer-2-Group-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-APN, UTF8String, code 1231                                   */
+	{
+		struct dict_avp_data data = {
+			1231,	/* Code */
+			10415,	/* Vendor */
+			"LCS-APN",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* LCS-Client-Dialed-By-MS, UTF8String, code 1233                   */
+	{
+		struct dict_avp_data data = {
+			1233,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Client-Dialed-By-MS",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* LCS-Client-External-ID, UTF8String, code 1234                    */
+	{
+		struct dict_avp_data data = {
+			1234,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Client-External-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* LCS-Client-Id, Grouped, code 1232                                */
+	{
+		struct dict_avp_data data = {
+			1232,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Client-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Client-Name, Grouped, code 1235                              */
+	{
+		struct dict_avp_data data = {
+			1235,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Client-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Client-Type, Enumerated, code 1241                           */
+	{
+		struct dict_avp_data data = {
+			1241,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Client-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Client-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LCS-Data-Coding-Scheme, UTF8String, code 1236                    */
+	{
+		struct dict_avp_data data = {
+			1236,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Data-Coding-Scheme",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* LCS-Format-Indicator, Enumerated, code 1237                      */
+	{
+		struct dict_avp_data data = {
+			1237,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Format-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Format-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* LCS-Information, Grouped, code 878                               */
+	{
+		struct dict_avp_data data = {
+			878,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* LCS-Name-String, UTF8String, code 1238                           */
+	{
+		struct dict_avp_data data = {
+			1238,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Name-String",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed                   */
+	/* LCS-Requestor-Id (1239) to LCS-Requestor-ID (1239).              */
+	/*                                                                  */
+	/* Change-1.4.0: LCS-Requestor-Id (1239) renamed to LCS-Requestor-ID (1239). */
+	/* LCS-Requestor-ID, Grouped, code 1239                             */
+	{
+		struct dict_avp_data data = {
+			1239,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Requestor-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed                   */
+	/* LCS-Requestor-Id-String (1240) to LCS-Requestor-ID-String (1240). */
+	/*                                                                  */
+	/* Change-1.4.0: LCS-Requestor-Id-String (1240) renamed to LCS-Requestor-ID-String (1240). */
+	/* LCS-Requestor-ID-String, UTF8String, code 1240                   */
+	{
+		struct dict_avp_data data = {
+			1240,	/* Code */
+			10415,	/* Vendor */
+			"LCS-Requestor-ID-String",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Local-GW-Inserted-Indication, Enumerated, code 2604              */
+	{
+		struct dict_avp_data data = {
+			2604,	/* Code */
+			10415,	/* Vendor */
+			"Local-GW-Inserted-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-GW-Inserted-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Local-Sequence-Number, Unsigned32, code 2063                     */
+	{
+		struct dict_avp_data data = {
+			2063,	/* Code */
+			10415,	/* Vendor */
+			"Local-Sequence-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Estimate, OctetString, code 1242                        */
+	{
+		struct dict_avp_data data = {
+			1242,	/* Code */
+			10415,	/* Vendor */
+			"Location-Estimate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Estimate-Type, Enumerated, code 1243                    */
+	{
+		struct dict_avp_data data = {
+			1243,	/* Code */
+			10415,	/* Vendor */
+			"Location-Estimate-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Estimate-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Location-Info, Grouped, code 3460                                */
+	{
+		struct dict_avp_data data = {
+			3460,	/* Code */
+			10415,	/* Vendor */
+			"Location-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Location-Type, Grouped, code 1244                                */
+	{
+		struct dict_avp_data data = {
+			1244,	/* Code */
+			10415,	/* Vendor */
+			"Location-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Low-Balance-Indication, Enumerated, code 2020                    */
+	{
+		struct dict_avp_data data = {
+			2020,	/* Code */
+			10415,	/* Vendor */
+			"Low-Balance-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Balance-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Low-Priority-Indicator, Enumerated, code 2602                    */
+	{
+		struct dict_avp_data data = {
+			2602,	/* Code */
+			10415,	/* Vendor */
+			"Low-Priority-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Priority-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MBMS-Charged-Party, Enumerated, code 2323                        */
+	{
+		struct dict_avp_data data = {
+			2323,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Charged-Party",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Charged-Party)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: 3GPP TS 32.299 V11.8.0 (2013-07) Table 7.2 changed         */
+	/* row MBMS-GW-Address (2307) to have a hyphen instead of space.    */
+	/*                                                                  */
+	/* Change-1.4.0: MBMSGW-Address (2307) renamed to MBMS-GW-Address (2307). */
+	/* MBMS-GW-Address, Address, code 2307                              */
+	{
+		struct dict_avp_data data = {
+			2307,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-GW-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* MBMS-Information, Grouped, code 880                              */
+	{
+		struct dict_avp_data data = {
+			880,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MBMS-User-Service-Type, Enumerated, code 1225                    */
+	{
+		struct dict_avp_data data = {
+			1225,	/* Code */
+			10415,	/* Vendor */
+			"MBMS-User-Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Service-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Media-Initiator-Flag, Enumerated, code 882                       */
+	{
+		struct dict_avp_data data = {
+			882,	/* Code */
+			10415,	/* Vendor */
+			"Media-Initiator-Flag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Initiator-Flag)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Media-Initiator-Party, UTF8String, code 1288                     */
+	{
+		struct dict_avp_data data = {
+			1288,	/* Code */
+			10415,	/* Vendor */
+			"Media-Initiator-Party",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Message-Body, Grouped, code 889                                  */
+	{
+		struct dict_avp_data data = {
+			889,	/* Code */
+			10415,	/* Vendor */
+			"Message-Body",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Message-Class, Grouped, code 1213                                */
+	{
+		struct dict_avp_data data = {
+			1213,	/* Code */
+			10415,	/* Vendor */
+			"Message-Class",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Message-ID, UTF8String, code 1210                                */
+	{
+		struct dict_avp_data data = {
+			1210,	/* Code */
+			10415,	/* Vendor */
+			"Message-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Message-Size, Unsigned32, code 1212                              */
+	{
+		struct dict_avp_data data = {
+			1212,	/* Code */
+			10415,	/* Vendor */
+			"Message-Size",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Message-Type, Enumerated, code 1211                              */
+	{
+		struct dict_avp_data data = {
+			1211,	/* Code */
+			10415,	/* Vendor */
+			"Message-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Message-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MMBox-Storage-Requested, Enumerated, code 1248                   */
+	{
+		struct dict_avp_data data = {
+			1248,	/* Code */
+			10415,	/* Vendor */
+			"MMBox-Storage-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MMBox-Storage-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* MM-Content-Type, Grouped, code 1203                              */
+	{
+		struct dict_avp_data data = {
+			1203,	/* Code */
+			10415,	/* Vendor */
+			"MM-Content-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MMS-Information, Grouped, code 877                               */
+	{
+		struct dict_avp_data data = {
+			877,	/* Code */
+			10415,	/* Vendor */
+			"MMS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MMTel-Information, Grouped, code 2030                            */
+	{
+		struct dict_avp_data data = {
+			2030,	/* Code */
+			10415,	/* Vendor */
+			"MMTel-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MMTel-SService-Type, Unsigned32, code 2031                       */
+	{
+		struct dict_avp_data data = {
+			2031,	/* Code */
+			10415,	/* Vendor */
+			"MMTel-SService-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitored-PLMN-Identifier, UTF8String, code 3430                 */
+	{
+		struct dict_avp_data data = {
+			3430,	/* Code */
+			10415,	/* Vendor */
+			"Monitored-PLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Monitoring-Event-Configuration-Activity, Integer32, code 3919    */
+	{
+		struct dict_avp_data data = {
+			3919,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Configuration-Activity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Functionality, Integer32, code 3922             */
+	{
+		struct dict_avp_data data = {
+			3922,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Functionality",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Information, Grouped, code 3921                 */
+	{
+		struct dict_avp_data data = {
+			3921,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Report-Data, Grouped, code 3920                 */
+	{
+		struct dict_avp_data data = {
+			3920,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Report-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-Event-Report-Number, Unsigned32, code 3923            */
+	{
+		struct dict_avp_data data = {
+			3923,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-Event-Report-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Monitoring-UE-HPLMN-Identifier, UTF8String, code 3431            */
+	{
+		struct dict_avp_data data = {
+			3431,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-UE-HPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Monitoring-UE-Identifier, UTF8String, code 3432                  */
+	{
+		struct dict_avp_data data = {
+			3432,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-UE-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Monitoring-UE-VPLMN-Identifier, UTF8String, code 3433            */
+	{
+		struct dict_avp_data data = {
+			3433,	/* Code */
+			10415,	/* Vendor */
+			"Monitoring-UE-VPLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* MSC-Address, OctetString, code 3417                              */
+	{
+		struct dict_avp_data data = {
+			3417,	/* Code */
+			10415,	/* Vendor */
+			"MSC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* MTC-IWF-Address, Address, code 3406                              */
+	{
+		struct dict_avp_data data = {
+			3406,	/* Code */
+			10415,	/* Vendor */
+			"MTC-IWF-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Neighbour-Node-Address, Address, code 2705                       */
+	{
+		struct dict_avp_data data = {
+			2705,	/* Code */
+			10415,	/* Vendor */
+			"Neighbour-Node-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Network-Call-Reference-Number, OctetString, code 3418            */
+	{
+		struct dict_avp_data data = {
+			3418,	/* Code */
+			10415,	/* Vendor */
+			"Network-Call-Reference-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Next-Tariff, Grouped, code 2057                                  */
+	{
+		struct dict_avp_data data = {
+			2057,	/* Code */
+			10415,	/* Vendor */
+			"Next-Tariff",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NIDD-Submission, Grouped, code 3928                              */
+	{
+		struct dict_avp_data data = {
+			3928,	/* Code */
+			10415,	/* Vendor */
+			"NIDD-Submission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NNI-Information, Grouped, code 2703                              */
+	{
+		struct dict_avp_data data = {
+			2703,	/* Code */
+			10415,	/* Vendor */
+			"NNI-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* NNI-Type, Enumerated, code 2704                                  */
+	{
+		struct dict_avp_data data = {
+			2704,	/* Code */
+			10415,	/* Vendor */
+			"NNI-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NNI-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Node-Functionality, Enumerated, code 862                         */
+	{
+		struct dict_avp_data data = {
+			862,	/* Code */
+			10415,	/* Vendor */
+			"Node-Functionality",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Node-Functionality)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Node-Id, UTF8String, code 2064                                   */
+	{
+		struct dict_avp_data data = {
+			2064,	/* Code */
+			10415,	/* Vendor */
+			"Node-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Number-Of-Diversions, Unsigned32, code 2034                      */
+	{
+		struct dict_avp_data data = {
+			2034,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Diversions",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Messages-Sent, Unsigned32, code 2019                   */
+	{
+		struct dict_avp_data data = {
+			2019,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Messages-Sent",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Participants, Unsigned32, code 885                     */
+	{
+		struct dict_avp_data data = {
+			885,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Participants",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Received-Talk-Bursts, Unsigned32, code 1282            */
+	{
+		struct dict_avp_data data = {
+			1282,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Received-Talk-Bursts",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Talk-Bursts, Unsigned32, code 1283                     */
+	{
+		struct dict_avp_data data = {
+			1283,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Talk-Bursts",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Portability-Routing-Information, UTF8String, code 2024    */
+	{
+		struct dict_avp_data data = {
+			2024,	/* Code */
+			10415,	/* Vendor */
+			"Number-Portability-Routing-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Offline-Charging, Grouped, code 1278                             */
+	{
+		struct dict_avp_data data = {
+			1278,	/* Code */
+			10415,	/* Vendor */
+			"Offline-Charging",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Online-Charging-Flag, Enumerated, code 2303                      */
+	{
+		struct dict_avp_data data = {
+			2303,	/* Code */
+			10415,	/* Vendor */
+			"Online-Charging-Flag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online-Charging-Flag)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Originating-IOI, UTF8String, code 839                            */
+	{
+		struct dict_avp_data data = {
+			839,	/* Code */
+			10415,	/* Vendor */
+			"Originating-IOI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Originator, Enumerated, code 864                                 */
+	{
+		struct dict_avp_data data = {
+			864,	/* Code */
+			10415,	/* Vendor */
+			"Originator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Originator-Address, Grouped, code 886                            */
+	{
+		struct dict_avp_data data = {
+			886,	/* Code */
+			10415,	/* Vendor */
+			"Originator-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Originator-Interface, Grouped, code 2009                         */
+	{
+		struct dict_avp_data data = {
+			2009,	/* Code */
+			10415,	/* Vendor */
+			"Originator-Interface",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Originator-Received-Address, Grouped, code 2027                  */
+	{
+		struct dict_avp_data data = {
+			2027,	/* Code */
+			10415,	/* Vendor */
+			"Originator-Received-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Originator-SCCP-Address, Address, code 2008                      */
+	{
+		struct dict_avp_data data = {
+			2008,	/* Code */
+			10415,	/* Vendor */
+			"Originator-SCCP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Outgoing-Session-Id, UTF8String, code 2320                       */
+	{
+		struct dict_avp_data data = {
+			2320,	/* Code */
+			10415,	/* Vendor */
+			"Outgoing-Session-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Outgoing-Trunk-Group-Id, UTF8String, code 853                    */
+	{
+		struct dict_avp_data data = {
+			853,	/* Code */
+			10415,	/* Vendor */
+			"Outgoing-Trunk-Group-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Participant-Access-Priority, Enumerated, code 1259               */
+	{
+		struct dict_avp_data data = {
+			1259,	/* Code */
+			10415,	/* Vendor */
+			"Participant-Access-Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Access-Priority)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Participant-Action-Type, Enumerated, code 2049                   */
+	{
+		struct dict_avp_data data = {
+			2049,	/* Code */
+			10415,	/* Vendor */
+			"Participant-Action-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Action-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Participant-Group, Grouped, code 1260                            */
+	{
+		struct dict_avp_data data = {
+			1260,	/* Code */
+			10415,	/* Vendor */
+			"Participant-Group",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Participants-Involved, UTF8String, code 887                      */
+	{
+		struct dict_avp_data data = {
+			887,	/* Code */
+			10415,	/* Vendor */
+			"Participants-Involved",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* PC3-Control-Protocol-Cause, Integer32, code 3434                 */
+	{
+		struct dict_avp_data data = {
+			3434,	/* Code */
+			10415,	/* Vendor */
+			"PC3-Control-Protocol-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PC3-EPC-Control-Protocol-Cause, Integer32, code 3435             */
+	{
+		struct dict_avp_data data = {
+			3435,	/* Code */
+			10415,	/* Vendor */
+			"PC3-EPC-Control-Protocol-Cause",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PC5-Radio-Technology, Enumerated, code 1300                      */
+	{
+		struct dict_avp_data data = {
+			1300,	/* Code */
+			10415,	/* Vendor */
+			"PC5-Radio-Technology",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PC5-Radio-Technology)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PDN-Connection-Charging-ID, Unsigned32, code 2050                */
+	{
+		struct dict_avp_data data = {
+			2050,	/* Code */
+			10415,	/* Vendor */
+			"PDN-Connection-Charging-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDP-Address, Address, code 1227                                  */
+	{
+		struct dict_avp_data data = {
+			1227,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* PDP-Address-Prefix-Length, Unsigned32, code 2606                 */
+	{
+		struct dict_avp_data data = {
+			2606,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Address-Prefix-Length",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PDP-Context-Type, Enumerated, code 1247                          */
+	{
+		struct dict_avp_data data = {
+			1247,	/* Code */
+			10415,	/* Vendor */
+			"PDP-Context-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Context-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Change-1.4.0: PDG-Address (895) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: PDG-Charging-Id (896) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Play-Alternative, Enumerated, code 3913                          */
+	{
+		struct dict_avp_data data = {
+			3913,	/* Code */
+			10415,	/* Vendor */
+			"Play-Alternative",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Play-Alternative)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-Change-Condition, Enumerated, code 1261                      */
+	{
+		struct dict_avp_data data = {
+			1261,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Change-Condition",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Change-Condition)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-Change-Time, Time, code 1262                                 */
+	{
+		struct dict_avp_data data = {
+			1262,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Change-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* PoC-Controlling-Address, UTF8String, code 858                    */
+	{
+		struct dict_avp_data data = {
+			858,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Controlling-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* PoC-Event-Type, Enumerated, code 2025                            */
+	{
+		struct dict_avp_data data = {
+			2025,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Event-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Event-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-Group-Name, UTF8String, code 859                             */
+	{
+		struct dict_avp_data data = {
+			859,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Group-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* PoC-Information, Grouped, code 879                               */
+	{
+		struct dict_avp_data data = {
+			879,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PoC-Server-Role, Enumerated, code 883                            */
+	{
+		struct dict_avp_data data = {
+			883,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Server-Role",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Server-Role)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-Session-Id, UTF8String, code 1229                            */
+	{
+		struct dict_avp_data data = {
+			1229,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Session-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* PoC-Session-Initiation-type, Enumerated, code 1277               */
+	{
+		struct dict_avp_data data = {
+			1277,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Session-Initiation-type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Initiation-type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-Session-Type, Enumerated, code 884                           */
+	{
+		struct dict_avp_data data = {
+			884,	/* Code */
+			10415,	/* Vendor */
+			"PoC-Session-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PoC-User-Role, Grouped, code 1252                                */
+	{
+		struct dict_avp_data data = {
+			1252,	/* Code */
+			10415,	/* Vendor */
+			"PoC-User-Role",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PoC-User-Role-IDs, UTF8String, code 1253                         */
+	{
+		struct dict_avp_data data = {
+			1253,	/* Code */
+			10415,	/* Vendor */
+			"PoC-User-Role-IDs",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Note: 3GPP TS 32.299 V13.1.0 (2015-06) renamed                   */
+	/* PoC-User-Role-info-Units (1254) to PoC-User-Role-Info-Units (1254). */
+	/*                                                                  */
+	/* Change-1.4.0: PoC-User-Role-info-Units (1254) renamed to PoC-User-Role-Info-Units (1254). */
+	/* PoC-User-Role-Info-Units, Enumerated, code 1254                  */
+	{
+		struct dict_avp_data data = {
+			1254,	/* Code */
+			10415,	/* Vendor */
+			"PoC-User-Role-Info-Units",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-User-Role-Info-Units)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Positioning-Data, UTF8String, code 1245                          */
+	{
+		struct dict_avp_data data = {
+			1245,	/* Code */
+			10415,	/* Vendor */
+			"Positioning-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Preferred-AoC-Currency, Unsigned32, code 2315                    */
+	{
+		struct dict_avp_data data = {
+			2315,	/* Code */
+			10415,	/* Vendor */
+			"Preferred-AoC-Currency",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Priority, Enumerated, code 1209                                  */
+	{
+		struct dict_avp_data data = {
+			1209,	/* Code */
+			10415,	/* Vendor */
+			"Priority",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Privacy-Indicator, Enumerated, code 3915                         */
+	{
+		struct dict_avp_data data = {
+			3915,	/* Code */
+			10415,	/* Vendor */
+			"Privacy-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Privacy-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-3rd-Party-Application-ID, UTF8String, code 3440            */
+	{
+		struct dict_avp_data data = {
+			3440,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-3rd-Party-Application-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* ProSe-Direct-Communication-Reception-Data-Container, Grouped, code 3461 */
+	{
+		struct dict_avp_data data = {
+			3461,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Direct-Communication-Reception-Data-Container",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Direct-Communication-Transmission-Data-Container, Grouped, code 3441 */
+	{
+		struct dict_avp_data data = {
+			3441,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Direct-Communication-Transmission-Data-Container",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Direct-Discovery-Model, Enumerated, code 3442              */
+	{
+		struct dict_avp_data data = {
+			3442,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Direct-Discovery-Model",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Direct-Discovery-Model)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Event-Type, Enumerated, code 3443                          */
+	{
+		struct dict_avp_data data = {
+			3443,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Event-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Event-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Function-IP-Address, Address, code 3444                    */
+	{
+		struct dict_avp_data data = {
+			3444,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Function-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* ProSe-Function-PLMN-Identifier, UTF8String, code 3457            */
+	{
+		struct dict_avp_data data = {
+			3457,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Function-PLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* ProSe-Functionality, Enumerated, code 3445                       */
+	{
+		struct dict_avp_data data = {
+			3445,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Functionality",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Functionality)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Group-IP-Multicast-Address, Address, code 3446             */
+	{
+		struct dict_avp_data data = {
+			3446,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Group-IP-Multicast-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* ProSe-Information, Grouped, code 3447                            */
+	{
+		struct dict_avp_data data = {
+			3447,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-Range-Class, Enumerated, code 3448                         */
+	{
+		struct dict_avp_data data = {
+			3448,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Range-Class",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Range-Class)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Reason-For-Cancellation, Enumerated, code 3449             */
+	{
+		struct dict_avp_data data = {
+			3449,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Reason-For-Cancellation",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Reason-For-Cancellation)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Request-Timestamp, Time, code 3450                         */
+	{
+		struct dict_avp_data data = {
+			3450,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Request-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* ProSe-Role-Of-UE, Enumerated, code 3451                          */
+	{
+		struct dict_avp_data data = {
+			3451,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Role-Of-UE",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Role-Of-UE)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* ProSe-Source-IP-Address, Address, code 3452                      */
+	{
+		struct dict_avp_data data = {
+			3452,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Source-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* ProSe-Target-Layer-2-ID, OctetString, code 4410                  */
+	{
+		struct dict_avp_data data = {
+			4410,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-Target-Layer-2-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-UE-ID, OctetString, code 3453                              */
+	{
+		struct dict_avp_data data = {
+			3453,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-UE-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* ProSe-UE-to-Network-Relay-UE-ID, OctetString, code 4409          */
+	{
+		struct dict_avp_data data = {
+			4409,	/* Code */
+			10415,	/* Vendor */
+			"ProSe-UE-to-Network-Relay-UE-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Proximity-Alert-Indication, Enumerated, code 3454                */
+	{
+		struct dict_avp_data data = {
+			3454,	/* Code */
+			10415,	/* Vendor */
+			"Proximity-Alert-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Proximity-Alert-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Proximity-Alert-Timestamp, Time, code 3455                       */
+	{
+		struct dict_avp_data data = {
+			3455,	/* Code */
+			10415,	/* Vendor */
+			"Proximity-Alert-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Proximity-Cancellation-Timestamp, Time, code 3456                */
+	{
+		struct dict_avp_data data = {
+			3456,	/* Code */
+			10415,	/* Vendor */
+			"Proximity-Cancellation-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* PS-Append-Free-Format-Data, Enumerated, code 867                 */
+	{
+		struct dict_avp_data data = {
+			867,	/* Code */
+			10415,	/* Vendor */
+			"PS-Append-Free-Format-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-Append-Free-Format-Data)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* PS-Free-Format-Data, OctetString, code 866                       */
+	{
+		struct dict_avp_data data = {
+			866,	/* Code */
+			10415,	/* Vendor */
+			"PS-Free-Format-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PS-Furnish-Charging-Information, Grouped, code 865               */
+	{
+		struct dict_avp_data data = {
+			865,	/* Code */
+			10415,	/* Vendor */
+			"PS-Furnish-Charging-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* PS-Information, Grouped, code 874                                */
+	{
+		struct dict_avp_data data = {
+			874,	/* Code */
+			10415,	/* Vendor */
+			"PS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Quota-Consumption-Time, Unsigned32, code 881                     */
+	{
+		struct dict_avp_data data = {
+			881,	/* Code */
+			10415,	/* Vendor */
+			"Quota-Consumption-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Quota-Holding-Time, Unsigned32, code 871                         */
+	{
+		struct dict_avp_data data = {
+			871,	/* Code */
+			10415,	/* Vendor */
+			"Quota-Holding-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Quota-Indicator, Enumerated, code 3912                           */
+	{
+		struct dict_avp_data data = {
+			3912,	/* Code */
+			10415,	/* Vendor */
+			"Quota-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Quota-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3508)   */
+	/* 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).   */
+	/* 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462). */
+	/* Radio-Frequency, OctetString, code 3462                          */
+	{
+		struct dict_avp_data data = {
+			3462,	/* Code */
+			10415,	/* Vendor */
+			"Radio-Frequency",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Radio-Parameter-Set-Info, Grouped, code 3463                     */
+	{
+		struct dict_avp_data data = {
+			3463,	/* Code */
+			10415,	/* Vendor */
+			"Radio-Parameter-Set-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Radio-Parameter-Set-Values, OctetString, code 3464               */
+	{
+		struct dict_avp_data data = {
+			3464,	/* Code */
+			10415,	/* Vendor */
+			"Radio-Parameter-Set-Values",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Radio-Resources-Indicator, Integer32, code 3465                  */
+	{
+		struct dict_avp_data data = {
+			3465,	/* Code */
+			10415,	/* Vendor */
+			"Radio-Resources-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAN-End-Time, Time, code 1301                                    */
+	{
+		struct dict_avp_data data = {
+			1301,	/* Code */
+			10415,	/* Vendor */
+			"RAN-End-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* RAN-Secondary-RAT-Usage-Report, Grouped, code 1302               */
+	{
+		struct dict_avp_data data = {
+			1302,	/* Code */
+			10415,	/* Vendor */
+			"RAN-Secondary-RAT-Usage-Report",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* RAN-Start-Time, Time, code 1303                                  */
+	{
+		struct dict_avp_data data = {
+			1303,	/* Code */
+			10415,	/* Vendor */
+			"RAN-Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Rate-Control-Max-Message-Size, Unsigned32, code 3937             */
+	{
+		struct dict_avp_data data = {
+			3937,	/* Code */
+			10415,	/* Vendor */
+			"Rate-Control-Max-Message-Size",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Rate-Control-Max-Rate, Unsigned32, code 3938                     */
+	{
+		struct dict_avp_data data = {
+			3938,	/* Code */
+			10415,	/* Vendor */
+			"Rate-Control-Max-Rate",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Rate-Control-Time-Unit, Unsigned32, code 3939                    */
+	{
+		struct dict_avp_data data = {
+			3939,	/* Code */
+			10415,	/* Vendor */
+			"Rate-Control-Time-Unit",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Rate-Element, Grouped, code 2058                                 */
+	{
+		struct dict_avp_data data = {
+			2058,	/* Code */
+			10415,	/* Vendor */
+			"Rate-Element",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Read-Reply-Report-Requested, Enumerated, code 1222               */
+	{
+		struct dict_avp_data data = {
+			1222,	/* Code */
+			10415,	/* Vendor */
+			"Read-Reply-Report-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply-Report-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Real-Time-Tariff-Information, Grouped, code 2305                 */
+	{
+		struct dict_avp_data data = {
+			2305,	/* Code */
+			10415,	/* Vendor */
+			"Real-Time-Tariff-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reason-Header, UTF8String, code 3401                             */
+	{
+		struct dict_avp_data data = {
+			3401,	/* Code */
+			10415,	/* Vendor */
+			"Reason-Header",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Received-Talk-Burst-Time, Unsigned32, code 1284                  */
+	{
+		struct dict_avp_data data = {
+			1284,	/* Code */
+			10415,	/* Vendor */
+			"Received-Talk-Burst-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Received-Talk-Burst-Volume, Unsigned32, code 1285                */
+	{
+		struct dict_avp_data data = {
+			1285,	/* Code */
+			10415,	/* Vendor */
+			"Received-Talk-Burst-Volume",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201); */
+	/* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108). */
+	/* 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201). */
+	/* Recipient-Address, Grouped, code 1201                            */
+	{
+		struct dict_avp_data data = {
+			1201,	/* Code */
+			10415,	/* Vendor */
+			"Recipient-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Recipient-Info, Grouped, code 2026                               */
+	{
+		struct dict_avp_data data = {
+			2026,	/* Code */
+			10415,	/* Vendor */
+			"Recipient-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Recipient-Received-Address, Grouped, code 2028                   */
+	{
+		struct dict_avp_data data = {
+			2028,	/* Code */
+			10415,	/* Vendor */
+			"Recipient-Received-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Recipient-SCCP-Address, Address, code 2010                       */
+	{
+		struct dict_avp_data data = {
+			2010,	/* Code */
+			10415,	/* Vendor */
+			"Recipient-SCCP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Refund-Information, OctetString, code 2022                       */
+	{
+		struct dict_avp_data data = {
+			2022,	/* Code */
+			10415,	/* Vendor */
+			"Refund-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Related-Change-Condition-Information, Grouped, code 3925         */
+	{
+		struct dict_avp_data data = {
+			3925,	/* Code */
+			10415,	/* Vendor */
+			"Related-Change-Condition-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Related-Trigger, Grouped, code 3926                              */
+	{
+		struct dict_avp_data data = {
+			3926,	/* Code */
+			10415,	/* Vendor */
+			"Related-Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Related-IMS-Charging-Identifier, UTF8String, code 2711           */
+	{
+		struct dict_avp_data data = {
+			2711,	/* Code */
+			10415,	/* Vendor */
+			"Related-IMS-Charging-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Related-IMS-Charging-Identifier-Node, Address, code 2712         */
+	{
+		struct dict_avp_data data = {
+			2712,	/* Code */
+			10415,	/* Vendor */
+			"Related-IMS-Charging-Identifier-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Relationship-Mode, Enumerated, code 2706                         */
+	{
+		struct dict_avp_data data = {
+			2706,	/* Code */
+			10415,	/* Vendor */
+			"Relationship-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relationship-Mode)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Relay-IP-address, Address, code 4411                             */
+	{
+		struct dict_avp_data data = {
+			4411,	/* Code */
+			10415,	/* Vendor */
+			"Relay-IP-address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Remaining-Balance, Grouped, code 2021                            */
+	{
+		struct dict_avp_data data = {
+			2021,	/* Code */
+			10415,	/* Vendor */
+			"Remaining-Balance",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Reply-Applic-ID, UTF8String, code 1223                           */
+	{
+		struct dict_avp_data data = {
+			1223,	/* Code */
+			10415,	/* Vendor */
+			"Reply-Applic-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Reply-Path-Requested, Enumerated, code 2011                      */
+	{
+		struct dict_avp_data data = {
+			2011,	/* Code */
+			10415,	/* Vendor */
+			"Reply-Path-Requested",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reply-Path-Requested)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Reporting-Reason, Enumerated, code 872                           */
+	{
+		struct dict_avp_data data = {
+			872,	/* Code */
+			10415,	/* Vendor */
+			"Reporting-Reason",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Reason)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Requested-Party-Address, UTF8String, code 1251                   */
+	{
+		struct dict_avp_data data = {
+			1251,	/* Code */
+			10415,	/* Vendor */
+			"Requested-Party-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Requested-PLMN-Identifier, UTF8String, code 3436                 */
+	{
+		struct dict_avp_data data = {
+			3436,	/* Code */
+			10415,	/* Vendor */
+			"Requested-PLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Requestor-PLMN-Identifier, UTF8String, code 3437                 */
+	{
+		struct dict_avp_data data = {
+			3437,	/* Code */
+			10415,	/* Vendor */
+			"Requestor-PLMN-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Role-Of-Node, Enumerated, code 829                               */
+	{
+		struct dict_avp_data data = {
+			829,	/* Code */
+			10415,	/* Vendor */
+			"Role-Of-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-Node)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Role-Of-ProSe-Function, Enumerated, code 3438                    */
+	{
+		struct dict_avp_data data = {
+			3438,	/* Code */
+			10415,	/* Vendor */
+			"Role-Of-ProSe-Function",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-ProSe-Function)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Route-Header-Received, UTF8String, code 3403                     */
+	{
+		struct dict_avp_data data = {
+			3403,	/* Code */
+			10415,	/* Vendor */
+			"Route-Header-Received",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Route-Header-Transmitted, UTF8String, code 3404                  */
+	{
+		struct dict_avp_data data = {
+			3404,	/* Code */
+			10415,	/* Vendor */
+			"Route-Header-Transmitted",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Scale-Factor, Grouped, code 2059                                 */
+	{
+		struct dict_avp_data data = {
+			2059,	/* Code */
+			10415,	/* Vendor */
+			"Scale-Factor",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCEF-Address, Address, code 1317                                 */
+	{
+		struct dict_avp_data data = {
+			1317,	/* Code */
+			10415,	/* Vendor */
+			"SCEF-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* SCS-Address, Address, code 3941                                  */
+	{
+		struct dict_avp_data data = {
+			3941,	/* Code */
+			10415,	/* Vendor */
+			"SCS-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* SCS-AS-Address, Grouped, code 3940                               */
+	{
+		struct dict_avp_data data = {
+			3940,	/* Code */
+			10415,	/* Vendor */
+			"SCS-AS-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SCS-Realm, DiameterIdentity, code 3942                           */
+	{
+		struct dict_avp_data data = {
+			3942,	/* Code */
+			10415,	/* Vendor */
+			"SCS-Realm",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* SDP-Answer-Timestamp, Time, code 1275                            */
+	{
+		struct dict_avp_data data = {
+			1275,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Answer-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SDP-Media-Component, Grouped, code 843                           */
+	{
+		struct dict_avp_data data = {
+			843,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Media-Component",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SDP-Media-Description, UTF8String, code 845                      */
+	{
+		struct dict_avp_data data = {
+			845,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Media-Description",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SDP-Media-Name, UTF8String, code 844                             */
+	{
+		struct dict_avp_data data = {
+			844,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Media-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SDP-Offer-Timestamp, Time, code 1274                             */
+	{
+		struct dict_avp_data data = {
+			1274,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Offer-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SDP-Session-Description, UTF8String, code 842                    */
+	{
+		struct dict_avp_data data = {
+			842,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Session-Description",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SDP-TimeStamps, Grouped, code 1273                               */
+	{
+		struct dict_avp_data data = {
+			1273,	/* Code */
+			10415,	/* Vendor */
+			"SDP-TimeStamps",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SDP-Type, Enumerated, code 2036                                  */
+	{
+		struct dict_avp_data data = {
+			2036,	/* Code */
+			10415,	/* Vendor */
+			"SDP-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SDP-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Secondary-RAT-Type, OctetString, code 1304                       */
+	{
+		struct dict_avp_data data = {
+			1304,	/* Code */
+			10415,	/* Vendor */
+			"Secondary-RAT-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Serving-Node-Identity, DiameterIdentity, code 3929               */
+	{
+		struct dict_avp_data data = {
+			3929,	/* Code */
+			10415,	/* Vendor */
+			"Serving-Node-Identity",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
+	};
+
+	/* Served-Party-IP-Address, Address, code 848                       */
+	{
+		struct dict_avp_data data = {
+			848,	/* Code */
+			10415,	/* Vendor */
+			"Served-Party-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Service-Data-Container, Grouped, code 2040                       */
+	{
+		struct dict_avp_data data = {
+			2040,	/* Code */
+			10415,	/* Vendor */
+			"Service-Data-Container",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Id, UTF8String, code 855                                 */
+	{
+		struct dict_avp_data data = {
+			855,	/* Code */
+			10415,	/* Vendor */
+			"Service-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Service-Information, Grouped, code 873                           */
+	{
+		struct dict_avp_data data = {
+			873,	/* Code */
+			10415,	/* Vendor */
+			"Service-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Mode, Unsigned32, code 2032                              */
+	{
+		struct dict_avp_data data = {
+			2032,	/* Code */
+			10415,	/* Vendor */
+			"Service-Mode",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Specific-Data, UTF8String, code 863                      */
+	{
+		struct dict_avp_data data = {
+			863,	/* Code */
+			10415,	/* Vendor */
+			"Service-Specific-Data",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Service-Specific-Info, Grouped, code 1249                        */
+	{
+		struct dict_avp_data data = {
+			1249,	/* Code */
+			10415,	/* Vendor */
+			"Service-Specific-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Specific-Type, Unsigned32, code 1257                     */
+	{
+		struct dict_avp_data data = {
+			1257,	/* Code */
+			10415,	/* Vendor */
+			"Service-Specific-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Serving-Node-Type, Enumerated, code 2047                         */
+	{
+		struct dict_avp_data data = {
+			2047,	/* Code */
+			10415,	/* Vendor */
+			"Serving-Node-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Session-Direction, Enumerated, code 2707                         */
+	{
+		struct dict_avp_data data = {
+			2707,	/* Code */
+			10415,	/* Vendor */
+			"Session-Direction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Direction)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SGi-PtP-Tunnelling-Method, Enumerated, code 3931                 */
+	{
+		struct dict_avp_data data = {
+			3931,	/* Code */
+			10415,	/* Vendor */
+			"SGi-PtP-Tunnelling-Method",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGi-PtP-Tunnelling-Method)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SGSN-Address, Address, code 1228                                 */
+	{
+		struct dict_avp_data data = {
+			1228,	/* Code */
+			10415,	/* Vendor */
+			"SGSN-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* SGW-Address, Address, code 2067                                  */
+	{
+		struct dict_avp_data data = {
+			2067,	/* Code */
+			10415,	/* Vendor */
+			"SGW-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* SGW-Change, Enumerated, code 2065                                */
+	{
+		struct dict_avp_data data = {
+			2065,	/* Code */
+			10415,	/* Vendor */
+			"SGW-Change",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGW-Change)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SIP-Method, UTF8String, code 824                                 */
+	{
+		struct dict_avp_data data = {
+			824,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Method",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SIP-Request-Timestamp, Time, code 834                            */
+	{
+		struct dict_avp_data data = {
+			834,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Request-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SIP-Request-Timestamp-Fraction, Unsigned32, code 2301            */
+	{
+		struct dict_avp_data data = {
+			2301,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Request-Timestamp-Fraction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SIP-Response-Timestamp, Time, code 835                           */
+	{
+		struct dict_avp_data data = {
+			835,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Response-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SIP-Response-Timestamp-Fraction, Unsigned32, code 2302           */
+	{
+		struct dict_avp_data data = {
+			2302,	/* Code */
+			10415,	/* Vendor */
+			"SIP-Response-Timestamp-Fraction",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Device-Trigger-Indicator, Enumerated, code 3407               */
+	{
+		struct dict_avp_data data = {
+			3407,	/* Code */
+			10415,	/* Vendor */
+			"SM-Device-Trigger-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Device-Trigger-Indicator)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SM-Device-Trigger-Information, Grouped, code 3405                */
+	{
+		struct dict_avp_data data = {
+			3405,	/* Code */
+			10415,	/* Vendor */
+			"SM-Device-Trigger-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Discharge-Time, Time, code 2012                               */
+	{
+		struct dict_avp_data data = {
+			2012,	/* Code */
+			10415,	/* Vendor */
+			"SM-Discharge-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SM-Message-Type, Enumerated, code 2007                           */
+	{
+		struct dict_avp_data data = {
+			2007,	/* Code */
+			10415,	/* Vendor */
+			"SM-Message-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Message-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SM-Protocol-ID, OctetString, code 2013                           */
+	{
+		struct dict_avp_data data = {
+			2013,	/* Code */
+			10415,	/* Vendor */
+			"SM-Protocol-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Sequence-Number, Unsigned32, code 3408                        */
+	{
+		struct dict_avp_data data = {
+			3408,	/* Code */
+			10415,	/* Vendor */
+			"SM-Sequence-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-Service-Type, Enumerated, code 2029                           */
+	{
+		struct dict_avp_data data = {
+			2029,	/* Code */
+			10415,	/* Vendor */
+			"SM-Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Service-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SM-Status, OctetString, code 2014                                */
+	{
+		struct dict_avp_data data = {
+			2014,	/* Code */
+			10415,	/* Vendor */
+			"SM-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SM-User-Data-Header, OctetString, code 2015                      */
+	{
+		struct dict_avp_data data = {
+			2015,	/* Code */
+			10415,	/* Vendor */
+			"SM-User-Data-Header",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SMS-Information, Grouped, code 2000                              */
+	{
+		struct dict_avp_data data = {
+			2000,	/* Code */
+			10415,	/* Vendor */
+			"SMS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SMS-Node, Enumerated, code 2016                                  */
+	{
+		struct dict_avp_data data = {
+			2016,	/* Code */
+			10415,	/* Vendor */
+			"SMS-Node",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Node)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SMS-Result, Unsigned32, code 3409                                */
+	{
+		struct dict_avp_data data = {
+			3409,	/* Code */
+			10415,	/* Vendor */
+			"SMS-Result",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SMSC-Address, Address, code 2017                                 */
+	{
+		struct dict_avp_data data = {
+			2017,	/* Code */
+			10415,	/* Vendor */
+			"SMSC-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Start-of-Charging, Time, code 3419                               */
+	{
+		struct dict_avp_data data = {
+			3419,	/* Code */
+			10415,	/* Vendor */
+			"Start-of-Charging",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Start-Time, Time, code 2041                                      */
+	{
+		struct dict_avp_data data = {
+			2041,	/* Code */
+			10415,	/* Vendor */
+			"Start-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Note: 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed          */
+	/* Status (2702) to Status-Code (2702).                             */
+	/* 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed                */
+	/* Status-Code (2702) to Status-AS-Code (2702).                     */
+	/*                                                                  */
+	/* Change-1.4.0: Status (2702) renamed to Status-AS-Code (2702).    */
+	/* Status-AS-Code, Enumerated, code 2702                            */
+	{
+		struct dict_avp_data data = {
+			2702,	/* Code */
+			10415,	/* Vendor */
+			"Status-AS-Code",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Status-AS-Code)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Stop-Time, Time, code 2042                                       */
+	{
+		struct dict_avp_data data = {
+			2042,	/* Code */
+			10415,	/* Vendor */
+			"Stop-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Submission-Time, Time, code 1202                                 */
+	{
+		struct dict_avp_data data = {
+			1202,	/* Code */
+			10415,	/* Vendor */
+			"Submission-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Subscriber-Role, Enumerated, code 2033                           */
+	{
+		struct dict_avp_data data = {
+			2033,	/* Code */
+			10415,	/* Vendor */
+			"Subscriber-Role",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Role)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Supplementary-Service, Grouped, code 2048                        */
+	{
+		struct dict_avp_data data = {
+			2048,	/* Code */
+			10415,	/* Vendor */
+			"Supplementary-Service",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TAD-Identifier, Enumerated, code 2717                            */
+	{
+		struct dict_avp_data data = {
+			2717,	/* Code */
+			10415,	/* Vendor */
+			"TAD-Identifier",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/TAD-Identifier)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Talk-Burst-Exchange, Grouped, code 1255                          */
+	{
+		struct dict_avp_data data = {
+			1255,	/* Code */
+			10415,	/* Vendor */
+			"Talk-Burst-Exchange",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Talk-Burst-Time, Unsigned32, code 1286                           */
+	{
+		struct dict_avp_data data = {
+			1286,	/* Code */
+			10415,	/* Vendor */
+			"Talk-Burst-Time",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Talk-Burst-Volume, Unsigned32, code 1287                         */
+	{
+		struct dict_avp_data data = {
+			1287,	/* Code */
+			10415,	/* Vendor */
+			"Talk-Burst-Volume",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Target-IP-Address, Address, code 4412                            */
+	{
+		struct dict_avp_data data = {
+			4412,	/* Code */
+			10415,	/* Vendor */
+			"Target-IP-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* Tariff-Information, Grouped, code 2060                           */
+	{
+		struct dict_avp_data data = {
+			2060,	/* Code */
+			10415,	/* Vendor */
+			"Tariff-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Tariff-XML, UTF8String, code 2306                                */
+	{
+		struct dict_avp_data data = {
+			2306,	/* Code */
+			10415,	/* Vendor */
+			"Tariff-XML",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Teleservice, OctetString, code 3413                              */
+	{
+		struct dict_avp_data data = {
+			3413,	/* Code */
+			10415,	/* Vendor */
+			"Teleservice",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Terminating-IOI, UTF8String, code 840                            */
+	{
+		struct dict_avp_data data = {
+			840,	/* Code */
+			10415,	/* Vendor */
+			"Terminating-IOI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Time-First-Reception, Time, code 3466                            */
+	{
+		struct dict_avp_data data = {
+			3466,	/* Code */
+			10415,	/* Vendor */
+			"Time-First-Reception",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Time-First-Transmission, Time, code 3467                         */
+	{
+		struct dict_avp_data data = {
+			3467,	/* Code */
+			10415,	/* Vendor */
+			"Time-First-Transmission",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Time-First-Usage, Time, code 2043                                */
+	{
+		struct dict_avp_data data = {
+			2043,	/* Code */
+			10415,	/* Vendor */
+			"Time-First-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Time-Indicator, Unsigned32, code 3911                            */
+	{
+		struct dict_avp_data data = {
+			3911,	/* Code */
+			10415,	/* Vendor */
+			"Time-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Time-Last-Usage, Time, code 2044                                 */
+	{
+		struct dict_avp_data data = {
+			2044,	/* Code */
+			10415,	/* Vendor */
+			"Time-Last-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* Time-Quota-Mechanism, Grouped, code 1270                         */
+	{
+		struct dict_avp_data data = {
+			1270,	/* Code */
+			10415,	/* Vendor */
+			"Time-Quota-Mechanism",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Time-Quota-Threshold, Unsigned32, code 868                       */
+	{
+		struct dict_avp_data data = {
+			868,	/* Code */
+			10415,	/* Vendor */
+			"Time-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Time-Quota-Type, Enumerated, code 1271                           */
+	{
+		struct dict_avp_data data = {
+			1271,	/* Code */
+			10415,	/* Vendor */
+			"Time-Quota-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Time-Quota-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Time-Stamps, Grouped, code 833                                   */
+	{
+		struct dict_avp_data data = {
+			833,	/* Code */
+			10415,	/* Vendor */
+			"Time-Stamps",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Time-Usage, Unsigned32, code 2045                                */
+	{
+		struct dict_avp_data data = {
+			2045,	/* Code */
+			10415,	/* Vendor */
+			"Time-Usage",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TLTRI, Unsigned32, code 1318                                     */
+	{
+		struct dict_avp_data data = {
+			1318,	/* Code */
+			10415,	/* Vendor */
+			"TLTRI",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Token-Text, UTF8String, code 1215                                */
+	{
+		struct dict_avp_data data = {
+			1215,	/* Code */
+			10415,	/* Vendor */
+			"Token-Text",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Traffic-Data-Volumes, Grouped, code 2046                         */
+	{
+		struct dict_avp_data data = {
+			2046,	/* Code */
+			10415,	/* Vendor */
+			"Traffic-Data-Volumes",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Transcoder-Inserted-Indication, Enumerated, code 2605            */
+	{
+		struct dict_avp_data data = {
+			2605,	/* Code */
+			10415,	/* Vendor */
+			"Transcoder-Inserted-Indication",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transcoder-Inserted-Indication)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Transit-IOI-List, UTF8String, code 2701                          */
+	{
+		struct dict_avp_data data = {
+			2701,	/* Code */
+			10415,	/* Vendor */
+			"Transit-IOI-List",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Transmitter-Info, Grouped, code 3468                             */
+	{
+		struct dict_avp_data data = {
+			3468,	/* Code */
+			10415,	/* Vendor */
+			"Transmitter-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trigger, Grouped, code 1264                                      */
+	{
+		struct dict_avp_data data = {
+			1264,	/* Code */
+			10415,	/* Vendor */
+			"Trigger",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Trigger-Type, Enumerated, code 870                               */
+	{
+		struct dict_avp_data data = {
+			870,	/* Code */
+			10415,	/* Vendor */
+			"Trigger-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Trunk-Group-Id, Grouped, code 851                                */
+	{
+		struct dict_avp_data data = {
+			851,	/* Code */
+			10415,	/* Vendor */
+			"Trunk-Group-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* TWAG-Address, Address, code 3903                                 */
+	{
+		struct dict_avp_data data = {
+			3903,	/* Code */
+			10415,	/* Vendor */
+			"TWAG-Address",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
+	};
+
+	/* TWAN-User-Location-Info, Grouped, code 2714                      */
+	{
+		struct dict_avp_data data = {
+			2714,	/* Code */
+			10415,	/* Vendor */
+			"TWAN-User-Location-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Type-Number, Enumerated, code 1204                               */
+	{
+		struct dict_avp_data data = {
+			1204,	/* Code */
+			10415,	/* Vendor */
+			"Type-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Type-Number)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* UNI-PDU-CP-Only-Flag, Enumerated, code 3932                      */
+	{
+		struct dict_avp_data data = {
+			3932,	/* Code */
+			10415,	/* Vendor */
+			"UNI-PDU-CP-Only-Flag",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UNI-PDU-CP-Only-Flag)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Unit-Cost, Grouped, code 2061                                    */
+	{
+		struct dict_avp_data data = {
+			2061,	/* Code */
+			10415,	/* Vendor */
+			"Unit-Cost",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Unit-Quota-Threshold, Unsigned32, code 1226                      */
+	{
+		struct dict_avp_data data = {
+			1226,	/* Code */
+			10415,	/* Vendor */
+			"Unit-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Unused-Quota-Timer, Unsigned32, code 4407                        */
+	{
+		struct dict_avp_data data = {
+			4407,	/* Code */
+			10415,	/* Vendor */
+			"Unused-Quota-Timer",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Usage-Information-Report-Sequence-Number, Integer32, code 3439   */
+	{
+		struct dict_avp_data data = {
+			3439,	/* Code */
+			10415,	/* Vendor */
+			"Usage-Information-Report-Sequence-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* User-CSG-Information, Grouped, code 2319                         */
+	{
+		struct dict_avp_data data = {
+			2319,	/* Code */
+			10415,	/* Vendor */
+			"User-CSG-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* User-Participating-Type, Enumerated, code 1279                   */
+	{
+		struct dict_avp_data data = {
+			1279,	/* Code */
+			10415,	/* Vendor */
+			"User-Participating-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Participating-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* User-Session-Id, UTF8String, code 830                            */
+	{
+		struct dict_avp_data data = {
+			830,	/* Code */
+			10415,	/* Vendor */
+			"User-Session-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* UWAN-User-Location-Info, Grouped, code 3918                      */
+	{
+		struct dict_avp_data data = {
+			3918,	/* Code */
+			10415,	/* Vendor */
+			"UWAN-User-Location-Info",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Variable-Part, Grouped, code 3907                                */
+	{
+		struct dict_avp_data data = {
+			3907,	/* Code */
+			10415,	/* Vendor */
+			"Variable-Part",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Variable-Part-Order, Unsigned32, code 3908                       */
+	{
+		struct dict_avp_data data = {
+			3908,	/* Code */
+			10415,	/* Vendor */
+			"Variable-Part-Order",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Variable-Part-Type, Unsigned32, code 3909                        */
+	{
+		struct dict_avp_data data = {
+			3909,	/* Code */
+			10415,	/* Vendor */
+			"Variable-Part-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Variable-Part-Value, UTF8String, code 3910                       */
+	{
+		struct dict_avp_data data = {
+			3910,	/* Code */
+			10415,	/* Vendor */
+			"Variable-Part-Value",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* VCS-Information, Grouped, code 3410                              */
+	{
+		struct dict_avp_data data = {
+			3410,	/* Code */
+			10415,	/* Vendor */
+			"VCS-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* VLR-Number, OctetString, code 3420                               */
+	{
+		struct dict_avp_data data = {
+			3420,	/* Code */
+			10415,	/* Vendor */
+			"VLR-Number",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Volume-Quota-Threshold, Unsigned32, code 869                     */
+	{
+		struct dict_avp_data data = {
+			869,	/* Code */
+			10415,	/* Vendor */
+			"Volume-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Change-1.4.0: WAG-Address (890) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: WAG-PLMN-Id (891) OctetString removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: WLAN-Information (875) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* WLAN-Operator-Id, Grouped, code 1306                             */
+	{
+		struct dict_avp_data data = {
+			1306,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Operator-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* WLAN-Operator-Name, UTF8String, code 1307                        */
+	{
+		struct dict_avp_data data = {
+			1307,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-Operator-Name",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* WLAN-PLMN-Id, UTF8String, code 1308                              */
+	{
+		struct dict_avp_data data = {
+			1308,	/* Code */
+			10415,	/* Vendor */
+			"WLAN-PLMN-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Change-1.4.0: WLAN-Radio-Container (892) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: WLAN-Session-Id (1246) UTF8String removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: WLAN-Technology (893) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/* Change-1.4.0: WLAN-UE-Local-IPAddress (894) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */
+
+	/*==================================================================*/
+	/* OMA DDS Charging_Data V1.0 20110201-A                            */
+	/* Charging Data                                                    */
+	/*                                                                  */
+	/* From OMA OMA-DDS-Charging_Data-V1_0-20110201-A.pdf               */
+	/*==================================================================*/
+
+	/* Application-Server-Id, UTF8String, code 2101, section 8.4        */
+	{
+		struct dict_avp_data data = {
+			2101,	/* Code */
+			10415,	/* Vendor */
+			"Application-Server-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Change-1.4.0: Application-Service-Type (2102) type changed from UTF8String to Enumerated. */
+	/* Application-Service-Type, Enumerated, code 2102, section 8.4     */
+	{
+		struct dict_avp_data data = {
+			2102,	/* Code */
+			10415,	/* Vendor */
+			"Application-Service-Type",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Application-Service-Type)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* Change-1.4.0: Application–Session–Id (2103) type changed from UTF8String to Unsigned32. */
+	/* Application-Session-Id, Unsigned32, code 2103, section 8.4       */
+	{
+		struct dict_avp_data data = {
+			2103,	/* Code */
+			10415,	/* Vendor */
+			"Application-Session-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Content-ID, UTF8String, code 2116, section 8.4                   */
+	{
+		struct dict_avp_data data = {
+			2116,	/* Code */
+			10415,	/* Vendor */
+			"Content-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* Content-provider-ID, UTF8String, code 2117, section 8.4          */
+	{
+		struct dict_avp_data data = {
+			2117,	/* Code */
+			10415,	/* Vendor */
+			"Content-provider-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* DCD-Information, Grouped, code 2115, section 8.5.5               */
+	{
+		struct dict_avp_data data = {
+			2115,	/* Code */
+			10415,	/* Vendor */
+			"DCD-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Delivery-Status, UTF8String, code 2104, section 8.4              */
+	{
+		struct dict_avp_data data = {
+			2104,	/* Code */
+			10415,	/* Vendor */
+			"Delivery-Status",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* IM-Information, Grouped, code 2110, section 8.5.6                */
+	{
+		struct dict_avp_data data = {
+			2110,	/* Code */
+			10415,	/* Vendor */
+			"IM-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Messages-Successfully-Exploded, Unsigned32, code 2111, section 8.4 */
+	{
+		struct dict_avp_data data = {
+			2111,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Messages-Successfully-Exploded",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Number-Of-Messages-Successfully-Sent, Unsigned32, code 2112, section 8.4 */
+	{
+		struct dict_avp_data data = {
+			2112,	/* Code */
+			10415,	/* Vendor */
+			"Number-Of-Messages-Successfully-Sent",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Service-Generic-Information, Grouped, code 1256, section 8.5.10  */
+	{
+		struct dict_avp_data data = {
+			1256,	/* Code */
+			10415,	/* Vendor */
+			"Service-Generic-Information",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Total-Number-Of-Messages-Exploded, Unsigned32, code 2113, section 8.4 */
+	{
+		struct dict_avp_data data = {
+			2113,	/* Code */
+			10415,	/* Vendor */
+			"Total-Number-Of-Messages-Exploded",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* Total-Number-Of-Messages-Sent, Unsigned32, code 2114, section 8.4 */
+	{
+		struct dict_avp_data data = {
+			2114,	/* Code */
+			10415,	/* Vendor */
+			"Total-Number-Of-Messages-Sent",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/*==================================================================*/
+	/* 3GPP2 X.S0057-0 v2.0                                             */
+	/* E-UTRAN - eHRPD Connectivity and Interworking:                   */
+	/* Core Network Aspects                                             */
+	/*                                                                  */
+	/* From 3GPP2 X.S0057-0_v2.0_091215.pdf                             */
+	/*==================================================================*/
+
+	/*                                                                  */
+	/* Change-1.4.0: 3GPP2-BSID (9010) type changed from OctetString to UTF8String. */
+	/* Change-1.4.0: 3GPP2-BSID (9010) flag M MUST.                     */
+	/* 3GPP2-BSID, UTF8String, code 9010, section 5.6.2.1.1             */
+	{
+		struct dict_avp_data data = {
+			9010,	/* Code */
+			5535,	/* Vendor */
+			"3GPP2-BSID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	return 0;
+} /* add_avps() */
--- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c	Tue Jul 07 01:41:54 2020 +0800
@@ -72,10 +72,9 @@
  * 1. It would be good if 29.061 was reviewed to check for each AVP if
  * it is Mandatory or not. The data currently in the document does not
  * match what was in the previous version of the freeDiameter
- * extension (the one that existedbefore I rewrote it) or what I saw
+ * extension (the one that existed before I rewrote it) or what I saw
  * so far. IIRC, even the table and the document contradict each
- * other. The AVP table is also missing an entry for
- * "External-Identifier", 28.
+ * other.
  *
  * 2. 29.140 has conflicting AVP names with other documents:
  *   - Sequence-Number is also in 32.329
@@ -98,7 +97,8 @@
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
 
 struct local_rules_definition {
-	struct dict_avp_request avp_vendor_plus_name;
+	vendor_id_t		vendor;
+	char *			name;
 	enum rule_position	position;
 	int 			min;
 	int			max;
@@ -110,6 +110,10 @@
 #define PARSE_loc_rules( _rulearray, _parent) {								\
 	int __ar;											\
 	for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) {			\
+		struct dict_avp_request __avp = {							\
+			.avp_vendor = (_rulearray)[__ar].vendor,					\
+			.avp_name = (_rulearray)[__ar].name,						\
+		};											\
 		struct dict_rule_data __data = { NULL, 							\
 			(_rulearray)[__ar].position,							\
 			0, 										\
@@ -120,16 +124,15 @@
 			fd_g_config->cnf_dict,								\
 			DICT_AVP, 									\
 			AVP_BY_NAME_AND_VENDOR, 							\
-			&(_rulearray)[__ar].avp_vendor_plus_name,					\
+			&__avp,										\
 			&__data.rule_avp, 0 ) );							\
 		if ( !__data.rule_avp ) {								\
-			TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_vendor_plus_name.avp_name);		\
+			LOG_E( "AVP Not found: '%s'", __avp.avp_name);					\
 			return ENOENT;									\
 		}											\
 		CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL),	\
 			{							        		\
-				TRACE_DEBUG(INFO, "Error on rule with AVP '%s'",      			\
-					    (_rulearray)[__ar].avp_vendor_plus_name.avp_name);		\
+				LOG_E( "Error on rule with AVP '%s'", __avp.avp_name);			\
 				return EINVAL;					      			\
 			} );							      			\
 	}									      			\
@@ -144,7 +147,10 @@
 
 static int dict_dcca_3gpp_entry(char * conffile)
 {
-	/* Applications section */
+	/*==================================================================*/
+	/* Applications section                                             */
+	/*==================================================================*/
+
 	{		
                 /* Create the vendors */
                 {
@@ -158,10115 +164,198 @@
 
 	}
 	
-
-	struct dict_object * Address_type;
-	struct dict_object * DiameterIdentity_type;
-	struct dict_object * DiameterURI_type;
-	struct dict_object * IPFilterRule_type;
-	struct dict_object * Time_type;
-	struct dict_object * UTF8String_type;
-
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
-	
-
-	/* The following is created automatically. Do not modify. */
-	/* Changes will be lost during the next update. Modify the source org file instead. */
-
-	/* 3GPP 29.061-c00 (12.0.0 2012.12.20)                          */
-	/* 3GPP 29.061 is not very clear and self-inconsistent about M  */
-	/* for this reason, other sources are assumed more trustworthy  */
-	/* M inconsistently specified                                   */
-	/* 3GPP-IMSI */
-	{
-		struct dict_avp_data data = {
-			1,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-IMSI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 29.061 says OctetString; dumps say UInt32; manually changed  */
-	/* 29.061 says MUST NOT M; dumps say MUST                       */
-	/* 3GPP-Charging-Id */
-	{
-		struct dict_avp_data data = {
-			2,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Charging-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; dumps say MUST                       */
-	/* 3GPP-PDP-Type */
-	{
-		struct dict_avp_data data = {
-			3,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-PDP-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PDP-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* 3GPP-CG-Address */
-	{
-		struct dict_avp_data data = {
-			4,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-CG-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-GPRS-Negotiated-QoS-Profile */
-	{
-		struct dict_avp_data data = {
-			5,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-GPRS-Negotiated-QoS-Profile",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* M inconsistently specified; old contrib/3gg says MUST NOT    */
-	/* 3GPP-SGSN-Address */
-	{
-		struct dict_avp_data data = {
-			6,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-SGSN-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP-GGSN-Address */
-	{
-		struct dict_avp_data data = {
-			7,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-GGSN-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; dumps say MUST                       */
-	/* 3GPP-IMSI-MCC-MNC */
-	{
-		struct dict_avp_data data = {
-			8,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-IMSI-MCC-MNC",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-GGSN-MCC-MNC */
-	{
-		struct dict_avp_data data = {
-			9,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-GGSN-MCC-MNC",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-NSAPI */
-	{
-		struct dict_avp_data data = {
-			10,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-NSAPI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* added manually, missing in AVP table                         */
-	/* 3GPP-Session-Stop-Indicator */
-	{
-		struct dict_avp_data data = {
-			11,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Session-Stop-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-Selection-Mode */
-	{
-		struct dict_avp_data data = {
-			12,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Selection-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-Charging-Characteristics */
-	{
-		struct dict_avp_data data = {
-			13,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Charging-Characteristics",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-CG-IPv6-Address */
-	{
-		struct dict_avp_data data = {
-			14,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-CG-IPv6-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* M inconsistently specified                                   */
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-SGSN-IPv6-Address */
-	{
-		struct dict_avp_data data = {
-			15,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-SGSN-IPv6-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-GGSN-IPv6-Address */
-	{
-		struct dict_avp_data data = {
-			16,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-GGSN-IPv6-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-IPv6-DNS-Servers */
-	{
-		struct dict_avp_data data = {
-			17,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-IPv6-DNS-Servers",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 29.061 says MUST NOT M; old contrib/3gpp says MUST           */
-	/* 3GPP-SGSN-MCC-MNC */
-	{
-		struct dict_avp_data data = {
-			18,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-SGSN-MCC-MNC",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* M inconsistently specified                                   */
-	/* 3GPP-IMEISV */
-	{
-		struct dict_avp_data data = {
-			20,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-IMEISV",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* M inconsistently specified                                   */
-	/* 3GPP-RAT-Type */
-	{
-		struct dict_avp_data data = {
-			21,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-RAT-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* M inconsistently specified                                   */
-	/* 3GPP-User-Location-Info */
-	{
-		struct dict_avp_data data = {
-			22,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-User-Location-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* M inconsistently specified                                   */
-	/* 3GPP-MS-TimeZone */
-	{
-		struct dict_avp_data data = {
-			23,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-MS-TimeZone",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP-CAMEL-Charging-Info */
-	{
-		struct dict_avp_data data = {
-			24,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-CAMEL-Charging-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP-Packet-Filter */
-	{
-		struct dict_avp_data data = {
-			25,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Packet-Filter",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP-Negotiated-DSCP */
-	{
-		struct dict_avp_data data = {
-			26,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Negotiated-DSCP",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP-Allocate-IP-Type */
-	{
-		struct dict_avp_data data = {
-			27,	/* Code */
-			10415,	/* Vendor */
-			"3GPP-Allocate-IP-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* added manually, missing in AVP table                         */
-	/* External-Identifier */
-	{
-		struct dict_avp_data data = {
-			28,	/* Code */
-			10415,	/* Vendor */
-			"External-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TMGI */
-	{
-		struct dict_avp_data data = {
-			900,	/* Code */
-			10415,	/* Vendor */
-			"TMGI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Required-MBMS-Bearer-Capabilities */
-	{
-		struct dict_avp_data data = {
-			901,	/* Code */
-			10415,	/* Vendor */
-			"Required-MBMS-Bearer-Capabilities",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* MBMS-StartStop-Indication */
-	{
-		struct dict_avp_data data = {
-			902,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-StartStop-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-StartStop-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-Service-Area */
-	{
-		struct dict_avp_data data = {
-			903,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Service-Area",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-Session-Duration */
-	{
-		struct dict_avp_data data = {
-			904,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Session-Duration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Alternative-APN */
-	{
-		struct dict_avp_data data = {
-			905,	/* Code */
-			10415,	/* Vendor */
-			"Alternative-APN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* MBMS-Service-Type */
-	{
-		struct dict_avp_data data = {
-			906,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Service-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-2G-3G-Indicator */
-	{
-		struct dict_avp_data data = {
-			907,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-2G-3G-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-2G-3G-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-Session-Identity */
-	{
-		struct dict_avp_data data = {
-			908,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Session-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* RAI */
-	{
-		struct dict_avp_data data = {
-			909,	/* Code */
-			10415,	/* Vendor */
-			"RAI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Additional-MBMS-Trace-Info */
-	{
-		struct dict_avp_data data = {
-			910,	/* Code */
-			10415,	/* Vendor */
-			"Additional-MBMS-Trace-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-Time-To-Data-Transfer */
-	{
-		struct dict_avp_data data = {
-			911,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Time-To-Data-Transfer",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-Session-Repetition-Number */
-	{
-		struct dict_avp_data data = {
-			912,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Session-Repetition-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-Required-QoS */
-	{
-		struct dict_avp_data data = {
-			913,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Required-QoS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* MBMS-Counting-Information */
-	{
-		struct dict_avp_data data = {
-			914,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Counting-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Counting-Information)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-User-Data-Mode-Indication */
-	{
-		struct dict_avp_data data = {
-			915,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-User-Data-Mode-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Data-Mode-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-GGSN-Address */
-	{
-		struct dict_avp_data data = {
-			916,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-GGSN-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-GGSN-IPv6-Address */
-	{
-		struct dict_avp_data data = {
-			917,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-GGSN-IPv6-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-BMSC-SSM-IP-Address */
-	{
-		struct dict_avp_data data = {
-			918,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-BMSC-SSM-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-BMSC-SSM-IPv6-Address */
-	{
-		struct dict_avp_data data = {
-			919,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-BMSC-SSM-IPv6-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-Flow-Identifier */
-	{
-		struct dict_avp_data data = {
-			920,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Flow-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CN-IP-Multicast-Distribution */
-	{
-		struct dict_avp_data data = {
-			921,	/* Code */
-			10415,	/* Vendor */
-			"CN-IP-Multicast-Distribution",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-IP-Multicast-Distribution)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMS-HC-Indicator */
-	{
-		struct dict_avp_data data = {
-			922,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-HC-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-HC-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* 3GPP 29.140-700 (7.0.0 2007.07.05)                           */
-	/* Served-User-Identity */
-	{
-		struct dict_avp_data data = {
-			1100,	/* Code */
-			10415,	/* Vendor */
-			"Served-User-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* reuses: MSISDN                                               */
-	/* VASP-ID */
-	{
-		struct dict_avp_data data = {
-			1101,	/* Code */
-			10415,	/* Vendor */
-			"VASP-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* VAS-ID */
-	{
-		struct dict_avp_data data = {
-			1102,	/* Code */
-			10415,	/* Vendor */
-			"VAS-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Trigger-Event */
-	{
-		struct dict_avp_data data = {
-			1103,	/* Code */
-			10415,	/* Vendor */
-			"Trigger-Event",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Event)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* reuses: 3GPP-IMSI                                            */
-	/* Sender-Address */
-	{
-		struct dict_avp_data data = {
-			1104,	/* Code */
-			10415,	/* Vendor */
-			"Sender-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Initial-Recipient-Address */
-	{
-		struct dict_avp_data data = {
-			1105,	/* Code */
-			10415,	/* Vendor */
-			"Initial-Recipient-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Result-Recipient-Address */
-	{
-		struct dict_avp_data data = {
-			1106,	/* Code */
-			10415,	/* Vendor */
-			"Result-Recipient-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* conflicts with one in (more common) 32.329                   */
-	/* Sequence-Number-29.140 */
-	{
-		struct dict_avp_data data = {
-			1107,	/* Code */
-			10415,	/* Vendor */
-			"Sequence-Number-29.140",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* conflicts with one in (more common) 32.299                   */
-	/* Recipient-Address-29.140 */
-	{
-		struct dict_avp_data data = {
-			1108,	/* Code */
-			10415,	/* Vendor */
-			"Recipient-Address-29.140",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Routeing-Address */
-	{
-		struct dict_avp_data data = {
-			1109,	/* Code */
-			10415,	/* Vendor */
-			"Routeing-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Originating-Interface */
-	{
-		struct dict_avp_data data = {
-			1110,	/* Code */
-			10415,	/* Vendor */
-			"Originating-Interface",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Interface)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Delivery-Report */
-	{
-		struct dict_avp_data data = {
-			1111,	/* Code */
-			10415,	/* Vendor */
-			"Delivery-Report",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Read-Reply */
-	{
-		struct dict_avp_data data = {
-			1112,	/* Code */
-			10415,	/* Vendor */
-			"Read-Reply",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Sender-Visibility */
-	{
-		struct dict_avp_data data = {
-			1113,	/* Code */
-			10415,	/* Vendor */
-			"Sender-Visibility",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sender-Visibility)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Service-Key */
-	{
-		struct dict_avp_data data = {
-			1114,	/* Code */
-			10415,	/* Vendor */
-			"Service-Key",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Billing-Information */
-	{
-		struct dict_avp_data data = {
-			1115,	/* Code */
-			10415,	/* Vendor */
-			"Billing-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* conflicts with one in (more common) 32.299                   */
-	/* Status-29.140 */
-	{
-		struct dict_avp_data data = {
-			1116,	/* Code */
-			10415,	/* Vendor */
-			"Status-29.140",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Status-Code */
-	{
-		struct dict_avp_data data = {
-			1117,	/* Code */
-			10415,	/* Vendor */
-			"Status-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Status-Text */
-	{
-		struct dict_avp_data data = {
-			1118,	/* Code */
-			10415,	/* Vendor */
-			"Status-Text",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Routeing-Address-Resolution */
-	{
-		struct dict_avp_data data = {
-			1119,	/* Code */
-			10415,	/* Vendor */
-			"Routeing-Address-Resolution",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Routeing-Address-Resolution)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* 3GPP 29.173-c00 (12.0.0 2013.03.13)                          */
-	/* LMSI */
-	{
-		struct dict_avp_data data = {
-			2400,	/* Code */
-			10415,	/* Vendor */
-			"LMSI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Serving-Node */
-	{
-		struct dict_avp_data data = {
-			2401,	/* Code */
-			10415,	/* Vendor */
-			"Serving-Node",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MME-Name */
-	{
-		struct dict_avp_data data = {
-			2402,	/* Code */
-			10415,	/* Vendor */
-			"MME-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* MSC-Number */
-	{
-		struct dict_avp_data data = {
-			2403,	/* Code */
-			10415,	/* Vendor */
-			"MSC-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Capabilities-Sets */
-	{
-		struct dict_avp_data data = {
-			2404,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Capabilities-Sets",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* GMLC-Address */
-	{
-		struct dict_avp_data data = {
-			2405,	/* Code */
-			10415,	/* Vendor */
-			"GMLC-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Additional-Serving-Node */
-	{
-		struct dict_avp_data data = {
-			2406,	/* Code */
-			10415,	/* Vendor */
-			"Additional-Serving-Node",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PPR-Address */
-	{
-		struct dict_avp_data data = {
-			2407,	/* Code */
-			10415,	/* Vendor */
-			"PPR-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* MME-Realm */
-	{
-		struct dict_avp_data data = {
-			2408,	/* Code */
-			10415,	/* Vendor */
-			"MME-Realm",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* SGSN-Name */
-	{
-		struct dict_avp_data data = {
-			2409,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* SGSN-Realm */
-	{
-		struct dict_avp_data data = {
-			2410,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-Realm",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* 3GPP 29.210-670 (6.7.0 2006-12-18)                           */
-	/* PDP-Session-Operation */
-	{
-		struct dict_avp_data data = {
-			1015,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Session-Operation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Session-Operation)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* 3GPP 29.212-c00 (12.0.0 2013.03.15)                          */
-	/* Gx-specific                                                  */
-	/* ADC-Revalidation-Time */
-	{
-		struct dict_avp_data data = {
-			2801,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Revalidation-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* ADC-Rule-Install */
-	{
-		struct dict_avp_data data = {
-			1092,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Install",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ADC-Rule-Remove */
-	{
-		struct dict_avp_data data = {
-			1093,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Remove",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ADC-Rule-Definition */
-	{
-		struct dict_avp_data data = {
-			1094,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Definition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ADC-Rule-Base-Name */
-	{
-		struct dict_avp_data data = {
-			1095,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Base-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* ADC-Rule-Name */
-	{
-		struct dict_avp_data data = {
-			1096,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ADC-Rule-Report */
-	{
-		struct dict_avp_data data = {
-			1097,	/* Code */
-			10415,	/* Vendor */
-			"ADC-Rule-Report",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Application-Detection-Information */
-	{
-		struct dict_avp_data data = {
-			1098,	/* Code */
-			10415,	/* Vendor */
-			"Application-Detection-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Network-Charging-Identifier-Gx */
-	{
-		struct dict_avp_data data = {
-			1022,	/* Code */
-			10415,	/* Vendor */
-			"Access-Network-Charging-Identifier-Gx",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Allocation-Retention-Priority */
-	{
-		struct dict_avp_data data = {
-			1034,	/* Code */
-			10415,	/* Vendor */
-			"Allocation-Retention-Priority",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AN-GW-Address */
-	{
-		struct dict_avp_data data = {
-			1050,	/* Code */
-			10415,	/* Vendor */
-			"AN-GW-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* APN-Aggregate-Max-Bitrate-DL */
-	{
-		struct dict_avp_data data = {
-			1040,	/* Code */
-			10415,	/* Vendor */
-			"APN-Aggregate-Max-Bitrate-DL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* APN-Aggregate-Max-Bitrate-UL */
-	{
-		struct dict_avp_data data = {
-			1041,	/* Code */
-			10415,	/* Vendor */
-			"APN-Aggregate-Max-Bitrate-UL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Bearer-Control-Mode */
-	{
-		struct dict_avp_data data = {
-			1023,	/* Code */
-			10415,	/* Vendor */
-			"Bearer-Control-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Control-Mode)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Bearer-Identifier */
-	{
-		struct dict_avp_data data = {
-			1020,	/* Code */
-			10415,	/* Vendor */
-			"Bearer-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Bearer-Operation */
-	{
-		struct dict_avp_data data = {
-			1021,	/* Code */
-			10415,	/* Vendor */
-			"Bearer-Operation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Operation)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Bearer-Usage */
-	{
-		struct dict_avp_data data = {
-			1000,	/* Code */
-			10415,	/* Vendor */
-			"Bearer-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Usage)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Charging-Rule-Install */
-	{
-		struct dict_avp_data data = {
-			1001,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Install",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Rule-Remove */
-	{
-		struct dict_avp_data data = {
-			1002,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Remove",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Rule-Definition */
-	{
-		struct dict_avp_data data = {
-			1003,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Definition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Rule-Base-Name */
-	{
-		struct dict_avp_data data = {
-			1004,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Base-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Charging-Rule-Name */
-	{
-		struct dict_avp_data data = {
-			1005,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Rule-Report */
-	{
-		struct dict_avp_data data = {
-			1018,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Rule-Report",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Correlation-Indicator */
-	{
-		struct dict_avp_data data = {
-			1073,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Correlation-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Correlation-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* CoA-IP-Address */
-	{
-		struct dict_avp_data data = {
-			1035,	/* Code */
-			10415,	/* Vendor */
-			"CoA-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* CoA-Information */
-	{
-		struct dict_avp_data data = {
-			1039,	/* Code */
-			10415,	/* Vendor */
-			"CoA-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CSG-Information-Reporting */
-	{
-		struct dict_avp_data data = {
-			1071,	/* Code */
-			10415,	/* Vendor */
-			"CSG-Information-Reporting",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Information-Reporting)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Default-EPS-Bearer-QoS */
-	{
-		struct dict_avp_data data = {
-			1049,	/* Code */
-			10415,	/* Vendor */
-			"Default-EPS-Bearer-QoS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Event-Report-Indication */
-	{
-		struct dict_avp_data data = {
-			1033,	/* Code */
-			10415,	/* Vendor */
-			"Event-Report-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Event-Trigger */
-	{
-		struct dict_avp_data data = {
-			1006,	/* Code */
-			10415,	/* Vendor */
-			"Event-Trigger",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Event-Trigger)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Flow-Direction */
-	{
-		struct dict_avp_data data = {
-			1080,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Direction",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Direction)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Flow-Information */
-	{
-		struct dict_avp_data data = {
-			1058,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Flow-Label */
-	{
-		struct dict_avp_data data = {
-			1057,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Label",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* IP-CAN-Type */
-	{
-		struct dict_avp_data data = {
-			1027,	/* Code */
-			10415,	/* Vendor */
-			"IP-CAN-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Guaranteed-Bitrate-DL */
-	{
-		struct dict_avp_data data = {
-			1025,	/* Code */
-			10415,	/* Vendor */
-			"Guaranteed-Bitrate-DL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Guaranteed-Bitrate-UL */
-	{
-		struct dict_avp_data data = {
-			1026,	/* Code */
-			10415,	/* Vendor */
-			"Guaranteed-Bitrate-UL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* HeNB-Local-IP-Address */
-	{
-		struct dict_avp_data data = {
-			2804,	/* Code */
-			10415,	/* Vendor */
-			"HeNB-Local-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Metering-Method */
-	{
-		struct dict_avp_data data = {
-			1007,	/* Code */
-			10415,	/* Vendor */
-			"Metering-Method",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Metering-Method)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Monitoring-Key */
-	{
-		struct dict_avp_data data = {
-			1066,	/* Code */
-			10415,	/* Vendor */
-			"Monitoring-Key",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Mute-Notification */
-	{
-		struct dict_avp_data data = {
-			2809,	/* Code */
-			10415,	/* Vendor */
-			"Mute-Notification",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Mute-Notification)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Monitoring-Time */
-	{
-		struct dict_avp_data data = {
-			2810,	/* Code */
-			10415,	/* Vendor */
-			"Monitoring-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Network-Request-Support */
-	{
-		struct dict_avp_data data = {
-			1024,	/* Code */
-			10415,	/* Vendor */
-			"Network-Request-Support",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Request-Support)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Offline */
-	{
-		struct dict_avp_data data = {
-			1008,	/* Code */
-			10415,	/* Vendor */
-			"Offline",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Offline)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Online */
-	{
-		struct dict_avp_data data = {
-			1009,	/* Code */
-			10415,	/* Vendor */
-			"Online",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Packet-Filter-Content */
-	{
-		struct dict_avp_data data = {
-			1059,	/* Code */
-			10415,	/* Vendor */
-			"Packet-Filter-Content",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
-	};
-
-	/* Packet-Filter-Identifier */
-	{
-		struct dict_avp_data data = {
-			1060,	/* Code */
-			10415,	/* Vendor */
-			"Packet-Filter-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Packet-Filter-Information */
-	{
-		struct dict_avp_data data = {
-			1061,	/* Code */
-			10415,	/* Vendor */
-			"Packet-Filter-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Packet-Filter-Operation */
-	{
-		struct dict_avp_data data = {
-			1062,	/* Code */
-			10415,	/* Vendor */
-			"Packet-Filter-Operation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Operation)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Packet-Filter-Usage */
-	{
-		struct dict_avp_data data = {
-			1072,	/* Code */
-			10415,	/* Vendor */
-			"Packet-Filter-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Usage)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PDN-Connection-ID */
-	{
-		struct dict_avp_data data = {
-			1065,	/* Code */
-			10415,	/* Vendor */
-			"PDN-Connection-ID",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Precedence */
-	{
-		struct dict_avp_data data = {
-			1010,	/* Code */
-			10415,	/* Vendor */
-			"Precedence",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Pre-emption-Capability */
-	{
-		struct dict_avp_data data = {
-			1047,	/* Code */
-			10415,	/* Vendor */
-			"Pre-emption-Capability",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Capability)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Pre-emption-Vulnerability */
-	{
-		struct dict_avp_data data = {
-			1048,	/* Code */
-			10415,	/* Vendor */
-			"Pre-emption-Vulnerability",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Vulnerability)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Priority-Level */
-	{
-		struct dict_avp_data data = {
-			1046,	/* Code */
-			10415,	/* Vendor */
-			"Priority-Level",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Redirect-Information */
-	{
-		struct dict_avp_data data = {
-			1085,	/* Code */
-			10415,	/* Vendor */
-			"Redirect-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Redirect-Support */
-	{
-		struct dict_avp_data data = {
-			1086,	/* Code */
-			10415,	/* Vendor */
-			"Redirect-Support",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Redirect-Support)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Reporting-Level */
-	{
-		struct dict_avp_data data = {
-			1011,	/* Code */
-			10415,	/* Vendor */
-			"Reporting-Level",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Level)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Routing-Filter */
-	{
-		struct dict_avp_data data = {
-			1078,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Filter",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Routing-IP-Address */
-	{
-		struct dict_avp_data data = {
-			1079,	/* Code */
-			10415,	/* Vendor */
-			"Routing-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Routing-Rule-Definition */
-	{
-		struct dict_avp_data data = {
-			1076,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Rule-Definition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Routing-Rule-Identifier */
-	{
-		struct dict_avp_data data = {
-			1077,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Rule-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Routing-Rule-Install */
-	{
-		struct dict_avp_data data = {
-			1081,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Rule-Install",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Routing-Rule-Remove */
-	{
-		struct dict_avp_data data = {
-			1075,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Rule-Remove",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PCC-Rule-Status */
-	{
-		struct dict_avp_data data = {
-			1019,	/* Code */
-			10415,	/* Vendor */
-			"PCC-Rule-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PCC-Rule-Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Session-Release-Cause */
-	{
-		struct dict_avp_data data = {
-			1045,	/* Code */
-			10415,	/* Vendor */
-			"Session-Release-Cause",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Release-Cause)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* TDF-Information */
-	{
-		struct dict_avp_data data = {
-			1087,	/* Code */
-			10415,	/* Vendor */
-			"TDF-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TDF-Application-Identifier */
-	{
-		struct dict_avp_data data = {
-			1088,	/* Code */
-			10415,	/* Vendor */
-			"TDF-Application-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TDF-Application-Instance-Identifier */
-	{
-		struct dict_avp_data data = {
-			2802,	/* Code */
-			10415,	/* Vendor */
-			"TDF-Application-Instance-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TDF-Destination-Host */
-	{
-		struct dict_avp_data data = {
-			1089,	/* Code */
-			10415,	/* Vendor */
-			"TDF-Destination-Host",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* TDF-Destination-Realm */
-	{
-		struct dict_avp_data data = {
-			1090,	/* Code */
-			10415,	/* Vendor */
-			"TDF-Destination-Realm",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL);
-	};
-
-	/* TDF-IP-Address */
-	{
-		struct dict_avp_data data = {
-			1091,	/* Code */
-			10415,	/* Vendor */
-			"TDF-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* QoS-Class-Identifier */
-	{
-		struct dict_avp_data data = {
-			1028,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Class-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Class-Identifier)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* QoS-Information */
-	{
-		struct dict_avp_data data = {
-			1016,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* QoS-Negotiation */
-	{
-		struct dict_avp_data data = {
-			1029,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Negotiation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Negotiation)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* QoS-Upgrade */
-	{
-		struct dict_avp_data data = {
-			1030,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Upgrade",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Upgrade)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PS-to-CS-Session-Continuity */
-	{
-		struct dict_avp_data data = {
-			1099,	/* Code */
-			10415,	/* Vendor */
-			"PS-to-CS-Session-Continuity",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-to-CS-Session-Continuity)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Resource-Allocation-Notification */
-	{
-		struct dict_avp_data data = {
-			1063,	/* Code */
-			10415,	/* Vendor */
-			"Resource-Allocation-Notification",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Allocation-Notification)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Rule-Failure-Code */
-	{
-		struct dict_avp_data data = {
-			1031,	/* Code */
-			10415,	/* Vendor */
-			"Rule-Failure-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rule-Failure-Code)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Security-Parameter-Index */
-	{
-		struct dict_avp_data data = {
-			1056,	/* Code */
-			10415,	/* Vendor */
-			"Security-Parameter-Index",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TFT-Filter */
-	{
-		struct dict_avp_data data = {
-			1012,	/* Code */
-			10415,	/* Vendor */
-			"TFT-Filter",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
-	};
-
-	/* TFT-Packet-Filter-Information */
-	{
-		struct dict_avp_data data = {
-			1013,	/* Code */
-			10415,	/* Vendor */
-			"TFT-Packet-Filter-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ToS-Traffic-Class */
-	{
-		struct dict_avp_data data = {
-			1014,	/* Code */
-			10415,	/* Vendor */
-			"ToS-Traffic-Class",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Tunnel-Header-Filter */
-	{
-		struct dict_avp_data data = {
-			1036,	/* Code */
-			10415,	/* Vendor */
-			"Tunnel-Header-Filter",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
-	};
-
-	/* Tunnel-Header-Length */
-	{
-		struct dict_avp_data data = {
-			1037,	/* Code */
-			10415,	/* Vendor */
-			"Tunnel-Header-Length",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Tunnel-Information */
-	{
-		struct dict_avp_data data = {
-			1038,	/* Code */
-			10415,	/* Vendor */
-			"Tunnel-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* RAT-Type */
-	{
-		struct dict_avp_data data = {
-			1032,	/* Code */
-			10415,	/* Vendor */
-			"RAT-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RAT-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Revalidation-Time */
-	{
-		struct dict_avp_data data = {
-			1042,	/* Code */
-			10415,	/* Vendor */
-			"Revalidation-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Rule-Activation-Time */
-	{
-		struct dict_avp_data data = {
-			1043,	/* Code */
-			10415,	/* Vendor */
-			"Rule-Activation-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* UDP-Source-Port */
-	{
-		struct dict_avp_data data = {
-			2806,	/* Code */
-			10415,	/* Vendor */
-			"UDP-Source-Port",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UE-Local-IP-Address */
-	{
-		struct dict_avp_data data = {
-			2805,	/* Code */
-			10415,	/* Vendor */
-			"UE-Local-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Usage-Monitoring-Information */
-	{
-		struct dict_avp_data data = {
-			1067,	/* Code */
-			10415,	/* Vendor */
-			"Usage-Monitoring-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Rule-Deactivation-Time */
-	{
-		struct dict_avp_data data = {
-			1044,	/* Code */
-			10415,	/* Vendor */
-			"Rule-Deactivation-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Usage-Monitoring-Level */
-	{
-		struct dict_avp_data data = {
-			1068,	/* Code */
-			10415,	/* Vendor */
-			"Usage-Monitoring-Level",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Level)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Usage-Monitoring-Report */
-	{
-		struct dict_avp_data data = {
-			1069,	/* Code */
-			10415,	/* Vendor */
-			"Usage-Monitoring-Report",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Report)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Usage-Monitoring-Support */
-	{
-		struct dict_avp_data data = {
-			1070,	/* Code */
-			10415,	/* Vendor */
-			"Usage-Monitoring-Support",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Support)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Gxx-specific                                                 */
-	/* QoS-Rule-Install */
-	{
-		struct dict_avp_data data = {
-			1051,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Install",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* QoS-Rule-Remove */
-	{
-		struct dict_avp_data data = {
-			1052,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Remove",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* QoS-Rule-Definition */
-	{
-		struct dict_avp_data data = {
-			1053,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Definition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* QoS-Rule-Name */
-	{
-		struct dict_avp_data data = {
-			1054,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* QoS-Rule-Base-Name */
-	{
-		struct dict_avp_data data = {
-			1074,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Base-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* QoS-Rule-Report */
-	{
-		struct dict_avp_data data = {
-			1055,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Rule-Report",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Session-Linking-Indicator */
-	{
-		struct dict_avp_data data = {
-			1064,	/* Code */
-			10415,	/* Vendor */
-			"Session-Linking-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Linking-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* S15-specific                                                 */
-	/* CS-Service-Qos-Request-Identifier */
-	{
-		struct dict_avp_data data = {
-			2807,	/* Code */
-			10415,	/* Vendor */
-			"CS-Service-Qos-Request-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CS-Service-QoS-Request-Operation */
-	{
-		struct dict_avp_data data = {
-			2808,	/* Code */
-			10415,	/* Vendor */
-			"CS-Service-QoS-Request-Operation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-QoS-Request-Operation)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* 3GPP 29.214-b80 (11.8.0 2013.03.15)                          */
-	/* Abort-Cause */
-	{
-		struct dict_avp_data data = {
-			500,	/* Code */
-			10415,	/* Vendor */
-			"Abort-Cause",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Abort-Cause)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Access-Network-Charging-Address */
-	{
-		struct dict_avp_data data = {
-			501,	/* Code */
-			10415,	/* Vendor */
-			"Access-Network-Charging-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Access-Network-Charging-Identifier */
-	{
-		struct dict_avp_data data = {
-			502,	/* Code */
-			10415,	/* Vendor */
-			"Access-Network-Charging-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Network-Charging-Identifier-Value */
-	{
-		struct dict_avp_data data = {
-			503,	/* Code */
-			10415,	/* Vendor */
-			"Access-Network-Charging-Identifier-Value",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Acceptable-Service-Info */
-	{
-		struct dict_avp_data data = {
-			526,	/* Code */
-			10415,	/* Vendor */
-			"Acceptable-Service-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AF-Application-Identifier */
-	{
-		struct dict_avp_data data = {
-			504,	/* Code */
-			10415,	/* Vendor */
-			"AF-Application-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AF-Charging-Identifier */
-	{
-		struct dict_avp_data data = {
-			505,	/* Code */
-			10415,	/* Vendor */
-			"AF-Charging-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Application-Service-Provider-Identity */
-	{
-		struct dict_avp_data data = {
-			532,	/* Code */
-			10415,	/* Vendor */
-			"Application-Service-Provider-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Codec-Data */
-	{
-		struct dict_avp_data data = {
-			524,	/* Code */
-			10415,	/* Vendor */
-			"Codec-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Flow-Description */
-	{
-		struct dict_avp_data data = {
-			507,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Description",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL);
-	};
-
-	/* Flow-Number */
-	{
-		struct dict_avp_data data = {
-			509,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Flows */
-	{
-		struct dict_avp_data data = {
-			510,	/* Code */
-			10415,	/* Vendor */
-			"Flows",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Flow-Status */
-	{
-		struct dict_avp_data data = {
-			511,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Flow-Usage */
-	{
-		struct dict_avp_data data = {
-			512,	/* Code */
-			10415,	/* Vendor */
-			"Flow-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Usage)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Service-URN */
-	{
-		struct dict_avp_data data = {
-			525,	/* Code */
-			10415,	/* Vendor */
-			"Service-URN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Specific-Action */
-	{
-		struct dict_avp_data data = {
-			513,	/* Code */
-			10415,	/* Vendor */
-			"Specific-Action",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Specific-Action)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Max-Requested-Bandwidth-DL */
-	{
-		struct dict_avp_data data = {
-			515,	/* Code */
-			10415,	/* Vendor */
-			"Max-Requested-Bandwidth-DL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Max-Requested-Bandwidth-UL */
-	{
-		struct dict_avp_data data = {
-			516,	/* Code */
-			10415,	/* Vendor */
-			"Max-Requested-Bandwidth-UL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Media-Component-Description */
-	{
-		struct dict_avp_data data = {
-			517,	/* Code */
-			10415,	/* Vendor */
-			"Media-Component-Description",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Media-Component-Number */
-	{
-		struct dict_avp_data data = {
-			518,	/* Code */
-			10415,	/* Vendor */
-			"Media-Component-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Media-Sub-Component */
-	{
-		struct dict_avp_data data = {
-			519,	/* Code */
-			10415,	/* Vendor */
-			"Media-Sub-Component",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Media-Type */
-	{
-		struct dict_avp_data data = {
-			520,	/* Code */
-			10415,	/* Vendor */
-			"Media-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MPS-Identifier */
-	{
-		struct dict_avp_data data = {
-			528,	/* Code */
-			10415,	/* Vendor */
-			"MPS-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Min-Requested-Bandwidth-DL */
-	{
-		struct dict_avp_data data = {
-			534,	/* Code */
-			10415,	/* Vendor */
-			"Min-Requested-Bandwidth-DL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Min-Requested-Bandwidth-UL */
-	{
-		struct dict_avp_data data = {
-			535,	/* Code */
-			10415,	/* Vendor */
-			"Min-Requested-Bandwidth-UL",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* RR-Bandwidth */
-	{
-		struct dict_avp_data data = {
-			521,	/* Code */
-			10415,	/* Vendor */
-			"RR-Bandwidth",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* RS-Bandwidth */
-	{
-		struct dict_avp_data data = {
-			522,	/* Code */
-			10415,	/* Vendor */
-			"RS-Bandwidth",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Info-Status */
-	{
-		struct dict_avp_data data = {
-			527,	/* Code */
-			10415,	/* Vendor */
-			"Service-Info-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-Info-Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SIP-Forking-Indication */
-	{
-		struct dict_avp_data data = {
-			523,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Forking-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIP-Forking-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Sponsor-Identity */
-	{
-		struct dict_avp_data data = {
-			531,	/* Code */
-			10415,	/* Vendor */
-			"Sponsor-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Sponsored-Connectivity-Data */
-	{
-		struct dict_avp_data data = {
-			530,	/* Code */
-			10415,	/* Vendor */
-			"Sponsored-Connectivity-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AF-Signalling-Protocol */
-	{
-		struct dict_avp_data data = {
-			529,	/* Code */
-			10415,	/* Vendor */
-			"AF-Signalling-Protocol",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AF-Signalling-Protocol)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Required-Access-Info */
-	{
-		struct dict_avp_data data = {
-			536,	/* Code */
-			10415,	/* Vendor */
-			"Required-Access-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Required-Access-Info)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Rx-Request-Type */
-	{
-		struct dict_avp_data data = {
-			533,	/* Code */
-			10415,	/* Vendor */
-			"Rx-Request-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rx-Request-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* IP-Domain-Id */
-	{
-		struct dict_avp_data data = {
-			537,	/* Code */
-			10415,	/* Vendor */
-			"IP-Domain-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP 29.229-b20 (11.2.0 2012.12.21)                          */
-	/* Associated-Identities */
-	{
-		struct dict_avp_data data = {
-			632,	/* Code */
-			10415,	/* Vendor */
-			"Associated-Identities",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Associated-Registered-Identities */
-	{
-		struct dict_avp_data data = {
-			647,	/* Code */
-			10415,	/* Vendor */
-			"Associated-Registered-Identities",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Call-ID-SIP-Header */
-	{
-		struct dict_avp_data data = {
-			643,	/* Code */
-			10415,	/* Vendor */
-			"Call-ID-SIP-Header",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Charging-Information */
-	{
-		struct dict_avp_data data = {
-			618,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Confidentiality-Key */
-	{
-		struct dict_avp_data data = {
-			625,	/* Code */
-			10415,	/* Vendor */
-			"Confidentiality-Key",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Contact */
-	{
-		struct dict_avp_data data = {
-			641,	/* Code */
-			10415,	/* Vendor */
-			"Contact",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Deregistration-Reason */
-	{
-		struct dict_avp_data data = {
-			615,	/* Code */
-			10415,	/* Vendor */
-			"Deregistration-Reason",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Feature-List */
-	{
-		struct dict_avp_data data = {
-			630,	/* Code */
-			10415,	/* Vendor */
-			"Feature-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Feature-List-ID */
-	{
-		struct dict_avp_data data = {
-			629,	/* Code */
-			10415,	/* Vendor */
-			"Feature-List-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* From-SIP-Header */
-	{
-		struct dict_avp_data data = {
-			644,	/* Code */
-			10415,	/* Vendor */
-			"From-SIP-Header",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Identity-with-Emergency-Registration */
-	{
-		struct dict_avp_data data = {
-			651,	/* Code */
-			10415,	/* Vendor */
-			"Identity-with-Emergency-Registration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Integrity-Key */
-	{
-		struct dict_avp_data data = {
-			626,	/* Code */
-			10415,	/* Vendor */
-			"Integrity-Key",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LIA-Flags */
-	{
-		struct dict_avp_data data = {
-			653,	/* Code */
-			10415,	/* Vendor */
-			"LIA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Loose-Route-Indication */
-	{
-		struct dict_avp_data data = {
-			638,	/* Code */
-			10415,	/* Vendor */
-			"Loose-Route-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Loose-Route-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Mandatory-Capability */
-	{
-		struct dict_avp_data data = {
-			604,	/* Code */
-			10415,	/* Vendor */
-			"Mandatory-Capability",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Multiple-Registration-Indication */
-	{
-		struct dict_avp_data data = {
-			648,	/* Code */
-			10415,	/* Vendor */
-			"Multiple-Registration-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-Registration-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Optional-Capability */
-	{
-		struct dict_avp_data data = {
-			605,	/* Code */
-			10415,	/* Vendor */
-			"Optional-Capability",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Originating-Request */
-	{
-		struct dict_avp_data data = {
-			633,	/* Code */
-			10415,	/* Vendor */
-			"Originating-Request",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Request)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Path */
-	{
-		struct dict_avp_data data = {
-			640,	/* Code */
-			10415,	/* Vendor */
-			"Path",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Primary-Charging-Collection-Function-Name */
-	{
-		struct dict_avp_data data = {
-			621,	/* Code */
-			10415,	/* Vendor */
-			"Primary-Charging-Collection-Function-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
-	};
-
-	/* Primary-Event-Charging-Function-Name */
-	{
-		struct dict_avp_data data = {
-			619,	/* Code */
-			10415,	/* Vendor */
-			"Primary-Event-Charging-Function-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
-	};
-
-	/* Priviledged-Sender-Indication */
-	{
-		struct dict_avp_data data = {
-			652,	/* Code */
-			10415,	/* Vendor */
-			"Priviledged-Sender-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priviledged-Sender-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Public-Identity */
-	{
-		struct dict_avp_data data = {
-			601,	/* Code */
-			10415,	/* Vendor */
-			"Public-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Reason-Code */
-	{
-		struct dict_avp_data data = {
-			616,	/* Code */
-			10415,	/* Vendor */
-			"Reason-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reason-Code)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Reason-Info */
-	{
-		struct dict_avp_data data = {
-			617,	/* Code */
-			10415,	/* Vendor */
-			"Reason-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Record-Route */
-	{
-		struct dict_avp_data data = {
-			646,	/* Code */
-			10415,	/* Vendor */
-			"Record-Route",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Restoration-Info */
-	{
-		struct dict_avp_data data = {
-			649,	/* Code */
-			10415,	/* Vendor */
-			"Restoration-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SCSCF-Restoration-Info */
-	{
-		struct dict_avp_data data = {
-			639,	/* Code */
-			10415,	/* Vendor */
-			"SCSCF-Restoration-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Auth-Data-Item */
-	{
-		struct dict_avp_data data = {
-			612,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Auth-Data-Item",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Authenticate */
-	{
-		struct dict_avp_data data = {
-			609,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Authenticate",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Authentication-Context */
-	{
-		struct dict_avp_data data = {
-			611,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Authentication-Context",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Authentication-Scheme */
-	{
-		struct dict_avp_data data = {
-			608,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Authentication-Scheme",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SIP-Authorization */
-	{
-		struct dict_avp_data data = {
-			610,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Authorization",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Digest-Authenticate */
-	{
-		struct dict_avp_data data = {
-			635,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Digest-Authenticate",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Item-Number */
-	{
-		struct dict_avp_data data = {
-			613,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Item-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Number-Auth-Items */
-	{
-		struct dict_avp_data data = {
-			607,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Number-Auth-Items",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Secondary-Charging-Collection-Function-Name */
-	{
-		struct dict_avp_data data = {
-			622,	/* Code */
-			10415,	/* Vendor */
-			"Secondary-Charging-Collection-Function-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
-	};
-
-	/* Secondary-Event-Charging-Function-Name */
-	{
-		struct dict_avp_data data = {
-			620,	/* Code */
-			10415,	/* Vendor */
-			"Secondary-Event-Charging-Function-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL);
-	};
-
-	/* Server-Assignment-Type */
-	{
-		struct dict_avp_data data = {
-			614,	/* Code */
-			10415,	/* Vendor */
-			"Server-Assignment-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Server-Assignment-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Server-Capabilities */
-	{
-		struct dict_avp_data data = {
-			603,	/* Code */
-			10415,	/* Vendor */
-			"Server-Capabilities",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Server-Name */
-	{
-		struct dict_avp_data data = {
-			602,	/* Code */
-			10415,	/* Vendor */
-			"Server-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Session-Priority */
-	{
-		struct dict_avp_data data = {
-			650,	/* Code */
-			10415,	/* Vendor */
-			"Session-Priority",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Priority)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Subscription-Info */
-	{
-		struct dict_avp_data data = {
-			642,	/* Code */
-			10415,	/* Vendor */
-			"Subscription-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Supported-Applications */
-	{
-		struct dict_avp_data data = {
-			631,	/* Code */
-			10415,	/* Vendor */
-			"Supported-Applications",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Supported-Features */
-	{
-		struct dict_avp_data data = {
-			628,	/* Code */
-			10415,	/* Vendor */
-			"Supported-Features",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* To-SIP-Header */
-	{
-		struct dict_avp_data data = {
-			645,	/* Code */
-			10415,	/* Vendor */
-			"To-SIP-Header",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UAR-Flags */
-	{
-		struct dict_avp_data data = {
-			637,	/* Code */
-			10415,	/* Vendor */
-			"UAR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-Authorization-Type */
-	{
-		struct dict_avp_data data = {
-			623,	/* Code */
-			10415,	/* Vendor */
-			"User-Authorization-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Authorization-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* User-Data */
-	{
-		struct dict_avp_data data = {
-			606,	/* Code */
-			10415,	/* Vendor */
-			"User-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-Data-Already-Available */
-	{
-		struct dict_avp_data data = {
-			624,	/* Code */
-			10415,	/* Vendor */
-			"User-Data-Already-Available",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Data-Already-Available)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Visited-Network-Identifier */
-	{
-		struct dict_avp_data data = {
-			600,	/* Code */
-			10415,	/* Vendor */
-			"Visited-Network-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Wildcarded-Public-Identity */
-	{
-		struct dict_avp_data data = {
-			634,	/* Code */
-			10415,	/* Vendor */
-			"Wildcarded-Public-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* 3GPP 32.299-b60 (11.6.0 2012.12.21)                          */
-	/* AF-Correlation-Information */
-	{
-		struct dict_avp_data data = {
-			1276,	/* Code */
-			10415,	/* Vendor */
-			"AF-Correlation-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Network-Information */
-	{
-		struct dict_avp_data data = {
-			1263,	/* Code */
-			10415,	/* Vendor */
-			"Access-Network-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Transfer-Information */
-	{
-		struct dict_avp_data data = {
-			2709,	/* Code */
-			10415,	/* Vendor */
-			"Access-Transfer-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Transfer-Type */
-	{
-		struct dict_avp_data data = {
-			2710,	/* Code */
-			10415,	/* Vendor */
-			"Access-Transfer-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Access-Transfer-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Account-Expiration */
-	{
-		struct dict_avp_data data = {
-			2309,	/* Code */
-			10415,	/* Vendor */
-			"Account-Expiration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Accumulated-Cost */
-	{
-		struct dict_avp_data data = {
-			2052,	/* Code */
-			10415,	/* Vendor */
-			"Accumulated-Cost",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Adaptations */
-	{
-		struct dict_avp_data data = {
-			1217,	/* Code */
-			10415,	/* Vendor */
-			"Adaptations",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Adaptations)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Additional-Content-Information */
-	{
-		struct dict_avp_data data = {
-			1207,	/* Code */
-			10415,	/* Vendor */
-			"Additional-Content-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Additional-Type-Information */
-	{
-		struct dict_avp_data data = {
-			1205,	/* Code */
-			10415,	/* Vendor */
-			"Additional-Type-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Address-Data */
-	{
-		struct dict_avp_data data = {
-			897,	/* Code */
-			10415,	/* Vendor */
-			"Address-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Address-Domain */
-	{
-		struct dict_avp_data data = {
-			898,	/* Code */
-			10415,	/* Vendor */
-			"Address-Domain",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Address-Type */
-	{
-		struct dict_avp_data data = {
-			899,	/* Code */
-			10415,	/* Vendor */
-			"Address-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Address-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Addressee-Type */
-	{
-		struct dict_avp_data data = {
-			1208,	/* Code */
-			10415,	/* Vendor */
-			"Addressee-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Addressee-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Alternate-Charged-Party-Address */
-	{
-		struct dict_avp_data data = {
-			1280,	/* Code */
-			10415,	/* Vendor */
-			"Alternate-Charged-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* AoC-Cost-Information */
-	{
-		struct dict_avp_data data = {
-			2053,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Cost-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AoC-Format */
-	{
-		struct dict_avp_data data = {
-			2310,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Format",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Format)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* AoC-Information */
-	{
-		struct dict_avp_data data = {
-			2054,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AoC-Request-Type */
-	{
-		struct dict_avp_data data = {
-			2055,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Request-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Request-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* AoC-Service */
-	{
-		struct dict_avp_data data = {
-			2311,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Service",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AoC-Service-Obligatory-Type */
-	{
-		struct dict_avp_data data = {
-			2312,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Service-Obligatory-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Obligatory-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* AoC-Service-Type */
-	{
-		struct dict_avp_data data = {
-			2313,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* AoC-Subscription-Information */
-	{
-		struct dict_avp_data data = {
-			2314,	/* Code */
-			10415,	/* Vendor */
-			"AoC-Subscription-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Applic-ID */
-	{
-		struct dict_avp_data data = {
-			1218,	/* Code */
-			10415,	/* Vendor */
-			"Applic-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Application-Server */
-	{
-		struct dict_avp_data data = {
-			836,	/* Code */
-			10415,	/* Vendor */
-			"Application-Server",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Application-Server-Information */
-	{
-		struct dict_avp_data data = {
-			850,	/* Code */
-			10415,	/* Vendor */
-			"Application-Server-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Application-Provided-Called-Party-Address */
-	{
-		struct dict_avp_data data = {
-			837,	/* Code */
-			10415,	/* Vendor */
-			"Application-Provided-Called-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Associated-Party-Address */
-	{
-		struct dict_avp_data data = {
-			2035,	/* Code */
-			10415,	/* Vendor */
-			"Associated-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Associated-URI */
-	{
-		struct dict_avp_data data = {
-			856,	/* Code */
-			10415,	/* Vendor */
-			"Associated-URI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Aux-Applic-Info */
-	{
-		struct dict_avp_data data = {
-			1219,	/* Code */
-			10415,	/* Vendor */
-			"Aux-Applic-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Base-Time-Interval */
-	{
-		struct dict_avp_data data = {
-			1265,	/* Code */
-			10415,	/* Vendor */
-			"Base-Time-Interval",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Bearer-Service */
-	{
-		struct dict_avp_data data = {
-			854,	/* Code */
-			10415,	/* Vendor */
-			"Bearer-Service",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CG-Address */
-	{
-		struct dict_avp_data data = {
-			846,	/* Code */
-			10415,	/* Vendor */
-			"CG-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* CSG-Access-Mode */
-	{
-		struct dict_avp_data data = {
-			2317,	/* Code */
-			10415,	/* Vendor */
-			"CSG-Access-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Access-Mode)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* CSG-Membership-Indication */
-	{
-		struct dict_avp_data data = {
-			2318,	/* Code */
-			10415,	/* Vendor */
-			"CSG-Membership-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Membership-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* CUG-Information */
-	{
-		struct dict_avp_data data = {
-			2304,	/* Code */
-			10415,	/* Vendor */
-			"CUG-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Called-Asserted-Identity */
-	{
-		struct dict_avp_data data = {
-			1250,	/* Code */
-			10415,	/* Vendor */
-			"Called-Asserted-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Called-Party-Address */
-	{
-		struct dict_avp_data data = {
-			832,	/* Code */
-			10415,	/* Vendor */
-			"Called-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Calling-Party-Address */
-	{
-		struct dict_avp_data data = {
-			831,	/* Code */
-			10415,	/* Vendor */
-			"Calling-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Carrier-Select-Routing-Information */
-	{
-		struct dict_avp_data data = {
-			2023,	/* Code */
-			10415,	/* Vendor */
-			"Carrier-Select-Routing-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Cause-Code */
-	{
-		struct dict_avp_data data = {
-			861,	/* Code */
-			10415,	/* Vendor */
-			"Cause-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Change-Condition */
-	{
-		struct dict_avp_data data = {
-			2037,	/* Code */
-			10415,	/* Vendor */
-			"Change-Condition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Change-Time */
-	{
-		struct dict_avp_data data = {
-			2038,	/* Code */
-			10415,	/* Vendor */
-			"Change-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Charge-Reason-Code */
-	{
-		struct dict_avp_data data = {
-			2118,	/* Code */
-			10415,	/* Vendor */
-			"Charge-Reason-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charge-Reason-Code)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Charged-Party */
-	{
-		struct dict_avp_data data = {
-			857,	/* Code */
-			10415,	/* Vendor */
-			"Charged-Party",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Charging-Characteristics-Selection-Mode */
-	{
-		struct dict_avp_data data = {
-			2066,	/* Code */
-			10415,	/* Vendor */
-			"Charging-Characteristics-Selection-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Characteristics-Selection-Mode)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Class-Identifier */
-	{
-		struct dict_avp_data data = {
-			1214,	/* Code */
-			10415,	/* Vendor */
-			"Class-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Class-Identifier)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Client-Address */
-	{
-		struct dict_avp_data data = {
-			2018,	/* Code */
-			10415,	/* Vendor */
-			"Client-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Content-Class */
-	{
-		struct dict_avp_data data = {
-			1220,	/* Code */
-			10415,	/* Vendor */
-			"Content-Class",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Content-Class)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Content-Disposition */
-	{
-		struct dict_avp_data data = {
-			828,	/* Code */
-			10415,	/* Vendor */
-			"Content-Disposition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Content-Length */
-	{
-		struct dict_avp_data data = {
-			827,	/* Code */
-			10415,	/* Vendor */
-			"Content-Length",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Content-Size */
-	{
-		struct dict_avp_data data = {
-			1206,	/* Code */
-			10415,	/* Vendor */
-			"Content-Size",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Content-Type */
-	{
-		struct dict_avp_data data = {
-			826,	/* Code */
-			10415,	/* Vendor */
-			"Content-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Current-Tariff */
-	{
-		struct dict_avp_data data = {
-			2056,	/* Code */
-			10415,	/* Vendor */
-			"Current-Tariff",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* DRM-Content */
-	{
-		struct dict_avp_data data = {
-			1221,	/* Code */
-			10415,	/* Vendor */
-			"DRM-Content",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRM-Content)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Data-Coding-Scheme */
-	{
-		struct dict_avp_data data = {
-			2001,	/* Code */
-			10415,	/* Vendor */
-			"Data-Coding-Scheme",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Deferred-Location-Event-Type */
-	{
-		struct dict_avp_data data = {
-			1230,	/* Code */
-			10415,	/* Vendor */
-			"Deferred-Location-Event-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Delivery-Report-Requested */
-	{
-		struct dict_avp_data data = {
-			1216,	/* Code */
-			10415,	/* Vendor */
-			"Delivery-Report-Requested",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report-Requested)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Destination-Interface */
-	{
-		struct dict_avp_data data = {
-			2002,	/* Code */
-			10415,	/* Vendor */
-			"Destination-Interface",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Diagnostics */
-	{
-		struct dict_avp_data data = {
-			2039,	/* Code */
-			10415,	/* Vendor */
-			"Diagnostics",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Domain-Name */
-	{
-		struct dict_avp_data data = {
-			1200,	/* Code */
-			10415,	/* Vendor */
-			"Domain-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Dynamic-Address-Flag */
-	{
-		struct dict_avp_data data = {
-			2051,	/* Code */
-			10415,	/* Vendor */
-			"Dynamic-Address-Flag",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Dynamic-Address-Flag-Extension */
-	{
-		struct dict_avp_data data = {
-			2068,	/* Code */
-			10415,	/* Vendor */
-			"Dynamic-Address-Flag-Extension",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag-Extension)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Early-Media-Description */
-	{
-		struct dict_avp_data data = {
-			1272,	/* Code */
-			10415,	/* Vendor */
-			"Early-Media-Description",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Envelope */
-	{
-		struct dict_avp_data data = {
-			1266,	/* Code */
-			10415,	/* Vendor */
-			"Envelope",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Envelope-End-Time */
-	{
-		struct dict_avp_data data = {
-			1267,	/* Code */
-			10415,	/* Vendor */
-			"Envelope-End-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Envelope-Reporting */
-	{
-		struct dict_avp_data data = {
-			1268,	/* Code */
-			10415,	/* Vendor */
-			"Envelope-Reporting",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Envelope-Reporting)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Envelope-Start-Time */
-	{
-		struct dict_avp_data data = {
-			1269,	/* Code */
-			10415,	/* Vendor */
-			"Envelope-Start-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Event */
-	{
-		struct dict_avp_data data = {
-			825,	/* Code */
-			10415,	/* Vendor */
-			"Event",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Event-Charging-TimeStamp */
-	{
-		struct dict_avp_data data = {
-			1258,	/* Code */
-			10415,	/* Vendor */
-			"Event-Charging-TimeStamp",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Event-Type */
-	{
-		struct dict_avp_data data = {
-			823,	/* Code */
-			10415,	/* Vendor */
-			"Event-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Expires */
-	{
-		struct dict_avp_data data = {
-			888,	/* Code */
-			10415,	/* Vendor */
-			"Expires",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* File-Repair-Supported */
-	{
-		struct dict_avp_data data = {
-			1224,	/* Code */
-			10415,	/* Vendor */
-			"File-Repair-Supported",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/File-Repair-Supported)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* From-Address */
-	{
-		struct dict_avp_data data = {
-			2708,	/* Code */
-			10415,	/* Vendor */
-			"From-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* GGSN-Address */
-	{
-		struct dict_avp_data data = {
-			847,	/* Code */
-			10415,	/* Vendor */
-			"GGSN-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* IMS-Application-Reference-Identifier */
-	{
-		struct dict_avp_data data = {
-			2601,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Application-Reference-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* IMS-Charging-Identifier */
-	{
-		struct dict_avp_data data = {
-			841,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Charging-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* IMS-Communication-Service-Identifier */
-	{
-		struct dict_avp_data data = {
-			1281,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Communication-Service-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* IMS-Emergency-Indicator */
-	{
-		struct dict_avp_data data = {
-			2322,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Emergency-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Emergency-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* IMS-Information */
-	{
-		struct dict_avp_data data = {
-			876,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* IMSI-Unauthenticated-Flag */
-	{
-		struct dict_avp_data data = {
-			2308,	/* Code */
-			10415,	/* Vendor */
-			"IMSI-Unauthenticated-Flag",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMSI-Unauthenticated-Flag)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* IP-Realm-Default-Indication */
-	{
-		struct dict_avp_data data = {
-			2603,	/* Code */
-			10415,	/* Vendor */
-			"IP-Realm-Default-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-Realm-Default-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Incoming-Trunk-Group-Id */
-	{
-		struct dict_avp_data data = {
-			852,	/* Code */
-			10415,	/* Vendor */
-			"Incoming-Trunk-Group-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Incremental-Cost */
-	{
-		struct dict_avp_data data = {
-			2062,	/* Code */
-			10415,	/* Vendor */
-			"Incremental-Cost",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Initial-IMS-Charging-Identifier */
-	{
-		struct dict_avp_data data = {
-			2321,	/* Code */
-			10415,	/* Vendor */
-			"Initial-IMS-Charging-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Inter-Operator-Identifier */
-	{
-		struct dict_avp_data data = {
-			838,	/* Code */
-			10415,	/* Vendor */
-			"Inter-Operator-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Interface-Id */
-	{
-		struct dict_avp_data data = {
-			2003,	/* Code */
-			10415,	/* Vendor */
-			"Interface-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Interface-Port */
-	{
-		struct dict_avp_data data = {
-			2004,	/* Code */
-			10415,	/* Vendor */
-			"Interface-Port",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Interface-Text */
-	{
-		struct dict_avp_data data = {
-			2005,	/* Code */
-			10415,	/* Vendor */
-			"Interface-Text",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Interface-Type */
-	{
-		struct dict_avp_data data = {
-			2006,	/* Code */
-			10415,	/* Vendor */
-			"Interface-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interface-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* LCS-APN */
-	{
-		struct dict_avp_data data = {
-			1231,	/* Code */
-			10415,	/* Vendor */
-			"LCS-APN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* LCS-Client-Dialed-By-MS */
-	{
-		struct dict_avp_data data = {
-			1233,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Client-Dialed-By-MS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* LCS-Client-External-ID */
-	{
-		struct dict_avp_data data = {
-			1234,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Client-External-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* LCS-Client-Id */
-	{
-		struct dict_avp_data data = {
-			1232,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Client-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Client-Name */
-	{
-		struct dict_avp_data data = {
-			1235,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Client-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Client-Type */
-	{
-		struct dict_avp_data data = {
-			1241,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Client-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Client-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* LCS-Data-Coding-Scheme */
-	{
-		struct dict_avp_data data = {
-			1236,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Data-Coding-Scheme",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* LCS-Format-Indicator */
-	{
-		struct dict_avp_data data = {
-			1237,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Format-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Format-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* LCS-Information */
-	{
-		struct dict_avp_data data = {
-			878,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Name-String */
-	{
-		struct dict_avp_data data = {
-			1238,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Name-String",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* LCS-Requestor-Id */
-	{
-		struct dict_avp_data data = {
-			1239,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Requestor-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Requestor-Id-String */
-	{
-		struct dict_avp_data data = {
-			1240,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Requestor-Id-String",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Local-GW-Inserted-Indication */
-	{
-		struct dict_avp_data data = {
-			2604,	/* Code */
-			10415,	/* Vendor */
-			"Local-GW-Inserted-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-GW-Inserted-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Local-Sequence-Number */
-	{
-		struct dict_avp_data data = {
-			2063,	/* Code */
-			10415,	/* Vendor */
-			"Local-Sequence-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Location-Estimate */
-	{
-		struct dict_avp_data data = {
-			1242,	/* Code */
-			10415,	/* Vendor */
-			"Location-Estimate",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Location-Estimate-Type */
-	{
-		struct dict_avp_data data = {
-			1243,	/* Code */
-			10415,	/* Vendor */
-			"Location-Estimate-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Estimate-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Location-Type */
-	{
-		struct dict_avp_data data = {
-			1244,	/* Code */
-			10415,	/* Vendor */
-			"Location-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Low-Balance-Indication */
-	{
-		struct dict_avp_data data = {
-			2020,	/* Code */
-			10415,	/* Vendor */
-			"Low-Balance-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Balance-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Low-Priority-Indicator */
-	{
-		struct dict_avp_data data = {
-			2602,	/* Code */
-			10415,	/* Vendor */
-			"Low-Priority-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Priority-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MBMSGW-Address */
-	{
-		struct dict_avp_data data = {
-			2307,	/* Code */
-			10415,	/* Vendor */
-			"MBMSGW-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* MBMS-Information */
-	{
-		struct dict_avp_data data = {
-			880,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MBMS-User-Service-Type */
-	{
-		struct dict_avp_data data = {
-			1225,	/* Code */
-			10415,	/* Vendor */
-			"MBMS-User-Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Service-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MM-Content-Type */
-	{
-		struct dict_avp_data data = {
-			1203,	/* Code */
-			10415,	/* Vendor */
-			"MM-Content-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MMBox-Storage-Requested */
-	{
-		struct dict_avp_data data = {
-			1248,	/* Code */
-			10415,	/* Vendor */
-			"MMBox-Storage-Requested",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MMBox-Storage-Requested)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MMS-Information */
-	{
-		struct dict_avp_data data = {
-			877,	/* Code */
-			10415,	/* Vendor */
-			"MMS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MMTel-Information */
-	{
-		struct dict_avp_data data = {
-			2030,	/* Code */
-			10415,	/* Vendor */
-			"MMTel-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MMTel-SService-Type */
-	{
-		struct dict_avp_data data = {
-			2031,	/* Code */
-			10415,	/* Vendor */
-			"MMTel-SService-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Media-Initiator-Flag */
-	{
-		struct dict_avp_data data = {
-			882,	/* Code */
-			10415,	/* Vendor */
-			"Media-Initiator-Flag",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Initiator-Flag)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Media-Initiator-Party */
-	{
-		struct dict_avp_data data = {
-			1288,	/* Code */
-			10415,	/* Vendor */
-			"Media-Initiator-Party",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Message-Body */
-	{
-		struct dict_avp_data data = {
-			889,	/* Code */
-			10415,	/* Vendor */
-			"Message-Body",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Message-Class */
-	{
-		struct dict_avp_data data = {
-			1213,	/* Code */
-			10415,	/* Vendor */
-			"Message-Class",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Message-ID */
-	{
-		struct dict_avp_data data = {
-			1210,	/* Code */
-			10415,	/* Vendor */
-			"Message-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Message-Size */
-	{
-		struct dict_avp_data data = {
-			1212,	/* Code */
-			10415,	/* Vendor */
-			"Message-Size",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Message-Type */
-	{
-		struct dict_avp_data data = {
-			1211,	/* Code */
-			10415,	/* Vendor */
-			"Message-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Message-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* NNI-Information */
-	{
-		struct dict_avp_data data = {
-			2703,	/* Code */
-			10415,	/* Vendor */
-			"NNI-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* NNI-Type */
-	{
-		struct dict_avp_data data = {
-			2704,	/* Code */
-			10415,	/* Vendor */
-			"NNI-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NNI-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Neighbour-Node-Address */
-	{
-		struct dict_avp_data data = {
-			2705,	/* Code */
-			10415,	/* Vendor */
-			"Neighbour-Node-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Next-Tariff */
-	{
-		struct dict_avp_data data = {
-			2057,	/* Code */
-			10415,	/* Vendor */
-			"Next-Tariff",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Node-Functionality */
-	{
-		struct dict_avp_data data = {
-			862,	/* Code */
-			10415,	/* Vendor */
-			"Node-Functionality",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Node-Functionality)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Node-Id */
-	{
-		struct dict_avp_data data = {
-			2064,	/* Code */
-			10415,	/* Vendor */
-			"Node-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Number-Of-Diversions */
-	{
-		struct dict_avp_data data = {
-			2034,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Diversions",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Messages-Sent */
-	{
-		struct dict_avp_data data = {
-			2019,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Messages-Sent",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Participants */
-	{
-		struct dict_avp_data data = {
-			885,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Participants",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Received-Talk-Bursts */
-	{
-		struct dict_avp_data data = {
-			1282,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Received-Talk-Bursts",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Talk-Bursts */
-	{
-		struct dict_avp_data data = {
-			1283,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Talk-Bursts",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Portability-Routing-Information */
-	{
-		struct dict_avp_data data = {
-			2024,	/* Code */
-			10415,	/* Vendor */
-			"Number-Portability-Routing-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Offline-Charging */
-	{
-		struct dict_avp_data data = {
-			1278,	/* Code */
-			10415,	/* Vendor */
-			"Offline-Charging",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Online-Charging-Flag */
-	{
-		struct dict_avp_data data = {
-			2303,	/* Code */
-			10415,	/* Vendor */
-			"Online-Charging-Flag",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online-Charging-Flag)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Originating-IOI */
-	{
-		struct dict_avp_data data = {
-			839,	/* Code */
-			10415,	/* Vendor */
-			"Originating-IOI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Originator */
-	{
-		struct dict_avp_data data = {
-			864,	/* Code */
-			10415,	/* Vendor */
-			"Originator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Originator-Address */
-	{
-		struct dict_avp_data data = {
-			886,	/* Code */
-			10415,	/* Vendor */
-			"Originator-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Originator-Interface */
-	{
-		struct dict_avp_data data = {
-			2009,	/* Code */
-			10415,	/* Vendor */
-			"Originator-Interface",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Originator-Received-Address */
-	{
-		struct dict_avp_data data = {
-			2027,	/* Code */
-			10415,	/* Vendor */
-			"Originator-Received-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Originator-SCCP-Address */
-	{
-		struct dict_avp_data data = {
-			2008,	/* Code */
-			10415,	/* Vendor */
-			"Originator-SCCP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Outgoing-Session-Id */
-	{
-		struct dict_avp_data data = {
-			2320,	/* Code */
-			10415,	/* Vendor */
-			"Outgoing-Session-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Outgoing-Trunk-Group-Id */
-	{
-		struct dict_avp_data data = {
-			853,	/* Code */
-			10415,	/* Vendor */
-			"Outgoing-Trunk-Group-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PDG-Address */
-	{
-		struct dict_avp_data data = {
-			895,	/* Code */
-			10415,	/* Vendor */
-			"PDG-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* PDG-Charging-Id */
-	{
-		struct dict_avp_data data = {
-			896,	/* Code */
-			10415,	/* Vendor */
-			"PDG-Charging-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDN-Connection-Charging-ID */
-	{
-		struct dict_avp_data data = {
-			2050,	/* Code */
-			10415,	/* Vendor */
-			"PDN-Connection-Charging-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDP-Address */
-	{
-		struct dict_avp_data data = {
-			1227,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* PDP-Address-Prefix-Length */
-	{
-		struct dict_avp_data data = {
-			2606,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Address-Prefix-Length",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDP-Context-Type */
-	{
-		struct dict_avp_data data = {
-			1247,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Context-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Context-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PS-Append-Free-Format-Data */
-	{
-		struct dict_avp_data data = {
-			867,	/* Code */
-			10415,	/* Vendor */
-			"PS-Append-Free-Format-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-Append-Free-Format-Data)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PS-Free-Format-Data */
-	{
-		struct dict_avp_data data = {
-			866,	/* Code */
-			10415,	/* Vendor */
-			"PS-Free-Format-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PS-Furnish-Charging-Information */
-	{
-		struct dict_avp_data data = {
-			865,	/* Code */
-			10415,	/* Vendor */
-			"PS-Furnish-Charging-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PS-Information */
-	{
-		struct dict_avp_data data = {
-			874,	/* Code */
-			10415,	/* Vendor */
-			"PS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Participant-Access-Priority */
-	{
-		struct dict_avp_data data = {
-			1259,	/* Code */
-			10415,	/* Vendor */
-			"Participant-Access-Priority",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Access-Priority)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Participant-Action-Type */
-	{
-		struct dict_avp_data data = {
-			2049,	/* Code */
-			10415,	/* Vendor */
-			"Participant-Action-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Action-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Participant-Group */
-	{
-		struct dict_avp_data data = {
-			1260,	/* Code */
-			10415,	/* Vendor */
-			"Participant-Group",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Participants-Involved */
-	{
-		struct dict_avp_data data = {
-			887,	/* Code */
-			10415,	/* Vendor */
-			"Participants-Involved",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PoC-Change-Condition */
-	{
-		struct dict_avp_data data = {
-			1261,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Change-Condition",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Change-Condition)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PoC-Change-Time */
-	{
-		struct dict_avp_data data = {
-			1262,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Change-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* PoC-Controlling-Address */
-	{
-		struct dict_avp_data data = {
-			858,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Controlling-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PoC-Event-Type */
-	{
-		struct dict_avp_data data = {
-			2025,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Event-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Event-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PoC-Group-Name */
-	{
-		struct dict_avp_data data = {
-			859,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Group-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PoC-Information */
-	{
-		struct dict_avp_data data = {
-			879,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PoC-Server-Role */
-	{
-		struct dict_avp_data data = {
-			883,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Server-Role",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Server-Role)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PoC-Session-Id */
-	{
-		struct dict_avp_data data = {
-			1229,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Session-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PoC-Session-Initiation-type */
-	{
-		struct dict_avp_data data = {
-			1277,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Session-Initiation-type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Initiation-type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PoC-Session-Type */
-	{
-		struct dict_avp_data data = {
-			884,	/* Code */
-			10415,	/* Vendor */
-			"PoC-Session-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PoC-User-Role */
-	{
-		struct dict_avp_data data = {
-			1252,	/* Code */
-			10415,	/* Vendor */
-			"PoC-User-Role",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PoC-User-Role-IDs */
-	{
-		struct dict_avp_data data = {
-			1253,	/* Code */
-			10415,	/* Vendor */
-			"PoC-User-Role-IDs",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* PoC-User-Role-info-Units */
-	{
-		struct dict_avp_data data = {
-			1254,	/* Code */
-			10415,	/* Vendor */
-			"PoC-User-Role-info-Units",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-User-Role-info-Units)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Positioning-Data */
-	{
-		struct dict_avp_data data = {
-			1245,	/* Code */
-			10415,	/* Vendor */
-			"Positioning-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Preferred-AoC-Currency */
-	{
-		struct dict_avp_data data = {
-			2315,	/* Code */
-			10415,	/* Vendor */
-			"Preferred-AoC-Currency",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Priority */
-	{
-		struct dict_avp_data data = {
-			1209,	/* Code */
-			10415,	/* Vendor */
-			"Priority",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Quota-Consumption-Time */
-	{
-		struct dict_avp_data data = {
-			881,	/* Code */
-			10415,	/* Vendor */
-			"Quota-Consumption-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Quota-Holding-Time */
-	{
-		struct dict_avp_data data = {
-			871,	/* Code */
-			10415,	/* Vendor */
-			"Quota-Holding-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Rate-Element */
-	{
-		struct dict_avp_data data = {
-			2058,	/* Code */
-			10415,	/* Vendor */
-			"Rate-Element",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Read-Reply-Report-Requested */
-	{
-		struct dict_avp_data data = {
-			1222,	/* Code */
-			10415,	/* Vendor */
-			"Read-Reply-Report-Requested",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply-Report-Requested)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Real-Time-Tariff-Information */
-	{
-		struct dict_avp_data data = {
-			2305,	/* Code */
-			10415,	/* Vendor */
-			"Real-Time-Tariff-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Received-Talk-Burst-Time */
-	{
-		struct dict_avp_data data = {
-			1284,	/* Code */
-			10415,	/* Vendor */
-			"Received-Talk-Burst-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Received-Talk-Burst-Volume */
-	{
-		struct dict_avp_data data = {
-			1285,	/* Code */
-			10415,	/* Vendor */
-			"Received-Talk-Burst-Volume",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Recipient-Address */
-	{
-		struct dict_avp_data data = {
-			1201,	/* Code */
-			10415,	/* Vendor */
-			"Recipient-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Recipient-Info */
-	{
-		struct dict_avp_data data = {
-			2026,	/* Code */
-			10415,	/* Vendor */
-			"Recipient-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Recipient-Received-Address */
-	{
-		struct dict_avp_data data = {
-			2028,	/* Code */
-			10415,	/* Vendor */
-			"Recipient-Received-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Recipient-SCCP-Address */
-	{
-		struct dict_avp_data data = {
-			2010,	/* Code */
-			10415,	/* Vendor */
-			"Recipient-SCCP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Refund-Information */
-	{
-		struct dict_avp_data data = {
-			2022,	/* Code */
-			10415,	/* Vendor */
-			"Refund-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Relationship-Mode */
-	{
-		struct dict_avp_data data = {
-			2706,	/* Code */
-			10415,	/* Vendor */
-			"Relationship-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relationship-Mode)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Remaining-Balance */
-	{
-		struct dict_avp_data data = {
-			2021,	/* Code */
-			10415,	/* Vendor */
-			"Remaining-Balance",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Reply-Applic-ID */
-	{
-		struct dict_avp_data data = {
-			1223,	/* Code */
-			10415,	/* Vendor */
-			"Reply-Applic-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Reply-Path-Requested */
-	{
-		struct dict_avp_data data = {
-			2011,	/* Code */
-			10415,	/* Vendor */
-			"Reply-Path-Requested",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reply-Path-Requested)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Reporting-Reason */
-	{
-		struct dict_avp_data data = {
-			872,	/* Code */
-			10415,	/* Vendor */
-			"Reporting-Reason",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Reason)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Requested-Party-Address */
-	{
-		struct dict_avp_data data = {
-			1251,	/* Code */
-			10415,	/* Vendor */
-			"Requested-Party-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Role-Of-Node */
-	{
-		struct dict_avp_data data = {
-			829,	/* Code */
-			10415,	/* Vendor */
-			"Role-Of-Node",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-Node)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SDP-Answer-Timestamp */
-	{
-		struct dict_avp_data data = {
-			1275,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Answer-Timestamp",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SDP-Media-Component */
-	{
-		struct dict_avp_data data = {
-			843,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Media-Component",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SDP-Media-Description */
-	{
-		struct dict_avp_data data = {
-			845,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Media-Description",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SDP-Media-Name */
-	{
-		struct dict_avp_data data = {
-			844,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Media-Name",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SDP-Offer-Timestamp */
-	{
-		struct dict_avp_data data = {
-			1274,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Offer-Timestamp",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SDP-Session-Description */
-	{
-		struct dict_avp_data data = {
-			842,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Session-Description",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SDP-TimeStamps */
-	{
-		struct dict_avp_data data = {
-			1273,	/* Code */
-			10415,	/* Vendor */
-			"SDP-TimeStamps",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SDP-Type */
-	{
-		struct dict_avp_data data = {
-			2036,	/* Code */
-			10415,	/* Vendor */
-			"SDP-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SDP-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SGSN-Address */
-	{
-		struct dict_avp_data data = {
-			1228,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* SGW-Address */
-	{
-		struct dict_avp_data data = {
-			2067,	/* Code */
-			10415,	/* Vendor */
-			"SGW-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* SGW-Change */
-	{
-		struct dict_avp_data data = {
-			2065,	/* Code */
-			10415,	/* Vendor */
-			"SGW-Change",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGW-Change)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SIP-Method */
-	{
-		struct dict_avp_data data = {
-			824,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Method",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SIP-Request-Timestamp */
-	{
-		struct dict_avp_data data = {
-			834,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Request-Timestamp",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SIP-Request-Timestamp-Fraction */
-	{
-		struct dict_avp_data data = {
-			2301,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Request-Timestamp-Fraction",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIP-Response-Timestamp */
-	{
-		struct dict_avp_data data = {
-			835,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Response-Timestamp",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SIP-Response-Timestamp-Fraction */
-	{
-		struct dict_avp_data data = {
-			2302,	/* Code */
-			10415,	/* Vendor */
-			"SIP-Response-Timestamp-Fraction",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SM-Discharge-Time */
-	{
-		struct dict_avp_data data = {
-			2012,	/* Code */
-			10415,	/* Vendor */
-			"SM-Discharge-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SM-Message-Type */
-	{
-		struct dict_avp_data data = {
-			2007,	/* Code */
-			10415,	/* Vendor */
-			"SM-Message-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Message-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SM-Protocol-ID */
-	{
-		struct dict_avp_data data = {
-			2013,	/* Code */
-			10415,	/* Vendor */
-			"SM-Protocol-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SM-Service-Type */
-	{
-		struct dict_avp_data data = {
-			2029,	/* Code */
-			10415,	/* Vendor */
-			"SM-Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Service-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SM-Status */
-	{
-		struct dict_avp_data data = {
-			2014,	/* Code */
-			10415,	/* Vendor */
-			"SM-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SM-User-Data-Header */
-	{
-		struct dict_avp_data data = {
-			2015,	/* Code */
-			10415,	/* Vendor */
-			"SM-User-Data-Header",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SMS-Information */
-	{
-		struct dict_avp_data data = {
-			2000,	/* Code */
-			10415,	/* Vendor */
-			"SMS-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SMS-Node */
-	{
-		struct dict_avp_data data = {
-			2016,	/* Code */
-			10415,	/* Vendor */
-			"SMS-Node",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Node)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SMSC-Address */
-	{
-		struct dict_avp_data data = {
-			2017,	/* Code */
-			10415,	/* Vendor */
-			"SMSC-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Scale-Factor */
-	{
-		struct dict_avp_data data = {
-			2059,	/* Code */
-			10415,	/* Vendor */
-			"Scale-Factor",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Served-Party-IP-Address */
-	{
-		struct dict_avp_data data = {
-			848,	/* Code */
-			10415,	/* Vendor */
-			"Served-Party-IP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Service-Data-Container */
-	{
-		struct dict_avp_data data = {
-			2040,	/* Code */
-			10415,	/* Vendor */
-			"Service-Data-Container",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Id */
-	{
-		struct dict_avp_data data = {
-			855,	/* Code */
-			10415,	/* Vendor */
-			"Service-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Service-Information */
-	{
-		struct dict_avp_data data = {
-			873,	/* Code */
-			10415,	/* Vendor */
-			"Service-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Mode */
-	{
-		struct dict_avp_data data = {
-			2032,	/* Code */
-			10415,	/* Vendor */
-			"Service-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Specific-Data */
-	{
-		struct dict_avp_data data = {
-			863,	/* Code */
-			10415,	/* Vendor */
-			"Service-Specific-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Service-Specific-Info */
-	{
-		struct dict_avp_data data = {
-			1249,	/* Code */
-			10415,	/* Vendor */
-			"Service-Specific-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Specific-Type */
-	{
-		struct dict_avp_data data = {
-			1257,	/* Code */
-			10415,	/* Vendor */
-			"Service-Specific-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Serving-Node-Type */
-	{
-		struct dict_avp_data data = {
-			2047,	/* Code */
-			10415,	/* Vendor */
-			"Serving-Node-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Session-Direction */
-	{
-		struct dict_avp_data data = {
-			2707,	/* Code */
-			10415,	/* Vendor */
-			"Session-Direction",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Direction)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Start-Time */
-	{
-		struct dict_avp_data data = {
-			2041,	/* Code */
-			10415,	/* Vendor */
-			"Start-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Status */
-	{
-		struct dict_avp_data data = {
-			2702,	/* Code */
-			10415,	/* Vendor */
-			"Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Stop-Time */
-	{
-		struct dict_avp_data data = {
-			2042,	/* Code */
-			10415,	/* Vendor */
-			"Stop-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Submission-Time */
-	{
-		struct dict_avp_data data = {
-			1202,	/* Code */
-			10415,	/* Vendor */
-			"Submission-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Subscriber-Role */
-	{
-		struct dict_avp_data data = {
-			2033,	/* Code */
-			10415,	/* Vendor */
-			"Subscriber-Role",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Role)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Supplementary-Service */
-	{
-		struct dict_avp_data data = {
-			2048,	/* Code */
-			10415,	/* Vendor */
-			"Supplementary-Service",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Talk-Burst-Exchange */
-	{
-		struct dict_avp_data data = {
-			1255,	/* Code */
-			10415,	/* Vendor */
-			"Talk-Burst-Exchange",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Talk-Burst-Time */
-	{
-		struct dict_avp_data data = {
-			1286,	/* Code */
-			10415,	/* Vendor */
-			"Talk-Burst-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Talk-Burst-Volume */
-	{
-		struct dict_avp_data data = {
-			1287,	/* Code */
-			10415,	/* Vendor */
-			"Talk-Burst-Volume",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Tariff-Information */
-	{
-		struct dict_avp_data data = {
-			2060,	/* Code */
-			10415,	/* Vendor */
-			"Tariff-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Tariff-XML */
-	{
-		struct dict_avp_data data = {
-			2306,	/* Code */
-			10415,	/* Vendor */
-			"Tariff-XML",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Terminating-IOI */
-	{
-		struct dict_avp_data data = {
-			840,	/* Code */
-			10415,	/* Vendor */
-			"Terminating-IOI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Time-First-Usage */
-	{
-		struct dict_avp_data data = {
-			2043,	/* Code */
-			10415,	/* Vendor */
-			"Time-First-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Time-Last-Usage */
-	{
-		struct dict_avp_data data = {
-			2044,	/* Code */
-			10415,	/* Vendor */
-			"Time-Last-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Time-Quota-Mechanism */
-	{
-		struct dict_avp_data data = {
-			1270,	/* Code */
-			10415,	/* Vendor */
-			"Time-Quota-Mechanism",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Time-Quota-Threshold */
-	{
-		struct dict_avp_data data = {
-			868,	/* Code */
-			10415,	/* Vendor */
-			"Time-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Time-Quota-Type */
-	{
-		struct dict_avp_data data = {
-			1271,	/* Code */
-			10415,	/* Vendor */
-			"Time-Quota-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Time-Quota-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Time-Stamps */
-	{
-		struct dict_avp_data data = {
-			833,	/* Code */
-			10415,	/* Vendor */
-			"Time-Stamps",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Time-Usage */
-	{
-		struct dict_avp_data data = {
-			2045,	/* Code */
-			10415,	/* Vendor */
-			"Time-Usage",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Token-Text */
-	{
-		struct dict_avp_data data = {
-			1215,	/* Code */
-			10415,	/* Vendor */
-			"Token-Text",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Traffic-Data-Volumes */
-	{
-		struct dict_avp_data data = {
-			2046,	/* Code */
-			10415,	/* Vendor */
-			"Traffic-Data-Volumes",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Transcoder-Inserted-Indication */
-	{
-		struct dict_avp_data data = {
-			2605,	/* Code */
-			10415,	/* Vendor */
-			"Transcoder-Inserted-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transcoder-Inserted-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Transit-IOI-List */
-	{
-		struct dict_avp_data data = {
-			2701,	/* Code */
-			10415,	/* Vendor */
-			"Transit-IOI-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Trigger */
-	{
-		struct dict_avp_data data = {
-			1264,	/* Code */
-			10415,	/* Vendor */
-			"Trigger",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trigger-Type */
-	{
-		struct dict_avp_data data = {
-			870,	/* Code */
-			10415,	/* Vendor */
-			"Trigger-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Trunk-Group-Id */
-	{
-		struct dict_avp_data data = {
-			851,	/* Code */
-			10415,	/* Vendor */
-			"Trunk-Group-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Type-Number */
-	{
-		struct dict_avp_data data = {
-			1204,	/* Code */
-			10415,	/* Vendor */
-			"Type-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Type-Number)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Unit-Cost */
-	{
-		struct dict_avp_data data = {
-			2061,	/* Code */
-			10415,	/* Vendor */
-			"Unit-Cost",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Unit-Quota-Threshold */
-	{
-		struct dict_avp_data data = {
-			1226,	/* Code */
-			10415,	/* Vendor */
-			"Unit-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-CSG-Information */
-	{
-		struct dict_avp_data data = {
-			2319,	/* Code */
-			10415,	/* Vendor */
-			"User-CSG-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-Participating-Type */
-	{
-		struct dict_avp_data data = {
-			1279,	/* Code */
-			10415,	/* Vendor */
-			"User-Participating-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Participating-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* User-Session-Id */
-	{
-		struct dict_avp_data data = {
-			830,	/* Code */
-			10415,	/* Vendor */
-			"User-Session-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Volume-Quota-Threshold */
-	{
-		struct dict_avp_data data = {
-			869,	/* Code */
-			10415,	/* Vendor */
-			"Volume-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* WAG-Address */
-	{
-		struct dict_avp_data data = {
-			890,	/* Code */
-			10415,	/* Vendor */
-			"WAG-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* WAG-PLMN-Id */
-	{
-		struct dict_avp_data data = {
-			891,	/* Code */
-			10415,	/* Vendor */
-			"WAG-PLMN-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* WLAN-Information */
-	{
-		struct dict_avp_data data = {
-			875,	/* Code */
-			10415,	/* Vendor */
-			"WLAN-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* WLAN-Radio-Container */
-	{
-		struct dict_avp_data data = {
-			892,	/* Code */
-			10415,	/* Vendor */
-			"WLAN-Radio-Container",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* WLAN-Session-Id */
-	{
-		struct dict_avp_data data = {
-			1246,	/* Code */
-			10415,	/* Vendor */
-			"WLAN-Session-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* WLAN-Technology */
-	{
-		struct dict_avp_data data = {
-			893,	/* Code */
-			10415,	/* Vendor */
-			"WLAN-Technology",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* WLAN-UE-Local-IPAddress */
-	{
-		struct dict_avp_data data = {
-			894,	/* Code */
-			10415,	/* Vendor */
-			"WLAN-UE-Local-IPAddress",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* 3GPP 29.272-c00 (12.0.0 2013.03.13)                          */
-	/* Subscription-Data */
-	{
-		struct dict_avp_data data = {
-			1400,	/* Code */
-			10415,	/* Vendor */
-			"Subscription-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Terminal-Information */
-	{
-		struct dict_avp_data data = {
-			1401,	/* Code */
-			10415,	/* Vendor */
-			"Terminal-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* IMEI */
-	{
-		struct dict_avp_data data = {
-			1402,	/* Code */
-			10415,	/* Vendor */
-			"IMEI",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Software-Version */
-	{
-		struct dict_avp_data data = {
-			1403,	/* Code */
-			10415,	/* Vendor */
-			"Software-Version",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* QoS-Subscribed */
-	{
-		struct dict_avp_data data = {
-			1404,	/* Code */
-			10415,	/* Vendor */
-			"QoS-Subscribed",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ULR-Flags */
-	{
-		struct dict_avp_data data = {
-			1405,	/* Code */
-			10415,	/* Vendor */
-			"ULR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ULA-Flags */
-	{
-		struct dict_avp_data data = {
-			1406,	/* Code */
-			10415,	/* Vendor */
-			"ULA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Visited-PLMN-Id */
-	{
-		struct dict_avp_data data = {
-			1407,	/* Code */
-			10415,	/* Vendor */
-			"Visited-PLMN-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Requested-EUTRAN-Authentication-Info */
-	{
-		struct dict_avp_data data = {
-			1408,	/* Code */
-			10415,	/* Vendor */
-			"Requested-EUTRAN-Authentication-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Requested-UTRAN-GERAN-Authentication-Info */
-	{
-		struct dict_avp_data data = {
-			1409,	/* Code */
-			10415,	/* Vendor */
-			"Requested-UTRAN-GERAN-Authentication-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Requested-Vectors */
-	{
-		struct dict_avp_data data = {
-			1410,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Requested-Vectors",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Re-Synchronization-Info */
-	{
-		struct dict_avp_data data = {
-			1411,	/* Code */
-			10415,	/* Vendor */
-			"Re-Synchronization-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Immediate-Response-Preferred */
-	{
-		struct dict_avp_data data = {
-			1412,	/* Code */
-			10415,	/* Vendor */
-			"Immediate-Response-Preferred",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Authentication-Info */
-	{
-		struct dict_avp_data data = {
-			1413,	/* Code */
-			10415,	/* Vendor */
-			"Authentication-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* E-UTRAN-Vector */
-	{
-		struct dict_avp_data data = {
-			1414,	/* Code */
-			10415,	/* Vendor */
-			"E-UTRAN-Vector",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UTRAN-Vector */
-	{
-		struct dict_avp_data data = {
-			1415,	/* Code */
-			10415,	/* Vendor */
-			"UTRAN-Vector",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* GERAN-Vector */
-	{
-		struct dict_avp_data data = {
-			1416,	/* Code */
-			10415,	/* Vendor */
-			"GERAN-Vector",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Network-Access-Mode */
-	{
-		struct dict_avp_data data = {
-			1417,	/* Code */
-			10415,	/* Vendor */
-			"Network-Access-Mode",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Access-Mode)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* HPLMN-ODB */
-	{
-		struct dict_avp_data data = {
-			1418,	/* Code */
-			10415,	/* Vendor */
-			"HPLMN-ODB",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Item-Number */
-	{
-		struct dict_avp_data data = {
-			1419,	/* Code */
-			10415,	/* Vendor */
-			"Item-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Cancellation-Type */
-	{
-		struct dict_avp_data data = {
-			1420,	/* Code */
-			10415,	/* Vendor */
-			"Cancellation-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Cancellation-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* DSR-Flags */
-	{
-		struct dict_avp_data data = {
-			1421,	/* Code */
-			10415,	/* Vendor */
-			"DSR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* DSA-Flags */
-	{
-		struct dict_avp_data data = {
-			1422,	/* Code */
-			10415,	/* Vendor */
-			"DSA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Context-Identifier */
-	{
-		struct dict_avp_data data = {
-			1423,	/* Code */
-			10415,	/* Vendor */
-			"Context-Identifier",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Subscriber-Status */
-	{
-		struct dict_avp_data data = {
-			1424,	/* Code */
-			10415,	/* Vendor */
-			"Subscriber-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Operator-Determined-Barring */
-	{
-		struct dict_avp_data data = {
-			1425,	/* Code */
-			10415,	/* Vendor */
-			"Operator-Determined-Barring",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Access-Restriction-Data */
-	{
-		struct dict_avp_data data = {
-			1426,	/* Code */
-			10415,	/* Vendor */
-			"Access-Restriction-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* APN-OI-Replacement */
-	{
-		struct dict_avp_data data = {
-			1427,	/* Code */
-			10415,	/* Vendor */
-			"APN-OI-Replacement",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* All-APN-Configurations-Included-Indicator */
-	{
-		struct dict_avp_data data = {
-			1428,	/* Code */
-			10415,	/* Vendor */
-			"All-APN-Configurations-Included-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/All-APN-Configurations-Included-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* APN-Configuration-Profile */
-	{
-		struct dict_avp_data data = {
-			1429,	/* Code */
-			10415,	/* Vendor */
-			"APN-Configuration-Profile",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* APN-Configuration */
-	{
-		struct dict_avp_data data = {
-			1430,	/* Code */
-			10415,	/* Vendor */
-			"APN-Configuration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* EPS-Subscribed-QoS-Profile */
-	{
-		struct dict_avp_data data = {
-			1431,	/* Code */
-			10415,	/* Vendor */
-			"EPS-Subscribed-QoS-Profile",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* VPLMN-Dynamic-Address-Allowed */
-	{
-		struct dict_avp_data data = {
-			1432,	/* Code */
-			10415,	/* Vendor */
-			"VPLMN-Dynamic-Address-Allowed",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-Dynamic-Address-Allowed)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* STN-SR */
-	{
-		struct dict_avp_data data = {
-			1433,	/* Code */
-			10415,	/* Vendor */
-			"STN-SR",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Alert-Reason */
-	{
-		struct dict_avp_data data = {
-			1434,	/* Code */
-			10415,	/* Vendor */
-			"Alert-Reason",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Alert-Reason)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* AMBR */
-	{
-		struct dict_avp_data data = {
-			1435,	/* Code */
-			10415,	/* Vendor */
-			"AMBR",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CSG-Subscription-Data */
-	{
-		struct dict_avp_data data = {
-			1436,	/* Code */
-			10415,	/* Vendor */
-			"CSG-Subscription-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CSG-Id */
-	{
-		struct dict_avp_data data = {
-			1437,	/* Code */
-			10415,	/* Vendor */
-			"CSG-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDN-GW-Allocation-Type */
-	{
-		struct dict_avp_data data = {
-			1438,	/* Code */
-			10415,	/* Vendor */
-			"PDN-GW-Allocation-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-GW-Allocation-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Expiration-Date */
-	{
-		struct dict_avp_data data = {
-			1439,	/* Code */
-			10415,	/* Vendor */
-			"Expiration-Date",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* RAT-Frequency-Selection-Priority-ID */
-	{
-		struct dict_avp_data data = {
-			1440,	/* Code */
-			10415,	/* Vendor */
-			"RAT-Frequency-Selection-Priority-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* IDA-Flags */
-	{
-		struct dict_avp_data data = {
-			1441,	/* Code */
-			10415,	/* Vendor */
-			"IDA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PUA-Flags */
-	{
-		struct dict_avp_data data = {
-			1442,	/* Code */
-			10415,	/* Vendor */
-			"PUA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* NOR-Flags */
-	{
-		struct dict_avp_data data = {
-			1443,	/* Code */
-			10415,	/* Vendor */
-			"NOR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-Id */
-	{
-		struct dict_avp_data data = {
-			1444,	/* Code */
-			10415,	/* Vendor */
-			"User-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Equipment-Status */
-	{
-		struct dict_avp_data data = {
-			1445,	/* Code */
-			10415,	/* Vendor */
-			"Equipment-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Equipment-Status)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Regional-Subscription-Zone-Code */
-	{
-		struct dict_avp_data data = {
-			1446,	/* Code */
-			10415,	/* Vendor */
-			"Regional-Subscription-Zone-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* RAND */
-	{
-		struct dict_avp_data data = {
-			1447,	/* Code */
-			10415,	/* Vendor */
-			"RAND",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* XRES */
-	{
-		struct dict_avp_data data = {
-			1448,	/* Code */
-			10415,	/* Vendor */
-			"XRES",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* AUTN */
-	{
-		struct dict_avp_data data = {
-			1449,	/* Code */
-			10415,	/* Vendor */
-			"AUTN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* KASME */
-	{
-		struct dict_avp_data data = {
-			1450,	/* Code */
-			10415,	/* Vendor */
-			"KASME",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trace-Collection-Entity */
-	{
-		struct dict_avp_data data = {
-			1452,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Collection-Entity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* Kc */
-	{
-		struct dict_avp_data data = {
-			1453,	/* Code */
-			10415,	/* Vendor */
-			"Kc",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SRES */
-	{
-		struct dict_avp_data data = {
-			1454,	/* Code */
-			10415,	/* Vendor */
-			"SRES",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDN-Type */
-	{
-		struct dict_avp_data data = {
-			1456,	/* Code */
-			10415,	/* Vendor */
-			"PDN-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Roaming-Restricted-Due-To-Unsupported-Feature */
-	{
-		struct dict_avp_data data = {
-			1457,	/* Code */
-			10415,	/* Vendor */
-			"Roaming-Restricted-Due-To-Unsupported-Feature",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Roaming-Restricted-Due-To-Unsupported-Feature)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Trace-Data */
-	{
-		struct dict_avp_data data = {
-			1458,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trace-Reference */
-	{
-		struct dict_avp_data data = {
-			1459,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Reference",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trace-Depth */
-	{
-		struct dict_avp_data data = {
-			1462,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Depth",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trace-Depth)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Trace-NE-Type-List */
-	{
-		struct dict_avp_data data = {
-			1463,	/* Code */
-			10415,	/* Vendor */
-			"Trace-NE-Type-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trace-Interface-List */
-	{
-		struct dict_avp_data data = {
-			1464,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Interface-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Trace-Event-List */
-	{
-		struct dict_avp_data data = {
-			1465,	/* Code */
-			10415,	/* Vendor */
-			"Trace-Event-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* OMC-Id */
-	{
-		struct dict_avp_data data = {
-			1466,	/* Code */
-			10415,	/* Vendor */
-			"OMC-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* GPRS-Subscription-Data */
-	{
-		struct dict_avp_data data = {
-			1467,	/* Code */
-			10415,	/* Vendor */
-			"GPRS-Subscription-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Complete-Data-List-Included-Indicator */
-	{
-		struct dict_avp_data data = {
-			1468,	/* Code */
-			10415,	/* Vendor */
-			"Complete-Data-List-Included-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Complete-Data-List-Included-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PDP-Context */
-	{
-		struct dict_avp_data data = {
-			1469,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Context",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* PDP-Type */
-	{
-		struct dict_avp_data data = {
-			1470,	/* Code */
-			10415,	/* Vendor */
-			"PDP-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP2-MEID */
-	{
-		struct dict_avp_data data = {
-			1471,	/* Code */
-			10415,	/* Vendor */
-			"3GPP2-MEID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Specific-APN-Info */
-	{
-		struct dict_avp_data data = {
-			1472,	/* Code */
-			10415,	/* Vendor */
-			"Specific-APN-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-Info */
-	{
-		struct dict_avp_data data = {
-			1473,	/* Code */
-			10415,	/* Vendor */
-			"LCS-Info",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* GMLC-Number */
-	{
-		struct dict_avp_data data = {
-			1474,	/* Code */
-			10415,	/* Vendor */
-			"GMLC-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* LCS-PrivacyException */
-	{
-		struct dict_avp_data data = {
-			1475,	/* Code */
-			10415,	/* Vendor */
-			"LCS-PrivacyException",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SS-Code */
-	{
-		struct dict_avp_data data = {
-			1476,	/* Code */
-			10415,	/* Vendor */
-			"SS-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SS-Status */
-	{
-		struct dict_avp_data data = {
-			1477,	/* Code */
-			10415,	/* Vendor */
-			"SS-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Notification-To-UE-User */
-	{
-		struct dict_avp_data data = {
-			1478,	/* Code */
-			10415,	/* Vendor */
-			"Notification-To-UE-User",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Notification-To-UE-User)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* External-Client */
-	{
-		struct dict_avp_data data = {
-			1479,	/* Code */
-			10415,	/* Vendor */
-			"External-Client",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Client-Identity */
-	{
-		struct dict_avp_data data = {
-			1480,	/* Code */
-			10415,	/* Vendor */
-			"Client-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* GMLC-Restriction */
-	{
-		struct dict_avp_data data = {
-			1481,	/* Code */
-			10415,	/* Vendor */
-			"GMLC-Restriction",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GMLC-Restriction)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PLMN-Client */
-	{
-		struct dict_avp_data data = {
-			1482,	/* Code */
-			10415,	/* Vendor */
-			"PLMN-Client",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-Client)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Service-Type */
-	{
-		struct dict_avp_data data = {
-			1483,	/* Code */
-			10415,	/* Vendor */
-			"Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ServiceTypeIdentity */
-	{
-		struct dict_avp_data data = {
-			1484,	/* Code */
-			10415,	/* Vendor */
-			"ServiceTypeIdentity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MO-LR */
-	{
-		struct dict_avp_data data = {
-			1485,	/* Code */
-			10415,	/* Vendor */
-			"MO-LR",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Teleservice-List */
-	{
-		struct dict_avp_data data = {
-			1486,	/* Code */
-			10415,	/* Vendor */
-			"Teleservice-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* TS-Code */
-	{
-		struct dict_avp_data data = {
-			1487,	/* Code */
-			10415,	/* Vendor */
-			"TS-Code",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Call-Barring-Infor-List */
-	{
-		struct dict_avp_data data = {
-			1488,	/* Code */
-			10415,	/* Vendor */
-			"Call-Barring-Infor-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SGSN-Number */
-	{
-		struct dict_avp_data data = {
-			1489,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* IDR-Flags */
-	{
-		struct dict_avp_data data = {
-			1490,	/* Code */
-			10415,	/* Vendor */
-			"IDR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* ICS-Indicator */
-	{
-		struct dict_avp_data data = {
-			1491,	/* Code */
-			10415,	/* Vendor */
-			"ICS-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ICS-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* IMS-Voice-Over-PS-Sessions-Supported */
-	{
-		struct dict_avp_data data = {
-			1492,	/* Code */
-			10415,	/* Vendor */
-			"IMS-Voice-Over-PS-Sessions-Supported",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Voice-Over-PS-Sessions-Supported)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions */
-	{
-		struct dict_avp_data data = {
-			1493,	/* Code */
-			10415,	/* Vendor */
-			"Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Last-UE-Activity-Time */
-	{
-		struct dict_avp_data data = {
-			1494,	/* Code */
-			10415,	/* Vendor */
-			"Last-UE-Activity-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* EPS-User-State */
-	{
-		struct dict_avp_data data = {
-			1495,	/* Code */
-			10415,	/* Vendor */
-			"EPS-User-State",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* EPS-Location-Information */
-	{
-		struct dict_avp_data data = {
-			1496,	/* Code */
-			10415,	/* Vendor */
-			"EPS-Location-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MME-User-State */
-	{
-		struct dict_avp_data data = {
-			1497,	/* Code */
-			10415,	/* Vendor */
-			"MME-User-State",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SGSN-User-State */
-	{
-		struct dict_avp_data data = {
-			1498,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-User-State",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* User-State */
-	{
-		struct dict_avp_data data = {
-			1499,	/* Code */
-			10415,	/* Vendor */
-			"User-State",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-State)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MME-LocationInformation */
-	{
-		struct dict_avp_data data = {
-			1600,	/* Code */
-			10415,	/* Vendor */
-			"MME-LocationInformation",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SGSN-Location-Information */
-	{
-		struct dict_avp_data data = {
-			1601,	/* Code */
-			10415,	/* Vendor */
-			"SGSN-Location-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* E-UTRAN-Cell-Global-Identity */
-	{
-		struct dict_avp_data data = {
-			1602,	/* Code */
-			10415,	/* Vendor */
-			"E-UTRAN-Cell-Global-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Tracking-Area-Identity */
-	{
-		struct dict_avp_data data = {
-			1603,	/* Code */
-			10415,	/* Vendor */
-			"Tracking-Area-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Cell-Global-Identity */
-	{
-		struct dict_avp_data data = {
-			1604,	/* Code */
-			10415,	/* Vendor */
-			"Cell-Global-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Routing-Area-Identity */
-	{
-		struct dict_avp_data data = {
-			1605,	/* Code */
-			10415,	/* Vendor */
-			"Routing-Area-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Location-Area-Identity */
-	{
-		struct dict_avp_data data = {
-			1606,	/* Code */
-			10415,	/* Vendor */
-			"Location-Area-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Area-Identity */
-	{
-		struct dict_avp_data data = {
-			1607,	/* Code */
-			10415,	/* Vendor */
-			"Service-Area-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Geographical-Information */
-	{
-		struct dict_avp_data data = {
-			1608,	/* Code */
-			10415,	/* Vendor */
-			"Geographical-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Geodetic-Information */
-	{
-		struct dict_avp_data data = {
-			1609,	/* Code */
-			10415,	/* Vendor */
-			"Geodetic-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Current-Location-Retrieved */
-	{
-		struct dict_avp_data data = {
-			1610,	/* Code */
-			10415,	/* Vendor */
-			"Current-Location-Retrieved",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location-Retrieved)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Age-Of-Location-Information */
-	{
-		struct dict_avp_data data = {
-			1611,	/* Code */
-			10415,	/* Vendor */
-			"Age-Of-Location-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Active-APN */
-	{
-		struct dict_avp_data data = {
-			1612,	/* Code */
-			10415,	/* Vendor */
-			"Active-APN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Error-Diagnostic */
-	{
-		struct dict_avp_data data = {
-			1614,	/* Code */
-			10415,	/* Vendor */
-			"Error-Diagnostic",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Error-Diagnostic)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Ext-PDP-Address */
-	{
-		struct dict_avp_data data = {
-			1621,	/* Code */
-			10415,	/* Vendor */
-			"Ext-PDP-Address",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Address_type, NULL);
-	};
-
-	/* UE-SRVCC-Capability */
-	{
-		struct dict_avp_data data = {
-			1615,	/* Code */
-			10415,	/* Vendor */
-			"UE-SRVCC-Capability",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-SRVCC-Capability)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MPS-Priority */
-	{
-		struct dict_avp_data data = {
-			1616,	/* Code */
-			10415,	/* Vendor */
-			"MPS-Priority",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* VPLMN-LIPA-Allowed */
-	{
-		struct dict_avp_data data = {
-			1617,	/* Code */
-			10415,	/* Vendor */
-			"VPLMN-LIPA-Allowed",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-LIPA-Allowed)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* LIPA-Permission */
-	{
-		struct dict_avp_data data = {
-			1618,	/* Code */
-			10415,	/* Vendor */
-			"LIPA-Permission",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LIPA-Permission)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Subscribed-Periodic-RAU-TAU-Timer */
-	{
-		struct dict_avp_data data = {
-			1619,	/* Code */
-			10415,	/* Vendor */
-			"Subscribed-Periodic-RAU-TAU-Timer",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Ext-PDP-Type */
-	{
-		struct dict_avp_data data = {
-			1620,	/* Code */
-			10415,	/* Vendor */
-			"Ext-PDP-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SIPTO-Permission */
-	{
-		struct dict_avp_data data = {
-			1613,	/* Code */
-			10415,	/* Vendor */
-			"SIPTO-Permission",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIPTO-Permission)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MDT-Configuration */
-	{
-		struct dict_avp_data data = {
-			1622,	/* Code */
-			10415,	/* Vendor */
-			"MDT-Configuration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Job-Type */
-	{
-		struct dict_avp_data data = {
-			1623,	/* Code */
-			10415,	/* Vendor */
-			"Job-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Job-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Area-Scope */
-	{
-		struct dict_avp_data data = {
-			1624,	/* Code */
-			10415,	/* Vendor */
-			"Area-Scope",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* List-Of-Measurements */
-	{
-		struct dict_avp_data data = {
-			1625,	/* Code */
-			10415,	/* Vendor */
-			"List-Of-Measurements",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Reporting-Trigger */
-	{
-		struct dict_avp_data data = {
-			1626,	/* Code */
-			10415,	/* Vendor */
-			"Reporting-Trigger",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Report-Interval */
-	{
-		struct dict_avp_data data = {
-			1627,	/* Code */
-			10415,	/* Vendor */
-			"Report-Interval",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Interval)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Report-Amount */
-	{
-		struct dict_avp_data data = {
-			1628,	/* Code */
-			10415,	/* Vendor */
-			"Report-Amount",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Amount)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Event-Threshold-RSRP */
-	{
-		struct dict_avp_data data = {
-			1629,	/* Code */
-			10415,	/* Vendor */
-			"Event-Threshold-RSRP",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Event-Threshold-RSRQ */
-	{
-		struct dict_avp_data data = {
-			1630,	/* Code */
-			10415,	/* Vendor */
-			"Event-Threshold-RSRQ",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Logging-Interval */
-	{
-		struct dict_avp_data data = {
-			1631,	/* Code */
-			10415,	/* Vendor */
-			"Logging-Interval",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Interval)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Logging-Duration */
-	{
-		struct dict_avp_data data = {
-			1632,	/* Code */
-			10415,	/* Vendor */
-			"Logging-Duration",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Duration)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Relay-Node-Indicator */
-	{
-		struct dict_avp_data data = {
-			1633,	/* Code */
-			10415,	/* Vendor */
-			"Relay-Node-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relay-Node-Indicator)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* MDT-User-Consent */
-	{
-		struct dict_avp_data data = {
-			1634,	/* Code */
-			10415,	/* Vendor */
-			"MDT-User-Consent",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MDT-User-Consent)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* PUR-Flags */
-	{
-		struct dict_avp_data data = {
-			1635,	/* Code */
-			10415,	/* Vendor */
-			"PUR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Subscribed-VSRVCC */
-	{
-		struct dict_avp_data data = {
-			1636,	/* Code */
-			10415,	/* Vendor */
-			"Subscribed-VSRVCC",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscribed-VSRVCC)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Equivalent-PLMN-List */
-	{
-		struct dict_avp_data data = {
-			1637,	/* Code */
-			10415,	/* Vendor */
-			"Equivalent-PLMN-List",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* CLR-Flags */
-	{
-		struct dict_avp_data data = {
-			1638,	/* Code */
-			10415,	/* Vendor */
-			"CLR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UVR-Flags */
-	{
-		struct dict_avp_data data = {
-			1639,	/* Code */
-			10415,	/* Vendor */
-			"UVR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UVA-Flags */
-	{
-		struct dict_avp_data data = {
-			1640,	/* Code */
-			10415,	/* Vendor */
-			"UVA-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* VPLMN-CSG-Subscription-Data */
-	{
-		struct dict_avp_data data = {
-			1641,	/* Code */
-			10415,	/* Vendor */
-			"VPLMN-CSG-Subscription-Data",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Time-Zone */
-	{
-		struct dict_avp_data data = {
-			1642,	/* Code */
-			10415,	/* Vendor */
-			"Time-Zone",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* A-MSISDN */
-	{
-		struct dict_avp_data data = {
-			1643,	/* Code */
-			10415,	/* Vendor */
-			"A-MSISDN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MME-Number-for-MT-SMS */
-	{
-		struct dict_avp_data data = {
-			1645,	/* Code */
-			10415,	/* Vendor */
-			"MME-Number-for-MT-SMS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SMS-Register-Request */
-	{
-		struct dict_avp_data data = {
-			1648,	/* Code */
-			10415,	/* Vendor */
-			"SMS-Register-Request",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Register-Request)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Local-Time-Zone */
-	{
-		struct dict_avp_data data = {
-			1649,	/* Code */
-			10415,	/* Vendor */
-			"Local-Time-Zone",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Daylight-Saving-Time */
-	{
-		struct dict_avp_data data = {
-			1650,	/* Code */
-			10415,	/* Vendor */
-			"Daylight-Saving-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Daylight-Saving-Time)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Subscription-Data-Flags */
-	{
-		struct dict_avp_data data = {
-			1654,	/* Code */
-			10415,	/* Vendor */
-			"Subscription-Data-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Measurement-Period-UMTS */
-	{
-		struct dict_avp_data data = {
-			1655,	/* Code */
-			10415,	/* Vendor */
-			"Measurement-Period-UMTS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-UMTS)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Measurement-Period-LTE */
-	{
-		struct dict_avp_data data = {
-			1656,	/* Code */
-			10415,	/* Vendor */
-			"Measurement-Period-LTE",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-LTE)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Collection-Period-RRM-LTE */
-	{
-		struct dict_avp_data data = {
-			1657,	/* Code */
-			10415,	/* Vendor */
-			"Collection-Period-RRM-LTE",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-LTE)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Collection-Period-RRM-UMTS */
-	{
-		struct dict_avp_data data = {
-			1658,	/* Code */
-			10415,	/* Vendor */
-			"Collection-Period-RRM-UMTS",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-UMTS)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Positioning-Method */
-	{
-		struct dict_avp_data data = {
-			1659,	/* Code */
-			10415,	/* Vendor */
-			"Positioning-Method",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Measurement-Quantity */
-	{
-		struct dict_avp_data data = {
-			1660,	/* Code */
-			10415,	/* Vendor */
-			"Measurement-Quantity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Event-Threshold-Event-1F */
-	{
-		struct dict_avp_data data = {
-			1661,	/* Code */
-			10415,	/* Vendor */
-			"Event-Threshold-Event-1F",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Event-Threshold-Event-1I */
-	{
-		struct dict_avp_data data = {
-			1662,	/* Code */
-			10415,	/* Vendor */
-			"Event-Threshold-Event-1I",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* 3GPP 29.329-b50 (11.5.0 2012.12.21)                          */
-	/* User-Identity */
-	{
-		struct dict_avp_data data = {
-			700,	/* Code */
-			10415,	/* Vendor */
-			"User-Identity",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* MSISDN */
-	{
-		struct dict_avp_data data = {
-			701,	/* Code */
-			10415,	/* Vendor */
-			"MSISDN",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Name conflict with 29.229 User-Data (606), renamed           */
-	/* User-Data-29.329 */
-	{
-		struct dict_avp_data data = {
-			702,	/* Code */
-			10415,	/* Vendor */
-			"User-Data-29.329",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Data-Reference */
-	{
-		struct dict_avp_data data = {
-			703,	/* Code */
-			10415,	/* Vendor */
-			"Data-Reference",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Data-Reference)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Service-Indication */
-	{
-		struct dict_avp_data data = {
-			704,	/* Code */
-			10415,	/* Vendor */
-			"Service-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Subs-Req-Type */
-	{
-		struct dict_avp_data data = {
-			705,	/* Code */
-			10415,	/* Vendor */
-			"Subs-Req-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subs-Req-Type)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Requested-Domain */
-	{
-		struct dict_avp_data data = {
-			706,	/* Code */
-			10415,	/* Vendor */
-			"Requested-Domain",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Requested-Domain)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Current-Location */
-	{
-		struct dict_avp_data data = {
-			707,	/* Code */
-			10415,	/* Vendor */
-			"Current-Location",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Identity-Set */
-	{
-		struct dict_avp_data data = {
-			708,	/* Code */
-			10415,	/* Vendor */
-			"Identity-Set",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Identity-Set)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Expiry-Time */
-	{
-		struct dict_avp_data data = {
-			709,	/* Code */
-			10415,	/* Vendor */
-			"Expiry-Time",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* Send-Data-Indication */
-	{
-		struct dict_avp_data data = {
-			710,	/* Code */
-			10415,	/* Vendor */
-			"Send-Data-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Send-Data-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* in 29.229                                                    */
-	/* Server-Name                                                  */
-	/* Supported-Features                                           */
-	/* Feature-List-ID                                              */
-	/* Feature-List                                                 */
-	/* Supported-Applications                                       */
-	/* Public-Identity                                              */
-	/* DSAI-Tag */
-	{
-		struct dict_avp_data data = {
-			711,	/* Code */
-			10415,	/* Vendor */
-			"DSAI-Tag",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* in 29.229                                                    */
-	/* Wildcarded-Public-Identity                                   */
-	/* Wildcarded-IMPU */
-	{
-		struct dict_avp_data data = {
-			636,	/* Code */
-			10415,	/* Vendor */
-			"Wildcarded-IMPU",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* in 29.229                                                    */
-	/* Session-Priority                                             */
-	/* One-Time-Notification */
-	{
-		struct dict_avp_data data = {
-			712,	/* Code */
-			10415,	/* Vendor */
-			"One-Time-Notification",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/One-Time-Notification)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Requested-Nodes */
-	{
-		struct dict_avp_data data = {
-			713,	/* Code */
-			10415,	/* Vendor */
-			"Requested-Nodes",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Serving-Node-Indication */
-	{
-		struct dict_avp_data data = {
-			714,	/* Code */
-			10415,	/* Vendor */
-			"Serving-Node-Indication",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Indication)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* Repository-Data-ID */
-	{
-		struct dict_avp_data data = {
-			715,	/* Code */
-			10415,	/* Vendor */
-			"Repository-Data-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Sequence-Number */
-	{
-		struct dict_avp_data data = {
-			716,	/* Code */
-			10415,	/* Vendor */
-			"Sequence-Number",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* UDR-Flags */
-	{
-		struct dict_avp_data data = {
-			719,	/* Code */
-			10415,	/* Vendor */
-			"UDR-Flags",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* OMA DDS Charging_Data V1.0 20110201-A                        */
-	/* Application-Server-Id */
-	{
-		struct dict_avp_data data = {
-			2101,	/* Code */
-			10415,	/* Vendor */
-			"Application-Server-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Application-Service-Type */
-	{
-		struct dict_avp_data data = {
-			2102,	/* Code */
-			10415,	/* Vendor */
-			"Application-Service-Type",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Application-Session-Id */
-	{
-		struct dict_avp_data data = {
-			2103,	/* Code */
-			10415,	/* Vendor */
-			"Application-Session-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Content-ID */
-	{
-		struct dict_avp_data data = {
-			2116,	/* Code */
-			10415,	/* Vendor */
-			"Content-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* Content-provider-ID */
-	{
-		struct dict_avp_data data = {
-			2117,	/* Code */
-			10415,	/* Vendor */
-			"Content-provider-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* DCD-Information */
-	{
-		struct dict_avp_data data = {
-			2115,	/* Code */
-			10415,	/* Vendor */
-			"DCD-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Delivery-Status */
-	{
-		struct dict_avp_data data = {
-			2104,	/* Code */
-			10415,	/* Vendor */
-			"Delivery-Status",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* IM-Information */
-	{
-		struct dict_avp_data data = {
-			2110,	/* Code */
-			10415,	/* Vendor */
-			"IM-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Messages-Successfully-Exploded */
-	{
-		struct dict_avp_data data = {
-			2111,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Messages-Successfully-Exploded",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Number-Of-Messages-Successfully-Sent */
-	{
-		struct dict_avp_data data = {
-			2112,	/* Code */
-			10415,	/* Vendor */
-			"Number-Of-Messages-Successfully-Sent",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Service-Generic-Information */
-	{
-		struct dict_avp_data data = {
-			1256,	/* Code */
-			10415,	/* Vendor */
-			"Service-Generic-Information",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Total-Number-Of-Messages-Exploded */
-	{
-		struct dict_avp_data data = {
-			2113,	/* Code */
-			10415,	/* Vendor */
-			"Total-Number-Of-Messages-Exploded",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* Total-Number-Of-Messages-Sent */
-	{
-		struct dict_avp_data data = {
-			2114,	/* Code */
-			10415,	/* Vendor */
-			"Total-Number-Of-Messages-Sent",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
+	/*==================================================================*/
+	/* AVPs section                                                     */
+	/*==================================================================*/
 
 
-
-
-
-	/*****************************************************/
-	/* end of generated data, rules below added manually */
-	/*****************************************************/
-
-
-	
-	/* 3GPP2-BSID */
+	/* 3GPP Experimental-Result-Code ENUMVAL Unsigned32                 */
+	/* 3GPP TS 29.230 V15.7.0 (2019-12) section 8.1                     */
 	{
-		struct dict_avp_data data = {
-			9010,	/* Code */
-			5535,	/* Vendor */
-			"3GPP2-BSID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */ /* XXX: guessed */
+		struct dict_object 	*type;
+		struct dict_type_data 	 tdata = { AVP_TYPE_UNSIGNED32,	"Enumerated(3GPP/Experimental-Result-Code)", NULL, NULL};
+		struct dict_enumval_data tvals[] = {
+			enumval_def_u32(2001,	"DIAMETER_FIRST_REGISTRATION"),
+			enumval_def_u32(2002,	"DIAMETER_SUBSEQUENT_REGISTRATION"),
+			enumval_def_u32(2003,	"DIAMETER_UNREGISTERED_SERVICE"),
+			/*
+			 * 3GPP TS 29.229 V5.3.0 (2003-03) renamed 2004 from DIAMETER_SUCCESS_NOT SUPPORTED_USER_DATA.
+			 */
+			enumval_def_u32(2004,	"DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED"),
+			/*
+			 * 3GPP TS 29.229 V5.3.0 (2003-03) renamed 2005 from DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED.
+			 * 3GPP TS 29.229 V7.2.0 (2006-06) deprecated 2005 DIAMETER_SERVER_SELECTION.
+			 */
+			enumval_def_u32(2005,	"DIAMETER_SERVER_SELECTION"),
+			enumval_def_u32(2021,	"DIAMETER_PDP_CONTEXT_DELETION_INDICATION"),
+			enumval_def_u32(2421,	"DIAMETER_QOS_FLOW_DELETION_INDICATION"),
+			enumval_def_u32(4100,	"DIAMETER_USER_DATA_NOT_AVAILABLE"),
+			enumval_def_u32(4101,	"DIAMETER_PRIOR_UPDATE_IN_PROGRESS"),
+			enumval_def_u32(4121,	"DIAMETER_ERROR_OUT_OF_RESOURCES"),
+			enumval_def_u32(4141,	"DIAMETER_PCC_BEARER_EVENT"),
+			enumval_def_u32(4142,	"DIAMETER_BEARER_EVENT"),
+			enumval_def_u32(4143,	"DIAMETER_AN_GW_FAILED"),
+			enumval_def_u32(4144,	"DIAMETER_PENDING_TRANSACTION"),
+			enumval_def_u32(4145,	"DIAMETER_UE_STATUS_SUSPEND"),
+			enumval_def_u32(4181,	"DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE"),
+			enumval_def_u32(4182,	"DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT"),
+			/*
+			 * DIAMETER_ERROR_ABSENT_USER name conflict between:
+			 * - 3GPP TS 29.173 § 6.3.4.1 DIAMETER_ERROR_ABSENT_USER (4201). (For SLh).
+			 * - 3GPP TS 29.338 § 7.3.3 DIAMETER_ERROR_ABSENT_USER (5550). (For S6c, SGd).
+			 * Rename 4201 from 3GPP TS 29.173 to DIAMETER_ERROR_ABSENT_USER-29.173.
+			 */
+			enumval_def_u32(4201,	"DIAMETER_ERROR_ABSENT_USER-29.173"),
+			enumval_def_u32(4221,	"DIAMETER_ERROR_UNREACHABLE_USER"),
+			enumval_def_u32(4222,	"DIAMETER_ERROR_SUSPENDED_USER"),
+			enumval_def_u32(4223,	"DIAMETER_ERROR_DETACHED_USER"),
+			enumval_def_u32(4224,	"DIAMETER_ERROR_POSITIONING_DENIED"),
+			enumval_def_u32(4225,	"DIAMETER_ERROR_POSITIONING_FAILED"),
+			enumval_def_u32(4226,	"DIAMETER_ERROR_UNKNOWN_UNREACHABLE LCS_CLIENT"),
+			enumval_def_u32(4241,	"DIAMETER_ERROR_NO_AVAILABLE_POLICY_COUNTERS"),
+			enumval_def_u32(4261,	"REQUESTED_SERVICE_TEMPORARILY_NOT_AUTHORIZED"),
+			enumval_def_u32(5001,	"DIAMETER_ERROR_USER_UNKNOWN"),
+			enumval_def_u32(5002,	"DIAMETER_ERROR_IDENTITIES_DONT_MATCH"),
+			enumval_def_u32(5003,	"DIAMETER_ERROR_IDENTITY_NOT_REGISTERED"),
+			enumval_def_u32(5004,	"DIAMETER_ERROR_ROAMING_NOT_ALLOWED"),
+			enumval_def_u32(5005,	"DIAMETER_ERROR_IDENTITY_ALREADY_REGISTERED"),
+			enumval_def_u32(5006,	"DIAMETER_ERROR_AUTH_SCHEME_NOT_SUPPORTED"),
+			enumval_def_u32(5007,	"DIAMETER_ERROR_IN_ASSIGNMENT_TYPE"),
+			enumval_def_u32(5008,	"DIAMETER_ERROR_TOO_MUCH_DATA"),
+			enumval_def_u32(5009,	"DIAMETER_ERROR_NOT_SUPPORTED_USER_DATA"),
+			enumval_def_u32(5011,	"DIAMETER_ERROR_FEATURE_UNSUPPORTED"),
+			enumval_def_u32(5012,	"DIAMETER_ERROR_SERVING_NODE_FEATURE_UNSUPPORTED"),
+			enumval_def_u32(5041,	"DIAMETER_ERROR_USER_NO_WLAN_SUBSCRIPTION"),
+			enumval_def_u32(5042,	"DIAMETER_ERROR_W-APN_UNUSED_BY_USER"),
+			enumval_def_u32(5043,	"DIAMETER_ERROR_NO_ACCESS_INDEPENDENT_SUBSCRIPTION"),
+			enumval_def_u32(5044,	"DIAMETER_ERROR_USER_NO_W-APN_SUBSCRIPTION"),
+			enumval_def_u32(5045,	"DIAMETER_ERROR_UNSUITABLE_NETWORK"),
+			enumval_def_u32(5061,	"INVALID_SERVICE_INFORMATION"),
+			enumval_def_u32(5062,	"FILTER_RESTRICTIONS"),
+			enumval_def_u32(5063,	"REQUESTED_SERVICE_NOT_AUTHORIZED"),
+			enumval_def_u32(5064,	"DUPLICATED_AF_SESSION"),
+			enumval_def_u32(5065,	"IP-CAN_SESSION_NOT_AVAILABLE"),
+			enumval_def_u32(5066,	"UNAUTHORIZED_NON_EMERGENCY_SESSION"),
+			enumval_def_u32(5067,	"UNAUTHORIZED_SPONSORED_DATA_CONNECTIVITY"),
+			enumval_def_u32(5068,	"TEMPORARY_NETWORK_FAILURE"),
+			enumval_def_u32(5100,	"DIAMETER_ERROR_USER_DATA_NOT_RECOGNIZED"),
+			enumval_def_u32(5101,	"DIAMETER_ERROR_OPERATION_NOT_ALLOWED"),
+			enumval_def_u32(5102,	"DIAMETER_ERROR_USER_DATA_CANNOT_BE_READ"),
+			enumval_def_u32(5103,	"DIAMETER_ERROR_USER_DATA_CANNOT_BE_MODIFIED"),
+			enumval_def_u32(5104,	"DIAMETER_ERROR_USER_DATA_CANNOT_BE_NOTIFIED"),
+			enumval_def_u32(5105,	"DIAMETER_ERROR_TRANSPARENT_DATA OUT_OF_SYNC"),
+			enumval_def_u32(5106,	"DIAMETER_ERROR_SUBS_DATA_ABSENT"),
+			enumval_def_u32(5107,	"DIAMETER_ERROR_NO_SUBSCRIPTION_TO_DATA"),
+			enumval_def_u32(5108,	"DIAMETER_ERROR_DSAI_NOT_AVAILABLE"),
+			enumval_def_u32(5120,	"DIAMETER_ERROR_START_INDICATION"),
+			enumval_def_u32(5121,	"DIAMETER_ERROR_STOP_INDICATION"),
+			enumval_def_u32(5122,	"DIAMETER_ERROR_UNKNOWN_MBMS_BEARER_SERVICE"),
+			enumval_def_u32(5123,	"DIAMETER_ERROR_SERVICE_AREA"),
+			enumval_def_u32(5140,	"DIAMETER_ERROR_INITIAL_PARAMETERS"),
+			enumval_def_u32(5141,	"DIAMETER_ERROR_TRIGGER_EVENT"),
+			enumval_def_u32(5142,	"DIAMETER_PCC_RULE_EVENT"),
+			enumval_def_u32(5143,	"DIAMETER_ERROR_BEARER_NOT_AUTHORIZED"),
+			enumval_def_u32(5144,	"DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED"),
+			enumval_def_u32(5145,	"DIAMETER_QOS_RULE_EVENT"),
+			enumval_def_u32(5147,	"DIAMETER_ERROR_CONFLICTING_REQUEST"),
+			enumval_def_u32(5148,	"DIAMETER_ADC_RULE_EVENT"),
+			enumval_def_u32(5149,	"DIAMETER_ERROR_NBIFOM_NOT_AUTHORIZED"),
+			enumval_def_u32(5401,	"DIAMETER_ERROR_IMPI_UNKNOWN"),
+			enumval_def_u32(5402,	"DIAMETER_ERROR_NOT_AUTHORIZED"),
+			enumval_def_u32(5403,	"DIAMETER_ERROR_TRANSACTION_IDENTIFIER_INVALID"),
+			enumval_def_u32(5420,	"DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION"),
+			enumval_def_u32(5421,	"DIAMETER_ERROR_RAT_NOT_ALLOWED"),
+			enumval_def_u32(5422,	"DIAMETER_ERROR_EQUIPMENT_UNKNOWN"),
+			enumval_def_u32(5423,	"DIAMETER_ERROR_UNKNOWN_SERVING_NODE"),
+			enumval_def_u32(5450,	"DIAMETER_ERROR_USER_NO_NON_3GPP_SUBSCRIPTION"),
+			enumval_def_u32(5451,	"DIAMETER_ERROR_USER_NO_APN_SUBSCRIPTION"),
+			enumval_def_u32(5452,	"DIAMETER_ERROR_RAT_TYPE_NOT_ALLOWED"),
+			enumval_def_u32(5453,	"DIAMETER_ERROR_LATE_OVERLAPPING_REQUEST"),
+			enumval_def_u32(5454,	"DIAMETER_ERROR_TIMED_OUT_REQUEST"),
+			enumval_def_u32(5470,	"DIAMETER_ERROR_SUBSESSION"),
+			enumval_def_u32(5471,	"DIAMETER_ERROR_ONGOING_SESSION_ESTABLISHMENT"),
+			enumval_def_u32(5490,	"DIAMETER_ERROR_UNAUTHORIZED_REQUESTING_NETWORK"),
+			enumval_def_u32(5510,	"DIAMETER_ERROR_UNAUTHORIZED_REQUESTING_ENTITY"),
+			enumval_def_u32(5511,	"DIAMETER_ERROR_UNAUTHORIZED_SERVICE"),
+			enumval_def_u32(5512,	"DIAMETER_ERROR_REQUESTED_RANGE_IS_NOT ALLOWED"),
+			enumval_def_u32(5513,	"DIAMETER_ERROR_CONFIGURATION_EVENT_STORAGE_NOT_SUCCESSFUL"),
+			enumval_def_u32(5514,	"DIAMETER_ERROR_CONFIGURATION_EVENT_NON_EXISTANT"),
+			enumval_def_u32(5515,	"DIAMETER_ERROR_SCEF_REFERENCE_ID_UNKNOWN"),
+			enumval_def_u32(5530,	"DIAMETER_ERROR_INVALID_SME_ADDRESS"),
+			enumval_def_u32(5531,	"DIAMETER_ERROR_SC_CONGESTION"),
+			enumval_def_u32(5532,	"DIAMETER_ERROR_SM_PROTOCOL"),
+			enumval_def_u32(5533,	"DIAMETER_ERROR_TRIGGER_REPLACE_FAILURE"),
+			enumval_def_u32(5534,	"DIAMETER_ERROR_TRIGGER_RECALL_FAILURE"),
+			enumval_def_u32(5535,	"DIAMETER_ERROR_ORIGINAL_MESSAGE_NOT_PENDING"),
+			enumval_def_u32(5550,	"DIAMETER_ERROR_ABSENT_USER"),
+			enumval_def_u32(5551,	"DIAMETER_ERROR_USER_BUSY_FOR_MT_SMS"),
+			enumval_def_u32(5552,	"DIAMETER_ERROR_FACILITY_NOT_SUPPORTED"),
+			enumval_def_u32(5553,	"DIAMETER_ERROR_ILLEGAL_USER"),
+			enumval_def_u32(5554,	"DIAMETER_ERROR_ILLEGAL_EQUIPMENT"),
+			enumval_def_u32(5555,	"DIAMETER_ERROR_SM_DELIVERY_FAILURE"),
+			enumval_def_u32(5556,	"DIAMETER_ERROR_SERVICE_NOT_SUBSCRIBED"),
+			enumval_def_u32(5557,	"DIAMETER_ERROR_SERVICE_BARRED"),
+			enumval_def_u32(5558,	"DIAMETER_ERROR_MWD_LIST_FULL"),
+			enumval_def_u32(5570,	"DIAMETER_ERROR_UNKNOWN_POLICY_COUNTERS"),
+			enumval_def_u32(5590,	"DIAMETER_ERROR_ORIGIN_ALUID_UNKNOWN"),
+			enumval_def_u32(5591,	"DIAMETER_ERROR_TARGET_ALUID_UNKNOWN"),
+			enumval_def_u32(5592,	"DIAMETER_ERROR_PFID_UNKNOWN"),
+			enumval_def_u32(5593,	"DIAMETER_ERROR_APP_REGISTER_REJECT"),
+			enumval_def_u32(5594,	"DIAMETER_ERROR_PROSE_MAP_REQUEST_DISALLOWED"),
+			enumval_def_u32(5595,	"DIAMETER_ERROR_MAP_REQUEST_REJECT"),
+			enumval_def_u32(5596,	"DIAMETER_ERROR_REQUESTING_RPAUID_UNKNOWN"),
+			enumval_def_u32(5597,	"DIAMETER_ERROR_UNKNOWN_OR_INVALID_TARGET_SET"),
+			enumval_def_u32(5598,	"DIAMETER_ERROR_MISSING_APPLICATION_DATA"),
+			enumval_def_u32(5599,	"DIAMETER_ERROR_AUTHORIZATION_REJECT"),
+			enumval_def_u32(5600,	"DIAMETER_ERROR_DISCOVERY_NOT_PERMITTED"),
+			enumval_def_u32(5601,	"DIAMETER_ERROR_TARGET_RPAUID_UNKNOWN"),
+			enumval_def_u32(5602,	"DIAMETER_ERROR_INVALID_APPLICATION_DATA"),
+			enumval_def_u32(5610,	"DIAMETER_ERROR_UNKNOWN_PROSE_SUBSCRIPTION"),
+			enumval_def_u32(5611,	"DIAMETER_ERROR_PROSE_NOT_ALLOWED"),
+			enumval_def_u32(5612,	"DIAMETER_ERROR_UE_LOCATION_UNKNOWN"),
+			enumval_def_u32(5630,	"DIAMETER_ERROR_NO_ASSOCIATED_DISCOVERY_FILTER"),
+			enumval_def_u32(5631,	"DIAMETER_ERROR_ANNOUNCING_UNAUTHORIZED_IN_PLMN"),
+			enumval_def_u32(5632,	"DIAMETER_ERROR_INVALID_APPLICATION_CODE"),
+			enumval_def_u32(5633,	"DIAMETER_ERROR_PROXIMITY_UNAUTHORIZED"),
+			enumval_def_u32(5634,	"DIAMETER_ERROR_PROXIMITY_REJECTED"),
+			enumval_def_u32(5635,	"DIAMETER_ERROR_NO_PROXIMITY_REQUEST"),
+			enumval_def_u32(5636,	"DIAMETER_ERROR_UNAUTHORIZED_SERVICE_IN_THIS_PLMN"),
+			enumval_def_u32(5637,	"DIAMETER_ERROR_PROXIMITY_CANCELLED"),
+			enumval_def_u32(5638,	"DIAMETER_ERROR_INVALID_TARGET_PDUID"),
+			enumval_def_u32(5639,	"DIAMETER_ERROR_INVALID_TARGET_RPAUID"),
+			enumval_def_u32(5640,	"DIAMETER_ERROR_NO_ASSOCIATED_RESTRICTED_CODE"),
+			enumval_def_u32(5641,	"DIAMETER_ERROR_INVALID_DISCOVERY_TYPE"),
+			enumval_def_u32(5650,	"DIAMETER_ERROR_REQUESTED_LOCATION_NOT_SERVED"),
+			enumval_def_u32(5651,	"DIAMETER_ERROR_INVALID_EPS_BEARER"),
+			enumval_def_u32(5652,	"DIAMETER_ERROR_NIDD_CONFIGURATION_NOT_AVAILABLE"),
+			enumval_def_u32(5653,	"DIAMETER_ERROR_USER_TEMPORARILY_UNREACHABLE"),
+			enumval_def_u32(5670,	"DIAMETER_ERROR_UNKNKOWN_DATA"),
+			enumval_def_u32(5671,	"DIAMETER_ERROR_REQUIRED_KEY_NOT_PROVIDED"),
+			enumval_def_u32(5690,	"DIAMETER_ERROR_UNKNOWN_V2X_SUBSCRIPTION"),
+			enumval_def_u32(5691,	"DIAMETER_ERROR_V2X_NOT_ALLOWED"),
 		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
+		int i;
+		/* Create the Enumerated type and enumerated values */
+		CHECK_dict_new( DICT_TYPE, &tdata , NULL, &type);
+		for (i = 0; i < sizeof(tvals) / sizeof(tvals[0]); i++) {
+			CHECK_dict_new( DICT_ENUMVAL, &tvals[i], type, NULL);
+		}
+	}
 
-	/* 29.212 */
+	/*==================================================================*/
+	/* Create AVPs via generated add_avps()                             */
+	/*==================================================================*/
+
+	extern int add_avps();
+	CHECK_FCT( add_avps() );
+
+	/*==================================================================*/
+	/* Rules section                                                    */
+	/*==================================================================*/
+
+	/*==================================================================*/
+	/* 3GPP TS 29.212 V15.9.0 (2019-12)                                 */
+	/*==================================================================*/
 	
 	{
 		struct dict_object *rule_avp;
@@ -10276,9 +365,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Priority-Level" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Pre-emption-Capability" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Pre-emption-Vulnerability" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Priority-Level",		RULE_REQUIRED, -1, 1 },
+				{ 10415, "Pre-emption-Capability",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Pre-emption-Vulnerability",	RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10291,20 +380,29 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "QoS-Class-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-UL" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-DL" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Bearer-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Allocation-Retention-Priority" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "QoS-Class-Identifier",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Max-Requested-Bandwidth-UL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Max-Requested-Bandwidth-DL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-Max-Requested-BW-UL",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-Max-Requested-BW-DL",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Guaranteed-Bitrate-UL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Guaranteed-Bitrate-DL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-GBR-UL",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-GBR-DL",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Bearer-Identifier",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Allocation-Retention-Priority",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "APN-Aggregate-Max-Bitrate-UL",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "APN-Aggregate-Max-Bitrate-DL",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-APN-AMBR-UL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Extended-APN-AMBR-DL",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Conditional-APN-Aggregate-Max-Bitrate",	RULE_OPTIONAL, -1, -1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
 
-	/* 32.299 */
+	/*==================================================================*/
+	/* 3GPP TS 32.299 V15.7.0 (2019-06)                                 */
+	/*==================================================================*/
 
 	{
 		/* additional allowed AVPs */
@@ -10312,8 +410,8 @@
 		CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Request", &ccr);
 		struct local_rules_definition rules[] = 
 			{
-				{ { .avp_vendor = 10415, .avp_name = "AoC-Request-Type"}, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "AoC-Request-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Information",		RULE_OPTIONAL, -1, 1 },
 			};
 		PARSE_loc_rules(rules, ccr);
         }
@@ -10324,9 +422,9 @@
 		CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Answer", &ccr);
 		struct local_rules_definition rules[] = 
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Low-Balance-Indication"}, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Remaining-Balance"}, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Low-Balance-Indication",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Remaining-Balance",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Information",		RULE_OPTIONAL, -1, 1 },
 			};
 		PARSE_loc_rules(rules, ccr);
         }
@@ -10339,8 +437,8 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Domain-Name" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Domain-Name",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-IMSI-MCC-MNC",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10353,8 +451,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Application-Server" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Application-Provided-Called-Party-Address" }, RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Application-Server",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Provided-Called-Party-Address",	RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Status-AS-Code",				RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10367,10 +466,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Id",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Text",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Port",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Type",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10383,12 +482,12 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Envelope-Start-Time" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Envelope-End-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "CC-Total-Octets" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "CC-Input-Octets" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "CC-Output-Octets" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "CC-Service-Specific-Units" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Envelope-Start-Time",		RULE_REQUIRED, -1, 1 },
+				{ 10415, "Envelope-End-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 0,     "CC-Total-Octets",		RULE_REQUIRED, -1, 1 },
+				{ 0,     "CC-Input-Octets",		RULE_OPTIONAL, -1, 1 },
+				{ 0,     "CC-Output-Octets",		RULE_OPTIONAL, -1, 1 },
+				{ 0,     "CC-Service-Specific-Units",	RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10401,9 +500,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "SIP-Method" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Event" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Expires" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SIP-Method",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Event",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Expires",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10416,47 +515,58 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Event-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Role-Of-Node" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Node-Functionality" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "User-Session-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Outgoing-Session-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Session-Priority" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Calling-Party-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Called-Party-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Called-Asserted-Identity" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Number-Portability-Routing-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Carrier-Select-Routing-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Alternate-Charged-Party-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Requested-Party-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Associated-URI" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Time-Stamps" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Application-Server-Information" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Inter-Operator-Identifier" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Transit-IOI-List" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SDP-Session-Description" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "SDP-Media-Component" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Served-Party-IP-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Server-Capabilities" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Trunk-Group-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Bearer-Service" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Message-Body" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Cause-Code" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Access-Network-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Early-Media-Description" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMS-Communication-Service-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMS-Application-Reference-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Online-Charging-Flag" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Real-Time-Tariff-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Account-Expiration" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Initial-IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "NNI-Information" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "From-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMS-Emergency-Indicator" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Access-Transfer-Information" }, RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Event-Type",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Role-Of-Node",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Node-Functionality",			RULE_REQUIRED, -1, 1 },
+				{ 10415, "User-Session-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Outgoing-Session-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Session-Priority",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Calling-Party-Address",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Called-Party-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Called-Asserted-Identity",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Number-Portability-Routing-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Carrier-Select-Routing-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Alternate-Charged-Party-Address",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Requested-Party-Address",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Associated-URI",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Time-Stamps",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Server-Information",	RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Inter-Operator-Identifier",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Transit-IOI-List",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMS-Charging-Identifier",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SDP-Session-Description",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "SDP-Media-Component",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Served-Party-IP-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Server-Capabilities",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Trunk-Group-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Bearer-Service",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Id",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Specific-Info",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Message-Body",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Cause-Code",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Reason-Header",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Access-Network-Information",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Cellular-Network-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Early-Media-Description",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "IMS-Communication-Service-Identifier",RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMS-Application-Reference-Identifier",RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Online-Charging-Flag",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Real-Time-Tariff-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Account-Expiration",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Initial-IMS-Charging-Identifier",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "NNI-Information",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "From-Address",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMS-Emergency-Indicator",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMS-Visited-Network-Identifier",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Access-Network-Info-Change",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Access-Transfer-Information",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Related-IMS-Charging-Identifier",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Related-IMS-Charging-Identifier-Node",RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Route-Header-Received",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Route-Header-Transmitted",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Instance-Id",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "TAD-Identifier",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "FE-Identifier-List",			RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10469,8 +579,8 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Class-Identifier" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Token-Text" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Class-Identifier",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Token-Text",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10483,26 +593,26 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Originator-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Submission-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MM-Content-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Priority" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Message-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Message-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Message-Size" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Message-Class" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Delivery-Report-Requested" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Read-Reply-Report-Requested" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MMBox-Storage-Requested" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Applic-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Reply-Applic-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Aux-Applic-Info" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Content-Class" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "DRM-Content" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Adaptations" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "VASP-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "VAS-ID" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Originator-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Recipient-Address",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Submission-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MM-Content-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Priority",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Message-ID",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Message-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Message-Size",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Message-Class",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Delivery-Report-Requested",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Read-Reply-Report-Requested",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MMBox-Storage-Requested",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Applic-ID",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Reply-Applic-ID",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Aux-Applic-Info",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Content-Class",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "DRM-Content",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Adaptations",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "VASP-ID",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "VAS-ID",			RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10517,21 +627,21 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Time-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Volume-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Unit-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Quota-Holding-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Trigger" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Refund-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "AF-Correlation-Information" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Envelope" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Time-Quota-Threshold",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Volume-Quota-Threshold",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Unit-Quota-Threshold",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Quota-Holding-Time",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Quota-Consumption-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Reporting-Reason",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Trigger",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PS-Furnish-Charging-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Refund-Information",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "AF-Correlation-Information",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Envelope",				RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Envelope-Reporting",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Time-Quota-Mechanism",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Specific-Info",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "QoS-Information",			RULE_OPTIONAL, -1, 1 },
 			};
 		PARSE_loc_rules(rules, rule_avp);
         }
@@ -10544,10 +654,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "Multiple-Services-Credit-Control" }, RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Quota-Consumption-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Time-Quota-Mechanism",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Envelope-Reporting",			RULE_OPTIONAL, -1, 1 },
+				{ 0,     "Multiple-Services-Credit-Control",	RULE_OPTIONAL, -1, -1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10560,9 +670,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Data",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Domain",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10575,10 +685,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Id",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Text",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Port",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Interface-Type",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10591,9 +701,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Data",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Domain",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10606,9 +716,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PS-Free-Format-Data" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PS-Append-Free-Format-Data" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-Charging-Id",		RULE_REQUIRED, -1, 1 },
+				{ 10415, "PS-Free-Format-Data",		RULE_REQUIRED, -1, 1 },
+				{ 10415, "PS-Append-Free-Format-Data",	RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10621,52 +731,80 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PDN-Connection-Charging-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Node-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-PDP-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PDP-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "PDP-Address-Prefix-Length" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag-Extension" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SGSN-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "GGSN-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "SGW-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "CG-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Serving-Node-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SGW-Change" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMSI-Unauthenticated-Flag" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-GGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-NSAPI" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 0,     .avp_name = "Called-Station-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Session-Stop-Indicator" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Selection-Mode" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Characteristics" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Charging-Characteristics-Selection-Mode" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-MS-TimeZone" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-User-Location-Info" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "User-CSG-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 5535,  .avp_name = "3GPP2-BSID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-RAT-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PDP-Context-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Offline-Charging" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Traffic-Data-Volumes" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Data-Container" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 0,     .avp_name = "User-Equipment-Info" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Terminal-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Start-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Stop-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Change-Condition" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Diagnostics" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Low-Priority-Indicator" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MME-Number-for-MT-SMS" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MME-Name" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MME-Realm" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Supported-Features",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "3GPP-Charging-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PDN-Connection-Charging-ID",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Node-Id",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-PDP-Type",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PDP-Address",				RULE_OPTIONAL, -1, -1 },
+				{ 10415, "PDP-Address-Prefix-Length",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Dynamic-Address-Flag",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Dynamic-Address-Flag-Extension",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "QoS-Information",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SGSN-Address",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "GGSN-Address",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "TDF-IP-Address",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "SGW-Address",				RULE_OPTIONAL, -1, -1 },
+				{ 10415, "EPDG-Address",			RULE_OPTIONAL, -1, -1 },
+				{ 10415, "CG-Address",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Serving-Node-Type",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SGW-Change",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-IMSI-MCC-MNC",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMSI-Unauthenticated-Flag",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-GGSN-MCC-MNC",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-NSAPI",				RULE_OPTIONAL, -1, 1 },
+				{ 0,     "Called-Station-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-Session-Stop-Indicator",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-Selection-Mode",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-Charging-Characteristics",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Charging-Characteristics-Selection-Mode",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-SGSN-MCC-MNC",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-MS-TimeZone",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Charging-Rule-Base-Name",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "ADC-Rule-Base-Name",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-User-Location-Info",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "User-Location-Info-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "User-CSG-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Presence-Reporting-Area-Information",	RULE_OPTIONAL, -1, -1 },
+				{ 5535,  "3GPP2-BSID",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "TWAN-User-Location-Info",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "UWAN-User-Location-Info",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-RAT-Type",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PS-Furnish-Charging-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PDP-Context-Type",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Offline-Charging",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Traffic-Data-Volumes",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Service-Data-Container",		RULE_OPTIONAL, -1, -1 },
+				{ 0,     "User-Equipment-Info",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Terminal-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Start-Time",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Stop-Time",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Change-Condition",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Diagnostics",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Low-Priority-Indicator",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "NBIFOM-Mode",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "NBIFOM-Support",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MME-Number-for-MT-SMS",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MME-Name",				RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MME-Realm",				RULE_OPTIONAL, -1, 1 },
+#if 0 /* TODO: ETSI ES 283 034 */
+				{ 13019, "Logical-Access-ID",			RULE_OPTIONAL, -1, 1 },
+				{ 13019, "Physical-Access-ID",			RULE_OPTIONAL, -1, 1 },
+#endif
+				{ 10415, "Fixed-User-Location-Info",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "CN-Operator-Selection-Entity",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Enhanced-Diagnostics",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SGi-PtP-Tunnelling-Method",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "CP-CIoT-EPS-Optimisation-Indicator",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "UNI-PDU-CP-Only-Flag",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Serving-PLMN-Rate-Control",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "APN-Rate-Control",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Charging-Per-IP-CAN-Session-Indicator",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "RRC-Cause-Counter",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-PS-Data-Off-Status",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SCS-AS-Address",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Unused-Quota-Timer",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "RAN-Secondary-RAT-Usage-Report",	RULE_OPTIONAL, -1, -1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10679,10 +817,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Addressee-Type" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Data",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Domain",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Addressee-Type",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10695,11 +833,11 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Destination-Interface" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Recipient-Received-Address" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Recipient-SCCP-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Destination-Interface",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Recipient-Address",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Recipient-Received-Address",	RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Recipient-SCCP-Address",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Protocol-ID",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10712,9 +850,9 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Data",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Address-Domain",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10727,16 +865,16 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "SDP-Media-Name" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SDP-Media-Description" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Local-GW-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IP-Realm-Default-Indication" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Transcoder-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Media-Initiator-Flag" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Media-Initiator-Party" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Value" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SDP-Type" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SDP-Media-Name",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SDP-Media-Description",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Local-GW-Inserted-Indication",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IP-Realm-Default-Indication",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Transcoder-Inserted-Indication",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Media-Initiator-Flag",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Media-Initiator-Party",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "3GPP-Charging-Id",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Access-Network-Charging-Identifier-Value",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SDP-Type",				RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10749,20 +887,25 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 0,     .avp_name = "Subscription-Id" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "AoC-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "WLAN-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IMS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MMS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "LCS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "PoC-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MBMS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SMS-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "MMTel-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Service-Generic-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "IM-Information" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "DCD-Information" }, RULE_OPTIONAL, -1, 1 },
+				{ 0,     "Subscription-Id",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "AoC-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IMS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MMS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "LCS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "PoC-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MBMS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SMS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "VCS-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MMTel-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "ProSe-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Service-Generic-Information",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "IM-Information",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "DCD-Information",		RULE_OPTIONAL, -1, 1 },
+#if 0 /* TODO: oneM2M TS-0004 */
+				{ 45687, "M2M-Information",		RULE_OPTIONAL, -1, 1 },
+#endif
+				{ 10415, "CPDT-Information",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10775,22 +918,27 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "SMS-Node" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Client-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Originator-SCCP-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SMSC-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Data-Coding-Scheme" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Discharge-Time" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Message-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Originator-Interface" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Reply-Path-Requested" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Status" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-User-Data-Header" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Recipient-Info" }, RULE_OPTIONAL, -1, -1 },
-				{ { .avp_vendor = 10415, .avp_name = "Originator-Received-Address" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SM-Service-Type" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SMS-Node",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Client-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Originator-SCCP-Address",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SMSC-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Data-Coding-Scheme",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Discharge-Time",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Message-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Originator-Interface",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Protocol-ID",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Reply-Path-Requested",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Status",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-User-Data-Header",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Number-Of-Messages-Sent",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Recipient-Info",		RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Originator-Received-Address",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Service-Type",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SMS-Result",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SM-Device-Trigger-Indicator",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "MTC-IWF-Address",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Port-Identifier",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "External-Identifier",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10803,8 +951,8 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Time-Quota-Type" }, RULE_REQUIRED, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Base-Time-Interval" }, RULE_REQUIRED, -1, 1 },
+				{ 10415, "Time-Quota-Type",		RULE_REQUIRED, -1, 1 },
+				{ 10415, "Base-Time-Interval",		RULE_REQUIRED, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10817,10 +965,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SIP-Request-Timestamp",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SIP-Response-Timestamp",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SIP-Request-Timestamp-Fraction",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "SIP-Response-Timestamp-Fraction",	RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10835,13 +983,16 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Event-Charging-TimeStamp" }, RULE_OPTIONAL, -1, -1 },
+				{ 10415, "Reporting-Reason",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Event-Charging-TimeStamp",	RULE_OPTIONAL, -1, -1 },
 			};
 		PARSE_loc_rules(rules, rule_avp);
         }
 
-	/* OMA */
+	/*==================================================================*/
+	/* OMA DDS Charging_Data V1.0 20110201-A                            */
+	/*==================================================================*/
+
 	{
 		struct dict_object *rule_avp;
 		struct dict_avp_request vpa;
@@ -10850,8 +1001,8 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Content-ID" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Content-provider-ID" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Content-ID",			RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Content-provider-ID",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10863,10 +1014,10 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Exploded" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Sent" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Exploded" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Total-Number-Of-Messages-Sent",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Total-Number-Of-Messages-Exploded",		RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Number-Of-Messages-Successfully-Sent",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Number-Of-Messages-Successfully-Exploded",	RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
@@ -10878,14 +1029,14 @@
 		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
 		struct local_rules_definition rules[] =
 			{
-				{ { .avp_vendor = 10415, .avp_name = "Application-Server-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Application-Service-Type" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Application-Session-Id" }, RULE_OPTIONAL, -1, 1 },
-				{ { .avp_vendor = 10415, .avp_name = "Delivery-Status" }, RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Server-Id",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Service-Type",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Application-Session-Id",	RULE_OPTIONAL, -1, 1 },
+				{ 10415, "Delivery-Status",		RULE_OPTIONAL, -1, 1 },
 			};
 			PARSE_loc_rules(rules, rule_avp);
         }
-	
+
 	LOG_D( "Extension 'Dictionary definitions for DCCA 3GPP' initialized");
 	return 0;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.csv	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,2421 @@
+Attribute Name,AVP Code,Section defined,Value Type,MUST,MAY,SHOULD NOT,MUST NOT
+@vendor,10415,,,,,,
+,,,,,,,
+@standard,3GPP TS 29.061,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.061 V15.5.0 (2018-12),,,,,,,
+# Interworking between the Public Land Mobile Network (PLMN),,,,,,,
+# supporting packet based services and,,,,,,,
+# Packet Data Networks (PDN),,,,,,,
+# ,,,,,,,
+# From 3GPP 29061-f50.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.061 Table 9a: Gi/Sgi specific AVPs,,,,,,,
+#,,,,,,,
+# Note: 3GPP TS 29.061 is unclear and inconsistent about M.,,,,,,,
+"# For this reason, other sources are assumed more trustworthy.",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Fix: 3GPP-IMSI (1) changed to Must M.,,,,,,,
+3GPP-IMSI,1,16.4.7,UTF8String,"M,V",P,,
+"# Fix: 3GPP-Charging-Id (2) type changed from OctetString to Unsigned32,",,,,,,,
+# per 3GPP TS 29.061 clause 16.4.7.2/2 and packet dumps.,,,,,,,
+3GPP-Charging-Id,2,16.4.7,Unsigned32,"M,V",P,,
+# Fix: 3GPP-PDP-Type (3) changed to Must M.,,,,,,,
+3GPP-PDP-Type,3,16.4.7,Enumerated,"M,V",P,,
+3GPP-CG-Address,4,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-GPRS-Negotiated-QoS-Profile (5) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-GPRS-Negotiated-QoS-Profile,5,16.4.7,UTF8String,"M,V",P,,
+3GPP-SGSN-Address,6,16.4.7,OctetString,V,P,,M
+3GPP-GGSN-Address,7,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-IMSI-MCC-MNC (8) changed to Must M per packet dumps.,,,,,,,
+3GPP-IMSI-MCC-MNC,8,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-GGSN-MCC-MNC (9) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-GGSN-MCC-MNC,9,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-NSAPI (10) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-NSAPI,10,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 Table 9a does not define,,,,,,,
+# 3GPP-Session-Stop-Indicator (11) even when it is referenced,,,,,,,
+# by other 3GPP Diameter AVPs including PS-Information (874).,,,,,,,
+# ,,,,,,,
+# Fix: Add 3GPP-Session-Stop-Indicator (11) OctetString.,,,,,,,
+3GPP-Session-Stop-Indicator,11,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-Selection-Mode (12) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-Selection-Mode,12,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-Charging-Characteristics (13) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-Charging-Characteristics,13,16.4.7,UTF8String,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-CG-IPv6-Address (14) to 3GPP-CG-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-CG-Ipv6-Address (14) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-CG-IPv6-Address (14) renamed to 3GPP-CG-Ipv6-Address (14).,,,,,,,
+3GPP-CG-Ipv6-Address,14,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-SGSN-IPv6-Address (15) to 3GPP-SGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-SGSN-Ipv6-Address (15) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-SGSN-IPv6-Address (15) renamed to 3GPP-SGSN-Ipv6-Address (15).,,,,,,,
+3GPP-SGSN-Ipv6-Address,15,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-GGSN-IPv6-Address (16) to 3GPP-GGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-GGSN-Ipv6-Address (16) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-GGSN-IPv6-Address (16) renamed to 3GPP-GGSN-Ipv6-Address (16).,,,,,,,
+3GPP-GGSN-Ipv6-Address,16,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-IPv6-DNS-Servers (17) to 3GPP-Ipv6-DNS-Servers.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-Ipv6-DNS-Servers (17) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-IPv6-DNS-Servers (17) renamed to 3GPP-Ipv6-DNS-Servers (17).,,,,,,,
+3GPP-Ipv6-DNS-Servers,17,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-SGSN-MCC-MNC (18) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-SGSN-MCC-MNC,18,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-IMEISV (20) changed to Must M.,,,,,,,
+3GPP-IMEISV,20,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-RAT-Type (21) changed to Must M.,,,,,,,
+3GPP-RAT-Type,21,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-User-Location-Info (22) changed to Must M.,,,,,,,
+3GPP-User-Location-Info,22,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-MS-TimeZone (23) changed to Must M.,,,,,,,
+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
+# Note: 3GPP TS 29.061 Table 9a does not define,,,,,,,
+# External-Identifier (28) for Diameter; it is RADIUS only.,,,,,,,
+# 3GPP TS 29.061 Table 9b refers to 3GPP TS 29.336,,,,,,,
+# for External-Identifier (3111).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String.,,,,,,,
+#,,,,,,,
+TWAN-Identifier,29,16.4.7,OctetString,V,P,,M
+3GPP-User-Location-Info-Time,30,16.4.7,OctetString,V,P,,M
+3GPP-Secondary-RAT-Usage,31,16.4.7,OctetString,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.061 Table 10: Gmb specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+TMGI,900,17.7.2,OctetString,"M,V",P,,
+Required-MBMS-Bearer-Capabilities,901,17.7.3,UTF8String,"M,V",P,,
+MBMS-StartStop-Indication,902,17.7.5,Enumerated,"M,V",P,,
+MBMS-Service-Area,903,17.7.6,OctetString,"M,V",P,,
+MBMS-Session-Duration,904,17.7.7,OctetString,"M,V",P,,
+Alternative-APN,905,17.7.8,UTF8String,"M,V",P,,
+MBMS-Service-Type,906,17.7.9,Enumerated,"M,V",P,,
+MBMS-2G-3G-Indicator,907,17.7.10,Enumerated,"M, V",P,,
+MBMS-Session-Identity,908,17.7.11,OctetString,"M,V",P,,
+RAI,909,17.7.12,UTF8String,"M, V",P,,
+Additional-MBMS-Trace-Info,910,17.7.13,OctetString,"M,V",P,,
+MBMS-Time-To-Data-Transfer,911,17.7.14,OctetString,"M,V",P,,
+MBMS-Session-Repetition-Number,912,17.7.15,OctetString,"M,V",P,,
+MBMS-Required-QoS,913,17.7.16,UTF8String,"M,V",P,,
+MBMS-Counting-Information,914,17.7.17,Enumerated,"M,V",P,,
+MBMS-User-Data-Mode-Indication,915,17.7.18,Enumerated,"M,V",P,,
+MBMS-GGSN-Address,916,17.7.19,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GGSN-IPv6-Address (917) to MBMS-GGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMS-GGSN-IPv6-Address (917) renamed to MBMS-GGSN-Ipv6-Address (917).,,,,,,,
+MBMS-GGSN-Ipv6-Address,917,17.7.20,OctetString,"M,V",P,,
+MBMS-BMSC-SSM-IP-Address,918,17.7.21,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-BMSC-SSM-IPv6-Address (919) to MBMS-BMSC-SSM-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMS-BMSC-SSM-IPv6-Address (919) renamed to MBMS-BMSC-SSM-Ipv6-Address (919).,,,,,,,
+MBMS-BMSC-SSM-Ipv6-Address,919,17.7.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 TS 29.061 Table 20.5a.1: SGmb specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+MBMS-Access-Indicator,923,20.5a.1,Enumerated,"M,V",P,,
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+MBMS-GW-SSM-IP-Address,924,20.5a.2,OctetString,V,P,,M
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+MBMS-GW-SSM-IPv6-Address,925,20.5a.3,OctetString,V,P,,M
+MBMS-BMSC-SSM-UDP-Port,926,20.5a.4,OctetString,V,P,,M
+MBMS-GW-UDP-Port,927,20.5a.5,OctetString,V,P,,M
+MBMS-GW-UDP-Port-Indicator,928,20.5a.6,Enumerated,V,P,,M
+MBMS-Data-Transfer-Start,929,20.5a.7,Unsigned64,V,P,,M
+MBMS-Data-Transfer-Stop,930,20.5a.8,Unsigned64,V,P,,M
+# Note: 3GPP TS 29.061 Table 20.5a.1 row MBMS-Flag (931) has,,,,,,,
+"# incorrect name and should be ""MBMS-Flags"" per clause 20.5a.9.",,,,,,,
+# ,,,,,,,
+# Fix: MBMS-Flag (931) renamed to MBMS-Flags (931).,,,,,,,
+MBMS-Flags,931,20.5a.9,Unsigned32,V,P,,M
+Restart-Counter,932,20.5a.10,Unsigned32,V,P,,M
+Diagnostic-Info,933,20.5a.11,Unsigned32,V,P,,M
+MBMS-Cell-List,934,20.5a.12,OctetString,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.109,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.109 V15.0.0 (2017-06),,,,,,,
+# Generic Authentication Architecture (GAA);,,,,,,,
+# Zh and Zn Interfaces based on the Diameter protocol;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29109-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.109 Table 6.1: New Diameter Multimedia Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+GBA-UserSecSettings,400,6.3.1.1,OctetString,"M, V",,,
+Transaction-Identifier,401,6.3.1.2,OctetString,"M, V",,,
+NAF-Id,402,6.3.1.3,OctetString,"M, V",,,
+GAA-Service-Identifier,403,6.3.1.4,OctetString,"M, V",,,
+Key-ExpiryTime,404,6.3.1.5,Time,"M, V",,,
+ME-Key-Material,405,6.3.1.6,OctetString,"M, V",,,
+UICC-Key-Material,406,6.3.1.7,OctetString,"M, V",,,
+# Note: 3GPP TS 29.109 Table 6.1 row GBA_U-Awareness-Indicator (407),,,,,,,
+# has an underscore in the name (contrary to RFC 6733 section 4.1).,,,,,,,
+# ,,,,,,,
+# Fix: GBA_U-Awareness-Indicator (407) renamed to GBA-U-Awareness-Indicator (407).,,,,,,,
+GBA-U-Awareness-Indicator,407,6.3.1.8,Enumerated,"M, V",,,
+BootstrapInfoCreationTime,408,6.3.1.9,Time,"M, V",,,
+GUSS-Timestamp,409,6.3.1.10,Time,V,,,M
+GBA-Type,410,6.3.1.11,Enumerated,"M, V",,,
+UE-Id,411,6.3.1.12,OctetString,"M, V",,,
+UE-Id-Type,412,6.3.1.13,Enumerated,"M, V",,,
+UICC-App-Label,413,6.3.1.14,OctetString,"M, V",,,
+UICC-ME,414,6.3.1.15,Enumerated,"M, V",,,
+Requested-Key-Lifetime,415,6.3.1.16,Time,"M, V",,,
+Private-Identity-Request,416,6.3.1.17,Enumerated,"M, V",,,
+GBA-Push-Info,417,6.3.1.18,OctetString,"M, V",,,
+NAF-SA-Identifier,418,6.3.1.19,OctetString,"M, V",,,
+Security-Feature-Request,419,6.3.1.20,OctetString,"M,V",,,
+Security-Feature-Response,420,6.3.1.21,OctetString,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.128,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.128 V15.6.0 (2019-09),,,,,,,
+# Mobility Management Entity (MME) and Serving GPRS Support,,,,,,,
+# Node (SGSN) interfaces for interworking with packet data,,,,,,,
+# networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29128-f60.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.128 Table 6.4.1-1: T6a/T6b specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Communication-Failure-Information,4300,6.4.4,Grouped,"M,V",,,
+Cause-Type,4301,6.4.5,Unsigned32,"M,V",,,
+S1AP-Cause,4302,6.4.6,Unsigned32,"M,V",,,
+RANAP-Cause,4303,6.4.7,Unsigned32,"M,V",,,
+BSSGP-Cause,4309,6.4.8,Unsigned32,"M,V",,,
+GMM-Cause,4304,6.4.9,Unsigned32,"M,V",,,
+SM-Cause,4305,6.4.10,Unsigned32,"M,V",,,
+Number-Of-UE-Per-Location-Configuration,4306,6.4.11,Grouped,"M,V",,,
+Number-Of-UE-Per-Location-Report,4307,6.4.12,Grouped,"M,V",,,
+UE-Count,4308,6.4.13,Unsigned32,"M,V",,,
+Connection-Action,4314,6.4.18,Unsigned32,"M,V",,,
+Non-IP-Data,4315,6.4.19,OctetString,"M,V",,,
+Serving-PLMN-Rate-Control,4310,6.4.21,Grouped,"M,V",,,
+Uplink-Rate-Limit,4311,6.4.23,Unsigned32,"M,V",,,
+Downlink-Rate-Limit,4312,6.4.22,Unsigned32,"M,V",,,
+Extended-PCO,4313,6.4.26,OctetString,"M,V",,,
+SCEF-Wait-Time,4316,6.4.24,Time,"M,V",,,
+CMR-Flags,4317,6.4.25,Unsigned32,"M,V",,,
+RRC-Cause-Counter,4318,6.4.27,Grouped,"M,V",,,
+Counter-Value,4319,6.4.28,Unsigned32,"M,V",,,
+RRC-Counter-Timestamp,4320,6.4.29,Time,"M,V",,,
+TDA-Flags,4321,6.4.31,Unsigned32,V,,,M
+Idle-Status-Indication,4322,6.4.32,Grouped,V,,,M
+Idle-Status-Timestamp,4323,6.4.33,Time,V,,,M
+Active-Time,4324,6.4.34,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.140,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.140 V7.0.0 (2007-06),,,,,,,
+# MM10 interface based on Diameter protocol;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29140-700.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.140 Table 6.3.1: Diameter MM10 Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Served-User-Identity,1100,6.3.1,Grouped,"M,V",,,
+VASP-ID,1101,6.3.3,UTF8String,"M,V",,,
+VAS-ID,1102,6.3.4,UTF8String,"M,V",,,
+Trigger-Event,1103,6.3.5,Enumerated,"M,V",,,
+Sender-Address,1104,6.3.7,UTF8String,"M,V",,,
+Initial-Recipient-Address,1105,6.3.8,Grouped,"M,V",,,
+Result-Recipient-Address,1106,6.3.9,Grouped,"M,V",,,
+# Note: Name conflict with 3GPP TS 29.329 Sequence-Number (716),,,,,,,
+# and 3GPP TS 29.283 Sequence-Number (4512).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+# ,,,,,,,
+# Fix: Sequence-Number (1107) renamed to Sequence-Number-29.140 (1107).,,,,,,,
+Sequence-Number-29.140,1107,6.3.10,Unsigned32,"M,V",,,
+# Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201);,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108).,,,,,,,
+# 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201).,,,,,,,
+# ,,,,,,,
+# Fix: Recipient-Address (1108) renamed to Recipient-Address-29.140 (1108).,,,,,,,
+Recipient-Address-29.140,1108,6.3.11,UTF8String,"M,V",,,
+Routeing-Address,1109,6.3.12,UTF8String,"M,V",,,
+Originating-Interface,1110,6.3.13,Enumerated,"M,V",,,
+Delivery-Report,1111,6.3.14,Enumerated,"M,V",,,
+Read-Reply,1112,6.3.15,Enumerated,"M,V",,,
+Sender-Visibility,1113,6.3.16,Enumerated,"M,V",,,
+Service-Key,1114,6.3.17,UTF8String,"M,V",,,
+Billing-Information,1115,6.3.18,UTF8String,"M,V",,,
+# Note: Name conflict with 3GPP TS 32.299 V11.6.0 Status (2702).,,,,,,,
+# 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed,,,,,,,
+# Status (2702) to Status-Code (2702).,,,,,,,
+# 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed,,,,,,,
+# Status-Code (2702) to Status-AS-Code (2702).,,,,,,,
+# ,,,,,,,
+# TODO: rename back to Status ?,,,,,,,
+# Fix: Status (1116) renamed to Status-29.140 (1116).,,,,,,,
+Status-29.140,1116,6.3.19,Grouped,"M,V",,,
+Status-Code,1117,6.3.20,UTF8String,"M,V",,,
+Status-Text,1118,6.3.21,UTF8String,"M,V",,,
+Routeing-Address-Resolution,1119,6.3.22,Enumerated,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.153,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.153 V15.1.0 (2019-09),,,,,,,
+# Service capability exposure functionality over Ns,,,,,,,
+# reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29153-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.153 Table 5.3.1.1: Ns specific Diameter AVPs ,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Network-Congestion-Area-Report,4101,5.3.2,Grouped,"M,V",P,,
+Ns-Request-Type,4102,5.3.3,Unsigned32,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.154,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.154 V15.3.0 (2019-09),,,,,,,
+# Service capability exposure functionality over,,,,,,,
+# Nt reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29154-f30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.154 Table 5.3.1.1: Nt specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Network-Area-Info-List,4201,5.3.2,OctetString,"M,V",P,,
+Number-Of-UEs,4209,5.3.10,Unsigned32,"M,V",P,,
+Reference-Id,4202,5.3.3,OctetString,"M,V",P,,
+Transfer-Request-Type,4203,5.3.4,Unsigned32,"M,V",P,,
+# Note: Name conflict with 3GPP TS 29.345 Time-Window (3818).,,,,,,,
+# Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates,,,,,,,
+# Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).,,,,,,,
+# ,,,,,,,
+# Fix: Time-Window (4204) renamed to Time-Window-29.154 (4204).,,,,,,,
+Time-Window-29.154,4204,5.3.5,Grouped,"M,V",P,,
+Transfer-End-Time,4205,5.3.6,Time,"M,V",P,,
+Transfer-Policy,4207,5.3.8,Grouped,"M,V",P,,
+Transfer-Policy-Id,4208,5.3.9,Unsigned32,"M,V",P,,
+Transfer-Start-Time,4206,5.3.7,Time,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.154 Table A.6.3.1-1: Nta specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Access-Network-Reports,4210,A.6.3.2,Grouped,"M,V",P,,
+Event-Configuration,4211,A.6.3.3,Grouped,"M,V",P,,
+Event-Configuration-State,4212,A.6.3.4,Unsigned32,"M,V",P,,
+Event-Configuration-Status,4213,A.6.3.5,Grouped,"M,V",P,,
+Event-Reporting-Results,4214,A.6.3.6,Unsigned32,"M,V",P,,
+Event-Reports,4215,A.6.3.7,Grouped,"M,V",P,,
+Extended-SCEF-Reference-ID,4216,A.6.3.8,Unsigned64,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.172,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.172 V15.2.0 (2019-12),,,,,,,
+# Location Services (LCS);,,,,,,,
+# Evolved Packet Core (EPC) LCS Protocol (ELP) between the,,,,,,,
+# Gateway Mobile Location Centre (GMLC) and the,,,,,,,
+# Mobile Management Entity (MME);,,,,,,,
+# SLg interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29172-f20.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.172 Table 7.4.1-1: Diameter ELP Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SLg-Location-Type,2500,7.4.2,Enumerated,"M, V",,,
+LCS-EPS-Client-Name,2501,7.4.3,Grouped,"M, V",,,
+LCS-Requestor-Name,2502,7.4.4,Grouped,"M, V",,,
+LCS-Priority,2503,7.4.5,Unsigned32,"M, V",,,
+LCS-QoS,2504,7.4.6,Grouped,"M, V",,,
+Horizontal-Accuracy,2505,7.4.7,Unsigned32,"M, V",,,
+Vertical-Accuracy,2506,7.4.8,Unsigned32,"M, V",,,
+Vertical-Requested,2507,7.4.9,Enumerated,"M, V",,,
+Velocity-Requested,2508,7.4.10,Enumerated,"M, V",,,
+Response-Time,2509,7.4.11,Enumerated,"M, V",,,
+Supported-GAD-Shapes,2510,7.4.12,Unsigned32,"M, V",,,
+LCS-Codeword,2511,7.4.13,UTF8String,"M, V",,,
+LCS-Privacy-Check,2512,7.4.14,Enumerated,"M, V",,,
+Accuracy-Fulfilment-Indicator,2513,7.4.15,Enumerated,"M, V",,,
+Age-Of-Location-Estimate,2514,7.4.16,Unsigned32,"M, V",,,
+Velocity-Estimate,2515,7.4.17,OctetString,"M, V",,,
+EUTRAN-Positioning-Data,2516,7.4.18,OctetString,"M, V",,,
+ECGI,2517,7.4.19,OctetString,"M, V",,,
+Location-Event,2518,7.4.20,Enumerated,"M, V",,,
+Pseudonym-Indicator,2519,7.4.21,Enumerated,"M, V",,,
+LCS-Service-Type-ID,2520,7.4.22,Unsigned32,"M, V",,,
+LCS-Privacy-Check-Non-Session,2521,7.4.23,Grouped,"M, V",,,
+LCS-Privacy-Check-Session,2522,7.4.24,Grouped,"M, V",,,
+LCS-QoS-Class,2523,7.4.27,Enumerated,"M, V",,,
+GERAN-Positioning-Info,2524,7.4.29,Grouped,V,,,M
+GERAN-Positioning-Data,2525,7.4.30,OctetString,V,,,M
+GERAN-GANSS-Positioning-Data,2526,7.4.31,OctetString,V,,,M
+UTRAN-Positioning-Info,2527,7.4.32,Grouped,V,,,M
+UTRAN-Positioning-Data,2528,7.4.33,OctetString,V,,,M
+UTRAN-GANSS-Positioning-Data,2529,7.4.34,OctetString,V,,,M
+LRR-Flags,2530,7.4.35,Unsigned32,V,,,M
+LCS-Reference-Number,2531,7.4.37,OctetString,V,,,M
+Deferred-Location-Type,2532,7.4.36,Unsigned32,V,,,M
+Area-Event-Info,2533,7.4.38,Grouped,V,,,M
+Area-Definition,2534,7.4.39,Grouped,V,,,M
+Area,2535,7.4.40,Grouped,V,,,M
+Area-Type,2536,7.4.41,Unsigned32,V,,,M
+Area-Identification,2537,7.4.42,Grouped,V,,,M
+Occurrence-Info,2538,7.4.43,Enumerated,V,,,M
+Interval-Time,2539,7.4.44,Unsigned32,V,,,M
+Periodic-LDR-Information,2540,7.4.45,Grouped,V,,,M
+Reporting-Amount,2541,7.4.46,Unsigned32,V,,,M
+Reporting-Interval,2542,7.4.47,Unsigned32,V,,,M
+Reporting-PLMN-List,2543,7.4.48,Grouped,V,,,M
+PLMN-ID-List,2544,7.4.49,Grouped,V,,,M
+PLR-Flags,2545,7.4.52,Unsigned32,V,,,M
+PLA-Flags,2546,7.4.53,Unsigned32,V,,,M
+Deferred-MT-LR-Data,2547,7.4.54,Grouped,V,,,M
+Termination-Cause,2548,7.4.55,Unsigned32,V,,,M
+LRA-Flags,2549,7.4.56,Unsigned32,V,,,M
+Periodic-Location-Support-Indicator,2550,7.4.50,Enumerated,V,,,M
+Prioritized-List-Indicator,2551,7.4.51,Enumerated,V,,,M
+ESMLC-Cell-Info,2552,7.4.57,Grouped,V,,,M
+Cell-Portion-ID,2553,7.4.58,Unsigned32,V,,,M
+1xRTT-RCID,2554,7.4.59,OctetString,V,,,M
+Delayed-Location-Reporting-Data,2555,7.4.60,Grouped,V,,,M
+Civic-Address,2556,7.4.61,UTF8String,V,,,M
+Barometric-Pressure,2557,7.4.62,Unsigned32,V,,,M
+UTRAN-Additional-Positioning-Data,2558,7.4.63,OctetString,V,,,M
+Motion-Event-Info,2559,7.4.64,Grouped,V,,,M
+Linear-Distance,2560,7.4.65,Unsigned32,V,,,M
+Maximum-Interval,2561,7.4.66,Unsigned32,V,,,M
+Sampling-Interval,2562,7.4.67,Unsigned32,V,,,M
+Reporting-Duration,2563,7.4.68,Unsigned32,V,,,M
+Reporting-Location-Requirements,2564,7.4.69,Unsigned32,V,,,M
+Additional-Area,2565,7.4.70,Grouped,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.173,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.173 V15.0.0 (2018-06),,,,,,,
+# Location Services (LCS);,,,,,,,
+# Diameter-based SLh interface for Control Plane LCS,,,,,,,
+# ,,,,,,,
+# From 3GPP 29173-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.173 Table 6.4.1/1: SLh specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+LMSI,2400,6.4.2,OctetString,"M,V",,,
+Serving-Node,2401,6.4.3,Grouped,"M,V",,,
+MME-Name,2402,6.4.4,DiameterIdentity,"M,V",,,
+MSC-Number,2403,6.4.5,OctetString,"M,V",,,
+LCS-Capabilities-Sets,2404,6.4.6,Unsigned32,"M,V",,,
+GMLC-Address,2405,6.4.7,Address,"M,V",,,
+Additional-Serving-Node,2406,6.4.8,Grouped,"M,V",,,
+PPR-Address,2407,6.4.9,Address,"M,V",,,
+MME-Realm,2408,6.4.12,DiameterIdentity,V,,,M
+SGSN-Name,2409,6.4.13,DiameterIdentity,V,,,M
+SGSN-Realm,2410,6.4.14,DiameterIdentity,V,,,M
+RIA-Flags,2411,6.4.15,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.209,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.209 V6.8.0 (2011-09),,,,,,,
+# Policy control over Gq interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29209-680.doc,,,,,,,
+# ,,,,,,,
+# Replaced by 3GPP TS 29.214.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.209 Table 6.5.1: Gq specific Diameter AVPs,,,,,,,
+# Note: Only AVPs not provided by 3GPP TS 29.214.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Authorization-Token,506,6.5.7,OctetString,"M,V",P,,
+Flow-Grouping,508,6.5.9,Grouped,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.210,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.210 V6.7.0 (2006-12),,,,,,,
+# Charging rule provisioning over Gx interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29210-670.doc,,,,,,,
+# ,,,,,,,
+# Replaced by 3GPP TS 29.212.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.210 Table 5.2: Gx specific Diameter AVPs,,,,,,,
+# Note: Only AVPs not provided by 3GPP TS 29.212.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+PDP-Session-Operation,1015,5.2.21,Enumerated,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.212,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.212 V15.9.0 (2019-12),,,,,,,
+# Policy and Charging Control (PCC); Reference points,,,,,,,
+# ,,,,,,,
+# From 3GPP 29212-f90.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5.3.0.1: Gx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Change-1.4.0: ADC-Revalidation-Time (2801) Time removed in 3GPP TS 29.212 V12.1.0 (2013-06).,,,,,,,
+#,,,,,,,
+# Note: Name conflict with 3GPP TS 32.299 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+# 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+3GPP-PS-Data-Off-Status,2847,5.3.133,Enumerated,V,P,,M
+Access-Availability-Change-Reason,2833,5.3.121,Unsigned32,V,P,,M
+Access-Network-Charging-Identifier-Gx,1022,5.3.22,Grouped,"M,V",P,,
+Allocation-Retention-Priority,1034,5.3.32,Grouped,V,P,,M
+AN-GW-Address,1050,5.3.49,Address,V,P,,M
+AN-GW-Status,2811,5.3.100,Enumerated,V,P,,M
+APN-Aggregate-Max-Bitrate-DL,1040,5.3.39,Unsigned32,V,P,,M
+APN-Aggregate-Max-Bitrate-UL,1041,5.3.40,Unsigned32,V,P,,M
+Application-Detection-Information,1098,5.3.91,Grouped,V,P,,M
+Bearer-Control-Mode,1023,5.3.23,Enumerated,"M,V",P,,
+Bearer-Identifier,1020,5.3.20,OctetString,"M,V",P,,
+Bearer-Operation,1021,5.3.21,Enumerated,"M,V",P,,
+Bearer-Usage,1000,5.3.1,Enumerated,"M,V",P,,
+Charging-Correlation-Indicator,1073,5.3.67,Enumerated,V,P,,M
+Charging-Rule-Base-Name,1004,5.3.5,UTF8String,"M,V",P,,
+Charging-Rule-Definition,1003,5.3.4,Grouped,"M,V",P,,
+Charging-Rule-Install,1001,5.3.2,Grouped,"M,V",P,,
+Charging-Rule-Name,1005,5.3.6,OctetString,"M,V",P,,
+Charging-Rule-Remove,1002,5.3.3,Grouped,"M,V",P,,
+Charging-Rule-Report,1018,5.3.18,Grouped,"M,V",P,,
+CoA-Information,1039,5.3.37,Grouped,V,P,,M
+CoA-IP-Address,1035,5.3.33,Address,V,P,,M
+Conditional-APN-Aggregate-Max-Bitrate,2818,5.3.105,Grouped,V,P,,M
+Conditional-Policy-Information,2840,5.3.128,Grouped,V,P,,M
+Credit-Management-Status,1082,5.3.102,Unsigned32,V,P,,M
+CSG-Information-Reporting,1071,5.3.64,Enumerated,V,P,,M
+Default-Access,2829,5.3.120,Enumerated,V,P,,M
+Default-Bearer-Indication,2844,5.3.132,Enumerated,V,P,,M
+Default-EPS-Bearer-QoS,1049,5.3.48,Grouped,V,P,,M
+Default-QoS-Information,2816,5.3.103,Grouped,V,P,,M
+Default-QoS-Name,2817,5.3.104,UTF8String,V,P,,M
+Event-Report-Indication,1033,5.3.30,Grouped,V,P,,M
+Event-Trigger,1006,5.3.7,Enumerated,"M,V",P,,
+Execution-Time,2839,5.3.127,Time,V,P,,M
+Extended-APN-AMBR-DL,2848,5.3.134,Unsigned32,V,P,,M
+Extended-APN-AMBR-UL,2849,5.3.135,Unsigned32,V,P,,M
+Extended-GBR-DL,2850,5.3.136,Unsigned32,V,P,,M
+Extended-GBR-UL,2851,5.3.137,Unsigned32,V,P,,M
+Flow-Direction,1080,5.3.65,Enumerated,V,P,,M
+Flow-Information,1058,5.3.53,Grouped,V,P,,M
+Flow-Label,1057,5.3.52,OctetString,V,P,,M
+Fixed-User-Location-Info,2825,5.3.112,Grouped,V,P,,M
+Guaranteed-Bitrate-DL,1025,5.3.25,Unsigned32,"M,V",P,,
+Guaranteed-Bitrate-UL,1026,5.3.26,Unsigned32,"M,V",P,,
+# Note: HeNB-BBF-FQDN (2803) UTF8String removed in 3GPP TS 29.212 V11.8.0 (2013-03).,,,,,,,
+#,,,,,,,
+HeNB-Local-IP-Address,2804,5.3.95,Address,V,P,,M
+IP-CAN-Session-Charging-Scope,2827,5.3.114,Enumerated,V,P,,M
+IP-CAN-Type,1027,5.3.27,Enumerated,"M,V",P,,
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-DL (2852),,,,,,,
+# incorrectly lists type as Unsigned32 instead of Float32.,,,,,,,
+# 3GPP TS 29.212 clause 5.3.138 uses Float32.,,,,,,,
+# ,,,,,,,
+# Fix: Max-PLR-DL (2852) type changed from Float32 to Unsigned32.,,,,,,,
+Max-PLR-DL,2852,5.3.138,Unsigned32,V,P,,M
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-UL (2853),,,,,,,
+# incorrectly lists type as Unsigned32 instead of Float32.,,,,,,,
+# 3GPP TS 29.212 clause 5.3.139 uses Float32.,,,,,,,
+# ,,,,,,,
+# Fix: Max-PLR-UL (2853) type changed from Float32 to Unsigned32.,,,,,,,
+Max-PLR-UL,2853,5.3.139,Unsigned32,V,P,,M
+Metering-Method,1007,5.3.8,Enumerated,"M,V",P,,
+Monitoring-Flags,2828,5.3.115,Unsigned32,V,,,M
+Monitoring-Key,1066,5.3.59,OctetString,V,P,,M
+Mute-Notification,2809,5.3.98,Enumerated,V,P,,M
+Monitoring-Time,2810,5.3.99,Time,V,P,,M
+NBIFOM-Mode,2830,5.3.117,Enumerated,V,P,,M
+NBIFOM-Support,2831,5.3.116,Enumerated,V,P,,M
+NetLoc-Access-Support,2824,5.3.111,Unsigned32,V,P,,M
+Network-Request-Support,1024,5.3.24,Enumerated,"M,V",P,,
+Offline,1008,5.3.9,Enumerated,"M,V",P,,
+Online,1009,5.3.10,Enumerated,"M,V",P,,
+Packet-Filter-Content,1059,5.3.54,IPFilterRule,V,P,,M
+Packet-Filter-Identifier,1060,5.3.55,OctetString,V,P,,M
+Packet-Filter-Information,1061,5.3.56,Grouped,V,P,,M
+Packet-Filter-Operation,1062,5.3.57,Enumerated,V,P,,M
+Packet-Filter-Usage,1072,5.3.66,Enumerated,V,P,,M
+PCC-Rule-Status,1019,5.3.19,Enumerated,"M,V",P,,
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row PDN-Connection-ID (1065),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PDN-Connection-ID (1065) flag M MUST NOT.,,,,,,,
+PDN-Connection-ID,1065,5.3.58,OctetString,V,P,,M
+PRA-Install,2845,5.3.130,Grouped,V,P,,M
+PRA-Remove,2846,5.3.131,Grouped,V,P,,M
+Precedence,1010,5.3.11,Unsigned32,"M,V",P,,
+Pre-emption-Capability,1047,5.3.46,Enumerated,V,P,,M
+Pre-emption-Vulnerability,1048,5.3.47,Enumerated,V,P,,M
+Presence-Reporting-Area-Elements-List,2820,5.3.107,OctetString,V,P,,M
+Presence-Reporting-Area-Identifier,2821,5.3.108,OctetString,V,P,,M
+Presence-Reporting-Area-Information,2822,5.3.109,Grouped,V,P,,M
+Presence-Reporting-Area-Node,2855,5.3.141,Unsigned32,V,P,,M
+Presence-Reporting-Area-Status,2823,5.3.110,Unsigned32,V,P,,M
+Priority-Level,1046,5.3.45,Unsigned32,V,P,,M
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row PS-to-CS-Session-Continuity (1099),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PS-to-CS-Session-Continuity (1099) flag M MUST NOT.,,,,,,,
+PS-to-CS-Session-Continuity,1099,5.3.84,Enumerated,V,P,,M
+QoS-Class-Identifier,1028,5.3.17,Enumerated,"M,V",P,,
+QoS-Information,1016,5.3.16,Grouped,"M,V",P,,
+QoS-Negotiation,1029,5.3.28,Enumerated,"M,V",P,,
+QoS-Upgrade,1030,5.3.29,Enumerated,"M,V",P,,
+RAN-NAS-Release-Cause,2819,5.3.106,OctetString,V,P,,M
+RAN-Rule-Support,2832,5.3.122,Unsigned32,V,P,,M
+RAT-Type,1032,5.3.31,Enumerated,V,P,,M
+Redirect-Information,1085,5.3.82,Grouped,V,P,,M
+Redirect-Support,1086,5.3.83,Enumerated,V,P,,M
+Removal-Of-Access,2842,5.3.126,Enumerated,V,P,,M
+Reporting-Level,1011,5.3.12,Enumerated,"M,V",P,,
+Resource-Allocation-Notification,1063,5.3.50,Enumerated,V,P,,M
+Resource-Release-Notification,2841,5.3.125,Enumerated,V,P,,M
+Revalidation-Time,1042,5.3.41,Time,"M,V",P,,
+Routing-Filter,1078,5.3.72,Grouped,V,P,,M
+Routing-IP-Address,1079,5.3.73,Address,V,P,,M
+Routing-Rule-Definition,1076,5.3.70,Grouped,V,P,,M
+Routing-Rule-Identifier,1077,5.3.71,OctetString,V,P,,M
+Routing-Rule-Install,1081,5.3.68,Grouped,V,P,,M
+Routing-Rule-Remove,1075,5.3.69,Grouped,V,P,,M
+Routing-Rule-Failure-Code,2834,5.3.119,Unsigned32,V,P,,M
+Routing-Rule-Report,2835,5.3.118,Grouped,V,P,,M
+Rule-Activation-Time,1043,5.3.42,Time,"M,V",P,,
+Rule-Deactivation-Time,1044,5.3.43,Time,"M,V",P,,
+Rule-Failure-Code,1031,5.3.38,Enumerated,"M,V",P,,
+Security-Parameter-Index,1056,5.3.51,OctetString,V,P,,M
+Session-Release-Cause,1045,5.3.44,Enumerated,"M,V",P,,
+TCP-Source-Port,2843,5.3.129,Unsigned32,V,P,,M
+TDF-Information,1087,5.3.78,Grouped,V,P,,M
+TDF-Application-Identifier,1088,5.3.77,OctetString,V,P,,M
+TDF-Application-Instance-Identifier,2802,5.3.92,OctetString,V,P,,M
+TDF-Destination-Host,1089,5.3.80,DiameterIdentity,V,P,,M
+TDF-Destination-Realm,1090,5.3.79,DiameterIdentity,V,P,,M
+TDF-IP-Address,1091,5.3.81,Address,V,P,,M
+TFT-Filter,1012,5.3.13,IPFilterRule,"M,V",P,,
+TFT-Packet-Filter-Information,1013,5.3.14,Grouped,"M,V",P,,
+Traffic-Steering-Policy-Identifier-DL,2836,5.3.123,OctetString,V,P,,M
+Traffic-Steering-Policy-Identifier-UL,2837,5.3.124,OctetString,V,P,,M
+ToS-Traffic-Class,1014,5.3.15,OctetString,"M,V",P,,
+Tunnel-Header-Filter,1036,5.3.34,IPFilterRule,V,P,,M
+Tunnel-Header-Length,1037,5.3.35,Unsigned32,V,P,,M
+Tunnel-Information,1038,5.3.36,Grouped,V,P,,M
+UDP-Source-Port,2806,5.3.97,Unsigned32,V,P,,M
+UE-Local-IP-Address,2805,5.3.96,Address,V,P,,M
+UE-Status,2854,5.3.140,Unsigned32,V,P,,M
+Usage-Monitoring-Information,1067,5.3.60,Grouped,V,P,,M
+Usage-Monitoring-Level,1068,5.3.61,Enumerated,V,P,,M
+Usage-Monitoring-Report,1069,5.3.62,Enumerated,V,P,,M
+Usage-Monitoring-Support,1070,5.3.63,Enumerated,V,P,,M
+User-Location-Info-Time,2812,5.3.101,Time,V,P,,M
+PCSCF-Restoration-Indication,2826,5.3.113,Unsigned32,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5a.3.0.1: Gxx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+QoS-Rule-Install,1051,5a.3.1,Grouped,"M,V",P,,
+QoS-Rule-Remove,1052,5a.3.2,Grouped,"M,V",P,,
+QoS-Rule-Definition,1053,5a.3.3,Grouped,"M,V",P,,
+QoS-Rule-Name,1054,5a.3.4,OctetString,"M,V",P,,
+QoS-Rule-Base-Name,1074,5a.3.7,UTF8String,V,P,,M
+QoS-Rule-Report,1055,5a.3.5,Grouped,"M,V",P,,
+Session-Linking-Indicator,1064,5a.3.6,Enumerated,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5b.3.0.1: Sd specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Change-1.4.0: ADC-Rule-Base-Name (1095) flag M MUST.,,,,,,,
+ADC-Rule-Base-Name,1095,5b.3.4,UTF8String,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Definition (1094) flag M MUST.,,,,,,,
+ADC-Rule-Definition,1094,5b.3.3,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Install (1092) flag M MUST.,,,,,,,
+ADC-Rule-Install,1092,5b.3.1,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Name (1096) flag M MUST.,,,,,,,
+ADC-Rule-Name,1096,5b.3.5,OctetString,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Remove (1093) flag M MUST.,,,,,,,
+ADC-Rule-Remove,1093,5b.3.2,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Report (1097) flag M MUST.,,,,,,,
+ADC-Rule-Report,1097,5b.3.6,Grouped,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5c.3.1.1: St specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Request-Type,2838,5c.3.2,Unsigned32,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table E.6.3.1.1: S15 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+CS-Service-Qos-Request-Identifier,2807,E.6.3.2,OctetString,"M, V",P,,
+CS-Service-QoS-Request-Operation,2808,E.6.3.3,Enumerated,"M, V",P,,
+CS-Service-Resource-Report,2813,E.6.3.6,Grouped,"M, V",P,,
+CS-Service-Resource-Failure-Cause,2814,E.6.3.5,Enumerated,"M, V",P,,
+CS-Service-Resource-Result-Operation,2815,E.6.3.4,Enumerated,"M, V",P,,
+,,,,,,,
+@standard,3GPP TS 29.214,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.214 V15.7.0 (2019-09),,,,,,,
+# Policy and Charging Control over Rx reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29214-f70.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.214 Table 5.3.0.1: Rx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Abort-Cause,500,5.3.1,Enumerated,"M,V",P,,
+Access-Network-Charging-Address,501,5.3.2,Address,"M,V",P,,
+Access-Network-Charging-Identifier,502,5.3.3,Grouped,"M,V",P,,
+Access-Network-Charging-Identifier-Value,503,5.3.4,OctetString,"M,V",P,,
+Acceptable-Service-Info,526,5.3.24,Grouped,"M,V",P,,
+AF-Application-Identifier,504,5.3.5,OctetString,"M,V",P,,
+AF-Charging-Identifier,505,5.3.6,OctetString,"M,V",P,,
+AF-Requested-Data,551,5.3.50,Unsigned32,V,P,,M
+AF-Signalling-Protocol,529,5.3.26,Enumerated,V,P,,M
+Application-Service-Provider-Identity,532,5.3.29,UTF8String,V,P,,M
+Codec-Data,524,5.3.7,OctetString,"M,V",P,,
+Content-Version,552,5.3.49,Unsigned64,V,P,,M
+Extended-Max-Requested-BW-DL,554,5.3.52,Unsigned32,V,P,,M
+Extended-Max-Requested-BW-UL,555,5.3.53,Unsigned32,V,P,,M
+Extended-Max-Supported-BW-DL,556,5.3.54,Unsigned32,V,P,,M
+Extended-Max-Supported-BW-UL,557,5.3.55,Unsigned32,V,P,,M
+Extended-Min-Desired-BW-DL,558,5.3.56,Unsigned32,V,P,,M
+Extended-Min-Desired-BW-UL,559,5.3.57,Unsigned32,V,P,,M
+Extended-Min-Requested-BW-DL,560,5.3.58,Unsigned32,V,P,,M
+Extended-Min-Requested-BW-UL,561,5.3.59,Unsigned32,V,P,,M
+Flow-Description,507,5.3.8,IPFilterRule,"M,V",P,,
+Flow-Number,509,5.3.9,Unsigned32,"M,V",P,,
+Flows,510,5.3.10,Grouped,"M,V",P,,
+Flow-Status,511,5.3.11,Enumerated,"M,V",P,,
+Flow-Usage,512,5.3.12,Enumerated,"M,V",P,,
+GCS-Identifier,538,5.3.36,OctetString,V,P,,M
+# Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content-Identifier (563),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Fix: IMS-Content-Identifier (563) flag M MUST NOT.,,,,,,,
+IMS-Content-Identifier,563,5.3.60,OctetString,V,P,,M
+# Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content (564),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Fix: IMS-Content (564) flag M MUST NOT.,,,,,,,
+IMS-Content-Type,564,5.3.61,Enumerated,V,P,,M
+IP-Domain-Id,537,5.3.35,OctetString,V,P,,M
+Max-Requested-Bandwidth-DL,515,5.3.14,Unsigned32,"M,V",P,,
+Max-Requested-Bandwidth-UL,516,5.3.15,Unsigned32,"M,V",P,,
+Max-Supported-Bandwidth-DL,543,5.3.41,Unsigned32,V,P,,M
+Max-Supported-Bandwidth-UL,544,5.3.42,Unsigned32,V,P,,M
+MCPTT-Identifier,547,5.3.45,OctetString,V,P,,M
+MCVideo-Identifier,562,5.3.45a,OctetString,V,P,,M
+Media-Component-Description,517,5.3.16,Grouped,"M,V",P,,
+Media-Component-Number,518,5.3.17,Unsigned32,"M,V",P,,
+Media-Component-Status,549,5.3.48,Unsigned32,V,P,,M
+Media-Sub-Component,519,5.3.18,Grouped,"M,V",P,,
+Media-Type,520,5.3.19,Enumerated,"M,V",P,,
+MPS-Identifier,528,5.3.30,OctetString,V,P,,M
+Min-Desired-Bandwidth-DL,545,5.3.43,Unsigned32,V,P,,M
+Min-Desired-Bandwidth-UL,546,5.3.44,Unsigned32,V,P,,M
+Min-Requested-Bandwidth-DL,534,5.3.32,Unsigned32,V,P,,M
+Min-Requested-Bandwidth-UL,535,5.3.33,Unsigned32,V,P,,M
+Priority-Sharing-Indicator,550,5.3.47,Enumerated,V,P,,M
+Pre-emption-Control-Info,553,5.3.51,Unsigned32,V,P,,M
+Required-Access-Info,536,5.3.34,Enumerated,V,P,,M
+Retry-Interval,541,5.3.39,Unsigned32,V,P,,M
+Rx-Request-Type,533,5.3.31,Enumerated,V,P,,M
+RR-Bandwidth,521,5.3.20,Unsigned32,"M,V",P,,
+RS-Bandwidth,522,5.3.21,Unsigned32,"M,V",P,,
+Service-Authorization-Info,548,5.3.46,Unsigned32,V,P,,M
+Service-URN,525,5.3.23,OctetString,"M,V",P,,
+Service-Info-Status,527,5.3.25,Enumerated,"M,V",P,,
+Sharing-Key-DL,539,5.3.37,Unsigned32,V,P,,M
+Sharing-Key-UL,540,5.3.38,Unsigned32,V,P,,M
+Specific-Action,513,5.3.13,Enumerated,"M,V",P,,
+SIP-Forking-Indication,523,5.3.22,Enumerated,"M,V",P,,
+Sponsor-Identity,531,5.3.28,UTF8String,V,P,,M
+Sponsored-Connectivity-Data,530,5.3.27,Grouped,V,P,,M
+Sponsoring-Action,542,5.3.40,Enumerated,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.215,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.215 V15.2.0 (2019-09),,,,,,,
+# Policy and Charging Control (PCC) over S9 reference point;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29215-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.215 Table 5.3.0.1: S9 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+DRA-Deployment,2206,5.3.7,Enumerated,V,P,,M
+Multiple-BBERF-Action,2204,5.3.6,Enumerated,"M,V",P,,
+Subsession-Decision-Info,2200,5.3.1,Grouped,"M,V",P,,
+Subsession-Enforcement-Info,2201,5.3.2,Grouped,"M,V",P,,
+Subsession-Id,2202,5.3.3,Unsigned32,"M,V",P,,
+Subsession-Operation,2203,5.3.4,Enumerated,"M,V",P,,
+DRA-Binding,2208,5.3.x,Enumerated,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.215 Table A.7.3.1.1: S9a specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+PCRF-Address,2207,A.7.3.1.1,DiameterIdentity,"V,M",P,,
+#=,,,,,,,
+# 3GPP TS 29.215 Table A.8.3.1.1: S9a* specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+UE-Local-IPv6-Prefix,2205,A.8.3.1,OctetString,"V,M",P,,
+,,,,,,,
+@standard,3GPP TS 29.217,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.217 V15.1.0 (2019-09),,,,,,,
+# Policy and Charging Control (PCC);,,,,,,,
+# Congestion reporting over Np reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29217-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.217 Table 5.3.1.1: Np specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Aggregated-Congestion-Info,4000,5.3.2,Grouped,"V, M",P,,
+Aggregated-RUCI-Report,4001,5.3.3,Grouped,"V, M",P,,
+Congestion-Level-Definition,4002,5.3.4,Grouped,V,P,,M
+Congestion-Level-Range,4003,5.3.5,Unsigned32,V,P,,M
+Congestion-Level-Set-Id,4004,5.3.6,Unsigned32,V,P,,M
+Congestion-Level-Value,4005,5.3.7,Unsigned32,"V, M",P,,
+Congestion-Location-Id,4006,5.3.8,Grouped,V,P,,M
+Conditional-Restriction,4007,5.3.9,Unsigned32,V,P,,M
+eNodeB-Id,4008,5.3.10,OctetString,"V, M",P,,
+IMSI-List,4009,5.3.11,OctetString,"V, M",P,,
+RCAF-Id,4010,5.3.12,DiameterIdentity,"V, M",P,,
+Reporting-Restriction,4011,5.3.13,Unsigned32,V,P,,M
+RUCI-Action,4012,5.3.14,Unsigned32,V,P,,M
+Extended-eNodeB-Id,4013,5.3.15,OctetString,"V, ",P,,M
+,,,,,,,
+@standard,3GPP TS 29.219,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.219 V15.3.0 (2019-09),,,,,,,
+# Policy and Charging Control: Spending Limit Reporting over,,,,,,,
+# Sy reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29219-f30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.219 Table 5.3.0.1: Sy specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Pending-Policy-Counter-Information,2905,5.3.5,Grouped,"M,V",P,,
+Pending-Policy-Counter-Change-Time,2906,5.3.6,Time,"M,V",P,,
+Policy-Counter-Identifier,2901,5.3.1,UTF8String,"M,V",P,,
+Policy-Counter-Status,2902,5.3.2,UTF8String,"M,V",P,,
+Policy-Counter-Status-Report,2903,5.3.3,Grouped,"M,V",P,,
+SL-Request-Type,2904,5.3.4,Enumerated,"M,V",P,,
+SN-Request-Type,2907,5.3.7,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.229,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.229 V15.2.0 (2019-09),,,,,,,
+# Cx and Dx interfaces based on the Diameter protocol;,,,,,,,
+# Protocol details,,,,,,,
+# ,,,,,,,
+# From 3GPP 29229-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.229 Table 6.3.1: Diameter Multimedia Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Visited-Network-Identifier,600,6.3.1,OctetString,"M, V",,,
+Public-Identity,601,6.3.2,UTF8String,"M, V",,,
+Server-Name,602,6.3.3,UTF8String,"M, V",,,
+Server-Capabilities,603,6.3.4,Grouped,"M, V",,,
+Mandatory-Capability,604,6.3.5,Unsigned32,"M, V",,,
+Optional-Capability,605,6.3.6,Unsigned32,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.329 User-Data (702).,,,,,,,
+# 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).,,,,,,,
+# 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).,,,,,,,
+User-Data,606,6.3.7,OctetString,"M, V",,,
+SIP-Number-Auth-Items,607,6.3.8,Unsigned32,"M, V",,,
+SIP-Authentication-Scheme,608,6.3.9,UTF8String,"M, V",,,
+SIP-Authenticate,609,6.3.10,OctetString,"M, V",,,
+SIP-Authorization,610,6.3.11,OctetString,"M, V",,,
+SIP-Authentication-Context,611,6.3.12,OctetString,"M, V",,,
+SIP-Auth-Data-Item,612,6.3.13,Grouped,"M, V",,,
+SIP-Item-Number,613,6.3.14,Unsigned32,"M, V",,,
+Server-Assignment-Type,614,6.3.15,Enumerated,"M, V",,,
+Deregistration-Reason,615,6.3.16,Grouped,"M, V",,,
+Reason-Code,616,6.3.17,Enumerated,"M, V",,,
+Reason-Info,617,6.3.18,UTF8String,"M, V",,,
+Charging-Information,618,6.3.19,Grouped,"M, V",,,
+Primary-Event-Charging-Function-Name,619,6.3.20,DiameterURI,"M, V",,,
+Secondary-Event-Charging-Function-Name,620,6.3.21,DiameterURI,"M, V",,,
+Primary-Charging-Collection-Function-Name,621,6.3.22,DiameterURI,"M, V",,,
+Secondary-Charging-Collection-Function-Name,622,6.3.23,DiameterURI,"M, V",,,
+User-Authorization-Type,623,6.3.24,Enumerated,"M, V",,,
+User-Data-Already-Available,624,6.3.26,Enumerated,"M, V",,,
+Confidentiality-Key,625,6.3.27,OctetString,"M, V",,,
+Integrity-Key,626,6.3.28,OctetString,"M, V",,,
+# Note: User-Data-Request-Type (627) removed in 3GPP TS 29.229 V6.5.0 (2005-06).,,,,,,,
+#,,,,,,,
+Supported-Features,628,6.3.29,Grouped,V,M,,
+Feature-List-ID,629,6.3.30,Unsigned32,V,,,M
+Feature-List,630,6.3.31,Unsigned32,V,,,M
+Supported-Applications,631,6.3.32,Grouped,V,,,M
+Associated-Identities,632,6.3.33,Grouped,V,,,M
+Originating-Request,633,6.3.34,Enumerated,"M,V",,,
+Wildcarded-Public-Identity,634,6.3.35,UTF8String,V,,,M
+SIP-Digest-Authenticate,635,6.3.36,Grouped,V,,,M
+Wildcarded-IMPU,636,6.3.43,UTF8String,V,,,M
+UAR-Flags,637,6.3.44,Unsigned32,V,,,M
+Loose-Route-Indication,638,6.3.45,Enumerated,V,,,M
+SCSCF-Restoration-Info,639,6.3.46,Grouped,V,,,M
+Path,640,6.3.47,OctetString,V,,,M
+Contact,641,6.3.48,OctetString,V,,,M
+Subscription-Info,642,6.3.49,Grouped,V,,,M
+Call-ID-SIP-Header,643,6.3.49.1,OctetString,V,,,M
+From-SIP-Header,644,6.3.49.2,OctetString,V,,,M
+To-SIP-Header,645,6.3.49.3,OctetString,V,,,M
+Record-Route,646,6.3.49.4,OctetString,V,,,M
+Associated-Registered-Identities,647,6.3.50,Grouped,V,,,M
+Multiple-Registration-Indication,648,6.3.51,Enumerated,V,,,M
+Restoration-Info,649,6.3.52,Grouped,V,,,M
+Session-Priority,650,6.3.56,Enumerated,V,,,M
+Identity-with-Emergency-Registration,651,6.3.57,Grouped,V,,,M
+Priviledged-Sender-Indication,652,6.3.58,Enumerated,V,,,M
+LIA-Flags,653,6.3.59,Unsigned32,V,,,M
+Initial-CSeq-Sequence-Number,654,6.3.62,Unsigned32,V,,,M
+SAR-Flags,655,6.3.63,Unsigned32,V,,,M
+Allowed-WAF-WWSF-Identities,656,6.3.64,Grouped,V,,,M
+WebRTC-Authentication-Function-Name,657,6.3.65,UTF8String,V,,,M
+WebRTC-Web-Server-Function-Name,658,6.3.66,UTF8String,V,,,M
+RTR-Flags,659,6.3.69,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.234,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.234 V11.2.0 (2013-06),,,,,,,
+# 3GPP system to Wireless Local Area Network (WLAN),,,,,,,
+# interworking;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29234-b20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.234 Table 10.1.1: Diameter Multimedia Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-WLAN-APN-Id,100,10.1.15,OctetString,"M, V",,,
+Authentication-Method,300,10.1.5,Enumerated,"M, V",,,
+Authentication-Information-SIM,301,10.1.6,OctetString,"M, V",,,
+Authorization-Information-SIM,302,10.1.7,OctetString,"M,V",,,
+WLAN-User-Data,303,10.1.8,Grouped,"M, V",,,
+Charging-Data,304,10.1.10,Grouped,"M, V",,,
+WLAN-Access,305,10.1.11,Enumerated,"M, V",,,
+WLAN-3GPP-IP-Access,306,10.1.12,Enumerated,"M, V",,,
+APN-Authorized,307,10.1.14,Grouped,"M, V",,,
+# Note: APN-Id (308) OctetString removed in 3GPP TS 29.234 V6.5.0 (2005-12).,,,,,,,
+#,,,,,,,
+APN-Barring-Type,309,10.1.16,Enumerated,"M, V",,,
+WLAN-Direct-IP-Access,310,10.1.17,Enumerated,"M, V",,,
+Session-Request-Type,311,10.1.23,Enumerated,"M, V",,,
+Routing-Policy,312,10.1.24,IPFilterRule,"M, V",,,
+Max-Requested-Bandwidth,313,10.1.26,OctetString,"M, V",,,
+Charging-Characteristics,314,10.1.27,Integer32,"M, V",,,
+Charging-Nodes,315,10.1.28,Grouped,"M, V",,,
+Primary-OCS-Charging-Function-Name,316,10.1.29,DiameterIdentity,"M, V",,,
+Secondary-OCS-Charging-Function-Name,317,10.1.30,DiameterIdentity,"M, V",,,
+# Note: 3GPP TS 29.273 from Release 12 now defines 3GPP-AAA-Server-Name (318).,,,,,,,
+# ,,,,,,,
+Maximum-Number-Accesses,319,10.1.38,Unsigned32,"M, V",,,
+,,,,,,,
+@standard,3GPP TS 29.272,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.272 V15.10.0 (2019-12),,,,,,,
+# Mobility Management Entity (MME),,,,,,,
+# and Serving GPRS Support Node (SGSN) related interfaces,,,,,,,
+# based on Diameter protocol,,,,,,,
+# ,,,,,,,
+# From 3GPP 29272-fa0.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+"# 3GPP TS 29.272 Table 7.3.1/1: S6a/S6d, S7a/S7d and S13/S13' specific DiameterAVPs",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Subscription-Data,1400,7.3.2,Grouped,"M,V",,,
+Terminal-Information,1401,7.3.3,Grouped,"M,V",,,
+IMEI,1402,7.3.4,UTF8String,"M,V",,,
+Software-Version,1403,7.3.5,UTF8String,"M,V",,,
+QoS-Subscribed,1404,7.3.77,OctetString,"M,V",,,
+ULR-Flags,1405,7.3.7,Unsigned32,"M,V",,,
+ULA-Flags,1406,7.3.8,Unsigned32,"M,V",,,
+Visited-PLMN-Id,1407,7.3.9,OctetString,"M,V",,,
+Requested-EUTRAN-Authentication-Info,1408,7.3.11,Grouped,"M,V",,,
+Requested-UTRAN-GERAN-Authentication-Info,1409,7.3.12,Grouped,"M,V",,,
+Number-Of-Requested-Vectors,1410,7.3.14,Unsigned32,"M,V",,,
+Re-Synchronization-Info,1411,7.3.15,OctetString,"M,V",,,
+Immediate-Response-Preferred,1412,7.3.16,Unsigned32,"M,V",,,
+Authentication-Info,1413,7.3.17,Grouped,"M,V",,,
+E-UTRAN-Vector,1414,7.3.18,Grouped,"M,V",,,
+UTRAN-Vector,1415,7.3.19,Grouped,"M,V",,,
+GERAN-Vector,1416,7.3.20,Grouped,"M,V",,,
+Network-Access-Mode,1417,7.3.21,Enumerated,"M,V",,,
+HPLMN-ODB,1418,7.3.22,Unsigned32,"M,V",,,
+Item-Number,1419,7.3.23,Unsigned32,"M,V",,,
+Cancellation-Type,1420,7.3.24,Enumerated,"M,V",,,
+DSR-Flags,1421,7.3.25,Unsigned32,"M,V",,,
+DSA-Flags,1422,7.3.26,Unsigned32,"M,V",,,
+Context-Identifier,1423,7.3.27,Unsigned32,"M,V",,,
+Subscriber-Status,1424,7.3.29,Enumerated,"M,V",,,
+Operator-Determined-Barring,1425,7.3.30,Unsigned32,"M,V",,,
+Access-Restriction-Data,1426,7.3.31,Unsigned32,"M,V",,,
+APN-OI-Replacement,1427,7.3.32,UTF8String,"M,V",,,
+All-APN-Configurations-Included-Indicator,1428,7.3.33,Enumerated,"M,V",,,
+APN-Configuration-Profile,1429,7.3.34,Grouped,"M,V",,,
+APN-Configuration,1430,7.3.35,Grouped,"M,V",,,
+EPS-Subscribed-QoS-Profile,1431,7.3.37,Grouped,"M,V",,,
+VPLMN-Dynamic-Address-Allowed,1432,7.3.38,Enumerated,"M,V",,,
+STN-SR,1433,7.3.39,OctetString,"M,V",,,
+Alert-Reason,1434,7.3.83,Enumerated,"M,V",,,
+AMBR,1435,7.3.41,Grouped,"M,V",,,
+CSG-Subscription-Data,1436,7.3.78,Grouped,"M,V",,,
+CSG-Id,1437,7.3.79,Unsigned32,"M,V",,,
+PDN-GW-Allocation-Type,1438,7.3.44,Enumerated,"M,V",,,
+Expiration-Date,1439,7.3.80,Time,"M,V",,,
+RAT-Frequency-Selection-Priority-ID,1440,7.3.46,Unsigned32,"M,V",,,
+IDA-Flags,1441,7.3.47,Unsigned32,"M,V",,,
+PUA-Flags,1442,7.3.48,Unsigned32,"M,V",,,
+NOR-Flags,1443,7.3.49,Unsigned32,"M,V",,,
+User-Id,1444,7.3.50,UTF8String,V,,,M
+Equipment-Status,1445,7.3.51,Enumerated,"M,V",,,
+Regional-Subscription-Zone-Code,1446,7.3.52,OctetString,"M,V",,,
+RAND,1447,7.3.53,OctetString,"M,V",,,
+XRES,1448,7.3.54,OctetString,"M,V",,,
+AUTN,1449,7.3.55,OctetString,"M,V",,,
+KASME,1450,7.3.56,OctetString,"M,V",,,
+Trace-Collection-Entity,1452,7.3.98,Address,"M,V",,,
+Kc,1453,7.3.59,OctetString,"M,V",,,
+SRES,1454,7.3.60,OctetString,"M,V",,,
+PDN-Type,1456,7.3.62,Enumerated,"M,V",,,
+Roaming-Restricted-Due-To-Unsupported-Feature,1457,7.3.81,Enumerated,"M,V",,,
+Trace-Data,1458,7.3.63,Grouped,"M,V",,,
+Trace-Reference,1459,7.3.64,OctetString,"M,V",,,
+Trace-Depth,1462,7.3.67,Enumerated,"M,V",,,
+Trace-NE-Type-List,1463,7.3.68,OctetString,"M,V",,,
+Trace-Interface-List,1464,7.3.69,OctetString,"M,V",,,
+Trace-Event-List,1465,7.3.70,OctetString,"M,V",,,
+OMC-Id,1466,7.3.71,OctetString,"M,V",,,
+GPRS-Subscription-Data,1467,7.3.72,Grouped,"M,V",,,
+Complete-Data-List-Included-Indicator,1468,7.3.73,Enumerated,"M,V",,,
+PDP-Context,1469,7.3.74,Grouped,"M,V",,,
+PDP-Type,1470,7.3.75,OctetString,"M,V",,,
+3GPP2-MEID,1471,7.3.6,OctetString,"M,V",,,
+Specific-APN-Info,1472,7.3.82,Grouped,"M,V",,,
+LCS-Info,1473,7.3.84,Grouped,"M,V",,,
+GMLC-Number,1474,7.3.85,OctetString,"M,V",,,
+LCS-PrivacyException,1475,7.3.86,Grouped,"M,V",,,
+SS-Code,1476,7.3.87,OctetString,"M,V",,,
+# Note: 3GPP TS 29.272 V12.5.0 (2014-06) Table 7.3.1/1,,,,,,,
+# changed row SS-Status (1477) to be OctetString instead of Grouped.,,,,,,,
+# Clause 7.3.88 already described SS-Status (1147) as OctetString.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: SS-Status (1477) type changed from Grouped to OctetString.,,,,,,,
+SS-Status,1477,7.3.88,OctetString,"M,V",,,
+Notification-To-UE-User,1478,7.3.89,Enumerated,"M,V",,,
+External-Client,1479,7.3.90,Grouped,"M,V",,,
+Client-Identity,1480,7.3.91,OctetString,"M,V",,,
+GMLC-Restriction,1481,7.3.92,Enumerated,"M,V",,,
+PLMN-Client,1482,7.3.93,Enumerated,"M,V",,,
+Service-Type,1483,7.3.94,Grouped,"M,V",,,
+ServiceTypeIdentity,1484,7.3.95,Unsigned32,"M,V",,,
+MO-LR,1485,7.3.96,Grouped,"M,V",,,
+Teleservice-List,1486,7.3.99,Grouped,"M,V",,,
+TS-Code,1487,7.3.100,OctetString,"M,V",,,
+# Note: 3GPP TS 29.272 V12.4.0 (2014-03) renamed,,,,,,,
+# Call-Barring-Infor-List (1488) to Call-Barring-Info (1488).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Call-Barring-Infor-List (1488) renamed to Call-Barring-Info (1488).,,,,,,,
+Call-Barring-Info,1488,7.3.101,Grouped,"M,V",,,
+SGSN-Number,1489,7.3.102,OctetString,"M,V",,,
+IDR-Flags,1490,7.3.103,Unsigned32,"M,V",,,
+ICS-Indicator,1491,7.3.104,Enumerated,V,,,M
+IMS-Voice-Over-PS-Sessions-Supported,1492,7.3.106,Enumerated,V,,,M
+Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions,1493,7.3.107,Enumerated,V,,,M
+Last-UE-Activity-Time,1494,7.3.108,Time,V,,,M
+EPS-User-State,1495,7.3.110,Grouped,V,,,M
+EPS-Location-Information,1496,7.3.111,Grouped,V,,,M
+MME-User-State,1497,7.3.112,Grouped,V,,,M
+SGSN-User-State,1498,7.3.113,Grouped,V,,,M
+User-State,1499,7.3.114,Enumerated,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row MME-Location-Information (1600),,,,,,,
+# incorrectly has a space instead of hyphen in the name.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MME-LocationInformation (1600) renamed to MME-Location-Information(1600).,,,,,,,
+MME-Location-Information,1600,7.3.115,Grouped,V,,,M
+SGSN-Location-Information,1601,7.3.116,Grouped,V,,,M
+E-UTRAN-Cell-Global-Identity,1602,7.3.117,OctetString,V,,,M
+Tracking-Area-Identity,1603,7.3.118,OctetString,V,,,M
+Cell-Global-Identity,1604,7.3.119,OctetString,V,,,M
+Routing-Area-Identity,1605,7.3.120,OctetString,V,,,M
+Location-Area-Identity,1606,7.3.121,OctetString,V,,,M
+Service-Area-Identity,1607,7.3.122,OctetString,V,,,M
+Geographical-Information,1608,7.3.123,OctetString,V,,,M
+Geodetic-Information,1609,7.3.124,OctetString,V,,,M
+Current-Location-Retrieved,1610,7.3.125,Enumerated,V,,,M
+Age-Of-Location-Information,1611,7.3.126,Unsigned32,V,,,M
+Active-APN,1612,7.3.127,Grouped,V,,,M
+Error-Diagnostic,1614,7.3.128,Enumerated,V,,,M
+Ext-PDP-Address,1621,7.3.129,Address,V,,,M
+UE-SRVCC-Capability,1615,7.3.130,Enumerated,V,,,M
+MPS-Priority,1616,7.3.131,Unsigned32,V,,,M
+VPLMN-LIPA-Allowed,1617,7.3.132,Enumerated,V,,,M
+LIPA-Permission,1618,7.3.133,Enumerated,V,,,M
+Subscribed-Periodic-RAU-TAU-Timer,1619,7.3.134,Unsigned32,V,,,M
+Ext-PDP-Type,1620,7.3.75A,OctetString,V,,,M
+SIPTO-Permission,1613,7.3.135,Enumerated,V,,,M
+MDT-Configuration,1622,7.3.136,Grouped,V,,,M
+Job-Type,1623,7.3.137,Enumerated,V,,,M
+Area-Scope,1624,7.3.138,Grouped,V,,,M
+List-Of-Measurements,1625,7.3.139,Unsigned32,V,,,M
+Reporting-Trigger,1626,7.3.140,Unsigned32,V,,,M
+Report-Interval,1627,7.3.141,Enumerated,V,,,M
+Report-Amount,1628,7.3.142,Enumerated,V,,,M
+Event-Threshold-RSRP,1629,7.3.143,Unsigned32,V,,,M
+Event-Threshold-RSRQ,1630,7.3.144,Unsigned32,V,,,M
+Logging-Interval,1631,7.3.145,Enumerated,V,,,M
+Logging-Duration,1632,7.3.146,Enumerated,V,,,M
+Relay-Node-Indicator,1633,7.3.147,Enumerated,V,,,M
+MDT-User-Consent,1634,7.3.148,Enumerated,V,,,M
+PUR-Flags,1635,7.3.149,Unsigned32,V,,,M
+Subscribed-VSRVCC,1636,7.3.150,Enumerated,V,,,M
+Equivalent-PLMN-List,1637,7.3.151,Grouped,V,,,M
+CLR-Flags,1638,7.3.152,Unsigned32,V,,,M
+UVR-Flags,1639,7.3.153,Unsigned32,"M,V",,,
+UVA-Flags,1640,7.3.154,Unsigned32,"M,V",,,
+VPLMN-CSG-Subscription-Data,1641,7.3.155,Grouped,"M,V",,,
+Time-Zone,1642,7.3.163,UTF8String,V,,,M
+A-MSISDN,1643,7.3.157,OctetString,V,,,M
+MME-Number-for-MT-SMS,1645,7.3.159,OctetString,V,,,M
+SMS-Register-Request,1648,7.3.162,Enumerated,V,,,M
+Local-Time-Zone,1649,7.3.156,Grouped,V,,,M
+Daylight-Saving-Time,1650,7.3.164,Enumerated,V,,,M
+Subscription-Data-Flags,1654,7.3.165,Unsigned32,V,,,M
+# Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of,,,,,,,
+# Measurement-Period-LTE (1655) from 1656.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Measurement-Period-LTE (1656) code changed to Measurement-Period-LTE (1655).,,,,,,,
+Measurement-Period-LTE,1655,7.3.166,Enumerated,V,,,M
+# Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of,,,,,,,
+# Measurement-Period-UMTS (1656) from 1655.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Measurement-Period-UMTS (1655) code changed to Measurement-Period-UMTS (1656).,,,,,,,
+Measurement-Period-UMTS,1656,7.3.167,Enumerated,V,,,M
+Collection-Period-RRM-LTE,1657,7.3.168,Enumerated,V,,,M
+Collection-Period-RRM-UMTS,1658,7.3.169,Enumerated,V,,,M
+Positioning-Method,1659,7.3.170,OctetString,V,,,M
+Measurement-Quantity,1660,7.3.171,OctetString,V,,,M
+Event-Threshold-Event-1F,1661,7.3.172,Integer32,V,,,M
+Event-Threshold-Event-1I,1662,7.3.173,Integer32,V,,,M
+Restoration-Priority,1663,7.3.174,Unsigned32,V,,,M
+SGs-MME-Identity,1664,7.3.175,UTF8String,V,,,M
+SIPTO-Local-Network-Permission,1665,7.3.176,Unsigned32,V,,,M
+Coupled-Node-Diameter-ID,1666,7.3.177,DiameterIdentity,V,,,M
+WLAN-offloadability,1667,7.3.181,Grouped,V,,,M
+WLAN-offloadability-EUTRAN,1668,7.3.182,Unsigned32,V,,,M
+WLAN-offloadability-UTRAN,1669,7.3.183,Unsigned32,V,,,M
+Reset-ID,1670,7.3.184,OctetString,V,,,M
+MDT-Allowed-PLMN-Id,1671,7.3.185,OctetString,V,,,M
+Adjacent-PLMNs,1672,7.3.186,Grouped,V,,,M
+Adjacent-Access-Restriction-Data,1673,7.3.187,Grouped,V,,,M
+DL-Buffering-Suggested-Packet-Count,1674,7.3.188,Integer32,V,,,M
+IMSI-Group-Id,1675,7.3.189,Grouped,V,,,M
+Group-Service-Id,1676,7.3.190,Unsigned32,V,,,M
+Group-PLMN-Id,1677,7.3.191,OctetString,V,,,M
+Local-Group-Id,1678,7.3.192,OctetString,V,,,M
+AIR-Flags,1679,7.3.201,Unsigned32,V,,,M
+UE-Usage-Type,1680,7.3.202,Unsigned32,V,,,M
+Non-IP-PDN-Type-Indicator,1681,7.3.204,Enumerated,V,,,M
+Non-IP-Data-Delivery-Mechanism,1682,7.3.205,Unsigned32,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row Additional-Context-ID (1683) has,,,,,,,
+"# incorrect name and should be ""Additional-Context-Identifier"" per clause 7.3.206.",,,,,,,
+# ,,,,,,,
+# Fix: Additional-Context-ID (1683) renamed to Additional-Context-Identifier (1683).,,,,,,,
+Additional-Context-Identifier,1683,7.3.206,Unsigned32,V,,,M
+SCEF-Realm,1684,7.3.207,DiameterIdentity,V,,,M
+Subscription-Data-Deletion,1685,7.3.208,Grouped,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row Preferred-Data-Mode (1686),,,,,,,
+"# incorrectly has value type Grouped instead of Unsigned32,",,,,,,,
+# conflicting with clause 7.3.209.,,,,,,,
+# ,,,,,,,
+# Fix: Preferred-Data-Mode (1686) type changed from Grouped to Unsigned32.,,,,,,,
+Preferred-Data-Mode,1686,7.3.209,Unsigned32,V,,,M
+Emergency-Info,1687,7.3.210,Grouped,V,,,M
+V2X-Subscription-Data,1688,7.3.212,Grouped,V,,,M
+V2X-Permission,1689,7.3.213,Unsigned32,V,,,M
+PDN-Connection-Continuity,1690,7.3.214,Unsigned32,V,,,M
+eDRX-Cycle-Length,1691,7.3.215,Grouped,V,,,M
+eDRX-Cycle-Length-Value,1692,7.3.216,OctetString,V,,,M
+UE-PC5-AMBR,1693,7.3.217,Unsigned32,V,,,M
+MBSFN-Area,1694,7.3.219,Grouped,V,,,M
+MBSFN-Area-ID,1695,7.3.220,Unsigned32,V,,,M
+Carrier-Frequency,1696,7.3.221,Unsigned32,V,,,M
+RDS-Indicator,1697,7.3.222,Enumerated,V,,,M
+Service-Gap-Time,1698,7.3.223,Unsigned32,V,,,M
+Aerial-UE-Subscription-Information,1699,7.3.224,Unsigned32,V,,,M
+Broadcast-Location-Assistance-Data-Types,1700,7.3.225,Unsigned64,V,,,M
+Paging-Time-Window,1701,7.3.226,Grouped,V,,,M
+Operation-Mode,1702,7.3.227,Unsigned32,V,,,M
+Paging-Time-Window-Length,1703,7.3.228,OctetString,V,,,M
+Core-Network-Restrictions,1704,7.3.230,Unsigned32,V,,,M
+eDRX-Related-RAT,1705,7.3.229,Grouped,V,,,M
+Interworking-5GS-Indicator,1706,7.3.231,Enumerated,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.273,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 V15.4.0 (2019-09),,,,,,,
+# Evolved Packet System (EPS);,,,,,,,
+# 3GPP EPS AAA interfaces,,,,,,,
+# ,,,,,,,
+# From 3GPP 29273-f40.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 5.2.3.1/1: Diameter STa AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+ANID,1504,5.2.3.7,UTF8String,"M,V",,,P
+AN-Trusted,1503,5.2.3.9,Enumerated,"M,V",,,P
+MIP-FA-RK,1506,5.2.3.12,OctetString,"M,V",,,P
+MIP-FA-RK-SPI,1507,5.2.3.13,Unsigned32,"M,V",,,P
+Full-Network-Name,1516,5.2.3.14,OctetString,V,,,"M,P"
+Short-Network-Name,1517,5.2.3.15,OctetString,V,,,"M,P"
+WLAN-Identifier,1509,5.2.3.18,Grouped,V,,,"M,P"
+AAA-Failure-Indication,1518,8.2.3.21,Unsigned32,V,,,"M,P"
+Transport-Access-Type,1519,5.2.3.19,Enumerated,V,,,"M,P"
+DER-Flags,1520,5.2.3.20,Unsigned32,V,,,"M,P"
+DEA-Flags,1521,5.2.3.21,Unsigned32,V,,,"M,P"
+SSID,1524,5.2.3.22,UTF8String,V,,,"M,P"
+HESSID,1525,5.2.3.23,UTF8String,V,,,"M,P"
+Access-Network-Info,1526,5.2.3.24,Grouped,V,,,"M,P"
+TWAN-Connection-Mode,1527,5.2.3.25,Unsigned32,V,,,"M,P"
+TWAN-Connectivity-Parameters,1528,5.2.3.26,Grouped,V,,,"M,P"
+Connectivity-Flags,1529,5.2.3.27,Unsigned32,V,,,"M,P"
+TWAN-PCO,1530,5.2.3.28,OctetString,V,,,"M,P"
+TWAG-CP-Address,1531,5.2.3.29,Address,V,,,"M,P"
+TWAG-UP-Address,1532,5.2.3.30,UTF8String,V,,,"M,P"
+TWAN-S2a-Failure-Cause,1533,5.2.3.31,Unsigned32,V,,,"M,P"
+SM-Back-Off-Timer,1534,5.2.3.32,Unsigned32,V,,,"M,P"
+WLCP-Key,1535,5.2.3.33,OctetString,V,,,"M,P"
+Emergency-Services,1538,7.2.3.4,Unsigned32,V,,,"M,P"
+IMEI-Check-In-VPLMN-Result,1540,5.2.3.35,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 6.2.3.1/1: Diameter SWd AVPs,,,,,,,
+# ,,,,,,,
+# Note: No AVPs are first defined in this table.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 7.2.3.1/1: Diameter SWm AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Trace-Info,1505,8.2.3.1.3,Grouped,V,,,"M,P"
+AAR-Flags,1539,7.2.3.5,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 8.2.3.0/1: Diameter SWx AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Non-3GPP-User-Data,1500,8.2.3.1,Grouped,"M,V",,,P
+Non-3GPP-IP-Access,1501,8.2.3.3,Enumerated,"M,V",,,P
+Non-3GPP-IP-Access-APN,1502,8.2.3.4,Enumerated,"M,V",,,P
+PPR-Flags,1508,8.2.3.17,Unsigned32,V,,,"M,P"
+TWAN-Default-APN-Context-Id,1512,8.2.3.18,Unsigned32,V,,,"M,P"
+TWAN-Access-Info,1510,8.2.3.19,Grouped,V,,,"M,P"
+Access-Authorization-Flags,1511,8.2.3.20,Unsigned32,V,,,"M,P"
+3GPP-AAA-Server-Name,318,8.2.3.24,DiameterIdentity,"M, V",,,P
+ERP-Authorization,1541,8.2.3.27,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.1.1/1: Diameter S6b AVPs for DSMIPv6,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+RAR-Flags,1522,9.2.3.1.5,Unsigned32,V,,,"M,P"
+# Note: Trust-Relationship-Update (1515) Enumerated removed in 3GPP TS 29.273 V11.4.0 (2012-12).,,,,,,,
+#,,,,,,,
+DER-S6b-Flags,1523,9.2.3.7,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.2.1/1: Diameter S6b AVPs for PMIPv6 or GTPv2,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Origination-Time-Stamp,1536,9.2.3.2.6,Unsigned64,V,,,"M,P"
+Maximum-Wait-Time,1537,9.2.3.2.7,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.6.1/1: Diameter S6b AVPs for MIPv4 FACoA,,,,,,,
+# ,,,,,,,
+# Note: No AVPs are first defined in this table.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+,,,,,,,
+@standard,3GPP TS 29.283,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.283 V15.1.0 (2019-09),,,,,,,
+# Diameter Data Management Applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29283-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+"# 3GPP TS 29.283 Table 7.3.1-1: MCPTT-2, MCVideo-2, MCData-2 and CSC-13 specific Diameter AVPs",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+MCPTT-ID,4500,7.3.2,UTF8String,"M, V",,,
+Data-Identification,4501,7.3.3,Grouped,"M, V",,,
+Data-Identification-Prefix,4502,7.3.11,Unsigned32,"M,V",,,
+Data-Identification-Flags,4503,7.3.12,Unsigned64,"M,V",,,
+DPR-Flags,4504,7.3.13,Unsigned32,"M,V",,,
+DPA-Flags,4505,7.3.14,Unsigned32,"M,V",,,
+DUR-Flags,4506,7.3.15,Unsigned32,"M,V",,,
+DUA-Flags,4507,7.3.16,Unsigned32,"M,V",,,
+NDR-Flags,4508,7.3.17,Unsigned32,"M,V",,,
+NDA-Flags,4509,7.3.18,Unsigned32,"M,V",,,
+User-Data-Id,4510,7.3.19,Unsigned32,"M,V",,,
+MC-Service-User-Profile-Data,4511,7.3.20,Grouped,"M,V",,,
+# Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107).,,,,,,,
+# and 3GPP TS 29.329 Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+# ,,,,,,,
+# Fix: Sequence-Number (4512) renamed to Sequence-Number-29.283 (4512).,,,,,,,
+Sequence-Number-29.283,4512,7.3.21,Unsigned32,"M,V",,,
+Data,4513,7.3.22,Grouped,"M,V",,,
+MCVideo-ID,4514,7.3.24,UTF8String,V,,,M
+MCData-ID,4515,7.3.25,UTF8String,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.329,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.329 V15.2.0 (2019-09),,,,,,,
+# Sh Interface based on the Diameter protocol;,,,,,,,
+# Protocol details,,,,,,,
+# ,,,,,,,
+# From 3GPP 29329-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.329 Table 6.3.1: Table 6.3.1: Diameter Multimedia Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+User-Identity,700,6.3.1,Grouped,"M, V",,,
+MSISDN,701,6.3.2,OctetString,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.229 User-Data (606).,,,,,,,
+# 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).,,,,,,,
+# 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).,,,,,,,
+# ,,,,,,,
+# Fix: User-Data (702) renamed to User-Data-29.329 (702).,,,,,,,
+User-Data-29.329,702,6.3.3,OctetString,"M, V",,,
+Data-Reference,703,6.3.4,Enumerated,"M, V",,,
+Service-Indication,704,6.3.5,OctetString,"M, V",,,
+Subs-Req-Type,705,6.3.6,Enumerated,"M, V",,,
+Requested-Domain,706,6.3.7,Enumerated,"M, V",,,
+Current-Location,707,6.3.8,Enumerated,"M, V",,,
+Identity-Set,708,6.3.10,Enumerated,V,,,M
+Expiry-Time,709,6.3.16,Time,V,,,M
+Send-Data-Indication,710,6.3.17,Enumerated,V,,,M
+DSAI-Tag,711,6.3.18,OctetString,"M, V",,,
+One-Time-Notification,712,6.3.22,Enumerated,V,,,M
+Requested-Nodes,713,6.3.7A,Unsigned32,V,,,M
+Serving-Node-Indication,714,6.3.23,Enumerated,V,,,M
+Repository-Data-ID,715,6.3.24,Grouped,V,,,M
+# Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107),,,,,,,
+# and 3GPP TS 29.283 Sequence-Number (4512).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+Sequence-Number,716,6.3.25,Unsigned32,V,,,M
+Pre-paging-Supported,717,6.3.26,Enumerated,V,,,M
+Local-Time-Zone-Indication,718,6.3.27,Enumerated,V,,,M
+UDR-Flags,719,6.3.28,Unsigned32,V,,,M
+Call-Reference-Info,720,6.3.29,Grouped,V,,,M
+Call-Reference-Number,721,6.3.30,OctetString,V,,,M
+AS-Number,722,6.3.31,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.336,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.336 V15.7.0 (2019-09),,,,,,,
+# Home Subscriber Server (HSS) diameter interfaces for,,,,,,,
+# interworking with packet data networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29336-f70.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.336 Table 6.4.1/1: S6m/S6n specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+IP-SM-GW-Number,3100,6.4.14,OctetString,"M,V",,,
+IP-SM-GW-Name,3101,6.4.15,DiameterIdentity,"M,V",,,
+User-Identifier,3102,6.4.2,Grouped,"M,V",,,
+Service-ID,3103,6.4.3,Enumerated,"M,V",,,
+SCS-Identity,3104,6.4.4,OctetString,"M,V",,,
+Service-Parameters,3105,6.4.5,Grouped,"M,V",,,
+T4-Parameters,3106,6.4.6,Grouped,"M,V",,,
+Service-Data,3107,6.4.7,Grouped,"M,V",,,
+T4-Data,3108,6.4.8,Grouped,"M,V",,,
+HSS-Cause,3109,6.4.9,Unsigned32,"M,V",,,
+SIR-Flags,3110,6.4.10,Unsigned32,"M,V",,,
+# Note: 3GPP TS 29.061 External-Identifier (28) OctetString replaced by,,,,,,,
+# 3GPP TS 29.336 External-Identifier (3111) UTF8String.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String.,,,,,,,
+External-Identifier,3111,6.4.11,UTF8String,"M,V",,,
+IP-SM-GW-Realm,3112,6.4.18,DiameterIdentity,"M,V",,,
+#=,,,,,,,
+# 3GPP TS 29.336 Table 8.4.1-1: S6t specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+AESE-Communication-Pattern,3113,8.4.25,Grouped,"M,V",,,
+Communication-Pattern-Set,3114,8.4.26,Grouped,"M,V",,,
+Periodic-Communication-Indicator,3115,8.4.27,Unsigned32,"M,V",,,
+Communication-Duration-Time,3116,8.4.28,Unsigned32,"M,V",,,
+# Note: 3GPP TS 29.336 Table 8.4.1-1 row Periodic-time (3117) has,,,,,,,
+"# incorrect name and should be ""Periodic-Time"" per majority use.",,,,,,,
+# ,,,,,,,
+# Fix: Periodic-time (3117) renamed to Periodic-Time (931).,,,,,,,
+Periodic-Time,3117,8.4.29,Unsigned32,"M,V",,,
+Scheduled-Communication-Time,3118,8.4.30,Grouped,"M,V",,,
+Stationary-Indication,3119,8.4.31,Unsigned32,"M,V",,,
+AESE-Communication-Pattern-Config-Status,3120,8.4.32,Grouped,"M,V",,,
+AESE-Error-Report,3121,8.4.33,Grouped,"M,V",,,
+Monitoring-Event-Configuration,3122,8.4.2,Grouped,"M,V",,,
+Monitoring-Event-Report,3123,8.4.3,Grouped,"M,V",,,
+SCEF-Reference-ID,3124,8.4.4,Unsigned32,"M,V",,,
+SCEF-ID,3125,8.4.5,DiameterIdentity,"M,V",,,
+SCEF-Reference-ID-for-Deletion,3126,8.4.6,Unsigned32,"M,V",,,
+Monitoring-Type,3127,8.4.7,Unsigned32,"M,V",,,
+Maximum-Number-of-Reports,3128,8.4.8,Unsigned32,"M,V",,,
+UE-Reachability-Configuration,3129,8.4.9,Grouped,"M,V",,,
+Monitoring-Duration,3130,8.4.10,Time,"M,V",,,
+Maximum-Detection-Time,3131,8.4.11,Unsigned32,"M,V",,,
+Reachability-Type,3132,8.4.12,Unsigned32,"M,V",,,
+Maximum-Latency,3133,8.4.13,Unsigned32,"M,V",,,
+Maximum-Response-Time,3134,8.4.14,Unsigned32,"M,V",,,
+Location-Information-Configuration,3135,8.4.15,Grouped,"M,V",,,
+MONTE-Location-Type,3136,8.4.16,Unsigned32,"M,V",,,
+Accuracy,3137,8.4.17,Unsigned32,"M,V",,,
+Association-Type,3138,8.4.18,Unsigned32,"M,V",,,
+Roaming-Information,3139,8.4.19,Unsigned32,"M,V",,,
+Reachability-Information,3140,8.4.20,Unsigned32,"M,V",,,
+IMEI-Change,3141,8.4.22,Unsigned32,"M,V",,,
+Monitoring-Event-Config-Status,3142,8.4.24,Grouped,"M,V",,,
+Supported-Services,3143,8.4.40,Grouped,"M,V",,,
+Supported-Monitoring-Events,3144,8.4.41,Unsigned64,"M,V",,,
+CIR-Flags,3145,8.4.39,Unsigned32,"M,V",,,
+Service-Result,3146,8.4.37,Grouped,"M,V",,,
+Service-Result-Code,3147,8.4.38,Unsigned32,"M,V",,,
+Reference-ID-Validity-Time,3148,8.4.42,Time,"M,V",,,
+Event-Handling,3149,8.4.43,Unsigned32,"M,V",,,
+NIDD-Authorization-Request,3150,8.4.44,Grouped,"M,V",,,
+NIDD-Authorization-Response,3151,8.4.45,Grouped,"M,V",,,
+Service-Report,3152,8.4.47,Grouped,"M,V",,,
+Node-Type,3153,8.4.48,Unsigned32,"M,V",,,
+S6t-HSS-Cause,3154,8.4.50,Unsigned32,"M,V",,,
+Enhanced-Coverage-Restriction,3155,8.4.51,Grouped,V,,,M
+Enhanced-Coverage-Restriction-Data,3156,8.4.52,Grouped,V,,,M
+Restricted-PLMN-List,3157,8.4.53,Grouped,V,,,M
+Allowed-PLMN-List,3158,8.4.54,Grouped,V,,,M
+Requested-Validity-Time,3159,8.4.55,Time,V,,,M
+Granted-Validity-Time,3160,8.4.56,Time,V,,,M
+NIDD-Authorization-Update,3161,8.4.57,Grouped,V,,,M
+Loss-Of-Connectivity-Reason,3162,8.4.58,Unsigned32,V,,,M
+Group-Reporting-Guard-Timer,3163,8.4.59,Unsigned32,V,,,M
+CIA-Flags,3164,8.4.60,Unsigned32,V,,,M
+Group-Monitoring-Event-Report,3165,8.4.61,Grouped,V,,,M
+Group-Monitoring-Event-Report-Item,3166,8.4.62,Grouped,V,,,M
+RIR-Flags,3167,8.4.63,Unsigned32,V,,,M
+Type-Of-External-Identifier,3168,8.4.64,Unsigned32,V,,,M
+APN-Validity-Time,3169,8.4.65,Grouped,V,,,M
+Suggested-Network-Configuration,3170,8.4.66,Grouped,V,,,M
+Monitoring-Event-Report-Status,3171,8.4.67,Grouped,V,,,M
+PLMN-ID-Requested,3172,8.4.68,Enumerated,V,,,M
+AdditionalIdentifiers,3173,8.4.69,Grouped,V,,,M
+NIR-Flags,3174,8.4.70,Unsigned32,V,,,M
+Reporting-Time-Stamp,3175,8.4.71,Time,V,,,M
+NIA-Flags,3176,8.4.72,Unsigned32,V,,,M
+Group-User-Identifier,3177,8.4.73,Grouped,V,,,M
+MTC-Provider-Info,3178,8.4.74,Grouped,V,,,M
+MTC-Provider-ID,3179,8.4.75,UTF8String,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.337,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.337 V15.0.0 (2018-06),,,,,,,
+# Diameter-based T4 interface for communications with packet,,,,,,,
+# data networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29337-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.337 Table 6.3.1/1: T4 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SM-Delivery-Outcome-T4,3200,6.3.1,Enumerated,"M, V",,,
+Absent-Subscriber-Diagnostic-T4,3201,6.3.2,Enumerated,"M, V",,,
+Trigger-Action,3202,6.3.6,Unsigned32,V,,,M
+MTC-Error-Diagnostic,3203,6.3.7,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.338,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.338 V15.1.0 (2018-12),,,,,,,
+# Diameter based protocols to support,,,,,,,
+# Short Message Service (SMS) capable,,,,,,,
+# Mobile Management Entities (MMEs),,,,,,,
+# ,,,,,,,
+# From 3GPP 29338-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.338 Table 5.3.3.1/1: S6c specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SM-RP-MTI,3308,5.3.3.2,Enumerated,"M, V",,,
+SM-RP-SMEA,3309,5.3.3.3,OctetString,"M, V",,,
+SRR-Flags,3310,5.3.3.4,Unsigned32,"M, V",,,
+SM-Delivery-Not-Intended,3311,5.3.3.5,Enumerated,"M, V",,,
+MWD-Status,3312,5.3.3.8,Unsigned32,"M, V",,,
+MME-Absent-User-Diagnostic-SM,3313,5.3.3.9,Unsigned32,"M, V",,,
+MSC-Absent-User-Diagnostic-SM,3314,5.3.3.10,Unsigned32,"M, V",,,
+SGSN-Absent-User-Diagnostic-SM,3315,5.3.3.11,Unsigned32,"M, V",,,
+SM-Delivery-Outcome,3316,5.3.3.14,Grouped,"M, V",,,
+MME-SM-Delivery-Outcome,3317,5.3.3.15,Grouped,"M, V",,,
+MSC-SM-Delivery-Outcome,3318,5.3.3.16,Grouped,"M, V",,,
+SGSN-SM-Delivery-Outcome,3319,5.3.3.17,Grouped,"M, V",,,
+IP-SM-GW-SM-Delivery-Outcome,3320,5.3.3.18,Grouped,"M, V",,,
+SM-Delivery-Cause,3321,5.3.3.19,Enumerated,"M, V",,,
+Absent-User-Diagnostic-SM,3322,5.3.3.20,Unsigned32,"M, V",,,
+RDR-Flags,3323,5.3.3.21,Unsigned32,V,,,M
+Maximum-UE-Availability-Time,3329,5.3.3.22,Time,V,,,M
+SMS-GMSC-Alert-Event,3333,5.3.3.23,Unsigned32,V,,,M
+#=,,,,,,,
+# 3GPP TS 29.338 Table 6.3.3.1/1: SGd/Gdd specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SC-Address,3300,6.3.3.2,OctetString,"M, V",,,
+SM-RP-UI,3301,6.3.3.3,OctetString,"M, V",,,
+TFR-Flags,3302,6.3.3.4,Unsigned32,"M, V",,,
+SM-Delivery-Failure-Cause,3303,6.3.3.5,Grouped,"M, V",,,
+SM-Enumerated-Delivery-Failure-Cause,3304,6.3.3.6,Enumerated,"M, V",,,
+SM-Diagnostic-Info,3305,6.3.3.7,OctetString,"M, V",,,
+SM-Delivery-Timer,3306,6.3.3.10,Unsigned32,"M, V",,,
+SM-Delivery-Start-Time,3307,6.3.3.11,Time,"M, V",,,
+SMSMI-Correlation-ID,3324,6.3.3.13,Grouped,V,,,M
+# Note: 3GPP TS 29.338 Table 6.3.3.1/1 row HSS-ID (3325),,,,,,,
+# incorrectly lists type as OctetString instead of UTF8String.,,,,,,,
+# 3GPP TS 29.338 clause 6.3.3.14 uses UTF8String.,,,,,,,
+# ,,,,,,,
+# Fix: HSS-ID (3325) type changed from OctetString to UTF8String.,,,,,,,
+HSS-ID,3325,6.3.3.14,UTF8String,V,,,M
+Originating-SIP-URI,3326,6.3.3.15,UTF8String,V,,,M
+Destination-SIP-URI,3327,6.3.3.16,UTF8String,V,,,M
+OFR-Flags,3328,6.3.3.12,Unsigned32,V,,,M
+Maximum-Retransmission-Time,3330,6.3.3.17,Time,V,,,M
+Requested-Retransmission-Time,3331,6.3.3.18,Time,V,,,M
+SMS-GMSC-Address,3332,6.3.3.19,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.343,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.343 V15.1.0 (2019-09),,,,,,,
+# Proximity-services (ProSe) function to,,,,,,,
+# ProSe application server aspects (PC2);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29343-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.343 Table 6.4.1-1: PC2 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Origin-App-Layer-User-Id,3600,6.4.2,UTF8String,"M,V",P,,
+Target-App-Layer-User-Id,3601,6.4.3,UTF8String,"M,V",P,,
+ProSe-Function-ID,3602,6.4.4,OctetString,"M,V",P,,
+ProSe-Request-Type,3603,6.4.5,Unsigned32,"M,V",P,,
+PDUID,3604,6.4.6,OctetString,V,P,,M
+Application-Data,3605,6.4.7,UTF8String,V,P,,M
+Allowed-Suffixes-Number,3606,6.4.8,Unsigned32,V,P,,M
+Monitor-Target,3607,6.4.9,Grouped,V,P,,M
+ProSe-Code-Suffix-Mask,3608,6.4.10,Grouped,V,P,,M
+Suffix-Code,3609,6.4.11,OctetString,V,P,,M
+Suffix-Mask,3610,6.4.12,OctetString,V,P,,M
+Banned-User-Target,3611,6.4.17,Grouped,V,P,,M
+Metadata-Indicator,3612,6.4.18,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.344,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.344 V15.1.0 (2019-09),,,,,,,
+# Proximity-services (ProSe) Function to Home Subscriber,,,,,,,
+# Server (HSS) aspects;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29344-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.344 Table 6.3.1-1: PC4a specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+ProSe-Subscription-Data,3701,6.3.2,Grouped,"M,V",,,
+ProSe-Permission,3702,6.3.3,Unsigned32,"M,V",,,
+ProSe-Allowed-PLMN,3703,6.3.4,Grouped,"M,V",,,
+ProSe-Direct-Allowed,3704,6.3.5,Unsigned32,"M,V",,,
+UPR-Flags,3705,6.3.6,Unsigned32,"M,V",,,
+PNR-Flags,3706,6.3.7,Unsigned32,"M,V",,,
+ProSe-Initial-Location-Information,3707,6.3.9,Grouped,"M,V",,,
+# Note: 3GPP TS 29.344 Table 6.3.1-1 missing Authorized-Discovery-Range.,,,,,,,
+# Present in 3GPP TS 29.344 clause 6.3.13 and 3GPP TS 29.230 Table 7.1.,,,,,,,
+# ,,,,,,,
+# Fix: Add Authorized-Discovery-Range (3708) Unsigned32.,,,,,,,
+Authorized-Discovery-Range,3708,6.3.13,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.345,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.345 V15.1.0 (2019-09),,,,,,,
+# Inter-Proximity-services (ProSe) Function signalling aspects;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29345-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.345 Table 6.3.1-1: PC6/PC7 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+App-Layer-User-Id,3801,6.3.2,UTF8String,"M, V",,,
+# Note: 3GPP TS 29.345 Table 6.3.1-1 row Assistance-info (3802) has,,,,,,,
+"# incorrect name and should be ""Assistance-Info"" per clause 6.3.3.",,,,,,,
+# ,,,,,,,
+# Fix: Assistance-info (3802) renamed to Assistance-Info (3802).,,,,,,,
+Assistance-Info,3802,6.3.3,Grouped,"M, V",,,
+Assistance-Info-Validity-Timer,3803,6.3.4,Unsigned32,"M, V",,,
+Discovery-Type,3804,6.3.5,Unsigned32,"M, V",,,
+Filter-Id,3805,6.3.9,OctetString,"M, V",,,
+MAC-Address,3806,6.3.11,UTF8String,"M, V",,,
+Match-Report,3807,6.3.12,Grouped,"M, V",,,
+Operating-Channel,3808,6.3.14,Unsigned32,"M, V",,,
+P2P-Features,3809,6.3.15,Unsigned32,"M, V",,,
+ProSe-App-Code,3810,6.3.16,OctetString,"M, V",,,
+ProSe-App-Id,3811,6.3.17,UTF8String,"M, V",,,
+ProSe-App-Mask,3812,6.3.18,OctetString,"M, V",,,
+ProSe-Discovery-Filter,3813,6.3.20,Grouped,"M, V",,,
+PRR-Flags,3814,6.3.21,Unsigned32,"M, V",,,
+ProSe-Validity-Timer,3815,6.3.22,Unsigned32,"M, V",,,
+Requesting-EPUID,3816,6.3.23,UTF8String,"M, V",,,
+Targeted-EPUID,3817,6.3.26,UTF8String,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.154 Time-Window (4204).,,,,,,,
+# Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates,,,,,,,
+# Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).,,,,,,,
+Time-Window,3818,6.3.27,Unsigned32,"M, V",,,
+WiFi-P2P-Assistance-Info,3819,6.3.30,Grouped,"M, V",,,
+WLAN-Assistance-Info,3820,6.3.31,Grouped,"M, V",,,
+WLAN-Link-Layer-Id,3821,6.3.32,OctetString,"M, V",,,
+WLAN-Link-Layer-Id-List,3822,6.3.33,Grouped,"M, V",,,
+Location-Update-Trigger,3823,6.3.42,Grouped,"M,V",,,
+Location-Update-Event-Type,3824,6.3.43,Unsigned32,"M,V",,,
+Change-Of-Area-Type,3825,6.3.44,Grouped,"M,V",,,
+Location-Update-Event-Trigger,3826,6.3.45,Unsigned32,"M,V",,,
+Report-Cardinality,3827,6.3.46,Enumerated,"M,V",,,
+Minimum-Interval-Time,3828,6.3.47,Unsigned32,"M,V",,,
+Periodic-Location-Type,3829,6.3.48,Grouped,"M,V",,,
+Location-Report-Interval-Time,3830,6.3.49,Unsigned32,"M,V",,,
+Total-Number-Of-Reports,3831,6.3.50,Unsigned32,"M,V",,,
+Validity-Time-Announce,3832,6.3.36,Unsigned32,"M, V",,,
+Validity-Time-Monitor,3833,6.3.37,Unsigned32,"M, V",,,
+Validity-Time-Communication,3834,6.3.38,Unsigned32,"M, V",,,
+ProSe-App-Code-Info,3835,6.3.39,Grouped,"M, V",,,
+MIC,3836,6.3.40,OctetString,"M, V",,,
+UTC-based-Counter,3837,6.3.41,Unsigned32,"M, V",,,
+ProSe-Match-Refresh-Timer,3838,6.3.52,Unsigned32,"M, V",,,
+ProSe-Metadata-Index-Mask,3839,6.3.60,OctetString,V,,,M
+App-Identifier,3840,6.3.61,Grouped,V,,,M
+OS-ID,3841,6.3.62,OctetString,V,,,M
+OS-App-ID,3842,6.3.63,UTF8String,V,,,M
+Requesting-RPAUID,3843,6.3.64,UTF8String,V,,,M
+Target-RPAUID,3844,6.3.65,UTF8String,V,,,M
+Target-PDUID,3845,6.3.66,OctetString,V,,,M
+ProSe-Restricted-Code,3846,6.3.67,OctetString,V,,,M
+ProSe-Restricted-Code-Suffix-Range,3847,6.3.68,OctetString,V,,,M
+Beginning-Suffix,3848,6.3.69,OctetString,V,,,M
+Ending-Suffix,3849,6.3.70,OctetString,V,,,M
+Discovery-Entry-ID,3850,6.3.59,Unsigned32,V,,,M
+Match-Timestamp,3851,6.3.71,Time,V,,,M
+PMR-Flags,3852,6.3.57,Unsigned32,"M,V",,,
+ProSe-Application-Metadata,3853,6.3.58,UTF8String,"M,V",,,
+Discovery-Auth-Request,3854,6.3.53,Grouped,"M, V",,,
+Discovery-Auth-Response,3855,6.3.54,Grouped,"M, V",,,
+Match-Request,3856,6.3.55,Grouped,"M, V",,,
+Match-Report-Info,3857,6.3.56,Grouped,"M, V",,,
+Banned-RPAUID,3858,6.3.73,UTF8String,V,,,M
+Banned-PDUID,3859,6.3.74,OctetString,V,,,M
+Code-Receiving-Security-Material,3860,6.3.75,Grouped,V,,,M
+Code-Sending-Security-Material,3861,6.3.76,Grouped,V,,,M
+DUSK,3862,6.3.77,OctetString,V,,,M
+DUIK,3863,6.3.78,OctetString,V,,,M
+DUCK,3864,6.3.79,OctetString,V,,,M
+# Note: 3GPP TS 29.345 Table 6.3.1-1 row MIC-Check-indicator (3865) has,,,,,,,
+"# incorrect name and should be ""MIC-Check-Indicator"" per clause 6.3.80.",,,,,,,
+# ,,,,,,,
+# Fix: MIC-Check-indicator (3865) renamed to MIC-Check-Indicator (3865).,,,,,,,
+MIC-Check-Indicator,3865,6.3.80,Unsigned32,V,,,M
+Encrypted-Bitmask,3866,6.3.81,OctetString,V,,,M
+ProSe-App-Code-Suffix-Range,3867,6.3.82,OctetString,V,,,M
+PC5-tech,3868,6.3.84,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.368,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.368 V15.1.0 (2019-09),,,,,,,
+# Tsp interface protocol between the MTC Interworking Function,,,,,,,
+# (MTC-IWF) and Service Capability Server (SCS),,,,,,,
+# ,,,,,,,
+# From 3GPP 29368-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.368 Table 6.4.1.1: Tsp specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Device-Action,3001,6. 4.2,Grouped,"M,V",P,,
+Device-Notification,3002,6.4.3,Grouped,"M,V",P,,
+Trigger-Data,3003,6.4.4,Grouped,"M,V",P,,
+Payload,3004,6.4.5,OctetString,"M,V",P,,
+Action-Type,3005,6.4.6,Enumerated,"M,V",P,,
+Priority-Indication,3006,6.4.7,Enumerated,"M,V",P,,
+Reference-Number,3007,6.4.8,Unsigned32,"M,V",P,,
+Request-Status,3008,6.4.9,Enumerated,"M,V",P,,
+Delivery-Outcome,3009,6.4.10,Enumerated,"M,V",P,,
+Application-Port-Identifier,3010,6.4.11,Unsigned32,"M,V",P,,
+Old-Reference-Number,3011,6.4.12,Unsigned32,V,P,,M
+Feature-Supported-In-Final-Target,3012,6.4.13,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.388,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.388 V15.1.0 (2019-09),,,,,,,
+# V2X Control Function to Home Subscriber Server (HSS),,,,,,,
+# aspects (V4);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29388-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.388 Table 6.3.1-1: V4 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+V2X-PC5-Allowed-PLMN,4600,6.3.3,Grouped,"M,V",,,
+V2X-Update-Flags,4601,6.3.4,Unsigned32,"M,V",,,
+V2X-Notify-Flags,4602,6.3.5,Unsigned32,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.389,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.389 V15.1.0 (2019-09),,,,,,,
+# Inter-V2X Control Function Signalling aspects (V6);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29389-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.389 Table 6.3.1-1: V6 specific Diameter AVPs,,,,,,,
+# ,,,,,,,
+# Fix: All AVPs were missing M and V; assume MUST for both.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+V2X-Authorization-Data,4700,6.3.2,Grouped,"M,V",,,
+V2X-Permission-in-VPLMN,4701,6.3.3,Unsigned32,"M,V",,,
+V2X-Application-Server,4702,6.3.4,Grouped,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.468,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.468 V15.8.0 (2019-12),,,,,,,
+# Group Communication System Enablers for LTE (GCSE_LTE);,,,,,,,
+# MB2 Reference Point;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29468-f80.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.468 Table 6.4.1 1: MB2 C specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+BMSC-Address,3500,6.4.2,Address,"M,V",P,,
+BMSC-Port,3501,6.4.3,Unsigned32,"M,V",P,,
+Common-Tunnel-Endpoint-Identifier,3524,6.4.26,OctetString,V,P,,M
+FEC-Request,3525,6.4.27,OctetString,V,P,,M
+FEC-Result,3531,6.4.33,Unsigned32,V,P,,M
+Local-M1-Information,3518,6.4.20,Grouped,V,P,,M
+Local-MB2-U-Information,3519,6.4.21,Grouped,V,P,,M
+MB2U-Security,3517,6.4.19,Unsigned32,"M,V",P,,
+MBMS-Bearer-Event,3502,6.4.4,Unsigned32,"M,V",P,,
+MBMS-Bearer-Event-Notification,3503,6.4.5,Grouped,"M,V",P,,
+MBMS-Bearer-Request,3504,6.4.6,Grouped,"M,V",P,,
+MBMS-Bearer-Response,3505,6.4.7,Grouped,"M,V",P,,
+MBMS-Bearer-Result,3506,6.4.8,Unsigned32,"M,V",P,,
+MBMS-eNB-IP-Multicast-Address,3520,6.4.22,Address,V,P,,M
+MBMS-eNB-IPv6-Multicast-Address,3521,6.4.23,Address,V,P,,M
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+# ,,,,,,,
+# Fix: MBMS-GW-SSM-IP-Address (3522) renamed to MBMS-GW-SSM-IP-Address-29.468 (3522).,,,,,,,
+MBMS-GW-SSM-IP-Address-29.468,3522,6.4.24,Address,V,P,,M
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+# ,,,,,,,
+# Fix: MBMS-GW-SSM-IPv6-Address (3523) renamed to MBMS-GW-SSM-IPv6-Address-29.468 (3523).,,,,,,,
+MBMS-GW-SSM-IPv6-Address-29.468,3523,6.4.25,Address,V,P,,M
+MBMS-Start-Time,3507,6.4.9,Time,"M,V",P,,
+# Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3462).,,,,,,,
+# 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).,,,,,,,
+# 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462).,,,,,,,
+# ,,,,,,,
+# Fix: Radio-Frequency (3508) renamed to Radio-Frequency-29.468 (3508).,,,,,,,
+Radio-Frequency-29.468,3508,6.4.10,Unsigned32,"M,V",P,,
+ROHC-Full-Header-Periodicity,3527,6.4.29,Float32,V,P,,M
+ROHC-Max-CID,3532,6.4.34,Unsigned32,V,P,,M
+ROHC-Profile,3528,6.4.30,Unsigned32,V,P,,M
+ROHC-Request,3526,6.4.28,Grouped,V,P,,M
+ROHC-Result,3530,6.4.32,Unsigned32,V,P,,M
+TMGI-Allocation-Request,3509,6.4.11,Grouped,"M,V",P,,
+TMGI-Allocation-Response,3510,6.4.12,Grouped,"M,V",P,,
+TMGI-Allocation-Result,3511,6.4.13,Unsigned32,"M,V",P,,
+TMGI-Deallocation-Request,3512,6.4.14,Grouped,"M,V",P,,
+TMGI-Deallocation-Response,3513,6.4.15,Grouped,"M,V",P,,
+TMGI-Deallocation-Result,3514,6.4.16,Unsigned32,"M,V",P,,
+TMGI-Expiry,3515,6.4.17,Grouped,"M,V",P,,
+TMGI-Number,3516,6.4.18,Unsigned32,"M,V",P,,
+Userplane-Protocol-Result,3529,6.4.31,Grouped,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.561,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.561 V16.3.0 (2020-03),,,,,,,
+# 5G System; Interworking between 5G Network and external,,,,,,,
+# Data Networks;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29561-g30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# Table 12.4-1: N6 re-used Diameter AVPs,,,,,,,
+#,,,,,,,
+# Note: Only AVPs defined in 3GPP TS 29.561.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-Notification,110,11.3.1,OctetString,V,P,,M
+3GPP-UE-MAC-Address,111,11.3.1,OctetString,V,P,,M
+3GPP-Authorization-Reference,112,11.3.1,OctetString,V,P,,M
+3GPP-Policy-Reference,113,11.3.1,OctetString,V,P,,M
+3GPP-Session-AMBR,114,11.3.1,OctetString,V,P,,M
+3GPP-NAI,115,11.3.1,OctetString,V,P,,M
+3GPP-Session-AMBR-v2,116,11.3.1,OctetString,V,P,,M
+3GPP-IP-Address-Pool-Id,118,11.3.1,OctetString,V,P,,M
+#=,,,,,,,
+# Table 17.4-1: Additional information needed for network slice specific authentication,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-S-NSSAI,200,16.3.1,UTF8String,V,P,,M
+,,,,,,,
+@standard,3GPP TS 32.299,,,,,,
+#=,,,,,,,
+# 3GPP TS 32.299 V15.7.0 (2019-06),,,,,,,
+# Charging management;,,,,,,,
+# Diameter charging applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 32299-f70.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 32.299 Table 7.2.0.1: 3GPP specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-OC-Specific-Reduction,1320,,Grouped,V,,,M
+3GPP-OC-Rating-Group,1321,,Unsigned32,V,,,M
+3GPP-OC-Request-Type,1322,,Enumerated,V,,,M
+# Note: Name conflict with 3GPP TS 29.212 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-PS-Data-Off-Status (4406) renamed to 3GPP-PS-Data-Off-Status-32.299 (4406).,,,,,,,
+3GPP-PS-Data-Off-Status-32.299,4406,,Enumerated,"V,M",,,
+Access-Network-Info-Change,4401,,Grouped,"V,M",,,
+Access-Network-Information,1263,,OctetString,"V,M",,,
+Access-Transfer-Information,2709,,Grouped,"V,M",,,
+Access-Transfer-Type,2710,,Enumerated,"V,M",,,
+Account-Expiration,2309,,Time,"V,M",,,
+Accumulated-Cost,2052,,Grouped,"V,M",,,
+Adaptations,1217,,Enumerated,"V,M",,,
+Additional-Content-Information,1207,,Grouped,"V,M",,,
+Additional-Exception-Reports,3936,,Enumerated,"V,M",,,
+Additional-Type-Information,1205,,UTF8String,"V,M",,,
+Address-Data,897,,UTF8String,"V,M",,,
+Address-Domain,898,,Grouped,"V,M",,,
+Addressee-Type,1208,,Enumerated,"V,M",,,
+Address-Type,899,,Enumerated,"V,M",,,
+AF-Correlation-Information,1276,,Grouped,"V,M",,,
+Alternate-Charged-Party-Address,1280,,UTF8String,"V,M",,,
+Announcement-Identifier,3905,,Unsigned32,"V,M",,,
+Announcement-Information,3904,,Grouped,"V,M",,,
+Announcement-Order,3906,,Unsigned32,"V,M",,,
+Announcing-PLMN-ID,4408,,UTF8String,"V,M",,,
+Announcing-UE-HPLMN-Identifier,3426,,UTF8String,"V,M",,,
+Announcing-UE-VPLMN-Identifier,3427,,UTF8String,"V,M",,,
+AoC-Cost-Information,2053,,Grouped,"V,M",,,
+AoC-Format,2310,,Enumerated,"V,M",,,
+AoC-Information,2054,,Grouped,"V,M",,,
+AoC-Request-Type,2055,,Enumerated,"V,M",,,
+AoC-Service,2311,,Grouped,"V,M",,,
+AoC-Service-Obligatory-Type,2312,,Enumerated,"V,M",,,
+AoC-Service-Type,2313,,Enumerated,"V,M",,,
+AoC-Subscription-Information,2314,,Grouped,"V,M",,,
+API-Content,1309,,UTF8String,V,,,M
+API-Direction,1310,,Enumerated,V,,,M
+API-Identifier,1311,,OctetString,V,,,M
+API-Invocation-Timestamp,1312,,Time,V,,,M
+API-Network-Service-Node,1315,,Enumerated,V,,,M
+API-Result-Code,1313,,Unsigned32,V,,,M
+API-Size,1314,,Unsigned64,V,,,M
+APN-Rate-Control,3933,,Grouped,"V,M",,,
+APN-Rate-Control-Downlink,3934,,Grouped,"V,M",,,
+APN-Rate-Control-Uplink,3935,,Grouped,"V,M",,,
+Applic-ID,1218,,UTF8String,"V,M",,,
+Application-Provided-Called-Party-Address,837,,UTF8String,"V,M",,,
+Application-Server,836,,UTF8String,"V,M",,,
+Application-Server-Information,850,,Grouped,"V,M",,,
+Application-Specific-Data,3458,,OctetString,"V,M",,,
+Associated-Party-Address,2035,,UTF8String,"V,M",,,
+Associated-URI,856,,UTF8String,"V,M",,,
+Authorised-QoS,849,,UTF8String,"V,M",,,
+Aux-Applic-Info,1219,,UTF8String,"V,M",,,
+Base-Time-Interval,1265,,Unsigned32,"V,M",,,
+Basic-Service-Code,3411,,Grouped,"V,M",,,
+Bearer-Capability,3412,,OctetString,"V,M",,,
+Bearer-Service,854,,OctetString,"V,M",,,
+BSSID,2716,,UTF8String,"V,M",,,
+Called-Asserted-Identity,1250,,UTF8String,"V,M",,,
+Called-Identity,3916,,UTF8String,"V,M",,,
+Called-Identity-Change,3917,,Grouped,"V,M",,,
+Called-Party-Address,832,,UTF8String,"V,M",,,
+Calling-Party-Address,831,,UTF8String,"V,M",,,
+Carrier-Select-Routing-Information,2023,,UTF8String,"V,M",,,
+Cause-Code,861,,Integer32,"V,M",,,
+Cellular-Network-Information,3924,,OctetString,"V,M",,,
+CG-Address,846,,Address,"V,M",,,
+Change-Condition,2037,,Integer32,"V,M",,,
+Change-Time,2038,,Time,"V,M",,,
+Charge-Reason-Code,2118,,Enumerated,"V,M",,,
+Charged-Party,857,,UTF8String,"V,M",,,
+Charging-Characteristics-Selection-Mode,2066,,Enumerated,"V,M",,,
+Charging-Per-IP-CAN-Session-Indicator,4400,,Enumerated,"V,M",,,
+Civic-Address-Information,1305,,UTF8String,V,,,M
+Class-Identifier,1214,,Enumerated,"V,M",,,
+Client-Address,2018,,Address,"V,M",,,
+CN-Operator-Selection-Entity,3421,,Enumerated,"V,M",,,
+Content-Class,1220,,Enumerated,"V,M",,,
+Content-Disposition,828,,UTF8String,"V,M",,,
+Content-Length,827,,Unsigned32,"V,M",,,
+Content-Size,1206,,Unsigned32,"V,M",,,
+Content-Type,826,,UTF8String,"V,M",,,
+Coverage-Info,3459,,Grouped,"V,M",,,
+Coverage-Status,3428,,Enumerated,"V,M",,,
+CP-CIoT-EPS-Optimisation-Indicator,3930,,Enumerated,"V,M",,,
+CPDT-Information,3927,,Grouped,"V,M",,,
+CSG-Access-Mode,2317,,Enumerated,"V,M",,,
+CSG-Membership-Indication,2318,,Enumerated,"V,M",,,
+CUG-Information,2304,,OctetString,"V,M",,,
+Current-Tariff,2056,,Grouped,"V,M",,,
+Data-Coding-Scheme,2001,,Integer32,"V,M",,,
+Deferred-Location-Event-Type,1230,,UTF8String,"V,M",,,
+Delivery-Report-Requested,1216,,Enumerated,"V,M",,,
+Destination-Interface,2002,,Grouped,"V,M",,,
+Diagnostics,2039,,Integer32,"V,M",,,
+Discoveree-UE-HPLMN-Identifier,4402,,UTF8String,"V,M",,,
+Discoveree-UE-VPLMN-Identifier,4403,,UTF8String,"V,M",,,
+Discoverer-UE-HPLMN-Identifier,4404,,UTF8String,"V,M",,,
+Discoverer-UE-VPLMN-Identifier,4405,,UTF8String,"V,M",,,
+Domain-Name,1200,,UTF8String,"V,M",,,
+DRM-Content,1221,,Enumerated,"V,M",,,
+Dynamic-Address-Flag,2051,,Enumerated,"V,M",,,
+Dynamic-Address-Flag-Extension,2068,,Enumerated,"V,M",,,
+Early-Media-Description,1272,,Grouped,"V,M",,,
+Enhanced-Diagnostics,3901,,Grouped,"V,M",,,
+Envelope,1266,,Grouped,"V,M",,,
+Envelope-End-Time,1267,,Time,"V,M",,,
+Envelope-Reporting,1268,,Enumerated,"V,M",,,
+Envelope-Start-Time,1269,,Time,"V,M",,,
+EPDG-Address,3425,,Address,"V,M",,,
+Event,825,,UTF8String,"V,M",,,
+Event-Charging-TimeStamp,1258,,Time,"V,M",,,
+Event-Type,823,,Grouped,"V,M",,,
+Expires,888,,Unsigned32,"V,M",,,
+Exposure-Function-API-Information,1316,,Grouped,V,,,M
+FE-Identifier-List,4413,,UTF8String,"V,M",,,
+File-Repair-Supported,1224,,Enumerated,"V,M",,,
+Forwarding-Pending,3415,,Enumerated,"V,M",,,
+From-Address,2708,,UTF8String,"V,M",,,
+GGSN-Address,847,,Address,"V,M",,,
+IMS-Application-Reference-Identifier,2601,,UTF8String,"V,M",,,
+IMS-Charging-Identifier,841,,UTF8String,"V,M",,,
+IMS-Communication-Service-Identifier,1281,,UTF8String,"V,M",,,
+IMS-Emergency-Indicator,2322,,Enumerated,"V,M",,,
+IMS-Information,876,,Grouped,"V,M",,,
+IMS-Visited-Network-Identifier,2713,,UTF8String,"V,M",,,
+IMSI-Unauthenticated-Flag,2308,,Enumerated,"V,M",,,
+Incoming-Trunk-Group-Id,852,,UTF8String,"V,M",,,
+Incremental-Cost,2062,,Grouped,"V,M",,,
+Initial-IMS-Charging-Identifier,2321,,UTF8String,"V,M",,,
+Instance-Id,3402,,UTF8String,"V,M",,,
+Interface-Id,2003,,UTF8String,"V,M",,,
+Interface-Port,2004,,UTF8String,"V,M",,,
+Interface-Text,2005,,UTF8String,"V,M",,,
+Interface-Type,2006,,Enumerated,"V,M",,,
+Inter-Operator-Identifier,838,,Grouped,"V,M",,,
+Inter-UE-Transfer,3902,,Enumerated,"V,M",,,
+IP-Realm-Default-Indication,2603,,Enumerated,"V,M",,,
+ISUP-Cause,3416,,Grouped,"V,M",,,
+ISUP-Cause-Diagnostics,3422,,OctetString,"V,M",,,
+ISUP-Cause-Location,3423,,Unsigned32,"V,M",,,
+ISUP-Cause-Value,3424,,Unsigned32,"V,M",,,
+ISUP-Location-Number,3414,,OctetString,"V,M",,,
+Language,3914,,UTF8String,"V,M",,,
+Layer-2-Group-ID,3429,,OctetString,"V,M",,,
+LCS-APN,1231,,UTF8String,"V,M",,,
+LCS-Client-Dialed-By-MS,1233,,UTF8String,"V,M",,,
+LCS-Client-External-ID,1234,,UTF8String,"V,M",,,
+LCS-Client-Id,1232,,Grouped,"V,M",,,
+LCS-Client-Name,1235,,Grouped,"V,M",,,
+LCS-Client-Type,1241,,Enumerated,"V,M",,,
+LCS-Data-Coding-Scheme,1236,,UTF8String,"V,M",,,
+LCS-Format-Indicator,1237,,Enumerated,"V,M",,,
+LCS-Information,878,,Grouped,"V,M",,,
+LCS-Name-String,1238,,UTF8String,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed,,,,,,,
+# LCS-Requestor-Id (1239) to LCS-Requestor-ID (1239).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: LCS-Requestor-Id (1239) renamed to LCS-Requestor-ID (1239).,,,,,,,
+LCS-Requestor-ID,1239,,Grouped,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed,,,,,,,
+# LCS-Requestor-Id-String (1240) to LCS-Requestor-ID-String (1240).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: LCS-Requestor-Id-String (1240) renamed to LCS-Requestor-ID-String (1240).,,,,,,,
+LCS-Requestor-ID-String,1240,,UTF8String,"V,M",,,
+Local-GW-Inserted-Indication,2604,,Enumerated,"V,M",,,
+Local-Sequence-Number,2063,,Unsigned32,"V,M",,,
+Location-Estimate,1242,,OctetString,"V,M",,,
+Location-Estimate-Type,1243,,Enumerated,"V,M",,,
+Location-Info,3460,,Grouped,"V,M",,,
+Location-Type,1244,,Grouped,"V,M",,,
+Low-Balance-Indication,2020,,Enumerated,"V,M",,,
+Low-Priority-Indicator,2602,,Enumerated,"V,M",,,
+MBMS-Charged-Party,2323,,Enumerated,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) Table 7.2 changed,,,,,,,
+# row MBMS-GW-Address (2307) to have a hyphen instead of space.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMSGW-Address (2307) renamed to MBMS-GW-Address (2307).,,,,,,,
+MBMS-GW-Address,2307,,Address,"V,M",,,
+MBMS-Information,880,,Grouped,"V,M",,,
+MBMS-User-Service-Type,1225,,Enumerated,"V,M",,,
+Media-Initiator-Flag,882,,Enumerated,"V,M",,,
+Media-Initiator-Party,1288,,UTF8String,"V,M",,,
+Message-Body,889,,Grouped,"V,M",,,
+Message-Class,1213,,Grouped,"V,M",,,
+Message-ID,1210,,UTF8String,"V,M",,,
+Message-Size,1212,,Unsigned32,"V,M",,,
+Message-Type,1211,,Enumerated,"V,M",,,
+MMBox-Storage-Requested,1248,,Enumerated,"V,M",,,
+MM-Content-Type,1203,,Grouped,"V,M",,,
+MMS-Information,877,,Grouped,"V,M",,,
+MMTel-Information,2030,,Grouped,"V,M",,,
+MMTel-SService-Type,2031,,Unsigned32,"V,M",,,
+Monitored-PLMN-Identifier,3430,,UTF8String,"V,M",,,
+Monitoring-Event-Configuration-Activity,3919,,Integer32,"V,M",,,
+Monitoring-Event-Functionality,3922,,Integer32,"V,M",,,
+Monitoring-Event-Information,3921,,Grouped,"V,M",,,
+Monitoring-Event-Report-Data,3920,,Grouped,"V,M",,,
+Monitoring-Event-Report-Number,3923,,Unsigned32,"V,M",,,
+Monitoring-UE-HPLMN-Identifier,3431,,UTF8String,"V,M",,,
+Monitoring-UE-Identifier,3432,,UTF8String,"V,M",,,
+Monitoring-UE-VPLMN-Identifier,3433,,UTF8String,"V,M",,,
+MSC-Address,3417,,OctetString,"V,M",,,
+MTC-IWF-Address,3406,,Address,"V,M",,,
+Neighbour-Node-Address,2705,,Address,"V,M",,,
+Network-Call-Reference-Number,3418,,OctetString,"V,M",,,
+Next-Tariff,2057,,Grouped,"V,M",,,
+NIDD-Submission,3928,,Grouped,"V,M",,,
+NNI-Information,2703,,Grouped,"V,M",,,
+NNI-Type,2704,,Enumerated,"V,M",,,
+Node-Functionality,862,,Enumerated,"V,M",,,
+Node-Id,2064,,UTF8String,"V,M",,,
+Number-Of-Diversions,2034,,Unsigned32,"V,M",,,
+Number-Of-Messages-Sent,2019,,Unsigned32,"V,M",,,
+Number-Of-Participants,885,,Unsigned32,"V,M",,,
+Number-Of-Received-Talk-Bursts,1282,,Unsigned32,"V,M",,,
+Number-Of-Talk-Bursts,1283,,Unsigned32,"V,M",,,
+Number-Portability-Routing-Information,2024,,UTF8String,"V,M",,,
+Offline-Charging,1278,,Grouped,"V,M",,,
+Online-Charging-Flag,2303,,Enumerated,"V,M",,,
+Originating-IOI,839,,UTF8String,"V,M",,,
+Originator,864,,Enumerated,"V,M",,,
+Originator-Address,886,,Grouped,"V,M",,,
+Originator-Interface,2009,,Grouped,"V,M",,,
+Originator-Received-Address,2027,,Grouped,"V,M",,,
+Originator-SCCP-Address,2008,,Address,"V,M",,,
+Outgoing-Session-Id,2320,,UTF8String,"V,M",,,
+Outgoing-Trunk-Group-Id,853,,UTF8String,"V,M",,,
+Participant-Access-Priority,1259,,Enumerated,"V,M",,,
+Participant-Action-Type,2049,,Enumerated,"V,M",,,
+Participant-Group,1260,,Grouped,"V,M",,,
+Participants-Involved,887,,UTF8String,"V,M",,,
+PC3-Control-Protocol-Cause,3434,,Integer32,"V,M",,,
+PC3-EPC-Control-Protocol-Cause,3435,,Integer32,"V,M",,,
+PC5-Radio-Technology,1300,,Enumerated,V,,,M
+PDN-Connection-Charging-ID,2050,,Unsigned32,"V,M",,,
+PDP-Address,1227,,Address,"V,M",,,
+PDP-Address-Prefix-Length,2606,,Unsigned32,"V,M",,,
+PDP-Context-Type,1247,,Enumerated,"V,M",,,
+# Change-1.4.0: PDG-Address (895) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: PDG-Charging-Id (896) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+Play-Alternative,3913,,Enumerated,"V,M",,,
+PoC-Change-Condition,1261,,Enumerated,"V,M",,,
+PoC-Change-Time,1262,,Time,"V,M",,,
+PoC-Controlling-Address,858,,UTF8String,"V,M",,,
+PoC-Event-Type,2025,,Enumerated,"V,M",,,
+PoC-Group-Name,859,,UTF8String,"V,M",,,
+PoC-Information,879,,Grouped,"V,M",,,
+PoC-Server-Role,883,,Enumerated,"V,M",,,
+PoC-Session-Id,1229,,UTF8String,"V,M",,,
+PoC-Session-Initiation-type,1277,,Enumerated,"V,M",,,
+PoC-Session-Type,884,,Enumerated,"V,M",,,
+PoC-User-Role,1252,,Grouped,"V,M",,,
+PoC-User-Role-IDs,1253,,UTF8String,"V,M",,,
+# Note: 3GPP TS 32.299 V13.1.0 (2015-06) renamed,,,,,,,
+# PoC-User-Role-info-Units (1254) to PoC-User-Role-Info-Units (1254).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PoC-User-Role-info-Units (1254) renamed to PoC-User-Role-Info-Units (1254).,,,,,,,
+PoC-User-Role-Info-Units,1254,,Enumerated,"V,M",,,
+Positioning-Data,1245,,UTF8String,"V,M",,,
+Preferred-AoC-Currency,2315,,Unsigned32,"V,M",,,
+Priority,1209,,Enumerated,"V,M",,,
+Privacy-Indicator,3915,,Enumerated,"V,M",,,
+ProSe-3rd-Party-Application-ID,3440,,UTF8String,"V,M",,,
+ProSe-Direct-Communication-Reception-Data-Container,3461,,Grouped,"V,M",,,
+ProSe-Direct-Communication-Transmission-Data-Container,3441,,Grouped,"V,M",,,
+ProSe-Direct-Discovery-Model,3442,,Enumerated,"V,M",,,
+ProSe-Event-Type,3443,,Enumerated,"V,M",,,
+ProSe-Function-IP-Address,3444,,Address,"V,M",,,
+ProSe-Function-PLMN-Identifier,3457,,UTF8String,"V,M",,,
+ProSe-Functionality,3445,,Enumerated,"V,M",,,
+ProSe-Group-IP-Multicast-Address,3446,,Address,"V,M",,,
+ProSe-Information,3447,,Grouped,"V,M",,,
+ProSe-Range-Class,3448,,Enumerated,"V,M",,,
+ProSe-Reason-For-Cancellation,3449,,Enumerated,"V,M",,,
+ProSe-Request-Timestamp,3450,,Time,"V,M",,,
+ProSe-Role-Of-UE,3451,,Enumerated,"V,M",,,
+ProSe-Source-IP-Address,3452,,Address,"V,M",,,
+ProSe-Target-Layer-2-ID,4410,,OctetString,"V,M",,,
+ProSe-UE-ID,3453,,OctetString,"V,M",,,
+ProSe-UE-to-Network-Relay-UE-ID,4409,,OctetString,"V,M",,,
+Proximity-Alert-Indication,3454,,Enumerated,"V,M",,,
+Proximity-Alert-Timestamp,3455,,Time,"V,M",,,
+Proximity-Cancellation-Timestamp,3456,,Time,"V,M",,,
+PS-Append-Free-Format-Data,867,,Enumerated,"V,M",,,
+PS-Free-Format-Data,866,,OctetString,"V,M",,,
+PS-Furnish-Charging-Information,865,,Grouped,"V,M",,,
+PS-Information,874,,Grouped,"V,M",,,
+Quota-Consumption-Time,881,,Unsigned32,"V,M",,,
+Quota-Holding-Time,871,,Unsigned32,"V,M",,,
+Quota-Indicator,3912,,Enumerated,"V,M",,,
+# Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3508),,,,,,,
+# 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).,,,,,,,
+# 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462).,,,,,,,
+Radio-Frequency,3462,,OctetString,"V,M",,,
+Radio-Parameter-Set-Info,3463,,Grouped,"V,M",,,
+Radio-Parameter-Set-Values,3464,,OctetString,"V,M",,,
+Radio-Resources-Indicator,3465,,Integer32,"V,M",,,
+RAN-End-Time,1301,,Time,V,,,M
+RAN-Secondary-RAT-Usage-Report,1302,,Grouped,V,,,M
+RAN-Start-Time,1303,,Time,V,,,M
+Rate-Control-Max-Message-Size,3937,,Unsigned32,"V,M",,,
+Rate-Control-Max-Rate,3938,,Unsigned32,"V,M",,,
+Rate-Control-Time-Unit,3939,,Unsigned32,"V,M",,,
+Rate-Element,2058,,Grouped,"V,M",,,
+Read-Reply-Report-Requested,1222,,Enumerated,"V,M",,,
+Real-Time-Tariff-Information,2305,,Grouped,"V,M",,,
+Reason-Header,3401,,UTF8String,"V,M",,,
+Received-Talk-Burst-Time,1284,,Unsigned32,"V,M",,,
+Received-Talk-Burst-Volume,1285,,Unsigned32,"V,M",,,
+# Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201);,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108).,,,,,,,
+# 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201).,,,,,,,
+Recipient-Address,1201,,Grouped,"V,M",,,
+Recipient-Info,2026,,Grouped,"V,M",,,
+Recipient-Received-Address,2028,,Grouped,"V,M",,,
+Recipient-SCCP-Address,2010,,Address,"V,M",,,
+Refund-Information,2022,,OctetString,"V,M",,,
+Related-Change-Condition-Information,3925,,Grouped,"V,M",,,
+Related-Trigger,3926,,Grouped,"V,M",,,
+Related-IMS-Charging-Identifier,2711,,UTF8String,"V,M",,,
+Related-IMS-Charging-Identifier-Node,2712,,Address,"V,M",,,
+Relationship-Mode,2706,,Enumerated,"V,M",,,
+Relay-IP-address,4411,,Address,"V,M",,,
+Remaining-Balance,2021,,Grouped,"V,M",,,
+Reply-Applic-ID,1223,,UTF8String,"V,M",,,
+Reply-Path-Requested,2011,,Enumerated,"V,M",,,
+Reporting-Reason,872,,Enumerated,"V,M",,,
+Requested-Party-Address,1251,,UTF8String,"V,M",,,
+Requested-PLMN-Identifier,3436,,UTF8String,"V,M",,,
+Requestor-PLMN-Identifier,3437,,UTF8String,"V,M",,,
+Role-Of-Node,829,,Enumerated,"V,M",,,
+Role-Of-ProSe-Function,3438,,Enumerated,"V,M",,,
+Route-Header-Received,3403,,UTF8String,"V,M",,,
+Route-Header-Transmitted,3404,,UTF8String,"V,M",,,
+Scale-Factor,2059,,Grouped,"V,M",,,
+SCEF-Address,1317,,Address,V,,,M
+SCS-Address,3941,,Address,"V,M",,,
+SCS-AS-Address,3940,,Grouped,"V,M",,,
+SCS-Realm,3942,,DiameterIdentity,"V,M",,,
+SDP-Answer-Timestamp,1275,,Time,"V,M",,,
+SDP-Media-Component,843,,Grouped,"V,M",,,
+SDP-Media-Description,845,,UTF8String,"V,M",,,
+SDP-Media-Name,844,,UTF8String,"V,M",,,
+SDP-Offer-Timestamp,1274,,Time,"V,M",,,
+SDP-Session-Description,842,,UTF8String,"V,M",,,
+SDP-TimeStamps,1273,,Grouped,"V,M",,,
+SDP-Type,2036,,Enumerated,"V,M",,,
+Secondary-RAT-Type,1304,,OctetString,V,,,M
+Serving-Node-Identity,3929,,DiameterIdentity,"V,M",,,
+Served-Party-IP-Address,848,,Address,"V,M",,,
+Service-Data-Container,2040,,Grouped,"V,M",,,
+Service-Id,855,,UTF8String,"V,M",,,
+Service-Information,873,,Grouped,"V,M",,,
+Service-Mode,2032,,Unsigned32,"V,M",,,
+Service-Specific-Data,863,,UTF8String,"V,M",,,
+Service-Specific-Info,1249,,Grouped,"V,M",,,
+Service-Specific-Type,1257,,Unsigned32,"V,M",,,
+Serving-Node-Type,2047,,Enumerated,"V,M",,,
+Session-Direction,2707,,Enumerated,"V,M",,,
+SGi-PtP-Tunnelling-Method,3931,,Enumerated,"V,M",,,
+SGSN-Address,1228,,Address,"V,M",,,
+SGW-Address,2067,,Address,"V,M",,,
+SGW-Change,2065,,Enumerated,"V,M",,,
+SIP-Method,824,,UTF8String,"V,M",,,
+SIP-Request-Timestamp,834,,Time,"V,M",,,
+SIP-Request-Timestamp-Fraction,2301,,Unsigned32,"V,M",,,
+SIP-Response-Timestamp,835,,Time,"V,M",,,
+SIP-Response-Timestamp-Fraction,2302,,Unsigned32,"V,M",,,
+SM-Device-Trigger-Indicator,3407,,Enumerated,"V,M",,,
+SM-Device-Trigger-Information,3405,,Grouped,"V,M",,,
+SM-Discharge-Time,2012,,Time,"V,M",,,
+SM-Message-Type,2007,,Enumerated,"V,M",,,
+SM-Protocol-ID,2013,,OctetString,"V,M",,,
+SM-Sequence-Number,3408,,Unsigned32,"V,M",,,
+SM-Service-Type,2029,,Enumerated,"V,M",,,
+SM-Status,2014,,OctetString,"V,M",,,
+SM-User-Data-Header,2015,,OctetString,"V,M",,,
+SMS-Information,2000,,Grouped,"V,M",,,
+SMS-Node,2016,,Enumerated,"V,M",,,
+SMS-Result,3409,,Unsigned32,"V,M",,,
+SMSC-Address,2017,,Address,"V,M",,,
+Start-of-Charging,3419,,Time,"V,M",,,
+Start-Time,2041,,Time,"V,M",,,
+# Note: 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed,,,,,,,
+# Status (2702) to Status-Code (2702).,,,,,,,
+# 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed,,,,,,,
+# Status-Code (2702) to Status-AS-Code (2702).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Status (2702) renamed to Status-AS-Code (2702).,,,,,,,
+Status-AS-Code,2702,,Enumerated,"V,M",,,
+Stop-Time,2042,,Time,"V,M",,,
+Submission-Time,1202,,Time,"V,M",,,
+Subscriber-Role,2033,,Enumerated,"V,M",,,
+Supplementary-Service,2048,,Grouped,"V,M",,,
+TAD-Identifier,2717,,Enumerated,"V,M",,,
+Talk-Burst-Exchange,1255,,Grouped,"V,M",,,
+Talk-Burst-Time,1286,,Unsigned32,"V,M",,,
+Talk-Burst-Volume,1287,,Unsigned32,"V,M",,,
+Target-IP-Address,4412,,Address,VM,,,
+Tariff-Information,2060,,Grouped,"V,M",,,
+Tariff-XML,2306,,UTF8String,"V,M",,,
+Teleservice,3413,,OctetString,"V,M",,,
+Terminating-IOI,840,,UTF8String,"V,M",,,
+Time-First-Reception,3466,,Time,"V,M",,,
+Time-First-Transmission,3467,,Time,"V,M",,,
+Time-First-Usage,2043,,Time,"V,M",,,
+Time-Indicator,3911,,Unsigned32,"V,M",,,
+Time-Last-Usage,2044,,Time,"V,M",,,
+Time-Quota-Mechanism,1270,,Grouped,"V,M",,,
+Time-Quota-Threshold,868,,Unsigned32,"V,M",,,
+Time-Quota-Type,1271,,Enumerated,"V,M",,,
+Time-Stamps,833,,Grouped,"V,M",,,
+Time-Usage,2045,,Unsigned32,"V,M",,,
+TLTRI,1318,,Unsigned32,V,,,M
+Token-Text,1215,,UTF8String,"V,M",,,
+Traffic-Data-Volumes,2046,,Grouped,"V,M",,,
+Transcoder-Inserted-Indication,2605,,Enumerated,"V,M",,,
+Transit-IOI-List,2701,,UTF8String,"V,M",,,
+Transmitter-Info,3468,,Grouped,"V,M",,,
+Trigger,1264,,Grouped,"V,M",,,
+Trigger-Type,870,,Enumerated,"V,M",,,
+Trunk-Group-Id,851,,Grouped,"V,M",,,
+TWAG-Address,3903,,Address,"V,M",,,
+TWAN-User-Location-Info,2714,,Grouped,"V,M",,,
+Type-Number,1204,,Enumerated,"V,M",,,
+UNI-PDU-CP-Only-Flag,3932,,Enumerated,"V,M",,,
+Unit-Cost,2061,,Grouped,"V,M",,,
+Unit-Quota-Threshold,1226,,Unsigned32,"V,M",,,
+Unused-Quota-Timer,4407,,Unsigned32,"V,M",,,
+Usage-Information-Report-Sequence-Number,3439,,Integer32,"V,M",,,
+User-CSG-Information,2319,,Grouped,"V,M",,,
+User-Participating-Type,1279,,Enumerated,"V,M",,,
+User-Session-Id,830,,UTF8String,"V,M",,,
+UWAN-User-Location-Info,3918,,Grouped,"V,M",,,
+Variable-Part,3907,,Grouped,"V,M",,,
+Variable-Part-Order,3908,,Unsigned32,"V,M",,,
+Variable-Part-Type,3909,,Unsigned32,"V,M",,,
+Variable-Part-Value,3910,,UTF8String,"V,M",,,
+VCS-Information,3410,,Grouped,"V,M",,,
+VLR-Number,3420,,OctetString,"V,M",,,
+Volume-Quota-Threshold,869,,Unsigned32,"V,M",,,
+# Change-1.4.0: WAG-Address (890) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WAG-PLMN-Id (891) OctetString removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Information (875) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+WLAN-Operator-Id,1306,,Grouped,V,,,M
+WLAN-Operator-Name,1307,,UTF8String,V,,,M
+WLAN-PLMN-Id,1308,,UTF8String,V,,,M
+# Change-1.4.0: WLAN-Radio-Container (892) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Session-Id (1246) UTF8String removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Technology (893) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-UE-Local-IPAddress (894) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+,,,,,,,
+@standard,OMA DDS Charging Data,,,,,,
+#=,,,,,,,
+# OMA DDS Charging_Data V1.0 20110201-A,,,,,,,
+# Charging Data,,,,,,,
+# ,,,,,,,
+# From OMA OMA-DDS-Charging_Data-V1_0-20110201-A.pdf,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Application-Server-Id,2101,8.4,UTF8String,"M,V",,,
+# Change-1.4.0: Application-Service-Type (2102) type changed from UTF8String to Enumerated.,,,,,,,
+Application-Service-Type,2102,8.4,Enumerated,"M,V",,,
+# Change-1.4.0: Application–Session–Id (2103) type changed from UTF8String to Unsigned32.,,,,,,,
+Application-Session-Id,2103,8.4,Unsigned32,"M,V",,,
+Content-ID,2116,8.4,UTF8String,"M,V",,,
+Content-provider-ID,2117,8.4,UTF8String,"M,V",,,
+DCD-Information,2115,8.5.5,Grouped,"M,V",,,
+Delivery-Status,2104,8.4,UTF8String,"M,V",,,
+IM-Information,2110,8.5.6,Grouped,"M,V",,,
+Number-Of-Messages-Successfully-Exploded,2111,8.4,Unsigned32,"M,V",,,
+Number-Of-Messages-Successfully-Sent,2112,8.4,Unsigned32,"M,V",,,
+Service-Generic-Information,1256,8.5.10,Grouped,"M,V",,,
+Total-Number-Of-Messages-Exploded,2113,8.4,Unsigned32,"M,V",,,
+Total-Number-Of-Messages-Sent,2114,8.4,Unsigned32,"M,V",,,
+,,,,,,,
+,,,,,,,
+@vendor,5535,,,,,,
+,,,,,,,
+@standard,X.S0057-0,,,,,,
+#=,,,,,,,
+# 3GPP2 X.S0057-0 v2.0,,,,,,,
+# E-UTRAN - eHRPD Connectivity and Interworking:,,,,,,,
+# Core Network Aspects,,,,,,,
+# ,,,,,,,
+# From 3GPP2 X.S0057-0_v2.0_091215.pdf,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: 3GPP2-BSID (9010) type changed from OctetString to UTF8String.,,,,,,,
+# Change-1.4.0: 3GPP2-BSID (9010) flag M MUST.,,,,,,,
+3GPP2-BSID,9010,5.6.2.1.1,UTF8String,"M,V",P,,
--- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.org	Tue Jul 07 01:24:48 2020 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,785 +0,0 @@
-| 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    |
--- a/extensions/dict_dcca_starent/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dict_dcca_starent/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -2,7 +2,7 @@
 PROJECT("Diameter DCCA (Diameter Credit Control Application) Starent dictionary definitions " C)
 
 # Compile as a module
-FD_ADD_EXTENSION(dict_dcca_starent dict_dcca_starent.c)
+FD_ADD_EXTENSION(dict_dcca_starent dict_dcca_starent.c add_avps.c)
 
 
 ####
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dict_dcca_starent/add_avps.c	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,355 @@
+/*
+Generated by:
+	csv_to_fd -p fdc dict_dcca_starent.csv
+
+Do not modify; modify the source .csv files instead.
+*/
+
+#include <freeDiameter/extension.h>
+
+#define CHECK_dict_new( _type, _data, _parent, _ref ) \
+	CHECK_FCT(  fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref))  );
+
+#define CHECK_dict_search( _type, _criteria, _what, _result ) \
+	CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
+
+int add_avps()
+{
+	struct dict_object * UTF8String_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
+
+	struct dict_object * Time_type = NULL;
+	CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);
+
+	/*==================================================================*/
+	/* 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, Unsigned32, code 501                  */
+	{
+		struct dict_avp_data data = {
+			501,	/* Code */
+			8164,	/* Vendor */
+			"SN-Volume-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Unit-Quota-Threshold, Unsigned32, code 502                    */
+	{
+		struct dict_avp_data data = {
+			502,	/* Code */
+			8164,	/* Vendor */
+			"SN-Unit-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Time-Quota-Threshold, Unsigned32, code 503                    */
+	{
+		struct dict_avp_data data = {
+			503,	/* Code */
+			8164,	/* Vendor */
+			"SN-Time-Quota-Threshold",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Total-Used-Service-Unit, Grouped, code 504                    */
+	{
+		struct dict_avp_data data = {
+			504,	/* Code */
+			8164,	/* Vendor */
+			"SN-Total-Used-Service-Unit",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Absolute-Validity-Time, Time, code 505                        */
+	{
+		struct dict_avp_data data = {
+			505,	/* Code */
+			8164,	/* Vendor */
+			"SN-Absolute-Validity-Time",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SN-Bandwidth-Control, Enumerated, code 512                       */
+	{
+		struct dict_avp_data data = {
+			512,	/* Code */
+			8164,	/* Vendor */
+			"SN-Bandwidth-Control",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Bandwidth-Control)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SN-Transparent-Data, OctetString, code 513                       */
+	{
+		struct dict_avp_data data = {
+			513,	/* Code */
+			8164,	/* Vendor */
+			"SN-Transparent-Data",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Traffic-Policy, UTF8String, code 514                          */
+	{
+		struct dict_avp_data data = {
+			514,	/* Code */
+			8164,	/* Vendor */
+			"SN-Traffic-Policy",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SN-Firewall-Policy, UTF8String, code 515                         */
+	{
+		struct dict_avp_data data = {
+			515,	/* Code */
+			8164,	/* Vendor */
+			"SN-Firewall-Policy",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SN-Usage-Monitoring-Control, Grouped, code 517                   */
+	{
+		struct dict_avp_data data = {
+			517,	/* Code */
+			8164,	/* Vendor */
+			"SN-Usage-Monitoring-Control",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Monitoring-Key, Unsigned32, code 518                          */
+	{
+		struct dict_avp_data data = {
+			518,	/* Code */
+			8164,	/* Vendor */
+			"SN-Monitoring-Key",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Usage-Volume, Unsigned64, code 519                            */
+	{
+		struct dict_avp_data data = {
+			519,	/* Code */
+			8164,	/* Vendor */
+			"SN-Usage-Volume",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED64	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Service-Flow-Detection, Enumerated, code 520                  */
+	{
+		struct dict_avp_data data = {
+			520,	/* Code */
+			8164,	/* Vendor */
+			"SN-Service-Flow-Detection",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Service-Flow-Detection)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SN-Usage-Monitoring, Enumerated, code 521                        */
+	{
+		struct dict_avp_data data = {
+			521,	/* Code */
+			8164,	/* Vendor */
+			"SN-Usage-Monitoring",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_INTEGER32	/* base type of data */
+		};
+		struct dict_object	*type;
+		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Usage-Monitoring)", NULL, NULL, NULL };
+		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
+		CHECK_dict_new(DICT_AVP, &data, type, NULL);
+	};
+
+	/* SN-Session-Start-Indicator, OctetString, code 522                */
+	{
+		struct dict_avp_data data = {
+			522,	/* Code */
+			8164,	/* Vendor */
+			"SN-Session-Start-Indicator",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Phase0-PSAPName, UTF8String, code 523                         */
+	{
+		struct dict_avp_data data = {
+			523,	/* Code */
+			8164,	/* Vendor */
+			"SN-Phase0-PSAPName",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SN-Charging-Id, OctetString, code 525                            */
+	{
+		struct dict_avp_data data = {
+			525,	/* Code */
+			8164,	/* Vendor */
+			"SN-Charging-Id",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Remaining-Service-Unit, Grouped, code 526                     */
+	{
+		struct dict_avp_data data = {
+			526,	/* Code */
+			8164,	/* Vendor */
+			"SN-Remaining-Service-Unit",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_GROUPED	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Service-Start-Timestamp, Time, code 527                       */
+	{
+		struct dict_avp_data data = {
+			527,	/* Code */
+			8164,	/* Vendor */
+			"SN-Service-Start-Timestamp",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
+	};
+
+	/* SN-Rulebase-Id, UTF8String, code 528                             */
+	{
+		struct dict_avp_data data = {
+			528,	/* Code */
+			8164,	/* Vendor */
+			"SN-Rulebase-Id",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SN-CF-Policy-ID, Unsigned32, code 529                            */
+	{
+		struct dict_avp_data data = {
+			529,	/* Code */
+			8164,	/* Vendor */
+			"SN-CF-Policy-ID",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_UNSIGNED32	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Charging-Collection-Function-Name, UTF8String, code 530       */
+	{
+		struct dict_avp_data data = {
+			530,	/* Code */
+			8164,	/* Vendor */
+			"SN-Charging-Collection-Function-Name",	/* Name */
+			AVP_FLAG_VENDOR,	/* Fixed flags */
+			AVP_FLAG_VENDOR,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
+	};
+
+	/* SN-Fast-Reauth-Username, OctetString, code 11010                 */
+	{
+		struct dict_avp_data data = {
+			11010,	/* Code */
+			8164,	/* Vendor */
+			"SN-Fast-Reauth-Username",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	/* SN-Pseudonym-Username, OctetString, code 11011                   */
+	{
+		struct dict_avp_data data = {
+			11011,	/* Code */
+			8164,	/* Vendor */
+			"SN-Pseudonym-Username",	/* Name */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
+			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
+			AVP_TYPE_OCTETSTRING	/* base type of data */
+		};
+		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
+	};
+
+	return 0;
+} /* add_avps() */
--- a/extensions/dict_dcca_starent/dict_dcca_starent.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dict_dcca_starent/dict_dcca_starent.c	Tue Jul 07 01:41:54 2020 +0800
@@ -6,9 +6,6 @@
 
 /* The content of this file follows the same structure as dict_base_proto.c */
 
-#define CHECK_dict_new( _type, _data, _parent, _ref )	\
-	CHECK_FCT(  fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref))  );
-
 #define CHECK_dict_search( _type, _criteria, _what, _result )	\
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
 
@@ -38,12 +35,12 @@
 			(_rulearray)[__ar].avp_name, 							\
 			&__data.rule_avp, 0 ) );							\
 		if ( !__data.rule_avp ) {								\
-			TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_name );		\
+			LOG_E( "AVP Not found: '%s'", (_rulearray)[__ar].avp_name );			\
 			return ENOENT;									\
 		}											\
 		CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL),	\
 			{							        		\
-				TRACE_DEBUG(INFO, "Error on rule with AVP '%s'",      			\
+				LOG_E( "Error on rule with AVP '%s'",      				\
 					 (_rulearray)[__ar].avp_name );		      			\
 				return EINVAL;					      			\
 			} );							      			\
@@ -69,352 +66,8 @@
   
 	}
 	
-
-	struct dict_object * Address_type;
-	struct dict_object * DiameterIdentity_type;
-	struct dict_object * DiameterURI_type;
-	struct dict_object * IPFilterRule_type;
-	struct dict_object * Time_type;
-	struct dict_object * UTF8String_type;
-
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type);                                
-	CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type);
-
-	/* The following is created automatically. Do not modify. */
-	/* Changes will be lost during the next update. Modify the source org file instead. */
-
-	/* Cisco ASR 5000 Series AAA Interface                                              */
-	/* Administration and Reference                                                     */
-	/* Release 8.x and 9.0                                                              */
-	/* Last Updated June 30, 2010                                                       */
-	/* 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 */
-	{
-		struct dict_avp_data data = {
-			501,	/* Code */
-			8164,	/* Vendor */
-			"SN-Volume-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Unit-Quota-Threshold */
-	{
-		struct dict_avp_data data = {
-			502,	/* Code */
-			8164,	/* Vendor */
-			"SN-Unit-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Time-Quota-Threshold */
-	{
-		struct dict_avp_data data = {
-			503,	/* Code */
-			8164,	/* Vendor */
-			"SN-Time-Quota-Threshold",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Total-Used-Service-Unit */
-	{
-		struct dict_avp_data data = {
-			504,	/* Code */
-			8164,	/* Vendor */
-			"SN-Total-Used-Service-Unit",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Absolute-Validity-Time */
-	{
-		struct dict_avp_data data = {
-			505,	/* Code */
-			8164,	/* Vendor */
-			"SN-Absolute-Validity-Time",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SN-Bandwidth-Control */
-	{
-		struct dict_avp_data data = {
-			512,	/* Code */
-			8164,	/* Vendor */
-			"SN-Bandwidth-Control",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Bandwidth-Control)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SN-Transparent-Data */
-	{
-		struct dict_avp_data data = {
-			513,	/* Code */
-			8164,	/* Vendor */
-			"SN-Transparent-Data",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Traffic-Policy */
-	{
-		struct dict_avp_data data = {
-			514,	/* Code */
-			8164,	/* Vendor */
-			"SN-Traffic-Policy",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SN-Firewall-Policy */
-	{
-		struct dict_avp_data data = {
-			515,	/* Code */
-			8164,	/* Vendor */
-			"SN-Firewall-Policy",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SN-Usage-Monitoring-Control */
-	{
-		struct dict_avp_data data = {
-			517,	/* Code */
-			8164,	/* Vendor */
-			"SN-Usage-Monitoring-Control",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Monitoring-Key */
-	{
-		struct dict_avp_data data = {
-			518,	/* Code */
-			8164,	/* Vendor */
-			"SN-Monitoring-Key",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Usage-Volume */
-	{
-		struct dict_avp_data data = {
-			519,	/* Code */
-			8164,	/* Vendor */
-			"SN-Usage-Volume",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED64	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Service-Flow-Detection */
-	{
-		struct dict_avp_data data = {
-			520,	/* Code */
-			8164,	/* Vendor */
-			"SN-Service-Flow-Detection",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Service-Flow-Detection)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SN-Usage-Monitoring */
-	{
-		struct dict_avp_data data = {
-			521,	/* Code */
-			8164,	/* Vendor */
-			"SN-Usage-Monitoring",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_INTEGER32	/* base type of data */
-		};
-		struct dict_object		*type;
-		struct dict_type_data	 tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Usage-Monitoring)", NULL, NULL, NULL };
-		CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type);
-		CHECK_dict_new(DICT_AVP, &data, type, NULL);
-	};
-
-	/* SN-Session-Start-Indicator */
-	{
-		struct dict_avp_data data = {
-			522,	/* Code */
-			8164,	/* Vendor */
-			"SN-Session-Start-Indicator",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Phase0-PSAPName */
-	{
-		struct dict_avp_data data = {
-			523,	/* Code */
-			8164,	/* Vendor */
-			"SN-Phase0-PSAPName",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SN-Charging-Id */
-	{
-		struct dict_avp_data data = {
-			525,	/* Code */
-			8164,	/* Vendor */
-			"SN-Charging-Id",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Remaining-Service-Unit */
-	{
-		struct dict_avp_data data = {
-			526,	/* Code */
-			8164,	/* Vendor */
-			"SN-Remaining-Service-Unit",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_GROUPED	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Service-Start-Timestamp */
-	{
-		struct dict_avp_data data = {
-			527,	/* Code */
-			8164,	/* Vendor */
-			"SN-Service-Start-Timestamp",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, Time_type, NULL);
-	};
-
-	/* SN-Rulebase-Id */
-	{
-		struct dict_avp_data data = {
-			528,	/* Code */
-			8164,	/* Vendor */
-			"SN-Rulebase-Id",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SN-CF-Policy-ID */
-	{
-		struct dict_avp_data data = {
-			529,	/* Code */
-			8164,	/* Vendor */
-			"SN-CF-Policy-ID",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_UNSIGNED32	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Charging-Collection-Function-Name */
-	{
-		struct dict_avp_data data = {
-			530,	/* Code */
-			8164,	/* Vendor */
-			"SN-Charging-Collection-Function-Name",	/* Name */
-			AVP_FLAG_VENDOR,	/* Fixed flags */
-			AVP_FLAG_VENDOR,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL);
-	};
-
-	/* SN-Fast-Reauth-Username */
-	{
-		struct dict_avp_data data = {
-			11010,	/* Code */
-			8164,	/* Vendor */
-			"SN-Fast-Reauth-Username",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-	/* SN-Pseudonym-Username */
-	{
-		struct dict_avp_data data = {
-			11011,	/* Code */
-			8164,	/* Vendor */
-			"SN-Pseudonym-Username",	/* Name */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flags */
-			AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY,	/* Fixed flag values */
-			AVP_TYPE_OCTETSTRING	/* base type of data */
-		};
-		CHECK_dict_new(DICT_AVP, &data, NULL, NULL);
-	};
-
-
+	extern int add_avps();
+	CHECK_FCT( add_avps() );
 
 	/* Rules section */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/dict_dcca_starent/dict_dcca_starent.csv	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,35 @@
+Attribute Name,AVP Code,Section defined,Value Type,MUST,MAY,SHOULD NOT,MUST NOT
+@vendor,8164,,,,,,
+#=,,,,,,,
+# 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",,,
--- a/extensions/dict_dcca_starent/dict_dcca_starent.org	Tue Jul 07 01:24:48 2020 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-| 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  |     |          |          |      |
--- a/extensions/dict_json/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/dict_json/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -16,7 +16,7 @@
 )
 
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIR})
+INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIRS})
 INCLUDE_DIRECTORIES(${JSON_SCHEMA_INCLUDE_DIR})
 
 LINK_DIRECTORIES(${JSONCPP_LIBDIR})
--- a/extensions/rt_ereg/rtereg.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/rt_ereg/rtereg.c	Tue Jul 07 01:41:54 2020 +0800
@@ -190,8 +190,12 @@
 
 					/* Augment the buffer if needed */
 					if (avp_hdr->avp_value->os.len >= bufsz) {
-						CHECK_MALLOC_DO( buf = realloc(buf, avp_hdr->avp_value->os.len + 1),
+						char *newbuf;
+						CHECK_MALLOC_DO( newbuf = realloc(buf, avp_hdr->avp_value->os.len + 1),
 							{ pthread_mutex_unlock(&mtx); return ENOMEM; } );
+						/* Update buffer and buffer size */
+						buf = newbuf;
+						bufsz = avp_hdr->avp_value->os.len + 1;
 					}
 
 					/* Copy the AVP value */
@@ -319,12 +323,11 @@
 static int rtereg_init_config(void)
 {
 	/* Initialize the configuration */
-	if ((rtereg_conf=malloc(sizeof(*rtereg_conf))) == NULL) {
+	if ((rtereg_conf=calloc(sizeof(*rtereg_conf), 1)) == NULL) {
 		LOG_E("[rt_ereg] malloc failured");
 		return 1;
 	}
 	rtereg_conf_size = 1;
-	memset(rtereg_conf, 0, sizeof(*rtereg_conf));
 
 	/* Parse the configuration file */
 	CHECK_FCT( rtereg_conf_handle(rt_ereg_config_file) );
@@ -371,6 +374,7 @@
 #ifndef HAVE_REG_STARTEND
 	free(buf);
 	buf = NULL;
+	bufsz = 0;
 #endif /* HAVE_REG_STARTEND */
 
 	if (pthread_rwlock_wrlock(&rte_lock) != 0) {
--- a/extensions/rt_rewrite/rt_rewrite.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/rt_rewrite/rt_rewrite.c	Tue Jul 07 01:41:54 2020 +0800
@@ -86,6 +86,7 @@
 	return;
 }
 
+/* TODO: convert to fd_msg_search_avp ? */
 static int fd_avp_search_avp(msg_or_avp *where, struct dict_object *what, struct avp **avp)
 {
 	struct avp *nextavp;
@@ -396,23 +397,21 @@
 		return errno;
 	}
 
-	if ((store=store_new()) == NULL) {
-		fd_log_error("%s: malloc failure");
-		pthread_rwlock_unlock(&rt_rewrite_lock);
-		return ENOMEM;
-	}
 	if ((ret = fd_msg_parse_dict(*msg, fd_g_config->cnf_dict, NULL)) != 0) {
 		fd_log_notice("%s: error parsing message", MODULE_NAME);
-		free(store);
 		pthread_rwlock_unlock(&rt_rewrite_lock);
 		return ret;
 	}
 	if ((ret=fd_msg_browse(*msg, MSG_BRW_FIRST_CHILD, &avp, NULL)) != 0) {
 		fd_log_notice("internal error: message has no child");
-		free(store);
 		pthread_rwlock_unlock(&rt_rewrite_lock);
 		return ret;
 	}
+	if ((store=store_new()) == NULL) {
+		fd_log_error("%s: malloc failure");
+		pthread_rwlock_unlock(&rt_rewrite_lock);
+		return ENOMEM;
+	}
 	if (replace_avps(*msg, avp, avp_match_start->children, store) != 0) {
 		fd_log_error("%s: replace AVP function failed", MODULE_NAME);
 		store_free(store);
--- a/extensions/rt_rewrite/rt_rewrite_conf.y	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/rt_rewrite/rt_rewrite_conf.y	Tue Jul 07 01:41:54 2020 +0800
@@ -107,7 +107,11 @@
 	fd_dict_getval(model_source, &dictdata_source);
 	fd_dict_getval(model_dest, &dictdata_dest);
 	if (dictdata_source.avp_basetype != dictdata_dest.avp_basetype) {
-		fd_log_notice("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s) (continuing anyway)", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]);
+		if (dictdata_source.avp_basetype == AVP_TYPE_OCTETSTRING) {
+			fd_log_error("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s): OctetString cannot be mapped to non-OctetString type", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]);
+			return;
+		}
+		fd_log_error("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s) (continuing anyway)", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]);
 	}
 	return;
 }
--- a/extensions/test_sip/multimediaauth.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/extensions/test_sip/multimediaauth.c	Tue Jul 07 01:41:54 2020 +0800
@@ -335,7 +335,7 @@
 							//CHECK_FCT(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL) );
 							
 							
-							CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
+							CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
 							
 							if(a2!=NULL)
 								found_cnonce=1;
@@ -472,7 +472,7 @@
 									char * digest_username=NULL, *digest_uri=NULL, *digest_response=NULL, *digest_realm=NULL, *digest_nonce=NULL, *digest_method=NULL, *digest_qop=NULL, *digest_algorithm=NULL, *digest_cnonce=NULL, *digest_noncecount=NULL;
 									
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -501,7 +501,7 @@
 										}
 											
 									}
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Response, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Response, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -515,7 +515,7 @@
 										}
 										
 									}
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Realm, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Realm, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -529,7 +529,7 @@
 										}
 									}
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Method, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Method, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -545,7 +545,7 @@
 									else
 										digest_method="";
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_URI, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_URI, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -559,7 +559,7 @@
 										}
 									}
 									
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_QOP, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_QOP, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -574,7 +574,7 @@
 									}
 									else
 										digest_qop=NULL;
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Algorithm, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Algorithm, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -589,7 +589,7 @@
 									}
 									else
 										digest_algorithm=NULL;
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -604,7 +604,7 @@
 									}
 									else
 										digest_cnonce="";
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
@@ -619,7 +619,7 @@
 									}
 									else
 										digest_noncecount="";
-									CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Username, &a2 ));
+									CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Username, &a2 ));
 									if(a2!=NULL)
 									{
 										CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader )  );
--- a/freeDiameterd/main.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/freeDiameterd/main.c	Tue Jul 07 01:41:54 2020 +0800
@@ -45,7 +45,9 @@
 #include <locale.h>
 #include <syslog.h>
 #include <stdarg.h>
+#include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 /* forward declarations */
@@ -56,18 +58,67 @@
 static char *conffile = NULL;
 static int daemon_mode = 0;
 static int gnutls_debug = 0;
+static char *pidfile = NULL;
 
 /* gnutls debug */
 static void fd_gnutls_debug(int level, const char * str) {
 	fd_log_debug(" [gnutls:%d] %s", level, str);
 }
 
+static void pidfile_cleanup(void)
+{
+	if (pidfile != NULL) {
+		LOG_I("Removing pidfile '%s'", pidfile);
+		CHECK_SYS_DO( unlink(pidfile), /* ignore */ );
+		pidfile = NULL;
+	}
+}
+
+static int pidfile_create(void)
+{
+	if (pidfile == NULL) {
+		return 0;
+	}
+
+	/* Create pidfile */
+	FILE * fp = fopen(pidfile, "w");
+	if (fp == NULL) {
+		int ret = errno;
+		LOG_F("Unable to write pidfile '%s'; Error: %s",
+			pidfile, strerror(ret));
+		pidfile = NULL;	/* disable pidfile_cleanup() */
+		return ret;
+	}
+
+	/* Cleanup pidfile on exit */
+	if (atexit(pidfile_cleanup) != 0) {
+		LOG_F("Unable to setup pidfile cleanup");
+		CHECK_SYS( fclose(fp) );
+		pidfile_cleanup();
+		return EINVAL;
+	}
+
+	/* Write the pid and close pidfile */
+	fprintf(fp, "%d\n", getpid());
+	CHECK_SYS_DO( fclose(fp), { pidfile_cleanup(); return __ret__; } );
+
+	LOG_I("Created pidfile '%s'", pidfile);
+	return 0;
+}
+
 
 static void syslog_logger(int loglevel, const char * format, va_list args)
 {
+	if (loglevel < fd_g_debug_lvl) {
+		return;
+	}
+
 	int level;
 
 	switch (loglevel) {
+	case FD_LOG_INFO:
+		level = LOG_INFO;
+		break;
 	case FD_LOG_NOTICE:
 		level = LOG_NOTICE;
 		break;
@@ -79,17 +130,13 @@
 		break;
 	default:
 		/* fallthrough */
+	case FD_LOG_ANNOYING:
 	case FD_LOG_DEBUG:
-		/* some systems log LOG_DEBUG to a file; but
-		 * freeDiameter debug output is too verbose */
-		return;
-#if 0
 		level = LOG_DEBUG;
 		break;
-#endif
 	}
 
-	vsyslog(level, format, args);
+	vsyslog(level | LOG_DAEMON, format, args);
 }
 
 
@@ -107,19 +154,21 @@
 	/* Parse the command-line */
 	ret = main_cmdline(argc, argv);
 	if (ret != 0) {
-		return ret;
+		return EXIT_FAILURE;
 	}
 
 	if (daemon_mode) {
 		TRACE_DEBUG(INFO, "entering background mode");
-		CHECK_POSIX_DO( daemon(1, 0), goto error );
+		CHECK_SYS_DO( daemon(1, 0), return EXIT_FAILURE );
 	}
 
+	CHECK_FCT_DO( pidfile_create(), return EXIT_FAILURE );
+
 	/* Initialize the core library */
 	ret = fd_core_initialize();
 	if (ret != 0) {
 		fprintf(stderr, "An error occurred during freeDiameter core library initialization.\n");
-		return ret;
+		return EXIT_FAILURE;
 	}
 
 	/* Set gnutls debug level ? */
@@ -141,17 +190,17 @@
 	TRACE_DEBUG(INFO, FD_PROJECT_BINARY " daemon initialized.");
 
 	/* Now, just wait for termination */
-	CHECK_FCT( fd_core_wait_shutdown_complete() );
+	CHECK_FCT_DO( fd_core_wait_shutdown_complete(), return EXIT_FAILURE );
 
 	/* Just in case it was not the result of a signal, we cancel signals_thr */
 	fd_thr_term(&signals_thr);
 
-	return 0;
+	return EXIT_SUCCESS;
 error:
 	CHECK_FCT_DO( fd_core_shutdown(),  );
-	CHECK_FCT( fd_core_wait_shutdown_complete() );
+	CHECK_FCT_DO( fd_core_wait_shutdown_complete(), return EXIT_FAILURE );
 	fd_thr_term(&signals_thr);
-	return -1;
+	return EXIT_FAILURE;
 }
 
 
@@ -182,15 +231,16 @@
   		"  -c, --config=filename   Read configuration from this file instead of the \n"
 		"                          default location (" DEFAULT_CONF_PATH "/" FD_DEFAULT_CONF_FILENAME ")\n"
 		"  -D, --daemon            Start program in background\n"
+		"  -p, --pidfile=filename  Write PID to filename\n"
 		"  -s, --syslog            Write log output to syslog (instead of stdout)\n");
  	printf( "\nDebug:\n"
   		"  These options are mostly useful for developers\n"
-  		"  -d, --debug             Increase verbosity of debug messages if default logger is used\n"
-  		"  --dbg_gnutls <int>      Enable GNU TLS debug at level <int>\n"
+		"  -d, --debug             Increase verbosity of log messages\n"
   		"  -f, --dbg_func <func>   Enable all traces within the function <func>\n"
   		"  -F, --dbg_file <file.c> Enable all traces within the file <file.c> (basename match)\n"
+		"  -g, --dbg_gnutls <int>  Enable GNU TLS debug at level <int>\n"
   		"  -l, --dbglocale         Set the locale for error messages\n"
-  		"  -q, --quiet             Decrease verbosity if default logger is used\n"
+		"  -q, --quiet             Decrease verbosity of log messages\n"
 	);
 }
 
@@ -207,6 +257,7 @@
 		{ "config",	required_argument, 	NULL, 'c' },
 		{ "syslog",     no_argument,            NULL, 's' },
 		{ "daemon",	no_argument, 		NULL, 'D' },
+		{ "pidfile",	required_argument,	NULL, 'p' },
 		{ "debug",	no_argument, 		NULL, 'd' },
 		{ "quiet",	no_argument, 		NULL, 'q' },
 		{ "dbglocale",	optional_argument, 	NULL, 'l' },
@@ -218,18 +269,18 @@
 
 	/* Loop on arguments */
 	while (1) {
-		c = getopt_long (argc, argv, "hVc:Ddql:f:F:g:s", long_options, &option_index);
+		c = getopt_long (argc, argv, "hVc:Dp:dql:f:F:g:s", long_options, &option_index);
 		if (c == -1)
 			break;	/* Exit from the loop.  */
 
 		switch (c) {
 			case 'h':	/* Print help and exit.  */
 				main_help();
-				exit(0);
+				exit(EXIT_SUCCESS);
 
 			case 'V':	/* Print version and exit.  */
 				main_version();
-				exit(0);
+				exit(EXIT_SUCCESS);
 
 			case 'c':	/* Read configuration from this file instead of the default location..  */
 				if (optarg == NULL ) {
@@ -243,6 +294,14 @@
 				daemon_mode = 1;
 				break;
 
+			case 'p':	/* Write pidfile */
+				if (optarg == NULL ) {
+					fprintf(stderr, "Missing argument with --pidfile directive\n");
+					return EINVAL;
+				}
+				pidfile = optarg;
+				break;
+
 			case 'l':	/* Change the locale.  */
 				locale = setlocale(LC_ALL, optarg?:"");
 				if (!locale) {
--- a/include/freeDiameter/CMakeLists.txt	Tue Jul 07 01:24:48 2020 +0800
+++ b/include/freeDiameter/CMakeLists.txt	Tue Jul 07 01:41:54 2020 +0800
@@ -15,6 +15,9 @@
 # Find TODO items in the code easily ?
 OPTION(ERRORS_ON_TODO "(development) Generate compilation errors on TODO items ?" OFF)
 
+# Compiler warnings are fatal?
+OPTION(ERRORS_ON_WARNINGS "(development) Compiler warnings cause compilation errors ?" OFF)
+
 # In DEBUG mode, each log can contain pid, calling function and file for easy debug. Set to ON to display this information.
 OPTION(DEBUG_WITH_META "Show calling location in logs?" OFF)
 
--- a/include/freeDiameter/extension.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/include/freeDiameter/extension.h	Tue Jul 07 01:41:54 2020 +0800
@@ -48,6 +48,8 @@
 #define EXTENSION_ENTRY(_name, _function, _depends...)					\
 const char *fd_ext_depends[] = { _name , ## _depends , NULL };				\
 static int extension_loaded = 0;							\
+											\
+__attribute__((visibility("default")))							\
 int fd_ext_init(int major, int minor, char * conffile) {				\
 	if ((major != FD_PROJECT_VERSION_MAJOR)						\
 		|| (minor != FD_PROJECT_VERSION_MINOR)) {				\
@@ -63,7 +65,11 @@
 	}										\
 	extension_loaded++;								\
 	return (_function)(conffile);							\
-}														
+}
+
+/* Optional exit point (finish function) of the extension */
+__attribute__((visibility("default")))
+void fd_ext_fini(void);
 
 #ifdef __cplusplus
 }
--- a/include/freeDiameter/libfdcore.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/include/freeDiameter/libfdcore.h	Tue Jul 07 01:41:54 2020 +0800
@@ -151,6 +151,7 @@
 		unsigned no_sctp: 1;	/* disable the use of SCTP */
 		unsigned pr_tcp	: 1;	/* prefer TCP over SCTP */
 		unsigned tls_alg: 1;	/* TLS algorithm for initiated cnx. 0: separate port. 1: inband-security (old) */
+		unsigned no_bind: 1;	/* disable client bind to cnf_endpoints if non configured (bind all) */
 	} 		 cnf_flags;
 	
 	struct {
@@ -552,6 +553,30 @@
 int fd_msg_send_timeout ( struct msg ** pmsg, void (*anscb)(void *, struct msg **), void * data, void (*expirecb)(void *, DiamId_t, size_t, struct msg **), const struct timespec *timeout );
 
 /*
+ * FUNCTION:	fd_msg_add_result
+ *
+ * PARAMETERS:
+ *  msg		: A msg object -- it must be an answer.
+ *  vendor	: Vendor. If 0, add Result-Code else add Experimental-Result.
+ *  restype	: DICT_TYPE containing rescode (ex: from TYPE_BY_NAME "Enumerated(Result-Code)").
+ *  rescode	: The name of the returned error code (ex: "DIAMETER_INVALID_AVP").
+ *  errormsg	: (optional) human-readable error message to put in Error-Message AVP.
+ *  optavp	: (optional) If provided, the content will be put inside a Failed-AVP.
+ *  type_id	: 0 => nothing; 1 => adds Origin-Host and Origin-Realm with local info. 2=> adds Error-Reporting-Host.
+ *
+ * DESCRIPTION:
+ *  This function adds a Result-Code AVP (if vendor is 0) or Experimental-Result AVP (vendor is not 0)
+ *  to a message, and optionally
+ *  - sets the 'E' error flag in the header,
+ *  - adds Error-Message, Error-Reporting-Host and Failed-AVP AVPs.
+ *
+ * RETURN VALUE:
+ *  0		: Operation complete.
+ *  !0		: an error occurred.
+ */
+int fd_msg_add_result( struct msg * msg, vendor_id_t vendor, struct dict_object * restype, char * rescode, char * errormsg, struct avp * optavp, int type_id );
+
+/*
  * FUNCTION:	fd_msg_rescode_set
  *
  * PARAMETERS:
@@ -561,14 +586,15 @@
  *  optavp	: (optional) If provided, the content will be put inside a Failed-AVP
  *  type_id	: 0 => nothing; 1 => adds Origin-Host and Origin-Realm with local info. 2=> adds Error-Reporting-Host.
  *
- * DESCRIPTION: 
- *   This function adds a Result-Code AVP to a message, and optionally
+ * DESCRIPTION:
+ *  This function adds a Result-Code AVP to a message, and optionally
  *  - sets the 'E' error flag in the header,
  *  - adds Error-Message, Error-Reporting-Host and Failed-AVP AVPs.
+ *  Uses fd_msg_add_result with vendor 0 and restype for Enumerated(Result-Code).
  *
  * RETURN VALUE:
- *  0      	: Operation complete.
- *  !0      	: an error occurred.
+ *  0		: Operation complete.
+ *  !0		: an error occurred.
  */
 int fd_msg_rescode_set( struct msg * msg, char * rescode, char * errormsg, struct avp * optavp, int type_id );
 
--- a/include/freeDiameter/libfdproto.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/include/freeDiameter/libfdproto.h	Tue Jul 07 01:41:54 2020 +0800
@@ -29,7 +29,7 @@
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 	 *
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 	 *
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
-* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY S_OUT OF THE USE OF THIS SOFTWARE, EVEN IF   *
+* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY S_OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.								 *
 *********************************************************************************************************/
 
@@ -270,6 +270,7 @@
 /* log levels definitions, that are passed to the logger */
 #define FD_LOG_ANNOYING  0  /* very verbose loops and such "overkill" traces. Only active when the framework is compiled in DEBUG mode. */
 #define FD_LOG_DEBUG     1  /* Get a detailed sense of what is going on in the framework. Use this level for normal debug */
+#define FD_LOG_INFO      2  /* Informational execution states */
 #define FD_LOG_NOTICE    3  /* Normal execution states worth noting */
 #define FD_LOG_ERROR     5  /* Recoverable or expected error conditions */
 #define FD_LOG_FATAL     6  /* Unrecoverable error, e.g. malloc fail, etc. that requires the framework to shutdown */
@@ -330,6 +331,10 @@
 #define LOG_D(format,args... ) \
 		LOG(FD_LOG_DEBUG, format, ##args)
 
+/* Report an info message */
+#define LOG_I(format,args... ) \
+		LOG(FD_LOG_INFO, format,##args)
+
 /* Report a normal message that is useful for normal admin monitoring */
 #define LOG_N(format,args... ) \
 		LOG(FD_LOG_NOTICE, format,##args)
@@ -516,7 +521,7 @@
 		int __l__;								\
 		if ((__l__ = TRACE_BOOL(oldlevel))) {					\
 			if      (oldlevel <= NONE) { LOG_E(format,##args); }		\
-			else if (oldlevel <= INFO) { LOG_N(format,##args); }		\
+			else if (oldlevel <= INFO) { LOG_I(format,##args); }		\
 			else if (__l__ == 2)       { LOG_N(format,##args); }		\
 			else if (oldlevel <= FULL) { LOG_D(format,##args); }		\
 			else                       { LOG_A(format,##args); }		\
@@ -595,12 +600,14 @@
 /*============================================================*/
 #ifdef STRIP_DEBUG_CODE
 #undef LOG_D
+#undef LOG_I
 #undef LOG_N
 #undef LOG_E
 #undef LOG_F
 #undef LOG_BUFFER
 
 #define LOG_D(format,args... ) /* noop */
+#define LOG_I(format,args...) fd_log(FD_LOG_INFO, format, ## args)
 #define LOG_N(format,args...) fd_log(FD_LOG_NOTICE, format, ## args)
 #define LOG_E(format,args...) fd_log(FD_LOG_ERROR, format, ## args)
 #define LOG_F(format,args...) fd_log(FD_LOG_FATAL, format, ## args)
@@ -682,10 +689,10 @@
 
 /* create a V4MAPPED address */
 #define IN6_ADDR_V4MAP( a6, a4 ) {			\
-	((uint32_t *)(a6))[0] = 0;			\
-	((uint32_t *)(a6))[1] = 0;			\
-	((uint32_t *)(a6))[2] = htonl(0xffff);		\
-	((uint32_t *)(a6))[3] = (uint32_t)(a4);		\
+	memset(&(*a6)[0], 0, 10);			\
+	(*a6)[10] = 0xff;				\
+	(*a6)[11] = 0xff;				\
+	memcpy(&(*a6)[12], &a4, 4);			\
 }
 
 /* Retrieve a v4 value from V4MAPPED address ( takes a s6_addr as param) */
@@ -955,7 +962,7 @@
  * FUNCTION:	fd_dict_new
  *
  * PARAMETERS:
- *  dict	: Pointer to the dictionnary where the object is created
+ *  dict	: Pointer to the dictionary where the object is created
  *  type 	: What kind of object must be created
  *  data 	: pointer to the data for the object.
  *          	 type parameter is used to determine the type of data (see below for detail).
@@ -980,7 +987,7 @@
  * FUNCTION: 	fd_dict_search
  *
  * PARAMETERS:
- *  dict	: Pointer to the dictionnary where the object is searched
+ *  dict	: Pointer to the dictionary where the object is searched
  *  type 	: type of object that is being searched
  *  criteria 	: how the object must be searched. See object-related sections below for more information.
  *  what 	: depending on criteria, the data that must be searched.
@@ -1373,8 +1380,8 @@
 /* The criteria for searching a constant in the dictionary */
 enum {
 	ENUMVAL_BY_STRUCT = 40,	/* "what" points to a struct dict_enumval_request as defined below */
-	ENUMVAL_BY_NAME,	/* This cannot be used for researches */
-	ENUMVAL_BY_VALUE	/* This cannot be used for researches */
+	ENUMVAL_BY_NAME,	/* This cannot be used for searches */
+	ENUMVAL_BY_VALUE	/* This cannot be used for searches */
 };
 
 struct dict_enumval_request {
@@ -1503,7 +1510,7 @@
 	AVP_BY_NAME_AND_VENDOR	/* "what" points to a struct dict_avp_request (see below), where avp_vendor and avp_name are set */
 };
 
-/* Struct used for some researchs */
+/* Struct used for some searches */
 struct dict_avp_request_ex {
 	struct {
 		/* Only one of the following fields must be set. */
@@ -2359,22 +2366,22 @@
  * FUNCTION:	fd_msg_search_avp
  *
  * PARAMETERS:
- *  msg 	: The message structure in which to search the AVP.
+ *  reference 	: Pointer to a valid msg or avp in which to search the AVP.
  *  what 	: The dictionary model of the AVP to search.
  *  avp		: location where the AVP reference is stored if found.
  *
  * DESCRIPTION:
- *   Search the first top-level AVP of a given model inside a message.
+ *   Search for the first top-level AVP of a given model inside a message or AVP.
  * Note: only the first instance of the AVP is returned by this function.
  * Note: only top-level AVPs are searched, not inside grouped AVPs.
- * Use msg_browse if you need more advanced research features.
+ * Use msg_browse if you need more advanced search features.
  *
  * RETURN VALUE:
  *  0      	: The AVP has been found.
  *  EINVAL 	: A parameter is invalid.
  *  ENOENT	: No AVP has been found, and "avp" was NULL (otherwise, *avp is set to NULL and 0 returned).
  */
-int fd_msg_search_avp ( struct msg * msg, struct dict_object * what, struct avp ** avp );
+int fd_msg_search_avp ( msg_or_avp * reference, struct dict_object * what, struct avp ** avp );
 
 /*
  * FUNCTION:	fd_msg_free
--- a/libfdcore/cnxctx.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/cnxctx.c	Tue Jul 07 01:41:54 2020 +0800
@@ -176,7 +176,7 @@
 	} else {
 		cnx->cc_family = AF_INET6; /* can create socket for both IP and IPv6 */
 	}
-	
+
 	/* Create the socket */
 	CHECK_FCT_DO( fd_sctp_create_bind_server( &cnx->cc_socket, cnx->cc_family, ep_list, port ), goto error );
 
@@ -226,41 +226,41 @@
 
 	TRACE_ENTRY("%p", serv);
 	CHECK_PARAMS_DO(serv, return NULL);
-	
+
 	/* Accept the new connection -- this is blocking until new client enters or until cancellation */
 	CHECK_SYS_DO( cli_sock = accept(serv->cc_socket, (sSA *)&ss, &ss_len), return NULL );
-	
+
 	CHECK_MALLOC_DO( cli = fd_cnx_init(1), { shutdown(cli_sock, SHUT_RDWR); close(cli_sock); return NULL; } );
 	cli->cc_socket = cli_sock;
 	cli->cc_family = serv->cc_family;
 	cli->cc_proto = serv->cc_proto;
-	
+
 	/* Set the timeout */
 	fd_cnx_s_setto(cli->cc_socket);
-	
+
 	/* Generate the name for the connection object */
 	{
 		char addrbuf[INET6_ADDRSTRLEN];
 		char portbuf[10];
 		int  rc;
-		
+
 		rc = getnameinfo((sSA *)&ss, ss_len, addrbuf, sizeof(addrbuf), portbuf, sizeof(portbuf), NI_NUMERICHOST | NI_NUMERICSERV);
 		if (rc) {
 			snprintf(addrbuf, sizeof(addrbuf), "[err:%s]", gai_strerror(rc));
 			portbuf[0] = '\0';
 		}
-		
+
 		/* Numeric values for debug... */
-		snprintf(cli->cc_id, sizeof(cli->cc_id), CC_ID_HDR "%s from [%s]:%s (%d<-%d)", 
+		snprintf(cli->cc_id, sizeof(cli->cc_id), CC_ID_HDR "%s from [%s]:%s (%d<-%d)",
 				IPPROTO_NAME(cli->cc_proto), addrbuf, portbuf, serv->cc_socket, cli->cc_socket);
-		
-		
+
+
 		/* ...Name for log messages */
 		rc = getnameinfo((sSA *)&ss, ss_len, cli->cc_remid, sizeof(cli->cc_remid), NULL, 0, 0);
 		if (rc)
 			snprintf(cli->cc_remid, sizeof(cli->cc_remid), "[err:%s]", gai_strerror(rc));
 	}
-	
+
 	LOG_D("Incoming connection: '%s' <- '%s'   {%s}", fd_cnx_getid(serv), cli->cc_remid, cli->cc_id);
 
 #ifndef DISABLE_SCTP
@@ -272,7 +272,7 @@
 			cli->cc_sctp_para.pairs = cli->cc_sctp_para.str_out;
 		else
 			cli->cc_sctp_para.pairs = cli->cc_sctp_para.str_in;
-		
+
 		LOG_A( "%s : client '%s' (SCTP:%d, %d/%d streams)", fd_cnx_getid(serv), fd_cnx_getid(cli), cli->cc_socket, cli->cc_sctp_para.str_in, cli->cc_sctp_para.str_out);
 	}
 #endif /* DISABLE_SCTP */
@@ -286,14 +286,14 @@
 	int sock = 0;
 	struct cnxctx * cnx = NULL;
 	char sa_buf[sSA_DUMP_STRLEN];
-	
+
 	TRACE_ENTRY("%p %d", sa, addrlen);
 	CHECK_PARAMS_DO( sa && addrlen, return NULL );
-	
+
 	fd_sa_sdump_numeric(sa_buf, sa);
-	
+
 	LOG_D("Connecting to TCP %s...", sa_buf);
-	
+
 	/* Create the socket and connect, which can take some time and/or fail */
 	{
 		int ret = fd_tcp_client( &sock, sa, addrlen );
@@ -302,36 +302,37 @@
 			return NULL;
 		}
 	}
-	
+
 	/* Once the socket is created successfuly, prepare the remaining of the cnx */
 	CHECK_MALLOC_DO( cnx = fd_cnx_init(1), { shutdown(sock, SHUT_RDWR); close(sock); return NULL; } );
-	
+
 	cnx->cc_socket = sock;
 	cnx->cc_family = sa->sa_family;
 	cnx->cc_proto  = IPPROTO_TCP;
-	
+
 	/* Set the timeout */
 	fd_cnx_s_setto(cnx->cc_socket);
-	
+
 	/* Generate the names for the object */
 	{
 		int  rc;
-		
+
 		snprintf(cnx->cc_id, sizeof(cnx->cc_id), CC_ID_HDR "TCP,#%d->%s", cnx->cc_socket, sa_buf);
-		
+
 		/* ...Name for log messages */
 		rc = getnameinfo(sa, addrlen, cnx->cc_remid, sizeof(cnx->cc_remid), NULL, 0, 0);
 		if (rc)
 			snprintf(cnx->cc_remid, sizeof(cnx->cc_remid), "[err:%s]", gai_strerror(rc));
 	}
-	
+
 	LOG_A("TCP connection to %s succeed (socket:%d).", sa_buf, sock);
-	
+
 	return cnx;
 }
 
-/* Same for SCTP, accepts a list of remote addresses to connect to (see sctp_connectx for how they are used) */
-struct cnxctx * fd_cnx_cli_connect_sctp(int no_ip6, uint16_t port, struct fd_list * list)
+/* Same for SCTP, accepts a list of remote addresses to connect to (see sctp_connectx for how they are used).
+ * If src_list is not NULL and not empty, list of local addresses to connect from via sctp_bindx(). */
+struct cnxctx * fd_cnx_cli_connect_sctp(int no_ip6, uint16_t port, struct fd_list * list, struct fd_list * src_list)
 {
 #ifdef DISABLE_SCTP
 	TRACE_DEBUG(INFO, "This function should never be called when SCTP is disabled...");
@@ -343,55 +344,72 @@
 	struct cnxctx * cnx = NULL;
 	char sa_buf[sSA_DUMP_STRLEN];
 	sSS primary;
-	
-	TRACE_ENTRY("%p", list);
+
+	TRACE_ENTRY("%p %p", list, src_list);
 	CHECK_PARAMS_DO( list && !FD_IS_LIST_EMPTY(list), return NULL );
-	
+
+	/* Log SCTP association source and destination endpoints */
+	{
+		char * buf = NULL;
+		size_t len = 0, offset = 0;
+		CHECK_MALLOC_DO( fd_dump_extend( &buf, &len, &offset, "Connecting SCTP endpoints"), );
+		CHECK_MALLOC_DO( fd_dump_extend( &buf, &len, &offset, " source: "), );
+		if (src_list && !FD_IS_LIST_EMPTY(src_list)) {
+			CHECK_MALLOC_DO( fd_ep_dump( &buf, &len, &offset, 0, 0, src_list ), );
+		} else {
+			CHECK_MALLOC_DO( fd_dump_extend( &buf, &len, &offset, "(ANY)"), );
+		}
+		CHECK_MALLOC_DO( fd_dump_extend( &buf, &len, &offset, ", destination: "), );
+		CHECK_MALLOC_DO( fd_ep_dump( &buf, &len, &offset, 0, 0, list ), );
+		LOG_D("%s", buf ?: "Error determining SCTP endpoints");
+		free(buf);
+	}
+
 	fd_sa_sdump_numeric(sa_buf, &((struct fd_endpoint *)(list->next))->sa);
-	
+
 	LOG_D("Connecting to SCTP %s:%hu...", sa_buf, port);
-	
+
 	{
-		int ret = fd_sctp_client( &sock, no_ip6, port, list );
+		int ret = fd_sctp_client( &sock, no_ip6, port, list, src_list );
 		if (ret != 0) {
 			LOG_D("SCTP connection to [%s,...] failed: %s", sa_buf, strerror(ret));
 			return NULL;
 		}
 	}
-	
+
 	/* Once the socket is created successfuly, prepare the remaining of the cnx */
 	CHECK_MALLOC_DO( cnx = fd_cnx_init(1), { shutdown(sock, SHUT_RDWR); close(sock); return NULL; } );
-	
+
 	cnx->cc_socket = sock;
 	cnx->cc_family = no_ip6 ? AF_INET : AF_INET6;
 	cnx->cc_proto  = IPPROTO_SCTP;
-	
+
 	/* Set the timeout */
 	fd_cnx_s_setto(cnx->cc_socket);
-	
+
 	/* Retrieve the number of streams and primary address */
 	CHECK_FCT_DO( fd_sctp_get_str_info( sock, &cnx->cc_sctp_para.str_in, &cnx->cc_sctp_para.str_out, &primary ), goto error );
 	if (cnx->cc_sctp_para.str_out < cnx->cc_sctp_para.str_in)
 		cnx->cc_sctp_para.pairs = cnx->cc_sctp_para.str_out;
 	else
 		cnx->cc_sctp_para.pairs = cnx->cc_sctp_para.str_in;
-	
+
 	fd_sa_sdump_numeric(sa_buf, (sSA *)&primary);
-	
+
 	/* Generate the names for the object */
 	{
 		int  rc;
-		
+
 		snprintf(cnx->cc_id, sizeof(cnx->cc_id), CC_ID_HDR "SCTP,#%d->%s", cnx->cc_socket, sa_buf);
-		
+
 		/* ...Name for log messages */
 		rc = getnameinfo((sSA *)&primary, sSAlen(&primary), cnx->cc_remid, sizeof(cnx->cc_remid), NULL, 0, 0);
 		if (rc)
 			snprintf(cnx->cc_remid, sizeof(cnx->cc_remid), "[err:%s]", gai_strerror(rc));
 	}
-	
+
 	LOG_A("SCTP connection to %s succeed (socket:%d, %d/%d streams).", sa_buf, sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out);
-	
+
 	return cnx;
 
 error:
@@ -444,17 +462,17 @@
 		conn->cc_id[1] = 'C';
 	else
 		conn->cc_id[1] = '-';
-	
+
 	if (conn->cc_state & CC_STATUS_ERROR)
 		conn->cc_id[2] = 'E';
 	else
 		conn->cc_id[2] = '-';
-	
+
 	if (conn->cc_state & CC_STATUS_SIGNALED)
 		conn->cc_id[3] = 'S';
 	else
 		conn->cc_id[3] = '-';
-	
+
 	if (conn->cc_state & CC_STATUS_TLS)
 		conn->cc_id[4] = 'T';
 	else
@@ -508,7 +526,7 @@
 {
 	TRACE_ENTRY("%p %p", conn, eps);
 	CHECK_PARAMS(conn && eps);
-	
+
 	/* Check we have a full connection object, not a listening socket (with no remote) */
 	CHECK_PARAMS( conn->cc_incoming );
 
@@ -546,16 +564,16 @@
 static int fd_cnx_may_dtls(struct cnxctx * conn);
 
 /* Get a short string representing the connection */
-int fd_cnx_proto_info(struct cnxctx * conn, char * buf, size_t len) 
+int fd_cnx_proto_info(struct cnxctx * conn, char * buf, size_t len)
 {
 	CHECK_PARAMS( conn );
-	
+
 	if (fd_cnx_teststate(conn, CC_STATUS_TLS)) {
 		snprintf(buf, len, "%s,%s,soc#%d", IPPROTO_NAME(conn->cc_proto), fd_cnx_may_dtls(conn) ? "DTLS" : "TLS", conn->cc_socket);
 	} else {
 		snprintf(buf, len, "%s,soc#%d", IPPROTO_NAME(conn->cc_proto), conn->cc_socket);
 	}
-	
+
 	return 0;
 }
 
@@ -563,27 +581,27 @@
 int fd_cnx_get_local_eps(struct fd_list * list)
 {
 	struct ifaddrs *iflist, *cur;
-	
+
 	CHECK_SYS(getifaddrs(&iflist));
-	
+
 	for (cur = iflist; cur != NULL; cur = cur->ifa_next) {
 		if (cur->ifa_flags & IFF_LOOPBACK)
 			continue;
-		
+
 		if (cur->ifa_addr == NULL) /* may happen with ppp interfaces */
 			continue;
-		
+
 		if (fd_g_config->cnf_flags.no_ip4 && (cur->ifa_addr->sa_family == AF_INET))
 			continue;
-		
+
 		if (fd_g_config->cnf_flags.no_ip6 && (cur->ifa_addr->sa_family == AF_INET6))
 			continue;
-		
+
 		CHECK_FCT(fd_ep_add_merge( list, cur->ifa_addr, sSAlen(cur->ifa_addr), EP_FL_LL ));
 	}
-	
+
 	freeifaddrs(iflist);
-	
+
 	return 0;
 }
 
@@ -597,31 +615,31 @@
 {
 	TRACE_ENTRY("%p", conn);
 	CHECK_PARAMS_DO( conn, goto fatal );
-	
+
 	TRACE_DEBUG(FULL, "Error flag set for socket %d (%s, %s)", conn->cc_socket, conn->cc_id, conn->cc_remid);
 
 	/* Mark the error */
 	fd_cnx_addstate(conn, CC_STATUS_ERROR);
-	
+
 	/* Report the error if not reported yet, and not closing */
 	if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING | CC_STATUS_SIGNALED ))  {
 		TRACE_DEBUG(FULL, "Sending FDEVP_CNX_ERROR event");
 		CHECK_FCT_DO( fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_ERROR, 0, NULL), goto fatal);
 		fd_cnx_addstate(conn, CC_STATUS_SIGNALED);
 	}
-	
+
 	return;
 fatal:
 	/* An unrecoverable error occurred, stop the daemon */
 	ASSERT(0);
-	CHECK_FCT_DO(fd_core_shutdown(), );	
+	CHECK_FCT_DO(fd_core_shutdown(), );
 }
 
 /* Set the timeout option on the socket */
-void fd_cnx_s_setto(int sock) 
+void fd_cnx_s_setto(int sock)
 {
 	struct timeval tv;
-	
+
 	/* Set a timeout on the socket so that in any case we are not stuck waiting for something */
 	memset(&tv, 0, sizeof(tv));
 	tv.tv_usec = 100000L;	/* 100ms, to react quickly to head-of-the-line blocking. */
@@ -636,15 +654,15 @@
 {
 	fd_set rfds;
 	struct timeval tv;
-	
+
 	FD_ZERO (&rfds);
 	FD_SET (conn->cc_socket, &rfds);
-	
+
 	tv.tv_sec = ms / 1000;
 	tv.tv_usec = (ms * 1000) % 1000000;
-	
+
 	return select (conn->cc_socket + 1, &rfds, NULL, NULL, &tv);
-}		
+}
 #endif /* GNUTLS_VERSION_300 */
 
 /* A recv-like function, taking a cnxctx object instead of socket as entry. We use it to quickly react to timeouts without traversing GNUTLS wrapper each time */
@@ -664,13 +682,13 @@
 			goto again;
 		}
 	}
-	
+
 	/* Mark the error */
 	if (ret <= 0) {
 		CHECK_SYS_DO(ret, /* continue, this is only used to log the error here */);
 		fd_cnx_markerror(conn);
 	}
-	
+
 	return ret;
 }
 
@@ -686,7 +704,7 @@
 	if ((ret < 0) && ((errno == EAGAIN) || (errno == EINTR))) {
 		ret = -errno;
 		pthread_testcancel();
-		
+
 		/* Check how much time we were blocked for this sending. */
 		CHECK_SYS_DO(  clock_gettime(CLOCK_REALTIME, &now), return -1 );
 		if ( ((now.tv_sec - ts.tv_sec) * 1000 + ((now.tv_nsec - ts.tv_nsec) / 1000000L)) > MAX_HOTL_BLOCKING_TIME) {
@@ -694,17 +712,17 @@
 		} else if (! fd_cnx_teststate(conn, CC_STATUS_CLOSING )) {
 			goto again; /* don't care, just ignore */
 		}
-		
+
 		/* propagate the error */
 		errno = -ret;
 		ret = -1;
 		CHECK_SYS_DO(ret, /* continue */);
 	}
-	
+
 	/* Mark the error */
 	if (ret <= 0)
 		fd_cnx_markerror(conn);
-	
+
 	return ret;
 }
 
@@ -730,7 +748,7 @@
 struct fd_msg_pmdl * fd_msg_pmdl_get_inbuf(uint8_t * buf, size_t datalen)
 {
 	return (struct fd_msg_pmdl *)(buf + PMDL_PADDED(datalen));
-} 
+}
 
 static int fd_cnx_init_msg_buffer(uint8_t * buffer, size_t expected_len, struct fd_msg_pmdl ** pmdl)
 {
@@ -743,7 +761,7 @@
 static uint8_t * fd_cnx_alloc_msg_buffer(size_t expected_len, struct fd_msg_pmdl ** pmdl)
 {
 	uint8_t * ret = NULL;
-	
+
 	CHECK_MALLOC_DO(  ret = malloc( fd_msg_pmdl_sizewithoverhead(expected_len) ), return NULL );
 	CHECK_FCT_DO( fd_cnx_init_msg_buffer(ret, expected_len, pmdl), {free(ret); return NULL;} );
 	return ret;
@@ -753,14 +771,14 @@
 static uint8_t * fd_cnx_realloc_msg_buffer(uint8_t * buffer, size_t expected_len, struct fd_msg_pmdl ** pmdl)
 {
 	uint8_t * ret = NULL;
-	
+
 	CHECK_MALLOC_DO(  ret = realloc( buffer, fd_msg_pmdl_sizewithoverhead(expected_len) ), return NULL );
 	CHECK_FCT_DO( fd_cnx_init_msg_buffer(ret, expected_len, pmdl), {free(ret); return NULL;} );
 	return ret;
 }
 #endif /* DISABLE_SCTP */
 
-static void free_rcvdata(void * arg) 
+static void free_rcvdata(void * arg)
 {
 	struct fd_cnx_rcvdata * data = arg;
 	struct fd_msg_pmdl * pmdl = fd_msg_pmdl_get_inbuf(data->buffer, data->length);
@@ -772,21 +790,21 @@
 static void * rcvthr_notls_tcp(void * arg)
 {
 	struct cnxctx * conn = arg;
-	
+
 	TRACE_ENTRY("%p", arg);
 	CHECK_PARAMS_DO(conn && (conn->cc_socket > 0), goto out);
-	
+
 	/* Set the thread name */
 	{
 		char buf[48];
 		snprintf(buf, sizeof(buf), "Receiver (%d) TCP/noTLS)", conn->cc_socket);
 		fd_log_threadname ( buf );
 	}
-	
+
 	ASSERT( conn->cc_proto == IPPROTO_TCP );
 	ASSERT( ! fd_cnx_teststate(conn, CC_STATUS_TLS ) );
 	ASSERT( fd_cnx_target_queue(conn) );
-	
+
 	/* Receive from a TCP connection: we have to rebuild the message boundaries */
 	do {
 		uint8_t header[4];
@@ -802,7 +820,7 @@
 			}
 
 			received += ret;
-			
+
 			if (header[0] != DIAMETER_VERSION)
 				break; /* No need to wait for 4 bytes in this case */
 		} while (received < sizeof(header));
@@ -833,22 +851,22 @@
 			}
 			received += ret;
 		}
-		
+
 		fd_hook_call(HOOK_DATA_RECEIVED, NULL, NULL, &rcv_data, pmdl);
-		
+
 		/* We have received a complete message, pass it to the daemon */
-		CHECK_FCT_DO( fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer), 
-			{ 
+		CHECK_FCT_DO( fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer),
+			{
 				free_rcvdata(&rcv_data);
-				goto fatal; 
+				goto fatal;
 			} );
-		
+
 	} while (conn->cc_loop);
-	
+
 out:
-	TRACE_DEBUG(FULL, "Thread terminated");	
+	TRACE_DEBUG(FULL, "Thread terminated");
 	return NULL;
-	
+
 fatal:
 	/* An unrecoverable error occurred, stop the daemon */
 	CHECK_FCT_DO(fd_core_shutdown(), );
@@ -862,21 +880,21 @@
 	struct cnxctx * conn = arg;
 	struct fd_cnx_rcvdata rcv_data;
 	int	  event;
-	
+
 	TRACE_ENTRY("%p", arg);
 	CHECK_PARAMS_DO(conn && (conn->cc_socket > 0), goto fatal);
-	
+
 	/* Set the thread name */
 	{
 		char buf[48];
 		snprintf(buf, sizeof(buf), "Receiver (%d) SCTP/noTLS)", conn->cc_socket);
 		fd_log_threadname ( buf );
 	}
-	
+
 	ASSERT( conn->cc_proto == IPPROTO_SCTP );
 	ASSERT( ! fd_cnx_teststate(conn, CC_STATUS_TLS ) );
 	ASSERT( fd_cnx_target_queue(conn) );
-	
+
 	do {
 		struct fd_msg_pmdl *pmdl=NULL;
 		CHECK_FCT_DO( fd_sctp_recvmeta(conn, NULL, &rcv_data.buffer, &rcv_data.length, &event), goto fatal );
@@ -884,7 +902,7 @@
 			fd_cnx_markerror(conn);
 			goto out;
 		}
-		
+
 		if (event == FDEVP_CNX_SHUTDOWN) {
 			/* Just ignore the notification for now, we will get another error later anyway */
 			continue;
@@ -895,11 +913,11 @@
 			fd_hook_call(HOOK_DATA_RECEIVED, NULL, NULL, &rcv_data, pmdl);
 		}
 		CHECK_FCT_DO( fd_event_send( fd_cnx_target_queue(conn), event, rcv_data.length, rcv_data.buffer), goto fatal );
-		
+
 	} while (conn->cc_loop || (event != FDEVP_CNX_MSG_RECV));
-	
+
 out:
-	TRACE_DEBUG(FULL, "Thread terminated");	
+	TRACE_DEBUG(FULL, "Thread terminated");
 	return NULL;
 
 fatal:
@@ -913,15 +931,15 @@
 int fd_cnx_start_clear(struct cnxctx * conn, int loop)
 {
 	TRACE_ENTRY("%p %i", conn, loop);
-	
+
 	CHECK_PARAMS( conn && fd_cnx_target_queue(conn) && (!fd_cnx_teststate(conn, CC_STATUS_TLS)) && (!conn->cc_loop));
-	
+
 	/* Release resources in case of a previous call was already made */
 	CHECK_FCT_DO( fd_thr_term(&conn->cc_rcvthr), /* continue */);
-	
+
 	/* Save the loop request */
 	conn->cc_loop = loop;
-	
+
 	switch (conn->cc_proto) {
 		case IPPROTO_TCP:
 			/* Start the tcp_notls thread */
@@ -938,7 +956,7 @@
 			ASSERT(0);
 			return ENOTSUP;
 	}
-			
+
 	return 0;
 }
 
@@ -949,11 +967,11 @@
 static ssize_t fd_tls_recv_handle_error(struct cnxctx * conn, gnutls_session_t session, void * data, size_t sz)
 {
 	ssize_t ret;
-again:	
-	CHECK_GNUTLS_DO( ret = gnutls_record_recv(session, data, sz), 
+again:
+	CHECK_GNUTLS_DO( ret = gnutls_record_recv(session, data, sz),
 		{
 			switch (ret) {
-				case GNUTLS_E_REHANDSHAKE: 
+				case GNUTLS_E_REHANDSHAKE:
 					if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) {
 						CHECK_GNUTLS_DO( ret = gnutls_handshake(session),
 							{
@@ -975,7 +993,7 @@
 					/* The connection is closed */
 					TRACE_DEBUG(FULL, "Got 0 size while reading the socket, probably connection closed...");
 					break;
-				
+
 				default:
 					if (gnutls_error_is_fatal (ret) == 0) {
 						LOG_N("Ignoring non-fatal GNU TLS error: %s", gnutls_strerror (ret));
@@ -984,11 +1002,11 @@
 					LOG_E("Fatal GNUTLS error: %s", gnutls_strerror (ret));
 			}
 		} );
-		
+
 	if (ret == 0)
 		CHECK_GNUTLS_DO( gnutls_bye(session, GNUTLS_SHUT_RDWR),  );
-	
-end:	
+
+end:
 	if (ret <= 0)
 		fd_cnx_markerror(conn);
 	return ret;
@@ -1000,12 +1018,12 @@
 	ssize_t ret;
 	struct timespec ts, now;
 	CHECK_SYS_DO(  clock_gettime(CLOCK_REALTIME, &ts), return -1 );
-again:	
+again:
 	CHECK_GNUTLS_DO( ret = gnutls_record_send(session, data, sz),
 		{
 			pthread_testcancel();
 			switch (ret) {
-				case GNUTLS_E_REHANDSHAKE: 
+				case GNUTLS_E_REHANDSHAKE:
 					if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) {
 						CHECK_GNUTLS_DO( ret = gnutls_handshake(session),
 							{
@@ -1034,10 +1052,10 @@
 					LOG_E("Fatal GNUTLS error: %s", gnutls_strerror (ret));
 			}
 		} );
-end:	
+end:
 	if (ret <= 0)
 		fd_cnx_markerror(conn);
-		
+
 	return ret;
 }
 
@@ -1045,8 +1063,8 @@
 /* The function that receives TLS data and re-builds a Diameter message -- it exits only on error or cancelation */
 /* 	   For the case of DTLS, since we are not using SCTP_UNORDERED, the messages over a single stream are ordered.
 	   Furthermore, as long as messages are shorter than the MTU [2^14 = 16384 bytes], they are delivered in a single
-	   record, as far as I understand. 
-	   For larger messages, however, it is possible that pieces of messages coming from different streams can get interleaved. 
+	   record, as far as I understand.
+	   For larger messages, however, it is possible that pieces of messages coming from different streams can get interleaved.
 	   As a result, we do not use the following function for DTLS reception, because we use the sequence number to rebuild the
 	   messages. */
 int fd_tls_rcvthr_core(struct cnxctx * conn, gnutls_session_t session)
@@ -1095,19 +1113,19 @@
 			}
 			received += ret;
 		}
-		
+
 		fd_hook_call(HOOK_DATA_RECEIVED, NULL, NULL, &rcv_data, pmdl);
-		
+
 		/* We have received a complete message, pass it to the daemon */
-		CHECK_FCT_DO( ret = fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer), 
-			{ 
+		CHECK_FCT_DO( ret = fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer),
+			{
 				free_rcvdata(&rcv_data);
 				CHECK_FCT_DO(fd_core_shutdown(), );
-				return ret; 
+				return ret;
 			} );
-		
+
 	} while (1);
-	
+
 out:
 	return (ret == 0) ? 0 : ENOTCONN;
 }
@@ -1116,24 +1134,24 @@
 static void * rcvthr_tls_single(void * arg)
 {
 	struct cnxctx * conn = arg;
-	
+
 	TRACE_ENTRY("%p", arg);
 	CHECK_PARAMS_DO(conn && (conn->cc_socket > 0), return NULL );
-	
+
 	/* Set the thread name */
 	{
 		char buf[48];
 		snprintf(buf, sizeof(buf), "Receiver (%d) TLS/single stream", conn->cc_socket);
 		fd_log_threadname ( buf );
 	}
-	
+
 	ASSERT( fd_cnx_teststate(conn, CC_STATUS_TLS) );
 	ASSERT( fd_cnx_target_queue(conn) );
 
-	/* The next function only returns when there is an error on the socket */	
+	/* The next function only returns when there is an error on the socket */
 	CHECK_FCT_DO(fd_tls_rcvthr_core(conn, conn->cc_tls_para.session), /* continue */);
 
-	TRACE_DEBUG(FULL, "Thread terminated");	
+	TRACE_DEBUG(FULL, "Thread terminated");
 	return NULL;
 }
 
@@ -1151,7 +1169,7 @@
 	/* Set the algorithm suite */
 	if (priority) {
 		const char * errorpos;
-		CHECK_GNUTLS_DO( gnutls_priority_set_direct( *session, priority, &errorpos ), 
+		CHECK_GNUTLS_DO( gnutls_priority_set_direct( *session, priority, &errorpos ),
 			{ TRACE_DEBUG(INFO, "Error in priority string '%s' at position: '%s'", priority, errorpos); return EINVAL; } );
 	} else {
 		CHECK_GNUTLS_DO( gnutls_priority_set( *session, fd_g_config->cnf_sec_data.prio_cache ), return EINVAL );
@@ -1164,7 +1182,7 @@
 	if (mode == GNUTLS_SERVER) {
 		gnutls_certificate_server_set_request (*session, GNUTLS_CERT_REQUIRE);
 	}
-		
+
 	return 0;
 }
 
@@ -1179,17 +1197,17 @@
 	unsigned int cert_list_size;
 	gnutls_x509_crt_t cert;
 	time_t now;
-	
+
 	TRACE_ENTRY("%p %d", conn, verbose);
 	CHECK_PARAMS(conn);
-	
+
 	/* Trace the session information -- http://www.gnu.org/software/gnutls/manual/gnutls.html#Obtaining-session-information */
 	#ifdef DEBUG
 	if (verbose) {
 		const char *tmp;
 		gnutls_kx_algorithm_t kx;
   		gnutls_credentials_type_t cred;
-		
+
 		LOG_D("TLS Session information for connection '%s':", conn->cc_id);
 
 		/* print the key exchange's algorithm name */
@@ -1229,7 +1247,7 @@
 						gnutls_dh_get_prime_bits (session));
 				}
 				break;
-#ifdef ENABLE_SRP				
+#ifdef ENABLE_SRP
 			case GNUTLS_CRD_SRP:
 				LOG_D("\t - SRP session with username %s",
 					gnutls_srp_server_get_username (session));
@@ -1263,7 +1281,7 @@
 		LOG_D("\t - MAC: %s", tmp);
 	}
 	#endif /* DEBUG */
-	
+
 	/* First, use built-in verification */
 	CHECK_GNUTLS_DO( gnutls_certificate_verify_peers2 (session, &gtret), return EINVAL );
 	if (gtret) {
@@ -1280,33 +1298,33 @@
 			LOG_E(" - The certificate signature uses a weak algorithm.");
 		return EINVAL;
 	}
-	
+
 	/* Code from http://www.gnu.org/software/gnutls/manual/gnutls.html#Verifying-peer_0027s-certificate */
 	if (gnutls_certificate_type_get (session) != GNUTLS_CRT_X509) {
 		LOG_E("TLS: Remote peer did not present a certificate, other mechanisms are not supported yet. socket %d (Remote: '%s')(Connection: '%s') :", conn->cc_socket, conn->cc_remid, conn->cc_id);
 		return EINVAL;
 	}
-	
+
 	GNUTLS_TRACE( cert_list = gnutls_certificate_get_peers (session, &cert_list_size) );
 	if (cert_list == NULL)
 		return EINVAL;
-	
+
 	now = time(NULL);
-	
+
 	#ifdef DEBUG
 		char serial[40];
 		char dn[128];
 		size_t size;
 		unsigned int algo, bits;
 		time_t expiration_time, activation_time;
-		
+
 		LOG_D("TLS Certificate information for connection '%s' (%d certs provided):", conn->cc_id, cert_list_size);
 		for (i = 0; i < cert_list_size; i++)
 		{
 
 			CHECK_GNUTLS_DO( gnutls_x509_crt_init (&cert), return EINVAL);
 			CHECK_GNUTLS_DO( gnutls_x509_crt_import (cert, &cert_list[i], GNUTLS_X509_FMT_DER), return EINVAL);
-		
+
 			LOG_A(" Certificate %d info:", i);
 
 			GNUTLS_TRACE( expiration_time = gnutls_x509_crt_get_expiration_time (cert) );
@@ -1318,7 +1336,7 @@
 			/* Print the serial number of the certificate. */
 			size = sizeof (serial);
 			gnutls_x509_crt_get_serial (cert, serial, &size);
-			
+
 			{
 				int j;
 				char buf[1024];
@@ -1354,24 +1372,24 @@
 	for (i = 0; i < cert_list_size; i++)
 	{
 		time_t deadline;
-		
+
 		CHECK_GNUTLS_DO( gnutls_x509_crt_init (&cert), return EINVAL);
 		CHECK_GNUTLS_DO( gnutls_x509_crt_import (cert, &cert_list[i], GNUTLS_X509_FMT_DER), return EINVAL);
-		
+
 		GNUTLS_TRACE( deadline = gnutls_x509_crt_get_expiration_time(cert) );
 		if ((deadline != (time_t)-1) && (deadline < now)) {
 			LOG_E("TLS: Remote certificate invalid on socket %d (Remote: '%s')(Connection: '%s') :", conn->cc_socket, conn->cc_remid, conn->cc_id);
 			LOG_E(" - The certificate %d in the chain is expired", i);
 			ret = EINVAL;
 		}
-		
+
 		GNUTLS_TRACE( deadline = gnutls_x509_crt_get_activation_time(cert) );
 		if ((deadline != (time_t)-1) && (deadline > now)) {
 			LOG_E("TLS: Remote certificate invalid on socket %d (Remote: '%s')(Connection: '%s') :", conn->cc_socket, conn->cc_remid, conn->cc_id);
 			LOG_E(" - The certificate %d in the chain is not yet activated", i);
 			ret = EINVAL;
 		}
-		
+
 		if ((i == 0) && (conn->cc_tls_para.cn)) {
 			if (!gnutls_x509_crt_check_hostname (cert, conn->cc_tls_para.cn)) {
 				LOG_E("TLS: Remote certificate invalid on socket %d (Remote: '%s')(Connection: '%s') :", conn->cc_socket, conn->cc_remid, conn->cc_id);
@@ -1379,7 +1397,7 @@
 				ret = EINVAL;
 			}
 		}
-		
+
 		GNUTLS_TRACE( gnutls_x509_crt_deinit (cert) );
 	}
 
@@ -1400,10 +1418,10 @@
 	int hostname_verified = 0;
 
 	TRACE_ENTRY("%p", session);
-	
+
 	/* get the associated connection */
 	conn = gnutls_session_get_ptr (session);
-	
+
 	/* Trace the session information -- http://www.gnu.org/software/gnutls/manual/gnutls.html#Obtaining-session-information */
 #ifdef DEBUG
 		const char *tmp;
@@ -1414,7 +1432,7 @@
 		dhe = ecdh = 0;
 
 		LOG_A("TLS Session information for connection '%s':", conn->cc_id);
-		
+
 		/* print the key exchange's algorithm name
 		*/
 		GNUTLS_TRACE( kx = gnutls_kx_get (session) );
@@ -1474,7 +1492,7 @@
 					dhe = 1;
 				else if (kx == GNUTLS_KX_ECDHE_RSA || kx == GNUTLS_KX_ECDHE_ECDSA)
 					ecdh = 1;
-				
+
 				/* Now print some info on the remote certificate */
 				if (gnutls_certificate_type_get (session) == GNUTLS_CRT_X509) {
 					gnutls_datum_t cinfo;
@@ -1504,7 +1522,7 @@
 						  LOG_D("\t\t%s", cinfo.data);
 						  gnutls_free (cinfo.data);
 						}
-						
+
 						if (conn->cc_tls_para.cn) {
 							if (!gnutls_x509_crt_check_hostname (cert, conn->cc_tls_para.cn)) {
 								LOG_E("\tTLS: Remote certificate invalid on socket %d (Remote: '%s')(Connection: '%s') :", conn->cc_socket, conn->cc_remid, conn->cc_id);
@@ -1512,7 +1530,7 @@
 								gnutls_x509_crt_deinit (cert);
 								return GNUTLS_E_CERTIFICATE_ERROR;
 							}
-							
+
 						}
 
 						hostname_verified = 1;
@@ -1535,7 +1553,7 @@
 			LOG_D("\t - Ephemeral DH using prime of %d bits",
 				gnutls_dh_get_prime_bits (session));
 
-		/* print the protocol's name (ie TLS 1.0) 
+		/* print the protocol's name (ie TLS 1.0)
 		*/
 		tmp = gnutls_protocol_get_name (gnutls_protocol_get_version (session));
 		LOG_D("\t - Protocol: %s", tmp);
@@ -1557,8 +1575,8 @@
 		*/
 		tmp = gnutls_mac_get_name (gnutls_mac_get (session));
 		LOG_D("\t - MAC: %s", tmp);
-	
-#endif /* DEBUG */		
+
+#endif /* DEBUG */
 
 	/* This verification function uses the trusted CAs in the credentials
 	* structure. So you must have installed one or more CA certificates.
@@ -1577,12 +1595,12 @@
 
 		if (status & GNUTLS_CERT_NOT_ACTIVATED)
 			LOG_E(" - The certificate is not yet activated.");
-	}	
+	}
 	if (status & GNUTLS_CERT_INVALID)
 	{
 		return GNUTLS_E_CERTIFICATE_ERROR;
 	}
-	
+
 	/* Up to here the process is the same for X.509 certificates and
 	* OpenPGP keys. From now on X.509 certificates are assumed. This can
 	* be easily extended to work with openpgp keys as well.
@@ -1634,22 +1652,22 @@
 int fd_cnx_handshake(struct cnxctx * conn, int mode, int algo, char * priority, void * alt_creds)
 {
 	int dtls = 0;
-	
+
 	TRACE_ENTRY( "%p %d %d %p %p", conn, mode, algo, priority, alt_creds);
 	CHECK_PARAMS( conn && (!fd_cnx_teststate(conn, CC_STATUS_TLS)) && ( (mode == GNUTLS_CLIENT) || (mode == GNUTLS_SERVER) ) && (!conn->cc_loop) );
 
 	/* Save the mode */
 	conn->cc_tls_para.mode = mode;
 	conn->cc_tls_para.algo = algo;
-	
+
 	/* Cancel receiving thread if any -- it should already be terminated anyway, we just release the resources */
 	CHECK_FCT_DO( fd_thr_term(&conn->cc_rcvthr), /* continue */);
-	
+
 	/* Once TLS handshake is done, we don't stop after the first message */
 	conn->cc_loop = 1;
-	
+
 	dtls = fd_cnx_may_dtls(conn);
-	
+
 	/* Prepare the master session credentials and priority */
 	CHECK_FCT( fd_tls_prepare(&conn->cc_tls_para.session, mode, dtls, priority, alt_creds) );
 
@@ -1682,32 +1700,32 @@
 			return ENOTSUP;
 		}
 	}
-	
+
 	/* additional initialization for gnutls 3.x */
 	#ifdef GNUTLS_VERSION_300
 		/* the verify function has already been set in the global initialization in config.c */
-	
+
 	/* fd_tls_verify_credentials_2 uses the connection */
 	gnutls_session_set_ptr (conn->cc_tls_para.session, (void *) conn);
-	
+
 	if ((conn->cc_tls_para.cn != NULL) && (mode == GNUTLS_CLIENT)) {
 		/* this might allow virtual hosting on the remote peer */
 		CHECK_GNUTLS_DO( gnutls_server_name_set (conn->cc_tls_para.session, GNUTLS_NAME_DNS, conn->cc_tls_para.cn, strlen(conn->cc_tls_para.cn)), /* ignore failure */);
 	}
-	
+
 	#endif /* GNUTLS_VERSION_300 */
 
 	#ifdef GNUTLS_VERSION_310
 	GNUTLS_TRACE( gnutls_handshake_set_timeout( conn->cc_tls_para.session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT));
 	#endif /* GNUTLS_VERSION_310 */
-	
+
 	/* Mark the connection as protected from here, so that the gnutls credentials will be freed */
 	fd_cnx_addstate(conn, CC_STATUS_TLS);
-	
+
 	/* Handshake master session */
 	{
 		int ret;
-	
+
 		CHECK_GNUTLS_DO( ret = gnutls_handshake(conn->cc_tls_para.session),
 			{
 				if (TRACE_BOOL(INFO)) {
@@ -1719,15 +1737,15 @@
 
 		#ifndef GNUTLS_VERSION_300
 		/* Now verify the remote credentials are valid -- only simple tests here */
-		CHECK_FCT_DO( fd_tls_verify_credentials(conn->cc_tls_para.session, conn, 1), 
-			{  
+		CHECK_FCT_DO( fd_tls_verify_credentials(conn->cc_tls_para.session, conn, 1),
+			{
 				CHECK_GNUTLS_DO( gnutls_bye(conn->cc_tls_para.session, GNUTLS_SHUT_RDWR),  );
 				fd_cnx_markerror(conn);
 				return EINVAL;
 			});
 		#endif /* GNUTLS_VERSION_300 */
 	}
-	
+
 	/* Multi-stream TLS: handshake other streams as well */
 	if ((!dtls) && (conn->cc_sctp_para.pairs > 1)) {
 #ifndef DISABLE_SCTP
@@ -1750,7 +1768,7 @@
 			return ENOTSUP;
 		}
 	}
-	
+
 	return 0;
 }
 
@@ -1759,10 +1777,10 @@
 {
 	TRACE_ENTRY("%p %p %p", conn, cert_list, cert_list_size);
 	CHECK_PARAMS( conn && fd_cnx_teststate(conn, CC_STATUS_TLS) && cert_list && cert_list_size );
-	
+
 	/* This function only works for X.509 certificates. */
 	CHECK_PARAMS( gnutls_certificate_type_get (conn->cc_tls_para.session) == GNUTLS_CRT_X509 );
-	
+
 	GNUTLS_TRACE( *cert_list = gnutls_certificate_get_peers (conn->cc_tls_para.session, cert_list_size) );
 	if (*cert_list == NULL) {
 		TRACE_DEBUG(INFO, "No certificate was provided by remote peer / an error occurred.");
@@ -1770,7 +1788,7 @@
 	}
 
 	TRACE_DEBUG( FULL, "Saved certificate chain (%d certificates) in peer structure.", *cert_list_size);
-	
+
 	return 0;
 }
 
@@ -1781,7 +1799,7 @@
 	int    ev;
 	size_t ev_sz;
 	void * ev_data;
-	
+
 	TRACE_ENTRY("%p %p %p %p", conn, timeout, buf, len);
 	CHECK_PARAMS(conn && (conn->cc_socket > 0) && buf && len);
 	CHECK_PARAMS(conn->cc_rcvthr != (pthread_t)NULL);
@@ -1794,27 +1812,27 @@
 	} else {
 		CHECK_FCT( fd_event_get(conn->cc_incoming, &ev, &ev_sz, &ev_data) );
 	}
-	
+
 	switch (ev) {
 		case FDEVP_CNX_MSG_RECV:
 			/* We got one */
 			*len = ev_sz;
 			*buf = ev_data;
 			return 0;
-			
+
 		case FDEVP_PSM_TIMEOUT:
 			TRACE_DEBUG(FULL, "Timeout event received");
 			return ETIMEDOUT;
-			
+
 		case FDEVP_CNX_EP_CHANGE:
 			/* We ignore this event */
 			goto get_next;
-			
+
 		case FDEVP_CNX_ERROR:
 			TRACE_DEBUG(FULL, "Received ERROR event on the connection");
 			return ENOTCONN;
 	}
-	
+
 	TRACE_DEBUG(INFO, "Received unexpected event %d (%s)", ev, fd_pev_str(ev));
 	return EINVAL;
 }
@@ -1835,12 +1853,12 @@
 	int ret;
 	TRACE_ENTRY( "%p %p", conn, alt_fifo );
 	CHECK_PARAMS( conn && alt_fifo && conn->cc_incoming );
-	
+
 	/* The magic function does it all */
 	CHECK_POSIX_DO( pthread_mutex_lock(&state_lock), { ASSERT(0); } );
 	CHECK_FCT_DO( ret = fd_fifo_move( conn->cc_incoming, alt_fifo, &conn->cc_alt ), );
 	CHECK_POSIX_DO( pthread_mutex_unlock(&state_lock), { ASSERT(0); } );
-	
+
 	return ret;
 }
 
@@ -1861,7 +1879,7 @@
 		}
 		if (ret <= 0)
 			return ENOTCONN;
-		
+
 		sent += ret;
 	} while ( sent < len );
 	return 0;
@@ -1871,16 +1889,16 @@
 int fd_cnx_send(struct cnxctx * conn, unsigned char * buf, size_t len)
 {
 	TRACE_ENTRY("%p %p %zd", conn, buf, len);
-	
+
 	CHECK_PARAMS(conn && (conn->cc_socket > 0) && (! fd_cnx_teststate(conn, CC_STATUS_ERROR)) && buf && len);
 
 	TRACE_DEBUG(FULL, "Sending %zdb %sdata on connection %s", len, fd_cnx_teststate(conn, CC_STATUS_TLS) ? "TLS-protected ":"", conn->cc_id);
-	
+
 	switch (conn->cc_proto) {
 		case IPPROTO_TCP:
 			CHECK_FCT( send_simple(conn, buf, len) );
 			break;
-		
+
 #ifndef DISABLE_SCTP
 		case IPPROTO_SCTP: {
 			int dtls = fd_cnx_uses_dtls(conn);
@@ -1892,14 +1910,14 @@
 						limit = conn->cc_sctp_para.pairs;
 					else
 						limit = conn->cc_sctp_para.str_out;
-					
+
 					if (limit > 1) {
 						conn->cc_sctp_para.next += 1;
 						conn->cc_sctp_para.next %= limit;
 						stream = conn->cc_sctp_para.next;
 					}
 				}
-				
+
 				if (stream == 0) {
 					/* We can use default function, it sends over stream #0 */
 					CHECK_FCT( send_simple(conn, buf, len) );
@@ -1908,7 +1926,7 @@
 						struct iovec iov;
 						iov.iov_base = buf;
 						iov.iov_len  = len;
-						
+
 						CHECK_SYS_DO( fd_sctp_sendstrv(conn, stream, &iov, 1), { fd_cnx_markerror(conn); return ENOTCONN; } );
 					} else {
 						/* push the data to the appropriate session */
@@ -1932,13 +1950,13 @@
 		}
 		break;
 #endif /* DISABLE_SCTP */
-	
+
 		default:
 			TRACE_DEBUG(INFO, "Unknown protocol: %d", conn->cc_proto);
 			ASSERT(0);
 			return ENOTSUP;	/* or EINVAL... */
 	}
-	
+
 	return 0;
 }
 
@@ -1951,11 +1969,11 @@
 void fd_cnx_destroy(struct cnxctx * conn)
 {
 	TRACE_ENTRY("%p", conn);
-	
+
 	CHECK_PARAMS_DO(conn, return);
-	
+
 	fd_cnx_addstate(conn, CC_STATUS_CLOSING);
-	
+
 	/* Initiate shutdown of the TLS session(s): call gnutls_bye(WR), then read until error */
 	if (fd_cnx_teststate(conn, CC_STATUS_TLS)) {
 #ifndef DISABLE_SCTP
@@ -1985,7 +2003,7 @@
 				GNUTLS_TRACE( gnutls_deinit(conn->cc_tls_para.session) );
 				conn->cc_tls_para.session = NULL;
 			}
-			
+
 			/* Destroy the wrapper (also stops the demux thread) */
 			fd_sctp3436_destroy(conn);
 
@@ -2007,7 +2025,7 @@
 				/* Cancel the receiver thread in case it did not already terminate */
 				CHECK_FCT_DO( fd_thr_term(&conn->cc_rcvthr), /* continue */ );
 			}
-			
+
 			/* Free the resources of the TLS session */
 			if (conn->cc_tls_para.session) {
 				GNUTLS_TRACE( gnutls_deinit(conn->cc_tls_para.session) );
@@ -2017,25 +2035,25 @@
 		}
 #endif /* DISABLE_SCTP */
 	}
-	
+
 	/* Terminate the thread in case it is not done yet -- is there any such case left ?*/
 	CHECK_FCT_DO( fd_thr_term(&conn->cc_rcvthr), /* continue */ );
-		
+
 	/* Shut the connection down */
 	if (conn->cc_socket > 0) {
 		shutdown(conn->cc_socket, SHUT_RDWR);
 		close(conn->cc_socket);
 		conn->cc_socket = -1;
 	}
-	
+
 	/* Empty and destroy FIFO list */
 	if (conn->cc_incoming) {
 		fd_event_destroy( &conn->cc_incoming, free );
 	}
-	
+
 	/* Free the object */
 	free(conn);
-	
+
 	/* Done! */
 	return;
 }
--- a/libfdcore/cnxctx.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/cnxctx.h	Tue Jul 07 01:41:54 2020 +0800
@@ -43,14 +43,14 @@
 
 /* The connection context structure */
 struct cnxctx {
-	char		cc_id[60];	/* The name of this connection. the first 5 chars are reserved for flags display (cc_state). */
+	char		cc_id[100];	/* The name of this connection. the first 5 chars are reserved for flags display (cc_state). */
 	char		cc_remid[60];	/* Id of remote peer */
-	
+
 	int 		cc_socket;	/* The socket object of the connection -- <=0 if no socket is created */
 
 	int 		cc_family;	/* AF_INET or AF_INET6 (mixed) */
 	int 		cc_proto;	/* IPPROTO_TCP or IPPROTO_SCTP */
-	
+
 	uint32_t	cc_state;	/* True if the object is being destroyed: we don't send events anymore. access with fd_cnx_getstate() */
 	#define 	CC_STATUS_CLOSING	1
 	#define 	CC_STATUS_ERROR		2
@@ -59,7 +59,7 @@
 
 	pthread_t	cc_rcvthr;	/* thread for receiving messages on the connection */
 	int		cc_loop;	/* tell the thread if it loops or stops after the first message is received */
-	
+
 	struct fifo *	cc_incoming;	/* FIFO queue of events received on the connection, FDEVP_CNX_* */
 	struct fifo *	cc_alt;		/* alternate fifo to send FDEVP_CNX_* events to. */
 
@@ -117,7 +117,7 @@
 /* SCTP */
 int fd_sctp_create_bind_server( int * sock, int family, struct fd_list * list, uint16_t port );
 int fd_sctp_listen( int sock );
-int fd_sctp_client( int *sock, int no_ip6, uint16_t port, struct fd_list * list );
+int fd_sctp_client( int *sock, int no_ip6, uint16_t port, struct fd_list * list, struct fd_list * src_list );
 int fd_sctp_get_local_ep(int sock,  struct fd_list * list);
 int fd_sctp_get_remote_ep(int sock, struct fd_list * list);
 int fd_sctp_get_str_info( int sock, uint16_t *in, uint16_t *out, sSS *primary );
--- a/libfdcore/config.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/config.c	Tue Jul 07 01:41:54 2020 +0800
@@ -107,17 +107,18 @@
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Number of SCTP streams . : %hu\n", fd_g_config->cnf_sctp_str), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Number of clients thr .. : %d\n", fd_g_config->cnf_thr_srv), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Number of app threads .. : %hu\n", fd_g_config->cnf_dispthr), return NULL);
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Minimal processing peers : %hu\n", fd_g_config->cnf_processing_peers_minimum), return NULL);
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Minimal processing peers : %d\n", fd_g_config->cnf_processing_peers_minimum), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Number of rtin threads . : %hu\n", fd_g_config->cnf_rtinthr), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Number of rtout threads  : %hu\n", fd_g_config->cnf_rtoutthr), return NULL);
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Incoming queue limit     : %hu\n", fd_g_config->cnf_qin_limit), return NULL);
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Outgoing queue limit     : %hu\n", fd_g_config->cnf_qout_limit), return NULL);
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Local queue limit        : %hu\n", fd_g_config->cnf_qlocal_limit), return NULL);
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Incoming queue limit     : %d\n", fd_g_config->cnf_qin_limit), return NULL);
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Outgoing queue limit     : %d\n", fd_g_config->cnf_qout_limit), return NULL);
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Local queue limit        : %d\n", fd_g_config->cnf_qlocal_limit), return NULL);
 	if (FD_IS_LIST_EMPTY(&fd_g_config->cnf_endpoints)) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Local endpoints ........ : Default (use all available)\n"), return NULL);
 	} else {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Local endpoints ........ : "), return NULL);
 		CHECK_MALLOC_DO( fd_ep_dump( FD_DUMP_STD_PARAMS, 0, 0, &fd_g_config->cnf_endpoints ), return NULL);
+		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n"), return NULL);
 	}
 	if (FD_IS_LIST_EMPTY(&fd_g_config->cnf_apps)) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  Local applications ..... : (none)"), return NULL);
@@ -146,6 +147,7 @@
 	#endif /* DISABLE_SCTP */
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "          - Pref. proto .. : %s\n", fd_g_config->cnf_flags.pr_tcp ? "TCP" : "SCTP"), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "          - TLS method ... : %s\n", fd_g_config->cnf_flags.tls_alg ? "INBAND" : "Separate port"), return NULL);
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "          - Client bind .. : %s\n", fd_g_config->cnf_flags.no_bind ? "DISABLED" : "Enabled"), return NULL);
 	
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "  TLS :   - Certificate .. : %s\n", fd_g_config->cnf_sec_data.cert_file ?: "(NONE)"), return NULL);
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "          - Private key .. : %s\n", fd_g_config->cnf_sec_data.key_file ?: "(NONE)"), return NULL);
@@ -350,7 +352,8 @@
 	}
 	
 	/* Validate local endpoints */
-	if ((!FD_IS_LIST_EMPTY(&fd_g_config->cnf_endpoints)) && (fd_g_config->cnf_flags.no_ip4 || fd_g_config->cnf_flags.no_ip6)) {
+	fd_g_config->cnf_flags.no_bind = FD_IS_LIST_EMPTY(&fd_g_config->cnf_endpoints);
+	if ((!fd_g_config->cnf_flags.no_bind) && (fd_g_config->cnf_flags.no_ip4 || fd_g_config->cnf_flags.no_ip6)) {
 		struct fd_list * li;
 		for ( li = fd_g_config->cnf_endpoints.next; li != &fd_g_config->cnf_endpoints; li = li->next) {
 			struct fd_endpoint * ep = (struct fd_endpoint *)li;
--- a/libfdcore/dict_base_proto.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/dict_base_proto.c	Tue Jul 07 01:41:54 2020 +0800
@@ -1582,38 +1582,7 @@
 					};
 			CHECK_dict_new( DICT_AVP, &data , NULL, NULL);
 		}
-		
-		/* Experimental-Result */
-		{
-			/*
-				The Experimental-Result AVP (AVP Code 297) is of type Grouped, and
-				indicates whether a particular vendor-specific request was completed
-				successfully or whether an error occurred.  Its Data field has the
-				following ABNF grammar:
 
-				AVP Format
-
-				 Experimental-Result ::= < AVP Header: 297 >
-                        				 { Vendor-Id }
-                        				 { Experimental-Result-Code }
-
-				The Vendor-Id AVP (see Section 5.3.3) in this grouped AVP identifies
-				the vendor responsible for the assignment of the result code which
-				follows.  All Diameter answer messages defined in vendor-specific
-				applications MUST include either one Result-Code AVP or one
-				Experimental-Result AVP.
-			*/
-			struct dict_avp_data data = { 
-					297, 					/* Code */
-					0, 					/* Vendor */
-					"Experimental-Result", 			/* Name */
-					AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, 	/* Fixed flags */
-					AVP_FLAG_MANDATORY,			/* Fixed flag values */
-					AVP_TYPE_GROUPED 			/* base type of data */
-					};
-			CHECK_dict_new( DICT_AVP, &data , NULL, NULL);
-		}
-		
 		/* Experimental-Result-Code */
 		{
 			/*
@@ -1629,21 +1598,58 @@
 			/* Although the RFC does not specify an "Enumerated" type here, we go forward and create one.
 			 * This is the reason for the "*" in the type name. Vendors will have to define their values.
 			 */
-			struct dict_object * 	type;
-			struct dict_type_data 	tdata = { AVP_TYPE_UNSIGNED32,	"Enumerated(Experimental-Result-Code)"	, NULL, NULL, NULL };
-			struct dict_avp_data 	data = { 
-					298, 					/* Code */
-					0, 					/* Vendor */
-					"Experimental-Result-Code", 		/* Name */
-					AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY, 	/* Fixed flags */
+			struct dict_object *	type;
+			struct dict_type_data	tdata = { AVP_TYPE_UNSIGNED32,	"Enumerated(Experimental-Result-Code)"	, NULL, NULL, NULL };
+			struct dict_avp_data	data = {
+					298,					/* Code */
+					0,					/* Vendor */
+					"Experimental-Result-Code",		/* Name */
+					AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
 					AVP_FLAG_MANDATORY,			/* Fixed flag values */
-					AVP_TYPE_UNSIGNED32 			/* base type of data */
+					AVP_TYPE_UNSIGNED32			/* base type of data */
 					};
-			
+
 			CHECK_dict_new( DICT_TYPE, &tdata , NULL, &type);
 			CHECK_dict_new( DICT_AVP, &data , type, NULL);
 		}
-		
+
+		/* Experimental-Result */
+		{
+			/*
+				The Experimental-Result AVP (AVP Code 297) is of type Grouped, and
+				indicates whether a particular vendor-specific request was completed
+				successfully or whether an error occurred.  Its Data field has the
+				following ABNF grammar:
+
+				AVP Format
+
+				 Experimental-Result ::= < AVP Header: 297 >
+							{ Vendor-Id }
+							{ Experimental-Result-Code }
+
+				The Vendor-Id AVP (see Section 5.3.3) in this grouped AVP identifies
+				the vendor responsible for the assignment of the result code which
+				follows.  All Diameter answer messages defined in vendor-specific
+				applications MUST include either one Result-Code AVP or one
+				Experimental-Result AVP.
+			*/
+			struct dict_object *	avp = NULL;
+			struct dict_avp_data	data = {
+					297,					/* Code */
+					0,					/* Vendor */
+					"Experimental-Result",			/* Name */
+					AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+					AVP_FLAG_MANDATORY,			/* Fixed flag values */
+					AVP_TYPE_GROUPED			/* base type of data */
+					};
+			struct local_rules_definition rules[] = {
+				{ "Vendor-Id",			RULE_REQUIRED, -1, 1 },
+				{ "Experimental-Result-Code",	RULE_REQUIRED, -1, 1 },
+				};
+			CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+			PARSE_loc_rules( rules, avp );
+		}
+
 		/* Auth-Request-Type */
 		{
 			/*
--- a/libfdcore/fdcore-internal.h	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/fdcore-internal.h	Tue Jul 07 01:41:54 2020 +0800
@@ -342,7 +342,7 @@
 int             fd_cnx_serv_listen(struct cnxctx * conn);
 struct cnxctx * fd_cnx_serv_accept(struct cnxctx * serv);
 struct cnxctx * fd_cnx_cli_connect_tcp(sSA * sa, socklen_t addrlen);
-struct cnxctx * fd_cnx_cli_connect_sctp(int no_ip6, uint16_t port, struct fd_list * list);
+struct cnxctx * fd_cnx_cli_connect_sctp(int no_ip6, uint16_t port, struct fd_list * list, struct fd_list * src_list);
 int             fd_cnx_start_clear(struct cnxctx * conn, int loop);
 void		fd_cnx_sethostname(struct cnxctx * conn, DiamId_t hn);
 int		fd_cnx_proto_info(struct cnxctx * conn, char * buf, size_t len);
--- a/libfdcore/hooks.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/hooks.c	Tue Jul 07 01:41:54 2020 +0800
@@ -332,7 +332,9 @@
 		/* There was no registered handler, default behavior for this hook */
 		switch (type) {
 			case HOOK_DATA_RECEIVED: {
+#ifdef DEBUG
 				struct fd_cnx_rcvdata *rcv_data = other;
+#endif
 				LOG_A("RCV: %zd bytes", rcv_data->length);
 				break;
 			}
--- a/libfdcore/messages.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/messages.c	Tue Jul 07 01:41:54 2020 +0800
@@ -42,6 +42,9 @@
 static struct dict_object * dict_avp_ERH = NULL; /* Error-Reporting-Host */
 static struct dict_object * dict_avp_FAVP= NULL; /* Failed-AVP */
 static struct dict_object * dict_avp_RC  = NULL; /* Result-Code */
+static struct dict_object * dict_avp_ER  = NULL; /* Experimental-Result */
+static struct dict_object * dict_avp_VI  = NULL; /* Vendor-Id */
+static struct dict_object * dict_avp_ERC = NULL; /* Experimental-Result-Code */
 struct dict_object * fd_dict_avp_OSI = NULL; /* Origin-State-Id */
 struct dict_object * fd_dict_cmd_CER = NULL; /* Capabilities-Exchange-Request */
 struct dict_object * fd_dict_cmd_DWR = NULL; /* Device-Watchdog-Request */
@@ -63,6 +66,9 @@
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Error-Message",   	&dict_avp_EM  , ENOENT)  );
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Error-Reporting-Host", &dict_avp_ERH , ENOENT)  );
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Failed-AVP",      	&dict_avp_FAVP, ENOENT)  );
+	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result", &dict_avp_ER, ENOENT)  );
+	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Vendor-Id",		&dict_avp_VI, ENOENT)  );
+	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result-Code", &dict_avp_ERC, ENOENT)  );
 
 	CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Disconnect-Cause", 	&fd_dict_avp_DC , ENOENT)  );
 
@@ -166,30 +172,26 @@
 }
 
 
-/* Add Result-Code and eventually Failed-AVP, Error-Message and Error-Reporting-Host AVPs */
-int fd_msg_rescode_set( struct msg * msg, char * rescode, char * errormsg, struct avp * optavp, int type_id )
+/* Add Result-Code or Experimental-Result, and eventually Failed-AVP, Error-Message and Error-Reporting-Host AVPs */
+int fd_msg_add_result( struct msg * msg, vendor_id_t vendor, struct dict_object * restype, char * rescode, char * errormsg, struct avp * optavp, int type_id )
 {
 	union avp_value val;
-	struct avp * avp_RC  = NULL;
-	struct avp * avp_EM  = NULL;
-	struct avp * avp_ERH = NULL;
-	struct avp * avp_FAVP= NULL;
 	uint32_t rc_val = 0;
 	int set_e_bit=0;
 	int std_err_msg=0;
 
-	TRACE_ENTRY("%p %s %p %p %d", msg, rescode, errormsg, optavp, type_id);
+	TRACE_ENTRY("%p %d %p %s %p %p %d", msg, vendor, restype, rescode, errormsg, optavp, type_id);
 
-	CHECK_PARAMS(  msg && rescode  );
+	CHECK_PARAMS(  msg && restype && rescode  );
 
 	/* Find the enum value corresponding to the rescode string, this will give the class of error */
 	{
 		struct dict_object * enum_obj = NULL;
+
+		/* Search in the restype */
 		struct dict_enumval_request req;
 		memset(&req, 0, sizeof(struct dict_enumval_request));
-
-		/* First, get the enumerated type of the Result-Code AVP (this is fast, no need to cache the object) */
-		CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_OF_AVP, dict_avp_RC, &(req.type_obj), ENOENT  )  );
+		req.type_obj = restype;
 
 		/* Now search for the value given as parameter */
 		req.search.enum_name = rescode;
@@ -207,20 +209,58 @@
 		CHECK_FCT( fd_msg_add_origin ( msg, 0 ) );
 	}
 
-	/* Create the Result-Code AVP */
-	CHECK_FCT( fd_msg_avp_new( dict_avp_RC, 0, &avp_RC ) );
+	if (vendor == 0) {
+		/* Vendor 0; create the Result-Code AVP */
+		struct avp * avp_RC  = NULL;
+		CHECK_FCT( fd_msg_avp_new( dict_avp_RC, 0, &avp_RC ) );
+
+		/* Set its value */
+		memset(&val, 0, sizeof(val));
+		val.u32  = rc_val;
+		CHECK_FCT( fd_msg_avp_setvalue( avp_RC, &val ) );
+
+		/* Add it to the message */
+		CHECK_FCT( fd_msg_avp_add( msg, MSG_BRW_LAST_CHILD, avp_RC ) );
+	} else {
+		/* Vendor !0; create the Experimental-Result AVP */
+		struct avp * avp_ER  = NULL;
+		CHECK_FCT( fd_msg_avp_new( dict_avp_ER, 0, &avp_ER ) );
+
+		/* Create the Vendor-Id AVP and add to Experimental-Result */
+		{
+			struct avp * avp_VI  = NULL;
+			CHECK_FCT( fd_msg_avp_new( dict_avp_VI, 0, &avp_VI ) );
 
-	/* Set its value */
-	memset(&val, 0, sizeof(val));
-	val.u32  = rc_val;
-	CHECK_FCT( fd_msg_avp_setvalue( avp_RC, &val ) );
+			/* Set Vendor-Id value to vendor */
+			memset(&val, 0, sizeof(val));
+			val.u32  = vendor;
+			CHECK_FCT( fd_msg_avp_setvalue( avp_VI, &val ) );
+
+			/* Add it to Experimental-Result */
+			CHECK_FCT( fd_msg_avp_add( avp_ER, MSG_BRW_LAST_CHILD, avp_VI ) );
+		}
 
-	/* Add it to the message */
-	CHECK_FCT( fd_msg_avp_add( msg, MSG_BRW_LAST_CHILD, avp_RC ) );
+		/* Create the Experimental-Result-Code AVP and add to Experimental-Result */
+		{
+			struct avp * avp_ERC  = NULL;
+			CHECK_FCT( fd_msg_avp_new( dict_avp_ERC, 0, &avp_ERC ) );
+
+			/* Set Experimental-Result-Code value to rc_val */
+			memset(&val, 0, sizeof(val));
+			val.u32  = rc_val;
+			CHECK_FCT( fd_msg_avp_setvalue( avp_ERC, &val ) );
+
+			/* Add it to Experimental-Result */
+			CHECK_FCT( fd_msg_avp_add( avp_ER, MSG_BRW_LAST_CHILD, avp_ERC ) );
+		}
+
+		/* Add it to the message */
+		CHECK_FCT( fd_msg_avp_add( msg, MSG_BRW_LAST_CHILD, avp_ER ) );
+	}
 
 	if (type_id == 2) {
 		/* Add the Error-Reporting-Host AVP */
-
+		struct avp * avp_ERH = NULL;
 		CHECK_FCT( fd_msg_avp_new( dict_avp_ERH, 0, &avp_ERH ) );
 
 		/* Set its value */
@@ -231,11 +271,11 @@
 
 		/* Add it to the message */
 		CHECK_FCT( fd_msg_avp_add( msg, MSG_BRW_LAST_CHILD, avp_ERH ) );
-
 	}
 
-	/* Now add the optavp in a FailedAVP if provided */
+	/* Now add the optavp in a Failed-AVP if provided */
 	if (optavp) {
+		struct avp * avp_FAVP= NULL;
 		struct avp * optavp_cpy = NULL;
 		struct avp_hdr *opt_hdr, *optcpy_hdr;
 		struct dict_object * opt_model = NULL;
@@ -309,7 +349,7 @@
 
 	if (std_err_msg || errormsg) {
 		/* Add the Error-Message AVP */
-
+		struct avp * avp_EM  = NULL;
 		CHECK_FCT( fd_msg_avp_new( dict_avp_EM, 0, &avp_EM ) );
 
 		/* Set its value */
@@ -331,6 +371,13 @@
 	return 0;
 }
 
+int fd_msg_rescode_set( struct msg * msg, char * rescode, char * errormsg, struct avp * optavp, int type_id )
+{
+	struct dict_object * restype = NULL;
+	CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_OF_AVP, dict_avp_RC, &restype, ENOENT ) );
+	return fd_msg_add_result(msg, 0, restype, rescode, errormsg, optavp, type_id);
+}
+
 static int fd_msg_send_int( struct msg ** pmsg, void (*anscb)(void *, struct msg **), void * data, void (*expirecb)(void *, DiamId_t, size_t, struct msg **), const struct timespec *timeout )
 {
 	struct msg_hdr *hdr;
--- a/libfdcore/p_ce.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/p_ce.c	Tue Jul 07 01:41:54 2020 +0800
@@ -704,7 +704,7 @@
 int fd_p_ce_msgrcv(struct msg ** msg, int req, struct fd_peer * peer)
 {
 	uint32_t rc = 0;
-	int st;
+	int st = STATE_NEW;
 	struct fd_pei pei;
 	
 	TRACE_ENTRY("%p %p", msg, peer);
--- a/libfdcore/p_cnx.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/p_cnx.c	Tue Jul 07 01:41:54 2020 +0800
@@ -261,12 +261,14 @@
 		
 		switch (nc->proto) {
 			case IPPROTO_TCP:
+/* TODO: use no_bind and first of cnf_endpoints of nc->ss.sa_family ? */
 				cnx = fd_cnx_cli_connect_tcp((sSA *)&nc->ss, sSAlen(&nc->ss));
 				break;
 #ifndef DISABLE_SCTP			
 			case IPPROTO_SCTP:
 				cnx = fd_cnx_cli_connect_sctp((peer->p_hdr.info.config.pic_flags.pro3 == PI_P3_IP) ? 1 : fd_g_config->cnf_flags.no_ip6, 
-							nc->port, &peer->p_hdr.info.pi_endpoints);
+							nc->port, &peer->p_hdr.info.pi_endpoints,
+							fd_g_config->cnf_flags.no_bind ? NULL : &fd_g_config->cnf_endpoints);
 				break;
 #endif /* DISABLE_SCTP */
 		}
--- a/libfdcore/sctp.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/sctp.c	Tue Jul 07 01:41:54 2020 +0800
@@ -48,7 +48,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))) 
+#if (!defined(SCTP_CONNECTX_4_ARGS) || (!defined(SCTP_RECVRCVINFO)) || (!defined(SCTP_SNDINFO)) || (!defined(SCTP_SEND_FAILED_EVENT)))
 # define OLD_SCTP_SOCKET_API
 #endif
 
@@ -58,6 +58,34 @@
 #define ADJUST_RTX_PARAMS
 #endif /* USE_DEFAULT_SCTP_RTX_PARAMS */
 
+
+DECLARE_FD_DUMP_PROTOTYPE(fd_sa_dump_array, sSA * saddrs, int saddrs_count)
+{
+	union {
+		sSA	*sa;
+		uint8_t *buf;
+	} ptr;
+	int i;
+	int salen;
+
+	FD_DUMP_HANDLE_OFFSET();
+
+	ptr.sa = saddrs;
+	for (i = 0; i < saddrs_count; i++) {
+		salen = sSAlen(ptr.sa);
+		if (salen == 0) {
+			LOG_E("fd_sa_dump_array: Unknown sockaddr family");
+			break;
+		}
+		if (i > 0) {
+			CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, " "), return NULL);
+		}
+		CHECK_MALLOC_DO( fd_sa_dump( FD_DUMP_STD_PARAMS, ptr.sa, NI_NUMERICHOST | NI_NUMERICSERV), return NULL);
+		ptr.buf += salen;
+	}
+	return *buf;
+}
+
 /* Pre-binding socket options -- # streams read in config */
 static int fd_setsockopt_prebind(int sk)
 {
@@ -82,7 +110,7 @@
 		if (TRACE_BOOL(ANNOYING)) {
 			sz = sizeof(rtoinfo);
 			/* Read socket defaults */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_RTOINFO, &rtoinfo, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_RTOINFO, &rtoinfo, &sz)  );
 			if (sz != sizeof(rtoinfo))
 			{
 				TRACE_DEBUG(INFO, "Invalid size of socket option: %d / %d", sz, (socklen_t)sizeof(rtoinfo));
@@ -102,7 +130,7 @@
 		
 		if (TRACE_BOOL(ANNOYING)) {
 			/* Check new values */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_RTOINFO, &rtoinfo, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_RTOINFO, &rtoinfo, &sz)  );
 			fd_log_debug( "New SCTP_RTOINFO : srto_initial : %u", rtoinfo.srto_initial);
 			fd_log_debug( "                   srto_max     : %u", rtoinfo.srto_max);
 			fd_log_debug( "                   srto_min     : %u", rtoinfo.srto_min);
@@ -121,7 +149,7 @@
 		if (TRACE_BOOL(ANNOYING)) {
 			sz = sizeof(assoc);
 			/* Read socket defaults */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_ASSOCINFO, &assoc, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_ASSOCINFO, &assoc, &sz)  );
 			if (sz != sizeof(assoc))
 			{
 				TRACE_DEBUG(INFO, "Invalid size of socket option: %d / %d", sz, (socklen_t)sizeof(assoc));
@@ -142,7 +170,7 @@
 		
 		if (TRACE_BOOL(ANNOYING)) {
 			/* Check new values */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_ASSOCINFO, &assoc, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_ASSOCINFO, &assoc, &sz)  );
 			fd_log_debug( "New SCTP_ASSOCINFO : sasoc_asocmaxrxt               : %hu", assoc.sasoc_asocmaxrxt);
 			fd_log_debug( "                     sasoc_number_peer_destinations : %hu", assoc.sasoc_number_peer_destinations);
 			fd_log_debug( "                     sasoc_peer_rwnd                : %u" , assoc.sasoc_peer_rwnd);
@@ -318,7 +346,7 @@
 			sz = sizeof(parms);
 
 			/* Read socket defaults */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, &parms, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_PEER_ADDR_PARAMS, &parms, &sz)  );
 			if (sz != sizeof(parms))
 			{
 				TRACE_DEBUG(INFO, "Invalid size of socket option: %d / %d", sz, (socklen_t)sizeof(parms));
@@ -347,7 +375,7 @@
 		
 		if (TRACE_BOOL(ANNOYING)) {
 			/* Check new values */
-			CHECK_SYS(  getsockopt(sk, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, &parms, &sz)  );
+			CHECK_SYS(  sctp_opt_info(sk, 0, SCTP_PEER_ADDR_PARAMS, &parms, &sz)  );
 			fd_log_debug( "New SCTP_PEER_ADDR_PARAMS : spp_hbinterval    : %u",  parms.spp_hbinterval);
 			fd_log_debug( "                            spp_pathmaxrxt    : %hu", parms.spp_pathmaxrxt);
 			fd_log_debug( "                            spp_pathmtu       : %u",  parms.spp_pathmtu);
@@ -814,21 +842,16 @@
 			bind_default = 1;
 			goto redo;
 		}
-		
-		#if 0
-			union {
-				sSA	*sa;
-				uint8_t *buf;
-			} ptr;
-			int i;
-			ptr.sa = sar;
-			fd_log_debug("Calling sctp_bindx with the following address array:");
-			for (i = 0; i < count; i++) {
-				TRACE_sSA(FD_LOG_DEBUG, FULL, "    - ", ptr.sa, NI_NUMERICHOST | NI_NUMERICSERV, "" );
-				ptr.buf += (ptr.sa->sa_family == AF_INET) ? sizeof(sSA4) : sizeof(sSA6) ;
-			}
-		#endif
-		
+
+		/* Debug: show bound addresses */
+		{
+			char * buf = NULL;
+			size_t len = 0;
+			CHECK_MALLOC_DO( fd_sa_dump_array( &buf, &len, 0, sar, count), );
+			LOG_D("SCTP server binding local addresses: %s", buf);
+			free(buf);
+		}
+
 		/* Bind to this array */
 		CHECK_SYS(  sctp_bindx(*sock, sar, count, SCTP_BINDX_ADD_ADDR)  );
 		
@@ -840,22 +863,19 @@
 	CHECK_FCT( fd_setsockopt_postbind(*sock, bind_default) );
 	
 	/* Debug: show all local listening addresses */
-	#if 0
-		sSA *sar;
-		union {
-			sSA	*sa;
-			uint8_t *buf;
-		} ptr;
-		int sz;
-		
+	{
+		sSA *sar = NULL;
+		int sz = 0;
+		char * buf = NULL;
+		size_t len = 0;
+
 		CHECK_SYS(  sz = sctp_getladdrs(*sock, 0, &sar)  );
-		
-		fd_log_debug("SCTP server bound on :");
-		for (ptr.sa = sar; sz-- > 0; ptr.buf += (ptr.sa->sa_family == AF_INET) ? sizeof(sSA4) : sizeof(sSA6)) {
-			TRACE_sSA(FD_LOG_DEBUG, FULL, "    - ", ptr.sa, NI_NUMERICHOST | NI_NUMERICSERV, "" );
-		}
+
+		CHECK_MALLOC_DO( fd_sa_dump_array( &buf, &len, 0, sar, sz), );
+		LOG_D("SCTP server locally bound addresses: %s", buf);
 		sctp_freeladdrs(sar);
-	#endif
+		free(buf);
+	}
 
 	return 0;
 }
@@ -869,7 +889,7 @@
 }
 
 /* Create a client socket and connect to remote server */
-int fd_sctp_client( int *sock, int no_ip6, uint16_t port, struct fd_list * list )
+int fd_sctp_client( int *sock, int no_ip6, uint16_t port, struct fd_list * list, struct fd_list * src_list )
 {
 	int family;
 	union {
@@ -879,11 +899,13 @@
 	size_t size = 0;
 	int count = 0;
 	int ret;
+	int bind_default = 1;	/* enable ASCONF in postbind */
 	
 	sar.buf = NULL;
 	
-	TRACE_ENTRY("%p %i %hu %p", sock, no_ip6, port, list);
+	TRACE_ENTRY("%p %i %hu %p %p", sock, no_ip6, port, list, src_list);
 	CHECK_PARAMS( sock && list && (!FD_IS_LIST_EMPTY(list)) );
+	CHECK_PARAMS( !src_list || (src_list && (!FD_IS_LIST_EMPTY(src_list))) );
 	
 	if (no_ip6) {
 		family = AF_INET;
@@ -899,31 +921,47 @@
 	
 	/* Set the socket options */
 	CHECK_FCT_DO( ret = fd_setsockopt_prebind(*sock), goto out );
-	
+
+	/* Bind to explicit source addresses if requested */
+	if (src_list && !FD_IS_LIST_EMPTY(src_list)) {
+		sSA * bindsar = NULL; /* array of addresses */
+		size_t sz = 0; /* size of the array */
+		int sarcount = 0; /* number of sock addr in the array */
+
+		/* Create the array of configured addresses */
+		CHECK_FCT_DO( ret = add_addresses_from_list_mask((void *)&bindsar, &sz, &sarcount, family, 0, src_list, EP_FL_CONF, EP_FL_CONF), goto out );
+
+		if (sarcount) {
+			char * buf = NULL;
+			size_t len = 0;
+			CHECK_MALLOC_DO( fd_sa_dump_array( &buf, &len, 0, bindsar, sarcount), goto out );
+			LOG_A("SCTP client binding local addresses: %s", buf);
+			free(buf);
+
+			CHECK_SYS_DO( ret = sctp_bindx(*sock, bindsar, sarcount, SCTP_BINDX_ADD_ADDR), goto out );
+		}
+
+		/* Disable ASCONF option in postbind */
+		bind_default = 0;
+
+		/* We don't need bindsar anymore */
+		free(bindsar);
+	}
+
 	/* Create the array of addresses, add first the configured addresses, then the discovered, then the other ones */
 	CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF,              EP_FL_CONF	), goto out );
 	CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, EP_FL_DISC	), goto out );
 	CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, 0		), goto out );
 	
 	/* Try connecting */
-	LOG_A("Attempting SCTP connection (%d addresses attempted) ", count);
-		
-#if 0
-		/* Dump the SAs */
-		union {
-			uint8_t *buf;
-			sSA	*sa;
-			sSA4	*sin;
-			sSA6	*sin6;
-		} ptr;
-		int i;
-		ptr.buf = sar.buf;
-		for (i=0; i< count; i++) {
-			TRACE_sSA(FD_LOG_DEBUG, FULL, "  - ", ptr.sa, NI_NUMERICHOST | NI_NUMERICSERV, "" );
-			ptr.buf += (ptr.sa->sa_family == AF_INET) ? sizeof(sSA4) : sizeof(sSA6);
-		}
-#endif
-	
+	{
+		char * buf = NULL;
+		size_t len = 0;
+		CHECK_MALLOC_DO( fd_sa_dump_array( &buf, &len, 0, sar.sa, count), goto out );
+		LOG_A("SCTP client connecting to addresses: %s", buf);
+		free(buf);
+	}
+
 	/* Bug in some Linux kernel, the sctp_connectx is not a cancellation point. To avoid blocking freeDiameter, we allow async cancel here */
 	pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
 #ifdef SCTP_CONNECTX_4_ARGS
@@ -944,7 +982,7 @@
 	free(sar.buf); sar.buf = NULL;
 	
 	/* Set the remaining sockopts */
-	CHECK_FCT_DO( ret = fd_setsockopt_postbind(*sock, 1), 
+	CHECK_FCT_DO( ret = fd_setsockopt_postbind(*sock, bind_default),
 		{ 
 			CHECK_SYS_DO( shutdown(*sock, SHUT_RDWR), /* continue */ );
 		} );
@@ -982,7 +1020,7 @@
 	}
 #if 0
 		char sa_buf[sSA_DUMP_STRLEN];
-		fd_sa_sdump_numeric(sa_buf, &status.sstat_primary.spinfo_address);
+		fd_sa_sdump_numeric(sa_buf, (sSA *)&status.sstat_primary.spinfo_address);
 		fd_log_debug( "SCTP_STATUS : sstat_state                  : %i" , status.sstat_state);
 		fd_log_debug( "              sstat_rwnd  	          : %u" , status.sstat_rwnd);
 		fd_log_debug( "		     sstat_unackdata	          : %hu", status.sstat_unackdata);
@@ -1218,6 +1256,7 @@
 	/* Handle the case where the data received is a notification */
 	if (mhdr.msg_flags & MSG_NOTIFICATION) {
 		union sctp_notification * notif = (union sctp_notification *) data;
+		char sa_buf[sSA_DUMP_STRLEN];
 		
 		TRACE_DEBUG(FULL, "Received %zdb data of notification on socket %d", datasize, conn->cc_socket);
 	
@@ -1235,7 +1274,8 @@
 	
 			case SCTP_PEER_ADDR_CHANGE:
 				TRACE_DEBUG(FULL, "Received SCTP_PEER_ADDR_CHANGE notification");
-				/* TRACE_sSA(FD_LOG_DEBUG, ANNOYING, "    intf_change : ", &(notif->sn_paddr_change.spc_aaddr), NI_NUMERICHOST | NI_NUMERICSERV, "" ); */
+				fd_sa_sdump_numeric(sa_buf, (sSA *)&(notif->sn_paddr_change.spc_aaddr));
+				TRACE_DEBUG(ANNOYING, "    intf_change : %s", sa_buf);
 				TRACE_DEBUG(ANNOYING, "          state : %d", notif->sn_paddr_change.spc_state);
 				TRACE_DEBUG(ANNOYING, "          error : %d", notif->sn_paddr_change.spc_error);
 				
@@ -1271,10 +1311,12 @@
 				break;
 				
 #ifndef OLD_SCTP_SOCKET_API
+#ifdef SCTP_NOTIFICATIONS_STOPPED_EVENT
 			case SCTP_NOTIFICATIONS_STOPPED_EVENT:
 				TRACE_DEBUG(INFO, "Received SCTP_NOTIFICATIONS_STOPPED_EVENT notification, marking the association in error state");
 				*event = FDEVP_CNX_ERROR;
 				break;
+#endif	/*  SCTP_NOTIFICATIONS_STOPPED_EVENT  */
 #endif	/*  OLD_SCTP_SOCKET_API */		
 			
 			default:	
--- a/libfdcore/sctp3436.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdcore/sctp3436.c	Tue Jul 07 01:41:54 2020 +0800
@@ -137,7 +137,7 @@
 static void * decipher(void * arg)
 {
 	struct sctp3436_ctx * ctx = arg;
-	struct cnxctx 	 *cnx;
+	struct cnxctx 	 *cnx = NULL;
 
 	TRACE_ENTRY("%p", arg);
 	CHECK_PARAMS_DO(ctx && ctx->raw_recv && ctx->parent, goto error);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libfdproto/dictionary-internal.h	Tue Jul 07 01:41:54 2020 +0800
@@ -0,0 +1,136 @@
+/*********************************************************************************************************
+* Software License Agreement (BSD License)                                                               *
+* Author: Sebastien Decugis <sdecugis@freediameter.net>							 *
+*													 *
+* Copyright (c) 2015, WIDE Project and NICT								 *
+* All rights reserved.											 *
+* 													 *
+* Redistribution and use of this software in source and binary forms, with or without modification, are  *
+* permitted provided that the following conditions are met:						 *
+* 													 *
+* * Redistributions of source code must retain the above 						 *
+*   copyright notice, this list of conditions and the 							 *
+*   following disclaimer.										 *
+*    													 *
+* * Redistributions in binary form must reproduce the above 						 *
+*   copyright notice, this list of conditions and the 							 *
+*   following disclaimer in the documentation and/or other						 *
+*   materials provided with the distribution.								 *
+* 													 *
+* * Neither the name of the WIDE Project or NICT nor the 						 *
+*   names of its contributors may be used to endorse or 						 *
+*   promote products derived from this software without 						 *
+*   specific prior written permission of WIDE Project and 						 *
+*   NICT.												 *
+* 													 *
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
+* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 	 *
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 	 *
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
+* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF   *
+* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.								 *
+*********************************************************************************************************/
+
+#ifndef HAD_DICTIONARY_INTERNAL_H
+#define HAD_DICTIONARY_INTERNAL_H
+
+/* Names of the base types */
+extern const char * type_base_name[];
+
+/* The number of lists in an object */
+#define NB_LISTS_PER_OBJ	3
+
+/* Definition of the dictionary objects */
+struct dict_object {
+	enum dict_object_type	type;	/* What type of object is this? */
+	int			objeyec;/* eyecatcher for this object */
+	int			typeyec;/* eyecatcher for this type of object */
+	struct dictionary	*dico;  /* The dictionary this object belongs to */
+
+	union {
+		struct dict_vendor_data		vendor;		/* datastr_len = strlen(vendor_name) */
+		struct dict_application_data	application;	/* datastr_len = strlen(application_name) */
+		struct dict_type_data		type;		/* datastr_len = strlen(type_name) */
+		struct dict_enumval_data	enumval;	/* datastr_len = strlen(enum_name) */
+		struct dict_avp_data		avp;		/* datastr_len = strlen(avp_name) */
+		struct dict_cmd_data		cmd;		/* datastr_len = strlen(cmd_name) */
+		struct dict_rule_data		rule;		/* datastr_len = 0 */
+	} data;				/* The data of this object */
+
+	size_t			datastr_len; /* cached length of the string inside the data. Saved when the object is created. */
+
+	struct dict_object *	parent; /* The parent of this object, if any */
+
+	struct fd_list		list[NB_LISTS_PER_OBJ];/* used to chain objects.*/
+	/* More information about the lists :
+
+	 - the use for each list depends on the type of object. See detail below.
+
+	 - a sentinel for a list has its 'o' field cleared. (this is the criteria to detect end of a loop)
+
+	 - The lists are always ordered. The criteria are described below. the functions to order them are referenced in dict_obj_info
+
+	 - The dict_lock must be held for any list operation.
+
+	 => VENDORS:
+	 list[0]: list of the vendors, ordered by their id. The sentinel is g_dict_vendors (vendor with id 0)
+	 list[1]: sentinel for the list of AVPs from this vendor, ordered by AVP code.
+	 list[2]: sentinel for the list of AVPs from this vendor, ordered by AVP name (fd_os_cmp).
+
+	 => APPLICATIONS:
+	 list[0]: list of the applications, ordered by their id. The sentinel is g_dict_applications (application with id 0)
+	 list[1]: not used
+	 list[2]: not used.
+
+	 => TYPES:
+	 list[0]: list of the types, ordered by their names. The sentinel is g_list_types.
+	 list[1]: sentinel for the type_enum list of this type, ordered by their constant name (fd_os_cmp).
+	 list[2]: sentinel for the type_enum list of this type, ordered by their constant value.
+
+	 => TYPE_ENUMS:
+	 list[0]: list of the contants for a given type, ordered by the constant name (fd_os_cmp). Sentinel is a (list[1]) element of a TYPE object.
+	 list[1]: list of the contants for a given type, ordered by the constant value. Sentinel is a (list[2]) element of a TYPE object.
+	 list[2]: not used
+
+	 => AVPS:
+	 list[0]: list of the AVP from a given vendor, ordered by avp code. Sentinel is a list[1] element of a VENDOR object.
+	 list[1]: list of the AVP from a given vendor, ordered by avp name (fd_os_cmp). Sentinel is a list[2] element of a VENDOR object.
+	 list[2]: sentinel for the rule list that apply to this AVP.
+
+	 => COMMANDS:
+	 list[0]: list of the commands, ordered by their names (fd_os_cmp). The sentinel is g_list_cmd_name.
+	 list[1]: list of the commands, ordered by their command code and 'R' flag. The sentinel is g_list_cmd_code.
+	 list[2]: sentinel for the rule list that apply to this command.
+
+	 => RULES:
+	 list[0]: list of the rules for a given (grouped) AVP or Command, ordered by the AVP vendor & code to which they refer. sentinel is list[2] of a command or (grouped) avp.
+	 list[1]: not used
+	 list[2]: not used.
+
+	 */
+
+	 /* Sentinel for the dispatch callbacks */
+	 struct fd_list		disp_cbs;
+
+};
+
+/* Definition of the dictionary structure */
+struct dictionary {
+	int		 	dict_eyec;		/* Eye-catcher for the dictionary (DICT_EYECATCHER) */
+
+	pthread_rwlock_t 	dict_lock;		/* The global rwlock for the dictionary */
+
+	struct dict_object	dict_vendors;		/* Sentinel for the list of vendors, corresponding to vendor 0 */
+	struct dict_object	dict_applications;	/* Sentinel for the list of applications, corresponding to app 0 */
+	struct fd_list		dict_types;		/* Sentinel for the list of types */
+	struct fd_list		dict_cmd_name;		/* Sentinel for the list of commands, ordered by names */
+	struct fd_list		dict_cmd_code;		/* Sentinel for the list of commands, ordered by codes */
+
+	struct dict_object	dict_cmd_error;		/* Special command object for answers with the 'E' bit set */
+
+	int			dict_count[DICT_TYPE_MAX + 1]; /* Number of objects of each type */
+};
+
+#endif /* HAD_DICTIONARY_INTERNAL_H */
--- a/libfdproto/dictionary.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdproto/dictionary.c	Tue Jul 07 01:41:54 2020 +0800
@@ -34,6 +34,7 @@
 *********************************************************************************************************/
 
 #include "fdproto-internal.h"
+#include "dictionary-internal.h"
 #include <inttypes.h>
 
 /* Names of the base types */
@@ -48,104 +49,10 @@
 	"FLOAT64"	/* AVP_TYPE_FLOAT64 */
 	};
 
-/* The number of lists in an object */
-#define NB_LISTS_PER_OBJ	3
-
 /* Some eye catchers definitions */
 #define OBJECT_EYECATCHER	(0x0b13c7)
 #define DICT_EYECATCHER		(0x00d1c7)
 
-/* Definition of the dictionary objects */
-struct dict_object {
-	enum dict_object_type	type;	/* What type of object is this? */
-	int			objeyec;/* eyecatcher for this object */
-	int			typeyec;/* eyecatcher for this type of object */
-	struct dictionary	*dico;  /* The dictionary this object belongs to */
-	
-	union {
-		struct dict_vendor_data		vendor;		/* datastr_len = strlen(vendor_name) */
-		struct dict_application_data	application;	/* datastr_len = strlen(application_name) */
-		struct dict_type_data		type;		/* datastr_len = strlen(type_name) */
-		struct dict_enumval_data	enumval;	/* datastr_len = strlen(enum_name) */
-		struct dict_avp_data		avp;		/* datastr_len = strlen(avp_name) */
-		struct dict_cmd_data		cmd;		/* datastr_len = strlen(cmd_name) */
-		struct dict_rule_data		rule;		/* datastr_len = 0 */
-	} data;				/* The data of this object */
-	
-	size_t			datastr_len; /* cached length of the string inside the data. Saved when the object is created. */
-	
-	struct dict_object *	parent; /* The parent of this object, if any */
-	
-	struct fd_list		list[NB_LISTS_PER_OBJ];/* used to chain objects.*/
-	/* More information about the lists :
-	
-	 - the use for each list depends on the type of object. See detail below.
-	 
-	 - a sentinel for a list has its 'o' field cleared. (this is the criteria to detect end of a loop)
-	 
-	 - The lists are always ordered. The criteria are described below. the functions to order them are referenced in dict_obj_info
-	 
-	 - The dict_lock must be held for any list operation.
-	 
-	 => VENDORS:
-	 list[0]: list of the vendors, ordered by their id. The sentinel is g_dict_vendors (vendor with id 0)
-	 list[1]: sentinel for the list of AVPs from this vendor, ordered by AVP code.
-	 list[2]: sentinel for the list of AVPs from this vendor, ordered by AVP name (fd_os_cmp).
-	 
-	 => APPLICATIONS:
-	 list[0]: list of the applications, ordered by their id. The sentinel is g_dict_applications (application with id 0)
-	 list[1]: not used
-	 list[2]: not used.
-	 
-	 => TYPES:
-	 list[0]: list of the types, ordered by their names. The sentinel is g_list_types.
-	 list[1]: sentinel for the type_enum list of this type, ordered by their constant name (fd_os_cmp).
-	 list[2]: sentinel for the type_enum list of this type, ordered by their constant value.
-	 
-	 => TYPE_ENUMS:
-	 list[0]: list of the contants for a given type, ordered by the constant name (fd_os_cmp). Sentinel is a (list[1]) element of a TYPE object.
-	 list[1]: list of the contants for a given type, ordered by the constant value. Sentinel is a (list[2]) element of a TYPE object.
-	 list[2]: not used
-	 
-	 => AVPS:
-	 list[0]: list of the AVP from a given vendor, ordered by avp code. Sentinel is a list[1] element of a VENDOR object.
-	 list[1]: list of the AVP from a given vendor, ordered by avp name (fd_os_cmp). Sentinel is a list[2] element of a VENDOR object.
-	 list[2]: sentinel for the rule list that apply to this AVP.
-	 
-	 => COMMANDS:
-	 list[0]: list of the commands, ordered by their names (fd_os_cmp). The sentinel is g_list_cmd_name.
-	 list[1]: list of the commands, ordered by their command code and 'R' flag. The sentinel is g_list_cmd_code.
-	 list[2]: sentinel for the rule list that apply to this command.
-	 
-	 => RULES:
-	 list[0]: list of the rules for a given (grouped) AVP or Command, ordered by the AVP vendor & code to which they refer. sentinel is list[2] of a command or (grouped) avp.
-	 list[1]: not used
-	 list[2]: not used.
-	 
-	 */
-	 
-	 /* Sentinel for the dispatch callbacks */
-	 struct fd_list		disp_cbs;
-	
-};
-
-/* Definition of the dictionary structure */
-struct dictionary {
-	int		 	dict_eyec;		/* Eye-catcher for the dictionary (DICT_EYECATCHER) */
-	
-	pthread_rwlock_t 	dict_lock;		/* The global rwlock for the dictionary */
-	
-	struct dict_object	dict_vendors;		/* Sentinel for the list of vendors, corresponding to vendor 0 */
-	struct dict_object	dict_applications;	/* Sentinel for the list of applications, corresponding to app 0 */
-	struct fd_list		dict_types;		/* Sentinel for the list of types */
-	struct fd_list		dict_cmd_name;		/* Sentinel for the list of commands, ordered by names */
-	struct fd_list		dict_cmd_code;		/* Sentinel for the list of commands, ordered by codes */
-	
-	struct dict_object	dict_cmd_error;		/* Special command object for answers with the 'E' bit set */
-	
-	int			dict_count[DICT_TYPE_MAX + 1]; /* Number of objects of each type */
-};
-
 /* Forward declarations of dump functions */
 static DECLARE_FD_DUMP_PROTOTYPE(dump_vendor_data, void * data );
 static DECLARE_FD_DUMP_PROTOTYPE(dump_application_data, void * data );
@@ -177,32 +84,32 @@
 	int			haslist[NB_LISTS_PER_OBJ];	/* Tell if this list is used */
 } dict_obj_info[] = { { 0, "(error)", 0, 0, 0, 0, NULL, NULL, {0, 0, 0} }
 
-	/* type			 name		datasize		   	  parent  	parenttype 
+	/* type			 name		datasize		   	  parent  	parenttype
 			eyecatcher		dump_data	  	search_fct,		haslist[] 	*/
 
 	,{ DICT_VENDOR,		"VENDOR",	sizeof(struct dict_vendor_data),	0, 	0,
 			OBJECT_EYECATCHER + 1, 	dump_vendor_data, 	search_vendor, 		{ 1, 0, 0 } }
-	
+
 	,{ DICT_APPLICATION,	"APPLICATION",	sizeof(struct dict_application_data),	1, 	DICT_VENDOR,
 			OBJECT_EYECATCHER + 2,	dump_application_data,	search_application,	{ 1, 0, 0 } }
-	
+
 	,{ DICT_TYPE,		"TYPE",		sizeof(struct dict_type_data),		1, 	DICT_APPLICATION,
 			OBJECT_EYECATCHER + 3,	dump_type_data,		search_type,		{ 1, 0, 0 } }
-	
+
 	,{ DICT_ENUMVAL,	"ENUMVAL",	sizeof(struct dict_enumval_data),	2, 	DICT_TYPE,
 			OBJECT_EYECATCHER + 4,	NULL,			search_enumval,	{ 1, 1, 0 } }
-	
+
 	,{ DICT_AVP,		"AVP",		sizeof(struct dict_avp_data),		1, 	DICT_TYPE,
 			OBJECT_EYECATCHER + 5,	dump_avp_data,		search_avp,		{ 1, 1,	0 } }
-	
+
 	,{ DICT_COMMAND,	"COMMAND",	sizeof(struct dict_cmd_data),		1, 	DICT_APPLICATION,
 			OBJECT_EYECATCHER + 6,	dump_command_data,	search_cmd,		{ 1, 1, 0 } }
-	
+
 	,{ DICT_RULE,		"RULE",		sizeof(struct dict_rule_data),		2, 	-1 /* special case: grouped avp or command */,
 			OBJECT_EYECATCHER + 7,	dump_rule_data,		search_rule,		{ 1, 0, 0 } }
-	
+
 };
-	
+
 /* Macro to verify a "type" value */
 #define CHECK_TYPE( type ) ( ((type) > 0) && ((type) <= DICT_TYPE_MAX) )
 
@@ -230,17 +137,17 @@
 	*(plen) = strlen((str));		\
 	str = os0dup( str, *(plen));		\
 }
-	
+
 /* Initialize an object */
 static void init_object( struct dict_object * obj, enum dict_object_type type )
 {
 	int i;
-	
+
 	TRACE_ENTRY("%p %d", obj, type);
-	
+
 	/* Clean the object first */
 	memset ( obj, 0, sizeof(struct dict_object));
-	
+
 	CHECK_PARAMS_DO(  CHECK_TYPE(type),  return  );
 
 	obj->type = type;
@@ -248,15 +155,15 @@
 	obj->typeyec = _OBINFO(obj).eyecatcher;
 
 	/* We don't initialize the data nor the parent here */
-	
+
 	/* Now init the lists */
 	for (i=0; i<NB_LISTS_PER_OBJ; i++) {
-		if (_OBINFO(obj).haslist[i] != 0) 
+		if (_OBINFO(obj).haslist[i] != 0)
 			fd_list_init(&obj->list[i], obj);
 		else
 			fd_list_init(&obj->list[i], NULL);
 	}
-	
+
 	fd_list_init(&obj->disp_cbs, NULL);
 }
 
@@ -265,31 +172,31 @@
 {
 	TRACE_ENTRY("%p %p %d", dest, source, type);
 	CHECK_PARAMS( dest && source && CHECK_TYPE(type) );
-	
-	/* Generic: copy the full data structure */	
+
+	/* Generic: copy the full data structure */
 	memcpy( &dest->data, source, dict_obj_info[type].datasize );
-	
+
 	/* Then strings must be duplicated, not copied */
 	/* This function might be simplified by always defining the "name" field as the first field of the structures, but... it's error-prone */
 	switch (type) {
 		case DICT_VENDOR:
 			DUP_string_len( dest->data.vendor.vendor_name, &dest->datastr_len );
 			break;
-		
+
 		case DICT_APPLICATION:
 			DUP_string_len( dest->data.application.application_name, &dest->datastr_len );
 			break;
-			
+
 		case DICT_TYPE:
 			DUP_string_len( dest->data.type.type_name, &dest->datastr_len );
 			break;
-			
+
 		case DICT_ENUMVAL:
 			DUP_string_len( dest->data.enumval.enum_name, &dest->datastr_len );
 			if (dupos) {
 				// we also need to duplicate the octetstring constant value since it is a pointer.
-				dest->data.enumval.enum_value.os.data = os0dup( 
-						((struct dict_enumval_data *)source)->enum_value.os.data, 
+				dest->data.enumval.enum_value.os.data = os0dup(
+						((struct dict_enumval_data *)source)->enum_value.os.data,
 						((struct dict_enumval_data *)source)->enum_value.os.len
 					);
 			}
@@ -298,16 +205,16 @@
 		case DICT_AVP:
 			DUP_string_len( dest->data.avp.avp_name, &dest->datastr_len );
 			break;
-			
+
 		case DICT_COMMAND:
 			DUP_string_len( dest->data.cmd.cmd_name, &dest->datastr_len );
 			break;
-		
+
 		default:
 			/* Nothing to do for RULES */
 			;
 	}
-	
+
 	return 0;
 }
 
@@ -315,7 +222,7 @@
 static int verify_object( struct dict_object * obj )
 {
 	TRACE_ENTRY("%p", obj);
-	
+
 	CHECK_PARAMS_DO(  obj
 			&& (obj->objeyec == OBJECT_EYECATCHER)
 			&& CHECK_TYPE(obj->type)
@@ -333,7 +240,7 @@
 			}
 			return 0;
 		}  );
-	
+
 	/* The object is probably valid. */
 	return 1;
 }
@@ -342,20 +249,20 @@
 static void destroy_object_data(struct dict_object * obj)
 {
 	/* TRACE_ENTRY("%p", obj); */
-	
+
 	switch (obj->type) {
 		case DICT_VENDOR:
 			free( obj->data.vendor.vendor_name );
 			break;
-		
+
 		case DICT_APPLICATION:
 			free( obj->data.application.application_name );
 			break;
-			
+
 		case DICT_TYPE:
 			free( obj->data.type.type_name );
 			break;
-			
+
 		case DICT_ENUMVAL:
 			free( obj->data.enumval.enum_name );
 			break;
@@ -363,11 +270,11 @@
 		case DICT_AVP:
 			free( obj->data.avp.avp_name );
 			break;
-			
+
 		case DICT_COMMAND:
 			free( obj->data.cmd.cmd_name );
 			break;
-		
+
 		default:
 			/* nothing to do */
 			;
@@ -378,10 +285,10 @@
 static void destroy_object(struct dict_object * obj);
 
 /* Destroy all objects in a list - the lock must be held */
-static void destroy_list(struct fd_list * head) 
+static void destroy_list(struct fd_list * head)
 {
 	/* TRACE_ENTRY("%p", head); */
-	
+
 	/* loop in the list */
 	while (!FD_IS_LIST_EMPTY(head))
 	{
@@ -389,24 +296,24 @@
 		destroy_object(_O(head->next->o));
 	}
 }
-	
+
 /* Free an object and its sublists */
 static void destroy_object(struct dict_object * obj)
 {
 	int i;
-	
+
 	/* TRACE_ENTRY("%p", obj); */
-	
+
 	/* Update global count */
-	if (obj->dico) 
+	if (obj->dico)
 		obj->dico->dict_count[obj->type]--;
-	
+
 	/* Mark the object as invalid */
 	obj->objeyec = 0xdead;
-	
+
 	/* First, destroy the data associated to the object */
 	destroy_object_data(obj);
-	
+
 	for (i=0; i<NB_LISTS_PER_OBJ; i++) {
 		if (_OBINFO(obj).haslist[i])
 			/* unlink the element from the list */
@@ -415,14 +322,14 @@
 			/* This is either a sentinel or unused (=emtpy) list, let's destroy it */
 			destroy_list( &obj->list[i] );
 	}
-	
+
 	/* Unlink all elements from the dispatch list; they will be freed when callback is unregistered */
 	CHECK_POSIX_DO( pthread_rwlock_wrlock(&fd_disp_lock), /* continue */ );
 	while (!FD_IS_LIST_EMPTY(&obj->disp_cbs)) {
 		fd_list_unlink( obj->disp_cbs.next );
 	}
 	CHECK_POSIX_DO( pthread_rwlock_unlock(&fd_disp_lock), /* continue */ );
-	
+
 	/* Last, destroy the object */
 	free(obj);
 }
@@ -437,14 +344,14 @@
 
 /* Compare two values */
 #define ORDER_scalar( i1, i2 ) \
-	((i1 < i2 ) ? -1 : ( i1 > i2 ? 1 : 0 )) 
+	((i1 < i2 ) ? -1 : ( i1 > i2 ? 1 : 0 ))
 
 
 /* Compare two vendor objects by their id (checks already performed) */
 static int order_vendor_by_id ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return ORDER_scalar( o1->data.vendor.vendor_id, o2->data.vendor.vendor_id );
 }
 
@@ -452,7 +359,7 @@
 static int order_appli_by_id  ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return ORDER_scalar( o1->data.application.application_id, o2->data.application.application_id );
 }
 
@@ -460,7 +367,7 @@
 static int order_type_by_name ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return fd_os_cmp( o1->data.type.type_name, o1->datastr_len, o2->data.type.type_name, o2->datastr_len );
 }
 
@@ -468,7 +375,7 @@
 static int order_enum_by_name ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return fd_os_cmp( o1->data.enumval.enum_name, o1->datastr_len, o2->data.enumval.enum_name, o2->datastr_len );
 }
 
@@ -476,13 +383,13 @@
 static int order_enum_by_val  ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	/* The comparison function depends on the type of data */
 	switch ( o1->parent->data.type.type_base ) {
 		case AVP_TYPE_OCTETSTRING:
-			return fd_os_cmp( o1->data.enumval.enum_value.os.data, o1->data.enumval.enum_value.os.len, 
+			return fd_os_cmp( o1->data.enumval.enum_value.os.data, o1->data.enumval.enum_value.os.len,
 					  o2->data.enumval.enum_value.os.data, o2->data.enumval.enum_value.os.len);
-		
+
 		case AVP_TYPE_INTEGER32:
 			return ORDER_scalar( o1->data.enumval.enum_value.i32, o2->data.enumval.enum_value.i32 );
 
@@ -512,7 +419,7 @@
 static int order_avp_by_code  ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return ORDER_scalar( o1->data.avp.avp_code, o2->data.avp.avp_code );
 }
 
@@ -520,7 +427,7 @@
 static int order_avp_by_name  ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return fd_os_cmp( o1->data.avp.avp_name, o1->datastr_len, o2->data.avp.avp_name, o2->datastr_len );
 }
 
@@ -528,7 +435,7 @@
 static int order_cmd_by_name  ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	return fd_os_cmp( o1->data.cmd.cmd_name, o1->datastr_len, o2->data.cmd.cmd_name, o2->datastr_len );
 }
 
@@ -537,28 +444,28 @@
 {
 	uint8_t fl1, fl2;
 	int cmp = 0;
-	
+
 	TRACE_ENTRY("%p %p", o1, o2);
-	
+
 	cmp = ORDER_scalar( o1->data.cmd.cmd_code, o2->data.cmd.cmd_code );
-	if (cmp) 
+	if (cmp)
 		return cmp;
-	
+
 	/* Same command code, we must compare the value of the 'R' flag */
 	fl1 = o1->data.cmd.cmd_flag_val & CMD_FLAG_REQUEST;
 	fl2 = o2->data.cmd.cmd_flag_val & CMD_FLAG_REQUEST;
-	
+
 	/* We want requests first, so we reverse the operators here */
 	return ORDER_scalar(fl2, fl1);
-		
+
 }
 
 /* Compare two rule object by the AVP vendor & code that they refer (checks already performed) */
 static int order_rule_by_avpvc ( struct dict_object *o1, struct dict_object *o2 )
 {
 	TRACE_ENTRY("%p %p", o1, o2);
-	
-	return ORDER_scalar(o1->data.rule.rule_avp->data.avp.avp_vendor, o2->data.rule.rule_avp->data.avp.avp_vendor) 
+
+	return ORDER_scalar(o1->data.rule.rule_avp->data.avp.avp_vendor, o2->data.rule.rule_avp->data.avp.avp_vendor)
 		?: ORDER_scalar(o1->data.rule.rule_avp->data.avp.avp_code, o2->data.rule.rule_avp->data.avp.avp_code) ;
 }
 
@@ -744,30 +651,30 @@
 {
 	int ret = 0;
 	vendor_id_t id;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case VENDOR_BY_ID:
 			id = *(vendor_id_t *) what;
 			SEARCH_scalar( id, &dict->dict_vendors.list[0], vendor.vendor_id, 1, &dict->dict_vendors );
 			break;
-				
+
 		case VENDOR_BY_NAME:
 			/* "what" is a vendor name */
 			SEARCH_os0( what, &dict->dict_vendors.list[0], vendor.vendor_name, 0);
 			break;
-			
+
 		case VENDOR_OF_APPLICATION:
 			/* "what" should be an application object */
 			SEARCH_childs_parent( DICT_APPLICATION, &dict->dict_vendors );
 			break;
-		
+
 		case VENDOR_OF_AVP:
 			/* "what" should be an avp object */
 			SEARCH_sentinel( DICT_AVP, 0, 1 );
 			break;
-		
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -780,31 +687,31 @@
 {
 	int ret = 0;
 	application_id_t id;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case APPLICATION_BY_ID:
 			id = *(application_id_t *) what;
 
 			SEARCH_scalar( id, &dict->dict_applications.list[0],  application.application_id, 1, &dict->dict_applications );
 			break;
-				
+
 		case APPLICATION_BY_NAME:
 			/* "what" is an application name */
 			SEARCH_os0( what, &dict->dict_applications.list[0], application.application_name, 0);
 			break;
-			
+
 		case APPLICATION_OF_TYPE:
 			/* "what" should be a type object */
 			SEARCH_childs_parent( DICT_TYPE, &dict->dict_applications );
 			break;
-		
+
 		case APPLICATION_OF_COMMAND:
 			/* "what" should be a command object */
 			SEARCH_childs_parent( DICT_COMMAND, &dict->dict_applications );
 			break;
-		
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -816,26 +723,26 @@
 static int search_type ( struct dictionary * dict, int criteria, const void * what, struct dict_object **result )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case TYPE_BY_NAME:
 			/* "what" is a type name */
 			SEARCH_os0( what, &dict->dict_types, type.type_name, 1);
 			break;
-			
+
 		case TYPE_OF_ENUMVAL:
 			/* "what" should be a type_enum object */
 			SEARCH_childs_parent( DICT_ENUMVAL, NULL );
 			break;
-		
+
 		case TYPE_OF_AVP:
 			/* "what" should be an avp object */
 			SEARCH_childs_parent( DICT_AVP, NULL );
 			break;
-		
-				
+
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -847,17 +754,17 @@
 static int search_enumval ( struct dictionary * dict, int criteria, const void * what, struct dict_object **result )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case ENUMVAL_BY_STRUCT:
 			{
 				struct dict_object * parent = NULL;
 				struct dict_enumval_request * _what = (struct dict_enumval_request *) what;
-				
+
 				CHECK_PARAMS(  _what  &&  ( _what->type_obj || _what->type_name )  );
-				
+
 				if (_what->type_obj != NULL) {
 					parent = _what->type_obj;
 					CHECK_PARAMS(  verify_object(parent)  &&  (parent->type == DICT_TYPE)  );
@@ -866,9 +773,9 @@
 					CHECK_FCT_DO( search_type( dict, TYPE_BY_NAME, _what->type_name, &parent ),
 							CHECK_PARAMS( 0 ) );
 				}
-				
+
 				/* From here the "parent" object is valid */
-				
+
 				if ( _what->search.enum_name != NULL ) {
 					/* We are looking for this string */
 					SEARCH_os0(  _what->search.enum_name, &parent->list[1], enumval.enum_name, 1 );
@@ -876,10 +783,10 @@
 					/* We are looking for the value in enum_value */
 					switch (parent->data.type.type_base) {
 						case AVP_TYPE_OCTETSTRING:
-							SEARCH_os(	 _what->search.enum_value.os.data, 
-									 _what->search.enum_value.os.len, 
-									 &parent->list[2], 
-									 enumval.enum_value.os , 
+							SEARCH_os(	 _what->search.enum_value.os.data,
+									 _what->search.enum_value.os.len,
+									 &parent->list[2],
+									 enumval.enum_value.os ,
 									 1 );
 							break;
 
@@ -890,7 +797,7 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						case AVP_TYPE_INTEGER64:
 							SEARCH_scalar(	_what->search.enum_value.i64,
 									&parent->list[2],
@@ -898,7 +805,7 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						case AVP_TYPE_UNSIGNED32:
 							SEARCH_scalar(	_what->search.enum_value.u32,
 									&parent->list[2],
@@ -906,7 +813,7 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						case AVP_TYPE_UNSIGNED64:
 							SEARCH_scalar(	_what->search.enum_value.u64,
 									&parent->list[2],
@@ -914,7 +821,7 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						case AVP_TYPE_FLOAT32:
 							SEARCH_scalar(	_what->search.enum_value.f32,
 									&parent->list[2],
@@ -922,7 +829,7 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						case AVP_TYPE_FLOAT64:
 							SEARCH_scalar(	_what->search.enum_value.f64,
 									&parent->list[2],
@@ -930,17 +837,17 @@
 									1,
 									(struct dict_object *)NULL);
 							break;
-							
+
 						default:
 							/* Invalid parent type basetype */
 							CHECK_PARAMS( parent = NULL );
 					}
 				}
-				
+
 			}
 			break;
-		
-				
+
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -952,9 +859,9 @@
 static int search_avp ( struct dictionary * dict, int criteria, const void * what, struct dict_object **result )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case AVP_BY_CODE:
 			{
@@ -964,20 +871,20 @@
 				SEARCH_scalar( code, &dict->dict_vendors.list[1],  avp.avp_code, 1, (struct dict_object *)NULL );
 			}
 			break;
-				
+
 		case AVP_BY_NAME:
 			/* "what" is the AVP name, vendor 0 */
 			SEARCH_os0( what, &dict->dict_vendors.list[2], avp.avp_name, 1);
 			break;
-			
+
 		case AVP_BY_CODE_AND_VENDOR:
 		case AVP_BY_NAME_AND_VENDOR:
 			{
 				struct dict_avp_request * _what = (struct dict_avp_request *) what;
 				struct dict_object * vendor = NULL;
-				
+
 				CHECK_PARAMS( (criteria != AVP_BY_NAME_AND_VENDOR) || _what->avp_name  );
-				
+
 				/* Now look for the vendor first */
 				CHECK_FCT( search_vendor( dict, VENDOR_BY_ID, &_what->avp_vendor, &vendor ) );
 				if (vendor == NULL) {
@@ -987,7 +894,7 @@
 						ret = ENOENT;
 					goto end;
 				}
-				
+
 				/* We now have our vendor = head of the appropriate avp list */
 				if (criteria == AVP_BY_NAME_AND_VENDOR) {
 					SEARCH_os0( _what->avp_name, &vendor->list[2], avp.avp_name, 1);
@@ -997,15 +904,15 @@
 				}
 			}
 			break;
-		
+
 		case AVP_BY_STRUCT:
 			{
 				struct dict_avp_request_ex * _what = (struct dict_avp_request_ex *) what;
 				struct dict_object * vendor = NULL;
-				
+
 				CHECK_PARAMS( _what->avp_vendor.vendor || _what->avp_vendor.vendor_id || _what->avp_vendor.vendor_name );
 				CHECK_PARAMS( _what->avp_data.avp_code || _what->avp_data.avp_name );
-				
+
 				/* Now look for the vendor first */
 				if (_what->avp_vendor.vendor) {
 					CHECK_PARAMS( ! _what->avp_vendor.vendor_id && ! _what->avp_vendor.vendor_name );
@@ -1016,7 +923,7 @@
 				} else {
 					CHECK_FCT( search_vendor( dict, VENDOR_BY_NAME, _what->avp_vendor.vendor_name, &vendor ) );
 				}
-				
+
 				if (vendor == NULL) {
 					if (result)
 						*result = NULL;
@@ -1024,7 +931,7 @@
 						ret = ENOENT;
 					goto end;
 				}
-				
+
 				/* We now have our vendor = head of the appropriate avp list */
 				if (_what->avp_data.avp_code) {
 					CHECK_PARAMS( ! _what->avp_data.avp_name );
@@ -1034,22 +941,22 @@
 				}
 			}
 			break;
-		
+
 		case AVP_BY_NAME_ALL_VENDORS:
 			{
 				struct fd_list * li;
 				size_t wl = strlen((char *)what);
-				
+
 				/* First, search for vendor 0 */
 				SEARCH_os0_l( what, wl, &dict->dict_vendors.list[2], avp.avp_name, 1);
-				
+
 				/* If not found, loop for all vendors, until found */
 				for (li = dict->dict_vendors.list[0].next; li != &dict->dict_vendors.list[0]; li = li->next) {
 					SEARCH_os0_l( what, wl, &_O(li->o)->list[2], avp.avp_name, 1);
 				}
 			}
 			break;
-		
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -1061,45 +968,45 @@
 static int search_cmd ( struct dictionary * dict, int criteria, const void * what, struct dict_object **result )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case CMD_BY_NAME:
 			/* "what" is a command name */
 			SEARCH_os0( what, &dict->dict_cmd_name, cmd.cmd_name, 1);
 			break;
-			
+
 		case CMD_BY_CODE_R:
 		case CMD_BY_CODE_A:
 			{
 				command_code_t code;
 				uint8_t searchfl = 0;
-				
+
 				/* The command code that we are searching */
 				code = *(command_code_t *) what;
-				
+
 				/* The flag (request or answer) of the command we are searching */
 				if (criteria == CMD_BY_CODE_R) {
 					searchfl = CMD_FLAG_REQUEST;
 				}
-				
+
 				/* perform the search */
 				SEARCH_codefl( code, searchfl, &dict->dict_cmd_code );
 			}
 			break;
-				
+
 		case CMD_ANSWER:
 			{
 				/* "what" is a command object of type "request" */
 				struct dict_object * req = (struct dict_object *) what;
 				struct dict_object * ans = NULL;
-				
-				CHECK_PARAMS( verify_object(req) 
+
+				CHECK_PARAMS( verify_object(req)
 						&& (req->type == DICT_COMMAND)
 						&& (req->data.cmd.cmd_flag_mask & CMD_FLAG_REQUEST)
 						&& (req->data.cmd.cmd_flag_val  & CMD_FLAG_REQUEST) );
-				
+
 				/* The answer is supposed to be the next element in the list, if it exists */
 				ans = req->list[1].next->o;
 				if ( ans == NULL ) {
@@ -1107,7 +1014,7 @@
 					ret = ENOENT;
 					goto end;
 				}
-				
+
 				/* Now check that the ans element is really the correct one */
 				if (  (ans->data.cmd.cmd_code != req->data.cmd.cmd_code)
 				   || (!(ans->data.cmd.cmd_flag_mask & CMD_FLAG_REQUEST))
@@ -1116,13 +1023,13 @@
 					ret = ENOENT;
 					goto end;
 				}
-				
+
 				if (result)
 					*result = ans;
 				ret = 0;
-			}						
+			}
 			break;
-			
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -1134,32 +1041,32 @@
 static int search_rule ( struct dictionary * dict, int criteria, const void * what, struct dict_object **result )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d %p %p", dict, criteria, what, result);
-	
+
 	switch (criteria) {
 		case RULE_BY_AVP_AND_PARENT:
 			{
 				struct dict_object * parent = NULL;
 				struct dict_object * avp = NULL;
 				struct dict_rule_request * _what = (struct dict_rule_request *) what;
-				
-				CHECK_PARAMS( _what 
+
+				CHECK_PARAMS( _what
 						&& (parent = _what->rule_parent)
 						&& (avp    = _what->rule_avp   ) );
-				
-				CHECK_PARAMS( verify_object(parent) 
-						&& ((parent->type == DICT_COMMAND) 
+
+				CHECK_PARAMS( verify_object(parent)
+						&& ((parent->type == DICT_COMMAND)
 						 || ((parent->type == DICT_AVP) && (parent->data.avp.avp_basetype == AVP_TYPE_GROUPED))) );
-				
+
 				CHECK_PARAMS( verify_object(avp) && (avp->type == DICT_AVP) );
-				
+
 				/* Perform the search */
 				SEARCH_ruleavpname( avp->data.avp.avp_name, avp->datastr_len, &parent->list[2]);
-				
+
 			}
 			break;
-			
+
 		default:
 			/* Invalid criteria */
 			CHECK_PARAMS( criteria = 0 );
@@ -1179,7 +1086,7 @@
 static DECLARE_FD_DUMP_PROTOTYPE(dump_vendor_data, void * data )
 {
 	struct dict_vendor_data * vendor = (struct dict_vendor_data *)data;
-	
+
 	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: %-6u \"%s\"", vendor->vendor_id, vendor->vendor_name);
 }
 static DECLARE_FD_DUMP_PROTOTYPE(dump_application_data, void * data )
@@ -1190,9 +1097,9 @@
 static DECLARE_FD_DUMP_PROTOTYPE(dump_type_data, void * data )
 {
 	struct dict_type_data * type = ( struct dict_type_data * ) data;
-	
-	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: %-12s \"%s\"", 
-			type_base_name[type->type_base], 
+
+	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: %-12s \"%s\"",
+			type_base_name[type->type_base],
 			type->type_name);
 }
 static DECLARE_FD_DUMP_PROTOTYPE(dump_enumval_data, struct dict_enumval_data * enumval, enum dict_avp_basetype type )
@@ -1211,7 +1118,7 @@
 					CHECK_MALLOC_DO(fd_dump_extend( FD_DUMP_STD_PARAMS, "..."), return NULL);
 			}
 			break;
-		
+
 		case AVP_TYPE_INTEGER32:
 			CHECK_MALLOC_DO(fd_dump_extend( FD_DUMP_STD_PARAMS, "%i", enumval->enum_value.i32), return NULL);
 			break;
@@ -1235,7 +1142,7 @@
 		case AVP_TYPE_FLOAT64:
 			CHECK_MALLOC_DO(fd_dump_extend( FD_DUMP_STD_PARAMS, "%g", enumval->enum_value.f64), return NULL);
 			break;
-		
+
 		default:
 			CHECK_MALLOC_DO(fd_dump_extend( FD_DUMP_STD_PARAMS, "??? (ERROR unknown type %d)", type), return NULL);
 	}
@@ -1244,26 +1151,26 @@
 static DECLARE_FD_DUMP_PROTOTYPE(dump_avp_data, void * data )
 {
 	struct dict_avp_data * avp = (struct dict_avp_data * ) data;
-	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %-6u \"%s\"", 
-			DUMP_AVPFL_val(avp->avp_flag_val), 
-			DUMP_AVPFL_val(avp->avp_flag_mask), 
-			type_base_name[avp->avp_basetype], 
-			avp->avp_code, 
+	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %-6u \"%s\"",
+			DUMP_AVPFL_val(avp->avp_flag_val),
+			DUMP_AVPFL_val(avp->avp_flag_mask),
+			type_base_name[avp->avp_basetype],
+			avp->avp_code,
 			avp->avp_name );
 }
 static DECLARE_FD_DUMP_PROTOTYPE(dump_command_data, void * data )
 {
 	struct dict_cmd_data * cmd = (struct dict_cmd_data *) data;
-	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %-6u \"%s\"", 
+	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %-6u \"%s\"",
 			DUMP_CMDFL_val(cmd->cmd_flag_val), DUMP_CMDFL_val(cmd->cmd_flag_mask), cmd->cmd_code, cmd->cmd_name);
 }
 static DECLARE_FD_DUMP_PROTOTYPE(dump_rule_data, void * data )
 {
 	struct dict_rule_data * rule = (struct dict_rule_data * )data;
 	return fd_dump_extend( FD_DUMP_STD_PARAMS, "data: pos:%d ord:%d m/M:%2d/%2d avp:\"%s\"",
-			rule->rule_position, 
-			rule->rule_order, 
-			rule->rule_min, 
+			rule->rule_position,
+			rule->rule_order,
+			rule->rule_min,
 			rule->rule_max,
 			rule->rule_avp->data.avp.avp_name);
 }
@@ -1290,27 +1197,27 @@
 static DECLARE_FD_DUMP_PROTOTYPE(dump_object, struct dict_object * obj, int parents, int depth, int indent )
 {
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%*s{dictobj}(@%p): ", indent, "", obj), return NULL);
-	
+
 	if (!verify_object(obj)) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "INVALID/NULL"), return NULL);
 		return *buf;
 	}
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s p:%p ", 
-								_OBINFO(obj).name, 
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s p:%p ",
+								_OBINFO(obj).name,
 								obj->parent), return NULL);
-	
+
 	if (obj->type == DICT_ENUMVAL) {
 		CHECK_MALLOC_DO( dump_enumval_data ( FD_DUMP_STD_PARAMS, &obj->data.enumval, obj->parent->data.type.type_base ), return NULL);
 	} else {
 		CHECK_MALLOC_DO( _OBINFO(obj).dump_data(FD_DUMP_STD_PARAMS, &obj->data), return NULL);
 	}
-	
+
 	if (parents) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n%*sparent:", indent + 1, ""), return NULL);
 		CHECK_MALLOC_DO( dump_object (FD_DUMP_STD_PARAMS, obj->parent, parents-1, 0, 0 ), return NULL);
 	}
-	
+
 	if (depth) {
 		int i;
 		for (i=0; i<NB_LISTS_PER_OBJ; i++) {
@@ -1320,16 +1227,16 @@
 			}
 		}
 	}
-	
+
 	return *buf;
 }
 
 DECLARE_FD_DUMP_PROTOTYPE(fd_dict_dump_object, struct dict_object * obj)
 {
 	FD_DUMP_HANDLE_OFFSET();
-	
+
 	CHECK_MALLOC_DO( dump_object(FD_DUMP_STD_PARAMS, obj, 1, 2, 0), return NULL);
-	
+
 	return *buf;
 }
 
@@ -1337,44 +1244,44 @@
 {
 	int i;
 	struct fd_list * li;
-	
+
 	FD_DUMP_HANDLE_OFFSET();
-		
+
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "{dictionary}(@%p): ", dict), return NULL);
-	
+
 	if ((dict == NULL) || (dict->dict_eyec != DICT_EYECATCHER)) {
 		return fd_dump_extend(FD_DUMP_STD_PARAMS, "INVALID/NULL");
 	}
-	
+
 	CHECK_POSIX_DO(  pthread_rwlock_rdlock( &dict->dict_lock ), /* ignore */  );
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict(%p) : VENDORS / AVP / RULES}\n", dict), goto error);
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict}(@%p): VENDORS / AVP / RULES\n", dict), goto error);
 	CHECK_MALLOC_DO( dump_object (FD_DUMP_STD_PARAMS, &dict->dict_vendors, 0, 3, 3 ), goto error);
 	for (li = dict->dict_vendors.list[0].next; li != &dict->dict_vendors.list[0]; li = li->next) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n"), return NULL);
 		CHECK_MALLOC_DO( dump_object (FD_DUMP_STD_PARAMS, li->o, 0, 3, 3 ), goto error);
 	}
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict(%p) : APPLICATIONS}\n", dict), goto error);
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict}(@%p): APPLICATIONS\n", dict), goto error);
 	CHECK_MALLOC_DO( dump_object (FD_DUMP_STD_PARAMS, &dict->dict_applications, 0, 1, 3 ), goto error);
 	for (li = dict->dict_applications.list[0].next; li != &dict->dict_applications.list[0]; li = li->next) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n"), return NULL);
 		CHECK_MALLOC_DO( dump_object (FD_DUMP_STD_PARAMS, li->o, 0, 1, 3 ), goto error);
 	}
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict(%p) : TYPES / ENUMVAL}", dict), goto error);
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict}(@%p): TYPES / ENUMVAL", dict), goto error);
 	CHECK_MALLOC_DO( dump_list(FD_DUMP_STD_PARAMS, &dict->dict_types, 0, 2, 3 ), goto error);
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict(%p) : COMMANDS / RULES}", dict), goto error);
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict}(@%p): COMMANDS / RULES", dict), goto error);
 	CHECK_MALLOC_DO( dump_list(FD_DUMP_STD_PARAMS, &dict->dict_cmd_code, 0, 0, 3 ), goto error);
-	
-	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict(%p) : statistics}", dict), goto error);
+
+	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n {dict}(@%p): statistics", dict), goto error);
 	for (i=1; i<=DICT_TYPE_MAX; i++)
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "\n   %5d: %s",  dict->dict_count[i], dict_obj_info[i].name), goto error);
-	
+
 	CHECK_POSIX_DO(  pthread_rwlock_unlock( &dict->dict_lock ), /* ignore */  );
 	return *buf;
-error:	
+error:
 	/* Free the rwlock */
 	CHECK_POSIX_DO(  pthread_rwlock_unlock( &dict->dict_lock ), /* ignore */  );
 	return NULL;
@@ -1386,7 +1293,7 @@
 static DECLARE_FD_DUMP_PROTOTYPE(dump_val_os, union avp_value * value)
 {
 	int i;
-	
+
 	CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "<"), return NULL);
 	for (i = 0; i < value->os.len; i++) {
 		if (i == 1024) { /* Dump only up to 1024 bytes of the buffer */
@@ -1435,7 +1342,7 @@
 	switch (datatype) {
 		case AVP_TYPE_OCTETSTRING:
 			return &dump_val_os;
-		
+
 		case AVP_TYPE_INTEGER32:
 			return &dump_val_i32;
 
@@ -1453,7 +1360,7 @@
 
 		case AVP_TYPE_FLOAT64:
 			return &dump_val_f64;
-		
+
 		case AVP_TYPE_GROUPED:
 			TRACE_DEBUG(FULL, "error: grouped AVP with a value!");
 	}
@@ -1467,24 +1374,24 @@
 typedef DECLARE_FD_DUMP_PROTOTYPE((*dump_val_cb_t), union avp_value *);
 
 /* Formatter for the AVP value dump line */
-static DECLARE_FD_DUMP_PROTOTYPE(dump_avp_val, union avp_value *avp_value, 
-			dump_val_cb_t def_dump_val_cb, 
-			dump_val_cb_t dump_val_cb, 
-			enum dict_avp_basetype datatype, 
-			char * type_name, 
-			char * const_name, 
-			int indent, 
+static DECLARE_FD_DUMP_PROTOTYPE(dump_avp_val, union avp_value *avp_value,
+			dump_val_cb_t def_dump_val_cb,
+			dump_val_cb_t dump_val_cb,
+			enum dict_avp_basetype datatype,
+			char * type_name,
+			char * const_name,
+			int indent,
 		        int header)
 {
 	if (header) {
 		/* Header for all AVP values dumps: */
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, INOBJHDR "value ", INOBJHDRVAL), return NULL);
-	
+
 		/* If the type is provided, write it */
 		if (type_name) {
 			CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "t: '%s' ", type_name), return NULL);
 		}
-	
+
 		/* Always give the base datatype anyway */
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(%s) ", type_base_name[datatype]), return NULL);
 
@@ -1502,7 +1409,7 @@
 	if (const_name) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, ")"), return NULL);
 	}
-	
+
 	/* Done! */
 	return *buf;
 }
@@ -1514,9 +1421,9 @@
 	struct dict_object * type = NULL;
 	char * type_name = NULL;
 	char * const_name = NULL;
-	
+
 	FD_DUMP_HANDLE_OFFSET();
-	
+
 	/* Handle invalid parameters */
 	if (!avp_value) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(avp value not set)"), return NULL);
@@ -1527,24 +1434,24 @@
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(model not set)"), return NULL);
 		return *buf;
 	}
-	
+
 	if (! (	verify_object(model) && (model->type == DICT_AVP) )) {
 		CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(invalid model)"), return NULL);
 		return *buf;
 	}
-	
+
 	/* Get the type definition of this AVP */
 	type = model->parent;
 	if (type) {
 		struct dict_enumval_request  request;
 		struct dict_object * enumval = NULL;
-		
+
 		type_name = type->data.type.type_name;
-		
+
 		/* overwrite the dump function ? */
 		if (type->data.type.type_dump)
 			dump_val_cb = type->data.type.type_dump;
-		
+
 		/* Now check if the AVP value matches a constant */
 		memset(&request, 0, sizeof(request));
 		request.type_obj = type;
@@ -1555,7 +1462,7 @@
 			const_name = enumval->data.enumval.enum_name;
 		}
 	}
-	
+
 	/* And finally, dump the value */
 	CHECK_MALLOC_DO( dump_avp_val(FD_DUMP_STD_PARAMS, avp_value, get_default_dump_val_cb(model->data.avp.avp_basetype), dump_val_cb, model->data.avp.avp_basetype, type_name, const_name, indent, header), return NULL );
 	return *buf;
@@ -1575,9 +1482,9 @@
 int fd_dict_gettype ( struct dict_object * object, enum dict_object_type * type)
 {
 	TRACE_ENTRY("%p %p", object, type);
-	
+
 	CHECK_PARAMS( type && verify_object(object) );
-	
+
 	/* Copy the value and return */
 	*type = object->type;
 	return 0;
@@ -1586,9 +1493,9 @@
 int fd_dict_getdict ( struct dict_object * object, struct dictionary ** dict)
 {
 	TRACE_ENTRY("%p %p", object, dict);
-	
+
 	CHECK_PARAMS( dict && verify_object(object) );
-	
+
 	/* Copy the value and return */
 	*dict = object->dico;
 	return 0;
@@ -1599,9 +1506,9 @@
 int fd_dict_getval ( struct dict_object * object, void * val)
 {
 	TRACE_ENTRY("%p %p", object, val);
-	
+
 	CHECK_PARAMS( val && verify_object(object) );
-	
+
 	/* Copy the value and return */
 	memcpy(val, &object->data, _OBINFO(object).datasize);;
 	return 0;
@@ -1615,49 +1522,49 @@
 	struct dict_object * new = NULL;
 	struct dict_object * vendor = NULL;
 	struct dict_object * locref = NULL;
-	
+
 	TRACE_ENTRY("%p %d(%s) %p %p %p", dict, type, dict_obj_info[CHECK_TYPE(type) ? type : 0].name, data, parent, ref);
-	
+
 	/* Check parameters */
 	CHECK_PARAMS( dict && (dict->dict_eyec == DICT_EYECATCHER) && CHECK_TYPE(type) && data  );
-	
+
 	/* Check the "parent" parameter */
 	switch (dict_obj_info[type].parent) {
 		case 0:	/* parent is forbidden */
 			CHECK_PARAMS_DO( parent == NULL, goto error_param );
-		
+
 		case 1:	/* parent is optional */
 			if (parent == NULL)
 				break;
-		
+
 		case 2: /* parent is mandatory */
 			CHECK_PARAMS_DO(  verify_object(parent), goto error_param  );
-			
+
 			if (type == DICT_RULE ) { /* Special case : grouped AVP or Command parents are allowed */
-				CHECK_PARAMS_DO( (parent->type == DICT_COMMAND ) 
+				CHECK_PARAMS_DO( (parent->type == DICT_COMMAND )
 						|| ( (parent->type == DICT_AVP) && (parent->data.avp.avp_basetype == AVP_TYPE_GROUPED ) ), goto error_param );
 			} else {
 				CHECK_PARAMS_DO( parent->type == dict_obj_info[type].parenttype, goto error_param );
 			}
 	}
-	
+
 	/* For AVP object, we must also check that the "vendor" referenced exists */
 	if (type == DICT_AVP) {
 		CHECK_FCT_DO(  fd_dict_search( dict, DICT_VENDOR, VENDOR_BY_ID, &(((struct dict_avp_data *)data)->avp_vendor), (void*)&vendor, ENOENT ),
 			{ TRACE_DEBUG(INFO, "Unable to find vendor '%d' referenced in the AVP data", ((struct dict_avp_data *)data)->avp_vendor); goto error_param; }  );
-		
+
 		/* Also check if a parent is provided, that the type are the same */
 		if (parent) {
 			CHECK_PARAMS_DO(  parent->data.type.type_base == ((struct dict_avp_data *)data)->avp_basetype, goto error_param  );
 		}
 	}
-	
+
 	/* For RULE object, we must also check that the "avp" referenced exists */
 	if (type == DICT_RULE) {
 		CHECK_PARAMS_DO(  verify_object(((struct dict_rule_data *)data)->rule_avp), goto error_param  );
 		CHECK_PARAMS_DO(  ((struct dict_rule_data *)data)->rule_avp->type == DICT_AVP, goto error_param  );
 	}
-	
+
 	/* For COMMAND object, check that the 'R' flag is fixed */
 	if (type == DICT_COMMAND) {
 		CHECK_PARAMS_DO( ((struct dict_cmd_data *)data)->cmd_flag_mask & CMD_FLAG_REQUEST, goto error_param   );
@@ -1668,7 +1575,7 @@
 		if (parent->data.type.type_base == AVP_TYPE_OCTETSTRING)
 			dupos = 1;
 	}
-	
+
 	/* We have to check that the new values are not equal to the sentinels */
 	if (type == DICT_VENDOR) {
 		CHECK_PARAMS_DO( ((struct dict_vendor_data *)data)->vendor_id != 0, goto error_param   );
@@ -1676,19 +1583,19 @@
 	if (type == DICT_APPLICATION) {
 		CHECK_PARAMS_DO( ((struct dict_application_data *)data)->application_id != 0, goto error_param   );
 	}
-	
+
 	/* Parameters are valid, create the new object */
 	CHECK_MALLOC(  new = malloc(sizeof(struct dict_object))  );
-	
+
 	/* Initialize the data of the new object */
 	init_object(new, type);
 	init_object_data(new, data, type, dupos);
 	new->dico = dict;
 	new->parent = parent;
-	
+
 	/* We will change the dictionary => acquire the write lock */
 	CHECK_POSIX_DO(  ret = pthread_rwlock_wrlock(&dict->dict_lock),  goto error_free  );
-	
+
 	/* Now link the object -- this also checks that no object with same keys already exists */
 	switch (type) {
 		case DICT_VENDOR:
@@ -1697,83 +1604,83 @@
 			if (ret)
 				goto error_unlock;
 			break;
-		
+
 		case DICT_APPLICATION:
 			/* An application object is linked in the g_dict_applciations.list[0], by their id */
 			ret = fd_list_insert_ordered ( &dict->dict_applications.list[0], &new->list[0], (int (*)(void*, void *))order_appli_by_id, (void **)&locref );
 			if (ret)
 				goto error_unlock;
 			break;
-		
+
 		case DICT_TYPE:
 			/* A type object is linked in g_list_types by its name */
 			ret = fd_list_insert_ordered ( &dict->dict_types, &new->list[0], (int (*)(void*, void *))order_type_by_name, (void **)&locref );
 			if (ret)
 				goto error_unlock;
 			break;
-		
+
 		case DICT_ENUMVAL:
 			/* A type_enum object is linked in it's parent 'type' object lists 1 and 2 by its name and values */
 			ret = fd_list_insert_ordered ( &parent->list[1], &new->list[0], (int (*)(void*, void *))order_enum_by_name, (void **)&locref );
 			if (ret)
 				goto error_unlock;
-			
+
 			ret = fd_list_insert_ordered ( &parent->list[2], &new->list[1], (int (*)(void*, void *))order_enum_by_val, (void **)&locref );
-			if (ret) { 
-				fd_list_unlink(&new->list[0]); 
-				goto error_unlock; 
+			if (ret) {
+				fd_list_unlink(&new->list[0]);
+				goto error_unlock;
 			}
 			break;
-		
+
 		case DICT_AVP:
 			/* An avp object is linked in lists 1 and 2 of its vendor, by code and name */
 			ret = fd_list_insert_ordered ( &vendor->list[1], &new->list[0], (int (*)(void*, void *))order_avp_by_code, (void **)&locref );
 			if (ret)
 				goto error_unlock;
-			
+
 			ret = fd_list_insert_ordered ( &vendor->list[2], &new->list[1], (int (*)(void*, void *))order_avp_by_name, (void **)&locref );
 			if (ret) {
 				fd_list_unlink(&new->list[0]);
 				goto error_unlock;
 			}
 			break;
-			
+
 		case DICT_COMMAND:
 			/* A command object is linked in g_list_cmd_name and g_list_cmd_code by its name and code */
 			ret = fd_list_insert_ordered ( &dict->dict_cmd_code, &new->list[1], (int (*)(void*, void *))order_cmd_by_codefl, (void **)&locref );
 			if (ret)
 				goto error_unlock;
-			
+
 			ret = fd_list_insert_ordered ( &dict->dict_cmd_name, &new->list[0], (int (*)(void*, void *))order_cmd_by_name, (void **)&locref );
 			if (ret) {
 				fd_list_unlink(&new->list[1]);
 				goto error_unlock;
 			}
 			break;
-		
+
 		case DICT_RULE:
 			/* A rule object is linked in list[2] of its parent command or AVP by the name of the AVP it refers */
 			ret = fd_list_insert_ordered ( &parent->list[2], &new->list[0], (int (*)(void*, void *))order_rule_by_avpvc, (void **)&locref );
 			if (ret)
 				goto error_unlock;
 			break;
-			
+
 		default:
 			ASSERT(0);
 	}
-	
+
 	/* A new object has been created, increment the global counter */
 	dict->dict_count[type]++;
-	
+
 	/* Unlock the dictionary */
 	CHECK_POSIX_DO(  ret = pthread_rwlock_unlock(&dict->dict_lock),  goto error_free  );
-	
+
 	/* Save the pointer to the new object */
 	if (ref)
 		*ref = new;
-	
+
 	return 0;
-	
+
 error_param:
 	ret = EINVAL;
 	goto all_errors;
@@ -1786,19 +1693,19 @@
 			case DICT_VENDOR:
 				TRACE_DEBUG(FULL, "Vendor %s already in dictionary", new->data.vendor.vendor_name);
 				/* if we are here, it means the two vendors id are identical */
-				if (fd_os_cmp(locref->data.vendor.vendor_name, locref->datastr_len, 
+				if (fd_os_cmp(locref->data.vendor.vendor_name, locref->datastr_len,
 						new->data.vendor.vendor_name, new->datastr_len)) {
 					TRACE_DEBUG(INFO, "Conflicting vendor name: %s", new->data.vendor.vendor_name);
 					break;
 				}
 				/* Otherwise (same name), we consider the function succeeded, since the (same) object is in the dictionary */
-				ret = 0; 
+				ret = 0;
 				break;
 
 			case DICT_APPLICATION:
 				TRACE_DEBUG(FULL, "Application %s already in dictionary", new->data.application.application_name);
 				/* got same id */
-				if (fd_os_cmp(locref->data.application.application_name, locref->datastr_len, 
+				if (fd_os_cmp(locref->data.application.application_name, locref->datastr_len,
 						new->data.application.application_name, new->datastr_len)) {
 					TRACE_DEBUG(FULL, "Conflicting application name");
 					break;
@@ -1936,15 +1843,15 @@
 	if (ret != 0) {
 		char * buf = NULL;
 		size_t len = 0, offset=0;
-		
+
 		if (type == DICT_ENUMVAL) {
 			CHECK_MALLOC( dump_enumval_data ( &buf, &len, &offset, data, parent->data.type.type_base ));
 		} else {
 			CHECK_MALLOC( dict_obj_info[CHECK_TYPE(type) ? type : 0].dump_data(&buf, &len, &offset, data) );
 		}
-	
+
 		TRACE_DEBUG(INFO, "An error occurred while adding the following data in the dictionary: %s", buf);
-		
+
 		if (ret == EEXIST) {
 			offset=0;
 			CHECK_MALLOC( dump_object(&buf, &len, &offset, locref, 0, 0, 0) );
@@ -1963,14 +1870,14 @@
 	int i;
 	struct dictionary * dict;
 	int ret=0;
-	
+
 	/* check params */
 	CHECK_PARAMS( verify_object(obj) && obj->dico);
 	dict = obj->dico;
 
 	/* Lock the dictionary for change */
 	CHECK_POSIX(  pthread_rwlock_wrlock(&dict->dict_lock)  );
-	
+
 	/* check the object is not sentinel for another list */
 	for (i=0; i<NB_LISTS_PER_OBJ; i++) {
 		if (!_OBINFO(obj).haslist[i] && !(FD_IS_LIST_EMPTY(&obj->list[i]))) {
@@ -1983,14 +1890,14 @@
 			break;
 		}
 	}
-	
+
 	/* ok, now destroy the object */
 	if (!ret)
 		destroy_object(obj);
-	
+
 	/* Unlock */
 	CHECK_POSIX(  pthread_rwlock_unlock(&dict->dict_lock)  );
-	
+
 	return ret;
 }
 
@@ -1998,25 +1905,25 @@
 int fd_dict_search ( struct dictionary * dict, enum dict_object_type type, int criteria, const void * what, struct dict_object **result, int retval )
 {
 	int ret = 0;
-	
+
 	TRACE_ENTRY("%p %d(%s) %d %p %p %d", dict, type, dict_obj_info[CHECK_TYPE(type) ? type : 0].name, criteria, what, result, retval);
-	
+
 	/* Check param */
 	CHECK_PARAMS( dict && (dict->dict_eyec == DICT_EYECATCHER) && CHECK_TYPE(type) );
-	
+
 	/* Lock the dictionary for reading */
 	CHECK_POSIX(  pthread_rwlock_rdlock(&dict->dict_lock)  );
-	
+
 	/* Now call the type-specific search function */
 	ret = dict_obj_info[type].search_fct (dict, criteria, what, result);
-	
+
 	/* Unlock */
 	CHECK_POSIX(  pthread_rwlock_unlock(&dict->dict_lock)  );
-	
+
 	/* Update the return value as needed */
 	if ((result != NULL) && (*result == NULL))
 		ret = retval;
-	
+
 	return ret;
 }
 
@@ -2029,14 +1936,14 @@
 	...
   }
 
-The following criteria are allowed, with corresponding parent. 
+The following criteria are allowed, with corresponding parent.
 The parent is either struct dictionary * or struct dict_object *
-		
+
 VENDOR_BY_ID : (parent = dictionary) returns list of vendors ordered by ID
 APPLICATION_BY_ID : (parent = dictionary) returns list of applications ordered by ID
-  ** for these two lists, the Vendor with id 0 and applciation with id 0 are excluded. 
+  ** for these two lists, the Vendor with id 0 and applciation with id 0 are excluded.
      You must resolve them separatly with dict_search.
-		
+
 TYPE_BY_NAME : (parent = dictionary) returns list of types ordered by name (osstring order)
 ENUMVAL_BY_NAME : (parent = type object) return list of constants for this type ordered by name (osstring order)
 ENUMVAL_BY_VALUE : (parent = type object) return list of constants for this type ordered by values
@@ -2052,69 +1959,69 @@
 {
 	struct dictionary * dict = parent;
 	struct dict_object * obj_parent = parent;
-	
+
 	TRACE_ENTRY("%i %p %p", criteria, parent, sentinel);
-	
+
 	CHECK_PARAMS(sentinel && parent);
-	
+
 	switch(criteria) {
 		case VENDOR_BY_ID: /* parent must be the dictionary */
 			CHECK_PARAMS(dict->dict_eyec == DICT_EYECATCHER);
 			*sentinel = &dict->dict_vendors.list[0];
 			break;
-			
+
 		case APPLICATION_BY_ID: /* parent must be the dictionary */
 			CHECK_PARAMS(dict->dict_eyec == DICT_EYECATCHER);
 			*sentinel = &dict->dict_applications.list[0];
 			break;
-			
+
 		case TYPE_BY_NAME: /* parent must be the dictionary */
 			CHECK_PARAMS(dict->dict_eyec == DICT_EYECATCHER);
 			*sentinel = &dict->dict_types;
 			break;
-			
+
 		case ENUMVAL_BY_NAME: /* parent must be a type object */
 			CHECK_PARAMS(verify_object(obj_parent) && (obj_parent->type == DICT_TYPE));
 			*sentinel = &obj_parent->list[1];
 			break;
-			
+
 		case ENUMVAL_BY_VALUE: /* parent must be a type object */
 			CHECK_PARAMS(verify_object(obj_parent) && (obj_parent->type == DICT_TYPE));
 			*sentinel = &obj_parent->list[2];
 			break;
-			
+
 		case AVP_BY_NAME: /* parent must be a VENDOR object */
 			CHECK_PARAMS(verify_object(obj_parent) && (obj_parent->type == DICT_VENDOR));
 			*sentinel = &obj_parent->list[2];
 			break;
-			
+
 		case AVP_BY_CODE: /* parent must be a VENDOR object */
 			CHECK_PARAMS(verify_object(obj_parent) && (obj_parent->type == DICT_VENDOR));
 			*sentinel = &obj_parent->list[1];
 			break;
-			
+
 		case CMD_BY_NAME: /* parent must be the dictionary */
 			CHECK_PARAMS(dict->dict_eyec == DICT_EYECATCHER);
 			*sentinel = &dict->dict_cmd_name;
 			break;
-			
+
 		case CMD_BY_CODE_R: /* parent must be the dictionary */
 			CHECK_PARAMS(dict->dict_eyec == DICT_EYECATCHER);
 			*sentinel = &dict->dict_cmd_code;
 			break;
-			
+
 		case RULE_BY_AVP_AND_PARENT: /* parent must be command or grouped AVP */
 			CHECK_PARAMS(verify_object(obj_parent));
 			CHECK_PARAMS(	(obj_parent->type == DICT_COMMAND) ||
-					((obj_parent->type == DICT_AVP) 
+					((obj_parent->type == DICT_AVP)
 					  && (obj_parent->data.avp.avp_basetype == AVP_TYPE_GROUPED)) );
 			*sentinel = &obj_parent->list[2];
 			break;
-			
+
 		default:
 			CHECK_PARAMS(0);
 	}
-	
+
 	return 0;
 }
 
@@ -2130,23 +2037,23 @@
 int fd_dict_init ( struct dictionary ** dict)
 {
 	struct dictionary * new = NULL;
-	
+
 	TRACE_ENTRY("%p", dict);
-	
+
 	/* Sanity checks */
 	ASSERT( (sizeof(type_base_name) / sizeof(type_base_name[0])) == (AVP_TYPE_MAX + 1) );
 	ASSERT( (sizeof(dict_obj_info)  / sizeof(dict_obj_info[0]))  == (DICT_TYPE_MAX + 1) );
 	CHECK_PARAMS(dict);
-	
+
 	/* Allocate the memory for the dictionary */
 	CHECK_MALLOC( new = malloc(sizeof(struct dictionary)) );
 	memset(new, 0, sizeof(struct dictionary));
-	
+
 	new->dict_eyec = DICT_EYECATCHER;
-	
+
 	/* Initialize the lock for the dictionary */
 	CHECK_POSIX(  pthread_rwlock_init(&new->dict_lock, NULL)  );
-	
+
 	/* Initialize the sentinel for vendors and AVP lists */
 	init_object( &new->dict_vendors, DICT_VENDOR );
 	#define NO_VENDOR_NAME	"(no vendor)"
@@ -2154,7 +2061,7 @@
 	new->dict_vendors.datastr_len = CONSTSTRLEN(NO_VENDOR_NAME);
 	/* new->dict_vendors.list[0].o = NULL; *//* overwrite since element is also sentinel for this list. */
 	new->dict_vendors.dico = new;
-	
+
 	/* Initialize the sentinel for applications */
 	init_object( &new->dict_applications, DICT_APPLICATION );
 	#define APPLICATION_0_NAME	"Diameter Common Messages"
@@ -2162,14 +2069,14 @@
 	new->dict_applications.datastr_len = CONSTSTRLEN(APPLICATION_0_NAME);
 	/* new->dict_applications.list[0].o = NULL; *//* overwrite since since element is also sentinel for this list. */
 	new->dict_applications.dico = new;
-			
+
 	/* Initialize the sentinel for types */
 	fd_list_init ( &new->dict_types, NULL );
-	
+
 	/* Initialize the sentinels for commands */
 	fd_list_init ( &new->dict_cmd_name, NULL );
 	fd_list_init ( &new->dict_cmd_code, NULL );
-	
+
 	/* Initialize the error command object */
 	init_object( &new->dict_cmd_error, DICT_COMMAND );
 	#define GENERIC_ERROR_NAME	"(generic error format)"
@@ -2178,9 +2085,9 @@
 	new->dict_cmd_error.data.cmd.cmd_flag_mask=CMD_FLAG_ERROR | CMD_FLAG_REQUEST | CMD_FLAG_RETRANSMIT;
 	new->dict_cmd_error.data.cmd.cmd_flag_val =CMD_FLAG_ERROR;
 	new->dict_cmd_error.dico = new;
-	
+
 	*dict = new;
-	
+
 	/* Done */
 	return 0;
 }
@@ -2189,13 +2096,13 @@
 int fd_dict_fini ( struct dictionary ** dict)
 {
 	int i;
-	
+
 	TRACE_ENTRY("");
 	CHECK_PARAMS( dict && *dict && ((*dict)->dict_eyec == DICT_EYECATCHER) );
-	
+
 	/* Acquire the write lock to make sure no other operation is ongoing */
 	CHECK_POSIX(  pthread_rwlock_wrlock(&(*dict)->dict_lock)  );
-	
+
 	/* Empty all the lists, free the elements */
 	destroy_list ( &(*dict)->dict_cmd_error.list[2] );
 	destroy_list ( &(*dict)->dict_cmd_code );
@@ -2205,14 +2112,14 @@
 		destroy_list ( &(*dict)->dict_applications.list[i] );
 		destroy_list ( &(*dict)->dict_vendors.list[i] );
 	}
-	
+
 	/* Dictionary is empty, now destroy the lock */
 	CHECK_POSIX(  pthread_rwlock_unlock(&(*dict)->dict_lock)  );
 	CHECK_POSIX(  pthread_rwlock_destroy(&(*dict)->dict_lock)  );
-	
+
 	free(*dict);
 	*dict = NULL;
-	
+
 	return 0;
 }
 
@@ -2229,32 +2136,32 @@
 {
 	int ret = 0;
 	struct fd_list * li;
-	
+
 	TRACE_ENTRY("%p %p %p", parent, data, cb);
-	
+
 	/* Check parameters */
 	CHECK_PARAMS(  verify_object(parent)  );
-	CHECK_PARAMS(  (parent->type == DICT_COMMAND) 
+	CHECK_PARAMS(  (parent->type == DICT_COMMAND)
 			|| ((parent->type == DICT_AVP) && (parent->data.avp.avp_basetype == AVP_TYPE_GROUPED)) );
-	TRACE_DEBUG (FULL, "Iterating on rules of %s: '%s'.", 
-			_OBINFO(parent).name, 
-			parent->type == DICT_COMMAND ? 
+	TRACE_DEBUG (FULL, "Iterating on rules of %s: '%s'.",
+			_OBINFO(parent).name,
+			parent->type == DICT_COMMAND ?
 				  parent->data.cmd.cmd_name
 				: parent->data.avp.avp_name);
-	
+
 	/* Acquire the read lock  */
 	CHECK_POSIX(  pthread_rwlock_rdlock(&parent->dico->dict_lock)  );
-	
+
 	/* go through the list and call the cb on each rule data */
 	for (li = &(parent->list[2]); li->next != &(parent->list[2]); li = li->next) {
 		ret = (*cb)(data, &(_O(li->next->o)->data.rule));
 		if (ret != 0)
 			break;
 	}
-		
+
 	/* Release the lock */
 	CHECK_POSIX(  pthread_rwlock_unlock(&parent->dico->dict_lock)  );
-	
+
 	return ret;
 }
 
@@ -2264,25 +2171,25 @@
 	uint32_t * ret = NULL;
 	int i = 0;
 	struct fd_list * li;
-	
+
 	TRACE_ENTRY();
-	
+
 	/* Acquire the read lock */
 	CHECK_POSIX_DO(  pthread_rwlock_rdlock(&dict->dict_lock), return NULL  );
-	
+
 	/* Allocate an array to contain all the elements */
 	CHECK_MALLOC_DO( ret = calloc( dict->dict_count[DICT_VENDOR] + 1, sizeof(uint32_t) ), goto out );
-	
+
 	/* Copy the vendors IDs */
 	for (li = dict->dict_vendors.list[0].next; li != &(dict->dict_vendors.list[0]); li = li->next) {
 		ret[i] = _O(li->o)->data.vendor.vendor_id;
 		i++;
 		ASSERT( i <= dict->dict_count[DICT_VENDOR] );
 	}
-out:	
+out:
 	/* Release the lock */
 	CHECK_POSIX_DO(  pthread_rwlock_unlock(&dict->dict_lock), return NULL  );
-	
+
 	return ret;
 }
 
--- a/libfdproto/dictionary_functions.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdproto/dictionary_functions.c	Tue Jul 07 01:41:54 2020 +0800
@@ -287,7 +287,7 @@
 
 int fd_dictfct_Time_encode(void * data, union avp_value * avp_value)
 {
-	char * buf;
+	char * buf = NULL;
 	size_t len;
 	
 	TRACE_ENTRY("%p %p", data, avp_value);
--- a/libfdproto/fifo.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdproto/fifo.c	Tue Jul 07 01:41:54 2020 +0800
@@ -170,7 +170,9 @@
 int fd_fifo_del ( struct fifo  ** queue )
 {
 	struct fifo * q;
+#ifndef NDEBUG
 	int loops = 0;
+#endif
 
 	TRACE_ENTRY( "%p", queue );
 
@@ -225,7 +227,9 @@
 /* Move the content of old into new, and update loc_update atomically. We leave the old queue empty but valid */
 int fd_fifo_move ( struct fifo * old, struct fifo * new, struct fifo ** loc_update )
 {
+#ifndef NDEBUG
 	int loops = 0;
+#endif
 
 	TRACE_ENTRY("%p %p %p", old, new, loc_update);
 	CHECK_PARAMS( CHECK_FIFO( old ) && CHECK_FIFO( new ));
@@ -416,6 +420,9 @@
 			pthread_cleanup_pop(0);
 			queue->thrs_push-- ;
 
+#ifdef NDEBUG
+			(void)ret;
+#endif
 			ASSERT( ret == 0 );
 		}
 	}
--- a/libfdproto/log.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdproto/log.c	Tue Jul 07 01:41:54 2020 +0800
@@ -112,6 +112,7 @@
     switch(printlevel) {
 	    case FD_LOG_ANNOYING:  printf("%s	A   ", (use_colors == 1) ? "\e[0;37m" : ""); break;
 	    case FD_LOG_DEBUG:     printf("%s DBG   ", (use_colors == 1) ? "\e[0;37m" : ""); break;
+	    case FD_LOG_INFO:      printf("%sINFO   ", (use_colors == 1) ? "\e[1;37m" : ""); break;
 	    case FD_LOG_NOTICE:    printf("%sNOTI   ", (use_colors == 1) ? "\e[1;37m" : ""); break;
 	    case FD_LOG_ERROR:     printf("%sERROR  ", (use_colors == 1) ? "\e[0;31m" : ""); break;
 	    case FD_LOG_FATAL:     printf("%sFATAL! ", (use_colors == 1) ? "\e[0;31m" : ""); break;
--- a/libfdproto/messages.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/libfdproto/messages.c	Tue Jul 07 01:41:54 2020 +0800
@@ -596,29 +596,29 @@
 	return 0;
 }
 
-/* Search a given AVP model in a message */
-int fd_msg_search_avp ( struct msg * msg, struct dict_object * what, struct avp ** avp )
+/* Search a given AVP model in a message or AVP */
+int fd_msg_search_avp ( msg_or_avp * reference, struct dict_object * what, struct avp ** avp )
 {
 	struct avp * nextavp;
 	struct dict_avp_data 	dictdata;
 	enum dict_object_type 	dicttype;
 	
-	TRACE_ENTRY("%p %p %p", msg, what, avp);
+	TRACE_ENTRY("%p %p %p", reference, what, avp);
 	
-	CHECK_PARAMS( CHECK_MSG(msg) && what );
+	CHECK_PARAMS( VALIDATE_OBJ(reference) && what );
 	
 	CHECK_PARAMS( (fd_dict_gettype(what, &dicttype) == 0) && (dicttype == DICT_AVP) );
 	CHECK_FCT(  fd_dict_getval(what, &dictdata)  );
 	
-	/* Loop on all top AVPs */
-	CHECK_FCT(  fd_msg_browse(msg, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL)  );
+	/* Loop on all top AVPs in message or AVP */
+	CHECK_FCT(  fd_msg_browse(reference, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL)  );
 	while (nextavp) {
 		
 		if ( (nextavp->avp_public.avp_code   == dictdata.avp_code)
 		  && (nextavp->avp_public.avp_vendor == dictdata.avp_vendor) ) /* always 0 if no V flag */
 			break;
 		
-		/* Otherwise move to next AVP in the message */
+		/* Otherwise move to next AVP in the message or AVP */
 		CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) );
 	}
 	
@@ -2246,7 +2246,7 @@
 				if (error_info) {				
 						error_info->pei_errcode = "DIAMETER_INVALID_AVP_VALUE";
 						error_info->pei_avp = avp;
-						strncpy(error_message, err, sizeof(error_message));
+						snprintf(error_message, sizeof(error_message), "%s", err);
 						error_info->pei_message = error_message;
 				} else {
 					char * buf = NULL;
@@ -2296,7 +2296,9 @@
 	/* First, check if we already have a model. */
 	if (msg->msg_model != NULL) {
 		/* Check if this model is still valid for the message data */
+#ifndef NDEBUG
 		enum dict_object_type 	 dicttype;
+#endif
 		struct dict_cmd_data     data;
 		ASSERT(((fd_dict_gettype(msg->msg_model, &dicttype) == 0) && (dicttype == DICT_COMMAND)));
 		(void)fd_dict_getval( msg->msg_model, &data);
--- a/tests/testcnx.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/tests/testcnx.c	Tue Jul 07 01:41:54 2020 +0800
@@ -674,7 +674,7 @@
 #ifndef DISABLE_SCTP
 		case IPPROTO_SCTP:
 			{
-				cnx = fd_cnx_cli_connect_sctp(0, TEST_PORT, &eps);
+				cnx = fd_cnx_cli_connect_sctp(0, TEST_PORT, &eps, NULL);
 				CHECK( 1, (cnx ? 1 : 0) ^ cf->expect_failure );
 			}
 			break;
--- a/tests/testmesg.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/tests/testmesg.c	Tue Jul 07 01:41:54 2020 +0800
@@ -164,6 +164,8 @@
 
 		/* Create the instance, using the templates */
 		CHECK( 0, fd_msg_new ( acr_model, 0, &acr ) );
+
+/* TODO: Do we need this recreated? acr is not used again . */
 	}
 	
 	/* Now let's create some additional Dictionary objects for the test */
@@ -282,6 +284,11 @@
 			
 			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Application test", &application, ENOENT ) );
 			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_COMMAND, &cmd_data , application, &command ) );
+			ADD_RULE(command, 0, "Session-Id",			RULE_FIXED_HEAD, 1, 1, 1);
+			ADD_RULE(command, 0, "Result-Code",			RULE_OPTIONAL,   0, 1, 0);
+			ADD_RULE(command, 0, "Experimental-Result",		RULE_OPTIONAL,   0, 1, 0);
+			ADD_RULE(command, 0, "Origin-Host",			RULE_REQUIRED,   1, 1, 0);
+			ADD_RULE(command, 0, "Origin-Realm",			RULE_REQUIRED,   1, 1, 0);
 		}
 		
 		{
@@ -316,7 +323,19 @@
 			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_TYPE, &type_data , NULL, &type ) );
 			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_AVP, &avp_data , type, NULL ) );
 		}
-		
+
+		{
+			struct dict_object     * type = NULL;
+			struct dict_type_data    type_data = { AVP_TYPE_UNSIGNED32, "Enumerated(73565/Experimental-Result-Code)" };
+			struct dict_avp_data     avp_data = { 73576, 73565, "Experimental-Result-Code", AVP_FLAG_VENDOR, AVP_FLAG_VENDOR, AVP_TYPE_UNSIGNED32 };
+			struct dict_enumval_data val1 = { "DIAMETER_TEST_RESULT_1000", { .u32 = 1000 } };
+			struct dict_enumval_data val2 = { "DIAMETER_TEST_RESULT_5000", { .u32 = 5000 } };
+			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_TYPE, &type_data , NULL, &type ) );
+			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_AVP, &avp_data , type, NULL ) );
+			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_ENUMVAL, &val1 , type, NULL ) );
+			CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_ENUMVAL, &val2 , type, NULL ) );
+		}
+
 		#if 0
 		{
 			fd_log_debug("%s", fd_dict_dump_object(FD_DUMP_TEST_PARAMS, vendor));
@@ -680,21 +699,49 @@
 		{
 			struct dict_object * avp_model;
 			struct avp 	   * found;
+			struct avp 	   * grouped = NULL;
 			struct avp_hdr     * avpdata = NULL;
 			
-			/* Now find the ACR dictionary object */
+			/* Now find the Test f32 AVP dictionary object */
 			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "AVP Test - no vendor - f32", &avp_model, ENOENT ) );
 			
 			CPYBUF();
 			CHECK( 0, fd_msg_parse_buffer( &buf_cpy, 344, &msg) );
-			
+			CHECK( 0, fd_msg_parse_dict( msg, fd_g_config->cnf_dict, NULL ) );
+#if 0
+			LOG_D("msg: %s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1));
+#endif
+
 			/* Search this AVP instance in the msg */
 			CHECK( 0, fd_msg_search_avp( msg, avp_model, &found ) );
 			
 			/* Check the AVP value is 3.1415 */
 			CHECK( 0, fd_msg_avp_hdr ( found, &avpdata ) );
 			CHECK( 3.1415F, avpdata->avp_value->f32 );
-			
+
+			/* Search for the first grouped message */
+			{
+			struct dict_avp_request grouped_req = { 73565, 0, "AVP Test - grouped"};
+			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME_AND_VENDOR, &grouped_req, &avp_model, ENOENT ) );
+			}
+			CHECK( 0, fd_msg_search_avp( msg, avp_model, &grouped ) );
+#if 0
+			LOG_D("grouped: %s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, grouped, fd_g_config->cnf_dict, 0, 1));
+#endif
+
+			/* Find the first item in the grouped */
+			{
+			struct dict_avp_request avp_req = { 73565, 0, "AVP Test - os"};
+			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_req, &avp_model, ENOENT ) );
+			}
+
+			CHECK( 0, fd_msg_search_avp( grouped, avp_model, &found ) );
+
+			/* Check the AVP value is "1" */
+			CHECK( 0, fd_msg_avp_hdr ( found, &avpdata ) );
+			CHECK( 8, avpdata->avp_value->os.len );
+			CHECK( 0, memcmp(avpdata->avp_value->os.data, "12345678", 8));
+
 			/* reinit the msg */
 			CHECK( 0, fd_msg_free ( msg ) );
 				
@@ -1070,6 +1117,8 @@
 				fd_log_debug("%s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1));
 				
 				TODO("Check the Failed-AVP is as expected");
+
+				CHECK( 0, fd_msg_free( msg ) );
 			}
 			
 		}
@@ -1448,6 +1497,120 @@
 			CHECK( 0, fd_msg_free( msg ) );
 		}
 	}
+
+	/* Test the fd_msg_add_result function for Result-Code */
+	{
+		struct msg		* msg = NULL;
+		struct dict_object	* avp_model = NULL;
+		struct avp		* rc = NULL;
+		struct avp_hdr		* avpdata = NULL;
+
+		{
+			struct dict_object * cmd_model = NULL;
+			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Test-Command-Answer", &cmd_model, ENOENT ) );
+
+			/* Create a message */
+			CHECK( 0, fd_msg_new ( cmd_model, 0, &msg ) );
+
+			/* Add a session id */
+			CHECK( 0, fd_msg_new_session( msg, (os0_t)"testmsg", strlen("testmsg") ) );
+
+			/* Find the DICT_TYPE Enumerated(Result-Code) */
+			struct dict_object * restype = NULL;
+			CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_BY_NAME, "Enumerated(Result-Code)", &restype, ENOENT ) );
+
+			/* Now test the behavior of fd_msg_add_result for Result-Code AVP */
+			CHECK( 0, fd_msg_add_result(msg, 0, restype, "DIAMETER_SUCCESS", NULL, NULL, 1) );
+
+			LOG_D("%s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1));
+		}
+
+		/* Ensure Result-Code is present */
+		CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Result-Code", &avp_model, ENOENT ) );
+		CHECK( 0, fd_msg_search_avp( msg, avp_model, &rc ) );
+
+		/* Check the Result-Code AVP value is DIAMETER_SUCCESS */
+		CHECK( 0, fd_msg_avp_hdr ( rc, &avpdata ) );
+		CHECK( ER_DIAMETER_SUCCESS, avpdata->avp_value->u32 );
+
+		/* Ensure Experimental-Result is missing */
+		CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result", &avp_model, ENOENT ) );
+		CHECK( ENOENT, fd_msg_search_avp( msg, avp_model, NULL ) );
+
+		/* Free msg */
+		CHECK( 0, fd_msg_free( msg ) );
+	}
+
+	/* Test the fd_msg_add_result function for Experimental-Result */
+	{
+		struct msg		* msg = NULL;
+		struct dict_object	* avp_model = NULL;
+		struct avp		* er = NULL;
+		struct avp		* erc = NULL;
+		struct avp_hdr		* avpdata = NULL;
+
+		{
+			struct dict_object * cmd_model = NULL;
+			CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Test-Command-Answer", &cmd_model, ENOENT ) );
+
+			/* Create a message */
+			CHECK( 0, fd_msg_new ( cmd_model, 0, &msg ) );
+
+			/* Add a session id */
+			CHECK( 0, fd_msg_new_session( msg, (os0_t)"testmsg", strlen("testmsg") ) );
+
+			/* Find the DICT_TYPE Enumerated(73565/Experimental-Result-Code) */
+			struct dict_object * restype = NULL;
+			CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_BY_NAME, "Enumerated(73565/Experimental-Result-Code)", &restype, ENOENT ) );
+
+			/* Now test the behavior of fd_msg_add_result for Experimental-Result AVP */
+			CHECK( 0, fd_msg_add_result(msg, 73565, restype, "DIAMETER_TEST_RESULT_5000", NULL, NULL, 1) );
+
+			LOG_D("%s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1));
+		}
+
+		/* Ensure Result-Code is missing */
+		CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Result-Code", &avp_model, ENOENT ) );
+		CHECK( ENOENT, fd_msg_search_avp( msg, avp_model, NULL ) );
+
+		/* Ensure Experimental-Result is present */
+		CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result", &avp_model, ENOENT ) );
+		CHECK( 0, fd_msg_search_avp( msg, avp_model, &er ) );
+
+		/* Ensure Experimental-Result-Code is present */
+		CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result-Code", &avp_model, ENOENT ) );
+		CHECK( 0, fd_msg_search_avp( er, avp_model, &erc ) );
+
+		/* Check the Experimental-Result-Code AVP value is 5000 */
+		CHECK( 0, fd_msg_avp_hdr ( erc, &avpdata ) );
+		CHECK( 5000, avpdata->avp_value->u32 );
+
+		/* Free msg */
+		CHECK( 0, fd_msg_free( msg ) );
+	}
+
+	/* Check IPv4 -> IPv6 and IPv6->IPv4 mapping */
+	{
+		struct in_addr i4;
+		memset(&i4, 0xff, sizeof(i4));
+		CHECK( 1, inet_pton( AF_INET, TEST_IP4, &i4 ) );
+
+		#define TEST_IP6MAP "::ffff:" TEST_IP4
+
+		struct in6_addr i6;
+		memset(&i6, 0xff, sizeof(i6));
+		IN6_ADDR_V4MAP(&i6.s6_addr, i4.s_addr);
+		char buf6[INET6_ADDRSTRLEN];
+		CHECK( 0, (inet_ntop( AF_INET6, &i6, buf6, sizeof(buf6) ) == NULL) ? errno : 0 );
+		LOG_D("buf6='%s'", buf6);
+		CHECK( 0, strcasecmp( buf6, TEST_IP6MAP ) );
+
+		struct in_addr o4;
+		o4.s_addr = IN6_ADDR_V4UNMAP(&i6);
+		char buf4[INET_ADDRSTRLEN];
+		CHECK( 0, (inet_ntop( AF_INET, &o4.s_addr, buf4, sizeof(buf4) ) == NULL) ? errno : 0 );
+		CHECK( 0, strcmp( buf4, TEST_IP4 ) );
+	}
 	
 	/* That's all for the tests yet */
 	PASSTEST();
--- a/tests/testsctp.c	Tue Jul 07 01:24:48 2020 +0800
+++ b/tests/testsctp.c	Tue Jul 07 01:41:54 2020 +0800
@@ -98,7 +98,7 @@
 	CHECK( 0, fd_sctp_listen( sock ));
 	
 	/* Now, create the client socket */
-	CHECK( 0, fd_sctp_client( &cli.cc_socket, 0, TEST_PORT, &eps ));
+	CHECK( 0, fd_sctp_client( &cli.cc_socket, 0, TEST_PORT, &eps, NULL ));
 	
 	/* Accept this connection */
 	srv.cc_socket = accept(sock, NULL, NULL);
"Welcome to our mercurial repository"