Now pcapDecoder only decodes diameter pcap and dump hex files (optional)
authorEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Sun, 12 Apr 2015 12:32:51 +0000 (14:32 +0200)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Sun, 12 Apr 2015 12:32:51 +0000 (14:32 +0200)
example/diameter/pcapDecoder/SConscript
example/diameter/pcapDecoder/dictionary.xml [deleted file]
example/diameter/pcapDecoder/main.cpp

index ab3bc06..c84a9c6 100644 (file)
@@ -10,7 +10,7 @@ pPath = pName.replace("_", "/") + "/"
 pwd = str(Dir ('.').abspath);
 anna_libpaths = []
 anna_libs = []
-modules = [ 'core', 'io', 'xml', 'time', 'diameter' ];
+modules = [ 'core' ];
 for module in modules:
   anna_libs.append ("anna_" + module)
   #module = module.replace("_", ".")
@@ -26,7 +26,7 @@ localEnv = env.Clone()
 anna_library = { 'LIBS' : anna_rlibs }
 localEnv.MergeFlags (anna_library)
 
-system_library = { 'LIBS' : [ 'xml2', 'rt', 'pcap' ] }
+system_library = { 'LIBS' : [ 'rt', 'pcap' ] }
 localEnv.MergeFlags (system_library)
 
 localEnv.Append(LIBPATH = anna_libpaths)
diff --git a/example/diameter/pcapDecoder/dictionary.xml b/example/diameter/pcapDecoder/dictionary.xml
deleted file mode 100644 (file)
index 99c4b3a..0000000
+++ /dev/null
@@ -1,2141 +0,0 @@
-<dictionary name="Gx and Rx for PCAP decoder">
-   <vendor name="IETF" code="0"/>
-   <vendor name="3GPP" code="10415"/>
-   <vendor name="ETSI" code="13019"/>
-   <avp name="User-Name" code="1" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="NAS-IP-Address" code="4" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Framed-IP-Address" code="8" may-encrypt="no" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Filter-Id" code="11" may-encrypt="no" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Class" code="25" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Session-Timeout" code="27" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Called-Station-Id" code="30" may-encrypt="no" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Proxy-State" code="33" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="mustnot">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Accounting-Session-Id" code="44" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Acct-Multi-Session-Id" code="50" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Event-Timestamp" code="55" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Acct-Interim-Interval" code="85" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Framed-IPv6-Prefix" code="97" may-encrypt="no" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Host-IP-Address" code="257" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Auth-Application-Id" code="258" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Acct-Application-Id" code="259" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="19302" alias="ERICSSON_SCAP"/>
-      </single>
-   </avp>
-   <avp name="Vendor-Specific-Application-Id" code="260" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Vendor-Id" type="Optional" qual="1*"/>
-         <avprule id="Auth-Application-Id" type="Optional" qual="*1"/>
-         <avprule id="Acct-Application-Id" type="Optional" qual="*1"/>
-      </grouped>
-   </avp>
-   <avp name="Redirect-Host-Usage" code="261" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-6">
-         <label data="0" alias="DONT_CACHE"/>
-         <label data="1" alias="ALL_SESSION"/>
-         <label data="2" alias="ALL_REALM"/>
-         <label data="3" alias="REALM_AND_APPLICATION"/>
-         <label data="4" alias="ALL_APPLICATION"/>
-         <label data="5" alias="ALL_HOST"/>
-         <label data="6" alias="ALL_USER"/>
-      </single>
-   </avp>
-   <avp name="Redirect-Max-Cache-Time" code="262" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Session-Id" code="263" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Origin-Host" code="264" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Supported-Vendor-Id" code="265" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Vendor-Id" code="266" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Firmware-Revision" code="267" may-encrypt="no" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Result-Code" code="268" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="1001" alias="DIAMETER_MULTI_ROUND_AUTH"/>
-         <label data="2001" alias="DIAMETER_SUCCESS"/>
-         <label data="2002" alias="DIAMETER_LIMITED_SUCCESS"/>
-         <label data="3001" alias="DIAMETER_COMMAND_UNSUPPORTED"/>
-         <label data="3002" alias="DIAMETER_UNABLE_TO_DELIVER"/>
-         <label data="3003" alias="DIAMETER_REALM_NOT_SERVED"/>
-         <label data="3004" alias="DIAMETER_TOO_BUSY"/>
-         <label data="3005" alias="DIAMETER_LOOP_DETECTED"/>
-         <label data="3006" alias="DIAMETER_REDIRECT_INDICATION"/>
-         <label data="3007" alias="DIAMETER_APPLICATION_UNSUPPORTED"/>
-         <label data="3008" alias="DIAMETER_INVALID_HDR_BITS"/>
-         <label data="3009" alias="DIAMETER_INVALID_AVP_BITS"/>
-         <label data="3010" alias="DIAMETER_UNKNOWN_PEER"/>
-         <label data="4001" alias="DIAMETER_AUTHENTICATION_REJECTED"/>
-         <label data="4002" alias="DIAMETER_OUT_OF_SPACE"/>
-         <label data="4003" alias="ELECTION_LOST"/>
-         <label data="4005" alias="DIAMETER_ERROR_MIP_REPLY_FAILURE"/>
-         <label data="4006" alias="DIAMETER_ERROR_HA_NOT_AVAILABLE"/>
-         <label data="4007" alias="DIAMETER_ERROR_BAD_KEY"/>
-         <label data="4008" alias="DIAMETER_ERROR_MIP_FILTER_NOT_SUPPORTED"/>
-         <label data="4010" alias="DIAMETER_END_USER_SERVICE_DENIED"/>
-         <label data="4011" alias="DIAMETER_CREDIT_CONTROL_NOT_APPLICABLE"/>
-         <label data="4012" alias="DIAMETER_CREDIT_LIMIT_REACHED"/>
-         <label data="4241" alias="DIAMETER_END_USER_SERVICE_DENIED"/>
-         <label data="5001" alias="DIAMETER_AVP_UNSUPPORTED"/>
-         <label data="5002" alias="DIAMETER_UNKNOWN_SESSION_ID"/>
-         <label data="5003" alias="DIAMETER_AUTHORIZATION_REJECTED"/>
-         <label data="5004" alias="DIAMETER_INVALID_AVP_VALUE"/>
-         <label data="5005" alias="DIAMETER_MISSING_AVP"/>
-         <label data="5006" alias="DIAMETER_RESOURCES_EXCEEDED"/>
-         <label data="5007" alias="DIAMETER_CONTRADICTING_AVPS"/>
-         <label data="5008" alias="DIAMETER_AVP_NOT_ALLOWED"/>
-         <label data="5009" alias="DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"/>
-         <label data="5010" alias="DIAMETER_NO_COMMON_APPLICATION"/>
-         <label data="5011" alias="DIAMETER_UNSUPPORTED_VERSION"/>
-         <label data="5012" alias="DIAMETER_UNABLE_TO_COMPLY"/>
-         <label data="5013" alias="DIAMETER_INVALID_BIT_IN_HEADER"/>
-         <label data="5014" alias="DIAMETER_INVALID_AVP_LENGTH"/>
-         <label data="5015" alias="DIAMETER_INVALID_MESSAGE_LENGTH"/>
-         <label data="5016" alias="DIAMETER_INVALID_AVP_BIT_COMBO"/>
-         <label data="5017" alias="DIAMETER_NO_COMMON_SECURITY"/>
-         <label data="5024" alias="DIAMETER_ERROR_NO_FOREIGN_HA_SERVICE"/>
-         <label data="5025" alias="DIAMETER_ERROR_END_TO_END_MIP_KEY_ENCRYPTION"/>
-         <label data="5030" alias="DIAMETER_USER_UNKNOWN"/>
-         <label data="5031" alias="DIAMETER_RATING_FAILED"/>
-         <label data="5241" alias="DIAMETER_END_USER_NOT_FOUND"/>
-      </single>
-   </avp>
-   <avp name="Product-Name" code="269" may-encrypt="no" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Session-Binding" code="270" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="1" alias="RE_AUTH"/>
-         <label data="2" alias="STR"/>
-         <label data="4" alias="ACCOUNTING"/>
-      </single>
-   </avp>
-   <avp name="Session-Server-Failover" code="271" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="REFUSE_SERVICE"/>
-         <label data="1" alias="TRY_AGAIN"/>
-         <label data="2" alias="ALLOW_SERVICE"/>
-         <label data="3" alias="TRY_AGAIN_ALLOW_SERVICE"/>
-      </single>
-   </avp>
-   <avp name="Multi-Round-Time-Out" code="272" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Disconnect-Cause" code="273" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="REBOOTING"/>
-         <label data="1" alias="BUSY"/>
-         <label data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
-      </single>
-   </avp>
-   <avp name="Auth-Request-Type" code="274" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="RESERVED"/>
-         <label data="1" alias="AUTHENTICATE_ONLY"/>
-         <label data="2" alias="AUTHORIZE_ONLY"/>
-         <label data="3" alias="AUTHORIZE_AUTHENTICATE"/>
-      </single>
-   </avp>
-   <avp name="Auth-Grace-Period" code="276" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Auth-Session-State" code="277" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="STATE_MAINTAINED"/>
-         <label data="1" alias="NO_STATE_MAINTAINED"/>
-      </single>
-   </avp>
-   <avp name="Origin-State-Id" code="278" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Failed-AVP" code="279" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="AVP" type="Mandatory" qual="1*"/>
-      </grouped>
-   </avp>
-   <avp name="Proxy-Host" code="280" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="mustnot">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Error-Message" code="281" may-encrypt="no" v-bit="mustnot" m-bit="mustnot" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Route-Record" code="282" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="mustnot">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Destination-Realm" code="283" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Proxy-Info" code="284" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="mustnot">
-      <grouped>
-         <avprule id="Proxy-Host" type="Mandatory"/>
-         <avprule id="Proxy-State" type="Mandatory"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Re-Auth-Request-Type" code="285" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="AUTHORIZE_ONLY"/>
-         <label data="1" alias="AUTHORIZE_AUTHENTICATE"/>
-      </single>
-   </avp>
-   <avp name="Accounting-Sub-Session-Id" code="287" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="Authorization-Lifetime" code="291" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Redirect-Host" code="292" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="DiameterURI"/>
-   </avp>
-   <avp name="Destination-Host" code="293" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Error-Reporting-Host" code="294" may-encrypt="no" v-bit="mustnot" m-bit="mustnot" p-bit="may">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Termination-Cause" code="295" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-8">
-         <label data="1" alias="DIAMETER_LOGOUT"/>
-         <label data="2" alias="DIAMETER_SERVICE_NOT_PROVIDED"/>
-         <label data="3" alias="DIAMETER_BAD_ANSWER"/>
-         <label data="4" alias="DIAMETER_ADMINISTRATIVE"/>
-         <label data="5" alias="DIAMETER_LINK_BROKEN"/>
-         <label data="6" alias="DIAMETER_AUTH_EXPIRED"/>
-         <label data="7" alias="DIAMETER_USER_MOVED"/>
-         <label data="8" alias="DIAMETER_SESSION_TIMEOUT"/>
-      </single>
-   </avp>
-   <avp name="Origin-Realm" code="296" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="DiameterIdentity"/>
-   </avp>
-   <avp name="Experimental-Result" code="297" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Vendor-Id" type="Mandatory"/>
-         <avprule id="Experimental-Result-Code" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="Experimental-Result-Code" code="298" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="5061" alias="INVALID_SERVICE_INFORMATION"/>
-         <label data="5062" alias="FILTER_RESTRICTIONS"/>
-         <label data="5063" alias="REQUESTED_SERVICE_NOT_AUTHORIZED"/>
-         <label data="5064" alias="DUPLICATED_AF_SESSION"/>
-         <label data="5065" alias="IP-CAN_SESSION_NOT_AVAILABLE"/>
-      </single>
-   </avp>
-   <avp name="Inband-Security-Id" code="299" may-encrypt="no" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="0" alias="NO_INBAND_SECURITY"/>
-         <label data="1" alias="TLS"/>
-      </single>
-   </avp>
-   <avp name="E2E-Sequence-AVP" code="300" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="CC-Correlation-Id" code="411" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="CC-Input-Octets" code="412" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="CC-Money" code="413" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Unit-Value" type="Fixed"/>
-         <avprule id="Currency-Code" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="CC-Output-Octets" code="414" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="CC-Request-Number" code="415" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="CC-Request-Type" code="416" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-4">
-         <label data="1" alias="INITIAL_REQUEST"/>
-         <label data="2" alias="UPDATE_REQUEST"/>
-         <label data="3" alias="TERMINATION_REQUEST"/>
-         <label data="4" alias="EVENT_REQUEST"/>
-      </single>
-   </avp>
-   <avp name="CC-Service-Specific-Units" code="417" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="CC-Session-Failover" code="418" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="FAILOVER_NOT_SUPPORTED"/>
-         <label data="1" alias="FAILOVER_SUPPORTED"/>
-      </single>
-   </avp>
-   <avp name="CC-Sub-Session-Id" code="419" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="CC-Time" code="420" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="CC-Total-Octets" code="421" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned64"/>
-   </avp>
-   <avp name="Check-Balance-Result" code="422" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="ENOUGH_CREDIT"/>
-         <label data="1" alias="NO_CREDIT"/>
-      </single>
-   </avp>
-   <avp name="Cost-Information" code="423" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Unit-Value" type="Mandatory"/>
-         <avprule id="Currency-Code" type="Mandatory"/>
-         <avprule id="Cost-Unit" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Cost-Unit" code="424" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Currency-Code" code="425" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Credit-Control" code="426" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="CREDIT_AUTHORIZATION"/>
-         <label data="1" alias="RE_AUTHORIZATION"/>
-      </single>
-   </avp>
-   <avp name="Credit-Control-Failure-Handling" code="427" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="TERMINATE"/>
-         <label data="1" alias="CONTINUE"/>
-         <label data="2" alias="RETRY_AND_TERMINATE"/>
-      </single>
-   </avp>
-   <avp name="Direct-Debiting-Failure-Handling" code="428" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="TERMINATE_OR_BUFFER"/>
-         <label data="1" alias="CONTINUE"/>
-      </single>
-   </avp>
-   <avp name="Exponent" code="429" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Integer32"/>
-   </avp>
-   <avp name="Final-Unit-Indication" code="430" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Final-Unit-Action" type="Fixed"/>
-         <avprule id="Restriction-Filter-Rule" type="Optional" qual="*"/>
-         <avprule id="Filter-Id" type="Optional" qual="*"/>
-         <avprule id="Redirect-Server" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Granted-Service-Unit" code="431" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Tariff-Time-Change" type="Optional"/>
-         <avprule id="CC-Time" type="Optional"/>
-         <avprule id="CC-Money" type="Optional"/>
-         <avprule id="CC-Total-Octets" type="Optional"/>
-         <avprule id="CC-Input-Octets" type="Optional"/>
-         <avprule id="CC-Output-Octets" type="Optional"/>
-         <avprule id="CC-Service-Specific-Units" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Rating-Group" code="432" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Redirect-Address-Type" code="433" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="IPv4_Address"/>
-         <label data="1" alias="IPv6_Address"/>
-         <label data="2" alias="URL"/>
-         <label data="3" alias="SIP_URL"/>
-      </single>
-   </avp>
-   <avp name="Redirect-Server" code="434" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Redirect-Address-Type" type="Fixed"/>
-         <avprule id="Redirect-Server-Address" type="Fixed"/>
-      </grouped>
-   </avp>
-   <avp name="Redirect-Server-Address" code="435" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Requested-Action" code="436" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="DIRECT_DEBITING"/>
-         <label data="1" alias="REFUND_ACCOUNT"/>
-         <label data="2" alias="CHECK_BALANCE"/>
-         <label data="3" alias="PRICE_ENQUIRY"/>
-      </single>
-   </avp>
-   <avp name="Requested-Service-Unit" code="437" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="CC-Time" type="Optional"/>
-         <avprule id="CC-Money" type="Optional"/>
-         <avprule id="CC-Total-Octets" type="Optional"/>
-         <avprule id="CC-Input-Octets" type="Optional"/>
-         <avprule id="CC-Output-Octets" type="Optional"/>
-         <avprule id="CC-Service-Specific-Units" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Restriction-Filter-Rule" code="438" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="IPFilterRule"/>
-   </avp>
-   <avp name="Service-Identifier" code="439" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Service-Parameter-Info" code="440" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <grouped>
-         <avprule id="Service-Parameter-Type" type="Mandatory"/>
-         <avprule id="Service-Parameter-Value" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="Service-Parameter-Type" code="441" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Service-Parameter-Value" code="442" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Subscription-Id" code="443" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Subscription-Id-Type" type="Fixed"/>
-         <avprule id="Subscription-Id-Data" type="Fixed"/>
-      </grouped>
-   </avp>
-   <avp name="Subscription-Id-Data" code="444" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Unit-Value" code="445" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Value-Digits" type="Fixed"/>
-         <avprule id="Exponent" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Used-Service-Unit" code="446" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Tariff-Change-Usage" type="Optional"/>
-         <avprule id="CC-Time" type="Optional"/>
-         <avprule id="CC-Money" type="Optional"/>
-         <avprule id="CC-Total-Octets" type="Optional"/>
-         <avprule id="CC-Input-Octets" type="Optional"/>
-         <avprule id="CC-Output-Octets" type="Optional"/>
-         <avprule id="CC-Service-Specific-Units" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Value-Digits" code="447" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Integer64"/>
-   </avp>
-   <avp name="Validity-Time" code="448" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Final-Unit-Action" code="449" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="TERMINATE"/>
-         <label data="1" alias="REDIRECT"/>
-         <label data="2" alias="RESTRICT_ACCESS"/>
-      </single>
-   </avp>
-   <avp name="Subscription-Id-Type" code="450" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="END_USER_E164"/>
-         <label data="1" alias="END_USER_IMSI"/>
-         <label data="2" alias="END_USER_SIP_URL"/>
-         <label data="3" alias="END_USER_NAI"/>
-         <label data="4" alias="END_USER_PRIVATE"/>
-      </single>
-   </avp>
-   <avp name="Tariff-Time-Change" code="451" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Tariff-Change-Usage" code="452" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="UNIT_BEFORE_TARIFF_CHANGE"/>
-         <label data="1" alias="UNIT_AFTER_TARIFF_CHANGE"/>
-         <label data="2" alias="UNIT_INDETERMINATE"/>
-      </single>
-   </avp>
-   <avp name="G-S-U-Pool-Identifier" code="453" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="CC-Unit-Type" code="454" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-5">
-         <label data="0" alias="TIME"/>
-         <label data="1" alias="MONEY"/>
-         <label data="2" alias="TOTAL_OCTETS"/>
-         <label data="3" alias="INPUT_OCTETS"/>
-         <label data="4" alias="OUTPUT_OCTETS"/>
-         <label data="5" alias="SERVICE_SPECIFIC_UNITS"/>
-      </single>
-   </avp>
-   <avp name="Multiple-Services-Indicator" code="455" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="MULTIPLE_SERVICES_NOT_SUPPORTED"/>
-         <label data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-      </single>
-   </avp>
-   <avp name="Multiple-Services-Credit-Control" code="456" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Granted-Service-Unit" type="Optional"/>
-         <avprule id="Requested-Service-Unit" type="Optional"/>
-         <avprule id="Used-Service-Unit" type="Optional" qual="*"/>
-         <avprule id="Tariff-Change-Usage" type="Optional"/>
-         <avprule id="Service-Identifier" type="Optional" qual="*"/>
-         <avprule id="Rating-Group" type="Optional"/>
-         <avprule id="G-S-U-Pool-Reference" type="Optional" qual="*"/>
-         <avprule id="Validity-Time" type="Optional"/>
-         <avprule id="Result-Code" type="Optional"/>
-         <avprule id="Final-Unit-Indication" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="G-S-U-Pool-Reference" code="457" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="G-S-U-Pool-Identifier" type="Mandatory"/>
-         <avprule id="CC-Unit-Type" type="Mandatory"/>
-         <avprule id="Unit-Value" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="User-Equipment-Info" code="458" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <grouped>
-         <avprule id="User-Equipment-Info-Type" type="Mandatory"/>
-         <avprule id="User-Equipment-Info-Value" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="User-Equipment-Info-Type" code="459" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="IMEISV"/>
-         <label data="1" alias="MAC"/>
-         <label data="2" alias="EUI64"/>
-         <label data="3" alias="MODIFIED_EUI64"/>
-      </single>
-   </avp>
-   <avp name="User-Equipment-Info-Value" code="460" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Service-Context-Id" code="461" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Accounting-Record-Type" code="480" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-4">
-         <label data="1" alias="EVENT_RECORD"/>
-         <label data="2" alias="START_RECORD"/>
-         <label data="3" alias="INTERIM_RECORD"/>
-         <label data="4" alias="STOP_RECORD"/>
-      </single>
-   </avp>
-   <avp name="Accounting-Interim-Interval" code="482" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Integer32"/>
-   </avp>
-   <avp name="Accounting-Realtime-Required" code="483" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-3">
-         <label data="1" alias="DELIVER_AND_GRANT"/>
-         <label data="2" alias="GRANT_AND_STORE"/>
-         <label data="3" alias="GRANT_AND_LOSE"/>
-      </single>
-   </avp>
-   <avp name="Accounting-Record-Number" code="485" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="3GPP-Charging-Id" code="2" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="3GPP-PDP-Type" code="3" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32">
-         <label data="0" alias="IPV4"/>
-         <label data="1" alias="PPP"/>
-         <label data="2" alias="IPV6"/>
-      </single>
-   </avp>
-   <avp name="3GPP-CG-Address" code="4" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-GPRS-Neg-QoS-Profile" code="5" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-SGSN-Address" code="6" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-GGSN-Address" code="7" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-IMSI-MCC-MNC" code="8" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-GGSN-MCC-MNC" code="9" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-NSAPI" code="10" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-Session-Stop-Indicator" code="11" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-Selection-Mode" code="12" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-Charging-Characteristics" code="13" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GPP-SGSN-IPv6-Address" code="15" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-GGSN-IPv6-Address" code="16" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-SGSN-MCC-MNC" code="18" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="3GGP-IMEISV" code="20" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-Rat-Type" code="21" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-User-Location-Info" code="22" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-MS-TimeZone" code="23" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="3GPP-CAMEL-Charging-Info" code="24" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Abort-Cause" code="500" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="BEARER_RELEASED"/>
-         <label data="1" alias="INSUFFICIENT_SERVER_RESOURCES"/>
-         <label data="2" alias="INSUFFICIENT_BEARER_RESOURCES"/>
-         <label data="3" alias="PS_TO_CS_HANDOVER"/>
-         <label data="4" alias="SPONSORED_DATA_CONNECTIVITY_DISALLOWED"/>
-      </single>
-   </avp>
-   <avp name="Access-Network-Charging-Address" code="501" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Access-Network-Charging-Identifier" code="502" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Access-Network-Charging-Identifier-Value" type="Mandatory"/>
-         <avprule id="Flows" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Access-Network-Charging-Identifier-Value" code="503" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="AF-Application-Identifier" code="504" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="AF-Charging-Identifier" code="505" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Flow-Description" code="507" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="IPFilterRule"/>
-   </avp>
-   <avp name="Flow-Number" code="509" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Flows" code="510" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Media-Component-Number" type="Mandatory"/>
-         <avprule id="Flow-Number" type="Optional" qual="*"/>
-         <avprule id="Final-Unit-Action" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Flow-Status" code="511" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-15">
-         <label data="0" alias="ENABLED-UPLINK"/>
-         <label data="1" alias="ENABLED-DOWNLINK"/>
-         <label data="2" alias="ENABLED"/>
-         <label data="3" alias="DISABLED"/>
-         <label data="4" alias="REMOVED"/>
-      </single>
-   </avp>
-   <avp name="Flow-Usage" code="512" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-15">
-         <label data="0" alias="NO_INFORMATION"/>
-         <label data="1" alias="RTCP"/>
-         <label data="2" alias="AF_SIGNALLING"/>
-      </single>
-   </avp>
-   <avp name="Specific-Action" code="513" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-4,6-11">
-         <label data="1" alias="CHARGING_CORRELATION_EXCHANGE"/>
-         <label data="2" alias="INDICATION_OF_LOSS_OF_BEARER"/>
-         <label data="3" alias="INDICATION_OF_RECOVERY_OF_BEARER"/>
-         <label data="4" alias="INDICATION_OF_RELEASE_OF_BEARER"/>
-         <label data="6" alias="IP-CAN_CHANGE"/>
-         <label data="7" alias="INDICATION_OF_OUT_OF_CREDIT"/>
-         <label data="8" alias="INDICATION_OF_SUCCESSFUL_RESOURCES_ALLOCATION"/>
-         <label data="9" alias="INDICATION_OF_FAILED_RESOURCES_ALLOCATION"/>
-         <label data="10" alias="INDICATION_OF_LIMITED_PCC_DEPLOYMENT"/>
-         <label data="11" alias="USAGE_REPORT"/>
-      </single>
-   </avp>
-   <avp name="Max-Requested-Bandwidth-DL" code="515" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Max-Requested-Bandwidth-UL" code="516" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Media-Component-Description" code="517" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Media-Component-Number" type="Mandatory"/>
-         <avprule id="Media-Sub-Component" type="Optional" qual="*"/>
-         <avprule id="AF-Application-Identifier" type="Optional"/>
-         <avprule id="Media-Type" type="Optional"/>
-         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
-         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
-         <avprule id="Flow-Status" type="Optional"/>
-         <avprule id="Reservation-Priority" type="Optional"/>
-         <avprule id="RS-Bandwidth" type="Optional"/>
-         <avprule id="RR-Bandwidth" type="Optional"/>
-         <avprule id="Codec-Data" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Media-Component-Number" code="518" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Media-Sub-Component" code="519" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Flow-Number" type="Mandatory"/>
-         <avprule id="Flow-Description" type="Optional" qual="0*2"/>
-         <avprule id="Flow-Status" type="Optional"/>
-         <avprule id="Flow-Usage" type="Optional"/>
-         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
-         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
-         <avprule id="AF-Signalling-Protocol" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Media-Type" code="520" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-6,4294967295">
-         <label data="4294967295" alias="OTHER"/>
-         <label data="0" alias="AUDIO"/>
-         <label data="1" alias="VIDEO"/>
-         <label data="2" alias="DATA"/>
-         <label data="3" alias="APPLICATION"/>
-         <label data="4" alias="CONTROL"/>
-         <label data="5" alias="TEXT"/>
-         <label data="6" alias="MESSAGE"/>
-      </single>
-   </avp>
-   <avp name="RR-Bandwidth" code="521" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="RS-Bandwidth" code="522" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="SIP-Forking-Indication" code="523" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="SINGLE_DIALOGUE"/>
-         <label data="1" alias="SEVERAL_DIALOGUES"/>
-      </single>
-   </avp>
-   <avp name="Codec-Data" code="524" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Service-URN" code="525" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Acceptable-Service-Info" code="526" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Media-Component-Description" type="Optional" qual="*"/>
-         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
-         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Service-Info-Status" code="527" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="FINAL_SERVICE_INFORMATION"/>
-         <label data="1" alias="PRELIMINARY_SERVICE_INFORMATION"/>
-      </single>
-   </avp>
-   <avp name="MPS-Identifier" code="528" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="AF-Signalling-Protocol" code="529" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="NO_INFORMATION"/>
-         <label data="1" alias="SIP"/>
-      </single>
-   </avp>
-   <avp name="Sponsored-Connectivity-Data" code="530" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <grouped>
-         <avprule id="Sponsor-Identity" type="Optional"/>
-         <avprule id="Application-Service-Provider-Identity" type="Optional"/>
-         <avprule id="Granted-Service-Unit" type="Optional"/>
-         <avprule id="Used-Service-Unit" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Sponsor-Identity" code="531" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Application-Service-Provider-Identity" code="532" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Rx-Request-Type" code="533" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="INITIAL_REQUEST"/>
-         <label data="1" alias="UPDATE_REQUEST"/>
-      </single>
-   </avp>
-   <avp name="Server-Name" code="602" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Server-Capabilities" code="603" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Mandatory-Capability" type="Optional" qual="*"/>
-         <avprule id="Optional-Capability" type="Optional" qual="*"/>
-         <avprule id="Server-Name" type="Optional" qual="*"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Mandatory-Capability" code="604" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Optional-Capability" code="605" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Supported-Features" code="628" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="may" p-bit="may">
-      <grouped>
-         <avprule id="Vendor-Id" type="Mandatory"/>
-         <avprule id="Feature-List-ID" type="Mandatory"/>
-         <avprule id="Feature-List" type="Mandatory"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Feature-List-ID" code="629" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Feature-List" code="630" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Session-Priority" code="650" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="PRIORITY-0"/>
-         <label data="1" alias="PRIORITY-1"/>
-         <label data="2" alias="PRIORITY-2"/>
-         <label data="3" alias="PRIORITY-3"/>
-         <label data="4" alias="PRIORITY-4"/>
-      </single>
-   </avp>
-   <avp name="Quota-Consumption-Time" code="811" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Event-Type" code="823" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SIP-Method" type="Optional"/>
-         <avprule id="Event" type="Optional"/>
-         <avprule id="Expires" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="SIP-Method" code="824" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Event" code="825" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Content-Type" code="826" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Content-Length" code="827" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Content-Disposition" code="828" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Role-Of-Node" code="829" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="ORIGINATING_ROLE"/>
-         <label data="1" alias="TERMINATING_ROLE"/>
-         <label data="2" alias="PROXY_ROLE"/>
-         <label data="3" alias="B2BUA_ROLE"/>
-      </single>
-   </avp>
-   <avp name="User-Session-Id" code="830" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Calling-Party-Address" code="831" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Called-Party-Address" code="832" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Time-Stamps" code="833" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SIP-Request-Timestamp" type="Optional"/>
-         <avprule id="SIP-Response-Timestamp" type="Optional"/>
-         <avprule id="SIP-Request-Timestamp-Fraction" type="Optional"/>
-         <avprule id="SIP-Response-Timestamp-Fraction" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="SIP-Request-Timestamp" code="834" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="SIP-Response-Timestamp" code="835" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Application-Server" code="836" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Application-Provided-Called-Party-Address" code="837" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Inter-Operator-Identifier" code="838" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Originating-IOI" type="Optional"/>
-         <avprule id="Terminating-IOI" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Originating-IOI" code="839" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Terminating-IOI" code="840" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="IMS-Charging-Identifier" code="841" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="SDP-Session-Description" code="842" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="SDP-Media-Component" code="843" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SDP-Media-Name" type="Optional"/>
-         <avprule id="SDP-Media-Description" type="Optional" qual="*"/>
-         <avprule id="Media-Initiator-Flag" type="Optional"/>
-         <avprule id="Media-Initiator-Party" type="Optional"/>
-         <avprule id="Authorized-QoS" type="Optional"/>
-         <avprule id="3GPP-Charging-Id" type="Optional"/>
-         <avprule id="Access-Network-Charging-Identifier-Value" type="Optional"/>
-         <avprule id="SDP-Type" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="SDP-Media-Name" code="844" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="SDP-Media-Description" code="845" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="CG-Address" code="846" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="GGSN-Address" code="847" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Served-Party-IP-Address" code="848" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Authorized-QoS" code="849" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Application-Server-Information" code="850" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Application-Server" type="Optional"/>
-         <avprule id="Application-Provided-Called-Party-Address" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Trunk-Group-ID" code="851" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Incoming-Trunk-Group-ID" type="Optional"/>
-         <avprule id="Outgoing-Trunk-Group-ID" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Incoming-Trunk-Group-ID" code="852" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Outgoing-Trunk-Group-ID" code="853" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Bearer-Service" code="854" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Service-Id" code="855" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Associated-URI" code="856" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Cause-Code" code="861" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Integer32"/>
-   </avp>
-   <avp name="Node-Functionality" code="862" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-11">
-         <label data="0" alias="S-CSCF"/>
-         <label data="1" alias="P-CSCF"/>
-         <label data="2" alias="I-CSCF"/>
-         <label data="3" alias="MRFC"/>
-         <label data="4" alias="MGCF"/>
-         <label data="5" alias="BGCF"/>
-         <label data="6" alias="AS"/>
-         <label data="7" alias="IBCF"/>
-         <label data="8" alias="S-GW"/>
-         <label data="9" alias="P-GW"/>
-         <label data="10" alias="HSGW"/>
-         <label data="11" alias="E-CSCF"/>
-      </single>
-   </avp>
-   <avp name="Service-Specific-Data" code="863" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Originator" code="864" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="Calling Party"/>
-         <label data="1" alias="Called Party"/>
-      </single>
-   </avp>
-   <avp name="PS-Furnish-Charging-Information" code="865" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="3GPP-Charging-Id" type="Mandatory"/>
-         <avprule id="PS-Free-Format-Data" type="Mandatory"/>
-         <avprule id="PS-Append-Free-Format-Data" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="PS-Free-Format-Data" code="866" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="PS-Append-Free-Format-Data" code="867" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="APPEND"/>
-         <label data="1" alias="OVERWRITE"/>
-      </single>
-   </avp>
-   <avp name="Time-Quota-Threshold" code="868" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Volume-Quota-Threshold" code="869" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Trigger-Type" code="870" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-4,10-23,30-34,40,50">
-         <label data="1" alias="CHANGE_IN_SGSN_IP_ADDRESS"/>
-         <label data="2" alias="CHANGE_IN_QOS"/>
-         <label data="3" alias="CHANGE_IN_LOCATION"/>
-         <label data="4" alias="CHANGE_IN_RAT"/>
-         <label data="10" alias="CHANGEINQOS_TRAFFIC_CLASS"/>
-         <label data="11" alias="CHANGEINQOS_RELIABILITY_CLASS"/>
-         <label data="12" alias="CHANGEINQOS_DELAY_CLASS"/>
-         <label data="13" alias="CHANGEINQOS_PEAK_THROUGHPUT"/>
-         <label data="14" alias="CHANGEINQOS_PRECEDENCE_CLASS"/>
-         <label data="15" alias="CHANGEINQOS_MEAN_THROUGHPUT"/>
-         <label data="16" alias="CHANGEINQOS_MAXIMUM_BIT_RATE_FOR_UPLINK"/>
-         <label data="17" alias="CHANGEINQOS_MAXIMUM_BIT_RATE_FOR_DOWNLINK"/>
-         <label data="18" alias="CHANGEINQOS_RESIDUAL_BER"/>
-         <label data="19" alias="CHANGEINQOS_SDU_ERROR_RATIO"/>
-         <label data="20" alias="CHANGEINQOS_TRANSFER_DELAY"/>
-         <label data="21" alias="CHANGEINQOS_TRAFFIC_HANDLING_PRIORITY"/>
-         <label data="22" alias="CHANGEINQOS_GUARANTEED_BIT_RATE_FOR_UPLINK"/>
-         <label data="23" alias="CHANGEINQOS_GUARANTEED_BIT_RATE_FOR_DOWNLINK"/>
-         <label data="30" alias="CHANGEINLOCATION_MCC"/>
-         <label data="31" alias="CHANGEINLOCATION_MNC"/>
-         <label data="32" alias="CHANGEINLOCATION_RAC"/>
-         <label data="33" alias="CHANGEINLOCATION_LAC"/>
-         <label data="34" alias="CHANGEINLOCATION_CellId"/>
-         <label data="40" alias="CHANGE_IN_MEDIA_COMPOSITION"/>
-         <label data="50" alias="CHANGEINPARTICIPANTS_NMB"/>
-      </single>
-   </avp>
-   <avp name="Quota-Holding-Time" code="871" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Reporting-Reason" code="872" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-8">
-         <label data="0" alias="THRESHOLD"/>
-         <label data="1" alias="QHT"/>
-         <label data="2" alias="FINAL"/>
-         <label data="3" alias="QUOTA_EXHAUSTED"/>
-         <label data="4" alias="VALIDITY_TIME"/>
-         <label data="5" alias="OTHER_QUOTA_TYPE"/>
-         <label data="6" alias="RATING_CONDITION_CHANGE"/>
-         <label data="7" alias="FORCED_REAUTHORISATION"/>
-         <label data="8" alias="POOL_EXHAUSTED"/>
-      </single>
-   </avp>
-   <avp name="Service-Information" code="873" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="PS-Information" type="Optional"/>
-         <avprule id="IMS-Information" type="Optional"/>
-         <avprule id="MMS-Information" type="Optional"/>
-         <avprule id="SMS-Information" type="Optional"/>
-         <avprule id="Service-Generic-Information" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="PS-Information" code="874" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="3GPP-Charging-Id" type="Optional"/>
-         <avprule id="3GPP-PDP-Type" type="Optional"/>
-         <avprule id="3GPP-GPRS-Neg-QoS-Profile" type="Optional"/>
-         <avprule id="3GPP-IMSI-MCC-MNC" type="Optional"/>
-         <avprule id="3GPP-GGSN-MCC-MNC" type="Optional"/>
-         <avprule id="3GPP-NSAPI" type="Optional"/>
-         <avprule id="3GPP-Session-Stop-Indicator" type="Optional"/>
-         <avprule id="3GPP-Selection-Mode" type="Optional"/>
-         <avprule id="3GPP-Charging-Characteristics" type="Optional"/>
-         <avprule id="3GPP-SGSN-MCC-MNC" type="Optional"/>
-         <avprule id="3GPP-Rat-Type" type="Optional"/>
-         <avprule id="3GPP-User-Location-Info" type="Optional"/>
-         <avprule id="3GPP-MS-TimeZone" type="Optional"/>
-         <avprule id="3GPP-CAMEL-Charging-Info" type="Optional"/>
-         <avprule id="CG-Address" type="Optional"/>
-         <avprule id="GGSN-Address" type="Optional"/>
-         <avprule id="PS-Furnish-Charging-Information" type="Optional"/>
-         <avprule id="Charging-Rule-Base-Name" type="Optional"/>
-         <avprule id="PDP-Address" type="Optional"/>
-         <avprule id="SGSN-Address" type="Optional"/>
-         <avprule id="Called-Station-Id" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="IMS-Information" code="876" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Event-Type" type="Optional"/>
-         <avprule id="Role-Of-Node" type="Optional"/>
-         <avprule id="Node-Functionality" type="Mandatory"/>
-         <avprule id="User-Session-Id" type="Optional"/>
-         <avprule id="Outgoing-Session-Id" type="Optional"/>
-         <avprule id="Session-Priority" type="Optional"/>
-         <avprule id="Calling-Party-Address" type="Optional" qual="*"/>
-         <avprule id="Called-Party-Address" type="Optional"/>
-         <avprule id="Called-Asserted-Identity" type="Optional" qual="*"/>
-         <avprule id="Number-Portability-Routing-Information" type="Optional"/>
-         <avprule id="Carrier-Select-Routing-Information" type="Optional"/>
-         <avprule id="Alternate-Charged-Party-Address" type="Optional"/>
-         <avprule id="Requested-Party-Address" type="Optional"/>
-         <avprule id="Associated-URI" type="Optional" qual="*"/>
-         <avprule id="Time-Stamps" type="Optional"/>
-         <avprule id="Application-Server-Information" type="Optional" qual="*"/>
-         <avprule id="Inter-Operator-Identifier" type="Optional" qual="*"/>
-         <avprule id="IMS-Charging-Identifier" type="Optional"/>
-         <avprule id="SDP-Session-Description" type="Optional" qual="*"/>
-         <avprule id="SDP-Media-Component" type="Optional" qual="*"/>
-         <avprule id="Served-Party-IP-Address" type="Optional"/>
-         <avprule id="Server-Capabilities" type="Optional"/>
-         <avprule id="Trunk-Group-ID" type="Optional"/>
-         <avprule id="Bearer-Service" type="Optional"/>
-         <avprule id="Service-Id" type="Optional"/>
-         <avprule id="Service-Specific-Info" type="Optional" qual="*"/>
-         <avprule id="Message-Body" type="Optional" qual="*"/>
-         <avprule id="Cause-Code" type="Optional"/>
-         <avprule id="Access-Network-Information" type="Optional"/>
-         <avprule id="Early-Media-Description" type="Optional" qual="*"/>
-         <avprule id="IMS-Communication-Service-Identifier" type="Optional"/>
-         <avprule id="Online-Charging-Flag" type="Optional"/>
-         <avprule id="Real-Time-Tariff-Information" type="Optional"/>
-         <avprule id="Account-Expiration" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="MMS-Information" code="877" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Originator-Address" type="Optional"/>
-         <avprule id="Recipient-Address" type="Optional" qual="*"/>
-         <avprule id="Submission-Time" type="Optional"/>
-         <avprule id="MM-Content-Type" type="Optional"/>
-         <avprule id="Priority" type="Optional"/>
-         <avprule id="Message-ID" type="Optional"/>
-         <avprule id="Message-Type" type="Optional"/>
-         <avprule id="Message-Size" type="Optional"/>
-         <avprule id="Message-Class" type="Optional"/>
-         <avprule id="Delivery-Report-Requested" type="Optional"/>
-         <avprule id="Read-Reply-Report-Requested" type="Optional"/>
-         <avprule id="MMBox-Storage-Requested" type="Optional"/>
-         <avprule id="Applic-ID" type="Optional"/>
-         <avprule id="Reply-Applic-ID" type="Optional"/>
-         <avprule id="Aux-Applic-Info" type="Optional"/>
-         <avprule id="Content-Class" type="Optional"/>
-         <avprule id="DRM-Content" type="Optional"/>
-         <avprule id="Adaptations" type="Optional"/>
-         <avprule id="VASP-Id" type="Optional"/>
-         <avprule id="VAS-Id" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Media-Initiator-Flag" code="882" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="CALLING_PARTY"/>
-         <label data="1" alias="CALLED_PARTY"/>
-         <label data="2" alias="UNKNOWN"/>
-      </single>
-   </avp>
-   <avp name="Number-Of-Participants" code="885" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Originator-Address" code="886" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Address-Type" type="Optional"/>
-         <avprule id="Address-Data" type="Optional"/>
-         <avprule id="Address-Domain" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Expires" code="888" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Message-Body" code="889" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Content-Type" type="Mandatory"/>
-         <avprule id="Content-Length" type="Mandatory"/>
-         <avprule id="Content-Disposition" type="Optional"/>
-         <avprule id="Originator" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Address-Data" code="897" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Address-Domain" code="898" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Domain-Name" type="Optional"/>
-         <avprule id="3GPP-IMSI-MCC-MNC" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Address-Type" code="899" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-7">
-         <label data="0" alias="e-mail address"/>
-         <label data="1" alias="MSISDN"/>
-         <label data="2" alias="IPv4 Address"/>
-         <label data="3" alias="IPv6 Address"/>
-         <label data="4" alias="Numeric Shortcode"/>
-         <label data="5" alias="Alphanumeric Shortcode"/>
-         <label data="6" alias="Other"/>
-         <label data="7" alias="IMSI"/>
-      </single>
-   </avp>
-   <avp name="Charging-Rule-Base-Name" code="1004" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="IP-CAN-Type" code="1027" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-6">
-         <label data="0" alias="3GPP-GPRS"/>
-         <label data="1" alias="DOCSIS"/>
-         <label data="2" alias="xDSL"/>
-         <label data="3" alias="WiMAX"/>
-         <label data="4" alias="3GPP2"/>
-         <label data="5" alias="3GP-EPS"/>
-         <label data="6" alias="Non-3GPP-EPS"/>
-      </single>
-   </avp>
-   <avp name="RAT-Type" code="1032" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Enumerated" enum="0-2,1000-1004,2000-2003">
-         <label data="0" alias="WLAN"/>
-         <label data="1" alias="VIRTUAL"/>
-         <label data="2" alias="BBF"/>
-         <label data="1000" alias="UTRAN"/>
-         <label data="1001" alias="GERAN"/>
-         <label data="1002" alias="GAN"/>
-         <label data="1003" alias="HSPA_EVOLUTION"/>
-         <label data="1004" alias="EUTRAN"/>
-         <label data="2000" alias="CDMA2000_1X"/>
-         <label data="2001" alias="HRPD"/>
-         <label data="2002" alias="UMB"/>
-         <label data="2003" alias="EHRPD"/>
-      </single>
-   </avp>
-   <avp name="VASP-Id" code="1101" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="VAS-Id" code="1102" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Domain-Name" code="1200" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Recipient-Address" code="1201" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Address-Type" type="Optional"/>
-         <avprule id="Address-Data" type="Optional"/>
-         <avprule id="Address-Domain" type="Optional"/>
-         <avprule id="Addressee-Type" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Submission-Time" code="1202" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="MM-Content-Type" code="1203" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Type-Number" type="Optional"/>
-         <avprule id="Additional-Type-Information" type="Optional"/>
-         <avprule id="Content-Size" type="Optional"/>
-         <avprule id="Additional-Content-Information" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Type-Number" code="1204" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-88"/>
-   </avp>
-   <avp name="Additional-Type-Information" code="1205" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Content-Size" code="1206" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Additional-Content-Information" code="1207" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Type-Number" type="Optional"/>
-         <avprule id="Additional-Type-Information" type="Optional"/>
-         <avprule id="Content-Size" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Addressee-Type" code="1208" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="TO"/>
-         <label data="1" alias="CC"/>
-         <label data="2" alias="BCC"/>
-      </single>
-   </avp>
-   <avp name="Priority" code="1209" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="Low"/>
-         <label data="1" alias="Normal"/>
-         <label data="2" alias="High"/>
-      </single>
-   </avp>
-   <avp name="Message-ID" code="1210" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Message-Type" code="1211" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="1-15">
-         <label data="1" alias="m-send-req"/>
-         <label data="2" alias="m-send-conf"/>
-         <label data="3" alias="m-notification-ind"/>
-         <label data="4" alias="m-notifyresp-ind"/>
-         <label data="5" alias="m-retrieve-conf"/>
-         <label data="6" alias="m-acknowledge-ind"/>
-         <label data="7" alias="m-delivery-ind"/>
-         <label data="8" alias="m-read-rec-ind"/>
-         <label data="9" alias="m-read-orig-ind"/>
-         <label data="10" alias="m-forward-req"/>
-         <label data="11" alias="m-forward-conf"/>
-         <label data="12" alias="m-mbox-store-conf"/>
-         <label data="13" alias="m-mbox-view-conf"/>
-         <label data="14" alias="m-mbox-upload-conf"/>
-         <label data="15" alias="m-mbox-delete-conf"/>
-      </single>
-   </avp>
-   <avp name="Message-Size" code="1212" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Message-Class" code="1213" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Class-Identifier" type="Optional"/>
-         <avprule id="Token-Text" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Class-Identifier" code="1214" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="Personal"/>
-         <label data="1" alias="Advertisement"/>
-         <label data="2" alias="Informational"/>
-         <label data="3" alias="Auto"/>
-      </single>
-   </avp>
-   <avp name="Token-Text" code="1215" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Delivery-Report-Requested" code="1216" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="No"/>
-         <label data="1" alias="Yes"/>
-      </single>
-   </avp>
-   <avp name="Adaptations" code="1217" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="Yes"/>
-         <label data="1" alias="No"/>
-      </single>
-   </avp>
-   <avp name="Applic-ID" code="1218" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Aux-Applic-Info" code="1219" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Content-Class" code="1220" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-7">
-         <label data="0" alias="text"/>
-         <label data="1" alias="image-basic"/>
-         <label data="2" alias="image-rich"/>
-         <label data="3" alias="video-basic"/>
-         <label data="4" alias="video-rich"/>
-         <label data="5" alias="megapixel"/>
-         <label data="6" alias="content-basic"/>
-         <label data="7" alias="content-rich"/>
-      </single>
-   </avp>
-   <avp name="DRM-Content" code="1221" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="No"/>
-         <label data="1" alias="Yes"/>
-      </single>
-   </avp>
-   <avp name="Read-Reply-Report-Requested" code="1222" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="No"/>
-         <label data="1" alias="Yes"/>
-      </single>
-   </avp>
-   <avp name="Reply-Applic-ID" code="1223" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Unit-Quota-Threshold" code="1226" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="PDP-Address" code="1227" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="SGSN-Address" code="1228" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="PDP-Context-Type" code="1247" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="MMBox-Storage-Requested" code="1248" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="No"/>
-         <label data="1" alias="Yes"/>
-      </single>
-   </avp>
-   <avp name="Service-Specific-Info" code="1249" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Service-Specific-Type" type="Optional"/>
-         <avprule id="Service-Specific-Data" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Called-Asserted-Identity" code="1250" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Requested-Party-Address" code="1251" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Service-Generic-Information" code="1256" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Application-Server-ID" type="Optional"/>
-         <avprule id="Application-Service-Type" type="Optional"/>
-         <avprule id="Application-Session-ID" type="Optional"/>
-         <avprule id="Delivery-Status" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Service-Specific-Type" code="1257" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Access-Network-Information" code="1263" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Trigger" code="1264" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Trigger-Type" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Base-Time-Interval" code="1265" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Envelope" code="1266" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Envelope-Start-Time" type="Mandatory"/>
-         <avprule id="Envelope-End-Time" type="Optional"/>
-         <avprule id="CC-Total-Octets" type="Optional"/>
-         <avprule id="CC-Input-Octets" type="Optional"/>
-         <avprule id="CC-Output-Octets" type="Optional"/>
-         <avprule id="CC-Service-Specific-Units" type="Optional"/>
-         <avprule id="AVP" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Envelope-End-Time" code="1267" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Envelope-Reporting" code="1268" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="DO_NOT_REPORT_ENVELOPES"/>
-         <label data="1" alias="REPORT_ENVELOPES"/>
-         <label data="2" alias="REPORT_ENVELOPES_WITH_VOLUME"/>
-         <label data="3" alias="REPORT_ENVELOPES_WITH_EVENTS"/>
-         <label data="4" alias="REPORT_ENVELOPES_WITH_VOLUME_AND_EVENTS"/>
-      </single>
-   </avp>
-   <avp name="Envelope-Start-Time" code="1269" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Time-Quota-Mechanism" code="1270" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Time-Quota-Type" type="Mandatory"/>
-         <avprule id="Base-Time-Interval" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="Time-Quota-Type" code="1271" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="DISCRETE_TIME_PERIOD"/>
-         <label data="1" alias="CONTINUOUS_TIME_PERIOD"/>
-      </single>
-   </avp>
-   <avp name="Early-Media-Description" code="1272" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SDP-TimeStamps" type="Optional"/>
-         <avprule id="SDP-Media-Component" type="Optional" qual="*"/>
-         <avprule id="SDP-Session-Description" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="SDP-TimeStamps" code="1273" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SDP-Offer-Timestamp" type="Optional"/>
-         <avprule id="SDP-Answer-Timestamp" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="SDP-Offer-Timestamp" code="1274" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="SDP-Answer-Timestamp" code="1275" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="AF-Correlation-Information" code="1276" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="AF-Charging-Identifier" type="Mandatory"/>
-         <avprule id="Flows" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Alternate-Charged-Party-Address" code="1280" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="IMS-Communication-Service-Identifier" code="1281" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Media-Initiator-Party" code="1288" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="SMS-Information" code="2000" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="SMS-Node" type="Optional"/>
-         <avprule id="Client-Address" type="Optional"/>
-         <avprule id="Originator-SCCP-Address" type="Optional"/>
-         <avprule id="SMSC-Address" type="Optional"/>
-         <avprule id="Data-Coding-Scheme" type="Optional"/>
-         <avprule id="SM-Discharge-Time" type="Optional"/>
-         <avprule id="SM-Message-Type" type="Optional"/>
-         <avprule id="Originator-Interface" type="Optional"/>
-         <avprule id="SM-Protocol-ID" type="Optional"/>
-         <avprule id="Reply-Path-Requested" type="Optional"/>
-         <avprule id="SM-Status" type="Optional"/>
-         <avprule id="SM-User-Data-Header" type="Optional"/>
-         <avprule id="Number-Of-Messages-Sent" type="Optional"/>
-         <avprule id="Recipient-Info" type="Optional" qual="*"/>
-         <avprule id="Originator-Received-Address" type="Optional"/>
-         <avprule id="SM-Service-Type" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Data-Coding-Scheme" code="2001" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Integer32"/>
-   </avp>
-   <avp name="Destination-Interface" code="2002" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Interface-Id" type="Optional"/>
-         <avprule id="Interface-Text" type="Optional"/>
-         <avprule id="Interface-Port" type="Optional"/>
-         <avprule id="Interface-Type" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Interface-Id" code="2003" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Interface-Port" code="2004" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Interface-Text" code="2005" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Interface-Type" code="2006" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="Unknown"/>
-         <label data="1" alias="MOBILE_ORIGINATING"/>
-         <label data="2" alias="MOBILE_TERMINATING"/>
-         <label data="3" alias="APPLICATION_ORIGINATING"/>
-         <label data="4" alias="APPLICATION_TERMINATION"/>
-      </single>
-   </avp>
-   <avp name="SM-Message-Type" code="2007" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-2">
-         <label data="0" alias="SUBMISSION"/>
-         <label data="1" alias="DELIVERY_REPORT"/>
-         <label data="2" alias="SM Service Request"/>
-      </single>
-   </avp>
-   <avp name="Originator-SCCP-Address" code="2008" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Originator-Interface" code="2009" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Interface-Id" type="Optional"/>
-         <avprule id="Interface-Text" type="Optional"/>
-         <avprule id="Interface-Port" type="Optional"/>
-         <avprule id="Interface-Type" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Recipient-SCCP-Address" code="2010" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Reply-Path-Requested" code="2011" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="No Reply Path Set"/>
-         <label data="1" alias="Reply path Set"/>
-      </single>
-   </avp>
-   <avp name="SM-Discharge-Time" code="2012" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="SM-Protocol-ID" code="2013" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="SM-Status" code="2014" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="SM-User-Data-Header" code="2015" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="SMS-Node" code="2016" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-3">
-         <label data="0" alias="SMS Router"/>
-         <label data="1" alias="IP-SM-GW"/>
-         <label data="2" alias="SMS Router and IP-SM-GW"/>
-         <label data="3" alias="SMS-SC"/>
-      </single>
-   </avp>
-   <avp name="SMSC-Address" code="2017" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Client-Address" code="2018" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Address"/>
-   </avp>
-   <avp name="Number-Of-Messages-Sent" code="2019" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Low-Balance-Indication" code="2020" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="NOT_APPLICABLE"/>
-         <label data="1" alias="YES"/>
-      </single>
-   </avp>
-   <avp name="Remaining-Balance" code="2021" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Unit-Value" type="Mandatory"/>
-         <avprule id="Currency-Code" type="Mandatory"/>
-      </grouped>
-   </avp>
-   <avp name="Refund-Information" code="2022" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="OctetString"/>
-   </avp>
-   <avp name="Carrier-Select-Routing-Information" code="2023" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Number-Portability-Routing-Information" code="2024" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Recipient-Info" code="2026" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Destination-Interface" type="Optional"/>
-         <avprule id="Recipient-Address" type="Optional" qual="*"/>
-         <avprule id="Recipient-Received-Address" type="Optional" qual="*"/>
-         <avprule id="Recipient-SCCP-Address" type="Optional"/>
-         <avprule id="SM-Protocol-ID" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Originator-Received-Address" code="2027" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Address-Type" type="Optional"/>
-         <avprule id="Address-Data" type="Optional"/>
-         <avprule id="Address-Domain" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Recipient-Received-Address" code="2028" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Address-Type" type="Optional"/>
-         <avprule id="Address-Data" type="Optional"/>
-         <avprule id="Address-Domain" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="SM-Service-Type" code="2029" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-10">
-         <label data="0" alias="VAS4SMS Short Message content processing"/>
-         <label data="1" alias="VAS4SMS Short Message forwarding"/>
-         <label data="2" alias="VAS4SMS Short Message Forwarding multiple subscriptions"/>
-         <label data="3" alias="VAS4SMS Short Message filtering"/>
-         <label data="4" alias="VAS4SMS Short Message receipt"/>
-         <label data="5" alias="VAS4SMS Short Message Network Storage"/>
-         <label data="6" alias="VAS4SMS Short Message to multiple destinations"/>
-         <label data="7" alias="VAS4SMS Short Message Virtual Private Network (VPN)"/>
-         <label data="8" alias="VAS4SMS Short Message Auto Reply"/>
-         <label data="9" alias="VAS4SMS Short Message Personal Signature"/>
-         <label data="10" alias="VAS4SMS Short Message Deferred Delivery"/>
-      </single>
-   </avp>
-   <avp name="SDP-Type" code="2036" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="SDP Offer"/>
-         <label data="1" alias="SDP Answer"/>
-      </single>
-   </avp>
-   <avp name="Current-Tariff" code="2056" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Currency-Code" type="Optional"/>
-         <avprule id="Scale-Factor" type="Optional"/>
-         <avprule id="Rate-Element" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Next-Tariff" code="2057" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Currency-Code" type="Optional"/>
-         <avprule id="Scale-Factor" type="Optional"/>
-         <avprule id="Rate-Element" type="Optional" qual="*"/>
-      </grouped>
-   </avp>
-   <avp name="Rate-Element" code="2058" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="CC-Unit-Type" type="Mandatory"/>
-         <avprule id="Reason-Code" type="Optional"/>
-         <avprule id="Unit-Value" type="Optional"/>
-         <avprule id="Unit-Cost" type="Optional"/>
-         <avprule id="Unit-Quota-Threshold" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Scale-Factor" code="2059" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Value-Digits" type="Mandatory"/>
-         <avprule id="Exponent" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Tariff-Information" code="2060" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Current-Tariff" type="Mandatory"/>
-         <avprule id="Tariff-Time-Change" type="Optional"/>
-         <avprule id="Next-Tariff" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Unit-Cost" code="2061" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Value-Digits" type="Mandatory"/>
-         <avprule id="Exponent" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Application-Server-ID" code="2101" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Application-Service-Type" code="2102" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="100-105">
-         <label data="100" alias="SENDING"/>
-         <label data="101" alias="RECEIVING"/>
-         <label data="102" alias="RETRIEVAL"/>
-         <label data="103" alias="INVITING"/>
-         <label data="104" alias="LEAVING"/>
-         <label data="105" alias="JOINING"/>
-      </single>
-   </avp>
-   <avp name="Application-Session-ID" code="2103" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Delivery-Status" code="2104" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="SIP-Request-Timestamp-Fraction" code="2301" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="SIP-Response-Timestamp-Fraction" code="2302" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Unsigned32"/>
-   </avp>
-   <avp name="Online-Charging-Flag" code="2303" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-1">
-         <label data="0" alias="ECF address not provided"/>
-         <label data="1" alias="ECF address provided"/>
-      </single>
-   </avp>
-   <avp name="Real-Time-Tariff-Information" code="2305" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <grouped>
-         <avprule id="Tariff-Information" type="Optional"/>
-         <avprule id="Tariff-XML" type="Optional"/>
-      </grouped>
-   </avp>
-   <avp name="Tariff-XML" code="2306" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Account-Expiration" code="2309" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Time"/>
-   </avp>
-   <avp name="Reason-Code" code="2316" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="Enumerated" enum="0-4">
-         <label data="0" alias="UNKNOWN"/>
-         <label data="1" alias="USAGE"/>
-         <label data="2" alias="COMMUNICATION-ATTEMPT-CHARGE"/>
-         <label data="3" alias="SETUP-CHARGE"/>
-         <label data="4" alias="ADD-ON-CHARGE"/>
-      </single>
-   </avp>
-   <avp name="Outgoing-Session-Id" code="2320" vendor-name="3GPP" may-encrypt="no" v-bit="must" m-bit="must" p-bit="may">
-      <single format-name="UTF8String"/>
-   </avp>
-   <avp name="Reservation-Priority" code="458" vendor-name="ETSI" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="may">
-      <single format-name="Enumerated" enum="0-15">
-         <label data="0" alias="DEFAULT"/>
-         <label data="1" alias="PRIORITY-ONE"/>
-         <label data="2" alias="PRIORITY-TWO"/>
-         <label data="3" alias="PRIORITY-THREE"/>
-         <label data="4" alias="PRIORITY-FOUR"/>
-         <label data="5" alias="PRIORITY-FIVE"/>
-         <label data="6" alias="PRIORITY-SIX"/>
-         <label data="7" alias="PRIORITY-SEVEN"/>
-         <label data="8" alias="PRIORITY-EIGHT"/>
-         <label data="9" alias="PRIORITY-NINE"/>
-         <label data="10" alias="PRIORITY-TEN"/>
-         <label data="11" alias="PRIORITY-ELEVEN"/>
-         <label data="12" alias="PRIORITY-TWELVE"/>
-         <label data="13" alias="PRIORITY-THIRTEEN"/>
-         <label data="14" alias="PRIORITY-FOURTEEN"/>
-         <label data="15" alias="PRIORITY-FIFTEEN"/>
-      </single>
-   </avp>
-   <command name="Capabilities-Exchange-Request" code="257" type="Request">
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
-      <avprule id="Vendor-Id" type="Mandatory"/>
-      <avprule id="Product-Name" type="Mandatory"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
-      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
-      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
-      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
-      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
-      <avprule id="Firmware-Revision" type="Optional"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Capabilities-Exchange-Answer" code="257" type="Answer">
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
-      <avprule id="Vendor-Id" type="Mandatory"/>
-      <avprule id="Product-Name" type="Mandatory"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
-      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
-      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
-      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
-      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
-      <avprule id="Firmware-Revision" type="Optional"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Re-Auth-Request" code="258" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Destination-Host" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Specific-Action" type="Mandatory"/>
-      <avprule id="Access-Network-Charging-Identifier" type="Optional" qual="*"/>
-      <avprule id="Access-Network-Charging-Address" type="Optional"/>
-      <avprule id="Flows" type="Optional" qual="*"/>
-      <avprule id="Subscription-Id" type="Optional" qual="*"/>
-      <avprule id="Abort-Cause" type="Optional"/>
-      <avprule id="IP-CAN-Type" type="Optional"/>
-      <avprule id="RAT-Type" type="Optional"/>
-      <avprule id="Sponsored-Connectivity-Data" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Class" type="Optional" qual="*"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Re-Auth-Answer" code="258" type="Answer">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Experimental-Result" type="Optional"/>
-      <avprule id="Media-Component-Description" type="Optional" qual="*"/>
-      <avprule id="Service-URN" type="Optional"/>
-      <avprule id="Class" type="Optional" qual="*"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Error-Reporting-Host" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host-Usage" type="Optional"/>
-      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="AA-Request" code="265" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Destination-Host" type="Optional"/>
-      <avprule id="AF-Application-Identifier" type="Optional"/>
-      <avprule id="Media-Component-Description" type="Optional" qual="*"/>
-      <avprule id="Service-Info-Status" type="Optional"/>
-      <avprule id="AF-Charging-Identifier" type="Optional"/>
-      <avprule id="SIP-Forking-Indication" type="Optional"/>
-      <avprule id="Specific-Action" type="Optional" qual="*"/>
-      <avprule id="Subscription-Id" type="Optional" qual="*"/>
-      <avprule id="Supported-Features" type="Optional" qual="*"/>
-      <avprule id="Reservation-Priority" type="Optional"/>
-      <avprule id="Framed-IP-Address" type="Optional"/>
-      <avprule id="Framed-IPv6-Prefix" type="Optional"/>
-      <avprule id="Called-Station-Id" type="Optional"/>
-      <avprule id="Service-URN" type="Optional"/>
-      <avprule id="Sponsored-Connectivity-Data" type="Optional"/>
-      <avprule id="MPS-Identifier" type="Optional"/>
-      <avprule id="Rx-Request-Type" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="AA-Answer" code="265" type="Answer">
-      <!--<avprule id="Session-Id" type="Fixed"/> some providers must not respect this -->
-      <avprule id="Session-Id" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Result-Code" type="Optional"/>
-      <avprule id="Experimental-Result" type="Optional"/>
-      <avprule id="Access-Network-Charging-Identifier" type="Optional" qual="*"/>
-      <avprule id="Access-Network-Charging-Address" type="Optional"/>
-      <avprule id="Acceptable-Service-Info" type="Optional"/>
-      <avprule id="IP-CAN-Type" type="Optional"/>
-      <avprule id="RAT-Type" type="Optional"/>
-      <avprule id="Flows" type="Optional" qual="*"/>
-      <avprule id="Supported-Features" type="Optional" qual="*"/>
-      <avprule id="Class" type="Optional" qual="*"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Error-Reporting-Host" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Redirect-Host" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host-Usage" type="Optional"/>
-      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Accounting-Request" code="271" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Accounting-Record-Type" type="Mandatory"/>
-      <avprule id="Accounting-Record-Number" type="Mandatory"/>
-      <avprule id="Acct-Application-Id" type="Optional"/>
-      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
-      <avprule id="User-Name" type="Optional"/>
-      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
-      <avprule id="Accounting-Session-Id" type="Optional"/>
-      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
-      <avprule id="Acct-Interim-Interval" type="Optional"/>
-      <avprule id="Accounting-Realtime-Required" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Event-Timestamp" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Accounting-Answer" code="271" type="Answer">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Accounting-Record-Type" type="Mandatory"/>
-      <avprule id="Accounting-Record-Number" type="Mandatory"/>
-      <avprule id="Acct-Application-Id" type="Optional"/>
-      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
-      <avprule id="User-Name" type="Optional"/>
-      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
-      <avprule id="Accounting-Session-Id" type="Optional"/>
-      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
-      <avprule id="Error-Reporting-Host" type="Optional"/>
-      <avprule id="Acct-Interim-Interval" type="Optional"/>
-      <avprule id="Accounting-Realtime-Required" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Event-Timestamp" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Credit-Control-Request" code="272" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Service-Context-Id" type="Optional"/>
-      <avprule id="CC-Request-Type" type="Mandatory"/>
-      <avprule id="CC-Request-Number" type="Mandatory"/>
-      <avprule id="Destination-Host" type="Optional"/>
-      <avprule id="User-Name" type="Optional"/>
-      <avprule id="CC-Sub-Session-Id" type="Optional"/>
-      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Event-Timestamp" type="Optional"/>
-      <avprule id="Subscription-Id" type="Optional" qual="*"/>
-      <avprule id="Service-Identifier" type="Optional"/>
-      <avprule id="Termination-Cause" type="Optional"/>
-      <avprule id="Requested-Service-Unit" type="Optional"/>
-      <avprule id="Requested-Action" type="Optional"/>
-      <avprule id="Used-Service-Unit" type="Optional" qual="*"/>
-      <avprule id="Multiple-Services-Indicator" type="Optional"/>
-      <avprule id="Multiple-Services-Credit-Control" type="Optional" qual="*"/>
-      <avprule id="Service-Parameter-Info" type="Optional" qual="*"/>
-      <avprule id="CC-Correlation-Id" type="Optional"/>
-      <avprule id="User-Equipment-Info" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Credit-Control-Answer" code="272" type="Answer">
-      <!--<avprule id="Session-Id" type="Fixed"/> some providers must not respect this -->
-      <avprule id="Session-Id" type="Mandatory"/>
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="CC-Request-Type" type="Mandatory"/>
-      <avprule id="CC-Request-Number" type="Mandatory"/>
-      <avprule id="User-Name" type="Optional"/>
-      <avprule id="CC-Session-Failover" type="Optional"/>
-      <avprule id="CC-Sub-Session-Id" type="Optional"/>
-      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Event-Timestamp" type="Optional"/>
-      <avprule id="Granted-Service-Unit" type="Optional"/>
-      <avprule id="Multiple-Services-Credit-Control" type="Optional" qual="*"/>
-      <avprule id="Cost-Information" type="Optional"/>
-      <avprule id="Final-Unit-Indication" type="Optional"/>
-      <avprule id="Check-Balance-Result" type="Optional"/>
-      <avprule id="Credit-Control-Failure-Handling" type="Optional"/>
-      <avprule id="Direct-Debiting-Failure-Handling" type="Optional"/>
-      <avprule id="Validity-Time" type="Optional"/>
-      <avprule id="Redirect-Host" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host-Usage" type="Optional"/>
-      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Abort-Session-Request" code="274" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Destination-Host" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Abort-Cause" type="Mandatory"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Abort-Session-Answer" code="274" type="Answer">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Error-Reporting-Host" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host-Usage" type="Optional"/>
-      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Session-Termination-Request" code="275" type="Request">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Destination-Realm" type="Mandatory"/>
-      <avprule id="Auth-Application-Id" type="Mandatory"/>
-      <avprule id="Termination-Cause" type="Mandatory"/>
-      <avprule id="Destination-Host" type="Optional"/>
-      <avprule id="Class" type="Optional" qual="*"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="Route-Record" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Session-Termination-Answer" code="275" type="Answer">
-      <avprule id="Session-Id" type="Fixed"/>
-      <avprule id="Result-Code" type="Optional"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Class" type="Optional" qual="*"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Error-Reporting-Host" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Sponsored-Connectivity-Data" type="Optional"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-      <avprule id="Redirect-Host" type="Optional" qual="*"/>
-      <avprule id="Redirect-Host-Usage" type="Optional"/>
-      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
-      <avprule id="Proxy-Info" type="Optional" qual="*"/>
-      <avprule id="AVP" type="Optional" qual="*"/>
-   </command>
-   <command name="Device-Watchdog-Request" code="280" type="Request">
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-   </command>
-   <command name="Device-Watchdog-Answer" code="280" type="Answer">
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-      <avprule id="Origin-State-Id" type="Optional"/>
-   </command>
-   <command name="Disconnect-Peer-Request" code="282" type="Request">
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Disconnect-Cause" type="Mandatory"/>
-   </command>
-   <command name="Disconnect-Peer-Answer" code="282" type="Answer">
-      <avprule id="Result-Code" type="Mandatory"/>
-      <avprule id="Origin-Host" type="Mandatory"/>
-      <avprule id="Origin-Realm" type="Mandatory"/>
-      <avprule id="Error-Message" type="Optional"/>
-      <avprule id="Failed-AVP" type="Optional" qual="*"/>
-   </command>
-</dictionary>
index d3f6f4e..c8bbea7 100644 (file)
 #include <anna/core/tracing/Logger.hpp>
 #include <anna/core/tracing/TraceWriter.hpp>
 #include <anna/core/RuntimeException.hpp>
-#include <anna/xml/xml.hpp>
-#include <anna/diameter/stack/Engine.hpp>
-#include <anna/diameter/codec/Engine.hpp>
-#include <anna/diameter/codec/Message.hpp>
-//#include <anna/diameter/defines.hpp> // typedef unsigned int ApplicationId;
-#include <anna/diameter/codec/functions.hpp> // ApplicationId anna::diameter::codec::functions::getApplicationId(const anna::DataBlock &) throw(anna::RuntimeException);
 
 
 using namespace anna;
-using namespace anna::diameter;
 
 // Payload and frame metadata /////////////////////////////////////////////////////////////////////////////
 class Payload {
@@ -149,8 +142,6 @@ public:
 typedef std::map < int /* frame */, Payload > payloads_t;
 typedef std::map < int /* frame */, Payload >::const_iterator payloads_it;
 payloads_t G_payloads;
-anna::diameter::codec::Message G_codecMsg;
-anna::diameter::codec::Engine *G_codecEngine;
 
 // Sniffing structures ////////////////////////////////////////////////////////////////////////////////////
 
@@ -327,17 +318,6 @@ void _exit(const std::string &message, int resultCode = 1) {
   exit(resultCode);
 }
 
-// Decodes a diameter message coming from a datablock
-void decodeDataBlock(const anna::DataBlock &db, unsigned int & detectedApplicationId) throw() {
-  try {
-    detectedApplicationId = anna::diameter::codec::functions::getApplicationId(db);
-    G_codecEngine->setDictionary(detectedApplicationId);
-    G_codecMsg.decode(db);
-  } catch(RuntimeException &ex) {
-    _exit(ex.asString());
-  }
-}
-
 
 //-------------------------------------------------------------------
 int main(int argc, char **argv) {
@@ -347,111 +327,27 @@ int main(int argc, char **argv) {
   std::cout << std::endl;
 
   //check command line arguments
-  if(argc < 3) {
+  if(argc < 2) {
     std::string msg = "Usage: "; msg += exec;
-    msg += " <stacks> <input file> [--no-validation] [--ignore-flags] [--debug]\n\n";
-    msg += "       stacks:                  <id1,dictionary1#id2,dictionary2#...#idN,dictionaryN>\n";
-    msg += "                                This is a list of #-separated stacks defined by a comma-separated pair <application-id,xml dictionary pathfile>\n";
-    msg += "                                If only one stack is provided, application-id could be omitted and then, all the messages will be decoded with the\n";
-    msg += "                                dictionary regardless the value of the application-id (the stack will be registered with id=0).\n";
-    msg += "       Input file:              normally a pcap file, but hexadecimal content (colons allowed) can also be decoded (use '.hex' extension).\n";
-    msg += "       --no-validation:         no validation is performed.\n";
-    msg += "       --ignore-flags:          wrong flags regarding dictionary are ignored in xml representation.\n";
-    msg += "       --debug:                 activates debug level traces (warning by default).";
+    msg += " <pcap file> [--write-hex: to write hex files] [--debug: activates debug level traces (warning by default)]\n\n";
     _exit(msg);
   }
 
   // Command-line parameters:
-  std::string stacks = argv[1];
-  std::string inputFile = argv[2];
+  std::string inputFile = argv[1];
   bool isHex = (inputFile.substr(inputFile.find_last_of(".") + 1) == "hex");
   std::string outputFile = inputFile; // extension will be added later
   std::string optionals;
-  int indx = 3;
-
+  int indx = 2;
   while(indx < argc) { optionals += " "; optionals += argv[indx]; indx++; }
 
-  bool no_validation = (optionals.find("--no-validation") != std::string::npos);
-  bool ignore_flags = (optionals.find("--ignore-flags") != std::string::npos);
   bool debug = (optionals.find("--debug") != std::string::npos);
+  bool writeHex = (optionals.find("--write-hex") != std::string::npos);
   Logger::setLevel(debug ? Logger::Debug:Logger::Warning);
   Logger::initialize(execBN.c_str(), new TraceWriter(filetrace.c_str(), 2048000));
-  G_codecEngine = new anna::diameter::codec::Engine();
-  anna::diameter::stack::Engine &stackEngine =
-    anna::diameter::stack::Engine::instantiate();
-
-  // Register stacks:
-  try {
-    anna::Tokenizer stacksTok;
-    stacksTok.apply(stacks, "#");
-    anna::Tokenizer::const_iterator stacks_it, stack_it;
-
-    for(stacks_it = stacksTok.begin(); stacks_it != stacksTok.end(); stacks_it++) {
-      std::string stack = anna::Tokenizer::data(stacks_it);
-      anna::Tokenizer stackTok;
-      stackTok.apply(stack, ",");
-
-      if(stackTok.size() == 1) {
-        if(stacksTok.size() != 1)
-          throw anna::RuntimeException("Application Id value is mandatory when more than one stack is going to be configured", ANNA_FILE_LOCATION);
-
-        anna::diameter::stack::Dictionary * d = stackEngine.createDictionary(0 /* no matter */, stack); // the stack is the dictionary
-        G_codecEngine->setDictionary(d);
-        break;
-      }
-
-      if(stackTok.size() != 2)
-        throw anna::RuntimeException("Each stack must be in the form '<application-id>#<xml dictionary pathfile>'", ANNA_FILE_LOCATION);
-
-      stack_it = stackTok.begin();
-      unsigned int stackId = atoll(anna::Tokenizer::data(stack_it));
-      stack_it++;
-      std::string file = anna::Tokenizer::data(stack_it);
-      anna::diameter::stack::Dictionary * d = stackEngine.createDictionary(stackId, file);
-    }
-
-    std::cout << "Stacks provided:          " << std::endl;
-    std::cout << anna::functions::tab(stackEngine.asString(false /* light */));
-    std::cout << std::endl;
-    std::cout << "Input file provided:      " << inputFile << std::endl;
-    std::cout << "Validation:               " << (!no_validation ? "yes" : "no") << std::endl;
-    std::cout << "Ignore Flags:             " << (ignore_flags ? "yes" : "no") << std::endl;
-    std::cout << std::endl;
-  } catch(anna::RuntimeException &ex) {
-    _exit(ex.asString());
-  }
 
-  // Validation kindness
-  G_codecEngine->setValidationDepth(anna::diameter::codec::EngineImpl::ValidationDepth::Complete); // complete validation for better reports
-  if(no_validation) G_codecEngine->setValidationMode(anna::diameter::codec::EngineImpl::ValidationMode::Never);
-
-  if(ignore_flags) G_codecEngine->ignoreFlagsOnValidation(true);
-
-  // Tracing:
-  //if (cl.exists("trace"))
-  //   anna::Logger::setLevel(anna::Logger::asLevel(cl.getValue("trace")));
-  // Check hex content input file (look extension):
   anna::DataBlock db_aux(true);
-  unsigned int detectedApplicationId;
-
-  if(isHex) {
-    if(!getDataBlockFromHexFile(inputFile, db_aux))
-      _exit("Error reading hex file provided");
-
-    // Decode datablock:
-    decodeDataBlock(db_aux, detectedApplicationId);
-    // Open output file:
-    outputFile += ".as.xml";
-    std::ofstream out(outputFile.c_str(), std::ifstream::out);
-    out << G_codecMsg.asXMLString();
-    // Close output file:
-    out.close();
-    std::string msg = "Open '"; msg += filetrace; msg += "' in order to see process traces.\n";
-    msg += "Open '"; msg += outputFile; msg += "' to see decoding results.";
-    _exit(msg, 0);
-  }
 
-  // Normal input: pcap file:
   // SNIFFING //////////////////////////////////////////////////////////////////////////////////////////////7
   //temporary packet buffers
   struct pcap_pkthdr header; // The header that pcap gives us
@@ -464,6 +360,25 @@ int main(int argc, char **argv) {
 
   if(handle == NULL) _exit(errbuf, 2);
 
+  // TODO: add filtering. At the moment, pcap must be previously filtered for diameter protocol ('tcp port 3868' or any other filter allowed)
+  /*
+  // Filtering:
+  std::string filter = ?????;
+  struct bpf_program _fp;
+  struct bpf_program *fp = &_fp;
+  bpf_u_int32 netmask = 4294967295; // FFFFFFFF
+
+  if (pcap_compile(handle, fp, (char*)(filter.c_str()), 1, netmask) == -1) {
+        std::cerr << "Couldn't compile the filter " << filter << std::endl;
+    return(2); 
+  }
+
+  if (pcap_setfilter(handle, fp) == -1) {
+    std::cerr << "Couldn't set the filter " << filter << std::endl; 
+    return(2); 
+  }
+  */
+
   //begin processing the packets in this particular file
   int packets = -1;
 
@@ -475,6 +390,7 @@ int main(int argc, char **argv) {
   }
 
   pcap_close(handle);  //close the pcap file
+
   // Print payloads //////////////////////////////////////////////////////////////////////////////////////////////
   // Open output file:
   outputFile += ".report";
@@ -487,30 +403,31 @@ int main(int argc, char **argv) {
     int tsu = (it->second).getTimestampU();
     std::string ts_str = ctime(&ts);
     ts_str.erase(ts_str.find("\n"));
-    out << std::endl;
-    out
-        << "==================================================================================================="
-        << std::endl;
+    out << "Frame:           " << anna::functions::asString(it->first) << std::endl;
     out << "Date:            " << ts_str << std::endl;
     out << "Timestamp:       " << anna::functions::asString((int)ts) << "."
         << anna::functions::asString((int)tsu) << std::endl;
     out << "Origin IP:       " << (it->second).getSourceIP() << std::endl;
     out << "Destination IP:  " << (it->second).getDestinationIP() << std::endl;
-    // decode hex string:
-    anna::functions::fromHexString((it->second).getDataAsHex(), db_aux);
-    // Decode datablock:
-    decodeDataBlock(db_aux, detectedApplicationId);
-    // Stack identification:
-    //out << "Application Id:  " << detectedApplicationId << std::endl;
-    out << "Dictionary used: " << G_codecEngine->getDictionary()->getName() << std::endl;
+    out << "Destination IP:  " << (it->second).getDestinationIP() << std::endl;
+    out << "Hex String:      " << (it->second).getDataAsHex() << std::endl;
+
+    // Create hex file:
+    if (writeHex) {
+      std::string hexFile =  anna::functions::asString(it->first) + ".hex";
+      std::ofstream hex(hexFile.c_str(), std::ifstream::out);
+      hex << (it->second).getDataAsHex();
+      hex.close();
+    }
+
     out << std::endl;
-    out << G_codecMsg.asXMLString();
   }
 
   // Close output file:
   out.close();
   std::string msg = "Open '"; msg += filetrace; msg += "' in order to see process traces.\n";
-  msg += "Open '"; msg += outputFile; msg += "' to see decoding results.";
+  msg += "Open '"; msg += outputFile; msg += "' to see decoding results.\n";
+  if (writeHex) msg += "Open '<frame number>.hex' to see specific frame data.";
   _exit(msg, 0);
 }