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