Initial commit

Change-Id: I6a4444e3c193dae437cd7929f4c39aba7b749efa
diff --git a/extensions/dict_ts29212_avps/CMakeLists.txt b/extensions/dict_ts29212_avps/CMakeLists.txt
new file mode 100644
index 0000000..0ede9a0
--- /dev/null
+++ b/extensions/dict_ts29212_avps/CMakeLists.txt
@@ -0,0 +1,16 @@
+# The dict_ts29212_avps extension
+PROJECT("dict_ts29212_avps library generated by FdGen " C)
+
+# Compile as a module
+FD_ADD_EXTENSION(dict_ts29212_avps dict_ts29212_avps.c)
+
+
+####
+## INSTALL section ##
+
+INSTALL(TARGETS dict_ts29212_avps
+	LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
+COMPONENT freeDiameter-dictionary-TS29212_AVPS)
+
+
+
diff --git a/extensions/dict_ts29212_avps/dict_ts29212_avps.c b/extensions/dict_ts29212_avps/dict_ts29212_avps.c
new file mode 100644
index 0000000..f0012be
--- /dev/null
+++ b/extensions/dict_ts29212_avps/dict_ts29212_avps.c
@@ -0,0 +1,3148 @@
+/*
+* Copyright (c) 2017 Sprint
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*    http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/****************
+ Generated By: fdtool enhancements to diafuzzer
+ License: same as freeDiameter
+****************/
+
+
+/* 
+ * Dictionary definitions of objects specified in ts29212_avps (e30).
+ */
+#include <freeDiameter/extension.h>
+
+#define PROTO_VER "e30"
+#define GEN_DATE  1506697181.97
+
+const char *ts29212_avps_proto_ver = PROTO_VER;
+const double ts29212_avps_gen_date = GEN_DATE;
+
+/* The content of this file follows the same structure as dict_base_proto.c */
+
+#define CHECK_dict_new( _type, _data, _parent, _ref )                                     \
+{                                                                                         \
+    int _ret = fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref) ); \
+    if ( _ret != 0 && _ret != EEXIST )                                                    \
+       return _ret;                                                                       \
+}
+
+#define CHECK_dict_search( _type, _criteria, _what, _result )		\
+    CHECK_FCT(  fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) );
+
+struct local_rules_definition {
+    struct dict_avp_request avp_vendor_plus_name;
+    enum rule_position	position;
+    int 			min;
+    int			max;
+};
+
+#define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 1 : 0 )
+
+/* Attention! This version of the macro uses AVP_BY_NAME_AND_VENDOR, in contrast to most other copies! */
+#define PARSE_loc_rules( _rulearray, _parent) {                                                         \
+        int __ar;                                                                                       \
+        for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) {                     \
+                struct dict_rule_data __data = { NULL,                                                  \
+                        (_rulearray)[__ar].position,                                                    \
+                        0,                                                                              \
+                        (_rulearray)[__ar].min,                                                         \
+                        (_rulearray)[__ar].max};                                                        \
+                __data.rule_order = RULE_ORDER(__data.rule_position);                                   \
+                CHECK_FCT(  fd_dict_search(                                                             \
+                        fd_g_config->cnf_dict,                                                          \
+                        DICT_AVP,                                                                       \
+                        AVP_BY_NAME_AND_VENDOR,                                                         \
+                        &(_rulearray)[__ar].avp_vendor_plus_name,                                       \
+                        &__data.rule_avp, 0 ) );                                                        \
+                if ( !__data.rule_avp ) {                                                               \
+                        TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_vendor_plus_name.avp_name);             \
+                        return ENOENT;                                                                  \
+                }                                                                                       \
+                {                                                                                       \
+                         int _ret = fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &(__data), (_parent), NULL ); \
+                         if ( _ret != 0 && _ret != EEXIST )      {                                      \
+                                TRACE_DEBUG(INFO, "Error on rule with AVP '%s'",                        \
+                                            (_rulearray)[__ar].avp_vendor_plus_name.avp_name);          \
+                                return EINVAL;                                                          \
+                         }                                                                              \
+                }                                                                                       \
+        }                                                                                               \
+}
+
+#define CHECK_vendor_new( _data ) { \
+        struct dict_object * vendor_found; \
+        if (fd_dict_search(fd_g_config->cnf_dict,DICT_VENDOR,VENDOR_BY_ID,&_data.vendor_id,&vendor_found,ENOENT) == ENOENT) { \
+                CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &_data, NULL, NULL)); \
+        } \
+}
+
+#define enumval_def_u32( _val_, _str_ )		\
+    { _str_, 		{ .u32 = _val_ }}
+
+#define enumval_def_os( _len_, _val_, _str_ )				\
+    { _str_, 		{ .os = { .data = (unsigned char *)_val_, .len = _len_ }}}
+
+
+static int dict_ts29212_avps_load_defs(char * conffile)
+{
+   TRACE_ENTRY("%p", conffile);
+	/* Application Section */
+	{
+		/* Create the vendors */		{
+			struct dict_vendor_data vendor_data = { 10415, "3GPP" };
+			CHECK_dict_new(DICT_VENDOR, &vendor_data, NULL, NULL)
+		}
+	}
+
+
+   /* AVP section */
+   {
+		struct dict_object * Address_type;
+		struct dict_object * UTF8String_type;
+		struct dict_object * DiameterIdentity_type;
+		struct dict_object * DiameterURI_type;
+		struct dict_object * Time_type;
+		struct dict_object * IPFilterRule_type;
+
+		CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type);
+		CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_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, "Time", &Time_type);
+		CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type);
+		/* 3GPP-PS-Data-Off-Status */
+		{
+			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, "3GPP/Enumerated(3GPP-PS-Data-Off-Status)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "ACTIVE", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "INACTIVE", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Access-Availability-Change-Reason */
+		{
+			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);
+		};
+		/* 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);
+		};
+		/* AN-GW-Status */
+		{
+			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, "3GPP/Enumerated(AN-GW-Status)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "AN_GW_FAILED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* APN-Aggregate-Max-Bitrate-DL */
+		{
+			struct dict_avp_data data = {
+				1040,	/* Code */
+				10415,	/* Vendor */
+				"APN-Aggregate-Max-Bitrate-DL",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_UNSIGNED32	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* APN-Aggregate-Max-Bitrate-UL */
+		{
+			struct dict_avp_data data = {
+				1041,	/* Code */
+				10415,	/* Vendor */
+				"APN-Aggregate-Max-Bitrate-UL",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_UNSIGNED32	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Bearer-Control-Mode */
+		{
+			struct dict_avp_data data = {
+				1023,	/* Code */
+				10415,	/* Vendor */
+				"Bearer-Control-Mode",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Control-Mode)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UE_ONLY", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "RESERVED", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "UE_NW", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Bearer-Identifier */
+		{
+			struct dict_avp_data data = {
+				1020,	/* Code */
+				10415,	/* Vendor */
+				"Bearer-Identifier",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_OCTETSTRING	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Bearer-Operation */
+		{
+			struct dict_avp_data data = {
+				1021,	/* Code */
+				10415,	/* Vendor */
+				"Bearer-Operation",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Operation)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "TERMINATION", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "ESTABLISHMENT", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "MODIFICATION", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Bearer-Usage */
+		{
+			struct dict_avp_data data = {
+				1000,	/* Code */
+				10415,	/* Vendor */
+				"Bearer-Usage",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Bearer-Usage)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "GENERAL", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "IMS_SIGNALLING", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Charging-Correlation-Indicator */
+		{
+			struct dict_avp_data data = {
+				1073,	/* Code */
+				10415,	/* Vendor */
+				"Charging-Correlation-Indicator",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Charging-Correlation-Indicator)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "CHARGING_IDENTIFIER_REQUIRED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, 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);
+		};
+		/* 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);
+		};
+		/* Credit-Management-Status */
+		{
+			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 */
+		{
+			struct dict_avp_data data = {
+				1071,	/* Code */
+				10415,	/* Vendor */
+				"CSG-Information-Reporting",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CSG-Information-Reporting)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "CHANGE_CSG_CELL", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "CHANGE_CSG_SUBSCRIBED_HYBRID_CELL", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "CHANGE_CSG_UNSUBSCRIBED_HYBRID_CELL", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Default-Access */
+		{
+			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, "3GPP/Enumerated(Default-Access)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "GPP_GPRS", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "DOCSIS", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "xDSL", { .i32=2 }};
+			struct dict_enumval_data        t_4 = { "WiMAX", { .i32=3 }};
+			struct dict_enumval_data        t_5 = { "GPP2", { .i32=4 }};
+			struct dict_enumval_data        t_6 = { "GPP_EPS", { .i32=5 }};
+			struct dict_enumval_data        t_7 = { "Non_3GPP_EPS", { .i32=6 }};
+			struct dict_enumval_data        t_8 = { "FBA", { .i32=7 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Default-Bearer-Indication */
+		{
+			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, "3GPP/Enumerated(Default-Bearer-Indication)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "BIND_TO_DEF_BEARER", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "BIND_TO_APPLICABLE_BEARER", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Default-QoS-Name */
+		{
+			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-Trigger */
+		{
+			struct dict_avp_data data = {
+				1006,	/* Code */
+				10415,	/* Vendor */
+				"Event-Trigger",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Event-Trigger)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "SGSN_CHANGE", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "QOS_CHANGE", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "QOS_CHANGE_EXCEEDING_AUTHORIZATION", { .i32=11 }};
+			struct dict_enumval_data        t_4 = { "RAI_CHANGE", { .i32=12 }};
+			struct dict_enumval_data        t_5 = { "USER_LOCATION_CHANGE", { .i32=13 }};
+			struct dict_enumval_data        t_6 = { "NO_EVENT_TRIGGERS", { .i32=14 }};
+			struct dict_enumval_data        t_7 = { "OUT_OF_CREDIT", { .i32=15 }};
+			struct dict_enumval_data        t_8 = { "REALLOCATION_OF_CREDIT", { .i32=16 }};
+			struct dict_enumval_data        t_9 = { "REVALIDATION_TIMEOUT", { .i32=17 }};
+			struct dict_enumval_data        t_10 = { "UE_IP_ADDRESS_ALLOCATE", { .i32=18 }};
+			struct dict_enumval_data        t_11 = { "UE_IP_ADDRESS_RELEASE", { .i32=19 }};
+			struct dict_enumval_data        t_12 = { "RAT_CHANGE", { .i32=2 }};
+			struct dict_enumval_data        t_13 = { "DEFAULT_EPS_BEARER_QOS_CHANGE", { .i32=20 }};
+			struct dict_enumval_data        t_14 = { "AN_GW_CHANGE", { .i32=21 }};
+			struct dict_enumval_data        t_15 = { "SUCCESSFUL_RESOURCE_ALLOCATION", { .i32=22 }};
+			struct dict_enumval_data        t_16 = { "RESOURCE_MODIFICATION_REQUEST", { .i32=23 }};
+			struct dict_enumval_data        t_17 = { "PGW_TRACE_CONTROL", { .i32=24 }};
+			struct dict_enumval_data        t_18 = { "UE_TIME_ZONE_CHANGE", { .i32=25 }};
+			struct dict_enumval_data        t_19 = { "TAI_CHANGE", { .i32=26 }};
+			struct dict_enumval_data        t_20 = { "ECGI_CHANGE", { .i32=27 }};
+			struct dict_enumval_data        t_21 = { "CHARGING_CORRELATION_EXCHANGE", { .i32=28 }};
+			struct dict_enumval_data        t_22 = { "APN_AMBR_MODIFICATION_FAILURE", { .i32=29 }};
+			struct dict_enumval_data        t_23 = { "TFT_CHANGE", { .i32=3 }};
+			struct dict_enumval_data        t_24 = { "USER_CSG_INFORMATION_CHANGE", { .i32=30 }};
+			struct dict_enumval_data        t_25 = { "USAGE_REPORT", { .i32=33 }};
+			struct dict_enumval_data        t_26 = { "DEFAULT_EPS_BEARER_QOS_MODIFICATION_FAILURE", { .i32=34 }};
+			struct dict_enumval_data        t_27 = { "USER_CSG_HYBRID_SUBSCRIBED_INFORMATION_CHANGE", { .i32=35 }};
+			struct dict_enumval_data        t_28 = { "HYBRID_UNSUBSCRIBED_INFORMATION_CHANGE", { .i32=36 }};
+			struct dict_enumval_data        t_29 = { "ROUTING_RULE_CHANGE", { .i32=37 }};
+			struct dict_enumval_data        t_30 = { "APPLICATION_START", { .i32=39 }};
+			struct dict_enumval_data        t_31 = { "PLMN_CHANGE", { .i32=4 }};
+			struct dict_enumval_data        t_32 = { "APPLICATION_STOP", { .i32=40 }};
+			struct dict_enumval_data        t_33 = { "CS_TO_PS_HANDOVER", { .i32=42 }};
+			struct dict_enumval_data        t_34 = { "UE_LOCAL_IP_ADDRESS_CHANGE", { .i32=43 }};
+			struct dict_enumval_data        t_35 = { "NB_LOCAL_IP_ADDRESS_CHANGE", { .i32=44 }};
+			struct dict_enumval_data        t_36 = { "ACCESS_NETWORK_INFO_REPORT", { .i32=45 }};
+			struct dict_enumval_data        t_37 = { "CREDIT_MANAGEMENT_SESSION_FAILURE", { .i32=46 }};
+			struct dict_enumval_data        t_38 = { "DEFAULT_QOS_CHANGE", { .i32=47 }};
+			struct dict_enumval_data        t_39 = { "CHANGE_OF_UE_PRESENCE_IN_PRESENCE_REPORTING_AREA_REPORT", { .i32=48 }};
+			struct dict_enumval_data        t_40 = { "ADDITION_OF_ACCESS", { .i32=49 }};
+			struct dict_enumval_data        t_41 = { "LOSS_OF_BEARER", { .i32=5 }};
+			struct dict_enumval_data        t_42 = { "REMOVAL_OF_ACCESS", { .i32=50 }};
+			struct dict_enumval_data        t_43 = { "UNAVAILABLITY_OF_ACCESS", { .i32=51 }};
+			struct dict_enumval_data        t_44 = { "AVAILABLITY_OF_ACCESS", { .i32=52 }};
+			struct dict_enumval_data        t_45 = { "RESOURCE_RELEASE", { .i32=53 }};
+			struct dict_enumval_data        t_46 = { "ENODEB_CHANGE", { .i32=54 }};
+			struct dict_enumval_data        t_47 = { "GPP_PS_DATA_OFF_CHANGE", { .i32=55 }};
+			struct dict_enumval_data        t_48 = { "RECOVERY_OF_BEARER", { .i32=6 }};
+			struct dict_enumval_data        t_49 = { "IP_CAN_CHANGE", { .i32=7 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_26, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_27, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_28, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_29, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_30, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_31, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_32, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_33, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_34, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_35, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_36, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_37, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_38, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_39, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_40, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_41, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_42, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_43, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_44, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_45, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_46, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_47, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_48, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_49, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Execution-Time */
+		{
+			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);
+		};
+		/* Flow-Direction */
+		{
+			struct dict_avp_data data = {
+				1080,	/* Code */
+				10415,	/* Vendor */
+				"Flow-Direction",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Flow-Direction)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UNSPECIFIED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "DOWNLINK", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "UPLINK", { .i32=2 }};
+			struct dict_enumval_data        t_4 = { "BIDIRECTIONAL", { .i32=3 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, 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);
+		};
+		/* 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);
+		};
+		/* IP-CAN-Session-Charging-Scope */
+		{
+			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, "3GPP/Enumerated(IP-CAN-Session-Charging-Scope)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "IP_CAN_SESSION_SCOPE", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* IP-CAN-Type */
+		{
+			struct dict_avp_data data = {
+				1027,	/* Code */
+				10415,	/* Vendor */
+				"IP-CAN-Type",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(IP-CAN-Type)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "GPP_GPRS", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "DOCSIS", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "xDSL", { .i32=2 }};
+			struct dict_enumval_data        t_4 = { "WiMAX", { .i32=3 }};
+			struct dict_enumval_data        t_5 = { "GPP2", { .i32=4 }};
+			struct dict_enumval_data        t_6 = { "GPP_EPS", { .i32=5 }};
+			struct dict_enumval_data        t_7 = { "Non_3GPP_EPS", { .i32=6 }};
+			struct dict_enumval_data        t_8 = { "FBA", { .i32=7 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Metering-Method */
+		{
+			struct dict_avp_data data = {
+				1007,	/* Code */
+				10415,	/* Vendor */
+				"Metering-Method",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Metering-Method)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DURATION", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "VOLUME", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "DURATION_VOLUME", { .i32=2 }};
+			struct dict_enumval_data        t_4 = { "EVENT", { .i32=3 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Monitoring-Flags */
+		{
+			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 */
+		{
+			struct dict_avp_data data = {
+				1066,	/* Code */
+				10415,	/* Vendor */
+				"Monitoring-Key",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_OCTETSTRING	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Mute-Notification */
+		{
+			struct dict_avp_data data = {
+				2809,	/* Code */
+				10415,	/* Vendor */
+				"Mute-Notification",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Mute-Notification)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "MUTE_REQUIRED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			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);
+		};
+		/* NBIFOM-Mode */
+		{
+			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, "3GPP/Enumerated(NBIFOM-Mode)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UE_INITIATED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "NETWORK_INITIATED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* NBIFOM-Support */
+		{
+			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, "3GPP/Enumerated(NBIFOM-Support)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "NBIFOM_NOT_SUPPORTED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "NBIFOM_SUPPORTED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* NetLoc-Access-Support */
+		{
+			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 */
+		{
+			struct dict_avp_data data = {
+				1024,	/* Code */
+				10415,	/* Vendor */
+				"Network-Request-Support",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Network-Request-Support)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "NETWORK_REQUEST_NOT_SUPPORTED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "NETWORK_REQUEST_SUPPORTED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Offline */
+		{
+			struct dict_avp_data data = {
+				1008,	/* Code */
+				10415,	/* Vendor */
+				"Offline",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Offline)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DISABLE_OFFLINE", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "ENABLE_OFFLINE", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Online */
+		{
+			struct dict_avp_data data = {
+				1009,	/* Code */
+				10415,	/* Vendor */
+				"Online",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Online)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DISABLE_ONLINE", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "ENABLE_ONLINE", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			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-Operation */
+		{
+			struct dict_avp_data data = {
+				1062,	/* Code */
+				10415,	/* Vendor */
+				"Packet-Filter-Operation",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Packet-Filter-Operation)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DELETION", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "ADDITION", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "MODIFICATION", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Packet-Filter-Usage */
+		{
+			struct dict_avp_data data = {
+				1072,	/* Code */
+				10415,	/* Vendor */
+				"Packet-Filter-Usage",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Packet-Filter-Usage)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "SEND_TO_UE", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* PCC-Rule-Status */
+		{
+			struct dict_avp_data data = {
+				1019,	/* Code */
+				10415,	/* Vendor */
+				"PCC-Rule-Status",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PCC-Rule-Status)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "ACTIVE", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "INACTIVE", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "TEMPORARILY_INACTIVE", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* PDN-Connection-ID */
+		{
+			struct dict_avp_data data = {
+				1065,	/* Code */
+				10415,	/* Vendor */
+				"PDN-Connection-ID",	/* Name */
+				AVP_FLAG_VENDOR,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_OCTETSTRING	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Precedence */
+		{
+			struct dict_avp_data data = {
+				1010,	/* Code */
+				10415,	/* Vendor */
+				"Precedence",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_UNSIGNED32	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Pre-emption-Capability */
+		{
+			struct dict_avp_data data = {
+				1047,	/* Code */
+				10415,	/* Vendor */
+				"Pre-emption-Capability",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Pre-emption-Capability)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "PRE_EMPTION_CAPABILITY_ENABLED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "PRE_EMPTION_CAPABILITY_DISABLED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Pre-emption-Vulnerability */
+		{
+			struct dict_avp_data data = {
+				1048,	/* Code */
+				10415,	/* Vendor */
+				"Pre-emption-Vulnerability",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Pre-emption-Vulnerability)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "PRE_EMPTION_VULNERABILITY_ENABLED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "PRE_EMPTION_VULNERABILITY_DISABLED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Presence-Reporting-Area-Elements-List */
+		{
+			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 */
+		{
+			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-Status */
+		{
+			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 */
+		{
+			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);
+		};
+		/* PS-to-CS-Session-Continuity */
+		{
+			struct dict_avp_data data = {
+				1099,	/* Code */
+				10415,	/* Vendor */
+				"PS-to-CS-Session-Continuity",	/* Name */
+				AVP_FLAG_VENDOR,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(PS-to-CS-Session-Continuity)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "VIDEO_PS2CS_CONT_CANDIDATE", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* QoS-Class-Identifier */
+		{
+			struct dict_avp_data data = {
+				1028,	/* Code */
+				10415,	/* Vendor */
+				"QoS-Class-Identifier",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(QoS-Class-Identifier)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "QCI_1", { .i32=1 }};
+			struct dict_enumval_data        t_2 = { "QCI_2", { .i32=2 }};
+			struct dict_enumval_data        t_3 = { "QCI_3", { .i32=3 }};
+			struct dict_enumval_data        t_4 = { "QCI_4", { .i32=4 }};
+			struct dict_enumval_data        t_5 = { "QCI_5", { .i32=5 }};
+			struct dict_enumval_data        t_6 = { "QCI_6", { .i32=6 }};
+			struct dict_enumval_data        t_7 = { "QCI_65", { .i32=65 }};
+			struct dict_enumval_data        t_8 = { "QCI_66", { .i32=66 }};
+			struct dict_enumval_data        t_9 = { "QCI_69", { .i32=69 }};
+			struct dict_enumval_data        t_10 = { "QCI_7", { .i32=7 }};
+			struct dict_enumval_data        t_11 = { "QCI_70", { .i32=70 }};
+			struct dict_enumval_data        t_12 = { "QCI_75", { .i32=75 }};
+			struct dict_enumval_data        t_13 = { "QCI_79", { .i32=79 }};
+			struct dict_enumval_data        t_14 = { "QCI_8", { .i32=8 }};
+			struct dict_enumval_data        t_15 = { "QCI_9", { .i32=9 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* QoS-Negotiation */
+		{
+			struct dict_avp_data data = {
+				1029,	/* Code */
+				10415,	/* Vendor */
+				"QoS-Negotiation",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(QoS-Negotiation)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "NO_QoS_NEGOTIATION", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "QoS_NEGOTIATION_SUPPORTED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* QoS-Upgrade */
+		{
+			struct dict_avp_data data = {
+				1030,	/* Code */
+				10415,	/* Vendor */
+				"QoS-Upgrade",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(QoS-Upgrade)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "QoS_UPGRADE_NOT_SUPPORTED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "QoS_UPGRADE_SUPPORTED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* RAN-NAS-Release-Cause */
+		{
+			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 */
+		{
+			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 */
+		{
+			struct dict_avp_data data = {
+				1032,	/* Code */
+				10415,	/* Vendor */
+				"RAT-Type",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(RAT-Type)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "WLAN", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "VIRTUAL", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Redirect-Support */
+		{
+			struct dict_avp_data data = {
+				1086,	/* Code */
+				10415,	/* Vendor */
+				"Redirect-Support",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Redirect-Support)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "REDIRECTION_DISABLED", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "REDIRECTION_ENABLED", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Removal-Of-Access */
+		{
+			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, "3GPP/Enumerated(Removal-Of-Access)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "REMOVAL_OF_ACCESS", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Reporting-Level */
+		{
+			struct dict_avp_data data = {
+				1011,	/* Code */
+				10415,	/* Vendor */
+				"Reporting-Level",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Reporting-Level)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "SERVICE_IDENTIFIER_LEVEL", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "RATING_GROUP_LEVEL", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "SPONSORED_CONNECTIVITY_LEVEL", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Resource-Allocation-Notification */
+		{
+			struct dict_avp_data data = {
+				1063,	/* Code */
+				10415,	/* Vendor */
+				"Resource-Allocation-Notification",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Resource-Allocation-Notification)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "ENABLE_NOTIFICATION", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Resource-Release-Notification */
+		{
+			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, "3GPP/Enumerated(Resource-Release-Notification)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "ENABLE_NOTIFICATION", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			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);
+		};
+		/* 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-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-Failure-Code */
+		{
+			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);
+		};
+		/* 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);
+		};
+		/* 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);
+		};
+		/* Rule-Failure-Code */
+		{
+			struct dict_avp_data data = {
+				1031,	/* Code */
+				10415,	/* Vendor */
+				"Rule-Failure-Code",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Rule-Failure-Code)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UNKNOWN_RULE_NAME", { .i32=1 }};
+			struct dict_enumval_data        t_2 = { "RESOURCE_ALLOCATION_FAILURE", { .i32=10 }};
+			struct dict_enumval_data        t_3 = { "UNSUCCESSFUL_QOS_VALIDATION", { .i32=11 }};
+			struct dict_enumval_data        t_4 = { "INCORRECT_FLOW_INFORMATION", { .i32=12 }};
+			struct dict_enumval_data        t_5 = { "PS_TO_CS_HANDOVER", { .i32=13 }};
+			struct dict_enumval_data        t_6 = { "TDF_APPLICATION_IDENTIFIER_ERROR", { .i32=14 }};
+			struct dict_enumval_data        t_7 = { "NO_BEARER_BOUND", { .i32=15 }};
+			struct dict_enumval_data        t_8 = { "FILTER_RESTRICTIONS", { .i32=16 }};
+			struct dict_enumval_data        t_9 = { "AN_GW_FAILED", { .i32=17 }};
+			struct dict_enumval_data        t_10 = { "MISSING_REDIRECT_SERVER_ADDRESS", { .i32=18 }};
+			struct dict_enumval_data        t_11 = { "CM_END_USER_SERVICE_DENIED", { .i32=19 }};
+			struct dict_enumval_data        t_12 = { "RATING_GROUP_ERROR", { .i32=2 }};
+			struct dict_enumval_data        t_13 = { "CM_CREDIT_CONTROL_NOT_APPLICABLE", { .i32=20 }};
+			struct dict_enumval_data        t_14 = { "CM_AUTHORIZATION_REJECTED", { .i32=21 }};
+			struct dict_enumval_data        t_15 = { "CM_USER_UNKNOWN", { .i32=22 }};
+			struct dict_enumval_data        t_16 = { "CM_RATING_FAILED", { .i32=23 }};
+			struct dict_enumval_data        t_17 = { "ROUTING_RULE_REJECTION", { .i32=24 }};
+			struct dict_enumval_data        t_18 = { "NO_NBIFOM_SUPPORT", { .i32=25 }};
+			struct dict_enumval_data        t_19 = { "SERVICE_IDENTIFIER_ERROR", { .i32=3 }};
+			struct dict_enumval_data        t_20 = { "GW_PCEF_MALFUNCTION", { .i32=4 }};
+			struct dict_enumval_data        t_21 = { "RESOURCES_LIMITATION", { .i32=5 }};
+			struct dict_enumval_data        t_22 = { "MAX_NR_BEARERS_REACHED", { .i32=6 }};
+			struct dict_enumval_data        t_23 = { "UNKNOWN_BEARER_ID", { .i32=7 }};
+			struct dict_enumval_data        t_24 = { "MISSING_BEARER_ID", { .i32=8 }};
+			struct dict_enumval_data        t_25 = { "MISSING_FLOW_INFORMATION", { .i32=9 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_6, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_7, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_8, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_9, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_10, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_11, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_12, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_13, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_14, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_15, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_16, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_17, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_18, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_19, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_20, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_21, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_22, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_23, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_24, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_25, type, NULL);
+			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);
+		};
+		/* Session-Release-Cause */
+		{
+			struct dict_avp_data data = {
+				1045,	/* Code */
+				10415,	/* Vendor */
+				"Session-Release-Cause",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Release-Cause)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UNSPECIFIED_REASON", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "UE_SUBSCRIPTION_REASON", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "INSUFFICIENT_SERVER_RESOURCES", { .i32=2 }};
+			struct dict_enumval_data        t_4 = { "IP_CAN_SESSION_TERMINATION", { .i32=3 }};
+			struct dict_enumval_data        t_5 = { "UE_IP_ADDRESS_RELEASE", { .i32=4 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_4, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_5, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* TCP-Source-Port */
+		{
+			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-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);
+		};
+		/* 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);
+		};
+		/* Traffic-Steering-Policy-Identifier-DL */
+		{
+			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 */
+		{
+			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 */
+		{
+			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);
+		};
+		/* 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-Level */
+		{
+			struct dict_avp_data data = {
+				1068,	/* Code */
+				10415,	/* Vendor */
+				"Usage-Monitoring-Level",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Level)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "SESSION_LEVEL", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "PCC_RULE_LEVEL", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "ADC_RULE_LEVEL", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Usage-Monitoring-Report */
+		{
+			struct dict_avp_data data = {
+				1069,	/* Code */
+				10415,	/* Vendor */
+				"Usage-Monitoring-Report",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Report)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "USAGE_MONITORING_REPORT_REQUIRED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Usage-Monitoring-Support */
+		{
+			struct dict_avp_data data = {
+				1070,	/* Code */
+				10415,	/* Vendor */
+				"Usage-Monitoring-Support",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Usage-Monitoring-Support)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "USAGE_MONITORING_DISABLED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* User-Location-Info-Time */
+		{
+			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 */
+		{
+			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);
+		};
+		/* 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);
+		};
+		/* Session-Linking-Indicator */
+		{
+			struct dict_avp_data data = {
+				1064,	/* Code */
+				10415,	/* Vendor */
+				"Session-Linking-Indicator",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(Session-Linking-Indicator)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "UE_ONLY", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "RESERVED", { .i32=1 }};
+			struct dict_enumval_data        t_3 = { "UE_NW", { .i32=2 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_3, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, 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 | AVP_FLAG_MANDATORY,	/* 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 | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_OCTETSTRING	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* Request-Type */
+		{
+			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);
+		};
+		/* CS-Service-QoS-Request-Identifier */
+		{
+			struct dict_avp_data data = {
+				2807,	/* Code */
+				10415,	/* Vendor */
+				"CS-Service-QoS-Request-Identifier",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_OCTETSTRING	/* base type of data */
+			};
+			CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+		};
+		/* CS-Service-QoS-Request-Operation */
+		{
+			struct dict_avp_data data = {
+				2808,	/* Code */
+				10415,	/* Vendor */
+				"CS-Service-QoS-Request-Operation",	/* Name */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flags */
+				AVP_FLAG_VENDOR | AVP_FLAG_MANDATORY,	/* Fixed flag values */
+				AVP_TYPE_INTEGER32	/* base type of data */
+			};
+			struct dict_object        *type;
+			struct dict_type_data     tdata = { AVP_TYPE_INTEGER32, "3GPP/Enumerated(CS-Service-QoS-Request-Operation)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DELETION", { .i32=0 }};
+			struct dict_enumval_data        t_2 = { "MODIFICATION", { .i32=1 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_ENUMVAL, &t_2, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* CS-Service-Resource-Failure-Cause */
+		{
+			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, "3GPP/Enumerated(CS-Service-Resource-Failure-Cause)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "RESOURCE_RELEASED", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* CS-Service-Resource-Result-Operation */
+		{
+			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, "3GPP/Enumerated(CS-Service-Resource-Result-Operation)", NULL, NULL, NULL };
+			struct dict_enumval_data        t_1 = { "DELETION", { .i32=0 }};
+			/* Create the Enumerated type, and then the AVP */
+			CHECK_dict_new( DICT_TYPE, &tdata, NULL, &type);
+			CHECK_dict_new( DICT_ENUMVAL, &t_1, type, NULL);
+			CHECK_dict_new( DICT_AVP, &data, type, NULL);
+		};
+		/* Charging-Rule-Remove */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* QoS-Rule-Report */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Redirect-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* PRA-Remove */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Flow-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Tunnel-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* TDF-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Routing-Rule-Remove */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* CS-Service-Resource-Report */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Presence-Reporting-Area-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Conditional-APN-Aggregate-Max-Bitrate */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Access-Network-Charging-Identifier-Gx */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Allocation-Retention-Priority */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* QoS-Rule-Remove */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Routing-Rule-Report */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* TFT-Packet-Filter-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Fixed-User-Location-Info */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Default-QoS-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Packet-Filter-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Routing-Filter */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* ADC-Rule-Remove */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* QoS-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* PRA-Install */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Routing-Rule-Definition */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Default-EPS-Bearer-QoS */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* CoA-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Application-Detection-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Conditional-Policy-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Charging-Rule-Definition */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Routing-Rule-Install */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* ADC-Rule-Definition */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* ADC-Rule-Report */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* QoS-Rule-Definition */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Charging-Rule-Report */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Event-Report-Indication */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Charging-Rule-Install */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* QoS-Rule-Install */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* ADC-Rule-Install */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+		/* Usage-Monitoring-Information */
+		{
+			/* Grouped */
+			struct dict_object * avp;
+			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, &avp);
+		}
+
+	
+   }
+
+   /* Commands section */
+   {
+
+   }
+
+   return 0;
+}
+
+static int dict_ts29212_avps_load_rules(char * conffile)
+{
+   /* Grouped AVP section */
+   {
+	  /* Charging-Rule-Remove */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Charging-Rule-Remove"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Required-Access-Info"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Resource-Release-Notification"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* QoS-Rule-Report */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "QoS-Rule-Report"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "PCC-Rule-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Failure-Code"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Content-Version"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Redirect-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Redirect-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Redirect-Support"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Redirect-Address-Type"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Redirect-Server-Address"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* PRA-Remove */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "PRA-Remove"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Identifier"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Flow-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Flow-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Description"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Packet-Filter-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Packet-Filter-Usage"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ToS-Traffic-Class"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Security-Parameter-Index"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Label"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Direction"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Identifier"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Tunnel-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Tunnel-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Tunnel-Header-Length"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* TDF-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "TDF-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Destination-Realm"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Destination-Host"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TDF-IP-Address"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Routing-Rule-Remove */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Routing-Rule-Remove"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Identifier"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* CS-Service-Resource-Report */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "CS-Service-Resource-Report"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "CS-Service-QoS-Request-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "CS-Service-Resource-Result-Operation"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "CS-Service-Resource-Failure-Cause"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Presence-Reporting-Area-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Elements-List"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Conditional-APN-Aggregate-Max-Bitrate */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Conditional-APN-Aggregate-Max-Bitrate"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .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 },
+			{ { .avp_vendor = 10415, .avp_name = "IP-CAN-Type"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "RAT-Type"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Access-Network-Charging-Identifier-Gx */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Gx"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Value"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "IP-CAN-Session-Charging-Scope"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Allocation-Retention-Priority */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Allocation-Retention-Priority"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &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 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* QoS-Rule-Remove */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "QoS-Rule-Remove"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Required-Access-Info"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Routing-Rule-Report */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Routing-Rule-Report"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "PCC-Rule-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Failure-Code"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* TFT-Packet-Filter-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "TFT-Packet-Filter-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TFT-Filter"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ToS-Traffic-Class"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Security-Parameter-Index"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Label"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Direction"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Fixed-User-Location-Info */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Fixed-User-Location-Info"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "SSID"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "BSSID"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 13019, .avp_name = "Logical-Access-Id"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 13019, .avp_name = "Physical-Access-Id"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Default-QoS-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Default-QoS-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &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 = "Default-QoS-Name"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Packet-Filter-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Packet-Filter-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Packet-Filter-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Packet-Filter-Content"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ToS-Traffic-Class"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Security-Parameter-Index"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Label"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Direction"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Routing-Filter */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Routing-Filter"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Description"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Direction"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ToS-Traffic-Class"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Security-Parameter-Index"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Label"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* ADC-Rule-Remove */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "ADC-Rule-Remove"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* QoS-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "QoS-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &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 },
+			{ { .avp_vendor = 10415, .avp_name = "Conditional-APN-Aggregate-Max-Bitrate"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* PRA-Install */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "PRA-Install"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Information"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Routing-Rule-Definition */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Routing-Rule-Definition"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Identifier"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Filter"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Routing-IP-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "IP-CAN-Type"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Default-EPS-Bearer-QoS */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Default-EPS-Bearer-QoS"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Class-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Allocation-Retention-Priority"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* CoA-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "CoA-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Tunnel-Information"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "CoA-IP-Address"}, RULE_REQUIRED, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Application-Detection-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Application-Detection-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Application-Identifier"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Application-Instance-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Information"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Conditional-Policy-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Conditional-Policy-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Execution-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Default-EPS-Bearer-QoS"}, 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 },
+			{ { .avp_vendor = 10415, .avp_name = "Conditional-APN-Aggregate-Max-Bitrate"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Charging-Rule-Definition */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Charging-Rule-Definition"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Name"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Service-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Rating-Group"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Default-Bearer-Indication"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Application-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "PS-to-CS-Session-Continuity"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Reporting-Level"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Online"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Offline"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Metering-Method"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "AF-Charging-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flows"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Monitoring-Key"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Redirect-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Mute-Notification"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "AF-Signalling-Protocol"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sponsor-Identity"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Application-Service-Provider-Identity"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Required-Access-Info"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sharing-Key-DL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sharing-Key-UL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Traffic-Steering-Policy-Identifier-DL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Traffic-Steering-Policy-Identifier-UL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Content-Version"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Routing-Rule-Install */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Routing-Rule-Install"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Routing-Rule-Definition"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* ADC-Rule-Definition */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "ADC-Rule-Definition"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Name"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "TDF-Application-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Service-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Rating-Group"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Reporting-Level"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Online"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Offline"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Metering-Method"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Monitoring-Key"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sponsor-Identity"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Application-Service-Provider-Identity"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Redirect-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Mute-Notification"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Traffic-Steering-Policy-Identifier-DL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Traffic-Steering-Policy-Identifier-UL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ToS-Traffic-Class"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* ADC-Rule-Report */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "ADC-Rule-Report"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "PCC-Rule-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Failure-Code"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Final-Unit-Indication"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* QoS-Rule-Definition */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "QoS-Rule-Definition"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Name"}, RULE_REQUIRED, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Flow-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Precedence"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Required-Access-Info"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sharing-Key-DL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Sharing-Key-UL"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Content-Version"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Charging-Rule-Report */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Charging-Rule-Report"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Bearer-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "PCC-Rule-Status"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Failure-Code"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Final-Unit-Indication"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "RAN-NAS-Release-Cause"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Content-Version"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Event-Report-Indication */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Event-Report-Indication"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "AN-Trusted"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Event-Trigger"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "User-CSG-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "IP-CAN-Type"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "AN-GW-Address"}, RULE_OPTIONAL, 0, 2 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-Ipv6-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-MCC-MNC"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Framed-IP-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "RAT-Type"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "RAI"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-User-Location-Info"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Trace-Data"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Trace-Reference"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 5535, .avp_name = "3GPP2-BSID"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-MS-TimeZone"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Routing-IP-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "UE-Local-IP-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "HeNB-Local-IP-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "UDP-Source-Port"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Presence-Reporting-Area-Information"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Charging-Rule-Install */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Charging-Rule-Install"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Definition"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Bearer-Identifier"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Monitoring-Flags"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Activation-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Deactivation-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Resource-Allocation-Notification"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Charging-Correlation-Indicator"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "IP-CAN-Type"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* QoS-Rule-Install */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "QoS-Rule-Install"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Definition"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "QoS-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Tunnel-Information"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Value"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Resource-Allocation-Notification"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Activation-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Deactivation-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-GGSN-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "3GPP-GGSN-Ipv6-Address"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "AN-GW-Address"}, RULE_OPTIONAL, 0, 2 },
+			{ { .avp_vendor = 10415, .avp_name = "UDP-Source-Port"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* ADC-Rule-Install */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "ADC-Rule-Install"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Definition"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "ADC-Rule-Base-Name"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Monitoring-Flags"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Activation-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Rule-Deactivation-Time"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+	  /* Usage-Monitoring-Information */
+	  {
+		/* Grouped */
+		struct dict_object * avp;
+		struct dict_avp_request avp_vendor_plus_name =  { .avp_vendor = 10415, .avp_name = "Usage-Monitoring-Information"};
+		CHECK_dict_search(DICT_AVP,  AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+		struct local_rules_definition rules[] =
+		{
+			{ { .avp_vendor = 10415, .avp_name = "Monitoring-Key"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 0, .avp_name = "Granted-Service-Unit"}, RULE_OPTIONAL, 0, 2 },
+			{ { .avp_vendor = 0, .avp_name = "Used-Service-Unit"}, RULE_OPTIONAL, 0, 2 },
+			{ { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Usage-Monitoring-Level"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Usage-Monitoring-Report"}, RULE_OPTIONAL, -1, -1 },
+			{ { .avp_vendor = 10415, .avp_name = "Usage-Monitoring-Support"}, RULE_OPTIONAL, -1, -1 }
+		};
+		PARSE_loc_rules( rules, avp );
+	  }
+
+   }	
+
+   /* Commands section */
+   {
+
+   }
+
+   LOG_D( "Extension 'Dictionary definitions for ts29212_avps (e30)' initialized");
+   return 0;
+}
+
+int dict_entry(char * conffile)
+{
+	dict_ts29212_avps_load_defs(conffile);
+	return dict_ts29212_avps_load_rules(conffile);
+}
+
+const char* dict_ts29212_avps_proto_ver(char * conffile) {
+	return ts29212_avps_proto_ver;
+}
+
+const double dict_ts29212_avps_gen_ts(char * conffile) {
+	return ts29212_avps_gen_date;
+}
+
+EXTENSION_ENTRY2("dict_ts29212_avps", dict_ts29212_avps_load_defs, dict_ts29212_avps_load_rules, "dict_ts32299_avps", "dict_ts29273_avps", "dict_ts29214_avps", "dict_ts29272_avps", "dict_ts29229_avps", "dict_rfc4006bis_avps", "dict_ts29061_avps", "dict_draftload_avps", "dict_rfc7683_avps", "dict_rfc7155_avps", "dict_etsi283034_avps", "dict_3gpp2_avps", "dict_rfc7944_avps");
+
+
+
diff --git a/extensions/dict_ts29212_avps/ts29212_avps.did b/extensions/dict_ts29212_avps/ts29212_avps.did
new file mode 100644
index 0000000..eb5c09b
--- /dev/null
+++ b/extensions/dict_ts29212_avps/ts29212_avps.did
@@ -0,0 +1,37 @@
+dict_rfc6942_avps
+dict_ts29468_avps
+dict_ts29154_avps
+dict_ts29214_avps
+dict_ts29215_avps
+dict_ts29217_avps
+dict_3gpp2_avps
+dict_ts29343_avps
+dict_ts29338_avps
+dict_ts29128_avps
+dict_ts29344_avps
+dict_ts29345_avps
+dict_ts32299_avps
+dict_rfc6734_avps
+dict_rfc5778_avps
+dict_rfc5580_avps
+dict_rfc4072_avps
+dict_ts29273_avps
+dict_ts29173_avps
+dict_ts29337_avps
+dict_etsi283034_avps
+dict_rfc4590_avps
+dict_ts29229_avps
+dict_draftload_avps
+dict_ts29329_avps
+dict_ts29368_avps
+dict_ts29336_avps
+dict_ts29061_avps
+dict_rfc5447_avps
+dict_ts29272_avps
+dict_rfc7683_avps
+dict_rfc7944_avps
+dict_rfc5777_avps
+dict_rfc4006bis_avps
+dict_rfc4004_avps
+dict_rfc7155_avps
+dict_ts29212_avps