wireshark/epan/dissectors/packet-h248.c

5448 lines
239 KiB
C

/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* .\packet-h248.c */
/* ../../tools/asn2eth.py -X -b -e -p h248 -c h248.cnf -s packet-h248-template MEGACO.asn */
/* Input file: packet-h248-template.c */
/* packet-h248.c
* Routines for H.248/MEGACO packet dissection
* Ronnie Sahlberg 2004
*
* $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
#include "packet-ber.h"
#include "packet-h248.h"
#include "packet-isup.h"
#include "packet-q931.h"
#include "sctpppids.h"
#define PNAME "H.248 MEGACO"
#define PSNAME "H248"
#define PFNAME "h248"
/*XXX this define should be moved to packet-m3ua.h ? */
#define GATEWAY_CONTROL_PROTOCOL_USER_ID 14
/* Initialize the protocol and registered fields */
static int proto_h248 = -1;
static int hf_h248_mtpaddress_ni = -1;
static int hf_h248_mtpaddress_pc = -1;
static int hf_h248_package_name = -1;
static int hf_h248_event_name = -1;
static int hf_h248_signal_name = -1;
static int hf_h248_package_bcp_BNCChar_PDU = -1;
static int hf_h248_package_annex_C_ACodec = -1;
static int hf_h248_package_annex_C_TMR = -1;
static int hf_h248_package_annex_C_Mediatx = -1;
static int hf_h248_package_annex_C_USI = -1;
static int hf_h248_package_annex_C_NSAP = -1;
static int hf_h248_package_annex_C_BIR = -1;
static int hf_h248_package_3GUP_Mode = -1;
static int hf_h248_package_3GUP_UPversions = -1;
static int hf_h248_package_3GUP_delerrsdu = -1;
static int hf_h248_package_3GUP_interface = -1;
static int hf_h248_package_3GUP_initdir = -1;
/*--- Included file: packet-h248-hf.c ---*/
static int hf_h248_authHeader = -1; /* AuthenticationHeader */
static int hf_h248_mess = -1; /* Message */
static int hf_h248_secParmIndex = -1; /* SecurityParmIndex */
static int hf_h248_seqNum = -1; /* SequenceNum */
static int hf_h248_ad = -1; /* AuthData */
static int hf_h248_version = -1; /* INTEGER_0_99 */
static int hf_h248_mId = -1; /* MId */
static int hf_h248_messageBody = -1; /* T_messageBody */
static int hf_h248_messageError = -1; /* ErrorDescriptor */
static int hf_h248_transactions = -1; /* SEQUENCE_OF_Transaction */
static int hf_h248_transactions_item = -1; /* Transaction */
static int hf_h248_ip4Address = -1; /* IP4Address */
static int hf_h248_ip6Address = -1; /* IP6Address */
static int hf_h248_domainName = -1; /* DomainName */
static int hf_h248_deviceName = -1; /* PathName */
static int hf_h248_mtpAddress = -1; /* MtpAddress */
static int hf_h248_domName = -1; /* IA5String */
static int hf_h248_portNumber = -1; /* INTEGER_0_65535 */
static int hf_h248_iP4Address = -1; /* OCTET_STRING_SIZE_4 */
static int hf_h248_iP6Address = -1; /* OCTET_STRING_SIZE_16 */
static int hf_h248_transactionRequest = -1; /* TransactionRequest */
static int hf_h248_transactionPending = -1; /* TransactionPending */
static int hf_h248_transactionReply = -1; /* TransactionReply */
static int hf_h248_transactionResponseAck = -1; /* TransactionResponseAck */
static int hf_h248_transactionId = -1; /* TransactionId */
static int hf_h248_actions = -1; /* SEQUENCE_OF_ActionRequest */
static int hf_h248_actions_item = -1; /* ActionRequest */
static int hf_h248_immAckRequired = -1; /* NULL */
static int hf_h248_transactionResult = -1; /* T_transactionResult */
static int hf_h248_transactionError = -1; /* ErrorDescriptor */
static int hf_h248_actionReplies = -1; /* SEQUENCE_OF_ActionReply */
static int hf_h248_actionReplies_item = -1; /* ActionReply */
static int hf_h248_TransactionResponseAck_item = -1; /* TransactionAck */
static int hf_h248_firstAck = -1; /* TransactionId */
static int hf_h248_lastAck = -1; /* TransactionId */
static int hf_h248_errorCode = -1; /* ErrorCode */
static int hf_h248_errorText = -1; /* ErrorText */
static int hf_h248_contextId = -1; /* ContextID */
static int hf_h248_contextRequest = -1; /* ContextRequest */
static int hf_h248_contextAttrAuditReq = -1; /* ContextAttrAuditRequest */
static int hf_h248_commandRequests = -1; /* SEQUENCE_OF_CommandRequest */
static int hf_h248_commandRequests_item = -1; /* CommandRequest */
static int hf_h248_errorDescriptor = -1; /* ErrorDescriptor */
static int hf_h248_contextReply = -1; /* ContextRequest */
static int hf_h248_commandReply = -1; /* SEQUENCE_OF_CommandReply */
static int hf_h248_commandReply_item = -1; /* CommandReply */
static int hf_h248_priority = -1; /* INTEGER_0_15 */
static int hf_h248_emergency = -1; /* BOOLEAN */
static int hf_h248_topologyReq = -1; /* SEQUENCE_OF_TopologyRequest */
static int hf_h248_topologyReq_item = -1; /* TopologyRequest */
static int hf_h248_topology = -1; /* NULL */
static int hf_h248_cAAREmergency = -1; /* NULL */
static int hf_h248_cAARPriority = -1; /* NULL */
static int hf_h248_command = -1; /* Command */
static int hf_h248_optional = -1; /* NULL */
static int hf_h248_wildcardReturn = -1; /* NULL */
static int hf_h248_addReq = -1; /* AmmRequest */
static int hf_h248_moveReq = -1; /* AmmRequest */
static int hf_h248_modReq = -1; /* AmmRequest */
static int hf_h248_subtractReq = -1; /* SubtractRequest */
static int hf_h248_auditCapRequest = -1; /* AuditRequest */
static int hf_h248_auditValueRequest = -1; /* AuditRequest */
static int hf_h248_notifyReq = -1; /* NotifyRequest */
static int hf_h248_serviceChangeReq = -1; /* ServiceChangeRequest */
static int hf_h248_addReply = -1; /* AmmsReply */
static int hf_h248_moveReply = -1; /* AmmsReply */
static int hf_h248_modReply = -1; /* AmmsReply */
static int hf_h248_subtractReply = -1; /* AmmsReply */
static int hf_h248_auditCapReply = -1; /* AuditReply */
static int hf_h248_auditValueReply = -1; /* AuditReply */
static int hf_h248_notifyReply = -1; /* NotifyReply */
static int hf_h248_serviceChangeReply = -1; /* ServiceChangeReply */
static int hf_h248_terminationFrom = -1; /* TerminationID */
static int hf_h248_terminationTo = -1; /* TerminationID */
static int hf_h248_topologyDirection = -1; /* T_topologyDirection */
static int hf_h248_streamID = -1; /* StreamID */
static int hf_h248_terminationIDList = -1; /* TerminationIDList */
static int hf_h248_descriptors = -1; /* SEQUENCE_OF_AmmDescriptor */
static int hf_h248_descriptors_item = -1; /* AmmDescriptor */
static int hf_h248_mediaDescriptor = -1; /* MediaDescriptor */
static int hf_h248_modemDescriptor = -1; /* ModemDescriptor */
static int hf_h248_muxDescriptor = -1; /* MuxDescriptor */
static int hf_h248_eventsDescriptor = -1; /* EventsDescriptor */
static int hf_h248_eventBufferDescriptor = -1; /* EventBufferDescriptor */
static int hf_h248_signalsDescriptor = -1; /* SignalsDescriptor */
static int hf_h248_digitMapDescriptor = -1; /* DigitMapDescriptor */
static int hf_h248_auditDescriptor = -1; /* AuditDescriptor */
static int hf_h248_terminationAudit = -1; /* TerminationAudit */
static int hf_h248_terminationID = -1; /* TerminationID */
static int hf_h248_contextAuditResult = -1; /* TerminationIDList */
static int hf_h248_error = -1; /* ErrorDescriptor */
static int hf_h248_auditResult = -1; /* AuditResult */
static int hf_h248_terminationAuditResult = -1; /* TerminationAudit */
static int hf_h248_TerminationAudit_item = -1; /* AuditReturnParameter */
static int hf_h248_observedEventsDescriptor = -1; /* ObservedEventsDescriptor */
static int hf_h248_statisticsDescriptor = -1; /* StatisticsDescriptor */
static int hf_h248_packagesDescriptor = -1; /* PackagesDescriptor */
static int hf_h248_emptyDescriptors = -1; /* AuditDescriptor */
static int hf_h248_auditToken = -1; /* T_auditToken */
static int hf_h248_auditPropertyToken = -1; /* SEQUENCE_OF_IndAuditParameter */
static int hf_h248_auditPropertyToken_item = -1; /* IndAuditParameter */
static int hf_h248_indaudmediaDescriptor = -1; /* IndAudMediaDescriptor */
static int hf_h248_indaudeventsDescriptor = -1; /* IndAudEventsDescriptor */
static int hf_h248_indaudeventBufferDescriptor = -1; /* IndAudEventBufferDescriptor */
static int hf_h248_indaudsignalsDescriptor = -1; /* IndAudSignalsDescriptor */
static int hf_h248_indauddigitMapDescriptor = -1; /* IndAudDigitMapDescriptor */
static int hf_h248_indaudstatisticsDescriptor = -1; /* IndAudStatisticsDescriptor */
static int hf_h248_indaudpackagesDescriptor = -1; /* IndAudPackagesDescriptor */
static int hf_h248_indAudTerminationStateDescriptor = -1; /* IndAudTerminationStateDescriptor */
static int hf_h248_indAudMediaDescriptorStreams = -1; /* indAudMediaDescriptorStreams */
static int hf_h248_oneStream = -1; /* IndAudStreamParms */
static int hf_h248_multiStream = -1; /* SEQUENCE_OF_IndAudStreamDescriptor */
static int hf_h248_multiStream_item = -1; /* IndAudStreamDescriptor */
static int hf_h248_indAudStreamParms = -1; /* IndAudStreamParms */
static int hf_h248_iASPLocalControlDescriptor = -1; /* IndAudLocalControlDescriptor */
static int hf_h248_iASPLocalDescriptor = -1; /* IndAudLocalRemoteDescriptor */
static int hf_h248_iASPRemoteDescriptor = -1; /* IndAudLocalRemoteDescriptor */
static int hf_h248_iALCDStreamMode = -1; /* NULL */
static int hf_h248_iALCDReserveValue = -1; /* NULL */
static int hf_h248_iALCDReserveGroup = -1; /* NULL */
static int hf_h248_indAudPropertyParms = -1; /* IndAudPropertyParms */
static int hf_h248_name = -1; /* PkgdName */
static int hf_h248_IndAudPropertyParms_item = -1; /* IndAudPropertyParm */
static int hf_h248_propGroupID = -1; /* INTEGER_0_65535 */
static int hf_h248_iAPropertyGroup = -1; /* IndAudPropertyGroup */
static int hf_h248_IndAudPropertyGroup_item = -1; /* IndAudPropertyParm */
static int hf_h248_eventBufferControl = -1; /* NULL */
static int hf_h248_iATSDServiceState = -1; /* NULL */
static int hf_h248_requestID = -1; /* RequestID */
static int hf_h248_iAEDPkgdName = -1; /* PkgdName */
static int hf_h248_iAEBDEventName = -1; /* PkgdName */
static int hf_h248_indAudSignal = -1; /* IndAudSignal */
static int hf_h248_indAudSeqSigList = -1; /* IndAudSeqSigList */
static int hf_h248_id = -1; /* INTEGER_0_65535 */
static int hf_h248_iASignalList = -1; /* IndAudSignal */
static int hf_h248_iASignalName = -1; /* PkgdName */
static int hf_h248_digitMapName = -1; /* DigitMapName */
static int hf_h248_statName = -1; /* PkgdName */
static int hf_h248_packageName = -1; /* Name */
static int hf_h248_packageVersion = -1; /* INTEGER_0_99 */
static int hf_h248_requestId = -1; /* RequestID */
static int hf_h248_observedEventLst = -1; /* SEQUENCE_OF_ObservedEvent */
static int hf_h248_observedEventLst_item = -1; /* ObservedEvent */
static int hf_h248_eventName = -1; /* EventName */
static int hf_h248_eventParList = -1; /* EventParameters */
static int hf_h248_timeNotation = -1; /* TimeNotation */
static int hf_h248_relation = -1; /* Relation */
static int hf_h248_range = -1; /* BOOLEAN */
static int hf_h248_sublist = -1; /* BOOLEAN */
static int hf_h248_eventParameterName = -1; /* Name */
static int hf_h248_value = -1; /* Value */
static int hf_h248_extraInfo = -1; /* ExtraInfo */
static int hf_h248_EventParameters_item = -1; /* EventParameter */
static int hf_h248_serviceChangeParms = -1; /* ServiceChangeParm */
static int hf_h248_serviceChangeResult = -1; /* ServiceChangeResult */
static int hf_h248_serviceChangeResParms = -1; /* ServiceChangeResParm */
static int hf_h248_wildcard = -1; /* SEQUENCE_OF_WildcardField */
static int hf_h248_wildcard_item = -1; /* WildcardField */
static int hf_h248_terminationId = -1; /* OCTET_STRING_SIZE_1_8 */
static int hf_h248_TerminationIDList_item = -1; /* TerminationID */
static int hf_h248_termStateDescr = -1; /* TerminationStateDescriptor */
static int hf_h248_streams = -1; /* T_streams */
static int hf_h248_mediaDescriptorOneStream = -1; /* StreamParms */
static int hf_h248_mediaDescriptorMultiStream = -1; /* SEQUENCE_OF_StreamDescriptor */
static int hf_h248_mediaDescriptorMultiStream_item = -1; /* StreamDescriptor */
static int hf_h248_streamParms = -1; /* StreamParms */
static int hf_h248_localControlDescriptor = -1; /* LocalControlDescriptor */
static int hf_h248_localDescriptor = -1; /* LocalRemoteDescriptor */
static int hf_h248_remoteDescriptor = -1; /* LocalRemoteDescriptor */
static int hf_h248_streamMode = -1; /* StreamMode */
static int hf_h248_reserveValue = -1; /* BOOLEAN */
static int hf_h248_reserveGroup = -1; /* BOOLEAN */
static int hf_h248_propertyParms = -1; /* PropertyParms */
static int hf_h248_propertyName = -1; /* PkgdName */
static int hf_h248_propertyParamValue = -1; /* SEQUENCE_OF_PropertyID */
static int hf_h248_value_item = -1; /* PropertyID */
static int hf_h248_PropertyParms_item = -1; /* PropertyParm */
static int hf_h248_propGrps = -1; /* SEQUENCE_OF_PropertyGroup */
static int hf_h248_propGrps_item = -1; /* PropertyGroup */
static int hf_h248_PropertyGroup_item = -1; /* PropertyParm */
static int hf_h248_tSEventBufferControl = -1; /* EventBufferControl */
static int hf_h248_serviceState = -1; /* ServiceState */
static int hf_h248_muxType = -1; /* MuxType */
static int hf_h248_termList = -1; /* SEQUENCE_OF_TerminationID */
static int hf_h248_termList_item = -1; /* TerminationID */
static int hf_h248_nonStandardData = -1; /* NonStandardData */
static int hf_h248_eventList = -1; /* RequestedEvents */
static int hf_h248_pkgdName = -1; /* EventName */
static int hf_h248_eventAction = -1; /* RequestedActions */
static int hf_h248_evParList = -1; /* EventParameters */
static int hf_h248_RequestedEvents_item = -1; /* RequestedEvent */
static int hf_h248_keepActive = -1; /* BOOLEAN */
static int hf_h248_eventDM = -1; /* EventDM */
static int hf_h248_secondEvent = -1; /* SecondEventsDescriptor */
static int hf_h248_digitMapValue = -1; /* DigitMapValue */
static int hf_h248_secondaryEventList = -1; /* SEQUENCE_OF_SecondRequestedEvent */
static int hf_h248_eventList_item = -1; /* SecondRequestedEvent */
static int hf_h248_secondaryEventAction = -1; /* SecondRequestedActions */
static int hf_h248_EventBufferDescriptor_item = -1; /* EventSpec */
static int hf_h248_SignalsDescriptor_item = -1; /* SignalRequest */
static int hf_h248_signal = -1; /* Signal */
static int hf_h248_seqSigList = -1; /* SeqSigList */
static int hf_h248_signalList = -1; /* SEQUENCE_OF_Signal */
static int hf_h248_signalList_item = -1; /* Signal */
static int hf_h248_signalName = -1; /* SignalName */
static int hf_h248_sigType = -1; /* SignalType */
static int hf_h248_duration = -1; /* INTEGER_0_65535 */
static int hf_h248_notifyCompletion = -1; /* NotifyCompletion */
static int hf_h248_sigParList = -1; /* SEQUENCE_OF_SigParameter */
static int hf_h248_sigParList_item = -1; /* SigParameter */
static int hf_h248_sigParameterName = -1; /* Name */
static int hf_h248_mtl = -1; /* SEQUENCE_OF_ModemType */
static int hf_h248_mtl_item = -1; /* ModemType */
static int hf_h248_mpl = -1; /* PropertyParms */
static int hf_h248_startTimer = -1; /* INTEGER_0_99 */
static int hf_h248_shortTimer = -1; /* INTEGER_0_99 */
static int hf_h248_longTimer = -1; /* INTEGER_0_99 */
static int hf_h248_digitMapBody = -1; /* IA5String */
static int hf_h248_durationTimer = -1; /* INTEGER_0_99 */
static int hf_h248_serviceChangeMethod = -1; /* ServiceChangeMethod */
static int hf_h248_serviceChangeAddress = -1; /* ServiceChangeAddress */
static int hf_h248_serviceChangeVersion = -1; /* INTEGER_0_99 */
static int hf_h248_serviceChangeProfile = -1; /* ServiceChangeProfile */
static int hf_h248_serviceChangeReason = -1; /* Value */
static int hf_h248_serviceChangeDelay = -1; /* INTEGER_0_4294967295 */
static int hf_h248_serviceChangeMgcId = -1; /* MId */
static int hf_h248_timeStamp = -1; /* TimeNotation */
static int hf_h248_serviceChangeInfo = -1; /* AuditDescriptor */
static int hf_h248_timestamp = -1; /* TimeNotation */
static int hf_h248_profileName = -1; /* IA5String_SIZE_1_67 */
static int hf_h248_PackagesDescriptor_item = -1; /* PackagesItem */
static int hf_h248_StatisticsDescriptor_item = -1; /* StatisticsParameter */
static int hf_h248_statValue = -1; /* Value */
static int hf_h248_nonStandardIdentifier = -1; /* NonStandardIdentifier */
static int hf_h248_data = -1; /* OCTET_STRING */
static int hf_h248_object = -1; /* OBJECT_IDENTIFIER */
static int hf_h248_h221NonStandard = -1; /* H221NonStandard */
static int hf_h248_experimental = -1; /* IA5String_SIZE_8 */
static int hf_h248_t35CountryCode1 = -1; /* INTEGER_0_255 */
static int hf_h248_t35CountryCode2 = -1; /* INTEGER_0_255 */
static int hf_h248_t35Extension = -1; /* INTEGER_0_255 */
static int hf_h248_manufacturerCode = -1; /* INTEGER_0_65535 */
static int hf_h248_date = -1; /* IA5String_SIZE_8 */
static int hf_h248_time = -1; /* IA5String_SIZE_8 */
static int hf_h248_Value_item = -1; /* OCTET_STRING */
/* named bits */
static int hf_h248_T_auditToken_muxToken = -1;
static int hf_h248_T_auditToken_modemToken = -1;
static int hf_h248_T_auditToken_mediaToken = -1;
static int hf_h248_T_auditToken_eventsToken = -1;
static int hf_h248_T_auditToken_signalsToken = -1;
static int hf_h248_T_auditToken_digitMapToken = -1;
static int hf_h248_T_auditToken_statsToken = -1;
static int hf_h248_T_auditToken_observedEventsToken = -1;
static int hf_h248_T_auditToken_packagesToken = -1;
static int hf_h248_T_auditToken_eventBufferToken = -1;
static int hf_h248_NotifyCompletion_onTimeOut = -1;
static int hf_h248_NotifyCompletion_onInterruptByEvent = -1;
static int hf_h248_NotifyCompletion_onInterruptByNewSignalDescr = -1;
static int hf_h248_NotifyCompletion_otherReason = -1;
/*--- End of included file: packet-h248-hf.c ---*/
/* Initialize the subtree pointers */
static gint ett_h248 = -1;
static gint ett_mtpaddress = -1;
static gint ett_packagename = -1;
/*--- Included file: packet-h248-ett.c ---*/
static gint ett_h248_MegacoMessage = -1;
static gint ett_h248_AuthenticationHeader = -1;
static gint ett_h248_Message = -1;
static gint ett_h248_T_messageBody = -1;
static gint ett_h248_SEQUENCE_OF_Transaction = -1;
static gint ett_h248_MId = -1;
static gint ett_h248_DomainName = -1;
static gint ett_h248_IP4Address = -1;
static gint ett_h248_IP6Address = -1;
static gint ett_h248_Transaction = -1;
static gint ett_h248_TransactionRequest = -1;
static gint ett_h248_SEQUENCE_OF_ActionRequest = -1;
static gint ett_h248_TransactionPending = -1;
static gint ett_h248_TransactionReply = -1;
static gint ett_h248_T_transactionResult = -1;
static gint ett_h248_SEQUENCE_OF_ActionReply = -1;
static gint ett_h248_TransactionResponseAck = -1;
static gint ett_h248_TransactionAck = -1;
static gint ett_h248_ErrorDescriptor = -1;
static gint ett_h248_ActionRequest = -1;
static gint ett_h248_SEQUENCE_OF_CommandRequest = -1;
static gint ett_h248_ActionReply = -1;
static gint ett_h248_SEQUENCE_OF_CommandReply = -1;
static gint ett_h248_ContextRequest = -1;
static gint ett_h248_SEQUENCE_OF_TopologyRequest = -1;
static gint ett_h248_ContextAttrAuditRequest = -1;
static gint ett_h248_CommandRequest = -1;
static gint ett_h248_Command = -1;
static gint ett_h248_CommandReply = -1;
static gint ett_h248_TopologyRequest = -1;
static gint ett_h248_AmmRequest = -1;
static gint ett_h248_SEQUENCE_OF_AmmDescriptor = -1;
static gint ett_h248_AmmDescriptor = -1;
static gint ett_h248_AmmsReply = -1;
static gint ett_h248_SubtractRequest = -1;
static gint ett_h248_AuditRequest = -1;
static gint ett_h248_AuditReply = -1;
static gint ett_h248_AuditResult = -1;
static gint ett_h248_TerminationAudit = -1;
static gint ett_h248_AuditReturnParameter = -1;
static gint ett_h248_AuditDescriptor = -1;
static gint ett_h248_T_auditToken = -1;
static gint ett_h248_SEQUENCE_OF_IndAuditParameter = -1;
static gint ett_h248_IndAuditParameter = -1;
static gint ett_h248_IndAudMediaDescriptor = -1;
static gint ett_h248_indAudMediaDescriptorStreams = -1;
static gint ett_h248_SEQUENCE_OF_IndAudStreamDescriptor = -1;
static gint ett_h248_IndAudStreamDescriptor = -1;
static gint ett_h248_IndAudStreamParms = -1;
static gint ett_h248_IndAudLocalControlDescriptor = -1;
static gint ett_h248_IndAudPropertyParm = -1;
static gint ett_h248_IndAudPropertyParms = -1;
static gint ett_h248_IndAudLocalRemoteDescriptor = -1;
static gint ett_h248_IndAudPropertyGroup = -1;
static gint ett_h248_IndAudTerminationStateDescriptor = -1;
static gint ett_h248_IndAudEventsDescriptor = -1;
static gint ett_h248_IndAudEventBufferDescriptor = -1;
static gint ett_h248_IndAudSignalsDescriptor = -1;
static gint ett_h248_IndAudSeqSigList = -1;
static gint ett_h248_IndAudSignal = -1;
static gint ett_h248_IndAudDigitMapDescriptor = -1;
static gint ett_h248_IndAudStatisticsDescriptor = -1;
static gint ett_h248_IndAudPackagesDescriptor = -1;
static gint ett_h248_NotifyRequest = -1;
static gint ett_h248_NotifyReply = -1;
static gint ett_h248_ObservedEventsDescriptor = -1;
static gint ett_h248_SEQUENCE_OF_ObservedEvent = -1;
static gint ett_h248_ObservedEvent = -1;
static gint ett_h248_ExtraInfo = -1;
static gint ett_h248_EventParameter = -1;
static gint ett_h248_EventParameters = -1;
static gint ett_h248_ServiceChangeRequest = -1;
static gint ett_h248_ServiceChangeReply = -1;
static gint ett_h248_ServiceChangeResult = -1;
static gint ett_h248_TerminationID = -1;
static gint ett_h248_SEQUENCE_OF_WildcardField = -1;
static gint ett_h248_TerminationIDList = -1;
static gint ett_h248_MediaDescriptor = -1;
static gint ett_h248_T_streams = -1;
static gint ett_h248_SEQUENCE_OF_StreamDescriptor = -1;
static gint ett_h248_StreamDescriptor = -1;
static gint ett_h248_StreamParms = -1;
static gint ett_h248_LocalControlDescriptor = -1;
static gint ett_h248_PropertyParm = -1;
static gint ett_h248_SEQUENCE_OF_PropertyID = -1;
static gint ett_h248_PropertyParms = -1;
static gint ett_h248_LocalRemoteDescriptor = -1;
static gint ett_h248_SEQUENCE_OF_PropertyGroup = -1;
static gint ett_h248_PropertyGroup = -1;
static gint ett_h248_TerminationStateDescriptor = -1;
static gint ett_h248_MuxDescriptor = -1;
static gint ett_h248_SEQUENCE_OF_TerminationID = -1;
static gint ett_h248_EventsDescriptor = -1;
static gint ett_h248_RequestedEvent = -1;
static gint ett_h248_RequestedEvents = -1;
static gint ett_h248_RequestedActions = -1;
static gint ett_h248_EventDM = -1;
static gint ett_h248_SecondEventsDescriptor = -1;
static gint ett_h248_SEQUENCE_OF_SecondRequestedEvent = -1;
static gint ett_h248_SecondRequestedEvent = -1;
static gint ett_h248_SecondRequestedActions = -1;
static gint ett_h248_EventBufferDescriptor = -1;
static gint ett_h248_EventSpec = -1;
static gint ett_h248_SignalsDescriptor = -1;
static gint ett_h248_SignalRequest = -1;
static gint ett_h248_SeqSigList = -1;
static gint ett_h248_SEQUENCE_OF_Signal = -1;
static gint ett_h248_Signal = -1;
static gint ett_h248_SEQUENCE_OF_SigParameter = -1;
static gint ett_h248_NotifyCompletion = -1;
static gint ett_h248_SigParameter = -1;
static gint ett_h248_ModemDescriptor = -1;
static gint ett_h248_SEQUENCE_OF_ModemType = -1;
static gint ett_h248_DigitMapDescriptor = -1;
static gint ett_h248_DigitMapValue = -1;
static gint ett_h248_ServiceChangeParm = -1;
static gint ett_h248_ServiceChangeAddress = -1;
static gint ett_h248_ServiceChangeResParm = -1;
static gint ett_h248_ServiceChangeProfile = -1;
static gint ett_h248_PackagesDescriptor = -1;
static gint ett_h248_PackagesItem = -1;
static gint ett_h248_StatisticsDescriptor = -1;
static gint ett_h248_StatisticsParameter = -1;
static gint ett_h248_NonStandardData = -1;
static gint ett_h248_NonStandardIdentifier = -1;
static gint ett_h248_H221NonStandard = -1;
static gint ett_h248_TimeNotation = -1;
static gint ett_h248_Value = -1;
/*--- End of included file: packet-h248-ett.c ---*/
static dissector_table_t h248_package_bin_dissector_table=NULL;
static const value_string package_name_vals[] = {
{ 0x0000, "Media stream properties H.248.1 Annex C" },
{ 0x0001, "g H.248.1 Annex E" },
{ 0x0002, "root H.248.1 Annex E" },
{ 0x0003, "tonegen H.248.1 Annex E" },
{ 0x0004, "tonedet H.248.1 Annex E" },
{ 0x0005, "dg H.248.1 Annex E" },
{ 0x0006, "dd H.248.1 Annex E" },
{ 0x0007, "cg H.248.1 Annex E" },
{ 0x0008, "cd H.248.1 Annex E" },
{ 0x0009, "al H.248.1 Annex E" },
{ 0x000a, "ct H.248.1 Annex E" },
{ 0x000b, "nt H.248.1 Annex E" },
{ 0x000c, "rtp H.248.1 Annex E" },
{ 0x000d, "tdmc H.248.1 Annex E" },
{ 0x000e, "ftmd H.248.1 Annex E" },
{ 0x000f, "txc H.248.2" }, /* H.248.2 */
{ 0x0010, "txp H.248.2" },
{ 0x0011, "ctyp H.248.2" },
{ 0x0012, "fax H.248.2" },
{ 0x0013, "ipfax H.248.2" },
{ 0x0014, "dis H.248.3" }, /* H.248.3 */
{ 0x0015, "key H.248.3" },
{ 0x0016, "kp H.248.3" },
{ 0x0017, "labelkey H.248.3" },
{ 0x0018, "kf H.248.3" },
{ 0x0019, "ind H.248.3" },
{ 0x001a, "ks H.248.3" },
{ 0x001b, "anci H.248.3" },
{ 0x001c, "dtd H.248.6" }, /* H.248.6 */
{ 0x001d, "an H.248.7" }, /* H.248.7 */
{ 0x001e, "Bearer Characteristics Q.1950 Annex A" }, /* Q.1950 Annex A */
{ 0x001f, "Bearer Network Connection Cut Q.1950 Annex A" },
{ 0x0020, "Reuse Idle Q.1950 Annex A" },
{ 0x0021, "Generic Bearer Connection Q.1950 Annex A" },
{ 0x0022, "Bearer Control Tunnelling Q.1950 Annex A" },
{ 0x0023, "Basic Call Progress Tones Q.1950 Annex A" },
{ 0x0024, "Expanded Call Progress Tones Q.1950 Annex A" },
{ 0x0025, "Basic Services Tones Q.1950 Annex A" },
{ 0x0026, "Expanded Services Tones Q.1950 Annex A" },
{ 0x0027, "Intrusion Tones Q.1950 Annex A" },
{ 0x0028, "Business Tones Q.1950 Annex A" },
{ 0x0029, "Media Gateway Resource Congestion Handling H.248.10" }, /* H.248.10 */
{ 0x002a, "H245 package H248.12" }, /* H.248.12 */
{ 0x002b, "H323 bearer control package H.248.12" }, /* H.248.12 */
{ 0x002c, "H324 package H.248.12" }, /* H.248.12 */
{ 0x002d, "H245 command package H.248.12" }, /* H.248.12 */
{ 0x002e, "H245 indication package H.248.12" }, /* H.248.12 */
{ 0x002f, "3G User Plane" }, /* 3GPP TS 29.232 v4.1.0 */
{ 0x0030, "3G Circuit Switched Data" },
{ 0x0031, "3G TFO Control" },
{ 0x0032, "3G Expanded Call Progress Tones" },
{ 0x0033, "Advanced Audio Server (AAS) Base)" }, /* H.248.9 */
{ 0x0034, "AAS Digit Collection" }, /* H.248.9 */
{ 0x0035, "AAS Recording" }, /* H.248.9 */
{ 0x0036, "AAS Segment Management" }, /* H.248.9 */
{ 0x0037, "Quality Alert Ceasing" }, /* H.248.13 */
{ 0x0038, "Conferencing Tones Generation" }, /* H.248.27 */
{ 0x0039, "Diagnostic Tones Generation" }, /* H.248.27 */
{ 0x003a, "Carrier Tones Generation Package H.248.23" }, /* H.248.27 */
{ 0x003b, "Enhanced Alerting Package H.248.23" }, /* H.248.23 */
{ 0x003c, "Analog Display Signalling Package H.248.23" }, /* H.248.23 */
{ 0x003d, "Multi-Frequency Tone Generation Package H.248.24" }, /* H.248.24 */
{ 0x003e, "H.248.23Multi-Frequency Tone Detection Package H.248.24" }, /* H.248.24 */
{ 0x003f, "Basic CAS Package H.248.25" }, /* H.248.25 */
{ 0x0040, "Robbed Bit Signalling Package H.248.25" }, /* H.248.25 */
{ 0x0041, "Operator Services and Emgergency Services Package H.248.25" },
{ 0x0042, "Operator Services Extension Package H.248.25" },
{ 0x0043, "Extended Analog Line Supervision Package H.248.26" },
{ 0x0044, "Automatic Metering Package H.248.26" },
{ 0x0045, "Inactivity Timer Package H.248.14" },
{ 0x0046, "3G Modification of Link Characteristics Bearer Capability" }, /* 3GPP TS 29.232 v4.4.0 */
{ 0x0047, "Base Announcement Syntax H.248.9" },
{ 0x0048, "Voice Variable Syntax H.248.9" },
{ 0x0049, "Announcement Set Syntax H.248.9" },
{ 0x004a, "Phrase Variable Syntax H.248.9" },
{ 0x004b, "Basic NAS package" },
{ 0x004c, "NAS incoming package" },
{ 0x004d, "NAS outgoing package" },
{ 0x004e, "NAS control package" },
{ 0x004f, "NAS root package" },
{ 0x0050, "Profile Handling Package H.248.18" },
{ 0x0051, "Media Gateway Overload Control Package H.248.11" },
{ 0x0052, "Extended DTMF Detection Package H.248.16" },
{ 0x0053, "Quiet Termination Line Test" },
{ 0x0054, "Loopback Line Test Response" }, /* H.248.17 */
{ 0x0055, "ITU 404Hz Line Test" }, /* H.248.17 */
{ 0x0056, "ITU 816Hz Line Test" }, /* H.248.17 */
{ 0x0057, "ITU 1020Hz Line Test" }, /* H.248.17 */
{ 0x0058, "ITU 2100Hz Disable Tone Line Test" }, /* H.248.17 */
{ 0x0059, "ITU 2100Hz Disable Echo Canceller Tone Line Test" }, /* H.248.17 */
{ 0x005a, "ITU 2804Hz Tone Line Test" }, /* H.248.17 */
{ 0x005b, "ITU Noise Test Tone Line Test" }, /* H.248.17 */
{ 0x005c, "ITU Digital Pseudo Random Test Line Test" }, /* H.248.17 */
{ 0x005d, "ITU ATME No.2 Test Line Response" }, /* H.248.17 */
{ 0x005e, "ANSI 1004Hz Test Tone Line Test" }, /* H.248.17 */
{ 0x005f, "ANSI Test Responder Line Test" }, /* H.248.17 */
{ 0x0060, "ANSI 2225Hz Test Progress Tone Line Test" }, /* H.248.17 */
{ 0x0061, "ANSI Digital Test Signal Line Test" }, /* H.248.17 */
{ 0x0062, "ANSI Inverting Loopback Line Test Repsonse" }, /* H.248.17 */
{ 0x0063, "Extended H.324 Packages H.248.12 Annex A" },
{ 0x0064, "Extended H.245 Command Package H.248.12 Annex A" },
{ 0x0065, "Extended H.245 Indication Package H.248.12 Annex A" },
{ 0x0066, "Enhanced DTMF Detection Package H.248.16" },
{ 0x0067, "Connection Group Identity Package Q.1950 Annex E" },
{ 0x0068, "CTM Text Transport 3GPP TS 29.232 v5.2.0" },
{ 0x0069, "SPNE Control Package Q.115.0" },
{ 0x006a, "Semi-permanent Connection Package H.248.21" },
{ 0x006b, "Shared Risk Group Package H.248.22" },
{ 0x006c, "isuptn Annex B of ITU-T Rec. J.171" },
{ 0x006d, "Basic CAS Addressing Package H.248.25" },
{ 0x006e, "Floor Control Package H.248.19" },
{ 0x006f, "Indication of Being Viewed Package H.248.19" },
{ 0x0070, "Volume Control Package H.248.19" },
{ 0x0071, "UNASSIGNED" },
{ 0x0072, "Volume Detection Package H.248.19" },
{ 0x0073, "Volume Level Mixing Package H.248.19" },
{ 0x0074, "Mixing Volume Level Control Package H.248.19" },
{ 0x0075, "Voice Activated Video Switch Package H.248.19" },
{ 0x0076, "Lecture Video Mode Package H.248.19" },
{ 0x0077, "Contributing Video Source Package H.248.19" },
{ 0x0078, "Video Window Package H.248.19" },
{ 0x0079, "Tiled Window Package H.248.19" },
{ 0x007a, "Adaptive Jitter Buffer Package H.248.31" },
{ 0x007b, "International CAS Package H.248.28" },
{ 0x007c, "CAS Blocking Package H.248.28" },
{ 0x007d, "International CAS Compelled Package H.248.29" },
{ 0x007e, "International CAS Compelled with Overlap Package H.248.29" },
{ 0x007f, "International CAS Compelled with End-to-end Package H.248.29" },
{ 0x0080, "RTCP XR Package H.248.30" },
{ 0x0081, "RTCP XR Burst Metrics Package H.248.30" },
{ 0x0082, "threegcsden 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
{ 0x0083, "threegiptra 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
{ 0x0084, "threegflex 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
{ 0x0085, "H.248 PCMSB" },
{ 0x008a, "TIPHON Extended H.248/MEGACO Package" }, /* ETSI specification TS 101 3 */
{ 0x008b, "Differentiated Services Package" }, /* Annex A of ETSI TS 102 333 */
{ 0x008c, "Gate Management Package" }, /* Annex B of ETSI TS 102 333 */
{ 0x008d, "Traffic Management Package" }, /* Annex C of ETSI TS 102 333 */
{ 0x008e, "Gate Recovery Information Package" }, /* Annex D of ETSI TS 102 333 */
{ 0x008f, "NAT Traversal Package" }, /* Annex E of ETSI TS 102 333 */
{ 0x0090, "MPLS Package" }, /* Annex F of ETSI TS 102 333 */
{ 0x0091, "VLAN Package" }, /* Annex G of ETSI TS 102 333 */
{ 0x8000, "Ericsson IU" },
{ 0x8001, "Ericsson UMTS and GSM Circuit" },
{ 0x8002, "Ericsson Tone Generator Package" },
{ 0x8003, "Ericsson Line Test Package" },
{ 0x8004, "Nokia Advanced TFO Package" },
{ 0x8005, "Nokia IWF Package" },
{ 0x8006, "Nokia Root Package" },
{ 0x8007, "Nokia Trace Package" },
{ 0x8008, "Ericsson V5.2 Layer" },
{ 0x8009, "Ericsson Detailed Termination Information Package" },
{ 0x800a, "Nokia Bearer Characteristics Package" },
{0, NULL}
};
/*
* This table consist of PackageName + EventName and its's corresponding string
*
*/
static const value_string event_name_vals[] = {
{ 0x00000000, "Media stream properties H.248.1 Annex C" },
{ 0x00010000, "g H.248.1 Annex E" },
{ 0x00010001, "g, Cause" },
{ 0x00010002, "g, Signal Completion" },
{ 0x00210000, "Generic Bearer Connection Q.1950 Annex A" },
{ 0x00210001, "GB BNC change" },
{ 0x800a0000, "Nokia Bearer Characteristics Package" },
{0, NULL}
};
/*
* This table consist of PackageName + SignalName and its's corresponding string
*/
static const value_string signal_name_vals[] = {
{ 0x00000000, "Media stream properties H.248.1 Annex C" },
{ 0x00010000, "g H.248.1 Annex E" },
{ 0x00210000, "GB Generic Bearer Connection Q.1950 Annex A" },
{ 0x00210001, "GB Establish BNC" },
{ 0x00210002, "GB Modify BNC" },
{ 0x00210003, "GB Release BNC" },
{ 0x800a0000, "Nokia Bearer Characteristics Package" },
{0, NULL}
};
static const value_string h248_package_annex_C_Mediatx_vals[] = {
{ 0x0000, "TDM Circuit" },
{ 0x0001, "ATM" },
{ 0x0002, "FR" },
{ 0x0003, "Ipv4" },
{ 0x0004, "Ipv6" },
{0, NULL}
};
static void
dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor) {
int offset = 0;
tvbuff_t *new_tvb;
switch ( name_minor ){
case 0x1001: /* Media */
proto_tree_add_text(tree, tvb, offset, -1,"Media");
break;
case 0x1006: /* ACodec Ref.: ITU-T Rec. Q.765.5 */
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_ACodec, &new_tvb);
break;
case 0x3001: /* Mediatx */
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_annex_C_Mediatx, NULL);
break;
case 0x3002: /* BIR */
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_BIR, &new_tvb);
break;
case 0x3003: /* NSAP */
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_NSAP, &new_tvb);
dissect_nsap(new_tvb, 0,tvb_length_remaining(new_tvb, 0), tree);
break;
case 0x9001: /* TMR */
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_annex_C_TMR, NULL);
break;
case 0x9023: /* User Service Information */
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_USI, &new_tvb);
dissect_q931_bearer_capability_ie(new_tvb, 0, 3, tree);
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"PropertyID not decoded(yet) 0x%x",name_minor);
break;
}
}
static const value_string h248_3GUP_Mode_vals[] = {
{ 0x00000001, "Transparent mode" },
{ 0x00000002, "Support mode for predefined SDU sizes" },
{0, NULL}
};
static const value_string h248_3GUP_upversions_vals[] = {
{ 0x01, "Version 1" },
{ 0x02, "Version 2" },
{ 0x03, "Version 3" },
{ 0x04, "Version 4" },
{ 0x05, "Version 5" },
{ 0x06, "Version 6" },
{ 0x07, "Version 7" },
{ 0x08, "Version 8" },
{ 0x09, "Version 9" },
{ 0x0A, "Version 10" },
{ 0x0B, "Version 11" },
{ 0x0C, "Version 12" },
{ 0x0D, "Version 13" },
{ 0x0E, "Version 14" },
{ 0x0F, "Version 15" },
{ 0x10, "Version 16" },
{0, NULL}
};
static const value_string h248_3GUP_delerrsdu_vals[] = {
{ 0x0001, "Yes" },
{ 0x0002, "No" },
{ 0x0003, "Not Applicable" },
{0, NULL}
};
static const value_string h248_3GUP_interface_vals[] = {
{ 0x0001, "RAN (Iu interface)" },
{ 0x0002, "CN (Nb interfac)" },
{0, NULL}
};
static const value_string h248_3GUP_initdir_vals[] = {
{ 0x0001, "Incoming" },
{ 0x0002, "Outgoing" },
{0, NULL}
};
static void
dissect_3G_User_Plane_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor){
int offset = 0;
switch ( name_minor ){
case 0x0001:
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_Mode, NULL);
break;
case 0x0002:
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_UPversions, NULL);
break;
case 0x0003:
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_delerrsdu, NULL);
break;
case 0x0004:
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_interface, NULL);
break;
case 0x0005:
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_initdir, NULL);
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"PropertyID not decoded(yet) 0x%x",name_minor);
break;
}
}
static const value_string BNCChar_vals[] = {
{ 1, "aal1" },
{ 2, "aal2" },
{ 3, "aal1struct" },
{ 4, "ipRtp" },
{ 5, "tdm" },
{ 0, NULL }
};
static void
dissect_h248_package_data(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,guint16 name_major, guint16 name_minor){
guint offset=0;
switch ( name_major ){
case 0x0000: /* Media stream properties H.248.1 Annex C */
dissect_h248_annex_C_PDU(implicit_tag, tvb, pinfo, tree, name_minor);
break;
case 0x0001: /* g H.248.1 Annex E */
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
break;
case 0x001e: /* Bearer Characteristics Q.1950 Annex A */
offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_bcp_BNCChar_PDU, NULL);
break;
case 0x0021: /* Generic Bearer Connection Q.1950 Annex A */
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
break;
case 0x002f: /* 3G User Plane TS 29.232 */
dissect_3G_User_Plane_PDU(implicit_tag, tvb, pinfo, tree, name_minor);
break;
default:
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
break;
}
}
static guint32 packageandid;
static int
dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
tvbuff_t *new_tvb;
proto_tree *package_tree=NULL;
guint16 name_major, name_minor;
int old_offset;
old_offset=offset;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
/* this field is always 4 bytes so just read it into two integers */
name_major=tvb_get_ntohs(new_tvb, 0);
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
/* do the prettification */
proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
if(tree){
package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
}
proto_tree_add_uint(package_tree, hf_h248_package_name, tvb, offset-4, 2, name_major);
return offset;
}
static int
dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
tvbuff_t *new_tvb;
proto_tree *package_tree=NULL;
guint16 name_major, name_minor;
int old_offset;
old_offset=offset;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
/* this field is always 4 bytes so just read it into two integers */
name_major=tvb_get_ntohs(new_tvb, 0);
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
/* do the prettification */
proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
if(tree){
package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
}
proto_tree_add_uint(package_tree, hf_h248_event_name, tvb, offset-4, 4, packageandid);
return offset;
}
static int
dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
tvbuff_t *new_tvb;
proto_tree *package_tree=NULL;
guint16 name_major, name_minor;
int old_offset;
old_offset=offset;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
/* this field is always 4 bytes so just read it into two integers */
name_major=tvb_get_ntohs(new_tvb, 0);
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
/* do the prettification */
proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
if(tree){
package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
}
proto_tree_add_uint(package_tree, hf_h248_signal_name, tvb, offset-4, 4, packageandid);
return offset;
}
static int
dissect_h248_PropertyID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index _U_) {
guint8 class;
gboolean pc, ind;
guint32 tag;
guint32 len;
guint16 name_major;
guint16 name_minor;
int old_offset, end_offset;
tvbuff_t *next_tvb;
old_offset=offset;
offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
end_offset=offset+len;
if( (class!=BER_CLASS_UNI)
||(tag!=BER_UNI_TAG_OCTETSTRING) ){
proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag);
return end_offset;
}
next_tvb = tvb_new_subset(tvb, offset , len , len );
name_major = packageandid >> 16;
name_minor = packageandid & 0xffff;
/*
if(!dissector_try_port(h248_package_bin_dissector_table, name_major, next_tvb, pinfo, tree)){
proto_tree_add_text(tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%08x not implemented (yet).", packageandid);
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, old_offset, hf_index, NULL);
}
*/
dissect_h248_package_data(implicit_tag, next_tvb, pinfo, tree, name_major, name_minor);
return end_offset;
}
static int
dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
tvbuff_t *new_tvb;
proto_tree *mtp_tree=NULL;
guint32 val;
int i, len, old_offset;
old_offset=offset;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
/* this field is either 2 or 4 bytes so just read it into an integer */
val=0;
len=tvb_length(new_tvb);
for(i=0;i<len;i++){
val= (val<<8)|tvb_get_guint8(new_tvb, i);
}
/* do the prettification */
proto_item_append_text(ber_last_created_item, " NI = %d, PC = %d ( %d-%d )", val&0x03,val>>2,val&0x03,val>>2);
if(tree){
mtp_tree = proto_item_add_subtree(ber_last_created_item, ett_mtpaddress);
}
proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_ni, tvb, old_offset, offset-old_offset, val&0x03);
proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_pc, tvb, old_offset, offset-old_offset, val>>2);
return offset;
}
/*--- Included file: packet-h248-fn.c ---*/
/*--- Fields for imported types ---*/
static int
dissect_h248_SecurityParmIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_secParmIndex_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SecurityParmIndex(TRUE, tvb, offset, pinfo, tree, hf_h248_secParmIndex);
}
static int
dissect_h248_SequenceNum(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_seqNum_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SequenceNum(TRUE, tvb, offset, pinfo, tree, hf_h248_seqNum);
}
static int
dissect_h248_AuthData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_ad_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuthData(TRUE, tvb, offset, pinfo, tree, hf_h248_ad);
}
static const ber_sequence_t AuthenticationHeader_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_secParmIndex_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqNum_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ad_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AuthenticationHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AuthenticationHeader_sequence, hf_index, ett_h248_AuthenticationHeader);
return offset;
}
static int dissect_authHeader_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuthenticationHeader(TRUE, tvb, offset, pinfo, tree, hf_h248_authHeader);
}
static int
dissect_h248_INTEGER_0_99(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_version_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_version);
}
static int dissect_packageVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_packageVersion);
}
static int dissect_startTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_startTimer);
}
static int dissect_shortTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_shortTimer);
}
static int dissect_longTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_longTimer);
}
static int dissect_durationTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_durationTimer);
}
static int dissect_serviceChangeVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeVersion);
}
static int
dissect_h248_OCTET_STRING_SIZE_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_iP4Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_h248_iP4Address);
}
static int
dissect_h248_INTEGER_0_65535(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_portNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_portNumber);
}
static int dissect_propGroupID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_propGroupID);
}
static int dissect_id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_id);
}
static int dissect_duration_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_duration);
}
static int dissect_manufacturerCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_manufacturerCode);
}
static const ber_sequence_t IP4Address_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iP4Address_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IP4Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IP4Address_sequence, hf_index, ett_h248_IP4Address);
return offset;
}
static int dissect_ip4Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IP4Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip4Address);
}
static int
dissect_h248_OCTET_STRING_SIZE_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_iP6Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OCTET_STRING_SIZE_16(TRUE, tvb, offset, pinfo, tree, hf_h248_iP6Address);
}
static const ber_sequence_t IP6Address_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iP6Address_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IP6Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IP6Address_sequence, hf_index, ett_h248_IP6Address);
return offset;
}
static int dissect_ip6Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IP6Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip6Address);
}
static int
dissect_h248_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, 0,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_domName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_domName);
}
static int dissect_digitMapBody_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapBody);
}
static const ber_sequence_t DomainName_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_domName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_DomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
DomainName_sequence, hf_index, ett_h248_DomainName);
return offset;
}
static int dissect_domainName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_DomainName(TRUE, tvb, offset, pinfo, tree, hf_h248_domainName);
}
static int
dissect_h248_PathName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_deviceName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PathName(TRUE, tvb, offset, pinfo, tree, hf_h248_deviceName);
}
static int dissect_mtpAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MtpAddress(TRUE, tvb, offset, pinfo, tree, hf_h248_mtpAddress);
}
static const value_string h248_MId_vals[] = {
{ 0, "ip4Address" },
{ 1, "ip6Address" },
{ 2, "domainName" },
{ 3, "deviceName" },
{ 4, "mtpAddress" },
{ 0, NULL }
};
static const ber_choice_t MId_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mtpAddress_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_MId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
MId_choice, hf_index, ett_h248_MId);
return offset;
}
static int dissect_mId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MId(FALSE, tvb, offset, pinfo, tree, hf_h248_mId);
}
static int dissect_serviceChangeMgcId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MId(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMgcId);
}
static int
dissect_h248_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_errorCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorCode(TRUE, tvb, offset, pinfo, tree, hf_h248_errorCode);
}
static int
dissect_h248_ErrorText(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_errorText_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorText(TRUE, tvb, offset, pinfo, tree, hf_h248_errorText);
}
static const ber_sequence_t ErrorDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorCode_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorText_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ErrorDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ErrorDescriptor_sequence, hf_index, ett_h248_ErrorDescriptor);
return offset;
}
static int dissect_messageError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_messageError);
}
static int dissect_transactionError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionError);
}
static int dissect_errorDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_errorDescriptor);
}
static int dissect_error_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_error);
}
static int
dissect_h248_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionId);
}
static int dissect_firstAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_firstAck);
}
static int dissect_lastAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_lastAck);
}
static int
dissect_h248_ContextID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_contextId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ContextID(TRUE, tvb, offset, pinfo, tree, hf_h248_contextId);
}
static int
dissect_h248_INTEGER_0_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_h248_priority);
}
static int
dissect_h248_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
return offset;
}
static int dissect_emergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_emergency);
}
static int dissect_range_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_range);
}
static int dissect_sublist_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_sublist);
}
static int dissect_reserveValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveValue);
}
static int dissect_reserveGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveGroup);
}
static int dissect_keepActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_keepActive);
}
static int
dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_wildcard_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_WildcardField(FALSE, tvb, offset, pinfo, tree, hf_h248_wildcard_item);
}
static const ber_sequence_t SEQUENCE_OF_WildcardField_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_wildcard_item },
};
static int
dissect_h248_SEQUENCE_OF_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_WildcardField_sequence_of, hf_index, ett_h248_SEQUENCE_OF_WildcardField);
return offset;
}
static int dissect_wildcard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_WildcardField(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcard);
}
static int
dissect_h248_OCTET_STRING_SIZE_1_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_terminationId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationId);
}
static const ber_sequence_t TerminationID_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_wildcard_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationId_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TerminationID_sequence, hf_index, ett_h248_TerminationID);
return offset;
}
static int dissect_terminationFrom_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationFrom);
}
static int dissect_terminationTo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationTo);
}
static int dissect_terminationID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationID);
}
static int dissect_TerminationIDList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationIDList_item);
}
static int dissect_termList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_termList_item);
}
static const value_string h248_T_topologyDirection_vals[] = {
{ 0, "bothway" },
{ 1, "isolate" },
{ 2, "oneway" },
{ 0, NULL }
};
static int
dissect_h248_T_topologyDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_topologyDirection_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_T_topologyDirection(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyDirection);
}
static int
dissect_h248_StreamID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_streamID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StreamID(TRUE, tvb, offset, pinfo, tree, hf_h248_streamID);
}
static const ber_sequence_t TopologyRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationFrom_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationTo_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_topologyDirection_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TopologyRequest_sequence, hf_index, ett_h248_TopologyRequest);
return offset;
}
static int dissect_topologyReq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TopologyRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_topologyReq_item);
}
static const ber_sequence_t SEQUENCE_OF_TopologyRequest_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_topologyReq_item },
};
static int
dissect_h248_SEQUENCE_OF_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_TopologyRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_TopologyRequest);
return offset;
}
static int dissect_topologyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_TopologyRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyReq);
}
static const ber_sequence_t ContextRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_emergency_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topologyReq_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ContextRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ContextRequest_sequence, hf_index, ett_h248_ContextRequest);
return offset;
}
static int dissect_contextRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextRequest);
}
static int dissect_contextReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextReply);
}
static int
dissect_h248_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
{ proto_item *ti_tmp;
ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
proto_item_append_text(ti_tmp, ": NULL");
}
return offset;
}
static int dissect_immAckRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_immAckRequired);
}
static int dissect_topology_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_topology);
}
static int dissect_cAAREmergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_cAAREmergency);
}
static int dissect_cAARPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_cAARPriority);
}
static int dissect_optional_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_optional);
}
static int dissect_wildcardReturn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcardReturn);
}
static int dissect_iALCDStreamMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDStreamMode);
}
static int dissect_iALCDReserveValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDReserveValue);
}
static int dissect_iALCDReserveGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDReserveGroup);
}
static int dissect_eventBufferControl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferControl);
}
static int dissect_iATSDServiceState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iATSDServiceState);
}
static const ber_sequence_t ContextAttrAuditRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topology_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cAAREmergency_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cAARPriority_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ContextAttrAuditRequest_sequence, hf_index, ett_h248_ContextAttrAuditRequest);
return offset;
}
static int dissect_contextAttrAuditReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ContextAttrAuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAttrAuditReq);
}
static const ber_sequence_t TerminationIDList_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TerminationIDList_item },
};
static int
dissect_h248_TerminationIDList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
TerminationIDList_sequence_of, hf_index, ett_h248_TerminationIDList);
return offset;
}
static int dissect_terminationIDList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationIDList);
}
static int dissect_contextAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAuditResult);
}
static int dissect_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_name);
}
static int dissect_iAEDPkgdName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAEDPkgdName);
}
static int dissect_iAEBDEventName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAEBDEventName);
}
static int dissect_iASignalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iASignalName);
}
static int dissect_statName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_statName);
}
static int dissect_propertyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyName);
}
static int dissect_value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyID(FALSE, tvb, offset, pinfo, tree, hf_h248_value_item);
}
static const ber_sequence_t SEQUENCE_OF_PropertyID_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_value_item },
};
static int
dissect_h248_SEQUENCE_OF_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_PropertyID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyID);
return offset;
}
static int dissect_propertyParamValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_PropertyID(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParamValue);
}
static const value_string h248_Relation_vals[] = {
{ 0, "greaterThan" },
{ 1, "smallerThan" },
{ 2, "unequalTo" },
{ 0, NULL }
};
static int
dissect_h248_Relation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_relation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Relation(TRUE, tvb, offset, pinfo, tree, hf_h248_relation);
}
static const value_string h248_ExtraInfo_vals[] = {
{ 0, "relation" },
{ 1, "range" },
{ 2, "sublist" },
{ 0, NULL }
};
static const ber_choice_t ExtraInfo_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_ExtraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
ExtraInfo_choice, hf_index, ett_h248_ExtraInfo);
return offset;
}
static int dissect_extraInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ExtraInfo(FALSE, tvb, offset, pinfo, tree, hf_h248_extraInfo);
}
static const ber_sequence_t PropertyParm_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_propertyParamValue_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extraInfo },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
PropertyParm_sequence, hf_index, ett_h248_PropertyParm);
return offset;
}
static int dissect_PropertyParms_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_PropertyParms_item);
}
static int dissect_PropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_PropertyGroup_item);
}
static const ber_sequence_t PropertyParms_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PropertyParms_item },
};
static int
dissect_h248_PropertyParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
PropertyParms_sequence_of, hf_index, ett_h248_PropertyParms);
return offset;
}
static int dissect_propertyParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyParms(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParms);
}
static int dissect_mpl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyParms(TRUE, tvb, offset, pinfo, tree, hf_h248_mpl);
}
static const value_string h248_EventBufferControl_vals[] = {
{ 0, "off" },
{ 1, "lockStep" },
{ 0, NULL }
};
static int
dissect_h248_EventBufferControl(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_tSEventBufferControl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventBufferControl(TRUE, tvb, offset, pinfo, tree, hf_h248_tSEventBufferControl);
}
static const value_string h248_ServiceState_vals[] = {
{ 0, "test" },
{ 1, "outOfSvc" },
{ 2, "inSvc" },
{ 0, NULL }
};
static int
dissect_h248_ServiceState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_serviceState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceState(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceState);
}
static const ber_sequence_t TerminationStateDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyParms_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tSEventBufferControl_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceState_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TerminationStateDescriptor_sequence, hf_index, ett_h248_TerminationStateDescriptor);
return offset;
}
static int dissect_termStateDescr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_termStateDescr);
}
static const value_string h248_StreamMode_vals[] = {
{ 0, "sendOnly" },
{ 1, "recvOnly" },
{ 2, "sendRecv" },
{ 3, "inactive" },
{ 4, "loopBack" },
{ 0, NULL }
};
static int
dissect_h248_StreamMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_streamMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StreamMode(TRUE, tvb, offset, pinfo, tree, hf_h248_streamMode);
}
static const ber_sequence_t LocalControlDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamMode_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveValue_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveGroup_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_propertyParms_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_LocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
LocalControlDescriptor_sequence, hf_index, ett_h248_LocalControlDescriptor);
return offset;
}
static int dissect_localControlDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_LocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localControlDescriptor);
}
static const ber_sequence_t PropertyGroup_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PropertyGroup_item },
};
static int
dissect_h248_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
PropertyGroup_sequence_of, hf_index, ett_h248_PropertyGroup);
return offset;
}
static int dissect_propGrps_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PropertyGroup(FALSE, tvb, offset, pinfo, tree, hf_h248_propGrps_item);
}
static const ber_sequence_t SEQUENCE_OF_PropertyGroup_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_propGrps_item },
};
static int
dissect_h248_SEQUENCE_OF_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_PropertyGroup_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyGroup);
return offset;
}
static int dissect_propGrps_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_PropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_propGrps);
}
static const ber_sequence_t LocalRemoteDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propGrps_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_LocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
LocalRemoteDescriptor_sequence, hf_index, ett_h248_LocalRemoteDescriptor);
return offset;
}
static int dissect_localDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localDescriptor);
}
static int dissect_remoteDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_remoteDescriptor);
}
static const ber_sequence_t StreamParms_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localControlDescriptor_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localDescriptor_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remoteDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_StreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
StreamParms_sequence, hf_index, ett_h248_StreamParms);
return offset;
}
static int dissect_mediaDescriptorOneStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorOneStream);
}
static int dissect_streamParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_streamParms);
}
static const ber_sequence_t StreamDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_streamParms_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
StreamDescriptor_sequence, hf_index, ett_h248_StreamDescriptor);
return offset;
}
static int dissect_mediaDescriptorMultiStream_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorMultiStream_item);
}
static const ber_sequence_t SEQUENCE_OF_StreamDescriptor_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mediaDescriptorMultiStream_item },
};
static int
dissect_h248_SEQUENCE_OF_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_StreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_StreamDescriptor);
return offset;
}
static int dissect_mediaDescriptorMultiStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_StreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorMultiStream);
}
static const value_string h248_T_streams_vals[] = {
{ 0, "oneStream" },
{ 1, "multiStream" },
{ 0, NULL }
};
static const ber_choice_t T_streams_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mediaDescriptorOneStream_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mediaDescriptorMultiStream_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_T_streams(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
T_streams_choice, hf_index, ett_h248_T_streams);
return offset;
}
static int dissect_streams(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_T_streams(FALSE, tvb, offset, pinfo, tree, hf_h248_streams);
}
static const ber_sequence_t MediaDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_termStateDescr_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_streams },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_MediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
MediaDescriptor_sequence, hf_index, ett_h248_MediaDescriptor);
return offset;
}
static int dissect_mediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptor);
}
static const value_string h248_ModemType_vals[] = {
{ 0, "v18" },
{ 1, "v22" },
{ 2, "v22bis" },
{ 3, "v32" },
{ 4, "v32bis" },
{ 5, "v34" },
{ 6, "v90" },
{ 7, "v91" },
{ 8, "synchISDN" },
{ 0, NULL }
};
static int
dissect_h248_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_mtl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ModemType(FALSE, tvb, offset, pinfo, tree, hf_h248_mtl_item);
}
static const ber_sequence_t SEQUENCE_OF_ModemType_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_mtl_item },
};
static int
dissect_h248_SEQUENCE_OF_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_ModemType_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ModemType);
return offset;
}
static int dissect_mtl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_ModemType(TRUE, tvb, offset, pinfo, tree, hf_h248_mtl);
}
static int
dissect_h248_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
hf_index, NULL);
return offset;
}
static int dissect_object_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_h248_object);
}
static int
dissect_h248_INTEGER_0_255(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_t35CountryCode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode1);
}
static int dissect_t35CountryCode2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode2);
}
static int dissect_t35Extension_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35Extension);
}
static const ber_sequence_t H221NonStandard_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_t35CountryCode1_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_t35CountryCode2_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_t35Extension_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_manufacturerCode_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_H221NonStandard(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
H221NonStandard_sequence, hf_index, ett_h248_H221NonStandard);
return offset;
}
static int dissect_h221NonStandard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_H221NonStandard(TRUE, tvb, offset, pinfo, tree, hf_h248_h221NonStandard);
}
static int
dissect_h248_IA5String_SIZE_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, 2,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_experimental_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_experimental);
}
static int dissect_date_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_date);
}
static int dissect_time_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_time);
}
static const value_string h248_NonStandardIdentifier_vals[] = {
{ 0, "object" },
{ 1, "h221NonStandard" },
{ 2, "experimental" },
{ 0, NULL }
};
static const ber_choice_t NonStandardIdentifier_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_object_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h221NonStandard_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_experimental_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_NonStandardIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
NonStandardIdentifier_choice, hf_index, ett_h248_NonStandardIdentifier);
return offset;
}
static int dissect_nonStandardIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NonStandardIdentifier(FALSE, tvb, offset, pinfo, tree, hf_h248_nonStandardIdentifier);
}
static int
dissect_h248_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_h248_data);
}
static int dissect_Value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_h248_Value_item);
}
static const ber_sequence_t NonStandardData_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_nonStandardIdentifier },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_data_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_NonStandardData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
NonStandardData_sequence, hf_index, ett_h248_NonStandardData);
return offset;
}
static int dissect_nonStandardData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NonStandardData(TRUE, tvb, offset, pinfo, tree, hf_h248_nonStandardData);
}
static const ber_sequence_t ModemDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mtl_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mpl_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ModemDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ModemDescriptor_sequence, hf_index, ett_h248_ModemDescriptor);
return offset;
}
static int dissect_modemDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ModemDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_modemDescriptor);
}
static const value_string h248_MuxType_vals[] = {
{ 0, "h221" },
{ 1, "h223" },
{ 2, "h226" },
{ 3, "v76" },
{ 4, "nx64k" },
{ 0, NULL }
};
static int
dissect_h248_MuxType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_muxType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MuxType(TRUE, tvb, offset, pinfo, tree, hf_h248_muxType);
}
static const ber_sequence_t SEQUENCE_OF_TerminationID_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_termList_item },
};
static int
dissect_h248_SEQUENCE_OF_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_TerminationID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_TerminationID);
return offset;
}
static int dissect_termList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_termList);
}
static const ber_sequence_t MuxDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_muxType_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_termList_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_MuxDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
MuxDescriptor_sequence, hf_index, ett_h248_MuxDescriptor);
return offset;
}
static int dissect_muxDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_MuxDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_muxDescriptor);
}
static int
dissect_h248_RequestID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_requestID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestID);
}
static int dissect_requestId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestId);
}
static int dissect_eventName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventName);
}
static int dissect_pkgdName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventName(TRUE, tvb, offset, pinfo, tree, hf_h248_pkgdName);
}
static int
dissect_h248_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_packageName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_packageName);
}
static int dissect_eventParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterName);
}
static int dissect_sigParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterName);
}
static int
dissect_h248_DigitMapName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_h248_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index);
return offset;
}
static int dissect_digitMapName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_DigitMapName(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapName);
}
static const ber_sequence_t DigitMapValue_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_startTimer_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_shortTimer_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longTimer_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_digitMapBody_impl },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_durationTimer_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_DigitMapValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
DigitMapValue_sequence, hf_index, ett_h248_DigitMapValue);
return offset;
}
static int dissect_digitMapValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_DigitMapValue(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapValue);
}
static const value_string h248_EventDM_vals[] = {
{ 0, "digitMapName" },
{ 1, "digitMapValue" },
{ 0, NULL }
};
static const ber_choice_t EventDM_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_EventDM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
EventDM_choice, hf_index, ett_h248_EventDM);
return offset;
}
static int dissect_eventDM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventDM(FALSE, tvb, offset, pinfo, tree, hf_h248_eventDM);
}
static int dissect_signalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SignalName(TRUE, tvb, offset, pinfo, tree, hf_h248_signalName);
}
static const value_string h248_SignalType_vals[] = {
{ 0, "brief" },
{ 1, "onOff" },
{ 2, "timeOut" },
{ 0, NULL }
};
static int
dissect_h248_SignalType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_sigType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SignalType(TRUE, tvb, offset, pinfo, tree, hf_h248_sigType);
}
static const asn_namedbit NotifyCompletion_bits[] = {
{ 0, &hf_h248_NotifyCompletion_onTimeOut, -1, -1, NULL, NULL },
{ 1, &hf_h248_NotifyCompletion_onInterruptByEvent, -1, -1, NULL, NULL },
{ 2, &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr, -1, -1, NULL, NULL },
{ 3, &hf_h248_NotifyCompletion_otherReason, -1, -1, NULL, NULL },
{ 0, NULL, 0, 0, NULL, NULL }
};
static int
dissect_h248_NotifyCompletion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
NotifyCompletion_bits, hf_index, ett_h248_NotifyCompletion,
NULL);
return offset;
}
static int dissect_notifyCompletion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NotifyCompletion(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyCompletion);
}
static const ber_sequence_t Value_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_Value_item },
};
static int
dissect_h248_Value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
Value_sequence_of, hf_index, ett_h248_Value);
return offset;
}
static int dissect_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_value);
}
static int dissect_serviceChangeReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReason);
}
static int dissect_statValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_statValue);
}
static const ber_sequence_t SigParameter_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sigParameterName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extraInfo },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SigParameter_sequence, hf_index, ett_h248_SigParameter);
return offset;
}
static int dissect_sigParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SigParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_sigParList_item);
}
static const ber_sequence_t SEQUENCE_OF_SigParameter_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_sigParList_item },
};
static int
dissect_h248_SEQUENCE_OF_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_SigParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SigParameter);
return offset;
}
static int dissect_sigParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_SigParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParList);
}
static const ber_sequence_t Signal_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signalName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sigType_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_duration_impl },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notifyCompletion_impl },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
{ BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_sigParList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
Signal_sequence, hf_index, ett_h248_Signal);
return offset;
}
static int dissect_signal_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signal);
}
static int dissect_signalList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Signal(FALSE, tvb, offset, pinfo, tree, hf_h248_signalList_item);
}
static const ber_sequence_t SEQUENCE_OF_Signal_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signalList_item },
};
static int
dissect_h248_SEQUENCE_OF_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_Signal_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Signal);
return offset;
}
static int dissect_signalList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signalList);
}
static const ber_sequence_t SeqSigList_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_signalList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SeqSigList_sequence, hf_index, ett_h248_SeqSigList);
return offset;
}
static int dissect_seqSigList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_seqSigList);
}
static const value_string h248_SignalRequest_vals[] = {
{ 0, "signal" },
{ 1, "seqSigList" },
{ 0, NULL }
};
static const ber_choice_t SignalRequest_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signal_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqSigList_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_SignalRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
SignalRequest_choice, hf_index, ett_h248_SignalRequest);
return offset;
}
static int dissect_SignalsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SignalRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_SignalsDescriptor_item);
}
static const ber_sequence_t SignalsDescriptor_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_SignalsDescriptor_item },
};
static int
dissect_h248_SignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SignalsDescriptor_sequence_of, hf_index, ett_h248_SignalsDescriptor);
return offset;
}
static int dissect_signalsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SignalsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_signalsDescriptor);
}
static const ber_sequence_t SecondRequestedActions_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_eventDM },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SecondRequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SecondRequestedActions_sequence, hf_index, ett_h248_SecondRequestedActions);
return offset;
}
static int dissect_secondaryEventAction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SecondRequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_secondaryEventAction);
}
static const ber_sequence_t EventParameter_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventParameterName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extraInfo },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
EventParameter_sequence, hf_index, ett_h248_EventParameter);
return offset;
}
static int dissect_EventParameters_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_EventParameters_item);
}
static const ber_sequence_t EventParameters_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_EventParameters_item },
};
static int
dissect_h248_EventParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
EventParameters_sequence_of, hf_index, ett_h248_EventParameters);
return offset;
}
static int dissect_eventParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventParameters(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParList);
}
static int dissect_evParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventParameters(TRUE, tvb, offset, pinfo, tree, hf_h248_evParList);
}
static const ber_sequence_t SecondRequestedEvent_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondaryEventAction_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SecondRequestedEvent_sequence, hf_index, ett_h248_SecondRequestedEvent);
return offset;
}
static int dissect_eventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SecondRequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_eventList_item);
}
static const ber_sequence_t SEQUENCE_OF_SecondRequestedEvent_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventList_item },
};
static int
dissect_h248_SEQUENCE_OF_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_SecondRequestedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SecondRequestedEvent);
return offset;
}
static int dissect_secondaryEventList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_SecondRequestedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_secondaryEventList);
}
static const ber_sequence_t SecondEventsDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_secondaryEventList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SecondEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor);
return offset;
}
static int dissect_secondEvent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SecondEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_secondEvent);
}
static const ber_sequence_t RequestedActions_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_eventDM },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondEvent_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_RequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
RequestedActions_sequence, hf_index, ett_h248_RequestedActions);
return offset;
}
static int dissect_eventAction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_RequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_eventAction);
}
static const ber_sequence_t RequestedEvent_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventAction_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
RequestedEvent_sequence, hf_index, ett_h248_RequestedEvent);
return offset;
}
static int dissect_RequestedEvents_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_RequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_RequestedEvents_item);
}
static const ber_sequence_t RequestedEvents_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RequestedEvents_item },
};
static int
dissect_h248_RequestedEvents(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
RequestedEvents_sequence_of, hf_index, ett_h248_RequestedEvents);
return offset;
}
static int dissect_eventList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_RequestedEvents(TRUE, tvb, offset, pinfo, tree, hf_h248_eventList);
}
static const ber_sequence_t EventsDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_EventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
EventsDescriptor_sequence, hf_index, ett_h248_EventsDescriptor);
return offset;
}
static int dissect_eventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventsDescriptor);
}
static const ber_sequence_t EventSpec_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_EventSpec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
EventSpec_sequence, hf_index, ett_h248_EventSpec);
return offset;
}
static int dissect_EventBufferDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventSpec(FALSE, tvb, offset, pinfo, tree, hf_h248_EventBufferDescriptor_item);
}
static const ber_sequence_t EventBufferDescriptor_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_EventBufferDescriptor_item },
};
static int
dissect_h248_EventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
EventBufferDescriptor_sequence_of, hf_index, ett_h248_EventBufferDescriptor);
return offset;
}
static int dissect_eventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_EventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferDescriptor);
}
static const ber_sequence_t DigitMapDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_DigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
DigitMapDescriptor_sequence, hf_index, ett_h248_DigitMapDescriptor);
return offset;
}
static int dissect_digitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_DigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapDescriptor);
}
static const asn_namedbit T_auditToken_bits[] = {
{ 0, &hf_h248_T_auditToken_muxToken, -1, -1, NULL, NULL },
{ 1, &hf_h248_T_auditToken_modemToken, -1, -1, NULL, NULL },
{ 2, &hf_h248_T_auditToken_mediaToken, -1, -1, NULL, NULL },
{ 3, &hf_h248_T_auditToken_eventsToken, -1, -1, NULL, NULL },
{ 4, &hf_h248_T_auditToken_signalsToken, -1, -1, NULL, NULL },
{ 5, &hf_h248_T_auditToken_digitMapToken, -1, -1, NULL, NULL },
{ 6, &hf_h248_T_auditToken_statsToken, -1, -1, NULL, NULL },
{ 7, &hf_h248_T_auditToken_observedEventsToken, -1, -1, NULL, NULL },
{ 8, &hf_h248_T_auditToken_packagesToken, -1, -1, NULL, NULL },
{ 9, &hf_h248_T_auditToken_eventBufferToken, -1, -1, NULL, NULL },
{ 0, NULL, 0, 0, NULL, NULL }
};
static int
dissect_h248_T_auditToken(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
T_auditToken_bits, hf_index, ett_h248_T_auditToken,
NULL);
return offset;
}
static int dissect_auditToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_T_auditToken(TRUE, tvb, offset, pinfo, tree, hf_h248_auditToken);
}
static const ber_sequence_t IndAudPropertyParm_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_name_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudPropertyParm_sequence, hf_index, ett_h248_IndAudPropertyParm);
return offset;
}
static int dissect_IndAudPropertyParms_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_IndAudPropertyParms_item);
}
static int dissect_IndAudPropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_IndAudPropertyGroup_item);
}
static const ber_sequence_t IndAudPropertyParms_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IndAudPropertyParms_item },
};
static int
dissect_h248_IndAudPropertyParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
IndAudPropertyParms_sequence_of, hf_index, ett_h248_IndAudPropertyParms);
return offset;
}
static int dissect_indAudPropertyParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudPropertyParms(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudPropertyParms);
}
static const ber_sequence_t IndAudTerminationStateDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indAudPropertyParms_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventBufferControl_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iATSDServiceState_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudTerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudTerminationStateDescriptor_sequence, hf_index, ett_h248_IndAudTerminationStateDescriptor);
return offset;
}
static int dissect_indAudTerminationStateDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudTerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudTerminationStateDescriptor);
}
static const ber_sequence_t IndAudLocalControlDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDStreamMode_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDReserveValue_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDReserveGroup_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_indAudPropertyParms_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudLocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudLocalControlDescriptor_sequence, hf_index, ett_h248_IndAudLocalControlDescriptor);
return offset;
}
static int dissect_iASPLocalControlDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudLocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPLocalControlDescriptor);
}
static const ber_sequence_t IndAudPropertyGroup_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IndAudPropertyGroup_item },
};
static int
dissect_h248_IndAudPropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
IndAudPropertyGroup_sequence_of, hf_index, ett_h248_IndAudPropertyGroup);
return offset;
}
static int dissect_iAPropertyGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudPropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_iAPropertyGroup);
}
static const ber_sequence_t IndAudLocalRemoteDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_propGroupID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_iAPropertyGroup_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudLocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudLocalRemoteDescriptor_sequence, hf_index, ett_h248_IndAudLocalRemoteDescriptor);
return offset;
}
static int dissect_iASPLocalDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPLocalDescriptor);
}
static int dissect_iASPRemoteDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPRemoteDescriptor);
}
static const ber_sequence_t IndAudStreamParms_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPLocalControlDescriptor_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPLocalDescriptor_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPRemoteDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudStreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudStreamParms_sequence, hf_index, ett_h248_IndAudStreamParms);
return offset;
}
static int dissect_oneStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_oneStream);
}
static int dissect_indAudStreamParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudStreamParms);
}
static const ber_sequence_t IndAudStreamDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indAudStreamParms_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudStreamDescriptor_sequence, hf_index, ett_h248_IndAudStreamDescriptor);
return offset;
}
static int dissect_multiStream_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudStreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_multiStream_item);
}
static const ber_sequence_t SEQUENCE_OF_IndAudStreamDescriptor_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_multiStream_item },
};
static int
dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_IndAudStreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAudStreamDescriptor);
return offset;
}
static int dissect_multiStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_multiStream);
}
static const value_string h248_indAudMediaDescriptorStreams_vals[] = {
{ 0, "oneStream" },
{ 1, "multiStream" },
{ 0, NULL }
};
static const ber_choice_t indAudMediaDescriptorStreams_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_oneStream_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_multiStream_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_indAudMediaDescriptorStreams(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
indAudMediaDescriptorStreams_choice, hf_index, ett_h248_indAudMediaDescriptorStreams);
return offset;
}
static int dissect_indAudMediaDescriptorStreams(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_indAudMediaDescriptorStreams(FALSE, tvb, offset, pinfo, tree, hf_h248_indAudMediaDescriptorStreams);
}
static const ber_sequence_t IndAudMediaDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_indAudTerminationStateDescriptor_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_indAudMediaDescriptorStreams },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudMediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudMediaDescriptor_sequence, hf_index, ett_h248_IndAudMediaDescriptor);
return offset;
}
static int dissect_indaudmediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudMediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudmediaDescriptor);
}
static const ber_sequence_t IndAudEventsDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_iAEDPkgdName_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudEventsDescriptor_sequence, hf_index, ett_h248_IndAudEventsDescriptor);
return offset;
}
static int dissect_indaudeventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventsDescriptor);
}
static const ber_sequence_t IndAudEventBufferDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iAEBDEventName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudEventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudEventBufferDescriptor_sequence, hf_index, ett_h248_IndAudEventBufferDescriptor);
return offset;
}
static int dissect_indaudeventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudEventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventBufferDescriptor);
}
static const ber_sequence_t IndAudSignal_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iASignalName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudSignal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudSignal_sequence, hf_index, ett_h248_IndAudSignal);
return offset;
}
static int dissect_indAudSignal_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudSignal);
}
static int dissect_iASignalList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_iASignalList);
}
static const ber_sequence_t IndAudSeqSigList_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASignalList_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudSeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudSeqSigList_sequence, hf_index, ett_h248_IndAudSeqSigList);
return offset;
}
static int dissect_indAudSeqSigList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudSeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudSeqSigList);
}
static const value_string h248_IndAudSignalsDescriptor_vals[] = {
{ 0, "signal" },
{ 1, "seqSigList" },
{ 0, NULL }
};
static const ber_choice_t IndAudSignalsDescriptor_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indAudSignal_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indAudSeqSigList_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudSignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
IndAudSignalsDescriptor_choice, hf_index, ett_h248_IndAudSignalsDescriptor);
return offset;
}
static int dissect_indaudsignalsDescriptor(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudSignalsDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_indaudsignalsDescriptor);
}
static const ber_sequence_t IndAudDigitMapDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudDigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudDigitMapDescriptor_sequence, hf_index, ett_h248_IndAudDigitMapDescriptor);
return offset;
}
static int dissect_indauddigitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudDigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indauddigitMapDescriptor);
}
static const ber_sequence_t IndAudStatisticsDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudStatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudStatisticsDescriptor_sequence, hf_index, ett_h248_IndAudStatisticsDescriptor);
return offset;
}
static int dissect_indaudstatisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudStatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudstatisticsDescriptor);
}
static const ber_sequence_t IndAudPackagesDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_IndAudPackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
IndAudPackagesDescriptor_sequence, hf_index, ett_h248_IndAudPackagesDescriptor);
return offset;
}
static int dissect_indaudpackagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAudPackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudpackagesDescriptor);
}
static const value_string h248_IndAuditParameter_vals[] = {
{ 0, "indaudmediaDescriptor" },
{ 1, "indaudeventsDescriptor" },
{ 2, "indaudeventBufferDescriptor" },
{ 3, "indaudsignalsDescriptor" },
{ 4, "indauddigitMapDescriptor" },
{ 5, "indaudstatisticsDescriptor" },
{ 6, "indaudpackagesDescriptor" },
{ 0, NULL }
};
static const ber_choice_t IndAuditParameter_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indaudmediaDescriptor_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indaudeventsDescriptor_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_indaudeventBufferDescriptor_impl },
{ 3, BER_CLASS_CON, 3, 0, dissect_indaudsignalsDescriptor },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_indauddigitMapDescriptor_impl },
{ 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_indaudstatisticsDescriptor_impl },
{ 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_indaudpackagesDescriptor_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
IndAuditParameter_choice, hf_index, ett_h248_IndAuditParameter);
return offset;
}
static int dissect_auditPropertyToken_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IndAuditParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken_item);
}
static const ber_sequence_t SEQUENCE_OF_IndAuditParameter_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_auditPropertyToken_item },
};
static int
dissect_h248_SEQUENCE_OF_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_IndAuditParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAuditParameter);
return offset;
}
static int dissect_auditPropertyToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_IndAuditParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken);
}
static const ber_sequence_t AuditDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditToken_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditPropertyToken_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AuditDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AuditDescriptor_sequence, hf_index, ett_h248_AuditDescriptor);
return offset;
}
static int dissect_auditDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_auditDescriptor);
}
static int dissect_emptyDescriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_emptyDescriptors);
}
static int dissect_serviceChangeInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeInfo);
}
static const value_string h248_AmmDescriptor_vals[] = {
{ 0, "mediaDescriptor" },
{ 1, "modemDescriptor" },
{ 2, "muxDescriptor" },
{ 3, "eventsDescriptor" },
{ 4, "eventBufferDescriptor" },
{ 5, "signalsDescriptor" },
{ 6, "digitMapDescriptor" },
{ 7, "auditDescriptor" },
{ 0, NULL }
};
static const ber_choice_t AmmDescriptor_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
{ 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
{ 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
{ 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
AmmDescriptor_choice, hf_index, ett_h248_AmmDescriptor);
return offset;
}
static int dissect_descriptors_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_descriptors_item);
}
static const ber_sequence_t SEQUENCE_OF_AmmDescriptor_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_descriptors_item },
};
static int
dissect_h248_SEQUENCE_OF_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_AmmDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_AmmDescriptor);
return offset;
}
static int dissect_descriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_AmmDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_descriptors);
}
static const ber_sequence_t AmmRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_descriptors_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AmmRequest_sequence, hf_index, ett_h248_AmmRequest);
return offset;
}
static int dissect_addReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_addReq);
}
static int dissect_moveReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReq);
}
static int dissect_modReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_modReq);
}
static const ber_sequence_t SubtractRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SubtractRequest_sequence, hf_index, ett_h248_SubtractRequest);
return offset;
}
static int dissect_subtractReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SubtractRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReq);
}
static const ber_sequence_t AuditRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AuditRequest_sequence, hf_index, ett_h248_AuditRequest);
return offset;
}
static int dissect_auditCapRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditCapRequest);
}
static int dissect_auditValueRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditValueRequest);
}
static const ber_sequence_t TimeNotation_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_date_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_time_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TimeNotation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TimeNotation_sequence, hf_index, ett_h248_TimeNotation);
return offset;
}
static int dissect_timeNotation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeNotation);
}
static int dissect_timeStamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeStamp);
}
static int dissect_timestamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timestamp);
}
static const ber_sequence_t ObservedEvent_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeNotation_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ObservedEvent_sequence, hf_index, ett_h248_ObservedEvent);
return offset;
}
static int dissect_observedEventLst_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ObservedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_observedEventLst_item);
}
static const ber_sequence_t SEQUENCE_OF_ObservedEvent_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_observedEventLst_item },
};
static int
dissect_h248_SEQUENCE_OF_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_ObservedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ObservedEvent);
return offset;
}
static int dissect_observedEventLst_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_ObservedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventLst);
}
static const ber_sequence_t ObservedEventsDescriptor_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestId_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventLst_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ObservedEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ObservedEventsDescriptor_sequence, hf_index, ett_h248_ObservedEventsDescriptor);
return offset;
}
static int dissect_observedEventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ObservedEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventsDescriptor);
}
static const ber_sequence_t NotifyRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
NotifyRequest_sequence, hf_index, ett_h248_NotifyRequest);
return offset;
}
static int dissect_notifyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NotifyRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReq);
}
static const value_string h248_ServiceChangeMethod_vals[] = {
{ 0, "failover" },
{ 1, "forced" },
{ 2, "graceful" },
{ 3, "restart" },
{ 4, "disconnected" },
{ 5, "handOff" },
{ 0, NULL }
};
static int
dissect_h248_ServiceChangeMethod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_serviceChangeMethod_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeMethod(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMethod);
}
static const value_string h248_ServiceChangeAddress_vals[] = {
{ 0, "portNumber" },
{ 1, "ip4Address" },
{ 2, "ip6Address" },
{ 3, "domainName" },
{ 4, "deviceName" },
{ 5, "mtpAddress" },
{ 0, NULL }
};
static const ber_choice_t ServiceChangeAddress_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
{ 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mtpAddress_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
ServiceChangeAddress_choice, hf_index, ett_h248_ServiceChangeAddress);
return offset;
}
static int dissect_serviceChangeAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeAddress(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeAddress);
}
static int
dissect_h248_IA5String_SIZE_1_67(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, 0,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_profileName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_IA5String_SIZE_1_67(TRUE, tvb, offset, pinfo, tree, hf_h248_profileName);
}
static const ber_sequence_t ServiceChangeProfile_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_profileName_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ServiceChangeProfile_sequence, hf_index, ett_h248_ServiceChangeProfile);
return offset;
}
static int dissect_serviceChangeProfile_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeProfile(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeProfile);
}
static int
dissect_h248_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_serviceChangeDelay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_INTEGER_0_4294967295(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeDelay);
}
static const ber_sequence_t ServiceChangeParm_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_serviceChangeMethod_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
{ BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceChangeReason_impl },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeDelay_impl },
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId },
{ BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeStamp_impl },
{ BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
{ BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeInfo_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ServiceChangeParm_sequence, hf_index, ett_h248_ServiceChangeParm);
return offset;
}
static int dissect_serviceChangeParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeParms);
}
static const ber_sequence_t ServiceChangeRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeParms_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ServiceChangeRequest_sequence, hf_index, ett_h248_ServiceChangeRequest);
return offset;
}
static int dissect_serviceChangeReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReq);
}
static const value_string h248_Command_vals[] = {
{ 0, "addReq" },
{ 1, "moveReq" },
{ 2, "modReq" },
{ 3, "subtractReq" },
{ 4, "auditCapRequest" },
{ 5, "auditValueRequest" },
{ 6, "notifyReq" },
{ 7, "serviceChangeReq" },
{ 0, NULL }
};
static const ber_choice_t Command_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReq_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReq_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReq_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReq_impl },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_auditCapRequest_impl },
{ 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_auditValueRequest_impl },
{ 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReq_impl },
{ 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReq_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_Command(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
Command_choice, hf_index, ett_h248_Command);
return offset;
}
static int dissect_command(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Command(FALSE, tvb, offset, pinfo, tree, hf_h248_command);
}
static const ber_sequence_t CommandRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_command },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_optional_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wildcardReturn_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
CommandRequest_sequence, hf_index, ett_h248_CommandRequest);
return offset;
}
static int dissect_commandRequests_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_CommandRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_commandRequests_item);
}
static const ber_sequence_t SEQUENCE_OF_CommandRequest_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_commandRequests_item },
};
static int
dissect_h248_SEQUENCE_OF_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_CommandRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandRequest);
return offset;
}
static int dissect_commandRequests_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_CommandRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_commandRequests);
}
static const ber_sequence_t ActionRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextRequest_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextAttrAuditReq_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandRequests_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ActionRequest_sequence, hf_index, ett_h248_ActionRequest);
return offset;
}
static int dissect_actions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ActionRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_actions_item);
}
static const ber_sequence_t SEQUENCE_OF_ActionRequest_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actions_item },
};
static int
dissect_h248_SEQUENCE_OF_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_ActionRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionRequest);
return offset;
}
static int dissect_actions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_ActionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_actions);
}
static const ber_sequence_t TransactionRequest_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actions_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TransactionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TransactionRequest_sequence, hf_index, ett_h248_TransactionRequest);
return offset;
}
static int dissect_transactionRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionRequest);
}
static const ber_sequence_t TransactionPending_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TransactionPending(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TransactionPending_sequence, hf_index, ett_h248_TransactionPending);
return offset;
}
static int dissect_transactionPending_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionPending(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionPending);
}
static const ber_sequence_t StatisticsParameter_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_statValue_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_StatisticsParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
StatisticsParameter_sequence, hf_index, ett_h248_StatisticsParameter);
return offset;
}
static int dissect_StatisticsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StatisticsParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_StatisticsDescriptor_item);
}
static const ber_sequence_t StatisticsDescriptor_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_StatisticsDescriptor_item },
};
static int
dissect_h248_StatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
StatisticsDescriptor_sequence_of, hf_index, ett_h248_StatisticsDescriptor);
return offset;
}
static int dissect_statisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_StatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_statisticsDescriptor);
}
static const ber_sequence_t PackagesItem_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_PackagesItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
PackagesItem_sequence, hf_index, ett_h248_PackagesItem);
return offset;
}
static int dissect_PackagesDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PackagesItem(FALSE, tvb, offset, pinfo, tree, hf_h248_PackagesDescriptor_item);
}
static const ber_sequence_t PackagesDescriptor_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PackagesDescriptor_item },
};
static int
dissect_h248_PackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
PackagesDescriptor_sequence_of, hf_index, ett_h248_PackagesDescriptor);
return offset;
}
static int dissect_packagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_PackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_packagesDescriptor);
}
static const value_string h248_AuditReturnParameter_vals[] = {
{ 0, "errorDescriptor" },
{ 1, "mediaDescriptor" },
{ 2, "modemDescriptor" },
{ 3, "muxDescriptor" },
{ 4, "eventsDescriptor" },
{ 5, "eventBufferDescriptor" },
{ 6, "signalsDescriptor" },
{ 7, "digitMapDescriptor" },
{ 8, "observedEventsDescriptor" },
{ 9, "statisticsDescriptor" },
{ 10, "packagesDescriptor" },
{ 11, "emptyDescriptors" },
{ 0, NULL }
};
static const ber_choice_t AuditReturnParameter_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
{ 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
{ 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
{ 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
{ 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
{ 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
{ 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
{ 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_packagesDescriptor_impl },
{ 11, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_emptyDescriptors_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_AuditReturnParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
AuditReturnParameter_choice, hf_index, ett_h248_AuditReturnParameter);
return offset;
}
static int dissect_TerminationAudit_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditReturnParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationAudit_item);
}
static const ber_sequence_t TerminationAudit_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_TerminationAudit_item },
};
static int
dissect_h248_TerminationAudit(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
TerminationAudit_sequence_of, hf_index, ett_h248_TerminationAudit);
return offset;
}
static int dissect_terminationAudit_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAudit);
}
static int dissect_terminationAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAuditResult);
}
static const ber_sequence_t AmmsReply_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationAudit_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AmmsReply_sequence, hf_index, ett_h248_AmmsReply);
return offset;
}
static int dissect_addReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_addReply);
}
static int dissect_moveReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReply);
}
static int dissect_modReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_modReply);
}
static int dissect_subtractReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReply);
}
static const ber_sequence_t AuditResult_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationAuditResult_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_AuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
AuditResult_sequence, hf_index, ett_h248_AuditResult);
return offset;
}
static int dissect_auditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditResult(TRUE, tvb, offset, pinfo, tree, hf_h248_auditResult);
}
static const value_string h248_AuditReply_vals[] = {
{ 0, "contextAuditResult" },
{ 1, "error" },
{ 2, "auditResult" },
{ 0, NULL }
};
static const ber_choice_t AuditReply_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextAuditResult_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_auditResult_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
AuditReply_choice, hf_index, ett_h248_AuditReply);
return offset;
}
static int dissect_auditCapReply(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditReply(FALSE, tvb, offset, pinfo, tree, hf_h248_auditCapReply);
}
static int dissect_auditValueReply(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_AuditReply(FALSE, tvb, offset, pinfo, tree, hf_h248_auditValueReply);
}
static const ber_sequence_t NotifyReply_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
NotifyReply_sequence, hf_index, ett_h248_NotifyReply);
return offset;
}
static int dissect_notifyReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_NotifyReply(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReply);
}
static const ber_sequence_t ServiceChangeResParm_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timestamp_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeResParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ServiceChangeResParm_sequence, hf_index, ett_h248_ServiceChangeResParm);
return offset;
}
static int dissect_serviceChangeResParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeResParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResParms);
}
static const value_string h248_ServiceChangeResult_vals[] = {
{ 0, "errorDescriptor" },
{ 1, "serviceChangeResParms" },
{ 0, NULL }
};
static const ber_choice_t ServiceChangeResult_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeResParms_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
ServiceChangeResult_choice, hf_index, ett_h248_ServiceChangeResult);
return offset;
}
static int dissect_serviceChangeResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeResult(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResult);
}
static const ber_sequence_t ServiceChangeReply_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_serviceChangeResult },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ServiceChangeReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ServiceChangeReply_sequence, hf_index, ett_h248_ServiceChangeReply);
return offset;
}
static int dissect_serviceChangeReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ServiceChangeReply(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReply);
}
static const value_string h248_CommandReply_vals[] = {
{ 0, "addReply" },
{ 1, "moveReply" },
{ 2, "modReply" },
{ 3, "subtractReply" },
{ 4, "auditCapReply" },
{ 5, "auditValueReply" },
{ 6, "notifyReply" },
{ 7, "serviceChangeReply" },
{ 0, NULL }
};
static const ber_choice_t CommandReply_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReply_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReply_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReply_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReply_impl },
{ 4, BER_CLASS_CON, 4, 0, dissect_auditCapReply },
{ 5, BER_CLASS_CON, 5, 0, dissect_auditValueReply },
{ 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReply_impl },
{ 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReply_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
CommandReply_choice, hf_index, ett_h248_CommandReply);
return offset;
}
static int dissect_commandReply_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_CommandReply(FALSE, tvb, offset, pinfo, tree, hf_h248_commandReply_item);
}
static const ber_sequence_t SEQUENCE_OF_CommandReply_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_commandReply_item },
};
static int
dissect_h248_SEQUENCE_OF_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_CommandReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandReply);
return offset;
}
static int dissect_commandReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_CommandReply(TRUE, tvb, offset, pinfo, tree, hf_h248_commandReply);
}
static const ber_sequence_t ActionReply_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextReply_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandReply_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
ActionReply_sequence, hf_index, ett_h248_ActionReply);
return offset;
}
static int dissect_actionReplies_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_ActionReply(FALSE, tvb, offset, pinfo, tree, hf_h248_actionReplies_item);
}
static const ber_sequence_t SEQUENCE_OF_ActionReply_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actionReplies_item },
};
static int
dissect_h248_SEQUENCE_OF_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_ActionReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionReply);
return offset;
}
static int dissect_actionReplies_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_ActionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_actionReplies);
}
static const value_string h248_T_transactionResult_vals[] = {
{ 0, "transactionError" },
{ 1, "actionReplies" },
{ 0, NULL }
};
static const ber_choice_t T_transactionResult_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionError_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actionReplies_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_T_transactionResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
T_transactionResult_choice, hf_index, ett_h248_T_transactionResult);
return offset;
}
static int dissect_transactionResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_T_transactionResult(FALSE, tvb, offset, pinfo, tree, hf_h248_transactionResult);
}
static const ber_sequence_t TransactionReply_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immAckRequired_impl },
{ BER_CLASS_CON, 2, 0, dissect_transactionResult },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TransactionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TransactionReply_sequence, hf_index, ett_h248_TransactionReply);
return offset;
}
static int dissect_transactionReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionReply);
}
static const ber_sequence_t TransactionAck_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_firstAck_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lastAck_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_TransactionAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
TransactionAck_sequence, hf_index, ett_h248_TransactionAck);
return offset;
}
static int dissect_TransactionResponseAck_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionAck(FALSE, tvb, offset, pinfo, tree, hf_h248_TransactionResponseAck_item);
}
static const ber_sequence_t TransactionResponseAck_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TransactionResponseAck_item },
};
static int
dissect_h248_TransactionResponseAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
TransactionResponseAck_sequence_of, hf_index, ett_h248_TransactionResponseAck);
return offset;
}
static int dissect_transactionResponseAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_TransactionResponseAck(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionResponseAck);
}
static const value_string h248_Transaction_vals[] = {
{ 0, "transactionRequest" },
{ 1, "transactionPending" },
{ 2, "transactionReply" },
{ 3, "transactionResponseAck" },
{ 0, NULL }
};
static const ber_choice_t Transaction_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionRequest_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactionPending_impl },
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_transactionReply_impl },
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_transactionResponseAck_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
Transaction_choice, hf_index, ett_h248_Transaction);
return offset;
}
static int dissect_transactions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Transaction(FALSE, tvb, offset, pinfo, tree, hf_h248_transactions_item);
}
static const ber_sequence_t SEQUENCE_OF_Transaction_sequence_of[1] = {
{ BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_transactions_item },
};
static int
dissect_h248_SEQUENCE_OF_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
SEQUENCE_OF_Transaction_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Transaction);
return offset;
}
static int dissect_transactions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_SEQUENCE_OF_Transaction(TRUE, tvb, offset, pinfo, tree, hf_h248_transactions);
}
static const value_string h248_T_messageBody_vals[] = {
{ 0, "messageError" },
{ 1, "transactions" },
{ 0, NULL }
};
static const ber_choice_t T_messageBody_choice[] = {
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_messageError_impl },
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactions_impl },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_h248_T_messageBody(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
T_messageBody_choice, hf_index, ett_h248_T_messageBody);
return offset;
}
static int dissect_messageBody(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_T_messageBody(FALSE, tvb, offset, pinfo, tree, hf_h248_messageBody);
}
static const ber_sequence_t Message_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_version_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mId },
{ BER_CLASS_CON, 2, 0, dissect_messageBody },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
Message_sequence, hf_index, ett_h248_Message);
return offset;
}
static int dissect_mess_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_h248_Message(TRUE, tvb, offset, pinfo, tree, hf_h248_mess);
}
static const ber_sequence_t MegacoMessage_sequence[] = {
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_authHeader_impl },
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mess_impl },
{ 0, 0, 0, NULL }
};
static int
dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
MegacoMessage_sequence, hf_index, ett_h248_MegacoMessage);
return offset;
}
/*--- End of included file: packet-h248-fn.c ---*/
static void
dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *h248_item;
proto_tree *h248_tree = NULL;
/* Make entry in the Protocol column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");
if (tree) {
h248_item = proto_tree_add_item(tree, proto_h248, tvb, 0, -1, FALSE);
h248_tree = proto_item_add_subtree(h248_item, ett_h248);
}
dissect_h248_MegacoMessage(FALSE, tvb, 0, pinfo, h248_tree, -1);
}
/*--- proto_register_h248 ----------------------------------------------*/
void proto_register_h248(void) {
/* List of fields */
static hf_register_info hf[] = {
{ &hf_h248_mtpaddress_ni, {
"NI", "h248.mtpaddress.ni", FT_UINT32, BASE_DEC,
NULL, 0, "NI", HFILL }},
{ &hf_h248_mtpaddress_pc, {
"PC", "h248.mtpaddress.pc", FT_UINT32, BASE_DEC,
NULL, 0, "PC", HFILL }},
{ &hf_h248_package_name, {
"Package", "h248.package_name", FT_UINT16, BASE_HEX,
VALS(package_name_vals), 0, "Package", HFILL }},
{ &hf_h248_event_name, {
"Package and Event name", "h248.event_name", FT_UINT32, BASE_HEX,
VALS(event_name_vals), 0, "Package", HFILL }},
{ &hf_h248_signal_name, {
"Package and Signal name", "h248.signal_name", FT_UINT32, BASE_HEX,
VALS(signal_name_vals), 0, "Package", HFILL }},
{ &hf_h248_package_bcp_BNCChar_PDU,
{ "BNCChar", "h248.package_bcp.BNCChar",
FT_UINT32, BASE_DEC, VALS(BNCChar_vals), 0,
"BNCChar", HFILL }},
{ &hf_h248_package_annex_C_ACodec,
{ "ACodec", "h248.package_annex_C.ACodec",
FT_BYTES, BASE_HEX, NULL, 0,
"ACodec", HFILL }},
{ &hf_h248_package_annex_C_TMR,
{ "TMR", "h248.package_annex_C.TMR",
FT_UINT32, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0,
"BNCChar", HFILL }},
{ &hf_h248_package_annex_C_Mediatx,
{ "Mediatx", "h248.package_annex_C.Mediatx",
FT_UINT32, BASE_DEC, VALS(h248_package_annex_C_Mediatx_vals), 0,
"Mediatx", HFILL }},
{ &hf_h248_package_annex_C_USI,
{ "USI", "h248.package_annex_C.USI",
FT_BYTES, BASE_HEX, NULL, 0,
"User Service Information", HFILL }},
{ &hf_h248_package_annex_C_BIR,
{ "BIR", "h248.package_annex_C.BIR",
FT_BYTES, BASE_HEX, NULL, 0,
"BIR", HFILL }},
{ &hf_h248_package_annex_C_NSAP,
{ "NSAP", "h248.package_annex_C.NSAP",
FT_BYTES, BASE_HEX, NULL, 0,
"NSAP", HFILL }},
{ &hf_h248_package_3GUP_Mode,
{ "Mode", "h248.package_3GUP.Mode",
FT_UINT32, BASE_DEC, VALS(h248_3GUP_Mode_vals), 0,
"Mode", HFILL }},
{ &hf_h248_package_3GUP_UPversions,
{ "UPversions", "h248.package_3GUP.upversions",
FT_UINT32, BASE_DEC, VALS(h248_3GUP_upversions_vals), 0,
"UPversions", HFILL }},
{ &hf_h248_package_3GUP_delerrsdu,
{ "Delivery of erroneous SDUs", "h248.package_3GUP.delerrsdu",
FT_UINT32, BASE_DEC, VALS(h248_3GUP_delerrsdu_vals), 0,
"Delivery of erroneous SDUs", HFILL }},
{ &hf_h248_package_3GUP_interface,
{ "Interface", "h248.package_3GUP.interface",
FT_UINT32, BASE_DEC, VALS(h248_3GUP_interface_vals), 0,
"Interface", HFILL }},
{ &hf_h248_package_3GUP_initdir,
{ "Initialisation Direction", "h248.package_3GUP.initdir",
FT_UINT32, BASE_DEC, VALS(h248_3GUP_initdir_vals), 0,
"Initialisation Direction", HFILL }},
/*--- Included file: packet-h248-hfarr.c ---*/
{ &hf_h248_authHeader,
{ "authHeader", "h248.authHeader",
FT_NONE, BASE_NONE, NULL, 0,
"MegacoMessage/authHeader", HFILL }},
{ &hf_h248_mess,
{ "mess", "h248.mess",
FT_NONE, BASE_NONE, NULL, 0,
"MegacoMessage/mess", HFILL }},
{ &hf_h248_secParmIndex,
{ "secParmIndex", "h248.secParmIndex",
FT_BYTES, BASE_HEX, NULL, 0,
"AuthenticationHeader/secParmIndex", HFILL }},
{ &hf_h248_seqNum,
{ "seqNum", "h248.seqNum",
FT_BYTES, BASE_HEX, NULL, 0,
"AuthenticationHeader/seqNum", HFILL }},
{ &hf_h248_ad,
{ "ad", "h248.ad",
FT_BYTES, BASE_HEX, NULL, 0,
"AuthenticationHeader/ad", HFILL }},
{ &hf_h248_version,
{ "version", "h248.version",
FT_UINT32, BASE_DEC, NULL, 0,
"Message/version", HFILL }},
{ &hf_h248_mId,
{ "mId", "h248.mId",
FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
"Message/mId", HFILL }},
{ &hf_h248_messageBody,
{ "messageBody", "h248.messageBody",
FT_UINT32, BASE_DEC, VALS(h248_T_messageBody_vals), 0,
"Message/messageBody", HFILL }},
{ &hf_h248_messageError,
{ "messageError", "h248.messageError",
FT_NONE, BASE_NONE, NULL, 0,
"Message/messageBody/messageError", HFILL }},
{ &hf_h248_transactions,
{ "transactions", "h248.transactions",
FT_NONE, BASE_NONE, NULL, 0,
"Message/messageBody/transactions", HFILL }},
{ &hf_h248_transactions_item,
{ "Item", "h248.transactions_item",
FT_UINT32, BASE_DEC, VALS(h248_Transaction_vals), 0,
"Message/messageBody/transactions/_item", HFILL }},
{ &hf_h248_ip4Address,
{ "ip4Address", "h248.ip4Address",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_ip6Address,
{ "ip6Address", "h248.ip6Address",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_domainName,
{ "domainName", "h248.domainName",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_deviceName,
{ "deviceName", "h248.deviceName",
FT_STRING, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_mtpAddress,
{ "mtpAddress", "h248.mtpAddress",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_domName,
{ "name", "h248.name",
FT_STRING, BASE_NONE, NULL, 0,
"DomainName/name", HFILL }},
{ &hf_h248_portNumber,
{ "portNumber", "h248.portNumber",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_iP4Address,
{ "address", "h248.address",
FT_IPv4, BASE_NONE, NULL, 0,
"IP4Address/address", HFILL }},
{ &hf_h248_iP6Address,
{ "address", "h248.address",
FT_IPv6, BASE_NONE, NULL, 0,
"IP6Address/address", HFILL }},
{ &hf_h248_transactionRequest,
{ "transactionRequest", "h248.transactionRequest",
FT_NONE, BASE_NONE, NULL, 0,
"Transaction/transactionRequest", HFILL }},
{ &hf_h248_transactionPending,
{ "transactionPending", "h248.transactionPending",
FT_NONE, BASE_NONE, NULL, 0,
"Transaction/transactionPending", HFILL }},
{ &hf_h248_transactionReply,
{ "transactionReply", "h248.transactionReply",
FT_NONE, BASE_NONE, NULL, 0,
"Transaction/transactionReply", HFILL }},
{ &hf_h248_transactionResponseAck,
{ "transactionResponseAck", "h248.transactionResponseAck",
FT_NONE, BASE_NONE, NULL, 0,
"Transaction/transactionResponseAck", HFILL }},
{ &hf_h248_transactionId,
{ "transactionId", "h248.transactionId",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_actions,
{ "actions", "h248.actions",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionRequest/actions", HFILL }},
{ &hf_h248_actions_item,
{ "Item", "h248.actions_item",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionRequest/actions/_item", HFILL }},
{ &hf_h248_immAckRequired,
{ "immAckRequired", "h248.immAckRequired",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionReply/immAckRequired", HFILL }},
{ &hf_h248_transactionResult,
{ "transactionResult", "h248.transactionResult",
FT_UINT32, BASE_DEC, VALS(h248_T_transactionResult_vals), 0,
"TransactionReply/transactionResult", HFILL }},
{ &hf_h248_transactionError,
{ "transactionError", "h248.transactionError",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionReply/transactionResult/transactionError", HFILL }},
{ &hf_h248_actionReplies,
{ "actionReplies", "h248.actionReplies",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionReply/transactionResult/actionReplies", HFILL }},
{ &hf_h248_actionReplies_item,
{ "Item", "h248.actionReplies_item",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionReply/transactionResult/actionReplies/_item", HFILL }},
{ &hf_h248_TransactionResponseAck_item,
{ "Item", "h248.TransactionResponseAck_item",
FT_NONE, BASE_NONE, NULL, 0,
"TransactionResponseAck/_item", HFILL }},
{ &hf_h248_firstAck,
{ "firstAck", "h248.firstAck",
FT_UINT32, BASE_DEC, NULL, 0,
"TransactionAck/firstAck", HFILL }},
{ &hf_h248_lastAck,
{ "lastAck", "h248.lastAck",
FT_UINT32, BASE_DEC, NULL, 0,
"TransactionAck/lastAck", HFILL }},
{ &hf_h248_errorCode,
{ "errorCode", "h248.errorCode",
FT_UINT32, BASE_DEC, NULL, 0,
"ErrorDescriptor/errorCode", HFILL }},
{ &hf_h248_errorText,
{ "errorText", "h248.errorText",
FT_STRING, BASE_NONE, NULL, 0,
"ErrorDescriptor/errorText", HFILL }},
{ &hf_h248_contextId,
{ "contextId", "h248.contextId",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_contextRequest,
{ "contextRequest", "h248.contextRequest",
FT_NONE, BASE_NONE, NULL, 0,
"ActionRequest/contextRequest", HFILL }},
{ &hf_h248_contextAttrAuditReq,
{ "contextAttrAuditReq", "h248.contextAttrAuditReq",
FT_NONE, BASE_NONE, NULL, 0,
"ActionRequest/contextAttrAuditReq", HFILL }},
{ &hf_h248_commandRequests,
{ "commandRequests", "h248.commandRequests",
FT_NONE, BASE_NONE, NULL, 0,
"ActionRequest/commandRequests", HFILL }},
{ &hf_h248_commandRequests_item,
{ "Item", "h248.commandRequests_item",
FT_NONE, BASE_NONE, NULL, 0,
"ActionRequest/commandRequests/_item", HFILL }},
{ &hf_h248_errorDescriptor,
{ "errorDescriptor", "h248.errorDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_contextReply,
{ "contextReply", "h248.contextReply",
FT_NONE, BASE_NONE, NULL, 0,
"ActionReply/contextReply", HFILL }},
{ &hf_h248_commandReply,
{ "commandReply", "h248.commandReply",
FT_NONE, BASE_NONE, NULL, 0,
"ActionReply/commandReply", HFILL }},
{ &hf_h248_commandReply_item,
{ "Item", "h248.commandReply_item",
FT_UINT32, BASE_DEC, VALS(h248_CommandReply_vals), 0,
"ActionReply/commandReply/_item", HFILL }},
{ &hf_h248_priority,
{ "priority", "h248.priority",
FT_UINT32, BASE_DEC, NULL, 0,
"ContextRequest/priority", HFILL }},
{ &hf_h248_emergency,
{ "emergency", "h248.emergency",
FT_BOOLEAN, 8, NULL, 0,
"ContextRequest/emergency", HFILL }},
{ &hf_h248_topologyReq,
{ "topologyReq", "h248.topologyReq",
FT_NONE, BASE_NONE, NULL, 0,
"ContextRequest/topologyReq", HFILL }},
{ &hf_h248_topologyReq_item,
{ "Item", "h248.topologyReq_item",
FT_NONE, BASE_NONE, NULL, 0,
"ContextRequest/topologyReq/_item", HFILL }},
{ &hf_h248_topology,
{ "topology", "h248.topology",
FT_NONE, BASE_NONE, NULL, 0,
"ContextAttrAuditRequest/topology", HFILL }},
{ &hf_h248_cAAREmergency,
{ "emergency", "h248.emergency",
FT_NONE, BASE_NONE, NULL, 0,
"ContextAttrAuditRequest/emergency", HFILL }},
{ &hf_h248_cAARPriority,
{ "priority", "h248.priority",
FT_NONE, BASE_NONE, NULL, 0,
"ContextAttrAuditRequest/priority", HFILL }},
{ &hf_h248_command,
{ "command", "h248.command",
FT_UINT32, BASE_DEC, VALS(h248_Command_vals), 0,
"CommandRequest/command", HFILL }},
{ &hf_h248_optional,
{ "optional", "h248.optional",
FT_NONE, BASE_NONE, NULL, 0,
"CommandRequest/optional", HFILL }},
{ &hf_h248_wildcardReturn,
{ "wildcardReturn", "h248.wildcardReturn",
FT_NONE, BASE_NONE, NULL, 0,
"CommandRequest/wildcardReturn", HFILL }},
{ &hf_h248_addReq,
{ "addReq", "h248.addReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/addReq", HFILL }},
{ &hf_h248_moveReq,
{ "moveReq", "h248.moveReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/moveReq", HFILL }},
{ &hf_h248_modReq,
{ "modReq", "h248.modReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/modReq", HFILL }},
{ &hf_h248_subtractReq,
{ "subtractReq", "h248.subtractReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/subtractReq", HFILL }},
{ &hf_h248_auditCapRequest,
{ "auditCapRequest", "h248.auditCapRequest",
FT_NONE, BASE_NONE, NULL, 0,
"Command/auditCapRequest", HFILL }},
{ &hf_h248_auditValueRequest,
{ "auditValueRequest", "h248.auditValueRequest",
FT_NONE, BASE_NONE, NULL, 0,
"Command/auditValueRequest", HFILL }},
{ &hf_h248_notifyReq,
{ "notifyReq", "h248.notifyReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/notifyReq", HFILL }},
{ &hf_h248_serviceChangeReq,
{ "serviceChangeReq", "h248.serviceChangeReq",
FT_NONE, BASE_NONE, NULL, 0,
"Command/serviceChangeReq", HFILL }},
{ &hf_h248_addReply,
{ "addReply", "h248.addReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/addReply", HFILL }},
{ &hf_h248_moveReply,
{ "moveReply", "h248.moveReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/moveReply", HFILL }},
{ &hf_h248_modReply,
{ "modReply", "h248.modReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/modReply", HFILL }},
{ &hf_h248_subtractReply,
{ "subtractReply", "h248.subtractReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/subtractReply", HFILL }},
{ &hf_h248_auditCapReply,
{ "auditCapReply", "h248.auditCapReply",
FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
"CommandReply/auditCapReply", HFILL }},
{ &hf_h248_auditValueReply,
{ "auditValueReply", "h248.auditValueReply",
FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
"CommandReply/auditValueReply", HFILL }},
{ &hf_h248_notifyReply,
{ "notifyReply", "h248.notifyReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/notifyReply", HFILL }},
{ &hf_h248_serviceChangeReply,
{ "serviceChangeReply", "h248.serviceChangeReply",
FT_NONE, BASE_NONE, NULL, 0,
"CommandReply/serviceChangeReply", HFILL }},
{ &hf_h248_terminationFrom,
{ "terminationFrom", "h248.terminationFrom",
FT_NONE, BASE_NONE, NULL, 0,
"TopologyRequest/terminationFrom", HFILL }},
{ &hf_h248_terminationTo,
{ "terminationTo", "h248.terminationTo",
FT_NONE, BASE_NONE, NULL, 0,
"TopologyRequest/terminationTo", HFILL }},
{ &hf_h248_topologyDirection,
{ "topologyDirection", "h248.topologyDirection",
FT_UINT32, BASE_DEC, VALS(h248_T_topologyDirection_vals), 0,
"TopologyRequest/topologyDirection", HFILL }},
{ &hf_h248_streamID,
{ "streamID", "h248.streamID",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_terminationIDList,
{ "terminationID", "h248.terminationID",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_descriptors,
{ "descriptors", "h248.descriptors",
FT_NONE, BASE_NONE, NULL, 0,
"AmmRequest/descriptors", HFILL }},
{ &hf_h248_descriptors_item,
{ "Item", "h248.descriptors_item",
FT_UINT32, BASE_DEC, VALS(h248_AmmDescriptor_vals), 0,
"AmmRequest/descriptors/_item", HFILL }},
{ &hf_h248_mediaDescriptor,
{ "mediaDescriptor", "h248.mediaDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_modemDescriptor,
{ "modemDescriptor", "h248.modemDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_muxDescriptor,
{ "muxDescriptor", "h248.muxDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_eventsDescriptor,
{ "eventsDescriptor", "h248.eventsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_eventBufferDescriptor,
{ "eventBufferDescriptor", "h248.eventBufferDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_signalsDescriptor,
{ "signalsDescriptor", "h248.signalsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_digitMapDescriptor,
{ "digitMapDescriptor", "h248.digitMapDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_auditDescriptor,
{ "auditDescriptor", "h248.auditDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_terminationAudit,
{ "terminationAudit", "h248.terminationAudit",
FT_NONE, BASE_NONE, NULL, 0,
"AmmsReply/terminationAudit", HFILL }},
{ &hf_h248_terminationID,
{ "terminationID", "h248.terminationID",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_contextAuditResult,
{ "contextAuditResult", "h248.contextAuditResult",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReply/contextAuditResult", HFILL }},
{ &hf_h248_error,
{ "error", "h248.error",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReply/error", HFILL }},
{ &hf_h248_auditResult,
{ "auditResult", "h248.auditResult",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReply/auditResult", HFILL }},
{ &hf_h248_terminationAuditResult,
{ "terminationAuditResult", "h248.terminationAuditResult",
FT_NONE, BASE_NONE, NULL, 0,
"AuditResult/terminationAuditResult", HFILL }},
{ &hf_h248_TerminationAudit_item,
{ "Item", "h248.TerminationAudit_item",
FT_UINT32, BASE_DEC, VALS(h248_AuditReturnParameter_vals), 0,
"TerminationAudit/_item", HFILL }},
{ &hf_h248_observedEventsDescriptor,
{ "observedEventsDescriptor", "h248.observedEventsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_statisticsDescriptor,
{ "statisticsDescriptor", "h248.statisticsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReturnParameter/statisticsDescriptor", HFILL }},
{ &hf_h248_packagesDescriptor,
{ "packagesDescriptor", "h248.packagesDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReturnParameter/packagesDescriptor", HFILL }},
{ &hf_h248_emptyDescriptors,
{ "emptyDescriptors", "h248.emptyDescriptors",
FT_NONE, BASE_NONE, NULL, 0,
"AuditReturnParameter/emptyDescriptors", HFILL }},
{ &hf_h248_auditToken,
{ "auditToken", "h248.auditToken",
FT_BYTES, BASE_HEX, NULL, 0,
"AuditDescriptor/auditToken", HFILL }},
{ &hf_h248_auditPropertyToken,
{ "auditPropertyToken", "h248.auditPropertyToken",
FT_NONE, BASE_NONE, NULL, 0,
"AuditDescriptor/auditPropertyToken", HFILL }},
{ &hf_h248_auditPropertyToken_item,
{ "Item", "h248.auditPropertyToken_item",
FT_UINT32, BASE_DEC, VALS(h248_IndAuditParameter_vals), 0,
"AuditDescriptor/auditPropertyToken/_item", HFILL }},
{ &hf_h248_indaudmediaDescriptor,
{ "indaudmediaDescriptor", "h248.indaudmediaDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indaudmediaDescriptor", HFILL }},
{ &hf_h248_indaudeventsDescriptor,
{ "indaudeventsDescriptor", "h248.indaudeventsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indaudeventsDescriptor", HFILL }},
{ &hf_h248_indaudeventBufferDescriptor,
{ "indaudeventBufferDescriptor", "h248.indaudeventBufferDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indaudeventBufferDescriptor", HFILL }},
{ &hf_h248_indaudsignalsDescriptor,
{ "indaudsignalsDescriptor", "h248.indaudsignalsDescriptor",
FT_UINT32, BASE_DEC, VALS(h248_IndAudSignalsDescriptor_vals), 0,
"IndAuditParameter/indaudsignalsDescriptor", HFILL }},
{ &hf_h248_indauddigitMapDescriptor,
{ "indauddigitMapDescriptor", "h248.indauddigitMapDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indauddigitMapDescriptor", HFILL }},
{ &hf_h248_indaudstatisticsDescriptor,
{ "indaudstatisticsDescriptor", "h248.indaudstatisticsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indaudstatisticsDescriptor", HFILL }},
{ &hf_h248_indaudpackagesDescriptor,
{ "indaudpackagesDescriptor", "h248.indaudpackagesDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAuditParameter/indaudpackagesDescriptor", HFILL }},
{ &hf_h248_indAudTerminationStateDescriptor,
{ "termStateDescr", "h248.termStateDescr",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudMediaDescriptor/termStateDescr", HFILL }},
{ &hf_h248_indAudMediaDescriptorStreams,
{ "streams", "h248.streams",
FT_UINT32, BASE_DEC, VALS(h248_indAudMediaDescriptorStreams_vals), 0,
"IndAudMediaDescriptor/streams", HFILL }},
{ &hf_h248_oneStream,
{ "oneStream", "h248.oneStream",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudMediaDescriptor/streams/oneStream", HFILL }},
{ &hf_h248_multiStream,
{ "multiStream", "h248.multiStream",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudMediaDescriptor/streams/multiStream", HFILL }},
{ &hf_h248_multiStream_item,
{ "Item", "h248.multiStream_item",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudMediaDescriptor/streams/multiStream/_item", HFILL }},
{ &hf_h248_indAudStreamParms,
{ "streamParms", "h248.streamParms",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudStreamDescriptor/streamParms", HFILL }},
{ &hf_h248_iASPLocalControlDescriptor,
{ "localControlDescriptor", "h248.localControlDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudStreamParms/localControlDescriptor", HFILL }},
{ &hf_h248_iASPLocalDescriptor,
{ "localDescriptor", "h248.localDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudStreamParms/localDescriptor", HFILL }},
{ &hf_h248_iASPRemoteDescriptor,
{ "remoteDescriptor", "h248.remoteDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudStreamParms/remoteDescriptor", HFILL }},
{ &hf_h248_iALCDStreamMode,
{ "streamMode", "h248.streamMode",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudLocalControlDescriptor/streamMode", HFILL }},
{ &hf_h248_iALCDReserveValue,
{ "reserveValue", "h248.reserveValue",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudLocalControlDescriptor/reserveValue", HFILL }},
{ &hf_h248_iALCDReserveGroup,
{ "reserveGroup", "h248.reserveGroup",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudLocalControlDescriptor/reserveGroup", HFILL }},
{ &hf_h248_indAudPropertyParms,
{ "propertyParms", "h248.propertyParms",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_name,
{ "name", "h248.name",
FT_BYTES, BASE_HEX, NULL, 0,
"IndAudPropertyParm/name", HFILL }},
{ &hf_h248_IndAudPropertyParms_item,
{ "Item", "h248.IndAudPropertyParms_item",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudPropertyParms/_item", HFILL }},
{ &hf_h248_propGroupID,
{ "propGroupID", "h248.propGroupID",
FT_UINT32, BASE_DEC, NULL, 0,
"IndAudLocalRemoteDescriptor/propGroupID", HFILL }},
{ &hf_h248_iAPropertyGroup,
{ "propGrps", "h248.propGrps",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudLocalRemoteDescriptor/propGrps", HFILL }},
{ &hf_h248_IndAudPropertyGroup_item,
{ "Item", "h248.IndAudPropertyGroup_item",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudPropertyGroup/_item", HFILL }},
{ &hf_h248_eventBufferControl,
{ "eventBufferControl", "h248.eventBufferControl",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudTerminationStateDescriptor/eventBufferControl", HFILL }},
{ &hf_h248_iATSDServiceState,
{ "serviceState", "h248.serviceState",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudTerminationStateDescriptor/serviceState", HFILL }},
{ &hf_h248_requestID,
{ "requestID", "h248.requestID",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_iAEDPkgdName,
{ "pkgdName", "h248.pkgdName",
FT_BYTES, BASE_HEX, NULL, 0,
"IndAudEventsDescriptor/pkgdName", HFILL }},
{ &hf_h248_iAEBDEventName,
{ "eventName", "h248.eventName",
FT_BYTES, BASE_HEX, NULL, 0,
"IndAudEventBufferDescriptor/eventName", HFILL }},
{ &hf_h248_indAudSignal,
{ "signal", "h248.signal",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudSignalsDescriptor/signal", HFILL }},
{ &hf_h248_indAudSeqSigList,
{ "seqSigList", "h248.seqSigList",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudSignalsDescriptor/seqSigList", HFILL }},
{ &hf_h248_id,
{ "id", "h248.id",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_iASignalList,
{ "signalList", "h248.signalList",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudSeqSigList/signalList", HFILL }},
{ &hf_h248_iASignalName,
{ "signalName", "h248.signalName",
FT_BYTES, BASE_HEX, NULL, 0,
"IndAudSignal/signalName", HFILL }},
{ &hf_h248_digitMapName,
{ "digitMapName", "h248.digitMapName",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_statName,
{ "statName", "h248.statName",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_packageName,
{ "packageName", "h248.packageName",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_packageVersion,
{ "packageVersion", "h248.packageVersion",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_requestId,
{ "requestId", "h248.requestId",
FT_UINT32, BASE_DEC, NULL, 0,
"ObservedEventsDescriptor/requestId", HFILL }},
{ &hf_h248_observedEventLst,
{ "observedEventLst", "h248.observedEventLst",
FT_NONE, BASE_NONE, NULL, 0,
"ObservedEventsDescriptor/observedEventLst", HFILL }},
{ &hf_h248_observedEventLst_item,
{ "Item", "h248.observedEventLst_item",
FT_NONE, BASE_NONE, NULL, 0,
"ObservedEventsDescriptor/observedEventLst/_item", HFILL }},
{ &hf_h248_eventName,
{ "eventName", "h248.eventName",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_eventParList,
{ "eventParList", "h248.eventParList",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_timeNotation,
{ "timeNotation", "h248.timeNotation",
FT_NONE, BASE_NONE, NULL, 0,
"ObservedEvent/timeNotation", HFILL }},
{ &hf_h248_relation,
{ "relation", "h248.relation",
FT_UINT32, BASE_DEC, VALS(h248_Relation_vals), 0,
"ExtraInfo/relation", HFILL }},
{ &hf_h248_range,
{ "range", "h248.range",
FT_BOOLEAN, 8, NULL, 0,
"ExtraInfo/range", HFILL }},
{ &hf_h248_sublist,
{ "sublist", "h248.sublist",
FT_BOOLEAN, 8, NULL, 0,
"ExtraInfo/sublist", HFILL }},
{ &hf_h248_eventParameterName,
{ "eventParameterName", "h248.eventParameterName",
FT_BYTES, BASE_HEX, NULL, 0,
"EventParameter/eventParameterName", HFILL }},
{ &hf_h248_value,
{ "value", "h248.value",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_extraInfo,
{ "extraInfo", "h248.extraInfo",
FT_UINT32, BASE_DEC, VALS(h248_ExtraInfo_vals), 0,
"", HFILL }},
{ &hf_h248_EventParameters_item,
{ "Item", "h248.EventParameters_item",
FT_NONE, BASE_NONE, NULL, 0,
"EventParameters/_item", HFILL }},
{ &hf_h248_serviceChangeParms,
{ "serviceChangeParms", "h248.serviceChangeParms",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeRequest/serviceChangeParms", HFILL }},
{ &hf_h248_serviceChangeResult,
{ "serviceChangeResult", "h248.serviceChangeResult",
FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeResult_vals), 0,
"ServiceChangeReply/serviceChangeResult", HFILL }},
{ &hf_h248_serviceChangeResParms,
{ "serviceChangeResParms", "h248.serviceChangeResParms",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeResult/serviceChangeResParms", HFILL }},
{ &hf_h248_wildcard,
{ "wildcard", "h248.wildcard",
FT_NONE, BASE_NONE, NULL, 0,
"TerminationID/wildcard", HFILL }},
{ &hf_h248_wildcard_item,
{ "Item", "h248.wildcard_item",
FT_BYTES, BASE_HEX, NULL, 0,
"TerminationID/wildcard/_item", HFILL }},
{ &hf_h248_terminationId,
{ "id", "h248.id",
FT_BYTES, BASE_HEX, NULL, 0,
"TerminationID/id", HFILL }},
{ &hf_h248_TerminationIDList_item,
{ "Item", "h248.TerminationIDList_item",
FT_NONE, BASE_NONE, NULL, 0,
"TerminationIDList/_item", HFILL }},
{ &hf_h248_termStateDescr,
{ "termStateDescr", "h248.termStateDescr",
FT_NONE, BASE_NONE, NULL, 0,
"MediaDescriptor/termStateDescr", HFILL }},
{ &hf_h248_streams,
{ "streams", "h248.streams",
FT_UINT32, BASE_DEC, VALS(h248_T_streams_vals), 0,
"MediaDescriptor/streams", HFILL }},
{ &hf_h248_mediaDescriptorOneStream,
{ "oneStream", "h248.oneStream",
FT_NONE, BASE_NONE, NULL, 0,
"MediaDescriptor/streams/oneStream", HFILL }},
{ &hf_h248_mediaDescriptorMultiStream,
{ "multiStream", "h248.multiStream",
FT_NONE, BASE_NONE, NULL, 0,
"MediaDescriptor/streams/multiStream", HFILL }},
{ &hf_h248_mediaDescriptorMultiStream_item,
{ "Item", "h248.multiStream_item",
FT_NONE, BASE_NONE, NULL, 0,
"MediaDescriptor/streams/multiStream/_item", HFILL }},
{ &hf_h248_streamParms,
{ "streamParms", "h248.streamParms",
FT_NONE, BASE_NONE, NULL, 0,
"StreamDescriptor/streamParms", HFILL }},
{ &hf_h248_localControlDescriptor,
{ "localControlDescriptor", "h248.localControlDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"StreamParms/localControlDescriptor", HFILL }},
{ &hf_h248_localDescriptor,
{ "localDescriptor", "h248.localDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"StreamParms/localDescriptor", HFILL }},
{ &hf_h248_remoteDescriptor,
{ "remoteDescriptor", "h248.remoteDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"StreamParms/remoteDescriptor", HFILL }},
{ &hf_h248_streamMode,
{ "streamMode", "h248.streamMode",
FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
"LocalControlDescriptor/streamMode", HFILL }},
{ &hf_h248_reserveValue,
{ "reserveValue", "h248.reserveValue",
FT_BOOLEAN, 8, NULL, 0,
"LocalControlDescriptor/reserveValue", HFILL }},
{ &hf_h248_reserveGroup,
{ "reserveGroup", "h248.reserveGroup",
FT_BOOLEAN, 8, NULL, 0,
"LocalControlDescriptor/reserveGroup", HFILL }},
{ &hf_h248_propertyParms,
{ "propertyParms", "h248.propertyParms",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_propertyName,
{ "propertyName", "h248.propertyName",
FT_BYTES, BASE_HEX, NULL, 0,
"PropertyParm/propertyName", HFILL }},
{ &hf_h248_propertyParamValue,
{ "value", "h248.value",
FT_NONE, BASE_NONE, NULL, 0,
"PropertyParm/value", HFILL }},
{ &hf_h248_value_item,
{ "Item", "h248.value_item",
FT_BYTES, BASE_HEX, NULL, 0,
"PropertyParm/value/_item", HFILL }},
{ &hf_h248_PropertyParms_item,
{ "Item", "h248.PropertyParms_item",
FT_NONE, BASE_NONE, NULL, 0,
"PropertyParms/_item", HFILL }},
{ &hf_h248_propGrps,
{ "propGrps", "h248.propGrps",
FT_NONE, BASE_NONE, NULL, 0,
"LocalRemoteDescriptor/propGrps", HFILL }},
{ &hf_h248_propGrps_item,
{ "Item", "h248.propGrps_item",
FT_NONE, BASE_NONE, NULL, 0,
"LocalRemoteDescriptor/propGrps/_item", HFILL }},
{ &hf_h248_PropertyGroup_item,
{ "Item", "h248.PropertyGroup_item",
FT_NONE, BASE_NONE, NULL, 0,
"PropertyGroup/_item", HFILL }},
{ &hf_h248_tSEventBufferControl,
{ "eventBufferControl", "h248.eventBufferControl",
FT_UINT32, BASE_DEC, VALS(h248_EventBufferControl_vals), 0,
"TerminationStateDescriptor/eventBufferControl", HFILL }},
{ &hf_h248_serviceState,
{ "serviceState", "h248.serviceState",
FT_UINT32, BASE_DEC, VALS(h248_ServiceState_vals), 0,
"TerminationStateDescriptor/serviceState", HFILL }},
{ &hf_h248_muxType,
{ "muxType", "h248.muxType",
FT_UINT32, BASE_DEC, VALS(h248_MuxType_vals), 0,
"MuxDescriptor/muxType", HFILL }},
{ &hf_h248_termList,
{ "termList", "h248.termList",
FT_NONE, BASE_NONE, NULL, 0,
"MuxDescriptor/termList", HFILL }},
{ &hf_h248_termList_item,
{ "Item", "h248.termList_item",
FT_NONE, BASE_NONE, NULL, 0,
"MuxDescriptor/termList/_item", HFILL }},
{ &hf_h248_nonStandardData,
{ "nonStandardData", "h248.nonStandardData",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_eventList,
{ "eventList", "h248.eventList",
FT_NONE, BASE_NONE, NULL, 0,
"EventsDescriptor/eventList", HFILL }},
{ &hf_h248_pkgdName,
{ "pkgdName", "h248.pkgdName",
FT_BYTES, BASE_HEX, NULL, 0,
"", HFILL }},
{ &hf_h248_eventAction,
{ "eventAction", "h248.eventAction",
FT_NONE, BASE_NONE, NULL, 0,
"RequestedEvent/eventAction", HFILL }},
{ &hf_h248_evParList,
{ "evParList", "h248.evParList",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_RequestedEvents_item,
{ "Item", "h248.RequestedEvents_item",
FT_NONE, BASE_NONE, NULL, 0,
"RequestedEvents/_item", HFILL }},
{ &hf_h248_keepActive,
{ "keepActive", "h248.keepActive",
FT_BOOLEAN, 8, NULL, 0,
"", HFILL }},
{ &hf_h248_eventDM,
{ "eventDM", "h248.eventDM",
FT_UINT32, BASE_DEC, VALS(h248_EventDM_vals), 0,
"", HFILL }},
{ &hf_h248_secondEvent,
{ "secondEvent", "h248.secondEvent",
FT_NONE, BASE_NONE, NULL, 0,
"RequestedActions/secondEvent", HFILL }},
{ &hf_h248_digitMapValue,
{ "digitMapValue", "h248.digitMapValue",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_secondaryEventList,
{ "eventList", "h248.eventList",
FT_NONE, BASE_NONE, NULL, 0,
"SecondEventsDescriptor/eventList", HFILL }},
{ &hf_h248_eventList_item,
{ "Item", "h248.eventList_item",
FT_NONE, BASE_NONE, NULL, 0,
"SecondEventsDescriptor/eventList/_item", HFILL }},
{ &hf_h248_secondaryEventAction,
{ "eventAction", "h248.eventAction",
FT_NONE, BASE_NONE, NULL, 0,
"SecondRequestedEvent/eventAction", HFILL }},
{ &hf_h248_EventBufferDescriptor_item,
{ "Item", "h248.EventBufferDescriptor_item",
FT_NONE, BASE_NONE, NULL, 0,
"EventBufferDescriptor/_item", HFILL }},
{ &hf_h248_SignalsDescriptor_item,
{ "Item", "h248.SignalsDescriptor_item",
FT_UINT32, BASE_DEC, VALS(h248_SignalRequest_vals), 0,
"SignalsDescriptor/_item", HFILL }},
{ &hf_h248_signal,
{ "signal", "h248.signal",
FT_NONE, BASE_NONE, NULL, 0,
"SignalRequest/signal", HFILL }},
{ &hf_h248_seqSigList,
{ "seqSigList", "h248.seqSigList",
FT_NONE, BASE_NONE, NULL, 0,
"SignalRequest/seqSigList", HFILL }},
{ &hf_h248_signalList,
{ "signalList", "h248.signalList",
FT_NONE, BASE_NONE, NULL, 0,
"SeqSigList/signalList", HFILL }},
{ &hf_h248_signalList_item,
{ "Item", "h248.signalList_item",
FT_NONE, BASE_NONE, NULL, 0,
"SeqSigList/signalList/_item", HFILL }},
{ &hf_h248_signalName,
{ "signalName", "h248.signalName",
FT_BYTES, BASE_HEX, NULL, 0,
"Signal/signalName", HFILL }},
{ &hf_h248_sigType,
{ "sigType", "h248.sigType",
FT_UINT32, BASE_DEC, VALS(h248_SignalType_vals), 0,
"Signal/sigType", HFILL }},
{ &hf_h248_duration,
{ "duration", "h248.duration",
FT_UINT32, BASE_DEC, NULL, 0,
"Signal/duration", HFILL }},
{ &hf_h248_notifyCompletion,
{ "notifyCompletion", "h248.notifyCompletion",
FT_BYTES, BASE_HEX, NULL, 0,
"Signal/notifyCompletion", HFILL }},
{ &hf_h248_sigParList,
{ "sigParList", "h248.sigParList",
FT_NONE, BASE_NONE, NULL, 0,
"Signal/sigParList", HFILL }},
{ &hf_h248_sigParList_item,
{ "Item", "h248.sigParList_item",
FT_NONE, BASE_NONE, NULL, 0,
"Signal/sigParList/_item", HFILL }},
{ &hf_h248_sigParameterName,
{ "sigParameterName", "h248.sigParameterName",
FT_BYTES, BASE_HEX, NULL, 0,
"SigParameter/sigParameterName", HFILL }},
{ &hf_h248_mtl,
{ "mtl", "h248.mtl",
FT_NONE, BASE_NONE, NULL, 0,
"ModemDescriptor/mtl", HFILL }},
{ &hf_h248_mtl_item,
{ "Item", "h248.mtl_item",
FT_UINT32, BASE_DEC, VALS(h248_ModemType_vals), 0,
"ModemDescriptor/mtl/_item", HFILL }},
{ &hf_h248_mpl,
{ "mpl", "h248.mpl",
FT_NONE, BASE_NONE, NULL, 0,
"ModemDescriptor/mpl", HFILL }},
{ &hf_h248_startTimer,
{ "startTimer", "h248.startTimer",
FT_UINT32, BASE_DEC, NULL, 0,
"DigitMapValue/startTimer", HFILL }},
{ &hf_h248_shortTimer,
{ "shortTimer", "h248.shortTimer",
FT_UINT32, BASE_DEC, NULL, 0,
"DigitMapValue/shortTimer", HFILL }},
{ &hf_h248_longTimer,
{ "longTimer", "h248.longTimer",
FT_UINT32, BASE_DEC, NULL, 0,
"DigitMapValue/longTimer", HFILL }},
{ &hf_h248_digitMapBody,
{ "digitMapBody", "h248.digitMapBody",
FT_STRING, BASE_NONE, NULL, 0,
"DigitMapValue/digitMapBody", HFILL }},
{ &hf_h248_durationTimer,
{ "durationTimer", "h248.durationTimer",
FT_UINT32, BASE_DEC, NULL, 0,
"DigitMapValue/durationTimer", HFILL }},
{ &hf_h248_serviceChangeMethod,
{ "serviceChangeMethod", "h248.serviceChangeMethod",
FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeMethod_vals), 0,
"ServiceChangeParm/serviceChangeMethod", HFILL }},
{ &hf_h248_serviceChangeAddress,
{ "serviceChangeAddress", "h248.serviceChangeAddress",
FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeAddress_vals), 0,
"", HFILL }},
{ &hf_h248_serviceChangeVersion,
{ "serviceChangeVersion", "h248.serviceChangeVersion",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_h248_serviceChangeProfile,
{ "serviceChangeProfile", "h248.serviceChangeProfile",
FT_NONE, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_h248_serviceChangeReason,
{ "serviceChangeReason", "h248.serviceChangeReason",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeParm/serviceChangeReason", HFILL }},
{ &hf_h248_serviceChangeDelay,
{ "serviceChangeDelay", "h248.serviceChangeDelay",
FT_UINT32, BASE_DEC, NULL, 0,
"ServiceChangeParm/serviceChangeDelay", HFILL }},
{ &hf_h248_serviceChangeMgcId,
{ "serviceChangeMgcId", "h248.serviceChangeMgcId",
FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
"", HFILL }},
{ &hf_h248_timeStamp,
{ "timeStamp", "h248.timeStamp",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeParm/timeStamp", HFILL }},
{ &hf_h248_serviceChangeInfo,
{ "serviceChangeInfo", "h248.serviceChangeInfo",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeParm/serviceChangeInfo", HFILL }},
{ &hf_h248_timestamp,
{ "timestamp", "h248.timestamp",
FT_NONE, BASE_NONE, NULL, 0,
"ServiceChangeResParm/timestamp", HFILL }},
{ &hf_h248_profileName,
{ "profileName", "h248.profileName",
FT_STRING, BASE_NONE, NULL, 0,
"ServiceChangeProfile/profileName", HFILL }},
{ &hf_h248_PackagesDescriptor_item,
{ "Item", "h248.PackagesDescriptor_item",
FT_NONE, BASE_NONE, NULL, 0,
"PackagesDescriptor/_item", HFILL }},
{ &hf_h248_StatisticsDescriptor_item,
{ "Item", "h248.StatisticsDescriptor_item",
FT_NONE, BASE_NONE, NULL, 0,
"StatisticsDescriptor/_item", HFILL }},
{ &hf_h248_statValue,
{ "statValue", "h248.statValue",
FT_NONE, BASE_NONE, NULL, 0,
"StatisticsParameter/statValue", HFILL }},
{ &hf_h248_nonStandardIdentifier,
{ "nonStandardIdentifier", "h248.nonStandardIdentifier",
FT_UINT32, BASE_DEC, VALS(h248_NonStandardIdentifier_vals), 0,
"NonStandardData/nonStandardIdentifier", HFILL }},
{ &hf_h248_data,
{ "data", "h248.data",
FT_BYTES, BASE_HEX, NULL, 0,
"NonStandardData/data", HFILL }},
{ &hf_h248_object,
{ "object", "h248.object",
FT_STRING, BASE_NONE, NULL, 0,
"NonStandardIdentifier/object", HFILL }},
{ &hf_h248_h221NonStandard,
{ "h221NonStandard", "h248.h221NonStandard",
FT_NONE, BASE_NONE, NULL, 0,
"NonStandardIdentifier/h221NonStandard", HFILL }},
{ &hf_h248_experimental,
{ "experimental", "h248.experimental",
FT_STRING, BASE_NONE, NULL, 0,
"NonStandardIdentifier/experimental", HFILL }},
{ &hf_h248_t35CountryCode1,
{ "t35CountryCode1", "h248.t35CountryCode1",
FT_UINT32, BASE_DEC, NULL, 0,
"H221NonStandard/t35CountryCode1", HFILL }},
{ &hf_h248_t35CountryCode2,
{ "t35CountryCode2", "h248.t35CountryCode2",
FT_UINT32, BASE_DEC, NULL, 0,
"H221NonStandard/t35CountryCode2", HFILL }},
{ &hf_h248_t35Extension,
{ "t35Extension", "h248.t35Extension",
FT_UINT32, BASE_DEC, NULL, 0,
"H221NonStandard/t35Extension", HFILL }},
{ &hf_h248_manufacturerCode,
{ "manufacturerCode", "h248.manufacturerCode",
FT_UINT32, BASE_DEC, NULL, 0,
"H221NonStandard/manufacturerCode", HFILL }},
{ &hf_h248_date,
{ "date", "h248.date",
FT_STRING, BASE_NONE, NULL, 0,
"TimeNotation/date", HFILL }},
{ &hf_h248_time,
{ "time", "h248.time",
FT_STRING, BASE_NONE, NULL, 0,
"TimeNotation/time", HFILL }},
{ &hf_h248_Value_item,
{ "Item", "h248.Value_item",
FT_BYTES, BASE_HEX, NULL, 0,
"Value/_item", HFILL }},
{ &hf_h248_T_auditToken_muxToken,
{ "muxToken", "h248.muxToken",
FT_BOOLEAN, 8, NULL, 0x80,
"", HFILL }},
{ &hf_h248_T_auditToken_modemToken,
{ "modemToken", "h248.modemToken",
FT_BOOLEAN, 8, NULL, 0x40,
"", HFILL }},
{ &hf_h248_T_auditToken_mediaToken,
{ "mediaToken", "h248.mediaToken",
FT_BOOLEAN, 8, NULL, 0x20,
"", HFILL }},
{ &hf_h248_T_auditToken_eventsToken,
{ "eventsToken", "h248.eventsToken",
FT_BOOLEAN, 8, NULL, 0x10,
"", HFILL }},
{ &hf_h248_T_auditToken_signalsToken,
{ "signalsToken", "h248.signalsToken",
FT_BOOLEAN, 8, NULL, 0x08,
"", HFILL }},
{ &hf_h248_T_auditToken_digitMapToken,
{ "digitMapToken", "h248.digitMapToken",
FT_BOOLEAN, 8, NULL, 0x04,
"", HFILL }},
{ &hf_h248_T_auditToken_statsToken,
{ "statsToken", "h248.statsToken",
FT_BOOLEAN, 8, NULL, 0x02,
"", HFILL }},
{ &hf_h248_T_auditToken_observedEventsToken,
{ "observedEventsToken", "h248.observedEventsToken",
FT_BOOLEAN, 8, NULL, 0x01,
"", HFILL }},
{ &hf_h248_T_auditToken_packagesToken,
{ "packagesToken", "h248.packagesToken",
FT_BOOLEAN, 8, NULL, 0x80,
"", HFILL }},
{ &hf_h248_T_auditToken_eventBufferToken,
{ "eventBufferToken", "h248.eventBufferToken",
FT_BOOLEAN, 8, NULL, 0x40,
"", HFILL }},
{ &hf_h248_NotifyCompletion_onTimeOut,
{ "onTimeOut", "h248.onTimeOut",
FT_BOOLEAN, 8, NULL, 0x80,
"", HFILL }},
{ &hf_h248_NotifyCompletion_onInterruptByEvent,
{ "onInterruptByEvent", "h248.onInterruptByEvent",
FT_BOOLEAN, 8, NULL, 0x40,
"", HFILL }},
{ &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr,
{ "onInterruptByNewSignalDescr", "h248.onInterruptByNewSignalDescr",
FT_BOOLEAN, 8, NULL, 0x20,
"", HFILL }},
{ &hf_h248_NotifyCompletion_otherReason,
{ "otherReason", "h248.otherReason",
FT_BOOLEAN, 8, NULL, 0x10,
"", HFILL }},
/*--- End of included file: packet-h248-hfarr.c ---*/
};
/* List of subtrees */
static gint *ett[] = {
&ett_h248,
&ett_mtpaddress,
&ett_packagename,
/*--- Included file: packet-h248-ettarr.c ---*/
&ett_h248_MegacoMessage,
&ett_h248_AuthenticationHeader,
&ett_h248_Message,
&ett_h248_T_messageBody,
&ett_h248_SEQUENCE_OF_Transaction,
&ett_h248_MId,
&ett_h248_DomainName,
&ett_h248_IP4Address,
&ett_h248_IP6Address,
&ett_h248_Transaction,
&ett_h248_TransactionRequest,
&ett_h248_SEQUENCE_OF_ActionRequest,
&ett_h248_TransactionPending,
&ett_h248_TransactionReply,
&ett_h248_T_transactionResult,
&ett_h248_SEQUENCE_OF_ActionReply,
&ett_h248_TransactionResponseAck,
&ett_h248_TransactionAck,
&ett_h248_ErrorDescriptor,
&ett_h248_ActionRequest,
&ett_h248_SEQUENCE_OF_CommandRequest,
&ett_h248_ActionReply,
&ett_h248_SEQUENCE_OF_CommandReply,
&ett_h248_ContextRequest,
&ett_h248_SEQUENCE_OF_TopologyRequest,
&ett_h248_ContextAttrAuditRequest,
&ett_h248_CommandRequest,
&ett_h248_Command,
&ett_h248_CommandReply,
&ett_h248_TopologyRequest,
&ett_h248_AmmRequest,
&ett_h248_SEQUENCE_OF_AmmDescriptor,
&ett_h248_AmmDescriptor,
&ett_h248_AmmsReply,
&ett_h248_SubtractRequest,
&ett_h248_AuditRequest,
&ett_h248_AuditReply,
&ett_h248_AuditResult,
&ett_h248_TerminationAudit,
&ett_h248_AuditReturnParameter,
&ett_h248_AuditDescriptor,
&ett_h248_T_auditToken,
&ett_h248_SEQUENCE_OF_IndAuditParameter,
&ett_h248_IndAuditParameter,
&ett_h248_IndAudMediaDescriptor,
&ett_h248_indAudMediaDescriptorStreams,
&ett_h248_SEQUENCE_OF_IndAudStreamDescriptor,
&ett_h248_IndAudStreamDescriptor,
&ett_h248_IndAudStreamParms,
&ett_h248_IndAudLocalControlDescriptor,
&ett_h248_IndAudPropertyParm,
&ett_h248_IndAudPropertyParms,
&ett_h248_IndAudLocalRemoteDescriptor,
&ett_h248_IndAudPropertyGroup,
&ett_h248_IndAudTerminationStateDescriptor,
&ett_h248_IndAudEventsDescriptor,
&ett_h248_IndAudEventBufferDescriptor,
&ett_h248_IndAudSignalsDescriptor,
&ett_h248_IndAudSeqSigList,
&ett_h248_IndAudSignal,
&ett_h248_IndAudDigitMapDescriptor,
&ett_h248_IndAudStatisticsDescriptor,
&ett_h248_IndAudPackagesDescriptor,
&ett_h248_NotifyRequest,
&ett_h248_NotifyReply,
&ett_h248_ObservedEventsDescriptor,
&ett_h248_SEQUENCE_OF_ObservedEvent,
&ett_h248_ObservedEvent,
&ett_h248_ExtraInfo,
&ett_h248_EventParameter,
&ett_h248_EventParameters,
&ett_h248_ServiceChangeRequest,
&ett_h248_ServiceChangeReply,
&ett_h248_ServiceChangeResult,
&ett_h248_TerminationID,
&ett_h248_SEQUENCE_OF_WildcardField,
&ett_h248_TerminationIDList,
&ett_h248_MediaDescriptor,
&ett_h248_T_streams,
&ett_h248_SEQUENCE_OF_StreamDescriptor,
&ett_h248_StreamDescriptor,
&ett_h248_StreamParms,
&ett_h248_LocalControlDescriptor,
&ett_h248_PropertyParm,
&ett_h248_SEQUENCE_OF_PropertyID,
&ett_h248_PropertyParms,
&ett_h248_LocalRemoteDescriptor,
&ett_h248_SEQUENCE_OF_PropertyGroup,
&ett_h248_PropertyGroup,
&ett_h248_TerminationStateDescriptor,
&ett_h248_MuxDescriptor,
&ett_h248_SEQUENCE_OF_TerminationID,
&ett_h248_EventsDescriptor,
&ett_h248_RequestedEvent,
&ett_h248_RequestedEvents,
&ett_h248_RequestedActions,
&ett_h248_EventDM,
&ett_h248_SecondEventsDescriptor,
&ett_h248_SEQUENCE_OF_SecondRequestedEvent,
&ett_h248_SecondRequestedEvent,
&ett_h248_SecondRequestedActions,
&ett_h248_EventBufferDescriptor,
&ett_h248_EventSpec,
&ett_h248_SignalsDescriptor,
&ett_h248_SignalRequest,
&ett_h248_SeqSigList,
&ett_h248_SEQUENCE_OF_Signal,
&ett_h248_Signal,
&ett_h248_SEQUENCE_OF_SigParameter,
&ett_h248_NotifyCompletion,
&ett_h248_SigParameter,
&ett_h248_ModemDescriptor,
&ett_h248_SEQUENCE_OF_ModemType,
&ett_h248_DigitMapDescriptor,
&ett_h248_DigitMapValue,
&ett_h248_ServiceChangeParm,
&ett_h248_ServiceChangeAddress,
&ett_h248_ServiceChangeResParm,
&ett_h248_ServiceChangeProfile,
&ett_h248_PackagesDescriptor,
&ett_h248_PackagesItem,
&ett_h248_StatisticsDescriptor,
&ett_h248_StatisticsParameter,
&ett_h248_NonStandardData,
&ett_h248_NonStandardIdentifier,
&ett_h248_H221NonStandard,
&ett_h248_TimeNotation,
&ett_h248_Value,
/*--- End of included file: packet-h248-ettarr.c ---*/
};
/* Register protocol */
proto_h248 = proto_register_protocol(PNAME, PSNAME, PFNAME);
register_dissector("h248", dissect_h248, proto_h248);
/* Register fields and subtrees */
proto_register_field_array(proto_h248, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* register a dissector table packages can attach to */
h248_package_bin_dissector_table = register_dissector_table("h248.package.bin", "Binary H.248 Package Dissectors", FT_UINT16,BASE_HEX);
}
/*--- proto_reg_handoff_h248 -------------------------------------------*/
void proto_reg_handoff_h248(void) {
dissector_handle_t h248_handle;
h248_handle = find_dissector("h248");
dissector_add("m3ua.protocol_data_si", GATEWAY_CONTROL_PROTOCOL_USER_ID, h248_handle);
dissector_add("sctp.ppi", H248_PAYLOAD_PROTOCOL_ID, h248_handle);
}