Initial commit
Change-Id: I6a4444e3c193dae437cd7929f4c39aba7b749efa
diff --git a/extensions/dict_rfc5777_avps/CMakeLists.txt b/extensions/dict_rfc5777_avps/CMakeLists.txt
new file mode 100644
index 0000000..d0573c4
--- /dev/null
+++ b/extensions/dict_rfc5777_avps/CMakeLists.txt
@@ -0,0 +1,16 @@
+# The dict_rfc5777_avps extension
+PROJECT("dict_rfc5777_avps library generated by FdGen " C)
+
+# Compile as a module
+FD_ADD_EXTENSION(dict_rfc5777_avps dict_rfc5777_avps.c)
+
+
+####
+## INSTALL section ##
+
+INSTALL(TARGETS dict_rfc5777_avps
+ LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
+COMPONENT freeDiameter-dictionary-RFC5777_AVPS)
+
+
+
diff --git a/extensions/dict_rfc5777_avps/dict_rfc5777_avps.c b/extensions/dict_rfc5777_avps/dict_rfc5777_avps.c
new file mode 100644
index 0000000..f287963
--- /dev/null
+++ b/extensions/dict_rfc5777_avps/dict_rfc5777_avps.c
@@ -0,0 +1,2077 @@
+/*
+* 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 rfc5777_avps.
+ */
+#include <freeDiameter/extension.h>
+
+#define PROTO_VER "unspecified"
+#define GEN_DATE 1506697143.56
+
+const char *rfc5777_avps_proto_ver = PROTO_VER;
+const double rfc5777_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_rfc5777_avps_load_defs(char * conffile)
+{
+ TRACE_ENTRY("%p", conffile);
+
+ /* 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);
+ /* Filter-Rule-Precedence */
+ {
+ struct dict_avp_data data = {
+ 510, /* Code */
+ 0, /* Vendor */
+ "Filter-Rule-Precedence", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Classifier-ID */
+ {
+ struct dict_avp_data data = {
+ 512, /* Code */
+ 0, /* Vendor */
+ "Classifier-ID", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Protocol */
+ {
+ struct dict_avp_data data = {
+ 513, /* Code */
+ 0, /* Vendor */
+ "Protocol", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Protocol)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "HOPOPT", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "ICMP", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "IGMP", { .i32=2 }};
+ struct dict_enumval_data t_4 = { "GGP", { .i32=3 }};
+ struct dict_enumval_data t_5 = { "IPv4", { .i32=4 }};
+ struct dict_enumval_data t_6 = { "ST", { .i32=5 }};
+ struct dict_enumval_data t_7 = { "TCP", { .i32=6 }};
+ struct dict_enumval_data t_8 = { "CBT", { .i32=7 }};
+ struct dict_enumval_data t_9 = { "EGP", { .i32=8 }};
+ struct dict_enumval_data t_10 = { "IGP", { .i32=9 }};
+ struct dict_enumval_data t_11 = { "BBN-RCC-MON", { .i32=10 }};
+ struct dict_enumval_data t_12 = { "NVP-II", { .i32=11 }};
+ struct dict_enumval_data t_13 = { "PUP", { .i32=12 }};
+ struct dict_enumval_data t_14 = { "ARGUS", { .i32=13 }};
+ struct dict_enumval_data t_15 = { "EMCON", { .i32=14 }};
+ struct dict_enumval_data t_16 = { "XNET", { .i32=15 }};
+ struct dict_enumval_data t_17 = { "CHAOS", { .i32=16 }};
+ struct dict_enumval_data t_18 = { "UDP", { .i32=17 }};
+ struct dict_enumval_data t_19 = { "MUX", { .i32=18 }};
+ struct dict_enumval_data t_20 = { "DCN-MEAS", { .i32=19 }};
+ struct dict_enumval_data t_21 = { "HMP", { .i32=20 }};
+ struct dict_enumval_data t_22 = { "PRM", { .i32=21 }};
+ struct dict_enumval_data t_23 = { "XNS-IDP", { .i32=22 }};
+ struct dict_enumval_data t_24 = { "TRUNK-1", { .i32=23 }};
+ struct dict_enumval_data t_25 = { "TRUNK-2", { .i32=24 }};
+ struct dict_enumval_data t_26 = { "LEAF-1", { .i32=25 }};
+ struct dict_enumval_data t_27 = { "LEAF-2", { .i32=26 }};
+ struct dict_enumval_data t_28 = { "RDP", { .i32=27 }};
+ struct dict_enumval_data t_29 = { "IRTP", { .i32=28 }};
+ struct dict_enumval_data t_30 = { "ISO-TP4", { .i32=29 }};
+ struct dict_enumval_data t_31 = { "NETBLT", { .i32=30 }};
+ struct dict_enumval_data t_32 = { "MFE-NSP", { .i32=31 }};
+ struct dict_enumval_data t_33 = { "MERIT-INP", { .i32=32 }};
+ struct dict_enumval_data t_34 = { "DCCP", { .i32=33 }};
+ struct dict_enumval_data t_35 = { "3PC", { .i32=34 }};
+ struct dict_enumval_data t_36 = { "IDPR", { .i32=35 }};
+ struct dict_enumval_data t_37 = { "XTP", { .i32=36 }};
+ struct dict_enumval_data t_38 = { "DDP", { .i32=37 }};
+ struct dict_enumval_data t_39 = { "IDPR-CMTP", { .i32=38 }};
+ struct dict_enumval_data t_40 = { "TPplusplus", { .i32=39 }};
+ struct dict_enumval_data t_41 = { "IL", { .i32=40 }};
+ struct dict_enumval_data t_42 = { "IPv6", { .i32=41 }};
+ struct dict_enumval_data t_43 = { "SDRP", { .i32=42 }};
+ struct dict_enumval_data t_44 = { "IPv6-Route", { .i32=43 }};
+ struct dict_enumval_data t_45 = { "IPv6-Frag", { .i32=44 }};
+ struct dict_enumval_data t_46 = { "IDRP", { .i32=45 }};
+ struct dict_enumval_data t_47 = { "RSVP", { .i32=46 }};
+ struct dict_enumval_data t_48 = { "GRE", { .i32=47 }};
+ struct dict_enumval_data t_49 = { "DSR", { .i32=48 }};
+ struct dict_enumval_data t_50 = { "BNA", { .i32=49 }};
+ struct dict_enumval_data t_51 = { "ESP", { .i32=50 }};
+ struct dict_enumval_data t_52 = { "AH", { .i32=51 }};
+ struct dict_enumval_data t_53 = { "I-NLSP", { .i32=52 }};
+ struct dict_enumval_data t_54 = { "SWIPE", { .i32=53 }};
+ struct dict_enumval_data t_55 = { "NARP", { .i32=54 }};
+ struct dict_enumval_data t_56 = { "MOBILE", { .i32=55 }};
+ struct dict_enumval_data t_57 = { "TLSP", { .i32=56 }};
+ struct dict_enumval_data t_58 = { "SKIP", { .i32=57 }};
+ struct dict_enumval_data t_59 = { "IPv6-ICMP", { .i32=58 }};
+ struct dict_enumval_data t_60 = { "IPv6-NoNxt", { .i32=59 }};
+ struct dict_enumval_data t_61 = { "IPv6-Opts", { .i32=60 }};
+ struct dict_enumval_data t_62 = { "CFTP", { .i32=62 }};
+ struct dict_enumval_data t_63 = { "SAT-EXPAK", { .i32=64 }};
+ struct dict_enumval_data t_64 = { "KRYPTOLAN", { .i32=65 }};
+ struct dict_enumval_data t_65 = { "RVD", { .i32=66 }};
+ struct dict_enumval_data t_66 = { "IPPC", { .i32=67 }};
+ struct dict_enumval_data t_67 = { "SAT-MON", { .i32=69 }};
+ struct dict_enumval_data t_68 = { "VISA", { .i32=70 }};
+ struct dict_enumval_data t_69 = { "IPCV", { .i32=71 }};
+ struct dict_enumval_data t_70 = { "CPNX", { .i32=72 }};
+ struct dict_enumval_data t_71 = { "CPHB", { .i32=73 }};
+ struct dict_enumval_data t_72 = { "WSN", { .i32=74 }};
+ struct dict_enumval_data t_73 = { "PVP", { .i32=75 }};
+ struct dict_enumval_data t_74 = { "BR-SAT-MON", { .i32=76 }};
+ struct dict_enumval_data t_75 = { "SUN-ND", { .i32=77 }};
+ struct dict_enumval_data t_76 = { "WB-MON", { .i32=78 }};
+ struct dict_enumval_data t_77 = { "WB-EXPAK", { .i32=79 }};
+ struct dict_enumval_data t_78 = { "ISO-IP", { .i32=80 }};
+ struct dict_enumval_data t_79 = { "VMTP", { .i32=81 }};
+ struct dict_enumval_data t_80 = { "SECURE-VMTP", { .i32=82 }};
+ struct dict_enumval_data t_81 = { "VINES", { .i32=83 }};
+ struct dict_enumval_data t_82 = { "TTP", { .i32=84 }};
+ struct dict_enumval_data t_83 = { "IPTM", { .i32=84 }};
+ struct dict_enumval_data t_84 = { "NSFNET-IGP", { .i32=85 }};
+ struct dict_enumval_data t_85 = { "DGP", { .i32=86 }};
+ struct dict_enumval_data t_86 = { "TCF", { .i32=87 }};
+ struct dict_enumval_data t_87 = { "EIGRP", { .i32=88 }};
+ struct dict_enumval_data t_88 = { "OSPFIGP", { .i32=89 }};
+ struct dict_enumval_data t_89 = { "Sprite-RPC", { .i32=90 }};
+ struct dict_enumval_data t_90 = { "LARP", { .i32=91 }};
+ struct dict_enumval_data t_91 = { "MTP", { .i32=92 }};
+ struct dict_enumval_data t_92 = { "AX_25", { .i32=93 }};
+ struct dict_enumval_data t_93 = { "IPIP", { .i32=94 }};
+ struct dict_enumval_data t_94 = { "MICP", { .i32=95 }};
+ struct dict_enumval_data t_95 = { "SCC-SP", { .i32=96 }};
+ struct dict_enumval_data t_96 = { "ETHERIP", { .i32=97 }};
+ struct dict_enumval_data t_97 = { "ENCAP", { .i32=98 }};
+ struct dict_enumval_data t_98 = { "GMTP", { .i32=100 }};
+ struct dict_enumval_data t_99 = { "IFMP", { .i32=101 }};
+ struct dict_enumval_data t_100 = { "PNNI", { .i32=102 }};
+ struct dict_enumval_data t_101 = { "PIM", { .i32=103 }};
+ struct dict_enumval_data t_102 = { "ARIS", { .i32=104 }};
+ struct dict_enumval_data t_103 = { "SCPS", { .i32=105 }};
+ struct dict_enumval_data t_104 = { "QNX", { .i32=106 }};
+ struct dict_enumval_data t_105 = { "A_N", { .i32=107 }};
+ struct dict_enumval_data t_106 = { "IPComp", { .i32=108 }};
+ struct dict_enumval_data t_107 = { "SNP", { .i32=109 }};
+ struct dict_enumval_data t_108 = { "Compaq-Peer", { .i32=110 }};
+ struct dict_enumval_data t_109 = { "IPX-in-IP", { .i32=111 }};
+ struct dict_enumval_data t_110 = { "VRRP", { .i32=112 }};
+ struct dict_enumval_data t_111 = { "PGM", { .i32=113 }};
+ struct dict_enumval_data t_112 = { "L2TP", { .i32=115 }};
+ struct dict_enumval_data t_113 = { "DDX", { .i32=116 }};
+ struct dict_enumval_data t_114 = { "IATP", { .i32=117 }};
+ struct dict_enumval_data t_115 = { "STP", { .i32=118 }};
+ struct dict_enumval_data t_116 = { "SRP", { .i32=119 }};
+ struct dict_enumval_data t_117 = { "UTI", { .i32=120 }};
+ struct dict_enumval_data t_118 = { "SMP", { .i32=121 }};
+ struct dict_enumval_data t_119 = { "SM", { .i32=122 }};
+ struct dict_enumval_data t_120 = { "PTP", { .i32=123 }};
+ struct dict_enumval_data t_121 = { "ISISoverIPv4", { .i32=124 }};
+ struct dict_enumval_data t_122 = { "FIRE", { .i32=125 }};
+ struct dict_enumval_data t_123 = { "CRTP", { .i32=126 }};
+ struct dict_enumval_data t_124 = { "CRUDP", { .i32=127 }};
+ struct dict_enumval_data t_125 = { "SSCOPMCE", { .i32=128 }};
+ struct dict_enumval_data t_126 = { "IPLT", { .i32=129 }};
+ struct dict_enumval_data t_127 = { "SPS", { .i32=130 }};
+ struct dict_enumval_data t_128 = { "PIPE", { .i32=131 }};
+ struct dict_enumval_data t_129 = { "SCTP", { .i32=132 }};
+ struct dict_enumval_data t_130 = { "FC", { .i32=133 }};
+ struct dict_enumval_data t_131 = { "RSVP-E2E-IGNORE", { .i32=134 }};
+ struct dict_enumval_data t_132 = { "MobilityHeader", { .i32=135 }};
+ struct dict_enumval_data t_133 = { "UDPLite", { .i32=136 }};
+ struct dict_enumval_data t_134 = { "MPLS-in-IP", { .i32=137 }};
+ struct dict_enumval_data t_135 = { "manet", { .i32=138 }};
+ struct dict_enumval_data t_136 = { "HIP", { .i32=139 }};
+ struct dict_enumval_data t_137 = { "Shim6", { .i32=140 }};
+ struct dict_enumval_data t_138 = { "WESP", { .i32=141 }};
+ struct dict_enumval_data t_139 = { "ROHC", { .i32=142 }};
+ struct dict_enumval_data t_140 = { "Reserved", { .i32=255 }};
+ /* 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_ENUMVAL, &t_50, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_51, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_52, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_53, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_54, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_55, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_56, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_57, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_58, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_59, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_60, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_61, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_62, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_63, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_64, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_65, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_66, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_67, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_68, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_69, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_70, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_71, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_72, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_73, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_74, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_75, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_76, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_77, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_78, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_79, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_80, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_81, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_82, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_83, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_84, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_85, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_86, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_87, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_88, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_89, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_90, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_91, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_92, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_93, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_94, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_95, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_96, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_97, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_98, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_99, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_100, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_101, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_102, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_103, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_104, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_105, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_106, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_107, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_108, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_109, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_110, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_111, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_112, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_113, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_114, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_115, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_116, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_117, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_118, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_119, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_120, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_121, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_122, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_123, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_124, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_125, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_126, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_127, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_128, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_129, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_130, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_131, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_132, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_133, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_134, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_135, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_136, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_137, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_138, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_139, type, NULL);
+ CHECK_dict_new( DICT_ENUMVAL, &t_140, type, NULL);
+ CHECK_dict_new( DICT_AVP, &data, type, NULL);
+ };
+ /* Direction */
+ {
+ struct dict_avp_data data = {
+ 514, /* Code */
+ 0, /* Vendor */
+ "Direction", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Direction)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "IN", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "OUT", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "BOTH", { .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);
+ };
+ /* Negated */
+ {
+ struct dict_avp_data data = {
+ 517, /* Code */
+ 0, /* Vendor */
+ "Negated", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Negated)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "False", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "True", { .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);
+ };
+ /* IP-Address */
+ {
+ struct dict_avp_data data = {
+ 518, /* Code */
+ 0, /* Vendor */
+ "IP-Address", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
+ };
+ /* IP-Address-Start */
+ {
+ struct dict_avp_data data = {
+ 520, /* Code */
+ 0, /* Vendor */
+ "IP-Address-Start", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
+ };
+ /* IP-Address-End */
+ {
+ struct dict_avp_data data = {
+ 521, /* Code */
+ 0, /* Vendor */
+ "IP-Address-End", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, Address_type, NULL);
+ };
+ /* IP-Bit-Mask-Width */
+ {
+ struct dict_avp_data data = {
+ 523, /* Code */
+ 0, /* Vendor */
+ "IP-Bit-Mask-Width", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* MAC-Address */
+ {
+ struct dict_avp_data data = {
+ 524, /* Code */
+ 0, /* Vendor */
+ "MAC-Address", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* MAC-Address-Mask-Pattern */
+ {
+ struct dict_avp_data data = {
+ 526, /* Code */
+ 0, /* Vendor */
+ "MAC-Address-Mask-Pattern", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* EUI64-Address */
+ {
+ struct dict_avp_data data = {
+ 527, /* Code */
+ 0, /* Vendor */
+ "EUI64-Address", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* EUI64-Address-Mask-Pattern */
+ {
+ struct dict_avp_data data = {
+ 529, /* Code */
+ 0, /* Vendor */
+ "EUI64-Address-Mask-Pattern", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Port */
+ {
+ struct dict_avp_data data = {
+ 530, /* Code */
+ 0, /* Vendor */
+ "Port", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Port-Start */
+ {
+ struct dict_avp_data data = {
+ 532, /* Code */
+ 0, /* Vendor */
+ "Port-Start", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Port-End */
+ {
+ struct dict_avp_data data = {
+ 533, /* Code */
+ 0, /* Vendor */
+ "Port-End", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Use-Assigned-Address */
+ {
+ struct dict_avp_data data = {
+ 534, /* Code */
+ 0, /* Vendor */
+ "Use-Assigned-Address", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Use-Assigned-Address)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "False", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "True", { .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);
+ };
+ /* Diffserv-Code-Point */
+ {
+ struct dict_avp_data data = {
+ 535, /* Code */
+ 0, /* Vendor */
+ "Diffserv-Code-Point", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Diffserv-Code-Point)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "CS0", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "CS1", { .i32=8 }};
+ struct dict_enumval_data t_3 = { "CS2", { .i32=16 }};
+ struct dict_enumval_data t_4 = { "CS3", { .i32=24 }};
+ struct dict_enumval_data t_5 = { "CS4", { .i32=32 }};
+ struct dict_enumval_data t_6 = { "CS5", { .i32=40 }};
+ struct dict_enumval_data t_7 = { "CS6", { .i32=48 }};
+ struct dict_enumval_data t_8 = { "CS7", { .i32=56 }};
+ struct dict_enumval_data t_9 = { "AF11", { .i32=10 }};
+ struct dict_enumval_data t_10 = { "AF12", { .i32=12 }};
+ struct dict_enumval_data t_11 = { "AF13", { .i32=14 }};
+ struct dict_enumval_data t_12 = { "AF21", { .i32=18 }};
+ struct dict_enumval_data t_13 = { "AF22", { .i32=20 }};
+ struct dict_enumval_data t_14 = { "AF23", { .i32=22 }};
+ struct dict_enumval_data t_15 = { "AF31", { .i32=26 }};
+ struct dict_enumval_data t_16 = { "AF32", { .i32=28 }};
+ struct dict_enumval_data t_17 = { "AF33", { .i32=30 }};
+ struct dict_enumval_data t_18 = { "AF41", { .i32=34 }};
+ struct dict_enumval_data t_19 = { "AF42", { .i32=36 }};
+ struct dict_enumval_data t_20 = { "AF43", { .i32=38 }};
+ struct dict_enumval_data t_21 = { "EF", { .i32=46 }};
+ struct dict_enumval_data t_22 = { "VOICE_ADMIT", { .i32=44 }};
+ /* 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_AVP, &data, type, NULL);
+ };
+ /* Fragmentation-Flag */
+ {
+ struct dict_avp_data data = {
+ 536, /* Code */
+ 0, /* Vendor */
+ "Fragmentation-Flag", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Fragmentation-Flag)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "DF", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "MF", { .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);
+ };
+ /* IP-Option-Type */
+ {
+ struct dict_avp_data data = {
+ 538, /* Code */
+ 0, /* Vendor */
+ "IP-Option-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(IP-Option-Type)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "EOOL", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "NOP", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "SEC", { .i32=2 }};
+ struct dict_enumval_data t_4 = { "LSR", { .i32=3 }};
+ struct dict_enumval_data t_5 = { "TS", { .i32=4 }};
+ struct dict_enumval_data t_6 = { "E-SEC", { .i32=5 }};
+ struct dict_enumval_data t_7 = { "CIPSO", { .i32=6 }};
+ struct dict_enumval_data t_8 = { "RR", { .i32=7 }};
+ struct dict_enumval_data t_9 = { "SID", { .i32=8 }};
+ struct dict_enumval_data t_10 = { "SSR", { .i32=9 }};
+ struct dict_enumval_data t_11 = { "ZSU", { .i32=10 }};
+ struct dict_enumval_data t_12 = { "MTUP", { .i32=11 }};
+ struct dict_enumval_data t_13 = { "MTUR", { .i32=12 }};
+ struct dict_enumval_data t_14 = { "FINN", { .i32=13 }};
+ struct dict_enumval_data t_15 = { "VISA", { .i32=14 }};
+ struct dict_enumval_data t_16 = { "ENCODE", { .i32=15 }};
+ struct dict_enumval_data t_17 = { "IMITD", { .i32=16 }};
+ struct dict_enumval_data t_18 = { "EIP", { .i32=17 }};
+ struct dict_enumval_data t_19 = { "TR", { .i32=18 }};
+ struct dict_enumval_data t_20 = { "ADDEXT", { .i32=19 }};
+ struct dict_enumval_data t_21 = { "RTRALT", { .i32=20 }};
+ struct dict_enumval_data t_22 = { "SDB", { .i32=21 }};
+ struct dict_enumval_data t_23 = { "DPS", { .i32=23 }};
+ struct dict_enumval_data t_24 = { "UMP", { .i32=24 }};
+ struct dict_enumval_data t_25 = { "QS", { .i32=25 }};
+ struct dict_enumval_data t_26 = { "EXP", { .i32=30 }};
+ /* 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_AVP, &data, type, NULL);
+ };
+ /* IP-Option-Value */
+ {
+ struct dict_avp_data data = {
+ 539, /* Code */
+ 0, /* Vendor */
+ "IP-Option-Value", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* TCP-Option-Type */
+ {
+ struct dict_avp_data data = {
+ 541, /* Code */
+ 0, /* Vendor */
+ "TCP-Option-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(TCP-Option-Type)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "EOL", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "NOP", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "MAX_SEG_SZ", { .i32=2 }};
+ struct dict_enumval_data t_4 = { "Window_Scale", { .i32=3 }};
+ struct dict_enumval_data t_5 = { "SACK_Permitted", { .i32=4 }};
+ struct dict_enumval_data t_6 = { "SACK", { .i32=5 }};
+ struct dict_enumval_data t_7 = { "Echo", { .i32=6 }};
+ struct dict_enumval_data t_8 = { "Echo_Reply", { .i32=7 }};
+ struct dict_enumval_data t_9 = { "Timestamps", { .i32=8 }};
+ struct dict_enumval_data t_10 = { "PartialOrderConnectionPermitted", { .i32=9 }};
+ struct dict_enumval_data t_11 = { "PartialOrderServiceProfile", { .i32=10 }};
+ struct dict_enumval_data t_12 = { "CC", { .i32=11 }};
+ struct dict_enumval_data t_13 = { "CC_NEW", { .i32=12 }};
+ struct dict_enumval_data t_14 = { "CC_ECHO", { .i32=13 }};
+ struct dict_enumval_data t_15 = { "TCP_Alternate_Checksum_Request", { .i32=14 }};
+ struct dict_enumval_data t_16 = { "TCP_Alternate_Checksum_Data", { .i32=15 }};
+ struct dict_enumval_data t_17 = { "Skeeter", { .i32=16 }};
+ struct dict_enumval_data t_18 = { "Bubba", { .i32=17 }};
+ struct dict_enumval_data t_19 = { "Trailer_Checksum_Option", { .i32=18 }};
+ struct dict_enumval_data t_20 = { "MD5_Signature_Option", { .i32=19 }};
+ struct dict_enumval_data t_21 = { "SCPS_Capabilities", { .i32=20 }};
+ struct dict_enumval_data t_22 = { "Selective_Negative_Acknowledgements", { .i32=21 }};
+ struct dict_enumval_data t_23 = { "Record_Boundaries", { .i32=22 }};
+ struct dict_enumval_data t_24 = { "Corruption_experienced", { .i32=23 }};
+ struct dict_enumval_data t_25 = { "SNAP", { .i32=24 }};
+ struct dict_enumval_data t_26 = { "TCP_Compression_Filter", { .i32=26 }};
+ struct dict_enumval_data t_27 = { "Quick-Start_Response", { .i32=27 }};
+ struct dict_enumval_data t_28 = { "User_Timeout_Option", { .i32=28 }};
+ struct dict_enumval_data t_29 = { "TCP_Authentication_Option", { .i32=29 }};
+ struct dict_enumval_data t_30 = { "Multipath_TCP", { .i32=30 }};
+ struct dict_enumval_data t_31 = { "Reserved1", { .i32=31 }};
+ struct dict_enumval_data t_32 = { "Reserved2", { .i32=32 }};
+ struct dict_enumval_data t_33 = { "Reserved3", { .i32=33 }};
+ struct dict_enumval_data t_34 = { "TCP_Fast_Open_Cookie", { .i32=34 }};
+ struct dict_enumval_data t_35 = { "Reserved4", { .i32=69 }};
+ struct dict_enumval_data t_36 = { "Reserved5", { .i32=70 }};
+ struct dict_enumval_data t_37 = { "Reserved6", { .i32=76 }};
+ struct dict_enumval_data t_38 = { "Reserved7", { .i32=77 }};
+ struct dict_enumval_data t_39 = { "Reserved8", { .i32=78 }};
+ struct dict_enumval_data t_40 = { "RFC3692-style_Experiment_1", { .i32=253 }};
+ struct dict_enumval_data t_41 = { "RFC3692-style_Experiment_2", { .i32=254 }};
+ /* 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_AVP, &data, type, NULL);
+ };
+ /* TCP-Option-Value */
+ {
+ struct dict_avp_data data = {
+ 542, /* Code */
+ 0, /* Vendor */
+ "TCP-Option-Value", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* TCP-Flag-Type */
+ {
+ struct dict_avp_data data = {
+ 544, /* Code */
+ 0, /* Vendor */
+ "TCP-Flag-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* ICMP-Type-Number */
+ {
+ struct dict_avp_data data = {
+ 546, /* Code */
+ 0, /* Vendor */
+ "ICMP-Type-Number", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(ICMP-Type-Number)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "Echo_Reply", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "Destination_Unreachable", { .i32=3 }};
+ struct dict_enumval_data t_3 = { "Source_Quench", { .i32=4 }};
+ struct dict_enumval_data t_4 = { "Redirect", { .i32=5 }};
+ struct dict_enumval_data t_5 = { "Alternate_Host_Address", { .i32=6 }};
+ struct dict_enumval_data t_6 = { "Echo", { .i32=8 }};
+ struct dict_enumval_data t_7 = { "Router_Advertisement", { .i32=9 }};
+ struct dict_enumval_data t_8 = { "Router_Solicitation", { .i32=10 }};
+ struct dict_enumval_data t_9 = { "Time_Exceeded", { .i32=11 }};
+ struct dict_enumval_data t_10 = { "Parameter_Problem", { .i32=12 }};
+ struct dict_enumval_data t_11 = { "Timestamp", { .i32=13 }};
+ struct dict_enumval_data t_12 = { "Timestamp_Reply", { .i32=14 }};
+ struct dict_enumval_data t_13 = { "Information_Request", { .i32=15 }};
+ struct dict_enumval_data t_14 = { "Information_Reply", { .i32=16 }};
+ struct dict_enumval_data t_15 = { "Address_Mask_Request", { .i32=17 }};
+ struct dict_enumval_data t_16 = { "Address_Mask_Reply", { .i32=18 }};
+ struct dict_enumval_data t_17 = { "Traceroute", { .i32=30 }};
+ struct dict_enumval_data t_18 = { "Datagram_Conversion_Error", { .i32=31 }};
+ struct dict_enumval_data t_19 = { "Mobile_Host_Redirect", { .i32=32 }};
+ struct dict_enumval_data t_20 = { "IPv6_Where-Are-You", { .i32=33 }};
+ struct dict_enumval_data t_21 = { "IPv6_I-Am-Here", { .i32=34 }};
+ struct dict_enumval_data t_22 = { "Mobile_Registration_Request", { .i32=35 }};
+ struct dict_enumval_data t_23 = { "Mobile_Registration_Reply", { .i32=36 }};
+ struct dict_enumval_data t_24 = { "Domain_Name_Request", { .i32=37 }};
+ struct dict_enumval_data t_25 = { "Domain_Name_Reply", { .i32=38 }};
+ struct dict_enumval_data t_26 = { "SKIP", { .i32=39 }};
+ struct dict_enumval_data t_27 = { "Photuris", { .i32=40 }};
+ struct dict_enumval_data t_28 = { "ICMP_messages_utilized_by_experimental", { .i32=41 }};
+ struct dict_enumval_data t_29 = { "RFC3692-style_Experiment_1", { .i32=253 }};
+ struct dict_enumval_data t_30 = { "RFC3692-style_Experiment_2", { .i32=254 }};
+ /* 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_AVP, &data, type, NULL);
+ };
+ /* ICMP-Code */
+ {
+ struct dict_avp_data data = {
+ 547, /* Code */
+ 0, /* Vendor */
+ "ICMP-Code", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(ICMP-Code)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "Echo_Reply", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "Destination_Unreachable", { .i32=3 }};
+ struct dict_enumval_data t_3 = { "Source_Quench", { .i32=4 }};
+ struct dict_enumval_data t_4 = { "Redirect", { .i32=5 }};
+ struct dict_enumval_data t_5 = { "Alternate_Host_Address", { .i32=6 }};
+ struct dict_enumval_data t_6 = { "Echo", { .i32=8 }};
+ struct dict_enumval_data t_7 = { "Router_Advertisement", { .i32=9 }};
+ struct dict_enumval_data t_8 = { "Router_Solicitation", { .i32=10 }};
+ struct dict_enumval_data t_9 = { "Time_Exceeded", { .i32=11 }};
+ struct dict_enumval_data t_10 = { "Parameter_Problem", { .i32=12 }};
+ struct dict_enumval_data t_11 = { "Timestamp", { .i32=13 }};
+ struct dict_enumval_data t_12 = { "Timestamp_Reply", { .i32=14 }};
+ struct dict_enumval_data t_13 = { "Information_Request", { .i32=15 }};
+ struct dict_enumval_data t_14 = { "Information_Reply", { .i32=16 }};
+ struct dict_enumval_data t_15 = { "Address_Mask_Request", { .i32=17 }};
+ struct dict_enumval_data t_16 = { "Address_Mask_Reply", { .i32=18 }};
+ struct dict_enumval_data t_17 = { "Traceroute", { .i32=30 }};
+ struct dict_enumval_data t_18 = { "Datagram_Conversion_Error", { .i32=31 }};
+ struct dict_enumval_data t_19 = { "Mobile_Host_Redirect", { .i32=32 }};
+ struct dict_enumval_data t_20 = { "IPv6_Where-Are-You", { .i32=33 }};
+ struct dict_enumval_data t_21 = { "IPv6_I-Am-Here", { .i32=34 }};
+ struct dict_enumval_data t_22 = { "Mobile_Registration_Request", { .i32=35 }};
+ struct dict_enumval_data t_23 = { "Mobile_Registration_Reply", { .i32=36 }};
+ struct dict_enumval_data t_24 = { "Domain_Name_Request", { .i32=37 }};
+ struct dict_enumval_data t_25 = { "Domain_Name_Reply", { .i32=38 }};
+ struct dict_enumval_data t_26 = { "SKIP", { .i32=39 }};
+ struct dict_enumval_data t_27 = { "Photuris", { .i32=40 }};
+ struct dict_enumval_data t_28 = { "ICMP_messages_utilized_by_experimental", { .i32=41 }};
+ struct dict_enumval_data t_29 = { "RFC3692-style_Experiment_1", { .i32=253 }};
+ struct dict_enumval_data t_30 = { "RFC3692-style_Experiment_2", { .i32=254 }};
+ /* 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_AVP, &data, type, NULL);
+ };
+ /* ETH-Ether-Type */
+ {
+ struct dict_avp_data data = {
+ 550, /* Code */
+ 0, /* Vendor */
+ "ETH-Ether-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* ETH-SAP */
+ {
+ struct dict_avp_data data = {
+ 551, /* Code */
+ 0, /* Vendor */
+ "ETH-SAP", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* S-VID-Start */
+ {
+ struct dict_avp_data data = {
+ 553, /* Code */
+ 0, /* Vendor */
+ "S-VID-Start", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* S-VID-End */
+ {
+ struct dict_avp_data data = {
+ 554, /* Code */
+ 0, /* Vendor */
+ "S-VID-End", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* C-VID-Start */
+ {
+ struct dict_avp_data data = {
+ 555, /* Code */
+ 0, /* Vendor */
+ "C-VID-Start", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* C-VID-End */
+ {
+ struct dict_avp_data data = {
+ 556, /* Code */
+ 0, /* Vendor */
+ "C-VID-End", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Low-User-Priority */
+ {
+ struct dict_avp_data data = {
+ 558, /* Code */
+ 0, /* Vendor */
+ "Low-User-Priority", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* High-User-Priority */
+ {
+ struct dict_avp_data data = {
+ 559, /* Code */
+ 0, /* Vendor */
+ "High-User-Priority", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Time-Of-Day-Start */
+ {
+ struct dict_avp_data data = {
+ 561, /* Code */
+ 0, /* Vendor */
+ "Time-Of-Day-Start", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Time-Of-Day-End */
+ {
+ struct dict_avp_data data = {
+ 562, /* Code */
+ 0, /* Vendor */
+ "Time-Of-Day-End", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Day-Of-Week-Mask */
+ {
+ struct dict_avp_data data = {
+ 563, /* Code */
+ 0, /* Vendor */
+ "Day-Of-Week-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Day-Of-Month-Mask */
+ {
+ struct dict_avp_data data = {
+ 564, /* Code */
+ 0, /* Vendor */
+ "Day-Of-Month-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Month-Of-Year-Mask */
+ {
+ struct dict_avp_data data = {
+ 565, /* Code */
+ 0, /* Vendor */
+ "Month-Of-Year-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Absolute-Start-Time */
+ {
+ struct dict_avp_data data = {
+ 566, /* Code */
+ 0, /* Vendor */
+ "Absolute-Start-Time", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, Time_type, NULL);
+ };
+ /* Absolute-Start-Fractional-Seconds */
+ {
+ struct dict_avp_data data = {
+ 567, /* Code */
+ 0, /* Vendor */
+ "Absolute-Start-Fractional-Seconds", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Absolute-End-Time */
+ {
+ struct dict_avp_data data = {
+ 568, /* Code */
+ 0, /* Vendor */
+ "Absolute-End-Time", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_OCTETSTRING /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, Time_type, NULL);
+ };
+ /* Absolute-End-Fractional-Seconds */
+ {
+ struct dict_avp_data data = {
+ 569, /* Code */
+ 0, /* Vendor */
+ "Absolute-End-Fractional-Seconds", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Timezone-Flag */
+ {
+ struct dict_avp_data data = {
+ 570, /* Code */
+ 0, /* Vendor */
+ "Timezone-Flag", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Timezone-Flag)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "UTC", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "LOCAL", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "OFFSET", { .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);
+ };
+ /* Timezone-Offset */
+ {
+ struct dict_avp_data data = {
+ 571, /* Code */
+ 0, /* Vendor */
+ "Timezone-Offset", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* Treatment-Action */
+ {
+ struct dict_avp_data data = {
+ 572, /* Code */
+ 0, /* Vendor */
+ "Treatment-Action", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Treatment-Action)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "drop", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "shape", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "mark", { .i32=2 }};
+ struct dict_enumval_data t_4 = { "permit", { .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);
+ };
+ /* QoS-Profile-Id */
+ {
+ struct dict_avp_data data = {
+ 573, /* Code */
+ 0, /* Vendor */
+ "QoS-Profile-Id", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_UNSIGNED32 /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data, NULL, NULL);
+ };
+ /* QoS-Semantics */
+ {
+ struct dict_avp_data data = {
+ 575, /* Code */
+ 0, /* Vendor */
+ "QoS-Semantics", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_INTEGER32 /* base type of data */
+ };
+ struct dict_object *type;
+ struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(QoS-Semantics)", NULL, NULL, NULL };
+ struct dict_enumval_data t_1 = { "QoS_Desired", { .i32=0 }};
+ struct dict_enumval_data t_2 = { "QoS_Available", { .i32=1 }};
+ struct dict_enumval_data t_3 = { "QoS_Delivered", { .i32=2 }};
+ struct dict_enumval_data t_4 = { "Minimum_QoS", { .i32=3 }};
+ struct dict_enumval_data t_5 = { "QoS_Authorized", { .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);
+ };
+ /* QoS-Parameters */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 576, /* Code */
+ 0, /* Vendor */
+ "QoS-Parameters", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* ETH-Proto-Type */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 549, /* Code */
+ 0, /* Vendor */
+ "ETH-Proto-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* VLAN-ID-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 552, /* Code */
+ 0, /* Vendor */
+ "VLAN-ID-Range", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* IP-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 537, /* Code */
+ 0, /* Vendor */
+ "IP-Option", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* IP-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 522, /* Code */
+ 0, /* Vendor */
+ "IP-Address-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* Time-Of-Day-Condition */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 560, /* Code */
+ 0, /* Vendor */
+ "Time-Of-Day-Condition", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* TCP-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 540, /* Code */
+ 0, /* Vendor */
+ "TCP-Option", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* MAC-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 525, /* Code */
+ 0, /* Vendor */
+ "MAC-Address-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* TCP-Flags */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 543, /* Code */
+ 0, /* Vendor */
+ "TCP-Flags", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* Port-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 531, /* Code */
+ 0, /* Vendor */
+ "Port-Range", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* ICMP-Type */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 545, /* Code */
+ 0, /* Vendor */
+ "ICMP-Type", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* User-Priority-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 557, /* Code */
+ 0, /* Vendor */
+ "User-Priority-Range", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* QoS-Profile-Template */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 574, /* Code */
+ 0, /* Vendor */
+ "QoS-Profile-Template", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* IP-Address-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 519, /* Code */
+ 0, /* Vendor */
+ "IP-Address-Range", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* EUI64-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 528, /* Code */
+ 0, /* Vendor */
+ "EUI64-Address-Mask", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* From-Spec */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 515, /* Code */
+ 0, /* Vendor */
+ "From-Spec", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* Excess-Treatment */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 577, /* Code */
+ 0, /* Vendor */
+ "Excess-Treatment", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* ETH-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 548, /* Code */
+ 0, /* Vendor */
+ "ETH-Option", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* To-Spec */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 516, /* Code */
+ 0, /* Vendor */
+ "To-Spec", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* QoS-Capability */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 578, /* Code */
+ 0, /* Vendor */
+ "QoS-Capability", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* Classifier */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 511, /* Code */
+ 0, /* Vendor */
+ "Classifier", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* Filter-Rule */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 509, /* Code */
+ 0, /* Vendor */
+ "Filter-Rule", /* Name */
+ 0, /* Fixed flags */
+ 0, /* Fixed flag values */
+ AVP_TYPE_GROUPED /* base type of data */
+ };
+ CHECK_dict_new( DICT_AVP, &data , NULL, &avp);
+ }
+ /* QoS-Resources */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_data data = {
+ 508, /* Code */
+ 0, /* Vendor */
+ "QoS-Resources", /* Name */
+ 0, /* Fixed flags */
+ 0, /* 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_rfc5777_avps_load_rules(char * conffile)
+{
+ /* Grouped AVP section */
+ {
+ /* QoS-Parameters */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Parameters"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* ETH-Proto-Type */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ETH-Proto-Type"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "ETH-Ether-Type"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "ETH-SAP"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* VLAN-ID-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "VLAN-ID-Range"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "S-VID-Start"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "S-VID-End"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "C-VID-Start"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "C-VID-End"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* IP-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Option"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "IP-Option-Type"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Option-Value"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* IP-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Address-Mask"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Bit-Mask-Width"}, RULE_REQUIRED, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* Time-Of-Day-Condition */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Time-Of-Day-Condition"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Time-Of-Day-Start"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Time-Of-Day-End"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Day-Of-Week-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Day-Of-Month-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Month-Of-Year-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Absolute-Start-Time"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Absolute-End-Time"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Timezone-Flag"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* TCP-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "TCP-Option"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "TCP-Option-Type"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "TCP-Option-Value"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* MAC-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask-Pattern"}, RULE_REQUIRED, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* TCP-Flags */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "TCP-Flags"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "TCP-Flag-Type"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* Port-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Port-Range"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Port-Start"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Port-End"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* ICMP-Type */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ICMP-Type"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "ICMP-Type-Number"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "ICMP-Code"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* User-Priority-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "User-Priority-Range"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Low-User-Priority"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "High-User-Priority"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* QoS-Profile-Template */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Vendor-Id"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Profile-Id"}, RULE_REQUIRED, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* IP-Address-Range */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "IP-Address-Range"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "IP-Address-Start"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Address-End"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* EUI64-Address-Mask */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask-Pattern"}, RULE_REQUIRED, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* From-Spec */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "From-Spec"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Address-Range"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Port"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Port-Range"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Use-Assigned-Address"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* Excess-Treatment */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Excess-Treatment"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Treatment-Action"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Parameters"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* ETH-Option */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "ETH-Option"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "ETH-Proto-Type"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "VLAN-ID-Range"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "User-Priority-Range"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* To-Spec */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "To-Spec"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "IP-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Address-Range"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "MAC-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "MAC-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "EUI64-Address-Mask"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Port"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Port-Range"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Negated"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Use-Assigned-Address"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* QoS-Capability */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Capability"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_REQUIRED, 1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* Classifier */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Classifier"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Classifier-ID"}, RULE_REQUIRED, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Protocol"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Direction"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "From-Spec"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "To-Spec"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Diffserv-Code-Point"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Fragmentation-Flag"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "IP-Option"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "TCP-Option"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "TCP-Flags"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "ICMP-Type"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "ETH-Option"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* Filter-Rule */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "Filter-Rule"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Filter-Rule-Precedence"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Classifier"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Time-Of-Day-Condition"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Treatment-Action"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Semantics"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Profile-Template"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "QoS-Parameters"}, RULE_OPTIONAL, -1, -1 },
+ { { .avp_vendor = 0, .avp_name = "Excess-Treatment"}, RULE_OPTIONAL, -1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+ /* QoS-Resources */
+ {
+ /* Grouped */
+ struct dict_object * avp;
+ struct dict_avp_request avp_vendor_plus_name = { .avp_vendor = 0, .avp_name = "QoS-Resources"};
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avp_vendor_plus_name, &avp)
+ struct local_rules_definition rules[] =
+ {
+ { { .avp_vendor = 0, .avp_name = "Filter-Rule"}, RULE_REQUIRED, 1, -1 }
+ };
+ PARSE_loc_rules( rules, avp );
+ }
+
+ }
+
+ /* Commands section */
+ {
+
+ }
+
+ LOG_D( "Extension 'Dictionary definitions for rfc5777_avps (None)' initialized");
+ return 0;
+}
+
+int dict_entry(char * conffile)
+{
+ dict_rfc5777_avps_load_defs(conffile);
+ return dict_rfc5777_avps_load_rules(conffile);
+}
+
+const char* dict_rfc5777_avps_proto_ver(char * conffile) {
+ return rfc5777_avps_proto_ver;
+}
+
+const double dict_rfc5777_avps_gen_ts(char * conffile) {
+ return rfc5777_avps_gen_date;
+}
+
+EXTENSION_ENTRY2("dict_rfc5777_avps", dict_rfc5777_avps_load_defs, dict_rfc5777_avps_load_rules);
+
+
+
diff --git a/extensions/dict_rfc5777_avps/rfc5777_avps.did b/extensions/dict_rfc5777_avps/rfc5777_avps.did
new file mode 100644
index 0000000..d94dddb
--- /dev/null
+++ b/extensions/dict_rfc5777_avps/rfc5777_avps.did
@@ -0,0 +1 @@
+dict_rfc5777_avps