1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -p h248 -c ./h248.cnf -s ./packet-h248-template -D . -O ../../epan/dissectors h248v3.asn h248v1support.asn */
6 /* Input file: packet-h248-template.c */
8 #line 1 "../../asn1/h248/packet-h248-template.c"
10 * Routines for H.248/MEGACO packet dissection
12 * Ronnie Sahlberg 2004
14 * Luis Ontanon 2005 - Context and Transaction Tracing
18 * Wireshark - Network traffic analyzer
19 * By Gerald Combs <gerald@wireshark.org>
20 * Copyright 1998 Gerald Combs
22 * This program is free software; you can redistribute it and/or
23 * modify it under the terms of the GNU General Public License
24 * as published by the Free Software Foundation; either version 2
25 * of the License, or (at your option) any later version.
27 * This program is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU General Public License for more details.
32 * You should have received a copy of the GNU General Public License
33 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
38 #include "packet-h248.h"
40 #include "packet-tpkt.h"
42 #include "packet-mtp3.h"
44 #define PNAME "H.248 MEGACO"
48 /* Initialize the protocol and registered fields */
49 static int proto_h248 = -1;
50 static int hf_248_magic_num = -1;
51 static int hf_h248_mtpaddress_ni = -1;
52 static int hf_h248_mtpaddress_pc = -1;
53 static int hf_h248_pkg_name = -1;
54 static int hf_248_pkg_param = -1;
55 static int hf_h248_event_name = -1;
56 static int hf_h248_signal_name = -1;
57 static int hf_h248_signal_code = -1;
58 static int hf_h248_event_code = -1;
59 static int hf_h248_pkg_bcp_BNCChar_PDU = -1;
63 static int hf_h248_context_id = -1;
64 static int hf_h248_error_code = -1;
65 static int hf_h248_term_wild_type = -1;
66 static int hf_h248_term_wild_level = -1;
67 static int hf_h248_term_wild_position = -1;
69 static int hf_h248_no_pkg = -1;
70 static int hf_h248_no_sig = -1;
71 static int hf_h248_no_evt = -1;
72 static int hf_h248_param = -1;
74 static int hf_h248_serviceChangeReasonStr = -1;
77 static int hf_h248_auditValueReplyV1 = -1;
80 /*--- Included file: packet-h248-hf.c ---*/
81 #line 1 "../../asn1/h248/packet-h248-hf.c"
82 static int hf_h248_authHeader = -1; /* AuthenticationHeader */
83 static int hf_h248_mess = -1; /* Message */
84 static int hf_h248_secParmIndex = -1; /* SecurityParmIndex */
85 static int hf_h248_seqNum = -1; /* SequenceNum */
86 static int hf_h248_ad = -1; /* AuthData */
87 static int hf_h248_version = -1; /* T_version */
88 static int hf_h248_mId = -1; /* MId */
89 static int hf_h248_messageBody = -1; /* T_messageBody */
90 static int hf_h248_messageError = -1; /* ErrorDescriptor */
91 static int hf_h248_transactions = -1; /* SEQUENCE_OF_Transaction */
92 static int hf_h248_transactions_item = -1; /* Transaction */
93 static int hf_h248_ip4Address = -1; /* IP4Address */
94 static int hf_h248_ip6Address = -1; /* IP6Address */
95 static int hf_h248_domainName = -1; /* DomainName */
96 static int hf_h248_deviceName = -1; /* PathName */
97 static int hf_h248_mtpAddress = -1; /* MtpAddress */
98 static int hf_h248_domName = -1; /* IA5String */
99 static int hf_h248_portNumber = -1; /* INTEGER_0_65535 */
100 static int hf_h248_iP4Address = -1; /* OCTET_STRING_SIZE_4 */
101 static int hf_h248_iP6Address = -1; /* OCTET_STRING_SIZE_16 */
102 static int hf_h248_transactionRequest = -1; /* TransactionRequest */
103 static int hf_h248_transactionPending = -1; /* TransactionPending */
104 static int hf_h248_transactionReply = -1; /* TransactionReply */
105 static int hf_h248_transactionResponseAck = -1; /* TransactionResponseAck */
106 static int hf_h248_segmentReply = -1; /* SegmentReply */
107 static int hf_h248_transactionId = -1; /* T_transactionId */
108 static int hf_h248_actions = -1; /* SEQUENCE_OF_ActionRequest */
109 static int hf_h248_actions_item = -1; /* ActionRequest */
110 static int hf_h248_tpend_transactionId = -1; /* T_tpend_transactionId */
111 static int hf_h248_trep_transactionId = -1; /* T_trep_transactionId */
112 static int hf_h248_immAckRequired = -1; /* NULL */
113 static int hf_h248_transactionResult = -1; /* T_transactionResult */
114 static int hf_h248_transactionError = -1; /* ErrorDescriptor */
115 static int hf_h248_actionReplies = -1; /* SEQUENCE_OF_ActionReply */
116 static int hf_h248_actionReplies_item = -1; /* ActionReply */
117 static int hf_h248_segmentNumber = -1; /* SegmentNumber */
118 static int hf_h248_segmentationComplete = -1; /* NULL */
119 static int hf_h248_seg_rep_transactionId = -1; /* T_seg_rep_transactionId */
120 static int hf_h248_TransactionResponseAck_item = -1; /* TransactionAck */
121 static int hf_h248_firstAck = -1; /* TransactionId */
122 static int hf_h248_lastAck = -1; /* TransactionId */
123 static int hf_h248_errorCode = -1; /* T_errorCode */
124 static int hf_h248_errorText = -1; /* ErrorText */
125 static int hf_h248_contextId = -1; /* ContextId */
126 static int hf_h248_contextRequest = -1; /* ContextRequest */
127 static int hf_h248_contextAttrAuditReq = -1; /* T_contextAttrAuditReq */
128 static int hf_h248_commandRequests = -1; /* SEQUENCE_OF_CommandRequest */
129 static int hf_h248_commandRequests_item = -1; /* CommandRequest */
130 static int hf_h248_errorDescriptor = -1; /* ErrorDescriptor */
131 static int hf_h248_contextReply = -1; /* ContextRequest */
132 static int hf_h248_commandReply = -1; /* SEQUENCE_OF_CommandReply */
133 static int hf_h248_commandReply_item = -1; /* CommandReply */
134 static int hf_h248_priority = -1; /* INTEGER_0_15 */
135 static int hf_h248_emergency = -1; /* BOOLEAN */
136 static int hf_h248_topologyReq = -1; /* T_topologyReq */
137 static int hf_h248_topologyReq_item = -1; /* TopologyRequest */
138 static int hf_h248_iepscallind_BOOL = -1; /* Iepscallind_BOOL */
139 static int hf_h248_contextProp = -1; /* SEQUENCE_OF_PropertyParm */
140 static int hf_h248_contextProp_item = -1; /* PropertyParm */
141 static int hf_h248_contextList = -1; /* SEQUENCE_OF_ContextIDinList */
142 static int hf_h248_contextList_item = -1; /* ContextIDinList */
143 static int hf_h248_topology = -1; /* NULL */
144 static int hf_h248_cAAREmergency = -1; /* NULL */
145 static int hf_h248_cAARPriority = -1; /* NULL */
146 static int hf_h248_iepscallind = -1; /* NULL */
147 static int hf_h248_contextPropAud = -1; /* SEQUENCE_OF_IndAudPropertyParm */
148 static int hf_h248_contextPropAud_item = -1; /* IndAudPropertyParm */
149 static int hf_h248_selectpriority = -1; /* INTEGER_0_15 */
150 static int hf_h248_selectemergency = -1; /* BOOLEAN */
151 static int hf_h248_selectiepscallind = -1; /* BOOLEAN */
152 static int hf_h248_selectLogic = -1; /* SelectLogic */
153 static int hf_h248_andAUDITSelect = -1; /* NULL */
154 static int hf_h248_orAUDITSelect = -1; /* NULL */
155 static int hf_h248_command = -1; /* Command */
156 static int hf_h248_optional = -1; /* NULL */
157 static int hf_h248_wildcardReturn = -1; /* NULL */
158 static int hf_h248_addReq = -1; /* T_addReq */
159 static int hf_h248_moveReq = -1; /* T_moveReq */
160 static int hf_h248_modReq = -1; /* T_modReq */
161 static int hf_h248_subtractReq = -1; /* T_subtractReq */
162 static int hf_h248_auditCapRequest = -1; /* T_auditCapRequest */
163 static int hf_h248_auditValueRequest = -1; /* T_auditValueRequest */
164 static int hf_h248_notifyReq = -1; /* T_notifyReq */
165 static int hf_h248_serviceChangeReq = -1; /* ServiceChangeRequest */
166 static int hf_h248_addReply = -1; /* T_addReply */
167 static int hf_h248_moveReply = -1; /* T_moveReply */
168 static int hf_h248_modReply = -1; /* T_modReply */
169 static int hf_h248_subtractReply = -1; /* T_subtractReply */
170 static int hf_h248_auditCapReply = -1; /* T_auditCapReply */
171 static int hf_h248_auditValueReply = -1; /* T_auditValueReply */
172 static int hf_h248_notifyReply = -1; /* T_notifyReply */
173 static int hf_h248_serviceChangeReply = -1; /* ServiceChangeReply */
174 static int hf_h248_terminationFrom = -1; /* TerminationID */
175 static int hf_h248_terminationTo = -1; /* TerminationID */
176 static int hf_h248_topologyDirection = -1; /* T_topologyDirection */
177 static int hf_h248_streamID = -1; /* StreamID */
178 static int hf_h248_topologyDirectionExtension = -1; /* T_topologyDirectionExtension */
179 static int hf_h248_terminationIDList = -1; /* TerminationIDList */
180 static int hf_h248_descriptors = -1; /* SEQUENCE_OF_AmmDescriptor */
181 static int hf_h248_descriptors_item = -1; /* AmmDescriptor */
182 static int hf_h248_mediaDescriptor = -1; /* MediaDescriptor */
183 static int hf_h248_modemDescriptor = -1; /* ModemDescriptor */
184 static int hf_h248_muxDescriptor = -1; /* MuxDescriptor */
185 static int hf_h248_eventsDescriptor = -1; /* EventsDescriptor */
186 static int hf_h248_eventBufferDescriptor = -1; /* EventBufferDescriptor */
187 static int hf_h248_signalsDescriptor = -1; /* SignalsDescriptor */
188 static int hf_h248_digitMapDescriptor = -1; /* DigitMapDescriptor */
189 static int hf_h248_auditDescriptor = -1; /* AuditDescriptor */
190 static int hf_h248_aDstatisticsDescriptor = -1; /* StatisticsDescriptor */
191 static int hf_h248_terminationAudit = -1; /* TerminationAudit */
192 static int hf_h248_terminationID = -1; /* TerminationID */
193 static int hf_h248_contextAuditResult = -1; /* TerminationIDList */
194 static int hf_h248_error = -1; /* ErrorDescriptor */
195 static int hf_h248_auditResult = -1; /* AuditResult */
196 static int hf_h248_auditResultTermList = -1; /* TermListAuditResult */
197 static int hf_h248_terminationAuditResult = -1; /* TerminationAudit */
198 static int hf_h248_TerminationAudit_item = -1; /* AuditReturnParameter */
199 static int hf_h248_observedEventsDescriptor = -1; /* ObservedEventsDescriptor */
200 static int hf_h248_aRPstatisticsDescriptor = -1; /* StatisticsDescriptor */
201 static int hf_h248_packagesDescriptor = -1; /* PackagesDescriptor */
202 static int hf_h248_emptyDescriptors = -1; /* AuditDescriptor */
203 static int hf_h248_auditToken = -1; /* T_auditToken */
204 static int hf_h248_auditPropertyToken = -1; /* SEQUENCE_OF_IndAuditParameter */
205 static int hf_h248_auditPropertyToken_item = -1; /* IndAuditParameter */
206 static int hf_h248_indaudmediaDescriptor = -1; /* IndAudMediaDescriptor */
207 static int hf_h248_indaudeventsDescriptor = -1; /* IndAudEventsDescriptor */
208 static int hf_h248_indaudeventBufferDescriptor = -1; /* IndAudEventBufferDescriptor */
209 static int hf_h248_indaudsignalsDescriptor = -1; /* IndAudSignalsDescriptor */
210 static int hf_h248_indauddigitMapDescriptor = -1; /* IndAudDigitMapDescriptor */
211 static int hf_h248_indaudstatisticsDescriptor = -1; /* IndAudStatisticsDescriptor */
212 static int hf_h248_indaudpackagesDescriptor = -1; /* IndAudPackagesDescriptor */
213 static int hf_h248_indAudTerminationStateDescriptor = -1; /* IndAudTerminationStateDescriptor */
214 static int hf_h248_indAudMediaDescriptorStreams = -1; /* IndAudMediaDescriptorStreams */
215 static int hf_h248_oneStream = -1; /* IndAudStreamParms */
216 static int hf_h248_multiStream = -1; /* SEQUENCE_OF_IndAudStreamDescriptor */
217 static int hf_h248_multiStream_item = -1; /* IndAudStreamDescriptor */
218 static int hf_h248_indAudStreamParms = -1; /* IndAudStreamParms */
219 static int hf_h248_iASPLocalControlDescriptor = -1; /* IndAudLocalControlDescriptor */
220 static int hf_h248_iASPLocalDescriptor = -1; /* IndAudLocalRemoteDescriptor */
221 static int hf_h248_iASPRemoteDescriptor = -1; /* IndAudLocalRemoteDescriptor */
222 static int hf_h248_statisticsDescriptor = -1; /* IndAudStatisticsDescriptor */
223 static int hf_h248_iALCDStreamMode = -1; /* NULL */
224 static int hf_h248_iALCDReserveValue = -1; /* NULL */
225 static int hf_h248_iALCDReserveGroup = -1; /* NULL */
226 static int hf_h248_indAudPropertyParms = -1; /* SEQUENCE_OF_IndAudPropertyParm */
227 static int hf_h248_indAudPropertyParms_item = -1; /* IndAudPropertyParm */
228 static int hf_h248_streamModeSel = -1; /* StreamMode */
229 static int hf_h248_name = -1; /* PkgdName */
230 static int hf_h248_propertyParms = -1; /* PropertyParm */
231 static int hf_h248_propGroupID = -1; /* INTEGER_0_65535 */
232 static int hf_h248_iAPropertyGroup = -1; /* IndAudPropertyGroup */
233 static int hf_h248_IndAudPropertyGroup_item = -1; /* IndAudPropertyParm */
234 static int hf_h248_eventBufferControl = -1; /* NULL */
235 static int hf_h248_iATSDServiceState = -1; /* NULL */
236 static int hf_h248_serviceStateSel = -1; /* ServiceState */
237 static int hf_h248_requestID = -1; /* RequestID */
238 static int hf_h248_iAEDPkgdName = -1; /* PkgdName */
239 static int hf_h248_iAEBDEventName = -1; /* PkgdName */
240 static int hf_h248_indAudSignal = -1; /* IndAudSignal */
241 static int hf_h248_indAudSeqSigList = -1; /* IndAudSeqSigList */
242 static int hf_h248_id = -1; /* INTEGER_0_65535 */
243 static int hf_h248_iASignalList = -1; /* IndAudSignal */
244 static int hf_h248_iASignalName = -1; /* PkgdName */
245 static int hf_h248_signalRequestID = -1; /* RequestID */
246 static int hf_h248_digitMapName = -1; /* DigitMapName */
247 static int hf_h248_iAStatName = -1; /* PkgdName */
248 static int hf_h248_packageName = -1; /* Name */
249 static int hf_h248_packageVersion = -1; /* INTEGER_0_99 */
250 static int hf_h248_requestId = -1; /* RequestID */
251 static int hf_h248_observedEventLst = -1; /* SEQUENCE_OF_ObservedEvent */
252 static int hf_h248_observedEventLst_item = -1; /* ObservedEvent */
253 static int hf_h248_eventName = -1; /* EventName */
254 static int hf_h248_eventParList = -1; /* SEQUENCE_OF_EventParameter */
255 static int hf_h248_eventParList_item = -1; /* EventParameter */
256 static int hf_h248_timeNotation = -1; /* TimeNotation */
257 static int hf_h248_eventParameterName = -1; /* EventParameterName */
258 static int hf_h248_eventParamValue = -1; /* EventParamValues */
259 static int hf_h248_eventPar_extraInfo = -1; /* EventPar_extraInfo */
260 static int hf_h248_relation = -1; /* Relation */
261 static int hf_h248_range = -1; /* BOOLEAN */
262 static int hf_h248_sublist = -1; /* BOOLEAN */
263 static int hf_h248_EventParamValues_item = -1; /* EventParamValue */
264 static int hf_h248_serviceChangeParms = -1; /* ServiceChangeParm */
265 static int hf_h248_serviceChangeResult = -1; /* ServiceChangeResult */
266 static int hf_h248_serviceChangeResParms = -1; /* ServiceChangeResParm */
267 static int hf_h248_wildcard = -1; /* SEQUENCE_OF_WildcardField */
268 static int hf_h248_wildcard_item = -1; /* WildcardField */
269 static int hf_h248_terminationId = -1; /* T_terminationId */
270 static int hf_h248_TerminationIDList_item = -1; /* TerminationID */
271 static int hf_h248_termStateDescr = -1; /* TerminationStateDescriptor */
272 static int hf_h248_streams = -1; /* T_streams */
273 static int hf_h248_mediaDescriptorOneStream = -1; /* StreamParms */
274 static int hf_h248_mediaDescriptorMultiStream = -1; /* SEQUENCE_OF_StreamDescriptor */
275 static int hf_h248_mediaDescriptorMultiStream_item = -1; /* StreamDescriptor */
276 static int hf_h248_streamParms = -1; /* StreamParms */
277 static int hf_h248_localControlDescriptor = -1; /* LocalControlDescriptor */
278 static int hf_h248_localDescriptor = -1; /* LocalRemoteDescriptor */
279 static int hf_h248_remoteDescriptor = -1; /* LocalRemoteDescriptor */
280 static int hf_h248_sPstatisticsDescriptor = -1; /* StatisticsDescriptor */
281 static int hf_h248_streamMode = -1; /* StreamMode */
282 static int hf_h248_reserveValue = -1; /* BOOLEAN */
283 static int hf_h248_reserveGroup = -1; /* BOOLEAN */
284 static int hf_h248_lCDpropertyParms = -1; /* SEQUENCE_OF_PropertyParm */
285 static int hf_h248_lCDpropertyParms_item = -1; /* PropertyParm */
286 static int hf_h248_propertyName = -1; /* PropertyName */
287 static int hf_h248_propertyParamValue = -1; /* SEQUENCE_OF_PropertyID */
288 static int hf_h248_propertyParamValue_item = -1; /* PropertyID */
289 static int hf_h248_propParm_extraInfo = -1; /* PropParm_extraInfo */
290 static int hf_h248_propGrps = -1; /* SEQUENCE_OF_PropertyGroup */
291 static int hf_h248_propGrps_item = -1; /* PropertyGroup */
292 static int hf_h248_PropertyGroup_item = -1; /* PropertyParm */
293 static int hf_h248_tSDpropertyParms = -1; /* SEQUENCE_OF_PropertyParm */
294 static int hf_h248_tSDpropertyParms_item = -1; /* PropertyParm */
295 static int hf_h248_tSEventBufferControl = -1; /* EventBufferControl */
296 static int hf_h248_serviceState = -1; /* ServiceState */
297 static int hf_h248_muxType = -1; /* MuxType */
298 static int hf_h248_termList = -1; /* SEQUENCE_OF_TerminationID */
299 static int hf_h248_termList_item = -1; /* TerminationID */
300 static int hf_h248_nonStandardData = -1; /* NonStandardData */
301 static int hf_h248_eventList = -1; /* SEQUENCE_OF_RequestedEvent */
302 static int hf_h248_eventList_item = -1; /* RequestedEvent */
303 static int hf_h248_eventAction = -1; /* RequestedActions */
304 static int hf_h248_evParList = -1; /* SEQUENCE_OF_EventParameter */
305 static int hf_h248_evParList_item = -1; /* EventParameter */
306 static int hf_h248_secondEvent = -1; /* SecondEventsDescriptor */
307 static int hf_h248_notifyImmediate = -1; /* NULL */
308 static int hf_h248_notifyRegulated = -1; /* RegulatedEmbeddedDescriptor */
309 static int hf_h248_neverNotify = -1; /* NULL */
310 static int hf_h248_keepActive = -1; /* BOOLEAN */
311 static int hf_h248_eventDM = -1; /* EventDM */
312 static int hf_h248_notifyBehaviour = -1; /* NotifyBehaviour */
313 static int hf_h248_resetEventsDescriptor = -1; /* NULL */
314 static int hf_h248_digitMapValue = -1; /* DigitMapValue */
315 static int hf_h248_secondaryEventList = -1; /* SEQUENCE_OF_SecondRequestedEvent */
316 static int hf_h248_secondaryEventList_item = -1; /* SecondRequestedEvent */
317 static int hf_h248_pkgdName = -1; /* PkgdName */
318 static int hf_h248_secondaryEventAction = -1; /* SecondRequestedActions */
319 static int hf_h248_EventBufferDescriptor_item = -1; /* EventSpec */
320 static int hf_h248_SignalsDescriptor_item = -1; /* SignalRequest */
321 static int hf_h248_signal = -1; /* Signal */
322 static int hf_h248_seqSigList = -1; /* SeqSigList */
323 static int hf_h248_signalList = -1; /* SEQUENCE_OF_Signal */
324 static int hf_h248_signalList_item = -1; /* Signal */
325 static int hf_h248_signalName = -1; /* SignalName */
326 static int hf_h248_sigType = -1; /* SignalType */
327 static int hf_h248_duration = -1; /* INTEGER_0_65535 */
328 static int hf_h248_notifyCompletion = -1; /* NotifyCompletion */
329 static int hf_h248_sigParList = -1; /* SEQUENCE_OF_SigParameter */
330 static int hf_h248_sigParList_item = -1; /* SigParameter */
331 static int hf_h248_direction = -1; /* SignalDirection */
332 static int hf_h248_intersigDelay = -1; /* INTEGER_0_65535 */
333 static int hf_h248_sigParameterName = -1; /* SigParameterName */
334 static int hf_h248_value = -1; /* SigParamValues */
335 static int hf_h248_extraInfo = -1; /* T_extraInfo */
336 static int hf_h248_SigParamValues_item = -1; /* SigParamValue */
337 static int hf_h248_mtl = -1; /* SEQUENCE_OF_ModemType */
338 static int hf_h248_mtl_item = -1; /* ModemType */
339 static int hf_h248_mpl = -1; /* SEQUENCE_OF_PropertyParm */
340 static int hf_h248_mpl_item = -1; /* PropertyParm */
341 static int hf_h248_startTimer = -1; /* INTEGER_0_99 */
342 static int hf_h248_shortTimer = -1; /* INTEGER_0_99 */
343 static int hf_h248_longTimer = -1; /* INTEGER_0_99 */
344 static int hf_h248_digitMapBody = -1; /* IA5String */
345 static int hf_h248_durationTimer = -1; /* INTEGER_0_99 */
346 static int hf_h248_serviceChangeMethod = -1; /* ServiceChangeMethod */
347 static int hf_h248_serviceChangeAddress = -1; /* ServiceChangeAddress */
348 static int hf_h248_serviceChangeVersion = -1; /* INTEGER_0_99 */
349 static int hf_h248_serviceChangeProfile = -1; /* ServiceChangeProfile */
350 static int hf_h248_serviceChangeReason = -1; /* SCreasonValue */
351 static int hf_h248_serviceChangeDelay = -1; /* INTEGER_0_4294967295 */
352 static int hf_h248_serviceChangeMgcId = -1; /* MId */
353 static int hf_h248_timeStamp = -1; /* TimeNotation */
354 static int hf_h248_serviceChangeInfo = -1; /* AuditDescriptor */
355 static int hf_h248_serviceChangeIncompleteFlag = -1; /* NULL */
356 static int hf_h248_SCreasonValue_item = -1; /* SCreasonValueOctetStr */
357 static int hf_h248_timestamp = -1; /* TimeNotation */
358 static int hf_h248_profileName = -1; /* IA5String_SIZE_1_67 */
359 static int hf_h248_PackagesDescriptor_item = -1; /* PackagesItem */
360 static int hf_h248_StatisticsDescriptor_item = -1; /* StatisticsParameter */
361 static int hf_h248_statName = -1; /* StatName */
362 static int hf_h248_statValue = -1; /* StatValue */
363 static int hf_h248_nonStandardIdentifier = -1; /* NonStandardIdentifier */
364 static int hf_h248_data = -1; /* OCTET_STRING */
365 static int hf_h248_object = -1; /* OBJECT_IDENTIFIER */
366 static int hf_h248_h221NonStandard = -1; /* H221NonStandard */
367 static int hf_h248_experimental = -1; /* IA5String_SIZE_8 */
368 static int hf_h248_t35CountryCode1 = -1; /* INTEGER_0_255 */
369 static int hf_h248_t35CountryCode2 = -1; /* INTEGER_0_255 */
370 static int hf_h248_t35Extension = -1; /* INTEGER_0_255 */
371 static int hf_h248_manufacturerCode = -1; /* INTEGER_0_65535 */
372 static int hf_h248_date = -1; /* IA5String_SIZE_8 */
373 static int hf_h248_time = -1; /* IA5String_SIZE_8 */
374 static int hf_h248_Value_item = -1; /* OCTET_STRING */
375 static int hf_h248_audit_result = -1; /* AuditResultV1 */
376 static int hf_h248_contectAuditResult = -1; /* TerminationID */
377 static int hf_h248_eventParamterName = -1; /* EventParameterName */
378 static int hf_h248_event_param_value = -1; /* EventParamValueV1 */
379 static int hf_h248_sig_param_value = -1; /* SigParamValueV1 */
381 static int hf_h248_T_auditToken_muxToken = -1;
382 static int hf_h248_T_auditToken_modemToken = -1;
383 static int hf_h248_T_auditToken_mediaToken = -1;
384 static int hf_h248_T_auditToken_eventsToken = -1;
385 static int hf_h248_T_auditToken_signalsToken = -1;
386 static int hf_h248_T_auditToken_digitMapToken = -1;
387 static int hf_h248_T_auditToken_statsToken = -1;
388 static int hf_h248_T_auditToken_observedEventsToken = -1;
389 static int hf_h248_T_auditToken_packagesToken = -1;
390 static int hf_h248_T_auditToken_eventBufferToken = -1;
391 static int hf_h248_NotifyCompletion_onTimeOut = -1;
392 static int hf_h248_NotifyCompletion_onInterruptByEvent = -1;
393 static int hf_h248_NotifyCompletion_onInterruptByNewSignalDescr = -1;
394 static int hf_h248_NotifyCompletion_otherReason = -1;
395 static int hf_h248_NotifyCompletion_onIteration = -1;
397 /*--- End of included file: packet-h248-hf.c ---*/
398 #line 72 "../../asn1/h248/packet-h248-template.c"
400 /* Initialize the subtree pointers */
401 static gint ett_h248 = -1;
402 static gint ett_mtpaddress = -1;
403 static gint ett_packagename = -1;
404 static gint ett_codec = -1;
405 static gint ett_wildcard = -1;
407 static gint ett_h248_no_pkg = -1;
408 static gint ett_h248_no_sig = -1;
409 static gint ett_h248_no_evt = -1;
411 static int h248_tap = -1;
413 static gcp_hf_ett_t h248_arrel = {{-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1}};
416 /*--- Included file: packet-h248-ett.c ---*/
417 #line 1 "../../asn1/h248/packet-h248-ett.c"
418 static gint ett_h248_MegacoMessage = -1;
419 static gint ett_h248_AuthenticationHeader = -1;
420 static gint ett_h248_Message = -1;
421 static gint ett_h248_T_messageBody = -1;
422 static gint ett_h248_SEQUENCE_OF_Transaction = -1;
423 static gint ett_h248_MId = -1;
424 static gint ett_h248_DomainName = -1;
425 static gint ett_h248_IP4Address = -1;
426 static gint ett_h248_IP6Address = -1;
427 static gint ett_h248_Transaction = -1;
428 static gint ett_h248_TransactionRequest = -1;
429 static gint ett_h248_SEQUENCE_OF_ActionRequest = -1;
430 static gint ett_h248_TransactionPending = -1;
431 static gint ett_h248_TransactionReply = -1;
432 static gint ett_h248_T_transactionResult = -1;
433 static gint ett_h248_SEQUENCE_OF_ActionReply = -1;
434 static gint ett_h248_SegmentReply = -1;
435 static gint ett_h248_TransactionResponseAck = -1;
436 static gint ett_h248_TransactionAck = -1;
437 static gint ett_h248_ErrorDescriptor = -1;
438 static gint ett_h248_ActionRequest = -1;
439 static gint ett_h248_SEQUENCE_OF_CommandRequest = -1;
440 static gint ett_h248_ActionReply = -1;
441 static gint ett_h248_SEQUENCE_OF_CommandReply = -1;
442 static gint ett_h248_ContextRequest = -1;
443 static gint ett_h248_T_topologyReq = -1;
444 static gint ett_h248_SEQUENCE_OF_PropertyParm = -1;
445 static gint ett_h248_SEQUENCE_OF_ContextIDinList = -1;
446 static gint ett_h248_ContextAttrAuditRequest = -1;
447 static gint ett_h248_SEQUENCE_OF_IndAudPropertyParm = -1;
448 static gint ett_h248_SelectLogic = -1;
449 static gint ett_h248_CommandRequest = -1;
450 static gint ett_h248_Command = -1;
451 static gint ett_h248_CommandReply = -1;
452 static gint ett_h248_TopologyRequest = -1;
453 static gint ett_h248_AmmRequest = -1;
454 static gint ett_h248_SEQUENCE_OF_AmmDescriptor = -1;
455 static gint ett_h248_AmmDescriptor = -1;
456 static gint ett_h248_AmmsReply = -1;
457 static gint ett_h248_SubtractRequest = -1;
458 static gint ett_h248_AuditRequest = -1;
459 static gint ett_h248_AuditReply = -1;
460 static gint ett_h248_AuditResult = -1;
461 static gint ett_h248_TermListAuditResult = -1;
462 static gint ett_h248_TerminationAudit = -1;
463 static gint ett_h248_AuditReturnParameter = -1;
464 static gint ett_h248_AuditDescriptor = -1;
465 static gint ett_h248_T_auditToken = -1;
466 static gint ett_h248_SEQUENCE_OF_IndAuditParameter = -1;
467 static gint ett_h248_IndAuditParameter = -1;
468 static gint ett_h248_IndAudMediaDescriptor = -1;
469 static gint ett_h248_IndAudMediaDescriptorStreams = -1;
470 static gint ett_h248_SEQUENCE_OF_IndAudStreamDescriptor = -1;
471 static gint ett_h248_IndAudStreamDescriptor = -1;
472 static gint ett_h248_IndAudStreamParms = -1;
473 static gint ett_h248_IndAudLocalControlDescriptor = -1;
474 static gint ett_h248_IndAudPropertyParm = -1;
475 static gint ett_h248_IndAudLocalRemoteDescriptor = -1;
476 static gint ett_h248_IndAudPropertyGroup = -1;
477 static gint ett_h248_IndAudTerminationStateDescriptor = -1;
478 static gint ett_h248_IndAudEventsDescriptor = -1;
479 static gint ett_h248_IndAudEventBufferDescriptor = -1;
480 static gint ett_h248_IndAudSignalsDescriptor = -1;
481 static gint ett_h248_IndAudSeqSigList = -1;
482 static gint ett_h248_IndAudSignal = -1;
483 static gint ett_h248_IndAudDigitMapDescriptor = -1;
484 static gint ett_h248_IndAudStatisticsDescriptor = -1;
485 static gint ett_h248_IndAudPackagesDescriptor = -1;
486 static gint ett_h248_NotifyRequest = -1;
487 static gint ett_h248_NotifyReply = -1;
488 static gint ett_h248_ObservedEventsDescriptor = -1;
489 static gint ett_h248_SEQUENCE_OF_ObservedEvent = -1;
490 static gint ett_h248_ObservedEvent = -1;
491 static gint ett_h248_SEQUENCE_OF_EventParameter = -1;
492 static gint ett_h248_EventParameter = -1;
493 static gint ett_h248_EventPar_extraInfo = -1;
494 static gint ett_h248_EventParamValues = -1;
495 static gint ett_h248_ServiceChangeRequest = -1;
496 static gint ett_h248_ServiceChangeReply = -1;
497 static gint ett_h248_ServiceChangeResult = -1;
498 static gint ett_h248_TerminationID = -1;
499 static gint ett_h248_SEQUENCE_OF_WildcardField = -1;
500 static gint ett_h248_TerminationIDList = -1;
501 static gint ett_h248_MediaDescriptor = -1;
502 static gint ett_h248_T_streams = -1;
503 static gint ett_h248_SEQUENCE_OF_StreamDescriptor = -1;
504 static gint ett_h248_StreamDescriptor = -1;
505 static gint ett_h248_StreamParms = -1;
506 static gint ett_h248_LocalControlDescriptor = -1;
507 static gint ett_h248_PropertyParm = -1;
508 static gint ett_h248_SEQUENCE_OF_PropertyID = -1;
509 static gint ett_h248_PropParm_extraInfo = -1;
510 static gint ett_h248_LocalRemoteDescriptor = -1;
511 static gint ett_h248_SEQUENCE_OF_PropertyGroup = -1;
512 static gint ett_h248_PropertyGroup = -1;
513 static gint ett_h248_TerminationStateDescriptor = -1;
514 static gint ett_h248_MuxDescriptor = -1;
515 static gint ett_h248_SEQUENCE_OF_TerminationID = -1;
516 static gint ett_h248_EventsDescriptor = -1;
517 static gint ett_h248_SEQUENCE_OF_RequestedEvent = -1;
518 static gint ett_h248_RequestedEvent = -1;
519 static gint ett_h248_RegulatedEmbeddedDescriptor = -1;
520 static gint ett_h248_NotifyBehaviour = -1;
521 static gint ett_h248_RequestedActions = -1;
522 static gint ett_h248_EventDM = -1;
523 static gint ett_h248_SecondEventsDescriptor = -1;
524 static gint ett_h248_SEQUENCE_OF_SecondRequestedEvent = -1;
525 static gint ett_h248_SecondRequestedEvent = -1;
526 static gint ett_h248_SecondRequestedActions = -1;
527 static gint ett_h248_EventBufferDescriptor = -1;
528 static gint ett_h248_EventSpec = -1;
529 static gint ett_h248_SignalsDescriptor = -1;
530 static gint ett_h248_SignalRequest = -1;
531 static gint ett_h248_SeqSigList = -1;
532 static gint ett_h248_SEQUENCE_OF_Signal = -1;
533 static gint ett_h248_Signal = -1;
534 static gint ett_h248_SEQUENCE_OF_SigParameter = -1;
535 static gint ett_h248_NotifyCompletion = -1;
536 static gint ett_h248_SigParameter = -1;
537 static gint ett_h248_T_extraInfo = -1;
538 static gint ett_h248_SigParamValues = -1;
539 static gint ett_h248_ModemDescriptor = -1;
540 static gint ett_h248_SEQUENCE_OF_ModemType = -1;
541 static gint ett_h248_DigitMapDescriptor = -1;
542 static gint ett_h248_DigitMapValue = -1;
543 static gint ett_h248_ServiceChangeParm = -1;
544 static gint ett_h248_SCreasonValue = -1;
545 static gint ett_h248_ServiceChangeAddress = -1;
546 static gint ett_h248_ServiceChangeResParm = -1;
547 static gint ett_h248_ServiceChangeProfile = -1;
548 static gint ett_h248_PackagesDescriptor = -1;
549 static gint ett_h248_PackagesItem = -1;
550 static gint ett_h248_StatisticsDescriptor = -1;
551 static gint ett_h248_StatisticsParameter = -1;
552 static gint ett_h248_NonStandardData = -1;
553 static gint ett_h248_NonStandardIdentifier = -1;
554 static gint ett_h248_H221NonStandard = -1;
555 static gint ett_h248_TimeNotation = -1;
556 static gint ett_h248_Value = -1;
557 static gint ett_h248_AuditReplyV1 = -1;
558 static gint ett_h248_AuditResultV1 = -1;
559 static gint ett_h248_EventParameterV1 = -1;
560 static gint ett_h248_SigParameterV1 = -1;
562 /*--- End of included file: packet-h248-ett.c ---*/
563 #line 89 "../../asn1/h248/packet-h248-template.c"
565 static dissector_handle_t h248_term_handle;
566 static dissector_table_t subdissector_table;
568 static emem_tree_t* msgs = NULL;
569 static emem_tree_t* trxs = NULL;
570 static emem_tree_t* ctxs_by_trx = NULL;
571 static emem_tree_t* ctxs = NULL;
573 static gboolean keep_persistent_data = FALSE;
574 static guint global_udp_port = 2945;
575 static guint global_tcp_port = 2945;
576 static gboolean h248_desegment = TRUE;
580 static proto_tree *h248_tree;
581 static tvbuff_t* h248_tvb;
583 static dissector_handle_t h248_handle;
584 static dissector_handle_t h248_term_handle;
585 static dissector_handle_t h248_tpkt_handle;
587 /* Forward declarations */
588 static int dissect_h248_ServiceChangeReasonStr(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
591 static int dissect_h248_AuditReplyV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
593 static int dissect_h248_EventParameterV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
594 static int dissect_h248_SigParameterV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
595 static int dissect_h248_SigParamValueV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
596 static int dissect_h248_ValueV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
598 static const value_string context_id_type[] = {
599 {NULL_CONTEXT,"0 (Null Context)"},
600 {CHOOSE_CONTEXT,"$ (Choose Context)"},
601 {ALL_CONTEXTS,"* (All Contexts)"},
606 /* the following value_strings are used to build defalut packages.
607 To add additional detail to a package, build a register a h248_package_t structure
610 static const value_string base_package_name_vals[] = {
611 { 0x0000, "Media stream properties H.248.1 Annex C" },
612 { 0x0001, "Generic H.248.1 Annex E" },
613 { 0x0002, "root H.248.1 Annex E" },
614 { 0x0003, "tonegen H.248.1 Annex E" },
615 { 0x0004, "tonedet H.248.1 Annex E" },
616 { 0x0005, "dg H.248.1 Annex E" },
617 { 0x0006, "dd H.248.1 Annex E" },
618 { 0x0007, "cg H.248.1 Annex E" },
619 { 0x0008, "cd H.248.1 Annex E" },
620 { 0x0009, "al H.248.1 Annex E" },
621 { 0x000a, "ct H.248.1 Annex E" },
622 { 0x000b, "nt H.248.1 Annex E" },
623 { 0x000c, "rtp H.248.1 Annex E" },
624 { 0x000d, "tdmc H.248.1 Annex E" },
625 { 0x000e, "ftmd H.248.1 Annex E" },
626 { 0x000f, "txc H.248.2" }, /* H.248.2 */
627 { 0x0010, "txp H.248.2" },
628 { 0x0011, "ctyp H.248.2" },
629 { 0x0012, "fax H.248.2" },
630 { 0x0013, "ipfax H.248.2" },
631 { 0x0014, "dis H.248.3" }, /* H.248.3 */
632 { 0x0015, "key H.248.3" },
633 { 0x0016, "kp H.248.3" },
634 { 0x0017, "labelkey H.248.3" },
635 { 0x0018, "kf H.248.3" },
636 { 0x0019, "ind H.248.3" },
637 { 0x001a, "ks H.248.3" },
638 { 0x001b, "anci H.248.3" },
639 { 0x001c, "dtd H.248.6" }, /* H.248.6 */
640 { 0x001d, "an H.248.7" }, /* H.248.7 */
641 { 0x001e, "Bearer Characteristics Q.1950 Annex A" }, /* Q.1950 Annex A */
642 { 0x001f, "Bearer Network Connection Cut Q.1950 Annex A" },
643 { 0x0020, "Reuse Idle Q.1950 Annex A" },
644 { 0x0021, "Generic Bearer Connection Q.1950 Annex A" },
645 { 0x0022, "Bearer Control Tunnelling Q.1950 Annex A" },
646 { 0x0023, "Basic Call Progress Tones Q.1950 Annex A" },
647 { 0x0024, "Expanded Call Progress Tones Q.1950 Annex A" },
648 { 0x0025, "Basic Services Tones Q.1950 Annex A" },
649 { 0x0026, "Expanded Services Tones Q.1950 Annex A" },
650 { 0x0027, "Intrusion Tones Q.1950 Annex A" },
651 { 0x0028, "Business Tones Q.1950 Annex A" },
652 { 0x0029, "Media Gateway Resource Congestion Handling H.248.10" }, /* H.248.10 */
653 { 0x002a, "H245 package H248.12" }, /* H.248.12 */
654 { 0x002b, "H323 bearer control package H.248.12" }, /* H.248.12 */
655 { 0x002c, "H324 package H.248.12" }, /* H.248.12 */
656 { 0x002d, "H245 command package H.248.12" }, /* H.248.12 */
657 { 0x002e, "H245 indication package H.248.12" }, /* H.248.12 */
658 { 0x002f, "3G User Plane" }, /* 3GPP TS 29.232 v4.1.0 */
659 { 0x0030, "3G Circuit Switched Data" },
660 { 0x0031, "3G TFO Control" },
661 { 0x0032, "3G Expanded Call Progress Tones" },
662 { 0x0033, "Advanced Audio Server (AAS Base)" }, /* H.248.9 */
663 { 0x0034, "AAS Digit Collection" }, /* H.248.9 */
664 { 0x0035, "AAS Recording" }, /* H.248.9 */
665 { 0x0036, "AAS Segment Management" }, /* H.248.9 */
666 { 0x0037, "Quality Alert Ceasing" }, /* H.248.13 */
667 { 0x0038, "Conferencing Tones Generation" }, /* H.248.27 */
668 { 0x0039, "Diagnostic Tones Generation" }, /* H.248.27 */
669 { 0x003a, "Carrier Tones Generation Package H.248.23" }, /* H.248.27 */
670 { 0x003b, "Enhanced Alerting Package H.248.23" }, /* H.248.23 */
671 { 0x003c, "Analog Display Signalling Package H.248.23" }, /* H.248.23 */
672 { 0x003d, "Multi-Frequency Tone Generation Package H.248.24" }, /* H.248.24 */
673 { 0x003e, "H.248.23Multi-Frequency Tone Detection Package H.248.24" }, /* H.248.24 */
674 { 0x003f, "Basic CAS Package H.248.25" }, /* H.248.25 */
675 { 0x0040, "Robbed Bit Signalling Package H.248.25" }, /* H.248.25 */
676 { 0x0041, "Operator Services and Emergency Services Package H.248.25" },
677 { 0x0042, "Operator Services Extension Package H.248.25" },
678 { 0x0043, "Extended Analog Line Supervision Package H.248.26" },
679 { 0x0044, "Automatic Metering Package H.248.26" },
680 { 0x0045, "Inactivity Timer Package H.248.14" },
681 { 0x0046, "3G Modification of Link Characteristics Bearer Capability" }, /* 3GPP TS 29.232 v4.4.0 */
682 { 0x0047, "Base Announcement Syntax H.248.9" },
683 { 0x0048, "Voice Variable Syntax H.248.9" },
684 { 0x0049, "Announcement Set Syntax H.248.9" },
685 { 0x004a, "Phrase Variable Syntax H.248.9" },
686 { 0x004b, "Basic NAS package" },
687 { 0x004c, "NAS incoming package" },
688 { 0x004d, "NAS outgoing package" },
689 { 0x004e, "NAS control package" },
690 { 0x004f, "NAS root package" },
691 { 0x0050, "Profile Handling Package H.248.18" },
692 { 0x0051, "Media Gateway Overload Control Package H.248.11" },
693 { 0x0052, "Extended DTMF Detection Package H.248.16" },
694 { 0x0053, "Quiet Termination Line Test" },
695 { 0x0054, "Loopback Line Test Response" }, /* H.248.17 */
696 { 0x0055, "ITU 404Hz Line Test" }, /* H.248.17 */
697 { 0x0056, "ITU 816Hz Line Test" }, /* H.248.17 */
698 { 0x0057, "ITU 1020Hz Line Test" }, /* H.248.17 */
699 { 0x0058, "ITU 2100Hz Disable Tone Line Test" }, /* H.248.17 */
700 { 0x0059, "ITU 2100Hz Disable Echo Canceller Tone Line Test" }, /* H.248.17 */
701 { 0x005a, "ITU 2804Hz Tone Line Test" }, /* H.248.17 */
702 { 0x005b, "ITU Noise Test Tone Line Test" }, /* H.248.17 */
703 { 0x005c, "ITU Digital Pseudo Random Test Line Test" }, /* H.248.17 */
704 { 0x005d, "ITU ATME No.2 Test Line Response" }, /* H.248.17 */
705 { 0x005e, "ANSI 1004Hz Test Tone Line Test" }, /* H.248.17 */
706 { 0x005f, "ANSI Test Responder Line Test" }, /* H.248.17 */
707 { 0x0060, "ANSI 2225Hz Test Progress Tone Line Test" }, /* H.248.17 */
708 { 0x0061, "ANSI Digital Test Signal Line Test" }, /* H.248.17 */
709 { 0x0062, "ANSI Inverting Loopback Line Test Response" }, /* H.248.17 */
710 { 0x0063, "Extended H.324 Packages H.248.12 Annex A" },
711 { 0x0064, "Extended H.245 Command Package H.248.12 Annex A" },
712 { 0x0065, "Extended H.245 Indication Package H.248.12 Annex A" },
713 { 0x0066, "Enhanced DTMF Detection Package H.248.16" },
714 { 0x0067, "Connection Group Identity Package Q.1950 Annex E" },
715 { 0x0068, "CTM Text Transport 3GPP TS 29.232 v5.2.0" },
716 { 0x0069, "SPNE Control Package Q.115.0" },
717 { 0x006a, "Semi-permanent Connection Package H.248.21" },
718 { 0x006b, "Shared Risk Group Package H.248.22" },
719 { 0x006c, "isuptn Annex B of ITU-T Rec. J.171" },
720 { 0x006d, "Basic CAS Addressing Package H.248.25" },
721 { 0x006e, "Floor Control Package H.248.19" },
722 { 0x006f, "Indication of Being Viewed Package H.248.19" },
723 { 0x0070, "Volume Control Package H.248.19" },
724 { 0x0071, "UNASSIGNED" },
725 { 0x0072, "Volume Detection Package H.248.19" },
726 { 0x0073, "Volume Level Mixing Package H.248.19" },
727 { 0x0074, "Mixing Volume Level Control Package H.248.19" },
728 { 0x0075, "Voice Activated Video Switch Package H.248.19" },
729 { 0x0076, "Lecture Video Mode Package H.248.19" },
730 { 0x0077, "Contributing Video Source Package H.248.19" },
731 { 0x0078, "Video Window Package H.248.19" },
732 { 0x0079, "Tiled Window Package H.248.19" },
733 { 0x007a, "Adaptive Jitter Buffer Package H.248.31" },
734 { 0x007b, "International CAS Package H.248.28" },
735 { 0x007c, "CAS Blocking Package H.248.28" },
736 { 0x007d, "International CAS Compelled Package H.248.29" },
737 { 0x007e, "International CAS Compelled with Overlap Package H.248.29" },
738 { 0x007f, "International CAS Compelled with End-to-end Package H.248.29" },
739 { 0x0080, "RTCP XR Package H.248.30" },
740 { 0x0081, "RTCP XR Burst Metrics Package H.248.30" },
741 { 0x0082, "threegcsden 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
742 { 0x0083, "threegiptra 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
743 { 0x0084, "threegflex 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
744 { 0x0085, "H.248 PCMSB" },
745 { 0x008a, "TIPHON Extended H.248/MEGACO Package" }, /* ETSI specification TS 101 3 */
746 { 0x008b, "Differentiated Services Package" }, /* Annex A of ETSI TS 102 333 */
747 { 0x008c, "Gate Management Package" }, /* Annex B of ETSI TS 102 333 */
748 { 0x008d, "Traffic Management Package" }, /* Annex C of ETSI TS 102 333 */
749 { 0x008e, "Gate Recovery Information Package" }, /* Annex D of ETSI TS 102 333 */
750 { 0x008f, "NAT Traversal Package" }, /* Annex E of ETSI TS 102 333 */
751 { 0x0090, "MPLS Package" }, /* Annex F of ETSI TS 102 333 */
752 { 0x0091, "VLAN Package" }, /* Annex G of ETSI TS 102 333 */
753 { 0x0092, "Detailed Congestion Reporting Package" }, /* H.248.32 */
754 { 0x0093, "Stimulus Analogue Lines Package" }, /* H.248.34 */
755 { 0x0094, "icascgen" }, /* H.248.29 Annex B */
756 { 0x0095, "Coin Operated Phone Control Package" }, /* H.248.35 */
757 { 0x0096, "Metering Pulse Detection Package" }, /* H.248.26 Amendment 1 */
758 { 0x0097, "Trace Package" }, /* 3GPP TS 29.232 v6.3.0 */
759 { 0x0098, "Hanging Termination Package" }, /* H.248.36 */
760 { 0x0099, "IP NAPT Traversal Package" }, /* H.248.37 */
761 { 0x009a, "Notification Behaviour Package" }, /* H.248.1v3 */
762 { 0x009b, "Base Context Package" }, /* H.248.38 */
763 { 0x009c, "Application Data Inactivity Detection Package" }, /* H.248.40 */
764 { 0x009d, "Domain Connection Package " }, /* H.248.41 */
765 { 0x009e, "Digital Circuit Multiplication Equipment Package" }, /* H.248.42 */
766 { 0x009f, "Multi-level Precedence and Pre-emption Package" }, /* H.248.44 */
767 { 0x00a0, "MGC Information Package" }, /* H.248.45 */
768 { 0x00a1, "Text Overlay Package" }, /* H.248.19 Amendment 1 */
769 { 0x00a2, "Border and Background Package" }, /* H.248.19 Amendment 1 */
770 { 0x00a3, "Segmentation Package" }, /* H.248.1v3 */
771 { 0x00a4, "ETSI notification behaviour package" }, /* ETSI ES 283 039-3 */
772 { 0x00a5, "ETSI notification rate package" }, /* ETSI ES 283 039-4 */
773 { 0x00a6, "Automatic Speech Recognition Package" }, /* H.248.9 Amendment 1 */
774 { 0x00a7, "Set extension to basic syntax for TTS enhancement Package" },/* H.248.9 Amendment 1 */
775 { 0x00a8, "Advanced audio server base package for TTS enhancement" }, /* H.248.9 Amendment 1 */
776 { 0x00a9, "Multimedia Play Package" }, /* H.248.9 Amendment 1 */
777 { 0x00aa, "Floor Status Detection Package" }, /* H.248.19 Amendment 2 */
778 { 0x00ab, "Floor Control Policy Package" }, /* H.248.19 Amendment 2 */
779 { 0x00ac, "Address Reporting Package" }, /* H.248.37 Amendment 1 */
780 { 0x00ad, "Connection Capability Control Package" }, /* H.248.46 */
781 { 0x00ae, "Statistic Conditional Reporting Package" }, /* H.248.47 Amendment 1 */
782 { 0x00af, "RTCP HR QoS Statistics Package" }, /* H.248.48 */
783 { 0x00b0, "Received RTCP XR Package" }, /* H.248.30 (01/2007) */
784 { 0x00b1, "Received RTCP XR Burst Metrics Package" }, /* H.248.30 (01/2007) */
785 { 0x00b2, "ASCI Group call package" }, /* 3GPP TS 29.232 v7.4.0 */
786 { 0x00b3, "Multimedia Recording Package" }, /* H.248.9 Amendment 1 */
787 { 0x00b4, "H.245 Transport Package" }, /* H.248.12 Amendment 2 */
788 { 0x00b5, "RTCP Handling package" }, /* H.248.57 */
789 { 0x00b6, "Gate Management - Outgoing Destination Address/Port Filtering Package" },/* H.248.43 */
790 { 0x00b7, "Gate Management - Incoming Protocol Filtering Package" }, /* H.248.43 */
791 { 0x00b8, "Gate Management - Outgoing Protocol Filtering Package" }, /* H.248.43 */
792 { 0x00b9, "Gate Management - Incoming Filtering Behaviour Package" }, /* H.248.43 */
793 { 0x00ba, "Gate Management - Outgoing Filtering Behaviour Package" }, /* H.248.43 */
794 { 0x00bb, "Session Description Protocol RFC Package" }, /* H.248.49 */
795 { 0x00bc, "Session Description Protocol Capabilities Package" }, /* H.248.49 */
796 { 0x00bd, "NAT Traversal Toolkit - STUN Base Package" }, /* H.248.50 */
797 { 0x00be, "NAT Traversal Toolkit - MG STUN Client Package" }, /* H.248.50 */
798 { 0x00bf, "NAT Traversal Toolkit - MG TURN Client Package" }, /* H.248.50 */
799 { 0x00c0, "NAT Traversal Toolkit - MGC STUN Client Package" }, /* H.248.50 */
800 { 0x00c1, "NAT Traversal Toolkit - STUN Information Package" }, /* H.248.50 */
801 { 0x00c2, "NAT Traversal Toolkit - MG Act-as STUN Server Package" }, /* H.248.50 */
802 { 0x00c3, "NAT Traversal Toolkit - Originate STUN Continuity Check Package" }, /* H.248.50 */
803 { 0x00c4, "NAT Traversal Toolkit - MGC Originated STUN Request Package" }, /* H.248.50 */
804 { 0x00c5, "NAT Traversal Toolkit - RTP NOOP Request Package" }, /* H.248.50 */
805 { 0x00c6, "Termination Connection Model Package" }, /* H.248.51 */
806 { 0x00c7, "QoS Class Package" }, /* H.248.52 */
807 { 0x00c8, "Traffic Policing Statistics Package" }, /* H.248.53 */
808 { 0x00c9, "Packet Size Package" }, /* H.248.53 */
809 { 0x00ca, "Pull Mode Package" }, /* H.248.55 */
810 { 0x00cb, "RTP Application Data Package" }, /* H.248.58 */
811 { 0x00cc, "Event Timestamp Notification Package" }, /* H.248.59 */
812 { 0x00cd, "Resource Management Rules Package" }, /* H.248.63 */
813 { 0x00ce, "Resource Management Configuration Package" }, /* H.248.63 */
814 { 0x00cf, "Abstract Resource Management Packages" }, /* H.248.63 */
815 { 0x00d0, "IP layer octets count statistics Package" }, /* H.248.61 */
816 { 0x00d1, "Content of Communication Identity Package" }, /* H.248.60 */
817 { 0x00d2, "RSVP extension package" }, /* H.248.65 */
818 { 0x00d3, "GCP Transport Mode Indication Package" }, /* H.248.67 */
819 { 0x00d4, "IP Router Package" }, /* H.248.64 */
820 { 0x00d5, "Media Resource Identification Package" }, /* H.248.66 */
821 { 0x00d6, "Range Format Support Package" }, /* H.248.66 */
822 { 0x00d7, "Media Resource Description Expiry Package" }, /* H.248.66 */
823 { 0x00d8, "Media Block Size Package" }, /* H.248.66 */
824 { 0x00d9, "RTSP Media Resource Syntax Package" }, /* H.248.66 */
825 { 0x00da, "RTSP Play Package" }, /* H.248.66 */
826 { 0x00db, "Signal Pause Package" }, /* H.248.66 */
827 { 0x00dc, "Data Delivery Speed Adjustme Package" }, /* H.248.66 */
828 { 0x00dd, "Playback Relative Scale Adjustment Package" }, /* H.248.66 */
829 { 0x00de, "RTP Information Package" }, /* H.248.66 */
830 { 0x00df, "RTP Interleaving Package" }, /* H.248.66 */
831 { 0x00e0, "IP Realm Availability Package" }, /* H.248.41 Amendment 1 */
832 { 0x00e1, "General IP Header QoS Octet Package" }, /* H.248.52 */
833 { 0x00e2, "Re-answer Package" }, /* H.248.62 */
834 { 0x00e3, "3G Interface Type package" }, /* 3GPP TS 29.232 v8.4.0 */
835 { 0x00e4, "Latch Statistics Package" }, /* H.248.37 */
836 { 0x00e5, "Floor Control Signalling Package" }, /* H.248.19 Amendment 2 */
837 { 0x00e6, "Include Participant in Mix Package" }, /* H.248.19 Amendment 2 */
838 { 0x00e7, "Speaker Reporting Package" }, /* H.248.19 Amendment 2 */
839 { 0x00e8, "IP Layer Packet Count Statistics Package" }, /* H.248.61 */
840 { 0x00e9, "Removal of Digits and Tones Package" }, /* H.248.68 */
841 { 0x00ea, "MSRP Statistics Package" }, /* H.248.69 */
842 { 0x00eb, "MSRP Connection Status Package" }, /* H.248.69 */
843 { 0x00ec, "Play Message Package" }, /* H.248.69 */
844 { 0x00ed, "Delete Stored Message Package" }, /* H.248.69 */
845 { 0x00ee, "Message Session Information Package" }, /* H.248.69 */
846 { 0x00ef, "Message Filtering Package" }, /* H.248.69 */
847 { 0x00f0, "Stored Message Information Package" }, /* H.248.69 */
848 { 0x00f1, "Record Message Package" }, /* H.248.69 */
849 { 0x00f2, "Digit Dialling Method Information Package" }, /* H.248.70 */
850 { 0x00f3, "Digit Dialling Method Information for Extended Digitmap Detection Package" }, /* H.248.70 */
851 { 0x00f4, "Digit Dialling Method Information for Enhanced Digitmap Detection Package" }, /* H.248.70 */
852 { 0x00f5, "Received RTCP Package " }, /* H.248.71 */
853 { 0x00f6, "RTP Cumulative Loss Package" }, /* H.248.71 */
854 { 0x00f7, "H.245 Transport Package for SPC use" }, /* H.248.72 */
855 { 0x00f8, "MONA Preference Package" }, /* H.248.72 */
856 { 0x00f9, "TDM Gain Control Package" }, /* H.248.73 */
857 { 0x00fa, "Media Start Package" }, /* H.248.74 */
858 { 0x00fb, "Trim Package" }, /* H.248.74 */
859 { 0x00fc, "Enhanced Recording Package" }, /* H.248.74 */
860 { 0x00fd, "Enhanced ASR Package" }, /* H.248.74 */
861 { 0x00fe, "Enhanced TTS Package" }, /* H.248.74 */
862 { 0x00ff, "Play Offset Control Package" }, /* H.248.74 */
863 { 0x0100, "Enhanced DTMF Detection Package" }, /* H.248.9 Revised 2009 */
864 { 0x0101, "IP Router NAT Package" }, /* H.248.64 */
865 { 0x0102, "Voice Enrolled Grammar Package" }, /* H.248.74 */
866 { 0x0103, "Filter Group Package" }, /* H.248.76 */
867 { 0x0104, "RTCP Source Description Package" }, /* H.248.71 */
868 { 0x0105, "Speaker Verification and Identification Package" }, /* H.248.74 */
869 { 0x0106, "Package Identifier Publishing and Application Package" }, /* H.248 */
870 { 0x0107, "Secure RTP Package " }, /* H.248.77 */
871 { 0x0108, "MGC Controlled Bearer Level ALG Package" }, /* H.248.78 */
872 { 0x0109, "Enhanced Revised Offer/Answer SDP Support Package" }, /* H.248.80 */
873 { 0x010a, "Enhanced SDP Media Capabilities Negotiation Support Package" }, /* H.248.80 */
874 { 0x8000, "Ericsson IU" },
875 { 0x8001, "Ericsson UMTS and GSM Circuit" },
876 { 0x8002, "Ericsson Tone Generator Package" },
877 { 0x8003, "Ericsson Line Test Package" },
878 { 0x8004, "Nokia Advanced TFO Package" },
879 { 0x8005, "Nokia IWF Package" },
880 { 0x8006, "Nokia Root Package" },
881 { 0x8007, "Nokia Trace Package" },
882 { 0x8008, "Ericsson V5.2 Layer" },
883 { 0x8009, "Ericsson Detailed Termination Information Package" },
884 { 0x800a, "Nokia Bearer Characteristics Package" },
885 { 0x800b, "Nokia Test Call Package" },
886 { 0x800c, "Nokia Extended Continuity Package" },
887 { 0x800d, "Nokia IPnwR Package" },
888 { 0x800e, "Ericsson Tracing Enhancements Package" },
889 { 0x800f, "Ericsson Partially Wildcarded TerminationID Package" },
890 { 0x8010, "SCTP Stream Handling Package" },
895 * This table consist of PackageName + EventName and its's corresponding string
898 static const value_string base_event_name_vals[] = {
899 { 0x00000000, "Media stream properties H.248.1 Annex C" },
900 { 0x00010000, "g H.248.1 Annex E" },
901 { 0x00010001, "g/Cause" },
902 { 0x00010002, "g/Signal Completion" },
903 { 0x00040000, "tonedet H.248.1 Annex E" },
904 { 0x00040001, "tonedet/std(Start tone detected)" },
905 { 0x00040002, "tonedet/etd(End tone detected)" },
906 { 0x00040003, "tonedet/ltd(Long tone detected)" },
907 { 0x00060000, "dd H.248.1 Annex E" },
908 { 0x00060001, "dd/std" },
909 { 0x00060002, "dd/etd" },
910 { 0x00060003, "dd/ltd" },
911 { 0x00060004, "dd, DigitMap Completion Event" },
912 { 0x00060010, "dd/d0, DTMF character 0" },
913 { 0x00060011, "dd/d1, DTMF character 1" },
914 { 0x00060012, "dd/d2, DTMF character 2" },
915 { 0x00060013, "dd/d3, DTMF character 3" },
916 { 0x00060014, "dd/d4, DTMF character 4" },
917 { 0x00060015, "dd/d5, DTMF character 5" },
918 { 0x00060016, "dd/d6, DTMF character 6" },
919 { 0x00060017, "dd/d7, DTMF character 7" },
920 { 0x00060018, "dd/d8, DTMF character 8" },
921 { 0x00060019, "dd/d9, DTMF character 9" },
922 { 0x0006001a, "dd/a, DTMF character A" },
923 { 0x0006001b, "dd/b, DTMF character B" },
924 { 0x0006001c, "dd/c, DTMF character C" },
925 { 0x0006001d, "dd/d, DTMF character D" },
926 { 0x00060020, "dd/*, DTMF character *" },
927 { 0x00060021, "dd/#, DTMF character #" },
928 { 0x00080030, "cd, Dial Tone" },
929 { 0x00080031, "cd, Ringing Tone" },
930 { 0x00080032, "cd, Busy Tone" },
931 { 0x00080033, "cd, Congestion Tone" },
932 { 0x00080034, "cd, Special Information Tone" },
933 { 0x00080035, "cd, (Recording) Warning Tone" },
934 { 0x00080036, "cd, Payphone Recognition Tone" },
935 { 0x00080037, "cd, Call Waiting Tone" },
936 { 0x00080038, "cd, Caller Waiting Tone" },
937 { 0x00090004, "al, onhook" },
938 { 0x00090005, "al, offhook" },
939 { 0x00090006, "al, flashhook" },
940 { 0x0009ffff, "al, *" },
941 { 0x000a0005, "ct, Completion of Continuity test" },
942 { 0x000b0005, "nt, network failure" },
943 { 0x000b0006, "nt, quality alert" },
944 { 0x000c0001, "rtp, Payload Transition" },
945 { 0x00210000, "Generic Bearer Connection Q.1950 Annex A" },
946 { 0x00210001, "GB/BNCChange" },
947 { 0x00220001, "BT/TIND (Tunnel Indication)" },
948 { 0x002a0001, "H.245/h245msg (Incoming H.245 Message)" },
949 { 0x002a0004, "H.245/h245ChC (H.245 Channel Closed)" },
950 { 0x00450000, "Inactivity Timer H.248.14" },
951 { 0x00450001, "it/ito" },
952 { 0x00450002, "it/ito" },
953 { 0x00460001, "threegmlc/mod_link_supp (Bearer Modification Support Event)" },
954 { 0x00980000, "Hanging Termination Package" },
955 { 0x00980001, "Termination Heartbeat" },
956 { 0x800a0000, "Nokia Bearer Characteristics Package" },
961 * This table consist of PackageName + SignalName and its's corresponding string
963 static const value_string base_signal_name_vals[] = {
964 { 0x00000000, "Media stream properties H.248.1 Annex C" },
965 { 0x00010000, "g H.248.1 Annex E" },
966 { 0x00030001, "tonegen/pt(Play tone)" },
967 { 0x00050010, "dg, DTMF character 0" },
968 { 0x00050011, "dg, DTMF character 1" },
969 { 0x00050012, "dg, DTMF character 2" },
970 { 0x00050013, "dg, DTMF character 3" },
971 { 0x00050014, "dg, DTMF character 4" },
972 { 0x00050015, "dg, DTMF character 5" },
973 { 0x00050016, "dg, DTMF character 6" },
974 { 0x00050017, "dg, DTMF character 7" },
975 { 0x00050018, "dg, DTMF character 8" },
976 { 0x00050019, "dg, DTMF character 9" },
977 { 0x0005001a, "dg, DTMF character A" },
978 { 0x0005001b, "dg, DTMF character B" },
979 { 0x0005001c, "dg, DTMF character C" },
980 { 0x0005001d, "dg, DTMF character D" },
981 { 0x00050020, "dg, DTMF character *" },
982 { 0x00050021, "dg, DTMF character #" },
983 { 0x00070030, "cg, Dial Tone" },
984 { 0x00070031, "cg/rt (Ringing Tone)" },
985 { 0x00070032, "cg, Busy Tone" },
986 { 0x00070033, "cg, Congestion Tone" },
987 { 0x00070034, "cg, Special Information Tone" },
988 { 0x00070035, "cg, (Recording) Warning Tone" },
989 { 0x00070036, "cg, Payphone Recognition Tone" },
990 { 0x00070037, "cg, Call Waiting Tone" },
991 { 0x00070038, "cg, Caller Waiting Tone" },
992 { 0x00090002, "al, ring" },
993 { 0x0009ffff, "al, *" },
994 { 0x000a0003, "ct, Continuity test" },
995 { 0x000a0004, "ct, Continuity respond" },
996 { 0x00210000, "GB Generic Bearer Connection Q.1950 Annex A" },
997 { 0x00210001, "GB/EstBNC(Establish BNC)" },
998 { 0x00210002, "GB/ModBNC (Modify BNC)" },
999 { 0x00210003, "GB/RelBNC(Release BNC)" },
1000 { 0x002a0001, "H.245/cs (channel state)" },
1001 { 0x002a0002, "H.245/termtype (Terminal Type)" },
1002 { 0x002c0001, "H.324/cmod (Communication mode)" },
1003 { 0x002c0002, "H.324/muxlv (Highest Multiplexing level)" },
1004 { 0x002c0003, "H.324/demux (Demultiplex)" },
1005 { 0x002c0004, "H.324/h223capr (Remote H.223 capability)" },
1006 { 0x002c0005, "H.324/muxtbl_in (Incoming Multiplex Table)" },
1007 { 0x002c0006, "H.324/muxtbl_out (Outgoing Multiplex Table)" },
1008 { 0x800a0000, "Nokia Bearer Characteristics Package" },
1013 static const value_string h248_reasons[] = {
1014 { 400, "Syntax error in message"},
1015 { 401, "Protocol Error"},
1016 { 402, "Unauthorized"},
1017 { 403, "Syntax error in transaction request"},
1018 { 406, "Version Not Supported"},
1019 { 410, "Incorrect identifier"},
1020 { 411, "The transaction refers to an unknown ContextId"},
1021 { 412, "No ContextIDs available"},
1022 { 413, "Number of transactions in message exceeds maximum"}, /* [H.248.8 (08/07)] */
1023 { 421, "Unknown action or illegal combination of actions"},
1024 { 422, "Syntax Error in Action"},
1025 { 430, "Unknown TerminationID"},
1026 { 431, "No TerminationID matched a wildcard"},
1027 { 432, "Out of TerminationIDs or No TerminationID available"},
1028 { 433, "TerminationID is already in a Context"},
1029 { 434, "Max number of Terminations in a Context exceeded"},
1030 { 435, "Termination ID is not in specified Context"},
1031 { 440, "Unsupported or unknown Package"},
1032 { 441, "Missing Remote or Local Descriptor"},
1033 { 442, "Syntax Error in Command"},
1034 { 443, "Unsupported or Unknown Command"},
1035 { 444, "Unsupported or Unknown Descriptor"},
1036 { 445, "Unsupported or Unknown Property"},
1037 { 446, "Unsupported or Unknown Parameter"},
1038 { 447, "Descriptor not legal in this command"},
1039 { 448, "Descriptor appears twice in a command"},
1040 { 449, "Unsupported or Unknown Parameter or Property Value"},
1041 { 450, "No such property in this package"},
1042 { 451, "No such event in this package"},
1043 { 452, "No such signal in this package"},
1044 { 453, "No such statistic in this package"},
1045 { 454, "No such parameter value in this package"},
1046 { 455, "Property illegal in this Descriptor"},
1047 { 456, "Property appears twice in this Descriptor"},
1048 { 457, "Missing parameter in signal or event"},
1049 { 458, "Unexpected Event/Request ID"},
1050 { 459, "Unsupported or Unknown Profile"},
1051 { 460, "Unable to set statistic on stream"},
1052 { 461, "Unsupported or Unknown Profile"}, /*[H.248.18] */
1054 { 471, "Implied Add for Multiplex failure"},
1055 { 472, "Required Information Missing"}, /*[H.248.8 (08/07)] */
1056 { 473, "Conflicting Property Values"}, /*[H.248.8 (08/07)] */
1057 { 474, "Invalid SDP Syntax"}, /*[H.248.49] */
1058 { 475, "Unable to pause the playout of the signal"}, /*[H.248.66] */
1059 { 476, "Unable to adjust the data delivery speed of the Signal"}, /*[H.248.66] */
1061 { 477, "Unable to adjust the playback relative scale of the signal"}, /*[H.248.66] */
1063 { 478, "Behaviour Contradicts Resource Rule"}, /*[H.248.63] */
1065 { 500, "Internal software Failure in MG"},
1066 { 501, "Not Implemented"},
1067 { 502, "Not ready"},
1068 { 503, "Service Unavailable"},
1069 { 504, "Command Received from unauthorized entity"},
1070 { 505, "Transaction Request Received before a Service Change Reply has been received"},
1071 { 506, "Number of Transaction Pendings Exceeded"},
1072 { 510, "Insufficient resources"},
1073 { 511, "Temporarily Busy"}, /* [H.248.8 (08/07)] */
1074 { 512, "Media Gateway unequipped to detect requested Event"},
1075 { 513, "Media Gateway unequipped to generate requested Signals"},
1076 { 514, "Media Gateway cannot send the specified announcement"},
1077 { 515, "Unsupported Media Type"},
1078 { 517, "Unsupported or invalid mode"},
1079 { 518, "Event buffer full"},
1080 { 519, "Out of space to store digit map"},
1081 { 520, "Digit Map undefined in the MG"},
1082 { 521, "Termination is ServiceChangeing"},
1083 { 522, "Functionality Requested in Topology Triple Not Supported"},
1084 { 526, "Insufficient bandwidth"},
1085 { 529, "Internal hardware failure in MG"},
1086 { 530, "Temporary Network failure"},
1087 { 531, "Permanent Network failure"},
1088 { 532, "Audited Property, Statistic, Event or Signal does not exist"},
1089 { 533, "Response exceeds maximum transport PDU size"},
1090 { 534, "Illegal write or read only property"},
1091 { 540, "Unexpected initial hook state"},
1092 { 541, "Unexpected Spare Bit State"}, /* [H.248.33] */
1093 { 542, "Command is not allowed on this termination"},
1094 { 543, "MGC requested event detection timestamp not supported"}, /* [H.248.8 (08/07)] */
1095 { 581, "Does Not Exist"},
1096 { 600, "Illegal syntax within an announcement specification"},
1097 { 601, "Variable type not supported"},
1098 { 602, "Variable value out of range"},
1099 { 603, "Category not supported"},
1100 { 604, "Selector type not supported"},
1101 { 605, "Selector value not supported"},
1102 { 606, "Unknown segment ID"},
1103 { 607, "Mismatch between play specification and provisioned data"},
1104 { 608, "Provisioning error"},
1105 { 609, "Invalid offset"},
1106 { 610, "No free segment IDs"},
1107 { 611, "Temporary segment not found"},
1108 { 612, "Segment in use"},
1109 { 613, "ISP port limit overrun"},
1110 { 614, "No modems available"},
1111 { 615, "Calling number unacceptable"},
1112 { 616, "Called number unacceptable"},
1113 { 617, "Reserved for H.248.9 return code"}, /* [H.248.9] */
1114 { 618, "Reserved for H.248.9 return code"}, /* [H.248.9] */
1115 { 622, "Reserved for H.248.9 return code"}, /* [H.248.9] */
1116 { 623, "Reserved for H.248.9 return code"}, /* [H.248.9] */
1117 { 624, "Reserved for H.248.9 return code"}, /* [H.248.9] */
1118 { 625, "Reserved for H.248.9 return code"}, /* [H.248.9 Amendment 1] */
1119 { 626, "Reserved for H.248.9 return code"}, /* [H.248.9 Amendment 1] */
1120 { 627, "Reserved for H.248.9 return code"}, /* [H.248.9 Amendment 1] */
1121 { 628, "Reserved for H.248.9 return code"}, /* [H.248.9 Amendment 1] */
1122 { 629, "Reserved for H.248.9 return code"}, /* [H.248.9 Amendment 1] */
1123 { 700, "Sieve Script Syntax Error"}, /* [H.248.69] */
1124 { 701, "Unsupported Sieve Require Error"}, /* [H.248.69] */
1125 { 702, "Sieve Actions Exceeded Error"}, /* [H.248.69] */
1127 { 900, "Service Restored"},
1128 { 901, "Cold Boot"},
1129 { 902, "Warm Boot"},
1130 { 903, "MGC Directed Change"},
1131 { 904, "Termination malfunctioning"},
1132 { 905, "Termination taken out of service"},
1133 { 906, "Loss of lower layer connectivity (e.g. downstream sync)"},
1134 { 907, "Transmission Failure"},
1135 { 908, "MG Impending Failure"},
1136 { 909, "MGC Impending Failure"},
1137 { 910, "Media Capability Failure"},
1138 { 911, "Modem Capability Failure"},
1139 { 912, "Mux Capability Failure"},
1140 { 913, "Signal Capability Failure"},
1141 { 914, "Event Capability Failure"},
1142 { 915, "State Loss"},
1143 { 916, "Packages Change"},
1144 { 917, "Capabilities Change"},
1145 { 918, "Cancel Graceful"},
1146 { 919, "Warm Failover"},
1147 { 920, "Cold Failover"},
1150 static value_string_ext h248_reasons_ext = VALUE_STRING_EXT_INIT(h248_reasons);
1152 static const value_string wildcard_modes[] = {
1158 static const value_string wildcard_levels[] = {
1159 { 0, "This One Level" },
1160 { 1, "This Level and those below" },
1164 static h248_curr_info_t curr_info = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
1165 static guint32 error_code;
1166 static guint32 h248_version = 0; /* h248v1 support */
1167 static gcp_wildcard_t wild_term;
1168 static guint8 wild_card = 0xFF; /* place to store wildcardField */
1170 extern void h248_param_ber_integer(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, int hfid, h248_curr_info_t* u _U_, void* implicit) {
1171 asn1_ctx_t asn1_ctx;
1172 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1173 dissect_ber_integer(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
1176 extern void h248_param_ber_octetstring(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, int hfid, h248_curr_info_t* u _U_, void* implicit) {
1177 asn1_ctx_t asn1_ctx;
1178 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1179 dissect_ber_octet_string(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
1182 extern void h248_param_ber_boolean(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, int hfid, h248_curr_info_t* u _U_, void* implicit) {
1183 asn1_ctx_t asn1_ctx;
1184 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1185 dissect_ber_boolean(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
1188 extern void h248_param_bytes_item(proto_tree* tree,
1190 packet_info* pinfo _U_,
1192 h248_curr_info_t* h248_info _U_,
1194 int len = lenp ? *((int*)lenp) : -1;
1195 proto_tree_add_item(tree,hfid,tvb,0,len,ENC_NA);
1198 extern void h248_param_uint_item(proto_tree* tree,
1200 packet_info* pinfo _U_,
1202 h248_curr_info_t* h248_info _U_,
1204 int len = lenp ? *((int*)lenp) : -1;
1205 proto_tree_add_item(tree,hfid,tvb,0,len,ENC_BIG_ENDIAN);
1208 extern void h248_param_external_dissector(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo , int hfid _U_, h248_curr_info_t* u _U_, void* dissector_hdl) {
1209 call_dissector((dissector_handle_t) dissector_hdl,tvb,pinfo,tree);
1213 static const h248_package_t no_package = { 0xffff, &hf_h248_no_pkg, &ett_h248_no_pkg, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
1214 static const h248_pkg_sig_t no_signal = { 0, &hf_h248_no_sig, &ett_h248_no_sig, NULL, NULL };
1215 static const h248_pkg_param_t no_param = { 0, &hf_h248_param, h248_param_uint_item, NULL };
1216 static const h248_pkg_evt_t no_event = { 0, &hf_h248_no_evt, &ett_h248_no_evt, NULL, NULL };
1218 const h248_package_t *find_package_id(guint16 pkgid);
1219 static GTree* packages = NULL;
1221 extern void h248_param_PkgdName(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo , int hfid _U_, h248_curr_info_t* u1 _U_, void* u2 _U_) {
1222 tvbuff_t *new_tvb = NULL;
1223 proto_tree *package_tree=NULL;
1224 guint16 name_major, name_minor;
1225 const h248_package_t* pkg = NULL;
1227 asn1_ctx_t asn1_ctx;
1228 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1230 offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, offset, hfid , &new_tvb);
1233 /* this field is always 4 bytes so just read it into two integers */
1234 name_major=tvb_get_ntohs(new_tvb, 0);
1235 name_minor=tvb_get_ntohs(new_tvb, 2);
1236 pkg = find_package_id(name_major);
1237 /* do the prettification */
1238 proto_item_append_text(asn1_ctx.created_item, " %s (%04x)",
1239 val_to_str(0, pkg->param_names, "Unknown Package"),
1244 const gchar* strval;
1246 package_tree = proto_item_add_subtree(asn1_ctx.created_item, ett_packagename);
1247 proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
1248 "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
1250 pi = proto_tree_add_uint(package_tree, hf_248_pkg_param, tvb, offset-2, 2, name_minor);
1252 if (pkg->signal_names && ( strval = match_strval(name_minor, pkg->signal_names) )) {
1253 strval = ep_strdup_printf("%s (%d)",strval,name_minor);
1255 strval = ep_strdup_printf("Unknown (%d)",name_minor);
1258 proto_item_set_text(pi,"Signal ID: %s", strval);
1265 static int dissect_h248_trx_id(gboolean implicit_tag, packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, guint32* trx_id_p) {
1274 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
1275 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
1277 len=tvb_length_remaining(tvb, offset);
1281 if (len > 8 || len < 1) {
1284 for(i=1;i<=len;i++){
1285 trx_id=(trx_id<<8)|tvb_get_guint8(tvb, offset);
1288 if (trx_id > 0xffffffff) {
1289 proto_item* pi = proto_tree_add_text(tree, tvb, offset-len, len,"transactionId %" G_GINT64_MODIFIER "u", trx_id);
1290 proto_item_set_expert_flags(pi, PI_MALFORMED, PI_WARN);
1295 proto_tree_add_uint(tree, hf_h248_transactionId, tvb, offset-len, len, (guint32)trx_id);
1296 *trx_id_p = (guint32)trx_id;
1303 static int dissect_h248_ctx_id(gboolean implicit_tag, packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, guint32* ctx_id_p) {
1312 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
1313 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
1315 len=tvb_length_remaining(tvb, offset);
1319 if (len > 8 || len < 1) {
1322 for(i=1;i<=len;i++){
1323 ctx_id=(ctx_id<<8)|tvb_get_guint8(tvb, offset);
1327 if (ctx_id > 0xffffffff) {
1328 proto_item* pi = proto_tree_add_text(tree, tvb, offset-len, len,
1329 "contextId: %" G_GINT64_MODIFIER "u", ctx_id);
1330 proto_item_set_expert_flags(pi, PI_MALFORMED, PI_WARN);
1332 *ctx_id_p = 0xfffffffd;
1335 proto_item* pi = proto_tree_add_uint(tree, hf_h248_context_id, tvb, offset-len, len, (guint32)ctx_id);
1337 if ( ctx_id == NULL_CONTEXT ) {
1338 proto_item_set_text(pi,"contextId: Null Context(0)");
1339 } else if ( ctx_id == CHOOSE_CONTEXT ) {
1340 proto_item_set_text(pi,"contextId: $ (Choose Context = 0xfffffffe)");
1341 } else if ( ctx_id == ALL_CONTEXTS ) {
1342 proto_item_set_text(pi,"contextId: * (All Contexts = 0xffffffff)");
1345 *ctx_id_p = (guint32) ctx_id;
1352 s_h248_package_t *s_find_package_id(guint16 pkgid) {
1353 s_h248_package_t *s_pkg = NULL;
1354 s_pkg = g_tree_lookup(packages, GUINT_TO_POINTER((guint32)(pkgid)));
1358 const h248_package_t *find_package_id(guint16 pkgid) {
1359 s_h248_package_t *s_pkg = NULL;
1360 s_pkg = s_find_package_id(pkgid); /*(packages, GUINT_TO_POINTER((guint32)(pkgid))); */
1361 if (! s_pkg ) return &no_package;
1365 static gint32 comparePkgID(gconstpointer a, gconstpointer b) {
1366 return GPOINTER_TO_UINT(b) - GPOINTER_TO_UINT(a);
1369 gboolean is_pkg_default(guint16 pkgid) {
1370 s_h248_package_t *s_pkg = NULL;
1371 s_pkg = g_tree_lookup(packages, GUINT_TO_POINTER((guint32)(pkgid)));
1372 if(! s_pkg ) return TRUE;
1373 return s_pkg->is_default;
1376 void h248_register_package(const h248_package_t* pkg, pkg_reg_action reg_action) {
1377 h248_package_t *pkg_found = NULL, *pkg_high = NULL, *pkg_low = NULL;
1378 s_h248_package_t *s_pkg = NULL;
1380 gboolean pkg_default = FALSE;
1381 gint j = 0, idx = 0, i = 0, k = 0;
1383 /* no packaegs are yet registerd so create tree and add default packages to tree
1385 packages = g_tree_new(comparePkgID); /* init tree if no entries */
1386 while (base_package_name_vals[i].strptr != NULL) {
1387 pkg_found = g_new0(h248_package_t, 1); /* create a h248 package structure */
1388 pkg_found->id = base_package_name_vals[i].value;
1389 vst = g_new0(value_string,2);
1390 vst[0].strptr = base_package_name_vals[i].strptr;
1391 pkg_found->param_names = vst;
1392 pkg_found->hfid = &hf_h248_pkg_name;
1393 pkg_found->ett = &ett_packagename;
1394 match_strval_idx((pkg_found->id)<<16,base_event_name_vals, &j);
1395 /* now look for events and signals that may be defined for package. If found, create value_strings */
1398 while((base_event_name_vals[j].strptr!=NULL) && (((base_event_name_vals[j].value)>>16) == (pkg_found->id))) {
1402 vst = g_new0(value_string,j-idx+1);
1403 for (k=0;idx<j;k++) {
1404 vst[k].strptr = base_event_name_vals[idx].strptr;
1405 vst[k].value = (base_event_name_vals[idx].value & 0xffff);
1408 pkg_found->event_names = vst;
1411 /* now look at signals */
1412 if (!match_strval_idx((pkg_found->id)<<16, base_signal_name_vals, &j)) {
1414 while((base_signal_name_vals[j].strptr != NULL) && ((base_signal_name_vals[j].value>>16) == (pkg_found->id))) {
1417 vst = g_new0(value_string,j-idx+1);
1418 for (k=0;idx<i;k++) {
1419 vst[k].strptr = base_signal_name_vals[idx].strptr;
1420 vst[k].value = (base_signal_name_vals[idx].value &0xffff);
1423 pkg_found->signal_names = vst;
1426 s_pkg = g_new0(s_h248_package_t,1);
1427 s_pkg->is_default = TRUE;
1428 s_pkg->pkg = pkg_found;
1429 g_tree_insert(packages, GINT_TO_POINTER(pkg_found->id), (gpointer)s_pkg);
1432 pkg_found = NULL; /* reset pointer */
1434 pkg_default = is_pkg_default(pkg->id);
1435 if (((reg_action==REPLACE_PKG) || (reg_action==ADD_PKG)) && pkg_default) {
1436 /* add/replace in tree */
1437 s_pkg = g_new0(s_h248_package_t,1);
1438 s_pkg->is_default = FALSE;
1439 s_pkg->pkg = (h248_package_t *)pkg;
1440 g_tree_replace(packages, GINT_TO_POINTER(pkg->id), (gpointer)s_pkg);
1443 if(pkg_default) reg_action = MERGE_PKG_HIGH; /* always make new package overide default */
1444 s_pkg = s_find_package_id(pkg->id);
1445 if (s_pkg == NULL) { /* no need to merge - package not in tree */
1446 s_pkg = g_new0(s_h248_package_t,1);
1447 s_pkg->is_default = FALSE;
1448 s_pkg->pkg = (h248_package_t *)pkg;
1449 g_tree_insert(packages, GINT_TO_POINTER(pkg->id), (gpointer)s_pkg);
1452 pkg_found = s_pkg->pkg;
1453 if (reg_action==MERGE_PKG_HIGH) {
1454 pkg_high = (h248_package_t *)pkg;
1455 pkg_low = pkg_found;
1457 if (reg_action==MERGE_PKG_LOW) {
1458 pkg_high = pkg_found;
1459 pkg_low = (h248_package_t *)pkg;
1461 /* if h248_package_t High Priority value !NULL, replace it in the found tree entry else use current entry */
1462 (pkg_high->hfid ? (pkg_found->hfid=pkg_high->hfid) : (pkg_found->hfid=pkg_low->hfid));
1463 (pkg_high->ett ? (pkg_found->ett=pkg_high->ett ):( pkg_found->ett=pkg_low->ett));
1464 (pkg_high->param_names ? (pkg_found->param_names=pkg_high->param_names ):( pkg_found->param_names=pkg_low->param_names));
1465 (pkg_high->signal_names ? (pkg_found->signal_names=pkg_high->signal_names ):( pkg_found->signal_names=pkg_low->signal_names));
1466 (pkg_high->event_names ? (pkg_found->event_names=pkg_high->event_names ):( pkg_found->event_names=pkg_low->event_names));
1467 (pkg_high->stats_names ? (pkg_found->stats_names=pkg_high->stats_names ):( pkg_found->stats_names=pkg_low->stats_names));
1468 (pkg_high->properties ? (pkg_found->properties=pkg_high->properties ):( pkg_found->properties=pkg_low->properties));
1469 (pkg_high->signals ? (pkg_found->signals=pkg_high->signals ):( pkg_found->signals=pkg_low->signals));
1470 (pkg_high->events ? (pkg_found->events=pkg_high->events ):( pkg_found->events=pkg_low->events));
1471 (pkg_high->statistics ? (pkg_found->statistics=pkg_high->statistics ):( pkg_found->statistics=pkg_low->statistics));
1472 s_pkg->pkg = pkg_found;
1473 s_pkg->is_default = FALSE;
1477 static guint32 packageandid;
1479 static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1480 tvbuff_t *new_tvb = NULL;
1481 proto_tree *package_tree=NULL;
1482 guint16 name_major, name_minor;
1483 const h248_package_t* pkg = NULL;
1485 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
1488 /* this field is always 4 bytes so just read it into two integers */
1489 name_major=tvb_get_ntohs(new_tvb, 0);
1490 name_minor=tvb_get_ntohs(new_tvb, 2);
1491 packageandid=(name_major<<16)|name_minor;
1493 pkg = find_package_id(name_major);
1494 /* do the prettification */
1495 proto_item_append_text(actx->created_item, " %s (%04x)",
1496 val_to_str(0, pkg->param_names, "Unknown Package"),
1500 package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
1501 proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
1502 "PkgName%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
1506 proto_item* pi = proto_tree_add_uint(package_tree, hf_248_pkg_param, tvb, offset-2, 2, name_minor);
1507 const gchar* strval;
1509 if (pkg->param_names && ( strval = match_strval(name_minor, pkg->param_names) )) {
1510 strval = ep_strdup_printf("%s (%d)",strval,name_minor);
1512 strval = ep_strdup_printf("Unknown (%d)",name_minor);
1515 proto_item_set_text(pi,"Parameter: %s", strval);
1521 curr_info.pkg = pkg;
1526 static int dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1528 proto_tree *package_tree=NULL;
1529 guint16 name_major, name_minor;
1530 const h248_package_t* pkg = NULL;
1531 const h248_pkg_evt_t* evt = NULL;
1533 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
1536 /* this field is always 4 bytes so just read it into two integers */
1537 name_major=tvb_get_ntohs(new_tvb, 0);
1538 name_minor=tvb_get_ntohs(new_tvb, 2);
1539 packageandid=(name_major<<16)|name_minor;
1541 pkg = find_package_id(name_major);
1542 /* do the prettification */
1543 proto_item_append_text(actx->created_item, " %s (%04x)",
1544 val_to_str(0, pkg->param_names, "Unknown Package"),
1547 package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
1549 proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
1550 "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
1552 curr_info.pkg = pkg;
1555 for (evt = pkg->events; evt->hfid; evt++) {
1556 if (name_minor == evt->id) {
1561 if (! evt->hfid) evt = &no_event;
1566 curr_info.evt = evt;
1569 proto_item* pi = proto_tree_add_uint(package_tree, hf_h248_event_code, tvb, offset-2, 2, name_minor);
1570 const gchar* strval;
1572 if (pkg->event_names && ( strval = match_strval(name_minor, pkg->event_names) )) {
1573 strval = ep_strdup_printf("%s (%d)",strval,name_minor);
1575 strval = ep_strdup_printf("Unknown (%d)",name_minor);
1578 proto_item_set_text(pi,"Event ID: %s", strval);
1582 curr_info.pkg = &no_package;
1583 curr_info.evt = &no_event;
1591 static int dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1593 proto_tree *package_tree=NULL;
1594 guint16 name_major, name_minor;
1595 const h248_package_t* pkg = NULL;
1596 const h248_pkg_sig_t* sig;
1598 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
1601 /* this field is always 4 bytes so just read it into two integers */
1602 name_major=tvb_get_ntohs(new_tvb, 0);
1603 name_minor=tvb_get_ntohs(new_tvb, 2);
1604 packageandid=(name_major<<16)|name_minor;
1606 pkg = find_package_id(name_major);
1607 /* do the prettification */
1608 proto_item_append_text(actx->created_item, " %s (%04x)",
1609 val_to_str(0, pkg->param_names, "Unknown Package"),
1612 package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
1614 proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
1615 "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
1618 for (sig = pkg->signals; sig->hfid; sig++) {
1619 if (name_minor == sig->id) {
1624 if (! sig->hfid) sig = &no_signal;
1626 curr_info.pkg = pkg;
1627 curr_info.sig = sig;
1629 curr_info.pkg = &no_package;
1630 curr_info.sig = &no_signal;
1634 proto_item* pi = proto_tree_add_uint(package_tree, hf_h248_signal_code, tvb, offset-2, 2, name_minor);
1635 const gchar* strval;
1637 if (pkg->signal_names && ( strval = match_strval(name_minor, pkg->signal_names) )) {
1638 strval = ep_strdup_printf("%s (%d)",strval,name_minor);
1640 strval = ep_strdup_printf("Unknown (%d)",name_minor);
1643 proto_item_set_text(pi,"Signal ID: %s", strval);
1647 curr_info.pkg = &no_package;
1648 curr_info.sig = &no_signal;
1654 static int dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1662 const h248_package_t* pkg;
1663 const h248_pkg_param_t* prop;
1664 tvbuff_t *next_tvb = NULL;
1666 offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
1667 offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
1668 end_offset=offset+len;
1670 if( (ber_class!=BER_CLASS_UNI)
1671 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1672 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
1676 next_tvb = tvb_new_subset(tvb,offset,len,len);
1678 name_minor = packageandid & 0xffff;
1680 pkg = (curr_info.pkg) ? curr_info.pkg : &no_package;
1682 if (pkg->properties) {
1683 for (prop = pkg->properties; prop && prop->hfid; prop++) {
1684 if (name_minor == prop->id) {
1691 if (prop && prop->hfid ) {
1692 if (!prop->dissector) prop = &no_param;
1693 prop->dissector(tree, next_tvb, actx->pinfo, *(prop->hfid), &curr_info, prop->data);
1701 static int dissect_h248_SigParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1703 guint32 param_id = 0xffffffff;
1704 const h248_pkg_param_t* sigpar;
1705 const gchar* strval;
1708 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &next_tvb);
1709 pi = actx->created_item;
1711 switch(tvb_length(next_tvb)) {
1712 case 4: param_id = tvb_get_ntohl(next_tvb,0); break;
1713 case 3: param_id = tvb_get_ntoh24(next_tvb,0); break;
1714 case 2: param_id = tvb_get_ntohs(next_tvb,0); break;
1715 case 1: param_id = tvb_get_guint8(next_tvb,0); break;
1719 curr_info.par = &no_param;
1721 if (curr_info.sig && curr_info.sig->parameters) {
1722 for(sigpar = curr_info.sig->parameters; sigpar->hfid; sigpar++) {
1723 if (sigpar->id == param_id) {
1724 curr_info.par = sigpar;
1730 if (curr_info.sig && curr_info.sig->param_names && ( strval = match_strval(param_id, curr_info.sig->param_names) )) {
1731 strval = ep_strdup_printf("%s (%d)",strval,param_id);
1733 strval = ep_strdup_printf("Unknown (%d)",param_id);
1736 proto_item_set_text(pi,"Parameter: %s", strval);
1741 static int dissect_h248_SigParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1747 tvbuff_t *next_tvb = NULL;
1749 offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
1750 offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
1751 end_offset=offset+len;
1753 if( (ber_class!=BER_CLASS_UNI)
1754 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1755 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
1759 next_tvb = tvb_new_subset(tvb,offset,len,len);
1761 if ( curr_info.par && curr_info.par->dissector) {
1762 curr_info.par->dissector(tree, next_tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
1768 static int dissect_h248_SigParamValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1769 return dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1773 static int dissect_h248_EventParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1775 guint32 param_id = 0xffffffff;
1776 const h248_pkg_param_t* evtpar;
1777 const gchar* strval;
1780 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &next_tvb);
1781 pi = actx->created_item;
1784 switch(tvb_length(next_tvb)) {
1785 case 4: param_id = tvb_get_ntohl(next_tvb,0); break;
1786 case 3: param_id = tvb_get_ntoh24(next_tvb,0); break;
1787 case 2: param_id = tvb_get_ntohs(next_tvb,0); break;
1788 case 1: param_id = tvb_get_guint8(next_tvb,0); break;
1794 curr_info.par = &no_param;
1796 if (curr_info.evt && curr_info.evt->parameters) {
1797 for(evtpar = curr_info.evt->parameters; evtpar->hfid; evtpar++) {
1798 if (evtpar->id == param_id) {
1799 curr_info.par = evtpar;
1804 curr_info.par = &no_param;
1807 if (curr_info.evt && curr_info.evt->param_names && ( strval = match_strval(param_id, curr_info.evt->param_names) )) {
1808 strval = ep_strdup_printf("%s (%d)",strval,param_id);
1810 strval = ep_strdup_printf("Unknown (%d)",param_id);
1813 proto_item_set_text(pi,"Parameter: %s", strval);
1819 static int dissect_h248_EventParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1827 offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
1828 offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
1829 end_offset=offset+len;
1831 if( (ber_class!=BER_CLASS_UNI)
1832 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1833 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
1837 next_tvb = tvb_new_subset(tvb,offset,len,len);
1839 if ( curr_info.par && curr_info.par->dissector) {
1840 curr_info.par->dissector(tree, next_tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
1846 static int dissect_h248_EventParamValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
1847 return dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &tvb);
1851 static int dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1853 proto_tree *mtp_tree=NULL;
1855 int i, len, old_offset;
1858 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
1861 /* this field is either 2 or 4 bytes so just read it into an integer */
1863 len=tvb_length(new_tvb);
1865 val= (val<<8)|tvb_get_guint8(new_tvb, i);
1868 /* do the prettification */
1869 proto_item_append_text(actx->created_item, " NI = %d, PC = %d ( %d-%d )", val&0x03,val>>2,val&0x03,val>>2);
1871 mtp_tree = proto_item_add_subtree(actx->created_item, ett_mtpaddress);
1873 proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_ni, tvb, old_offset, offset-old_offset, val&0x03);
1874 proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_pc, tvb, old_offset, offset-old_offset, val>>2);
1880 #define H248_TAP() do { if (keep_persistent_data && curr_info.cmd) tap_queue_packet(h248_tap, actx->pinfo, curr_info.cmd); } while(0)
1883 /*--- Included file: packet-h248-fn.c ---*/
1884 #line 1 "../../asn1/h248/packet-h248-fn.c"
1885 /*--- Cyclic dependencies ---*/
1887 /* SecondEventsDescriptor -> SecondEventsDescriptor/eventList -> SecondRequestedEvent -> SecondRequestedActions -> NotifyBehaviour -> RegulatedEmbeddedDescriptor -> SecondEventsDescriptor */
1888 static int dissect_h248_SecondEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
1894 dissect_h248_SecurityParmIndex(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1895 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1904 dissect_h248_SequenceNum(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1905 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1914 dissect_h248_AuthData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1915 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1922 static const ber_sequence_t AuthenticationHeader_sequence[] = {
1923 { &hf_h248_secParmIndex , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SecurityParmIndex },
1924 { &hf_h248_seqNum , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SequenceNum },
1925 { &hf_h248_ad , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_AuthData },
1926 { NULL, 0, 0, 0, NULL }
1930 dissect_h248_AuthenticationHeader(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1931 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1932 AuthenticationHeader_sequence, hf_index, ett_h248_AuthenticationHeader);
1940 dissect_h248_T_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1941 #line 108 "../../asn1/h248/h248.cnf"
1942 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1953 dissect_h248_OCTET_STRING_SIZE_4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1954 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1963 dissect_h248_INTEGER_0_65535(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1964 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1971 static const ber_sequence_t IP4Address_sequence[] = {
1972 { &hf_h248_iP4Address , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_OCTET_STRING_SIZE_4 },
1973 { &hf_h248_portNumber , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
1974 { NULL, 0, 0, 0, NULL }
1978 dissect_h248_IP4Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1979 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1980 IP4Address_sequence, hf_index, ett_h248_IP4Address);
1988 dissect_h248_OCTET_STRING_SIZE_16(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1989 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1996 static const ber_sequence_t IP6Address_sequence[] = {
1997 { &hf_h248_iP6Address , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_OCTET_STRING_SIZE_16 },
1998 { &hf_h248_portNumber , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
1999 { NULL, 0, 0, 0, NULL }
2003 dissect_h248_IP6Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2004 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2005 IP6Address_sequence, hf_index, ett_h248_IP6Address);
2013 dissect_h248_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2014 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2015 actx, tree, tvb, offset, hf_index,
2022 static const ber_sequence_t DomainName_sequence[] = {
2023 { &hf_h248_domName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IA5String },
2024 { &hf_h248_portNumber , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
2025 { NULL, 0, 0, 0, NULL }
2029 dissect_h248_DomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2030 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2031 DomainName_sequence, hf_index, ett_h248_DomainName);
2039 dissect_h248_PathName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2041 actx, tree, tvb, offset, hf_index,
2049 static const value_string h248_MId_vals[] = {
2050 { 0, "ip4Address" },
2051 { 1, "ip6Address" },
2052 { 2, "domainName" },
2053 { 3, "deviceName" },
2054 { 4, "mtpAddress" },
2058 static const ber_choice_t MId_choice[] = {
2059 { 0, &hf_h248_ip4Address , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IP4Address },
2060 { 1, &hf_h248_ip6Address , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IP6Address },
2061 { 2, &hf_h248_domainName , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_DomainName },
2062 { 3, &hf_h248_deviceName , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_PathName },
2063 { 4, &hf_h248_mtpAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_MtpAddress },
2064 { 0, NULL, 0, 0, 0, NULL }
2068 dissect_h248_MId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2069 offset = dissect_ber_choice(actx, tree, tvb, offset,
2070 MId_choice, hf_index, ett_h248_MId,
2080 dissect_h248_T_errorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2081 #line 302 "../../asn1/h248/h248.cnf"
2082 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_h248_error_code, &error_code);
2083 expert_add_info_format(actx->pinfo, actx->created_item, PI_RESPONSE_CODE, PI_WARN, "Errored Command");
2085 if (curr_info.cmd) {
2086 gcp_cmd_set_error(curr_info.cmd,error_code);
2087 } else if (curr_info.trx) {
2088 gcp_trx_set_error(curr_info.trx,error_code);
2100 dissect_h248_ErrorText(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2101 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2102 actx, tree, tvb, offset, hf_index,
2109 static const ber_sequence_t ErrorDescriptor_sequence[] = {
2110 { &hf_h248_errorCode , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_errorCode },
2111 { &hf_h248_errorText , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ErrorText },
2112 { NULL, 0, 0, 0, NULL }
2116 dissect_h248_ErrorDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2117 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2118 ErrorDescriptor_sequence, hf_index, ett_h248_ErrorDescriptor);
2126 dissect_h248_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2127 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2136 dissect_h248_T_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2137 #line 112 "../../asn1/h248/h248.cnf"
2139 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
2140 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REQUEST, keep_persistent_data);
2151 dissect_h248_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2152 #line 137 "../../asn1/h248/h248.cnf"
2154 offset = dissect_h248_ctx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &ctx_id);
2155 curr_info.ctx = gcp_ctx(curr_info.msg,curr_info.trx,ctx_id,keep_persistent_data);
2156 curr_info.cmd = NULL;
2157 curr_info.term = NULL;
2166 dissect_h248_INTEGER_0_15(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2167 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2176 dissect_h248_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2177 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2185 dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2186 #line 320 "../../asn1/h248/h248.cnf"
2188 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
2189 tree = proto_item_add_subtree(actx->created_item,ett_wildcard);
2190 proto_tree_add_item(tree,hf_h248_term_wild_type,new_tvb,0,1,ENC_BIG_ENDIAN);
2191 proto_tree_add_item(tree,hf_h248_term_wild_level,new_tvb,0,1,ENC_BIG_ENDIAN);
2192 proto_tree_add_item(tree,hf_h248_term_wild_position,new_tvb,0,1,ENC_BIG_ENDIAN);
2194 wild_term = tvb_get_guint8(new_tvb,0) & 0x80 ? GCP_WILDCARD_CHOOSE : GCP_WILDCARD_ALL;
2195 /* limitation: assume only one wildcard is used */
2196 wild_card = tvb_get_guint8(new_tvb,0);
2204 static const ber_sequence_t SEQUENCE_OF_WildcardField_sequence_of[1] = {
2205 { &hf_h248_wildcard_item , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_WildcardField },
2209 dissect_h248_SEQUENCE_OF_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2210 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2211 SEQUENCE_OF_WildcardField_sequence_of, hf_index, ett_h248_SEQUENCE_OF_WildcardField);
2219 dissect_h248_T_terminationId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2220 #line 334 "../../asn1/h248/h248.cnf"
2222 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
2225 curr_info.term->len = tvb_length(new_tvb);
2226 curr_info.term->type = 0; /* unknown */
2228 if (curr_info.term->len) {
2229 curr_info.term->buffer = ep_tvb_memdup(new_tvb,0,curr_info.term->len);
2230 curr_info.term->str = bytes_to_str(curr_info.term->buffer,curr_info.term->len);
2233 curr_info.term = gcp_cmd_add_term(curr_info.msg, curr_info.trx, curr_info.cmd, curr_info.term, wild_term, keep_persistent_data);
2235 if (h248_term_handle) {
2236 actx->pinfo->private_data = &wild_card;
2237 call_dissector(h248_term_handle, new_tvb, actx->pinfo, tree);
2241 curr_info.term->len = 0;
2242 curr_info.term->buffer = (guint8*)ep_strdup("");
2243 curr_info.term->str = ep_strdup("?");
2251 static const ber_sequence_t TerminationID_sequence[] = {
2252 { &hf_h248_wildcard , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_WildcardField },
2253 { &hf_h248_terminationId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_T_terminationId },
2254 { NULL, 0, 0, 0, NULL }
2258 dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2259 #line 315 "../../asn1/h248/h248.cnf"
2260 curr_info.term = ep_new0(gcp_term_t);
2261 wild_term = GCP_WILDCARD_NONE;
2263 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2264 TerminationID_sequence, hf_index, ett_h248_TerminationID);
2270 static const value_string h248_T_topologyDirection_vals[] = {
2279 dissect_h248_T_topologyDirection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2280 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2289 dissect_h248_StreamID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2290 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2297 static const value_string h248_T_topologyDirectionExtension_vals[] = {
2298 { 0, "onewayexternal" },
2299 { 1, "onewayboth" },
2305 dissect_h248_T_topologyDirectionExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2306 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2313 static const ber_sequence_t TopologyRequest_sequence[] = {
2314 { &hf_h248_terminationFrom, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
2315 { &hf_h248_terminationTo , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
2316 { &hf_h248_topologyDirection, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_T_topologyDirection },
2317 { &hf_h248_streamID , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
2318 { &hf_h248_topologyDirectionExtension, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_topologyDirectionExtension },
2319 { NULL, 0, 0, 0, NULL }
2323 dissect_h248_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2324 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2325 TopologyRequest_sequence, hf_index, ett_h248_TopologyRequest);
2331 static const ber_sequence_t T_topologyReq_sequence_of[1] = {
2332 { &hf_h248_topologyReq_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_TopologyRequest },
2336 dissect_h248_T_topologyReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2337 #line 220 "../../asn1/h248/h248.cnf"
2338 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_TOPOLOGY_REQ,offset,keep_persistent_data);
2341 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2342 T_topologyReq_sequence_of, hf_index, ett_h248_T_topologyReq);
2344 #line 224 "../../asn1/h248/h248.cnf"
2345 curr_info.cmd = NULL;
2353 dissect_h248_Iepscallind_BOOL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2354 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2363 dissect_h248_PropertyName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2364 offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, actx, tree, hf_index);
2371 static const ber_sequence_t SEQUENCE_OF_PropertyID_sequence_of[1] = {
2372 { &hf_h248_propertyParamValue_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_PropertyID },
2376 dissect_h248_SEQUENCE_OF_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2377 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2378 SEQUENCE_OF_PropertyID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyID);
2384 static const value_string h248_Relation_vals[] = {
2385 { 0, "greaterThan" },
2386 { 1, "smallerThan" },
2393 dissect_h248_Relation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2394 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2401 static const value_string h248_PropParm_extraInfo_vals[] = {
2408 static const ber_choice_t PropParm_extraInfo_choice[] = {
2409 { 0, &hf_h248_relation , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Relation },
2410 { 1, &hf_h248_range , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2411 { 2, &hf_h248_sublist , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2412 { 0, NULL, 0, 0, 0, NULL }
2416 dissect_h248_PropParm_extraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2417 offset = dissect_ber_choice(actx, tree, tvb, offset,
2418 PropParm_extraInfo_choice, hf_index, ett_h248_PropParm_extraInfo,
2425 static const ber_sequence_t PropertyParm_sequence[] = {
2426 { &hf_h248_propertyName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PropertyName },
2427 { &hf_h248_propertyParamValue, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyID },
2428 { &hf_h248_propParm_extraInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_PropParm_extraInfo },
2429 { NULL, 0, 0, 0, NULL }
2433 dissect_h248_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2434 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2435 PropertyParm_sequence, hf_index, ett_h248_PropertyParm);
2441 static const ber_sequence_t SEQUENCE_OF_PropertyParm_sequence_of[1] = {
2442 { &hf_h248_contextProp_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_PropertyParm },
2446 dissect_h248_SEQUENCE_OF_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2447 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2448 SEQUENCE_OF_PropertyParm_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyParm);
2456 dissect_h248_ContextIDinList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2457 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2464 static const ber_sequence_t SEQUENCE_OF_ContextIDinList_sequence_of[1] = {
2465 { &hf_h248_contextList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_h248_ContextIDinList },
2469 dissect_h248_SEQUENCE_OF_ContextIDinList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2470 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2471 SEQUENCE_OF_ContextIDinList_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ContextIDinList);
2477 static const ber_sequence_t ContextRequest_sequence[] = {
2478 { &hf_h248_priority , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_15 },
2479 { &hf_h248_emergency , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2480 { &hf_h248_topologyReq , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_topologyReq },
2481 { &hf_h248_iepscallind_BOOL, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_Iepscallind_BOOL },
2482 { &hf_h248_contextProp , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
2483 { &hf_h248_contextList , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_ContextIDinList },
2484 { NULL, 0, 0, 0, NULL }
2488 dissect_h248_ContextRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2489 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2490 ContextRequest_sequence, hf_index, ett_h248_ContextRequest);
2498 dissect_h248_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2499 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2505 static const ber_sequence_t IndAudPropertyParm_sequence[] = {
2506 { &hf_h248_name , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
2507 { &hf_h248_propertyParms , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_PropertyParm },
2508 { NULL, 0, 0, 0, NULL }
2512 dissect_h248_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2513 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2514 IndAudPropertyParm_sequence, hf_index, ett_h248_IndAudPropertyParm);
2520 static const ber_sequence_t SEQUENCE_OF_IndAudPropertyParm_sequence_of[1] = {
2521 { &hf_h248_contextPropAud_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_IndAudPropertyParm },
2525 dissect_h248_SEQUENCE_OF_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2526 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2527 SEQUENCE_OF_IndAudPropertyParm_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAudPropertyParm);
2533 static const value_string h248_SelectLogic_vals[] = {
2534 { 0, "andAUDITSelect" },
2535 { 1, "orAUDITSelect" },
2539 static const ber_choice_t SelectLogic_choice[] = {
2540 { 0, &hf_h248_andAUDITSelect , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2541 { 1, &hf_h248_orAUDITSelect , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2542 { 0, NULL, 0, 0, 0, NULL }
2546 dissect_h248_SelectLogic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2547 offset = dissect_ber_choice(actx, tree, tvb, offset,
2548 SelectLogic_choice, hf_index, ett_h248_SelectLogic,
2555 static const ber_sequence_t ContextAttrAuditRequest_sequence[] = {
2556 { &hf_h248_topology , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2557 { &hf_h248_cAAREmergency , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2558 { &hf_h248_cAARPriority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2559 { &hf_h248_iepscallind , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
2560 { &hf_h248_contextPropAud , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_IndAudPropertyParm },
2561 { &hf_h248_selectpriority , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_15 },
2562 { &hf_h248_selectemergency, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2563 { &hf_h248_selectiepscallind, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2564 { &hf_h248_selectLogic , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_SelectLogic },
2565 { NULL, 0, 0, 0, NULL }
2569 dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2570 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2571 ContextAttrAuditRequest_sequence, hf_index, ett_h248_ContextAttrAuditRequest);
2579 dissect_h248_T_contextAttrAuditReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2580 #line 228 "../../asn1/h248/h248.cnf"
2581 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_CTX_ATTR_AUDIT_REQ,offset,keep_persistent_data);
2584 offset = dissect_h248_ContextAttrAuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
2586 #line 232 "../../asn1/h248/h248.cnf"
2587 curr_info.cmd = NULL;
2593 static const ber_sequence_t TerminationIDList_sequence_of[1] = {
2594 { &hf_h248_TerminationIDList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_TerminationID },
2598 dissect_h248_TerminationIDList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2599 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2600 TerminationIDList_sequence_of, hf_index, ett_h248_TerminationIDList);
2606 static const value_string h248_EventBufferControl_vals[] = {
2614 dissect_h248_EventBufferControl(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2615 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2622 static const value_string h248_ServiceState_vals[] = {
2631 dissect_h248_ServiceState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2632 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2639 static const ber_sequence_t TerminationStateDescriptor_sequence[] = {
2640 { &hf_h248_tSDpropertyParms, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
2641 { &hf_h248_tSEventBufferControl, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_EventBufferControl },
2642 { &hf_h248_serviceState , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ServiceState },
2643 { NULL, 0, 0, 0, NULL }
2647 dissect_h248_TerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2648 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2649 TerminationStateDescriptor_sequence, hf_index, ett_h248_TerminationStateDescriptor);
2655 static const value_string h248_StreamMode_vals[] = {
2666 dissect_h248_StreamMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2667 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2674 static const ber_sequence_t LocalControlDescriptor_sequence[] = {
2675 { &hf_h248_streamMode , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamMode },
2676 { &hf_h248_reserveValue , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2677 { &hf_h248_reserveGroup , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
2678 { &hf_h248_lCDpropertyParms, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
2679 { NULL, 0, 0, 0, NULL }
2683 dissect_h248_LocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2684 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2685 LocalControlDescriptor_sequence, hf_index, ett_h248_LocalControlDescriptor);
2691 static const ber_sequence_t PropertyGroup_sequence_of[1] = {
2692 { &hf_h248_PropertyGroup_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_PropertyParm },
2696 dissect_h248_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2697 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2698 PropertyGroup_sequence_of, hf_index, ett_h248_PropertyGroup);
2704 static const ber_sequence_t SEQUENCE_OF_PropertyGroup_sequence_of[1] = {
2705 { &hf_h248_propGrps_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_PropertyGroup },
2709 dissect_h248_SEQUENCE_OF_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2710 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2711 SEQUENCE_OF_PropertyGroup_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyGroup);
2717 static const ber_sequence_t LocalRemoteDescriptor_sequence[] = {
2718 { &hf_h248_propGrps , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyGroup },
2719 { NULL, 0, 0, 0, NULL }
2723 dissect_h248_LocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2724 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2725 LocalRemoteDescriptor_sequence, hf_index, ett_h248_LocalRemoteDescriptor);
2733 dissect_h248_StatName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2734 offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, actx, tree, hf_index);
2742 dissect_h248_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2743 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2750 static const ber_sequence_t Value_sequence_of[1] = {
2751 { &hf_h248_Value_item , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_OCTET_STRING },
2755 dissect_h248_Value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2756 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2757 Value_sequence_of, hf_index, ett_h248_Value);
2765 dissect_h248_StatValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2766 offset = dissect_h248_Value(implicit_tag, tvb, offset, actx, tree, hf_index);
2772 static const ber_sequence_t StatisticsParameter_sequence[] = {
2773 { &hf_h248_statName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_StatName },
2774 { &hf_h248_statValue , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StatValue },
2775 { NULL, 0, 0, 0, NULL }
2779 dissect_h248_StatisticsParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2780 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2781 StatisticsParameter_sequence, hf_index, ett_h248_StatisticsParameter);
2787 static const ber_sequence_t StatisticsDescriptor_sequence_of[1] = {
2788 { &hf_h248_StatisticsDescriptor_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_StatisticsParameter },
2792 dissect_h248_StatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2793 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2794 StatisticsDescriptor_sequence_of, hf_index, ett_h248_StatisticsDescriptor);
2800 static const ber_sequence_t StreamParms_sequence[] = {
2801 { &hf_h248_localControlDescriptor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalControlDescriptor },
2802 { &hf_h248_localDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalRemoteDescriptor },
2803 { &hf_h248_remoteDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalRemoteDescriptor },
2804 { &hf_h248_sPstatisticsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
2805 { NULL, 0, 0, 0, NULL }
2809 dissect_h248_StreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2810 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2811 StreamParms_sequence, hf_index, ett_h248_StreamParms);
2817 static const ber_sequence_t StreamDescriptor_sequence[] = {
2818 { &hf_h248_streamID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
2819 { &hf_h248_streamParms , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_StreamParms },
2820 { NULL, 0, 0, 0, NULL }
2824 dissect_h248_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2825 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2826 StreamDescriptor_sequence, hf_index, ett_h248_StreamDescriptor);
2832 static const ber_sequence_t SEQUENCE_OF_StreamDescriptor_sequence_of[1] = {
2833 { &hf_h248_mediaDescriptorMultiStream_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_StreamDescriptor },
2837 dissect_h248_SEQUENCE_OF_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2838 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2839 SEQUENCE_OF_StreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_StreamDescriptor);
2845 static const value_string h248_T_streams_vals[] = {
2847 { 1, "multiStream" },
2851 static const ber_choice_t T_streams_choice[] = {
2852 { 0, &hf_h248_mediaDescriptorOneStream, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_StreamParms },
2853 { 1, &hf_h248_mediaDescriptorMultiStream, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_StreamDescriptor },
2854 { 0, NULL, 0, 0, 0, NULL }
2858 dissect_h248_T_streams(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2859 offset = dissect_ber_choice(actx, tree, tvb, offset,
2860 T_streams_choice, hf_index, ett_h248_T_streams,
2867 static const ber_sequence_t MediaDescriptor_sequence[] = {
2868 { &hf_h248_termStateDescr , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TerminationStateDescriptor },
2869 { &hf_h248_streams , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_streams },
2870 { NULL, 0, 0, 0, NULL }
2874 dissect_h248_MediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2875 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2876 MediaDescriptor_sequence, hf_index, ett_h248_MediaDescriptor);
2882 static const value_string h248_ModemType_vals[] = {
2897 dissect_h248_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2898 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2905 static const ber_sequence_t SEQUENCE_OF_ModemType_sequence_of[1] = {
2906 { &hf_h248_mtl_item , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_h248_ModemType },
2910 dissect_h248_SEQUENCE_OF_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2911 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2912 SEQUENCE_OF_ModemType_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ModemType);
2920 dissect_h248_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2921 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2929 dissect_h248_INTEGER_0_255(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2930 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2937 static const ber_sequence_t H221NonStandard_sequence[] = {
2938 { &hf_h248_t35CountryCode1, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_255 },
2939 { &hf_h248_t35CountryCode2, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_255 },
2940 { &hf_h248_t35Extension , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_255 },
2941 { &hf_h248_manufacturerCode, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
2942 { NULL, 0, 0, 0, NULL }
2946 dissect_h248_H221NonStandard(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2947 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2948 H221NonStandard_sequence, hf_index, ett_h248_H221NonStandard);
2956 dissect_h248_IA5String_SIZE_8(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2957 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2958 actx, tree, tvb, offset, hf_index,
2965 static const value_string h248_NonStandardIdentifier_vals[] = {
2967 { 1, "h221NonStandard" },
2968 { 2, "experimental" },
2972 static const ber_choice_t NonStandardIdentifier_choice[] = {
2973 { 0, &hf_h248_object , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_OBJECT_IDENTIFIER },
2974 { 1, &hf_h248_h221NonStandard, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_H221NonStandard },
2975 { 2, &hf_h248_experimental , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_IA5String_SIZE_8 },
2976 { 0, NULL, 0, 0, 0, NULL }
2980 dissect_h248_NonStandardIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2981 offset = dissect_ber_choice(actx, tree, tvb, offset,
2982 NonStandardIdentifier_choice, hf_index, ett_h248_NonStandardIdentifier,
2989 static const ber_sequence_t NonStandardData_sequence[] = {
2990 { &hf_h248_nonStandardIdentifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_NonStandardIdentifier },
2991 { &hf_h248_data , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_OCTET_STRING },
2992 { NULL, 0, 0, 0, NULL }
2996 dissect_h248_NonStandardData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2997 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2998 NonStandardData_sequence, hf_index, ett_h248_NonStandardData);
3004 static const ber_sequence_t ModemDescriptor_sequence[] = {
3005 { &hf_h248_mtl , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_ModemType },
3006 { &hf_h248_mpl , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
3007 { &hf_h248_nonStandardData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NonStandardData },
3008 { NULL, 0, 0, 0, NULL }
3012 dissect_h248_ModemDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3013 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3014 ModemDescriptor_sequence, hf_index, ett_h248_ModemDescriptor);
3020 static const value_string h248_MuxType_vals[] = {
3031 dissect_h248_MuxType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3032 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3039 static const ber_sequence_t SEQUENCE_OF_TerminationID_sequence_of[1] = {
3040 { &hf_h248_termList_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_TerminationID },
3044 dissect_h248_SEQUENCE_OF_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3045 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3046 SEQUENCE_OF_TerminationID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_TerminationID);
3052 static const ber_sequence_t MuxDescriptor_sequence[] = {
3053 { &hf_h248_muxType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_MuxType },
3054 { &hf_h248_termList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_TerminationID },
3055 { &hf_h248_nonStandardData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NonStandardData },
3056 { NULL, 0, 0, 0, NULL }
3060 dissect_h248_MuxDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3061 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3062 MuxDescriptor_sequence, hf_index, ett_h248_MuxDescriptor);
3070 dissect_h248_RequestID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3071 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3081 dissect_h248_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3082 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3091 dissect_h248_DigitMapName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3092 offset = dissect_h248_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
3100 dissect_h248_INTEGER_0_99(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3101 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3108 static const ber_sequence_t DigitMapValue_sequence[] = {
3109 { &hf_h248_startTimer , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
3110 { &hf_h248_shortTimer , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
3111 { &hf_h248_longTimer , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
3112 { &hf_h248_digitMapBody , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_IA5String },
3113 { &hf_h248_durationTimer , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
3114 { NULL, 0, 0, 0, NULL }
3118 dissect_h248_DigitMapValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3119 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3120 DigitMapValue_sequence, hf_index, ett_h248_DigitMapValue);
3126 static const value_string h248_EventDM_vals[] = {
3127 { 0, "digitMapName" },
3128 { 1, "digitMapValue" },
3132 static const ber_choice_t EventDM_choice[] = {
3133 { 0, &hf_h248_digitMapName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapName },
3134 { 1, &hf_h248_digitMapValue , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapValue },
3135 { 0, NULL, 0, 0, 0, NULL }
3139 dissect_h248_EventDM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3140 offset = dissect_ber_choice(actx, tree, tvb, offset,
3141 EventDM_choice, hf_index, ett_h248_EventDM,
3149 static const value_string h248_SignalType_vals[] = {
3158 dissect_h248_SignalType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3159 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3166 static const asn_namedbit NotifyCompletion_bits[] = {
3167 { 0, &hf_h248_NotifyCompletion_onTimeOut, -1, -1, "onTimeOut", NULL },
3168 { 1, &hf_h248_NotifyCompletion_onInterruptByEvent, -1, -1, "onInterruptByEvent", NULL },
3169 { 2, &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr, -1, -1, "onInterruptByNewSignalDescr", NULL },
3170 { 3, &hf_h248_NotifyCompletion_otherReason, -1, -1, "otherReason", NULL },
3171 { 4, &hf_h248_NotifyCompletion_onIteration, -1, -1, "onIteration", NULL },
3172 { 0, NULL, 0, 0, NULL, NULL }
3176 dissect_h248_NotifyCompletion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3177 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3178 NotifyCompletion_bits, hf_index, ett_h248_NotifyCompletion,
3187 static const ber_sequence_t SigParamValues_sequence_of[1] = {
3188 { &hf_h248_SigParamValues_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_SigParamValue },
3192 dissect_h248_SigParamValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3193 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3194 SigParamValues_sequence_of, hf_index, ett_h248_SigParamValues);
3200 static const value_string h248_T_extraInfo_vals[] = {
3207 static const ber_choice_t T_extraInfo_choice[] = {
3208 { 0, &hf_h248_relation , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Relation },
3209 { 1, &hf_h248_range , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3210 { 2, &hf_h248_sublist , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3211 { 0, NULL, 0, 0, 0, NULL }
3215 dissect_h248_T_extraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3216 offset = dissect_ber_choice(actx, tree, tvb, offset,
3217 T_extraInfo_choice, hf_index, ett_h248_T_extraInfo,
3224 static const ber_sequence_t SigParameter_sequence[] = {
3225 { &hf_h248_sigParameterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SigParameterName },
3226 { &hf_h248_value , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SigParamValues },
3227 { &hf_h248_extraInfo , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_extraInfo },
3228 { NULL, 0, 0, 0, NULL }
3232 dissect_h248_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3233 #line 423 "../../asn1/h248/h248.cnf"
3234 /* H248 v1 support */
3235 if (h248_version > 1) {
3236 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3237 SigParameter_sequence, hf_index, ett_h248_SigParameter);
3240 offset = dissect_h248_SigParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
3248 static const ber_sequence_t SEQUENCE_OF_SigParameter_sequence_of[1] = {
3249 { &hf_h248_sigParList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_SigParameter },
3253 dissect_h248_SEQUENCE_OF_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3254 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3255 SEQUENCE_OF_SigParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SigParameter);
3261 static const value_string h248_SignalDirection_vals[] = {
3270 dissect_h248_SignalDirection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3271 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3278 static const ber_sequence_t Signal_sequence[] = {
3279 { &hf_h248_signalName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SignalName },
3280 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3281 { &hf_h248_sigType , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SignalType },
3282 { &hf_h248_duration , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
3283 { &hf_h248_notifyCompletion, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NotifyCompletion },
3284 { &hf_h248_keepActive , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3285 { &hf_h248_sigParList , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_SigParameter },
3286 { &hf_h248_direction , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SignalDirection },
3287 { &hf_h248_requestID , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
3288 { &hf_h248_intersigDelay , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
3289 { NULL, 0, 0, 0, NULL }
3293 dissect_h248_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3294 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3295 Signal_sequence, hf_index, ett_h248_Signal);
3301 static const ber_sequence_t SEQUENCE_OF_Signal_sequence_of[1] = {
3302 { &hf_h248_signalList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_Signal },
3306 dissect_h248_SEQUENCE_OF_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3307 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3308 SEQUENCE_OF_Signal_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Signal);
3314 static const ber_sequence_t SeqSigList_sequence[] = {
3315 { &hf_h248_id , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
3316 { &hf_h248_signalList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_Signal },
3317 { NULL, 0, 0, 0, NULL }
3321 dissect_h248_SeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3322 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3323 SeqSigList_sequence, hf_index, ett_h248_SeqSigList);
3329 static const value_string h248_SignalRequest_vals[] = {
3331 { 1, "seqSigList" },
3335 static const ber_choice_t SignalRequest_choice[] = {
3336 { 0, &hf_h248_signal , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Signal },
3337 { 1, &hf_h248_seqSigList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SeqSigList },
3338 { 0, NULL, 0, 0, 0, NULL }
3342 dissect_h248_SignalRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3343 offset = dissect_ber_choice(actx, tree, tvb, offset,
3344 SignalRequest_choice, hf_index, ett_h248_SignalRequest,
3351 static const ber_sequence_t SignalsDescriptor_sequence_of[1] = {
3352 { &hf_h248_SignalsDescriptor_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_SignalRequest },
3356 dissect_h248_SignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3357 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3358 SignalsDescriptor_sequence_of, hf_index, ett_h248_SignalsDescriptor);
3364 static const ber_sequence_t RegulatedEmbeddedDescriptor_sequence[] = {
3365 { &hf_h248_secondEvent , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SecondEventsDescriptor },
3366 { &hf_h248_signalsDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
3367 { NULL, 0, 0, 0, NULL }
3371 dissect_h248_RegulatedEmbeddedDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3372 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3373 RegulatedEmbeddedDescriptor_sequence, hf_index, ett_h248_RegulatedEmbeddedDescriptor);
3379 static const value_string h248_NotifyBehaviour_vals[] = {
3380 { 0, "notifyImmediate" },
3381 { 1, "notifyRegulated" },
3382 { 2, "neverNotify" },
3386 static const ber_choice_t NotifyBehaviour_choice[] = {
3387 { 0, &hf_h248_notifyImmediate, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3388 { 1, &hf_h248_notifyRegulated, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_RegulatedEmbeddedDescriptor },
3389 { 2, &hf_h248_neverNotify , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3390 { 0, NULL, 0, 0, 0, NULL }
3394 dissect_h248_NotifyBehaviour(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3395 offset = dissect_ber_choice(actx, tree, tvb, offset,
3396 NotifyBehaviour_choice, hf_index, ett_h248_NotifyBehaviour,
3403 static const ber_sequence_t SecondRequestedActions_sequence[] = {
3404 { &hf_h248_keepActive , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3405 { &hf_h248_eventDM , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_EventDM },
3406 { &hf_h248_signalsDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
3407 { &hf_h248_notifyBehaviour, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_NotifyBehaviour },
3408 { &hf_h248_resetEventsDescriptor, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3409 { NULL, 0, 0, 0, NULL }
3413 dissect_h248_SecondRequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3414 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3415 SecondRequestedActions_sequence, hf_index, ett_h248_SecondRequestedActions);
3423 static const ber_sequence_t EventParamValues_sequence_of[1] = {
3424 { &hf_h248_EventParamValues_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_EventParamValue },
3428 dissect_h248_EventParamValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3429 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3430 EventParamValues_sequence_of, hf_index, ett_h248_EventParamValues);
3436 static const value_string h248_EventPar_extraInfo_vals[] = {
3443 static const ber_choice_t EventPar_extraInfo_choice[] = {
3444 { 0, &hf_h248_relation , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Relation },
3445 { 1, &hf_h248_range , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3446 { 2, &hf_h248_sublist , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3447 { 0, NULL, 0, 0, 0, NULL }
3451 dissect_h248_EventPar_extraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3452 offset = dissect_ber_choice(actx, tree, tvb, offset,
3453 EventPar_extraInfo_choice, hf_index, ett_h248_EventPar_extraInfo,
3460 static const ber_sequence_t EventParameter_sequence[] = {
3461 { &hf_h248_eventParameterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventParameterName },
3462 { &hf_h248_eventParamValue, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_EventParamValues },
3463 { &hf_h248_eventPar_extraInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_EventPar_extraInfo },
3464 { NULL, 0, 0, 0, NULL }
3468 dissect_h248_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3469 #line 414 "../../asn1/h248/h248.cnf"
3470 /* H248 v1 support */
3471 if (h248_version > 1) {
3472 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3473 EventParameter_sequence, hf_index, ett_h248_EventParameter);
3476 offset = dissect_h248_EventParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
3484 static const ber_sequence_t SEQUENCE_OF_EventParameter_sequence_of[1] = {
3485 { &hf_h248_eventParList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_EventParameter },
3489 dissect_h248_SEQUENCE_OF_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3490 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3491 SEQUENCE_OF_EventParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_EventParameter);
3497 static const ber_sequence_t SecondRequestedEvent_sequence[] = {
3498 { &hf_h248_pkgdName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
3499 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3500 { &hf_h248_secondaryEventAction, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SecondRequestedActions },
3501 { &hf_h248_evParList , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_EventParameter },
3502 { NULL, 0, 0, 0, NULL }
3506 dissect_h248_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3507 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3508 SecondRequestedEvent_sequence, hf_index, ett_h248_SecondRequestedEvent);
3514 static const ber_sequence_t SEQUENCE_OF_SecondRequestedEvent_sequence_of[1] = {
3515 { &hf_h248_secondaryEventList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_SecondRequestedEvent },
3519 dissect_h248_SEQUENCE_OF_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3520 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3521 SEQUENCE_OF_SecondRequestedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SecondRequestedEvent);
3527 static const ber_sequence_t SecondEventsDescriptor_sequence[] = {
3528 { &hf_h248_requestID , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
3529 { &hf_h248_secondaryEventList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_SecondRequestedEvent },
3530 { NULL, 0, 0, 0, NULL }
3534 dissect_h248_SecondEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3535 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3536 SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor);
3542 static const ber_sequence_t RequestedActions_sequence[] = {
3543 { &hf_h248_keepActive , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
3544 { &hf_h248_eventDM , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_EventDM },
3545 { &hf_h248_secondEvent , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SecondEventsDescriptor },
3546 { &hf_h248_signalsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
3547 { &hf_h248_notifyBehaviour, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_NotifyBehaviour },
3548 { &hf_h248_resetEventsDescriptor, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3549 { NULL, 0, 0, 0, NULL }
3553 dissect_h248_RequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3554 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3555 RequestedActions_sequence, hf_index, ett_h248_RequestedActions);
3561 static const ber_sequence_t RequestedEvent_sequence[] = {
3562 { &hf_h248_eventName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventName },
3563 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3564 { &hf_h248_eventAction , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestedActions },
3565 { &hf_h248_evParList , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_EventParameter },
3566 { NULL, 0, 0, 0, NULL }
3570 dissect_h248_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3571 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3572 RequestedEvent_sequence, hf_index, ett_h248_RequestedEvent);
3578 static const ber_sequence_t SEQUENCE_OF_RequestedEvent_sequence_of[1] = {
3579 { &hf_h248_eventList_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_RequestedEvent },
3583 dissect_h248_SEQUENCE_OF_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3584 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3585 SEQUENCE_OF_RequestedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_RequestedEvent);
3591 static const ber_sequence_t EventsDescriptor_sequence[] = {
3592 { &hf_h248_requestID , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
3593 { &hf_h248_eventList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_RequestedEvent },
3594 { NULL, 0, 0, 0, NULL }
3598 dissect_h248_EventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3599 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3600 EventsDescriptor_sequence, hf_index, ett_h248_EventsDescriptor);
3606 static const ber_sequence_t EventSpec_sequence[] = {
3607 { &hf_h248_eventName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventName },
3608 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3609 { &hf_h248_eventParList , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_EventParameter },
3610 { NULL, 0, 0, 0, NULL }
3614 dissect_h248_EventSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3615 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3616 EventSpec_sequence, hf_index, ett_h248_EventSpec);
3622 static const ber_sequence_t EventBufferDescriptor_sequence_of[1] = {
3623 { &hf_h248_EventBufferDescriptor_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_EventSpec },
3627 dissect_h248_EventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3628 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3629 EventBufferDescriptor_sequence_of, hf_index, ett_h248_EventBufferDescriptor);
3635 static const ber_sequence_t DigitMapDescriptor_sequence[] = {
3636 { &hf_h248_digitMapName , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_DigitMapName },
3637 { &hf_h248_digitMapValue , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_DigitMapValue },
3638 { NULL, 0, 0, 0, NULL }
3642 dissect_h248_DigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3643 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3644 DigitMapDescriptor_sequence, hf_index, ett_h248_DigitMapDescriptor);
3650 static const asn_namedbit T_auditToken_bits[] = {
3651 { 0, &hf_h248_T_auditToken_muxToken, -1, -1, "muxToken", NULL },
3652 { 1, &hf_h248_T_auditToken_modemToken, -1, -1, "modemToken", NULL },
3653 { 2, &hf_h248_T_auditToken_mediaToken, -1, -1, "mediaToken", NULL },
3654 { 3, &hf_h248_T_auditToken_eventsToken, -1, -1, "eventsToken", NULL },
3655 { 4, &hf_h248_T_auditToken_signalsToken, -1, -1, "signalsToken", NULL },
3656 { 5, &hf_h248_T_auditToken_digitMapToken, -1, -1, "digitMapToken", NULL },
3657 { 6, &hf_h248_T_auditToken_statsToken, -1, -1, "statsToken", NULL },
3658 { 7, &hf_h248_T_auditToken_observedEventsToken, -1, -1, "observedEventsToken", NULL },
3659 { 8, &hf_h248_T_auditToken_packagesToken, -1, -1, "packagesToken", NULL },
3660 { 9, &hf_h248_T_auditToken_eventBufferToken, -1, -1, "eventBufferToken", NULL },
3661 { 0, NULL, 0, 0, NULL, NULL }
3665 dissect_h248_T_auditToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3666 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3667 T_auditToken_bits, hf_index, ett_h248_T_auditToken,
3674 static const ber_sequence_t IndAudTerminationStateDescriptor_sequence[] = {
3675 { &hf_h248_indAudPropertyParms, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_IndAudPropertyParm },
3676 { &hf_h248_eventBufferControl, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3677 { &hf_h248_iATSDServiceState, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3678 { &hf_h248_serviceStateSel, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ServiceState },
3679 { NULL, 0, 0, 0, NULL }
3683 dissect_h248_IndAudTerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3684 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3685 IndAudTerminationStateDescriptor_sequence, hf_index, ett_h248_IndAudTerminationStateDescriptor);
3691 static const ber_sequence_t IndAudLocalControlDescriptor_sequence[] = {
3692 { &hf_h248_iALCDStreamMode, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3693 { &hf_h248_iALCDReserveValue, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3694 { &hf_h248_iALCDReserveGroup, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
3695 { &hf_h248_indAudPropertyParms, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_IndAudPropertyParm },
3696 { &hf_h248_streamModeSel , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamMode },
3697 { NULL, 0, 0, 0, NULL }
3701 dissect_h248_IndAudLocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3702 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3703 IndAudLocalControlDescriptor_sequence, hf_index, ett_h248_IndAudLocalControlDescriptor);
3709 static const ber_sequence_t IndAudPropertyGroup_sequence_of[1] = {
3710 { &hf_h248_IndAudPropertyGroup_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_IndAudPropertyParm },
3714 dissect_h248_IndAudPropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3715 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3716 IndAudPropertyGroup_sequence_of, hf_index, ett_h248_IndAudPropertyGroup);
3722 static const ber_sequence_t IndAudLocalRemoteDescriptor_sequence[] = {
3723 { &hf_h248_propGroupID , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
3724 { &hf_h248_iAPropertyGroup, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IndAudPropertyGroup },
3725 { NULL, 0, 0, 0, NULL }
3729 dissect_h248_IndAudLocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3730 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3731 IndAudLocalRemoteDescriptor_sequence, hf_index, ett_h248_IndAudLocalRemoteDescriptor);
3737 static const ber_sequence_t IndAudStatisticsDescriptor_sequence[] = {
3738 { &hf_h248_iAStatName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
3739 { NULL, 0, 0, 0, NULL }
3743 dissect_h248_IndAudStatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3744 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3745 IndAudStatisticsDescriptor_sequence, hf_index, ett_h248_IndAudStatisticsDescriptor);
3751 static const ber_sequence_t IndAudStreamParms_sequence[] = {
3752 { &hf_h248_iASPLocalControlDescriptor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalControlDescriptor },
3753 { &hf_h248_iASPLocalDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalRemoteDescriptor },
3754 { &hf_h248_iASPRemoteDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalRemoteDescriptor },
3755 { &hf_h248_statisticsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudStatisticsDescriptor },
3756 { NULL, 0, 0, 0, NULL }
3760 dissect_h248_IndAudStreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3761 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3762 IndAudStreamParms_sequence, hf_index, ett_h248_IndAudStreamParms);
3768 static const ber_sequence_t IndAudStreamDescriptor_sequence[] = {
3769 { &hf_h248_streamID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3770 { &hf_h248_indAudStreamParms, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IndAudStreamParms },
3771 { NULL, 0, 0, 0, NULL }
3775 dissect_h248_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3776 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3777 IndAudStreamDescriptor_sequence, hf_index, ett_h248_IndAudStreamDescriptor);
3783 static const ber_sequence_t SEQUENCE_OF_IndAudStreamDescriptor_sequence_of[1] = {
3784 { &hf_h248_multiStream_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_IndAudStreamDescriptor },
3788 dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3789 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3790 SEQUENCE_OF_IndAudStreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAudStreamDescriptor);
3796 static const value_string h248_IndAudMediaDescriptorStreams_vals[] = {
3798 { 1, "multiStream" },
3802 static const ber_choice_t IndAudMediaDescriptorStreams_choice[] = {
3803 { 0, &hf_h248_oneStream , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IndAudStreamParms },
3804 { 1, &hf_h248_multiStream , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor },
3805 { 0, NULL, 0, 0, 0, NULL }
3809 dissect_h248_IndAudMediaDescriptorStreams(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3810 offset = dissect_ber_choice(actx, tree, tvb, offset,
3811 IndAudMediaDescriptorStreams_choice, hf_index, ett_h248_IndAudMediaDescriptorStreams,
3818 static const ber_sequence_t IndAudMediaDescriptor_sequence[] = {
3819 { &hf_h248_indAudTerminationStateDescriptor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudTerminationStateDescriptor },
3820 { &hf_h248_indAudMediaDescriptorStreams, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudMediaDescriptorStreams },
3821 { NULL, 0, 0, 0, NULL }
3825 dissect_h248_IndAudMediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3826 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3827 IndAudMediaDescriptor_sequence, hf_index, ett_h248_IndAudMediaDescriptor);
3833 static const ber_sequence_t IndAudEventsDescriptor_sequence[] = {
3834 { &hf_h248_requestID , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
3835 { &hf_h248_iAEDPkgdName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
3836 { &hf_h248_streamID , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3837 { NULL, 0, 0, 0, NULL }
3841 dissect_h248_IndAudEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3842 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3843 IndAudEventsDescriptor_sequence, hf_index, ett_h248_IndAudEventsDescriptor);
3849 static const ber_sequence_t IndAudEventBufferDescriptor_sequence[] = {
3850 { &hf_h248_iAEBDEventName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
3851 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3852 { NULL, 0, 0, 0, NULL }
3856 dissect_h248_IndAudEventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3857 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3858 IndAudEventBufferDescriptor_sequence, hf_index, ett_h248_IndAudEventBufferDescriptor);
3864 static const ber_sequence_t IndAudSignal_sequence[] = {
3865 { &hf_h248_iASignalName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
3866 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
3867 { &hf_h248_signalRequestID, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
3868 { NULL, 0, 0, 0, NULL }
3872 dissect_h248_IndAudSignal(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3873 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3874 IndAudSignal_sequence, hf_index, ett_h248_IndAudSignal);
3880 static const ber_sequence_t IndAudSeqSigList_sequence[] = {
3881 { &hf_h248_id , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
3882 { &hf_h248_iASignalList , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudSignal },
3883 { NULL, 0, 0, 0, NULL }
3887 dissect_h248_IndAudSeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3888 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3889 IndAudSeqSigList_sequence, hf_index, ett_h248_IndAudSeqSigList);
3895 static const value_string h248_IndAudSignalsDescriptor_vals[] = {
3897 { 1, "seqSigList" },
3901 static const ber_choice_t IndAudSignalsDescriptor_choice[] = {
3902 { 0, &hf_h248_indAudSignal , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IndAudSignal },
3903 { 1, &hf_h248_indAudSeqSigList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IndAudSeqSigList },
3904 { 0, NULL, 0, 0, 0, NULL }
3908 dissect_h248_IndAudSignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3909 offset = dissect_ber_choice(actx, tree, tvb, offset,
3910 IndAudSignalsDescriptor_choice, hf_index, ett_h248_IndAudSignalsDescriptor,
3917 static const ber_sequence_t IndAudDigitMapDescriptor_sequence[] = {
3918 { &hf_h248_digitMapName , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_DigitMapName },
3919 { NULL, 0, 0, 0, NULL }
3923 dissect_h248_IndAudDigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3924 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3925 IndAudDigitMapDescriptor_sequence, hf_index, ett_h248_IndAudDigitMapDescriptor);
3931 static const ber_sequence_t IndAudPackagesDescriptor_sequence[] = {
3932 { &hf_h248_packageName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Name },
3933 { &hf_h248_packageVersion , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
3934 { NULL, 0, 0, 0, NULL }
3938 dissect_h248_IndAudPackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3939 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3940 IndAudPackagesDescriptor_sequence, hf_index, ett_h248_IndAudPackagesDescriptor);
3946 static const value_string h248_IndAuditParameter_vals[] = {
3947 { 0, "indaudmediaDescriptor" },
3948 { 1, "indaudeventsDescriptor" },
3949 { 2, "indaudeventBufferDescriptor" },
3950 { 3, "indaudsignalsDescriptor" },
3951 { 4, "indauddigitMapDescriptor" },
3952 { 5, "indaudstatisticsDescriptor" },
3953 { 6, "indaudpackagesDescriptor" },
3957 static const ber_choice_t IndAuditParameter_choice[] = {
3958 { 0, &hf_h248_indaudmediaDescriptor, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IndAudMediaDescriptor },
3959 { 1, &hf_h248_indaudeventsDescriptor, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IndAudEventsDescriptor },
3960 { 2, &hf_h248_indaudeventBufferDescriptor, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_IndAudEventBufferDescriptor },
3961 { 3, &hf_h248_indaudsignalsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_IndAudSignalsDescriptor },
3962 { 4, &hf_h248_indauddigitMapDescriptor, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_IndAudDigitMapDescriptor },
3963 { 5, &hf_h248_indaudstatisticsDescriptor, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_IndAudStatisticsDescriptor },
3964 { 6, &hf_h248_indaudpackagesDescriptor, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_IndAudPackagesDescriptor },
3965 { 0, NULL, 0, 0, 0, NULL }
3969 dissect_h248_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3970 offset = dissect_ber_choice(actx, tree, tvb, offset,
3971 IndAuditParameter_choice, hf_index, ett_h248_IndAuditParameter,
3978 static const ber_sequence_t SEQUENCE_OF_IndAuditParameter_sequence_of[1] = {
3979 { &hf_h248_auditPropertyToken_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_IndAuditParameter },
3983 dissect_h248_SEQUENCE_OF_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3984 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3985 SEQUENCE_OF_IndAuditParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAuditParameter);
3991 static const ber_sequence_t AuditDescriptor_sequence[] = {
3992 { &hf_h248_auditToken , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_auditToken },
3993 { &hf_h248_auditPropertyToken, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_IndAuditParameter },
3994 { NULL, 0, 0, 0, NULL }
3998 dissect_h248_AuditDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3999 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4000 AuditDescriptor_sequence, hf_index, ett_h248_AuditDescriptor);
4006 static const value_string h248_AmmDescriptor_vals[] = {
4007 { 0, "mediaDescriptor" },
4008 { 1, "modemDescriptor" },
4009 { 2, "muxDescriptor" },
4010 { 3, "eventsDescriptor" },
4011 { 4, "eventBufferDescriptor" },
4012 { 5, "signalsDescriptor" },
4013 { 6, "digitMapDescriptor" },
4014 { 7, "auditDescriptor" },
4015 { 8, "statisticsDescriptor" },
4019 static const ber_choice_t AmmDescriptor_choice[] = {
4020 { 0, &hf_h248_mediaDescriptor, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_MediaDescriptor },
4021 { 1, &hf_h248_modemDescriptor, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ModemDescriptor },
4022 { 2, &hf_h248_muxDescriptor , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_MuxDescriptor },
4023 { 3, &hf_h248_eventsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_EventsDescriptor },
4024 { 4, &hf_h248_eventBufferDescriptor, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_EventBufferDescriptor },
4025 { 5, &hf_h248_signalsDescriptor, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
4026 { 6, &hf_h248_digitMapDescriptor, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapDescriptor },
4027 { 7, &hf_h248_auditDescriptor, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
4028 { 8, &hf_h248_aDstatisticsDescriptor, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
4029 { 0, NULL, 0, 0, 0, NULL }
4033 dissect_h248_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4034 offset = dissect_ber_choice(actx, tree, tvb, offset,
4035 AmmDescriptor_choice, hf_index, ett_h248_AmmDescriptor,
4042 static const ber_sequence_t SEQUENCE_OF_AmmDescriptor_sequence_of[1] = {
4043 { &hf_h248_descriptors_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_AmmDescriptor },
4047 dissect_h248_SEQUENCE_OF_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4048 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4049 SEQUENCE_OF_AmmDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_AmmDescriptor);
4055 static const ber_sequence_t AmmRequest_sequence[] = {
4056 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4057 { &hf_h248_descriptors , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_AmmDescriptor },
4058 { NULL, 0, 0, 0, NULL }
4062 dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4063 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4064 AmmRequest_sequence, hf_index, ett_h248_AmmRequest);
4072 dissect_h248_T_addReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4073 #line 153 "../../asn1/h248/h248.cnf"
4074 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REQ,offset,keep_persistent_data);
4077 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4079 #line 158 "../../asn1/h248/h248.cnf"
4080 curr_info.cmd = NULL;
4088 dissect_h248_T_moveReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4089 #line 162 "../../asn1/h248/h248.cnf"
4090 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REQ,offset,keep_persistent_data);
4094 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4096 #line 168 "../../asn1/h248/h248.cnf"
4097 curr_info.cmd = NULL;
4105 dissect_h248_T_modReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4106 #line 172 "../../asn1/h248/h248.cnf"
4107 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REQ,offset,keep_persistent_data);
4110 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4112 #line 176 "../../asn1/h248/h248.cnf"
4113 curr_info.cmd = NULL;
4119 static const ber_sequence_t SubtractRequest_sequence[] = {
4120 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4121 { &hf_h248_auditDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
4122 { NULL, 0, 0, 0, NULL }
4126 dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4127 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4128 SubtractRequest_sequence, hf_index, ett_h248_SubtractRequest);
4136 dissect_h248_T_subtractReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4137 #line 180 "../../asn1/h248/h248.cnf"
4138 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REQ,offset,keep_persistent_data);
4141 offset = dissect_h248_SubtractRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4143 #line 184 "../../asn1/h248/h248.cnf"
4144 curr_info.cmd = NULL;
4150 static const ber_sequence_t AuditRequest_sequence[] = {
4151 { &hf_h248_terminationID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
4152 { &hf_h248_auditDescriptor, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
4153 { &hf_h248_terminationIDList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4154 { NULL, 0, 0, 0, NULL }
4158 dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4159 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4160 AuditRequest_sequence, hf_index, ett_h248_AuditRequest);
4168 dissect_h248_T_auditCapRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4169 #line 188 "../../asn1/h248/h248.cnf"
4170 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REQ,offset,keep_persistent_data);
4173 offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4175 #line 192 "../../asn1/h248/h248.cnf"
4176 curr_info.cmd = NULL;
4184 dissect_h248_T_auditValueRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4185 #line 196 "../../asn1/h248/h248.cnf"
4186 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REQ,offset,keep_persistent_data);
4189 offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4191 #line 200 "../../asn1/h248/h248.cnf"
4192 curr_info.cmd = NULL;
4198 static const ber_sequence_t TimeNotation_sequence[] = {
4199 { &hf_h248_date , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IA5String_SIZE_8 },
4200 { &hf_h248_time , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IA5String_SIZE_8 },
4201 { NULL, 0, 0, 0, NULL }
4205 dissect_h248_TimeNotation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4206 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4207 TimeNotation_sequence, hf_index, ett_h248_TimeNotation);
4213 static const ber_sequence_t ObservedEvent_sequence[] = {
4214 { &hf_h248_eventName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventName },
4215 { &hf_h248_streamID , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamID },
4216 { &hf_h248_eventParList , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_EventParameter },
4217 { &hf_h248_timeNotation , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TimeNotation },
4218 { NULL, 0, 0, 0, NULL }
4222 dissect_h248_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4223 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4224 ObservedEvent_sequence, hf_index, ett_h248_ObservedEvent);
4230 static const ber_sequence_t SEQUENCE_OF_ObservedEvent_sequence_of[1] = {
4231 { &hf_h248_observedEventLst_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_ObservedEvent },
4235 dissect_h248_SEQUENCE_OF_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4236 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4237 SEQUENCE_OF_ObservedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ObservedEvent);
4243 static const ber_sequence_t ObservedEventsDescriptor_sequence[] = {
4244 { &hf_h248_requestId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_RequestID },
4245 { &hf_h248_observedEventLst, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_ObservedEvent },
4246 { NULL, 0, 0, 0, NULL }
4250 dissect_h248_ObservedEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4251 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4252 ObservedEventsDescriptor_sequence, hf_index, ett_h248_ObservedEventsDescriptor);
4258 static const ber_sequence_t NotifyRequest_sequence[] = {
4259 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4260 { &hf_h248_observedEventsDescriptor, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ObservedEventsDescriptor },
4261 { &hf_h248_errorDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
4262 { NULL, 0, 0, 0, NULL }
4266 dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4267 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4268 NotifyRequest_sequence, hf_index, ett_h248_NotifyRequest);
4276 dissect_h248_T_notifyReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4277 #line 204 "../../asn1/h248/h248.cnf"
4278 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REQ,offset,keep_persistent_data);
4281 offset = dissect_h248_NotifyRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
4283 #line 208 "../../asn1/h248/h248.cnf"
4284 curr_info.cmd = NULL;
4290 static const value_string h248_ServiceChangeMethod_vals[] = {
4295 { 4, "disconnected" },
4302 dissect_h248_ServiceChangeMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4303 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4310 static const value_string h248_ServiceChangeAddress_vals[] = {
4311 { 0, "portNumber" },
4312 { 1, "ip4Address" },
4313 { 2, "ip6Address" },
4314 { 3, "domainName" },
4315 { 4, "deviceName" },
4316 { 5, "mtpAddress" },
4320 static const ber_choice_t ServiceChangeAddress_choice[] = {
4321 { 0, &hf_h248_portNumber , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_65535 },
4322 { 1, &hf_h248_ip4Address , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_IP4Address },
4323 { 2, &hf_h248_ip6Address , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_IP6Address },
4324 { 3, &hf_h248_domainName , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_DomainName },
4325 { 4, &hf_h248_deviceName , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_PathName },
4326 { 5, &hf_h248_mtpAddress , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_MtpAddress },
4327 { 0, NULL, 0, 0, 0, NULL }
4331 dissect_h248_ServiceChangeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4332 offset = dissect_ber_choice(actx, tree, tvb, offset,
4333 ServiceChangeAddress_choice, hf_index, ett_h248_ServiceChangeAddress,
4342 dissect_h248_IA5String_SIZE_1_67(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4343 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
4344 actx, tree, tvb, offset, hf_index,
4351 static const ber_sequence_t ServiceChangeProfile_sequence[] = {
4352 { &hf_h248_profileName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_IA5String_SIZE_1_67 },
4353 { NULL, 0, 0, 0, NULL }
4357 dissect_h248_ServiceChangeProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4358 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4359 ServiceChangeProfile_sequence, hf_index, ett_h248_ServiceChangeProfile);
4367 dissect_h248_SCreasonValueOctetStr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4368 #line 373 "../../asn1/h248/h248.cnf"
4369 tvbuff_t *parameter_tvb;
4370 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
4377 dissect_h248_ServiceChangeReasonStr(FALSE, parameter_tvb, 0, actx, tree, hf_h248_serviceChangeReasonStr);
4384 static const ber_sequence_t SCreasonValue_sequence_of[1] = {
4385 { &hf_h248_SCreasonValue_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_SCreasonValueOctetStr },
4389 dissect_h248_SCreasonValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4390 #line 361 "../../asn1/h248/h248.cnf"
4391 /* H248 v1 support */
4392 if ( h248_version > 1 ) {
4393 /* Not V1, so call "standard" function */
4394 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4395 SCreasonValue_sequence_of, hf_index, ett_h248_SCreasonValue);
4398 /* V1 so Value == octet string */
4399 offset = dissect_h248_ValueV1( implicit_tag, tvb, offset, actx, tree, hf_index);
4410 dissect_h248_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4411 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4418 static const ber_sequence_t ServiceChangeParm_sequence[] = {
4419 { &hf_h248_serviceChangeMethod, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeMethod },
4420 { &hf_h248_serviceChangeAddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_ServiceChangeAddress },
4421 { &hf_h248_serviceChangeVersion, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
4422 { &hf_h248_serviceChangeProfile, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeProfile },
4423 { &hf_h248_serviceChangeReason, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_SCreasonValue },
4424 { &hf_h248_serviceChangeDelay, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_4294967295 },
4425 { &hf_h248_serviceChangeMgcId, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_MId },
4426 { &hf_h248_timeStamp , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TimeNotation },
4427 { &hf_h248_nonStandardData, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NonStandardData },
4428 { &hf_h248_serviceChangeInfo, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
4429 { &hf_h248_serviceChangeIncompleteFlag, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
4430 { NULL, 0, 0, 0, NULL }
4434 dissect_h248_ServiceChangeParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4435 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4436 ServiceChangeParm_sequence, hf_index, ett_h248_ServiceChangeParm);
4442 static const ber_sequence_t ServiceChangeRequest_sequence[] = {
4443 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4444 { &hf_h248_serviceChangeParms, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeParm },
4445 { NULL, 0, 0, 0, NULL }
4449 dissect_h248_ServiceChangeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4450 #line 212 "../../asn1/h248/h248.cnf"
4451 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REQ,offset,keep_persistent_data);
4454 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4455 ServiceChangeRequest_sequence, hf_index, ett_h248_ServiceChangeRequest);
4457 #line 216 "../../asn1/h248/h248.cnf"
4458 curr_info.cmd = NULL;
4464 static const value_string h248_Command_vals[] = {
4468 { 3, "subtractReq" },
4469 { 4, "auditCapRequest" },
4470 { 5, "auditValueRequest" },
4472 { 7, "serviceChangeReq" },
4476 static const ber_choice_t Command_choice[] = {
4477 { 0, &hf_h248_addReq , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_addReq },
4478 { 1, &hf_h248_moveReq , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_T_moveReq },
4479 { 2, &hf_h248_modReq , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_T_modReq },
4480 { 3, &hf_h248_subtractReq , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_T_subtractReq },
4481 { 4, &hf_h248_auditCapRequest, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_T_auditCapRequest },
4482 { 5, &hf_h248_auditValueRequest, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_T_auditValueRequest },
4483 { 6, &hf_h248_notifyReq , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_T_notifyReq },
4484 { 7, &hf_h248_serviceChangeReq, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeRequest },
4485 { 0, NULL, 0, 0, 0, NULL }
4489 dissect_h248_Command(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4490 offset = dissect_ber_choice(actx, tree, tvb, offset,
4491 Command_choice, hf_index, ett_h248_Command,
4498 static const ber_sequence_t CommandRequest_sequence[] = {
4499 { &hf_h248_command , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_Command },
4500 { &hf_h248_optional , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
4501 { &hf_h248_wildcardReturn , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
4502 { NULL, 0, 0, 0, NULL }
4506 dissect_h248_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4507 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4508 CommandRequest_sequence, hf_index, ett_h248_CommandRequest);
4514 static const ber_sequence_t SEQUENCE_OF_CommandRequest_sequence_of[1] = {
4515 { &hf_h248_commandRequests_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_CommandRequest },
4519 dissect_h248_SEQUENCE_OF_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4520 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4521 SEQUENCE_OF_CommandRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandRequest);
4527 static const ber_sequence_t ActionRequest_sequence[] = {
4528 { &hf_h248_contextId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ContextId },
4529 { &hf_h248_contextRequest , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ContextRequest },
4530 { &hf_h248_contextAttrAuditReq, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_contextAttrAuditReq },
4531 { &hf_h248_commandRequests, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_CommandRequest },
4532 { NULL, 0, 0, 0, NULL }
4536 dissect_h248_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4537 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4538 ActionRequest_sequence, hf_index, ett_h248_ActionRequest);
4544 static const ber_sequence_t SEQUENCE_OF_ActionRequest_sequence_of[1] = {
4545 { &hf_h248_actions_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_ActionRequest },
4549 dissect_h248_SEQUENCE_OF_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4550 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4551 SEQUENCE_OF_ActionRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionRequest);
4557 static const ber_sequence_t TransactionRequest_sequence[] = {
4558 { &hf_h248_transactionId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_transactionId },
4559 { &hf_h248_actions , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_ActionRequest },
4560 { NULL, 0, 0, 0, NULL }
4564 dissect_h248_TransactionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4565 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4566 TransactionRequest_sequence, hf_index, ett_h248_TransactionRequest);
4574 dissect_h248_T_tpend_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4575 #line 119 "../../asn1/h248/h248.cnf"
4577 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
4578 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_PENDING, keep_persistent_data);
4587 static const ber_sequence_t TransactionPending_sequence[] = {
4588 { &hf_h248_tpend_transactionId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_tpend_transactionId },
4589 { NULL, 0, 0, 0, NULL }
4593 dissect_h248_TransactionPending(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4594 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4595 TransactionPending_sequence, hf_index, ett_h248_TransactionPending);
4603 dissect_h248_T_trep_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4604 #line 125 "../../asn1/h248/h248.cnf"
4606 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
4607 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REPLY, keep_persistent_data);
4616 static const ber_sequence_t PackagesItem_sequence[] = {
4617 { &hf_h248_packageName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Name },
4618 { &hf_h248_packageVersion , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
4619 { NULL, 0, 0, 0, NULL }
4623 dissect_h248_PackagesItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4624 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4625 PackagesItem_sequence, hf_index, ett_h248_PackagesItem);
4631 static const ber_sequence_t PackagesDescriptor_sequence_of[1] = {
4632 { &hf_h248_PackagesDescriptor_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_PackagesItem },
4636 dissect_h248_PackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4637 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4638 PackagesDescriptor_sequence_of, hf_index, ett_h248_PackagesDescriptor);
4644 static const value_string h248_AuditReturnParameter_vals[] = {
4645 { 0, "errorDescriptor" },
4646 { 1, "mediaDescriptor" },
4647 { 2, "modemDescriptor" },
4648 { 3, "muxDescriptor" },
4649 { 4, "eventsDescriptor" },
4650 { 5, "eventBufferDescriptor" },
4651 { 6, "signalsDescriptor" },
4652 { 7, "digitMapDescriptor" },
4653 { 8, "observedEventsDescriptor" },
4654 { 9, "statisticsDescriptor" },
4655 { 10, "packagesDescriptor" },
4656 { 11, "emptyDescriptors" },
4660 static const ber_choice_t AuditReturnParameter_choice[] = {
4661 { 0, &hf_h248_errorDescriptor, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
4662 { 1, &hf_h248_mediaDescriptor, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_MediaDescriptor },
4663 { 2, &hf_h248_modemDescriptor, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_ModemDescriptor },
4664 { 3, &hf_h248_muxDescriptor , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_MuxDescriptor },
4665 { 4, &hf_h248_eventsDescriptor, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_EventsDescriptor },
4666 { 5, &hf_h248_eventBufferDescriptor, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_EventBufferDescriptor },
4667 { 6, &hf_h248_signalsDescriptor, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
4668 { 7, &hf_h248_digitMapDescriptor, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapDescriptor },
4669 { 8, &hf_h248_observedEventsDescriptor, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_h248_ObservedEventsDescriptor },
4670 { 9, &hf_h248_aRPstatisticsDescriptor, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
4671 { 10, &hf_h248_packagesDescriptor, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_h248_PackagesDescriptor },
4672 { 11, &hf_h248_emptyDescriptors, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
4673 { 0, NULL, 0, 0, 0, NULL }
4677 dissect_h248_AuditReturnParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4678 offset = dissect_ber_choice(actx, tree, tvb, offset,
4679 AuditReturnParameter_choice, hf_index, ett_h248_AuditReturnParameter,
4686 static const ber_sequence_t TerminationAudit_sequence_of[1] = {
4687 { &hf_h248_TerminationAudit_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_AuditReturnParameter },
4691 dissect_h248_TerminationAudit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4692 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4693 TerminationAudit_sequence_of, hf_index, ett_h248_TerminationAudit);
4699 static const ber_sequence_t AmmsReply_sequence[] = {
4700 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4701 { &hf_h248_terminationAudit, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TerminationAudit },
4702 { NULL, 0, 0, 0, NULL }
4706 dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4707 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4708 AmmsReply_sequence, hf_index, ett_h248_AmmsReply);
4716 dissect_h248_T_addReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4717 #line 236 "../../asn1/h248/h248.cnf"
4718 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REPLY,offset,keep_persistent_data);
4721 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4729 dissect_h248_T_moveReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4730 #line 241 "../../asn1/h248/h248.cnf"
4731 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REPLY,offset,keep_persistent_data);
4734 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4742 dissect_h248_T_modReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4743 #line 246 "../../asn1/h248/h248.cnf"
4744 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REPLY,offset,keep_persistent_data);
4747 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4755 dissect_h248_T_subtractReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4756 #line 251 "../../asn1/h248/h248.cnf"
4757 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REPLY,offset,keep_persistent_data);
4760 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4766 static const ber_sequence_t AuditResult_sequence[] = {
4767 { &hf_h248_terminationID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
4768 { &hf_h248_terminationAuditResult, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_TerminationAudit },
4769 { NULL, 0, 0, 0, NULL }
4773 dissect_h248_AuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4774 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4775 AuditResult_sequence, hf_index, ett_h248_AuditResult);
4781 static const ber_sequence_t TermListAuditResult_sequence[] = {
4782 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4783 { &hf_h248_terminationAuditResult, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_TerminationAudit },
4784 { NULL, 0, 0, 0, NULL }
4788 dissect_h248_TermListAuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4789 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4790 TermListAuditResult_sequence, hf_index, ett_h248_TermListAuditResult);
4796 static const value_string h248_AuditReply_vals[] = {
4797 { 0, "contextAuditResult" },
4799 { 2, "auditResult" },
4800 { 3, "auditResultTermList" },
4804 static const ber_choice_t AuditReply_choice[] = {
4805 { 0, &hf_h248_contextAuditResult, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4806 { 1, &hf_h248_error , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
4807 { 2, &hf_h248_auditResult , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_AuditResult },
4808 { 3, &hf_h248_auditResultTermList, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_TermListAuditResult },
4809 { 0, NULL, 0, 0, 0, NULL }
4813 dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4814 offset = dissect_ber_choice(actx, tree, tvb, offset,
4815 AuditReply_choice, hf_index, ett_h248_AuditReply,
4824 dissect_h248_T_auditCapReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4825 #line 266 "../../asn1/h248/h248.cnf"
4826 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REPLY,offset,keep_persistent_data);
4829 #line 271 "../../asn1/h248/h248.cnf"
4830 /* h248v1 support */
4831 if(h248_version > 1) {
4832 offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4835 /* call V1 of the dissector */
4836 offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
4846 dissect_h248_T_auditValueReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4847 #line 281 "../../asn1/h248/h248.cnf"
4848 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REPLY,offset,keep_persistent_data);
4851 #line 286 "../../asn1/h248/h248.cnf"
4852 /* h248v1 support */
4853 if(h248_version > 1) {
4854 offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4857 /* call V1 of the dissector */
4858 offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
4866 static const ber_sequence_t NotifyReply_sequence[] = {
4867 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4868 { &hf_h248_errorDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
4869 { NULL, 0, 0, 0, NULL }
4873 dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4874 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4875 NotifyReply_sequence, hf_index, ett_h248_NotifyReply);
4883 dissect_h248_T_notifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4884 #line 256 "../../asn1/h248/h248.cnf"
4885 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REPLY,offset,keep_persistent_data);
4888 offset = dissect_h248_NotifyReply(implicit_tag, tvb, offset, actx, tree, hf_index);
4894 static const ber_sequence_t ServiceChangeResParm_sequence[] = {
4895 { &hf_h248_serviceChangeMgcId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_MId },
4896 { &hf_h248_serviceChangeAddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_ServiceChangeAddress },
4897 { &hf_h248_serviceChangeVersion, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_INTEGER_0_99 },
4898 { &hf_h248_serviceChangeProfile, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeProfile },
4899 { &hf_h248_timestamp , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TimeNotation },
4900 { NULL, 0, 0, 0, NULL }
4904 dissect_h248_ServiceChangeResParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4905 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4906 ServiceChangeResParm_sequence, hf_index, ett_h248_ServiceChangeResParm);
4912 static const value_string h248_ServiceChangeResult_vals[] = {
4913 { 0, "errorDescriptor" },
4914 { 1, "serviceChangeResParms" },
4918 static const ber_choice_t ServiceChangeResult_choice[] = {
4919 { 0, &hf_h248_errorDescriptor, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
4920 { 1, &hf_h248_serviceChangeResParms, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeResParm },
4921 { 0, NULL, 0, 0, 0, NULL }
4925 dissect_h248_ServiceChangeResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4926 offset = dissect_ber_choice(actx, tree, tvb, offset,
4927 ServiceChangeResult_choice, hf_index, ett_h248_ServiceChangeResult,
4934 static const ber_sequence_t ServiceChangeReply_sequence[] = {
4935 { &hf_h248_terminationIDList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationIDList },
4936 { &hf_h248_serviceChangeResult, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_ServiceChangeResult },
4937 { NULL, 0, 0, 0, NULL }
4941 dissect_h248_ServiceChangeReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4942 #line 261 "../../asn1/h248/h248.cnf"
4943 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REPLY,offset,keep_persistent_data);
4946 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4947 ServiceChangeReply_sequence, hf_index, ett_h248_ServiceChangeReply);
4953 static const value_string h248_CommandReply_vals[] = {
4957 { 3, "subtractReply" },
4958 { 4, "auditCapReply" },
4959 { 5, "auditValueReply" },
4960 { 6, "notifyReply" },
4961 { 7, "serviceChangeReply" },
4965 static const ber_choice_t CommandReply_choice[] = {
4966 { 0, &hf_h248_addReply , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_addReply },
4967 { 1, &hf_h248_moveReply , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_T_moveReply },
4968 { 2, &hf_h248_modReply , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_T_modReply },
4969 { 3, &hf_h248_subtractReply , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_T_subtractReply },
4970 { 4, &hf_h248_auditCapReply , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_T_auditCapReply },
4971 { 5, &hf_h248_auditValueReply, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_T_auditValueReply },
4972 { 6, &hf_h248_notifyReply , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_T_notifyReply },
4973 { 7, &hf_h248_serviceChangeReply, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_ServiceChangeReply },
4974 { 0, NULL, 0, 0, 0, NULL }
4978 dissect_h248_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4979 offset = dissect_ber_choice(actx, tree, tvb, offset,
4980 CommandReply_choice, hf_index, ett_h248_CommandReply,
4987 static const ber_sequence_t SEQUENCE_OF_CommandReply_sequence_of[1] = {
4988 { &hf_h248_commandReply_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_CommandReply },
4992 dissect_h248_SEQUENCE_OF_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4993 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4994 SEQUENCE_OF_CommandReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandReply);
5000 static const ber_sequence_t ActionReply_sequence[] = {
5001 { &hf_h248_contextId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ContextId },
5002 { &hf_h248_errorDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
5003 { &hf_h248_contextReply , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ContextRequest },
5004 { &hf_h248_commandReply , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_CommandReply },
5005 { NULL, 0, 0, 0, NULL }
5009 dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5010 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5011 ActionReply_sequence, hf_index, ett_h248_ActionReply);
5013 #line 146 "../../asn1/h248/h248.cnf"
5014 if (!curr_info.cmd) {
5015 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_REPLY,offset,keep_persistent_data);
5023 static const ber_sequence_t SEQUENCE_OF_ActionReply_sequence_of[1] = {
5024 { &hf_h248_actionReplies_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_ActionReply },
5028 dissect_h248_SEQUENCE_OF_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5029 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5030 SEQUENCE_OF_ActionReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionReply);
5036 static const value_string h248_T_transactionResult_vals[] = {
5037 { 0, "transactionError" },
5038 { 1, "actionReplies" },
5042 static const ber_choice_t T_transactionResult_choice[] = {
5043 { 0, &hf_h248_transactionError, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
5044 { 1, &hf_h248_actionReplies , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_ActionReply },
5045 { 0, NULL, 0, 0, 0, NULL }
5049 dissect_h248_T_transactionResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5050 offset = dissect_ber_choice(actx, tree, tvb, offset,
5051 T_transactionResult_choice, hf_index, ett_h248_T_transactionResult,
5060 dissect_h248_SegmentNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5061 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5068 static const ber_sequence_t TransactionReply_sequence[] = {
5069 { &hf_h248_trep_transactionId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_trep_transactionId },
5070 { &hf_h248_immAckRequired , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
5071 { &hf_h248_transactionResult, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_T_transactionResult },
5072 { &hf_h248_segmentNumber , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_SegmentNumber },
5073 { &hf_h248_segmentationComplete, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
5074 { NULL, 0, 0, 0, NULL }
5078 dissect_h248_TransactionReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5079 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5080 TransactionReply_sequence, hf_index, ett_h248_TransactionReply);
5086 static const ber_sequence_t TransactionAck_sequence[] = {
5087 { &hf_h248_firstAck , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TransactionId },
5088 { &hf_h248_lastAck , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_TransactionId },
5089 { NULL, 0, 0, 0, NULL }
5093 dissect_h248_TransactionAck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5094 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5095 TransactionAck_sequence, hf_index, ett_h248_TransactionAck);
5101 static const ber_sequence_t TransactionResponseAck_sequence_of[1] = {
5102 { &hf_h248_TransactionResponseAck_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_h248_TransactionAck },
5106 dissect_h248_TransactionResponseAck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5107 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5108 TransactionResponseAck_sequence_of, hf_index, ett_h248_TransactionResponseAck);
5116 dissect_h248_T_seg_rep_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5117 #line 131 "../../asn1/h248/h248.cnf"
5119 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
5120 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_ACK, keep_persistent_data);
5129 static const ber_sequence_t SegmentReply_sequence[] = {
5130 { &hf_h248_seg_rep_transactionId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_seg_rep_transactionId },
5131 { &hf_h248_segmentNumber , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SegmentNumber },
5132 { &hf_h248_segmentationComplete, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_NULL },
5133 { NULL, 0, 0, 0, NULL }
5137 dissect_h248_SegmentReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5138 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5139 SegmentReply_sequence, hf_index, ett_h248_SegmentReply);
5145 static const value_string h248_Transaction_vals[] = {
5146 { 0, "transactionRequest" },
5147 { 1, "transactionPending" },
5148 { 2, "transactionReply" },
5149 { 3, "transactionResponseAck" },
5150 { 4, "segmentReply" },
5154 static const ber_choice_t Transaction_choice[] = {
5155 { 0, &hf_h248_transactionRequest, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TransactionRequest },
5156 { 1, &hf_h248_transactionPending, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_TransactionPending },
5157 { 2, &hf_h248_transactionReply, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_TransactionReply },
5158 { 3, &hf_h248_transactionResponseAck, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_TransactionResponseAck },
5159 { 4, &hf_h248_segmentReply , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_h248_SegmentReply },
5160 { 0, NULL, 0, 0, 0, NULL }
5164 dissect_h248_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5165 offset = dissect_ber_choice(actx, tree, tvb, offset,
5166 Transaction_choice, hf_index, ett_h248_Transaction,
5173 static const ber_sequence_t SEQUENCE_OF_Transaction_sequence_of[1] = {
5174 { &hf_h248_transactions_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_Transaction },
5178 dissect_h248_SEQUENCE_OF_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5179 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5180 SEQUENCE_OF_Transaction_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Transaction);
5186 static const value_string h248_T_messageBody_vals[] = {
5187 { 0, "messageError" },
5188 { 1, "transactions" },
5192 static const ber_choice_t T_messageBody_choice[] = {
5193 { 0, &hf_h248_messageError , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_ErrorDescriptor },
5194 { 1, &hf_h248_transactions , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_Transaction },
5195 { 0, NULL, 0, 0, 0, NULL }
5199 dissect_h248_T_messageBody(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5200 offset = dissect_ber_choice(actx, tree, tvb, offset,
5201 T_messageBody_choice, hf_index, ett_h248_T_messageBody,
5208 static const ber_sequence_t Message_sequence[] = {
5209 { &hf_h248_version , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_T_version },
5210 { &hf_h248_mId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_MId },
5211 { &hf_h248_messageBody , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_T_messageBody },
5212 { NULL, 0, 0, 0, NULL }
5216 dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5217 #line 97 "../../asn1/h248/h248.cnf"
5218 curr_info.msg = gcp_msg(actx->pinfo,tvb_raw_offset(tvb),keep_persistent_data);
5220 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5221 Message_sequence, hf_index, ett_h248_Message);
5223 #line 101 "../../asn1/h248/h248.cnf"
5224 col_add_str(actx->pinfo->cinfo, COL_INFO, gcp_msg_to_str(curr_info.msg,keep_persistent_data));
5226 if (keep_persistent_data)
5227 gcp_analyze_msg(h248_tree, h248_tvb, curr_info.msg, &h248_arrel);
5233 static const ber_sequence_t MegacoMessage_sequence[] = {
5234 { &hf_h248_authHeader , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_AuthenticationHeader },
5235 { &hf_h248_mess , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_Message },
5236 { NULL, 0, 0, 0, NULL }
5240 dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5241 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5242 MegacoMessage_sequence, hf_index, ett_h248_MegacoMessage);
5250 dissect_h248_ServiceChangeReasonStr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5251 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
5252 actx, tree, tvb, offset, hf_index,
5259 static const value_string h248_AuditResultV1_vals[] = {
5260 { 0, "contectAuditResult" },
5261 { 1, "terminationAuditResult" },
5265 static const ber_choice_t AuditResultV1_choice[] = {
5266 { 0, &hf_h248_contectAuditResult, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
5267 { 1, &hf_h248_terminationAuditResult, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_TerminationAudit },
5268 { 0, NULL, 0, 0, 0, NULL }
5272 dissect_h248_AuditResultV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5273 offset = dissect_ber_choice(actx, tree, tvb, offset,
5274 AuditResultV1_choice, hf_index, ett_h248_AuditResultV1,
5281 static const ber_sequence_t AuditReplyV1_sequence[] = {
5282 { &hf_h248_terminationID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
5283 { &hf_h248_audit_result , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_AuditResultV1 },
5284 { NULL, 0, 0, 0, NULL }
5288 dissect_h248_AuditReplyV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5289 #line 296 "../../asn1/h248/h248.cnf"
5290 /* h248v1 support */
5291 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5292 AuditReplyV1_sequence, hf_h248_auditValueReplyV1, ett_h248_AuditReplyV1);
5300 static const ber_sequence_t EventParameterV1_sequence[] = {
5301 { &hf_h248_eventParamterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventParameterName },
5302 { &hf_h248_event_param_value, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_EventParamValueV1 },
5303 { NULL, 0, 0, 0, NULL }
5307 dissect_h248_EventParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5308 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5309 EventParameterV1_sequence, hf_index, ett_h248_EventParameterV1);
5316 static const ber_sequence_t SigParameterV1_sequence[] = {
5317 { &hf_h248_sigParameterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SigParameterName },
5318 { &hf_h248_sig_param_value, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SigParamValueV1 },
5319 { NULL, 0, 0, 0, NULL }
5323 dissect_h248_SigParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5324 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5325 SigParameterV1_sequence, hf_index, ett_h248_SigParameterV1);
5333 dissect_h248_ValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5334 #line 383 "../../asn1/h248/h248.cnf"
5338 #line 388 "../../asn1/h248/h248.cnf"
5339 /* check tvb to verify all values ascii or not. If so, output string, else hex */
5340 len=tvb_length_remaining(tvb, offset);
5341 if ( curr_info.par && curr_info.par->dissector) {
5342 curr_info.par->dissector(tree, /*next_*/tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
5344 /* if no registered dissector create output */
5345 for( i=0;i<len;i++) {
5346 if(!isascii(tvb_get_guint8(tvb, offset+i)) || tvb_get_guint8(tvb, offset+i) == 0) {
5347 /* not ascii or NULL character so do string as hex string */
5348 proto_tree_add_text(tree, tvb, offset, len,"%s: 0x%s",
5349 (proto_registrar_get_nth(hf_index))->name,
5350 tvb_bytes_to_str(tvb, 0, len));
5354 /* if here, then string is ascii */
5355 proto_tree_add_text(tree, tvb, offset, len,"%s: %s",
5356 (proto_registrar_get_nth(hf_index))->name,
5357 tvb_format_text(tvb, 0, len));
5367 /*--- End of included file: packet-h248-fn.c ---*/
5368 #line 1408 "../../asn1/h248/packet-h248-template.c"
5370 static void dissect_h248_tpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
5371 dissect_tpkt_encap(tvb, pinfo, tree, h248_desegment, h248_handle);
5375 dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
5377 proto_item *h248_item;
5378 asn1_ctx_t asn1_ctx;
5382 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
5384 curr_info.msg = NULL;
5385 curr_info.trx = NULL;
5386 curr_info.ctx = NULL;
5387 curr_info.cmd = NULL;
5388 curr_info.term = NULL;
5389 curr_info.pkg = NULL;
5390 curr_info.evt = NULL;
5391 curr_info.sig = NULL;
5392 curr_info.stat = NULL;
5393 curr_info.par = NULL;
5395 /* Check if it is actually a text-based H.248 encoding, which we
5396 dissect with the "megaco" dissector in Wireshark. (Both
5397 encodings are MEGACO (RFC 3015) and both are H.248.)
5399 if(tvb_length(tvb)>=6){
5400 if(!tvb_strneql(tvb, 0, "MEGACO", 6)){
5401 static dissector_handle_t megaco_handle=NULL;
5403 megaco_handle = find_dissector("megaco");
5406 call_dissector(megaco_handle, tvb, pinfo, tree);
5411 proto_item *hidden_item = NULL;
5412 guint32 magic_num = 0, offset = 0;
5413 magic_num = tvb_get_ntohl(tvb, offset);
5414 hidden_item = proto_tree_add_uint(tree, hf_248_magic_num, tvb, offset, 4, magic_num);
5415 PROTO_ITEM_SET_HIDDEN(hidden_item);
5416 if( dissector_try_uint(subdissector_table, magic_num, tvb, pinfo, tree) ) {
5422 /* Make entry in the Protocol column on summary display */
5423 col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");
5426 h248_item = proto_tree_add_item(tree, proto_h248, tvb, 0, -1, ENC_NA);
5427 h248_tree = proto_item_add_subtree(h248_item, ett_h248);
5430 dissect_h248_MegacoMessage(FALSE, tvb, 0, &asn1_ctx, h248_tree, -1);
5434 /*--- proto_register_h248 ----------------------------------------------*/
5435 void proto_reg_handoff_h248(void);
5437 void proto_register_h248(void) {
5439 /* List of fields */
5440 static hf_register_info hf[] = {
5441 { &hf_248_magic_num, {
5442 "Magic Number for Avaya H248", "h248.magic_num", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL}},
5443 { &hf_h248_mtpaddress_ni, {
5444 "NI", "h248.mtpaddress.ni", FT_UINT32, BASE_DEC,
5445 NULL, 0, NULL, HFILL }},
5446 { &hf_h248_mtpaddress_pc, {
5447 "PC", "h248.mtpaddress.pc", FT_UINT32, BASE_DEC,
5448 NULL, 0, NULL, HFILL }},
5449 { &hf_h248_pkg_name, {
5450 "Package", "h248.package_name", FT_UINT16, BASE_HEX,
5451 NULL, 0, NULL, HFILL }},
5452 { &hf_248_pkg_param, {
5453 "Parameter ID", "h248.package_paramid", FT_UINT16, BASE_HEX,
5454 NULL, 0, NULL, HFILL }},
5455 { &hf_h248_signal_code, {
5456 "Signal ID", "h248.package_signalid", FT_UINT16, BASE_HEX,
5457 NULL, 0, "Parameter ID", HFILL }},
5458 { &hf_h248_event_code, {
5459 "Event ID", "h248.package_eventid", FT_UINT16, BASE_HEX,
5460 NULL, 0, "Parameter ID", HFILL }},
5461 { &hf_h248_event_name, {
5462 "Package and Event name", "h248.event_name", FT_UINT32, BASE_HEX,
5463 NULL, 0, "Package", HFILL }},
5464 { &hf_h248_signal_name, {
5465 "Package and Signal name", "h248.signal_name", FT_UINT32, BASE_HEX,
5466 NULL, 0, "Package", HFILL }},
5467 { &hf_h248_pkg_bcp_BNCChar_PDU,
5468 { "BNCChar", "h248.package_bcp.BNCChar",
5469 FT_UINT32, BASE_DEC, VALS(gcp_term_types), 0,
5472 { &hf_h248_error_code,
5473 { "errorCode", "h248.errorCode",
5474 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &h248_reasons_ext, 0,
5475 "ErrorDescriptor/errorCode", HFILL }},
5476 { &hf_h248_context_id,
5477 { "contextId", "h248.contextId",
5478 FT_UINT32, BASE_HEX, NULL, 0,
5479 "Context ID", HFILL }},
5480 { &hf_h248_term_wild_type,
5481 { "Wildcard Mode", "h248.term.wildcard.mode",
5482 FT_UINT8, BASE_DEC, VALS(wildcard_modes), 0x80,
5484 { &hf_h248_term_wild_level,
5485 { "Wildcarding Level", "h248.term.wildcard.level",
5486 FT_UINT8, BASE_DEC, VALS(wildcard_levels), 0x40,
5488 { &hf_h248_term_wild_position,
5489 { "Wildcarding Position", "h248.term.wildcard.pos",
5490 FT_UINT8, BASE_DEC, NULL, 0x3F,
5494 { "Unknown Package", "h248.pkg.unknown",
5495 FT_BYTES, BASE_NONE, NULL, 0,
5498 { "Unknown Signal", "h248.pkg.unknown.sig",
5499 FT_BYTES, BASE_NONE, NULL, 0,
5502 { "Unknown Event", "h248.pkg.unknown.evt",
5503 FT_BYTES, BASE_NONE, NULL, 0,
5506 { "Parameter", "h248.pkg.unknown.param",
5507 FT_BYTES, BASE_NONE, NULL, 0,
5509 { &hf_h248_serviceChangeReasonStr,
5510 { "ServiceChangeReasonStr", "h248.serviceChangeReasonstr",
5511 FT_STRING, BASE_NONE, NULL, 0,
5512 "h248.IA5String", HFILL }},
5514 /* h248v1 support */
5515 { &hf_h248_auditValueReplyV1,
5516 { "auditValueReplyV1", "h248.auditValueReplyV1",
5517 FT_NONE, BASE_NONE, NULL, 0,
5521 /*--- Included file: packet-h248-hfarr.c ---*/
5522 #line 1 "../../asn1/h248/packet-h248-hfarr.c"
5523 { &hf_h248_authHeader,
5524 { "authHeader", "h248.authHeader",
5525 FT_NONE, BASE_NONE, NULL, 0,
5526 "AuthenticationHeader", HFILL }},
5528 { "mess", "h248.mess",
5529 FT_NONE, BASE_NONE, NULL, 0,
5530 "Message", HFILL }},
5531 { &hf_h248_secParmIndex,
5532 { "secParmIndex", "h248.secParmIndex",
5533 FT_BYTES, BASE_NONE, NULL, 0,
5534 "SecurityParmIndex", HFILL }},
5536 { "seqNum", "h248.seqNum",
5537 FT_BYTES, BASE_NONE, NULL, 0,
5538 "SequenceNum", HFILL }},
5541 FT_BYTES, BASE_NONE, NULL, 0,
5542 "AuthData", HFILL }},
5544 { "version", "h248.version",
5545 FT_UINT32, BASE_DEC, NULL, 0,
5548 { "mId", "h248.mId",
5549 FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
5551 { &hf_h248_messageBody,
5552 { "messageBody", "h248.messageBody",
5553 FT_UINT32, BASE_DEC, VALS(h248_T_messageBody_vals), 0,
5555 { &hf_h248_messageError,
5556 { "messageError", "h248.messageError",
5557 FT_NONE, BASE_NONE, NULL, 0,
5558 "ErrorDescriptor", HFILL }},
5559 { &hf_h248_transactions,
5560 { "transactions", "h248.transactions",
5561 FT_UINT32, BASE_DEC, NULL, 0,
5562 "SEQUENCE_OF_Transaction", HFILL }},
5563 { &hf_h248_transactions_item,
5564 { "Transaction", "h248.Transaction",
5565 FT_UINT32, BASE_DEC, VALS(h248_Transaction_vals), 0,
5567 { &hf_h248_ip4Address,
5568 { "ip4Address", "h248.ip4Address",
5569 FT_NONE, BASE_NONE, NULL, 0,
5571 { &hf_h248_ip6Address,
5572 { "ip6Address", "h248.ip6Address",
5573 FT_NONE, BASE_NONE, NULL, 0,
5575 { &hf_h248_domainName,
5576 { "domainName", "h248.domainName",
5577 FT_NONE, BASE_NONE, NULL, 0,
5579 { &hf_h248_deviceName,
5580 { "deviceName", "h248.deviceName",
5581 FT_STRING, BASE_NONE, NULL, 0,
5582 "PathName", HFILL }},
5583 { &hf_h248_mtpAddress,
5584 { "mtpAddress", "h248.mtpAddress",
5585 FT_BYTES, BASE_NONE, NULL, 0,
5588 { "name", "h248.name",
5589 FT_STRING, BASE_NONE, NULL, 0,
5590 "IA5String", HFILL }},
5591 { &hf_h248_portNumber,
5592 { "portNumber", "h248.portNumber",
5593 FT_UINT32, BASE_DEC, NULL, 0,
5594 "INTEGER_0_65535", HFILL }},
5595 { &hf_h248_iP4Address,
5596 { "address", "h248.address",
5597 FT_IPv4, BASE_NONE, NULL, 0,
5598 "OCTET_STRING_SIZE_4", HFILL }},
5599 { &hf_h248_iP6Address,
5600 { "address", "h248.address",
5601 FT_IPv6, BASE_NONE, NULL, 0,
5602 "OCTET_STRING_SIZE_16", HFILL }},
5603 { &hf_h248_transactionRequest,
5604 { "transactionRequest", "h248.transactionRequest",
5605 FT_NONE, BASE_NONE, NULL, 0,
5607 { &hf_h248_transactionPending,
5608 { "transactionPending", "h248.transactionPending",
5609 FT_NONE, BASE_NONE, NULL, 0,
5611 { &hf_h248_transactionReply,
5612 { "transactionReply", "h248.transactionReply",
5613 FT_NONE, BASE_NONE, NULL, 0,
5615 { &hf_h248_transactionResponseAck,
5616 { "transactionResponseAck", "h248.transactionResponseAck",
5617 FT_UINT32, BASE_DEC, NULL, 0,
5619 { &hf_h248_segmentReply,
5620 { "segmentReply", "h248.segmentReply",
5621 FT_NONE, BASE_NONE, NULL, 0,
5623 { &hf_h248_transactionId,
5624 { "transactionId", "h248.transactionId",
5625 FT_UINT32, BASE_DEC, NULL, 0,
5628 { "actions", "h248.actions",
5629 FT_UINT32, BASE_DEC, NULL, 0,
5630 "SEQUENCE_OF_ActionRequest", HFILL }},
5631 { &hf_h248_actions_item,
5632 { "ActionRequest", "h248.ActionRequest",
5633 FT_NONE, BASE_NONE, NULL, 0,
5635 { &hf_h248_tpend_transactionId,
5636 { "transactionId", "h248.transactionId",
5637 FT_UINT32, BASE_DEC, NULL, 0,
5638 "T_tpend_transactionId", HFILL }},
5639 { &hf_h248_trep_transactionId,
5640 { "transactionId", "h248.transactionId",
5641 FT_UINT32, BASE_DEC, NULL, 0,
5642 "T_trep_transactionId", HFILL }},
5643 { &hf_h248_immAckRequired,
5644 { "immAckRequired", "h248.immAckRequired",
5645 FT_NONE, BASE_NONE, NULL, 0,
5647 { &hf_h248_transactionResult,
5648 { "transactionResult", "h248.transactionResult",
5649 FT_UINT32, BASE_DEC, VALS(h248_T_transactionResult_vals), 0,
5651 { &hf_h248_transactionError,
5652 { "transactionError", "h248.transactionError",
5653 FT_NONE, BASE_NONE, NULL, 0,
5654 "ErrorDescriptor", HFILL }},
5655 { &hf_h248_actionReplies,
5656 { "actionReplies", "h248.actionReplies",
5657 FT_UINT32, BASE_DEC, NULL, 0,
5658 "SEQUENCE_OF_ActionReply", HFILL }},
5659 { &hf_h248_actionReplies_item,
5660 { "ActionReply", "h248.ActionReply",
5661 FT_NONE, BASE_NONE, NULL, 0,
5663 { &hf_h248_segmentNumber,
5664 { "segmentNumber", "h248.segmentNumber",
5665 FT_UINT32, BASE_DEC, NULL, 0,
5667 { &hf_h248_segmentationComplete,
5668 { "segmentationComplete", "h248.segmentationComplete",
5669 FT_NONE, BASE_NONE, NULL, 0,
5671 { &hf_h248_seg_rep_transactionId,
5672 { "transactionId", "h248.transactionId",
5673 FT_UINT32, BASE_DEC, NULL, 0,
5674 "T_seg_rep_transactionId", HFILL }},
5675 { &hf_h248_TransactionResponseAck_item,
5676 { "TransactionAck", "h248.TransactionAck",
5677 FT_NONE, BASE_NONE, NULL, 0,
5679 { &hf_h248_firstAck,
5680 { "firstAck", "h248.firstAck",
5681 FT_UINT32, BASE_DEC, NULL, 0,
5682 "TransactionId", HFILL }},
5684 { "lastAck", "h248.lastAck",
5685 FT_UINT32, BASE_DEC, NULL, 0,
5686 "TransactionId", HFILL }},
5687 { &hf_h248_errorCode,
5688 { "errorCode", "h248.errorCode",
5689 FT_UINT32, BASE_DEC, NULL, 0,
5691 { &hf_h248_errorText,
5692 { "errorText", "h248.errorText",
5693 FT_STRING, BASE_NONE, NULL, 0,
5695 { &hf_h248_contextId,
5696 { "contextId", "h248.contextId",
5697 FT_UINT32, BASE_HEX, NULL, 0,
5699 { &hf_h248_contextRequest,
5700 { "contextRequest", "h248.contextRequest",
5701 FT_NONE, BASE_NONE, NULL, 0,
5703 { &hf_h248_contextAttrAuditReq,
5704 { "contextAttrAuditReq", "h248.contextAttrAuditReq",
5705 FT_NONE, BASE_NONE, NULL, 0,
5707 { &hf_h248_commandRequests,
5708 { "commandRequests", "h248.commandRequests",
5709 FT_UINT32, BASE_DEC, NULL, 0,
5710 "SEQUENCE_OF_CommandRequest", HFILL }},
5711 { &hf_h248_commandRequests_item,
5712 { "CommandRequest", "h248.CommandRequest",
5713 FT_NONE, BASE_NONE, NULL, 0,
5715 { &hf_h248_errorDescriptor,
5716 { "errorDescriptor", "h248.errorDescriptor",
5717 FT_NONE, BASE_NONE, NULL, 0,
5719 { &hf_h248_contextReply,
5720 { "contextReply", "h248.contextReply",
5721 FT_NONE, BASE_NONE, NULL, 0,
5722 "ContextRequest", HFILL }},
5723 { &hf_h248_commandReply,
5724 { "commandReply", "h248.commandReply",
5725 FT_UINT32, BASE_DEC, NULL, 0,
5726 "SEQUENCE_OF_CommandReply", HFILL }},
5727 { &hf_h248_commandReply_item,
5728 { "CommandReply", "h248.CommandReply",
5729 FT_UINT32, BASE_DEC, VALS(h248_CommandReply_vals), 0,
5731 { &hf_h248_priority,
5732 { "priority", "h248.priority",
5733 FT_UINT32, BASE_DEC, NULL, 0,
5734 "INTEGER_0_15", HFILL }},
5735 { &hf_h248_emergency,
5736 { "emergency", "h248.emergency",
5737 FT_BOOLEAN, BASE_NONE, NULL, 0,
5738 "BOOLEAN", HFILL }},
5739 { &hf_h248_topologyReq,
5740 { "topologyReq", "h248.topologyReq",
5741 FT_UINT32, BASE_DEC, NULL, 0,
5743 { &hf_h248_topologyReq_item,
5744 { "TopologyRequest", "h248.TopologyRequest",
5745 FT_NONE, BASE_NONE, NULL, 0,
5747 { &hf_h248_iepscallind_BOOL,
5748 { "iepscallind", "h248.iepscallind",
5749 FT_BOOLEAN, BASE_NONE, NULL, 0,
5750 "Iepscallind_BOOL", HFILL }},
5751 { &hf_h248_contextProp,
5752 { "contextProp", "h248.contextProp",
5753 FT_UINT32, BASE_DEC, NULL, 0,
5754 "SEQUENCE_OF_PropertyParm", HFILL }},
5755 { &hf_h248_contextProp_item,
5756 { "PropertyParm", "h248.PropertyParm",
5757 FT_NONE, BASE_NONE, NULL, 0,
5759 { &hf_h248_contextList,
5760 { "contextList", "h248.contextList",
5761 FT_UINT32, BASE_DEC, NULL, 0,
5762 "SEQUENCE_OF_ContextIDinList", HFILL }},
5763 { &hf_h248_contextList_item,
5764 { "ContextIDinList", "h248.ContextIDinList",
5765 FT_UINT32, BASE_DEC, NULL, 0,
5767 { &hf_h248_topology,
5768 { "topology", "h248.topology",
5769 FT_NONE, BASE_NONE, NULL, 0,
5771 { &hf_h248_cAAREmergency,
5772 { "emergency", "h248.emergency",
5773 FT_NONE, BASE_NONE, NULL, 0,
5775 { &hf_h248_cAARPriority,
5776 { "priority", "h248.priority",
5777 FT_NONE, BASE_NONE, NULL, 0,
5779 { &hf_h248_iepscallind,
5780 { "iepscallind", "h248.iepscallind",
5781 FT_NONE, BASE_NONE, NULL, 0,
5783 { &hf_h248_contextPropAud,
5784 { "contextPropAud", "h248.contextPropAud",
5785 FT_UINT32, BASE_DEC, NULL, 0,
5786 "SEQUENCE_OF_IndAudPropertyParm", HFILL }},
5787 { &hf_h248_contextPropAud_item,
5788 { "IndAudPropertyParm", "h248.IndAudPropertyParm",
5789 FT_NONE, BASE_NONE, NULL, 0,
5791 { &hf_h248_selectpriority,
5792 { "selectpriority", "h248.selectpriority",
5793 FT_UINT32, BASE_DEC, NULL, 0,
5794 "INTEGER_0_15", HFILL }},
5795 { &hf_h248_selectemergency,
5796 { "selectemergency", "h248.selectemergency",
5797 FT_BOOLEAN, BASE_NONE, NULL, 0,
5798 "BOOLEAN", HFILL }},
5799 { &hf_h248_selectiepscallind,
5800 { "selectiepscallind", "h248.selectiepscallind",
5801 FT_BOOLEAN, BASE_NONE, NULL, 0,
5802 "BOOLEAN", HFILL }},
5803 { &hf_h248_selectLogic,
5804 { "selectLogic", "h248.selectLogic",
5805 FT_UINT32, BASE_DEC, VALS(h248_SelectLogic_vals), 0,
5807 { &hf_h248_andAUDITSelect,
5808 { "andAUDITSelect", "h248.andAUDITSelect",
5809 FT_NONE, BASE_NONE, NULL, 0,
5811 { &hf_h248_orAUDITSelect,
5812 { "orAUDITSelect", "h248.orAUDITSelect",
5813 FT_NONE, BASE_NONE, NULL, 0,
5816 { "command", "h248.command",
5817 FT_UINT32, BASE_DEC, VALS(h248_Command_vals), 0,
5819 { &hf_h248_optional,
5820 { "optional", "h248.optional",
5821 FT_NONE, BASE_NONE, NULL, 0,
5823 { &hf_h248_wildcardReturn,
5824 { "wildcardReturn", "h248.wildcardReturn",
5825 FT_NONE, BASE_NONE, NULL, 0,
5828 { "addReq", "h248.addReq",
5829 FT_NONE, BASE_NONE, NULL, 0,
5832 { "moveReq", "h248.moveReq",
5833 FT_NONE, BASE_NONE, NULL, 0,
5836 { "modReq", "h248.modReq",
5837 FT_NONE, BASE_NONE, NULL, 0,
5839 { &hf_h248_subtractReq,
5840 { "subtractReq", "h248.subtractReq",
5841 FT_NONE, BASE_NONE, NULL, 0,
5843 { &hf_h248_auditCapRequest,
5844 { "auditCapRequest", "h248.auditCapRequest",
5845 FT_NONE, BASE_NONE, NULL, 0,
5847 { &hf_h248_auditValueRequest,
5848 { "auditValueRequest", "h248.auditValueRequest",
5849 FT_NONE, BASE_NONE, NULL, 0,
5851 { &hf_h248_notifyReq,
5852 { "notifyReq", "h248.notifyReq",
5853 FT_NONE, BASE_NONE, NULL, 0,
5855 { &hf_h248_serviceChangeReq,
5856 { "serviceChangeReq", "h248.serviceChangeReq",
5857 FT_NONE, BASE_NONE, NULL, 0,
5858 "ServiceChangeRequest", HFILL }},
5859 { &hf_h248_addReply,
5860 { "addReply", "h248.addReply",
5861 FT_NONE, BASE_NONE, NULL, 0,
5863 { &hf_h248_moveReply,
5864 { "moveReply", "h248.moveReply",
5865 FT_NONE, BASE_NONE, NULL, 0,
5867 { &hf_h248_modReply,
5868 { "modReply", "h248.modReply",
5869 FT_NONE, BASE_NONE, NULL, 0,
5871 { &hf_h248_subtractReply,
5872 { "subtractReply", "h248.subtractReply",
5873 FT_NONE, BASE_NONE, NULL, 0,
5875 { &hf_h248_auditCapReply,
5876 { "auditCapReply", "h248.auditCapReply",
5877 FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
5879 { &hf_h248_auditValueReply,
5880 { "auditValueReply", "h248.auditValueReply",
5881 FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
5883 { &hf_h248_notifyReply,
5884 { "notifyReply", "h248.notifyReply",
5885 FT_NONE, BASE_NONE, NULL, 0,
5887 { &hf_h248_serviceChangeReply,
5888 { "serviceChangeReply", "h248.serviceChangeReply",
5889 FT_NONE, BASE_NONE, NULL, 0,
5891 { &hf_h248_terminationFrom,
5892 { "terminationFrom", "h248.terminationFrom",
5893 FT_NONE, BASE_NONE, NULL, 0,
5894 "TerminationID", HFILL }},
5895 { &hf_h248_terminationTo,
5896 { "terminationTo", "h248.terminationTo",
5897 FT_NONE, BASE_NONE, NULL, 0,
5898 "TerminationID", HFILL }},
5899 { &hf_h248_topologyDirection,
5900 { "topologyDirection", "h248.topologyDirection",
5901 FT_UINT32, BASE_DEC, VALS(h248_T_topologyDirection_vals), 0,
5903 { &hf_h248_streamID,
5904 { "streamID", "h248.streamID",
5905 FT_UINT32, BASE_DEC, NULL, 0,
5907 { &hf_h248_topologyDirectionExtension,
5908 { "topologyDirectionExtension", "h248.topologyDirectionExtension",
5909 FT_UINT32, BASE_DEC, VALS(h248_T_topologyDirectionExtension_vals), 0,
5911 { &hf_h248_terminationIDList,
5912 { "terminationID", "h248.terminationID",
5913 FT_UINT32, BASE_DEC, NULL, 0,
5914 "TerminationIDList", HFILL }},
5915 { &hf_h248_descriptors,
5916 { "descriptors", "h248.descriptors",
5917 FT_UINT32, BASE_DEC, NULL, 0,
5918 "SEQUENCE_OF_AmmDescriptor", HFILL }},
5919 { &hf_h248_descriptors_item,
5920 { "AmmDescriptor", "h248.AmmDescriptor",
5921 FT_UINT32, BASE_DEC, VALS(h248_AmmDescriptor_vals), 0,
5923 { &hf_h248_mediaDescriptor,
5924 { "mediaDescriptor", "h248.mediaDescriptor",
5925 FT_NONE, BASE_NONE, NULL, 0,
5927 { &hf_h248_modemDescriptor,
5928 { "modemDescriptor", "h248.modemDescriptor",
5929 FT_NONE, BASE_NONE, NULL, 0,
5931 { &hf_h248_muxDescriptor,
5932 { "muxDescriptor", "h248.muxDescriptor",
5933 FT_NONE, BASE_NONE, NULL, 0,
5935 { &hf_h248_eventsDescriptor,
5936 { "eventsDescriptor", "h248.eventsDescriptor",
5937 FT_NONE, BASE_NONE, NULL, 0,
5939 { &hf_h248_eventBufferDescriptor,
5940 { "eventBufferDescriptor", "h248.eventBufferDescriptor",
5941 FT_UINT32, BASE_DEC, NULL, 0,
5943 { &hf_h248_signalsDescriptor,
5944 { "signalsDescriptor", "h248.signalsDescriptor",
5945 FT_UINT32, BASE_DEC, NULL, 0,
5947 { &hf_h248_digitMapDescriptor,
5948 { "digitMapDescriptor", "h248.digitMapDescriptor",
5949 FT_NONE, BASE_NONE, NULL, 0,
5951 { &hf_h248_auditDescriptor,
5952 { "auditDescriptor", "h248.auditDescriptor",
5953 FT_NONE, BASE_NONE, NULL, 0,
5955 { &hf_h248_aDstatisticsDescriptor,
5956 { "statisticsDescriptor", "h248.statisticsDescriptor",
5957 FT_UINT32, BASE_DEC, NULL, 0,
5959 { &hf_h248_terminationAudit,
5960 { "terminationAudit", "h248.terminationAudit",
5961 FT_UINT32, BASE_DEC, NULL, 0,
5963 { &hf_h248_terminationID,
5964 { "terminationID", "h248.terminationID",
5965 FT_NONE, BASE_NONE, NULL, 0,
5967 { &hf_h248_contextAuditResult,
5968 { "contextAuditResult", "h248.contextAuditResult",
5969 FT_UINT32, BASE_DEC, NULL, 0,
5970 "TerminationIDList", HFILL }},
5972 { "error", "h248.error",
5973 FT_NONE, BASE_NONE, NULL, 0,
5974 "ErrorDescriptor", HFILL }},
5975 { &hf_h248_auditResult,
5976 { "auditResult", "h248.auditResult",
5977 FT_NONE, BASE_NONE, NULL, 0,
5979 { &hf_h248_auditResultTermList,
5980 { "auditResultTermList", "h248.auditResultTermList",
5981 FT_NONE, BASE_NONE, NULL, 0,
5982 "TermListAuditResult", HFILL }},
5983 { &hf_h248_terminationAuditResult,
5984 { "terminationAuditResult", "h248.terminationAuditResult",
5985 FT_UINT32, BASE_DEC, NULL, 0,
5986 "TerminationAudit", HFILL }},
5987 { &hf_h248_TerminationAudit_item,
5988 { "AuditReturnParameter", "h248.AuditReturnParameter",
5989 FT_UINT32, BASE_DEC, VALS(h248_AuditReturnParameter_vals), 0,
5991 { &hf_h248_observedEventsDescriptor,
5992 { "observedEventsDescriptor", "h248.observedEventsDescriptor",
5993 FT_NONE, BASE_NONE, NULL, 0,
5995 { &hf_h248_aRPstatisticsDescriptor,
5996 { "statisticsDescriptor", "h248.statisticsDescriptor",
5997 FT_UINT32, BASE_DEC, NULL, 0,
5999 { &hf_h248_packagesDescriptor,
6000 { "packagesDescriptor", "h248.packagesDescriptor",
6001 FT_UINT32, BASE_DEC, NULL, 0,
6003 { &hf_h248_emptyDescriptors,
6004 { "emptyDescriptors", "h248.emptyDescriptors",
6005 FT_NONE, BASE_NONE, NULL, 0,
6006 "AuditDescriptor", HFILL }},
6007 { &hf_h248_auditToken,
6008 { "auditToken", "h248.auditToken",
6009 FT_BYTES, BASE_NONE, NULL, 0,
6011 { &hf_h248_auditPropertyToken,
6012 { "auditPropertyToken", "h248.auditPropertyToken",
6013 FT_UINT32, BASE_DEC, NULL, 0,
6014 "SEQUENCE_OF_IndAuditParameter", HFILL }},
6015 { &hf_h248_auditPropertyToken_item,
6016 { "IndAuditParameter", "h248.IndAuditParameter",
6017 FT_UINT32, BASE_DEC, VALS(h248_IndAuditParameter_vals), 0,
6019 { &hf_h248_indaudmediaDescriptor,
6020 { "indaudmediaDescriptor", "h248.indaudmediaDescriptor",
6021 FT_NONE, BASE_NONE, NULL, 0,
6023 { &hf_h248_indaudeventsDescriptor,
6024 { "indaudeventsDescriptor", "h248.indaudeventsDescriptor",
6025 FT_NONE, BASE_NONE, NULL, 0,
6027 { &hf_h248_indaudeventBufferDescriptor,
6028 { "indaudeventBufferDescriptor", "h248.indaudeventBufferDescriptor",
6029 FT_NONE, BASE_NONE, NULL, 0,
6031 { &hf_h248_indaudsignalsDescriptor,
6032 { "indaudsignalsDescriptor", "h248.indaudsignalsDescriptor",
6033 FT_UINT32, BASE_DEC, VALS(h248_IndAudSignalsDescriptor_vals), 0,
6035 { &hf_h248_indauddigitMapDescriptor,
6036 { "indauddigitMapDescriptor", "h248.indauddigitMapDescriptor",
6037 FT_NONE, BASE_NONE, NULL, 0,
6039 { &hf_h248_indaudstatisticsDescriptor,
6040 { "indaudstatisticsDescriptor", "h248.indaudstatisticsDescriptor",
6041 FT_NONE, BASE_NONE, NULL, 0,
6043 { &hf_h248_indaudpackagesDescriptor,
6044 { "indaudpackagesDescriptor", "h248.indaudpackagesDescriptor",
6045 FT_NONE, BASE_NONE, NULL, 0,
6047 { &hf_h248_indAudTerminationStateDescriptor,
6048 { "termStateDescr", "h248.termStateDescr",
6049 FT_NONE, BASE_NONE, NULL, 0,
6050 "IndAudTerminationStateDescriptor", HFILL }},
6051 { &hf_h248_indAudMediaDescriptorStreams,
6052 { "streams", "h248.streams",
6053 FT_UINT32, BASE_DEC, VALS(h248_IndAudMediaDescriptorStreams_vals), 0,
6054 "IndAudMediaDescriptorStreams", HFILL }},
6055 { &hf_h248_oneStream,
6056 { "oneStream", "h248.oneStream",
6057 FT_NONE, BASE_NONE, NULL, 0,
6058 "IndAudStreamParms", HFILL }},
6059 { &hf_h248_multiStream,
6060 { "multiStream", "h248.multiStream",
6061 FT_UINT32, BASE_DEC, NULL, 0,
6062 "SEQUENCE_OF_IndAudStreamDescriptor", HFILL }},
6063 { &hf_h248_multiStream_item,
6064 { "IndAudStreamDescriptor", "h248.IndAudStreamDescriptor",
6065 FT_NONE, BASE_NONE, NULL, 0,
6067 { &hf_h248_indAudStreamParms,
6068 { "streamParms", "h248.streamParms",
6069 FT_NONE, BASE_NONE, NULL, 0,
6070 "IndAudStreamParms", HFILL }},
6071 { &hf_h248_iASPLocalControlDescriptor,
6072 { "localControlDescriptor", "h248.localControlDescriptor",
6073 FT_NONE, BASE_NONE, NULL, 0,
6074 "IndAudLocalControlDescriptor", HFILL }},
6075 { &hf_h248_iASPLocalDescriptor,
6076 { "localDescriptor", "h248.localDescriptor",
6077 FT_NONE, BASE_NONE, NULL, 0,
6078 "IndAudLocalRemoteDescriptor", HFILL }},
6079 { &hf_h248_iASPRemoteDescriptor,
6080 { "remoteDescriptor", "h248.remoteDescriptor",
6081 FT_NONE, BASE_NONE, NULL, 0,
6082 "IndAudLocalRemoteDescriptor", HFILL }},
6083 { &hf_h248_statisticsDescriptor,
6084 { "statisticsDescriptor", "h248.statisticsDescriptor",
6085 FT_NONE, BASE_NONE, NULL, 0,
6086 "IndAudStatisticsDescriptor", HFILL }},
6087 { &hf_h248_iALCDStreamMode,
6088 { "streamMode", "h248.streamMode",
6089 FT_NONE, BASE_NONE, NULL, 0,
6091 { &hf_h248_iALCDReserveValue,
6092 { "reserveValue", "h248.reserveValue",
6093 FT_NONE, BASE_NONE, NULL, 0,
6095 { &hf_h248_iALCDReserveGroup,
6096 { "reserveGroup", "h248.reserveGroup",
6097 FT_NONE, BASE_NONE, NULL, 0,
6099 { &hf_h248_indAudPropertyParms,
6100 { "propertyParms", "h248.propertyParms",
6101 FT_UINT32, BASE_DEC, NULL, 0,
6102 "SEQUENCE_OF_IndAudPropertyParm", HFILL }},
6103 { &hf_h248_indAudPropertyParms_item,
6104 { "IndAudPropertyParm", "h248.IndAudPropertyParm",
6105 FT_NONE, BASE_NONE, NULL, 0,
6107 { &hf_h248_streamModeSel,
6108 { "streamModeSel", "h248.streamModeSel",
6109 FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
6110 "StreamMode", HFILL }},
6112 { "name", "h248.name",
6113 FT_BYTES, BASE_NONE, NULL, 0,
6114 "PkgdName", HFILL }},
6115 { &hf_h248_propertyParms,
6116 { "propertyParms", "h248.propertyParms",
6117 FT_NONE, BASE_NONE, NULL, 0,
6118 "PropertyParm", HFILL }},
6119 { &hf_h248_propGroupID,
6120 { "propGroupID", "h248.propGroupID",
6121 FT_UINT32, BASE_DEC, NULL, 0,
6122 "INTEGER_0_65535", HFILL }},
6123 { &hf_h248_iAPropertyGroup,
6124 { "propGrps", "h248.propGrps",
6125 FT_UINT32, BASE_DEC, NULL, 0,
6126 "IndAudPropertyGroup", HFILL }},
6127 { &hf_h248_IndAudPropertyGroup_item,
6128 { "IndAudPropertyParm", "h248.IndAudPropertyParm",
6129 FT_NONE, BASE_NONE, NULL, 0,
6131 { &hf_h248_eventBufferControl,
6132 { "eventBufferControl", "h248.eventBufferControl",
6133 FT_NONE, BASE_NONE, NULL, 0,
6135 { &hf_h248_iATSDServiceState,
6136 { "serviceState", "h248.serviceState",
6137 FT_NONE, BASE_NONE, NULL, 0,
6139 { &hf_h248_serviceStateSel,
6140 { "serviceStateSel", "h248.serviceStateSel",
6141 FT_UINT32, BASE_DEC, VALS(h248_ServiceState_vals), 0,
6142 "ServiceState", HFILL }},
6143 { &hf_h248_requestID,
6144 { "requestID", "h248.requestID",
6145 FT_UINT32, BASE_DEC, NULL, 0,
6147 { &hf_h248_iAEDPkgdName,
6148 { "pkgdName", "h248.pkgdName",
6149 FT_BYTES, BASE_NONE, NULL, 0,
6151 { &hf_h248_iAEBDEventName,
6152 { "eventName", "h248.eventName",
6153 FT_BYTES, BASE_NONE, NULL, 0,
6154 "PkgdName", HFILL }},
6155 { &hf_h248_indAudSignal,
6156 { "signal", "h248.signal",
6157 FT_NONE, BASE_NONE, NULL, 0,
6158 "IndAudSignal", HFILL }},
6159 { &hf_h248_indAudSeqSigList,
6160 { "seqSigList", "h248.seqSigList",
6161 FT_NONE, BASE_NONE, NULL, 0,
6162 "IndAudSeqSigList", HFILL }},
6165 FT_UINT32, BASE_DEC, NULL, 0,
6166 "INTEGER_0_65535", HFILL }},
6167 { &hf_h248_iASignalList,
6168 { "signalList", "h248.signalList",
6169 FT_NONE, BASE_NONE, NULL, 0,
6170 "IndAudSignal", HFILL }},
6171 { &hf_h248_iASignalName,
6172 { "signalName", "h248.signalName",
6173 FT_BYTES, BASE_NONE, NULL, 0,
6174 "PkgdName", HFILL }},
6175 { &hf_h248_signalRequestID,
6176 { "signalRequestID", "h248.signalRequestID",
6177 FT_UINT32, BASE_DEC, NULL, 0,
6178 "RequestID", HFILL }},
6179 { &hf_h248_digitMapName,
6180 { "digitMapName", "h248.digitMapName",
6181 FT_BYTES, BASE_NONE, NULL, 0,
6183 { &hf_h248_iAStatName,
6184 { "statName", "h248.statName",
6185 FT_BYTES, BASE_NONE, NULL, 0,
6186 "PkgdName", HFILL }},
6187 { &hf_h248_packageName,
6188 { "packageName", "h248.packageName",
6189 FT_BYTES, BASE_NONE, NULL, 0,
6191 { &hf_h248_packageVersion,
6192 { "packageVersion", "h248.packageVersion",
6193 FT_UINT32, BASE_DEC, NULL, 0,
6194 "INTEGER_0_99", HFILL }},
6195 { &hf_h248_requestId,
6196 { "requestId", "h248.requestId",
6197 FT_UINT32, BASE_DEC, NULL, 0,
6199 { &hf_h248_observedEventLst,
6200 { "observedEventLst", "h248.observedEventLst",
6201 FT_UINT32, BASE_DEC, NULL, 0,
6202 "SEQUENCE_OF_ObservedEvent", HFILL }},
6203 { &hf_h248_observedEventLst_item,
6204 { "ObservedEvent", "h248.ObservedEvent",
6205 FT_NONE, BASE_NONE, NULL, 0,
6207 { &hf_h248_eventName,
6208 { "eventName", "h248.eventName",
6209 FT_BYTES, BASE_NONE, NULL, 0,
6211 { &hf_h248_eventParList,
6212 { "eventParList", "h248.eventParList",
6213 FT_UINT32, BASE_DEC, NULL, 0,
6214 "SEQUENCE_OF_EventParameter", HFILL }},
6215 { &hf_h248_eventParList_item,
6216 { "EventParameter", "h248.EventParameter",
6217 FT_NONE, BASE_NONE, NULL, 0,
6219 { &hf_h248_timeNotation,
6220 { "timeNotation", "h248.timeNotation",
6221 FT_NONE, BASE_NONE, NULL, 0,
6223 { &hf_h248_eventParameterName,
6224 { "eventParameterName", "h248.eventParameterName",
6225 FT_BYTES, BASE_NONE, NULL, 0,
6227 { &hf_h248_eventParamValue,
6228 { "eventParamValue", "h248.eventParamValue",
6229 FT_UINT32, BASE_DEC, NULL, 0,
6230 "EventParamValues", HFILL }},
6231 { &hf_h248_eventPar_extraInfo,
6232 { "extraInfo", "h248.extraInfo",
6233 FT_UINT32, BASE_DEC, VALS(h248_EventPar_extraInfo_vals), 0,
6234 "EventPar_extraInfo", HFILL }},
6235 { &hf_h248_relation,
6236 { "relation", "h248.relation",
6237 FT_UINT32, BASE_DEC, VALS(h248_Relation_vals), 0,
6240 { "range", "h248.range",
6241 FT_BOOLEAN, BASE_NONE, NULL, 0,
6242 "BOOLEAN", HFILL }},
6244 { "sublist", "h248.sublist",
6245 FT_BOOLEAN, BASE_NONE, NULL, 0,
6246 "BOOLEAN", HFILL }},
6247 { &hf_h248_EventParamValues_item,
6248 { "EventParamValue", "h248.EventParamValue",
6249 FT_BYTES, BASE_NONE, NULL, 0,
6251 { &hf_h248_serviceChangeParms,
6252 { "serviceChangeParms", "h248.serviceChangeParms",
6253 FT_NONE, BASE_NONE, NULL, 0,
6254 "ServiceChangeParm", HFILL }},
6255 { &hf_h248_serviceChangeResult,
6256 { "serviceChangeResult", "h248.serviceChangeResult",
6257 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeResult_vals), 0,
6259 { &hf_h248_serviceChangeResParms,
6260 { "serviceChangeResParms", "h248.serviceChangeResParms",
6261 FT_NONE, BASE_NONE, NULL, 0,
6262 "ServiceChangeResParm", HFILL }},
6263 { &hf_h248_wildcard,
6264 { "wildcard", "h248.wildcard",
6265 FT_UINT32, BASE_DEC, NULL, 0,
6266 "SEQUENCE_OF_WildcardField", HFILL }},
6267 { &hf_h248_wildcard_item,
6268 { "WildcardField", "h248.WildcardField",
6269 FT_BYTES, BASE_NONE, NULL, 0,
6271 { &hf_h248_terminationId,
6273 FT_BYTES, BASE_NONE, NULL, 0,
6274 "T_terminationId", HFILL }},
6275 { &hf_h248_TerminationIDList_item,
6276 { "TerminationID", "h248.TerminationID",
6277 FT_NONE, BASE_NONE, NULL, 0,
6279 { &hf_h248_termStateDescr,
6280 { "termStateDescr", "h248.termStateDescr",
6281 FT_NONE, BASE_NONE, NULL, 0,
6282 "TerminationStateDescriptor", HFILL }},
6284 { "streams", "h248.streams",
6285 FT_UINT32, BASE_DEC, VALS(h248_T_streams_vals), 0,
6287 { &hf_h248_mediaDescriptorOneStream,
6288 { "oneStream", "h248.oneStream",
6289 FT_NONE, BASE_NONE, NULL, 0,
6290 "StreamParms", HFILL }},
6291 { &hf_h248_mediaDescriptorMultiStream,
6292 { "multiStream", "h248.multiStream",
6293 FT_UINT32, BASE_DEC, NULL, 0,
6294 "SEQUENCE_OF_StreamDescriptor", HFILL }},
6295 { &hf_h248_mediaDescriptorMultiStream_item,
6296 { "StreamDescriptor", "h248.StreamDescriptor",
6297 FT_NONE, BASE_NONE, NULL, 0,
6299 { &hf_h248_streamParms,
6300 { "streamParms", "h248.streamParms",
6301 FT_NONE, BASE_NONE, NULL, 0,
6303 { &hf_h248_localControlDescriptor,
6304 { "localControlDescriptor", "h248.localControlDescriptor",
6305 FT_NONE, BASE_NONE, NULL, 0,
6307 { &hf_h248_localDescriptor,
6308 { "localDescriptor", "h248.localDescriptor",
6309 FT_NONE, BASE_NONE, NULL, 0,
6310 "LocalRemoteDescriptor", HFILL }},
6311 { &hf_h248_remoteDescriptor,
6312 { "remoteDescriptor", "h248.remoteDescriptor",
6313 FT_NONE, BASE_NONE, NULL, 0,
6314 "LocalRemoteDescriptor", HFILL }},
6315 { &hf_h248_sPstatisticsDescriptor,
6316 { "statisticsDescriptor", "h248.statisticsDescriptor",
6317 FT_UINT32, BASE_DEC, NULL, 0,
6319 { &hf_h248_streamMode,
6320 { "streamMode", "h248.streamMode",
6321 FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
6323 { &hf_h248_reserveValue,
6324 { "reserveValue", "h248.reserveValue",
6325 FT_BOOLEAN, BASE_NONE, NULL, 0,
6326 "BOOLEAN", HFILL }},
6327 { &hf_h248_reserveGroup,
6328 { "reserveGroup", "h248.reserveGroup",
6329 FT_BOOLEAN, BASE_NONE, NULL, 0,
6330 "BOOLEAN", HFILL }},
6331 { &hf_h248_lCDpropertyParms,
6332 { "propertyParms", "h248.propertyParms",
6333 FT_UINT32, BASE_DEC, NULL, 0,
6334 "SEQUENCE_OF_PropertyParm", HFILL }},
6335 { &hf_h248_lCDpropertyParms_item,
6336 { "PropertyParm", "h248.PropertyParm",
6337 FT_NONE, BASE_NONE, NULL, 0,
6339 { &hf_h248_propertyName,
6340 { "propertyName", "h248.propertyName",
6341 FT_BYTES, BASE_NONE, NULL, 0,
6343 { &hf_h248_propertyParamValue,
6344 { "value", "h248.value",
6345 FT_UINT32, BASE_DEC, NULL, 0,
6346 "SEQUENCE_OF_PropertyID", HFILL }},
6347 { &hf_h248_propertyParamValue_item,
6348 { "PropertyID", "h248.PropertyID",
6349 FT_BYTES, BASE_NONE, NULL, 0,
6351 { &hf_h248_propParm_extraInfo,
6352 { "extraInfo", "h248.extraInfo",
6353 FT_UINT32, BASE_DEC, VALS(h248_PropParm_extraInfo_vals), 0,
6354 "PropParm_extraInfo", HFILL }},
6355 { &hf_h248_propGrps,
6356 { "propGrps", "h248.propGrps",
6357 FT_UINT32, BASE_DEC, NULL, 0,
6358 "SEQUENCE_OF_PropertyGroup", HFILL }},
6359 { &hf_h248_propGrps_item,
6360 { "PropertyGroup", "h248.PropertyGroup",
6361 FT_UINT32, BASE_DEC, NULL, 0,
6363 { &hf_h248_PropertyGroup_item,
6364 { "PropertyParm", "h248.PropertyParm",
6365 FT_NONE, BASE_NONE, NULL, 0,
6367 { &hf_h248_tSDpropertyParms,
6368 { "propertyParms", "h248.propertyParms",
6369 FT_UINT32, BASE_DEC, NULL, 0,
6370 "SEQUENCE_OF_PropertyParm", HFILL }},
6371 { &hf_h248_tSDpropertyParms_item,
6372 { "PropertyParm", "h248.PropertyParm",
6373 FT_NONE, BASE_NONE, NULL, 0,
6375 { &hf_h248_tSEventBufferControl,
6376 { "eventBufferControl", "h248.eventBufferControl",
6377 FT_UINT32, BASE_DEC, VALS(h248_EventBufferControl_vals), 0,
6379 { &hf_h248_serviceState,
6380 { "serviceState", "h248.serviceState",
6381 FT_UINT32, BASE_DEC, VALS(h248_ServiceState_vals), 0,
6384 { "muxType", "h248.muxType",
6385 FT_UINT32, BASE_DEC, VALS(h248_MuxType_vals), 0,
6387 { &hf_h248_termList,
6388 { "termList", "h248.termList",
6389 FT_UINT32, BASE_DEC, NULL, 0,
6390 "SEQUENCE_OF_TerminationID", HFILL }},
6391 { &hf_h248_termList_item,
6392 { "TerminationID", "h248.TerminationID",
6393 FT_NONE, BASE_NONE, NULL, 0,
6395 { &hf_h248_nonStandardData,
6396 { "nonStandardData", "h248.nonStandardData",
6397 FT_NONE, BASE_NONE, NULL, 0,
6399 { &hf_h248_eventList,
6400 { "eventList", "h248.eventList",
6401 FT_UINT32, BASE_DEC, NULL, 0,
6402 "SEQUENCE_OF_RequestedEvent", HFILL }},
6403 { &hf_h248_eventList_item,
6404 { "RequestedEvent", "h248.RequestedEvent",
6405 FT_NONE, BASE_NONE, NULL, 0,
6407 { &hf_h248_eventAction,
6408 { "eventAction", "h248.eventAction",
6409 FT_NONE, BASE_NONE, NULL, 0,
6410 "RequestedActions", HFILL }},
6411 { &hf_h248_evParList,
6412 { "evParList", "h248.evParList",
6413 FT_UINT32, BASE_DEC, NULL, 0,
6414 "SEQUENCE_OF_EventParameter", HFILL }},
6415 { &hf_h248_evParList_item,
6416 { "EventParameter", "h248.EventParameter",
6417 FT_NONE, BASE_NONE, NULL, 0,
6419 { &hf_h248_secondEvent,
6420 { "secondEvent", "h248.secondEvent",
6421 FT_NONE, BASE_NONE, NULL, 0,
6422 "SecondEventsDescriptor", HFILL }},
6423 { &hf_h248_notifyImmediate,
6424 { "notifyImmediate", "h248.notifyImmediate",
6425 FT_NONE, BASE_NONE, NULL, 0,
6427 { &hf_h248_notifyRegulated,
6428 { "notifyRegulated", "h248.notifyRegulated",
6429 FT_NONE, BASE_NONE, NULL, 0,
6430 "RegulatedEmbeddedDescriptor", HFILL }},
6431 { &hf_h248_neverNotify,
6432 { "neverNotify", "h248.neverNotify",
6433 FT_NONE, BASE_NONE, NULL, 0,
6435 { &hf_h248_keepActive,
6436 { "keepActive", "h248.keepActive",
6437 FT_BOOLEAN, BASE_NONE, NULL, 0,
6438 "BOOLEAN", HFILL }},
6440 { "eventDM", "h248.eventDM",
6441 FT_UINT32, BASE_DEC, VALS(h248_EventDM_vals), 0,
6443 { &hf_h248_notifyBehaviour,
6444 { "notifyBehaviour", "h248.notifyBehaviour",
6445 FT_UINT32, BASE_DEC, VALS(h248_NotifyBehaviour_vals), 0,
6447 { &hf_h248_resetEventsDescriptor,
6448 { "resetEventsDescriptor", "h248.resetEventsDescriptor",
6449 FT_NONE, BASE_NONE, NULL, 0,
6451 { &hf_h248_digitMapValue,
6452 { "digitMapValue", "h248.digitMapValue",
6453 FT_NONE, BASE_NONE, NULL, 0,
6455 { &hf_h248_secondaryEventList,
6456 { "eventList", "h248.eventList",
6457 FT_UINT32, BASE_DEC, NULL, 0,
6458 "SEQUENCE_OF_SecondRequestedEvent", HFILL }},
6459 { &hf_h248_secondaryEventList_item,
6460 { "SecondRequestedEvent", "h248.SecondRequestedEvent",
6461 FT_NONE, BASE_NONE, NULL, 0,
6463 { &hf_h248_pkgdName,
6464 { "pkgdName", "h248.pkgdName",
6465 FT_BYTES, BASE_NONE, NULL, 0,
6467 { &hf_h248_secondaryEventAction,
6468 { "eventAction", "h248.eventAction",
6469 FT_NONE, BASE_NONE, NULL, 0,
6470 "SecondRequestedActions", HFILL }},
6471 { &hf_h248_EventBufferDescriptor_item,
6472 { "EventSpec", "h248.EventSpec",
6473 FT_NONE, BASE_NONE, NULL, 0,
6475 { &hf_h248_SignalsDescriptor_item,
6476 { "SignalRequest", "h248.SignalRequest",
6477 FT_UINT32, BASE_DEC, VALS(h248_SignalRequest_vals), 0,
6480 { "signal", "h248.signal",
6481 FT_NONE, BASE_NONE, NULL, 0,
6483 { &hf_h248_seqSigList,
6484 { "seqSigList", "h248.seqSigList",
6485 FT_NONE, BASE_NONE, NULL, 0,
6487 { &hf_h248_signalList,
6488 { "signalList", "h248.signalList",
6489 FT_UINT32, BASE_DEC, NULL, 0,
6490 "SEQUENCE_OF_Signal", HFILL }},
6491 { &hf_h248_signalList_item,
6492 { "Signal", "h248.Signal",
6493 FT_NONE, BASE_NONE, NULL, 0,
6495 { &hf_h248_signalName,
6496 { "signalName", "h248.signalName",
6497 FT_BYTES, BASE_NONE, NULL, 0,
6500 { "sigType", "h248.sigType",
6501 FT_UINT32, BASE_DEC, VALS(h248_SignalType_vals), 0,
6502 "SignalType", HFILL }},
6503 { &hf_h248_duration,
6504 { "duration", "h248.duration",
6505 FT_UINT32, BASE_DEC, NULL, 0,
6506 "INTEGER_0_65535", HFILL }},
6507 { &hf_h248_notifyCompletion,
6508 { "notifyCompletion", "h248.notifyCompletion",
6509 FT_BYTES, BASE_NONE, NULL, 0,
6511 { &hf_h248_sigParList,
6512 { "sigParList", "h248.sigParList",
6513 FT_UINT32, BASE_DEC, NULL, 0,
6514 "SEQUENCE_OF_SigParameter", HFILL }},
6515 { &hf_h248_sigParList_item,
6516 { "SigParameter", "h248.SigParameter",
6517 FT_NONE, BASE_NONE, NULL, 0,
6519 { &hf_h248_direction,
6520 { "direction", "h248.direction",
6521 FT_UINT32, BASE_DEC, VALS(h248_SignalDirection_vals), 0,
6522 "SignalDirection", HFILL }},
6523 { &hf_h248_intersigDelay,
6524 { "intersigDelay", "h248.intersigDelay",
6525 FT_UINT32, BASE_DEC, NULL, 0,
6526 "INTEGER_0_65535", HFILL }},
6527 { &hf_h248_sigParameterName,
6528 { "sigParameterName", "h248.sigParameterName",
6529 FT_BYTES, BASE_NONE, NULL, 0,
6532 { "value", "h248.value",
6533 FT_UINT32, BASE_DEC, NULL, 0,
6534 "SigParamValues", HFILL }},
6535 { &hf_h248_extraInfo,
6536 { "extraInfo", "h248.extraInfo",
6537 FT_UINT32, BASE_DEC, VALS(h248_T_extraInfo_vals), 0,
6539 { &hf_h248_SigParamValues_item,
6540 { "SigParamValue", "h248.SigParamValue",
6541 FT_BYTES, BASE_NONE, NULL, 0,
6544 { "mtl", "h248.mtl",
6545 FT_UINT32, BASE_DEC, NULL, 0,
6546 "SEQUENCE_OF_ModemType", HFILL }},
6547 { &hf_h248_mtl_item,
6548 { "ModemType", "h248.ModemType",
6549 FT_UINT32, BASE_DEC, VALS(h248_ModemType_vals), 0,
6552 { "mpl", "h248.mpl",
6553 FT_UINT32, BASE_DEC, NULL, 0,
6554 "SEQUENCE_OF_PropertyParm", HFILL }},
6555 { &hf_h248_mpl_item,
6556 { "PropertyParm", "h248.PropertyParm",
6557 FT_NONE, BASE_NONE, NULL, 0,
6559 { &hf_h248_startTimer,
6560 { "startTimer", "h248.startTimer",
6561 FT_UINT32, BASE_DEC, NULL, 0,
6562 "INTEGER_0_99", HFILL }},
6563 { &hf_h248_shortTimer,
6564 { "shortTimer", "h248.shortTimer",
6565 FT_UINT32, BASE_DEC, NULL, 0,
6566 "INTEGER_0_99", HFILL }},
6567 { &hf_h248_longTimer,
6568 { "longTimer", "h248.longTimer",
6569 FT_UINT32, BASE_DEC, NULL, 0,
6570 "INTEGER_0_99", HFILL }},
6571 { &hf_h248_digitMapBody,
6572 { "digitMapBody", "h248.digitMapBody",
6573 FT_STRING, BASE_NONE, NULL, 0,
6574 "IA5String", HFILL }},
6575 { &hf_h248_durationTimer,
6576 { "durationTimer", "h248.durationTimer",
6577 FT_UINT32, BASE_DEC, NULL, 0,
6578 "INTEGER_0_99", HFILL }},
6579 { &hf_h248_serviceChangeMethod,
6580 { "serviceChangeMethod", "h248.serviceChangeMethod",
6581 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeMethod_vals), 0,
6583 { &hf_h248_serviceChangeAddress,
6584 { "serviceChangeAddress", "h248.serviceChangeAddress",
6585 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeAddress_vals), 0,
6587 { &hf_h248_serviceChangeVersion,
6588 { "serviceChangeVersion", "h248.serviceChangeVersion",
6589 FT_UINT32, BASE_DEC, NULL, 0,
6590 "INTEGER_0_99", HFILL }},
6591 { &hf_h248_serviceChangeProfile,
6592 { "serviceChangeProfile", "h248.serviceChangeProfile",
6593 FT_NONE, BASE_NONE, NULL, 0,
6595 { &hf_h248_serviceChangeReason,
6596 { "serviceChangeReason", "h248.serviceChangeReason",
6597 FT_UINT32, BASE_DEC, NULL, 0,
6598 "SCreasonValue", HFILL }},
6599 { &hf_h248_serviceChangeDelay,
6600 { "serviceChangeDelay", "h248.serviceChangeDelay",
6601 FT_UINT32, BASE_DEC, NULL, 0,
6602 "INTEGER_0_4294967295", HFILL }},
6603 { &hf_h248_serviceChangeMgcId,
6604 { "serviceChangeMgcId", "h248.serviceChangeMgcId",
6605 FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
6607 { &hf_h248_timeStamp,
6608 { "timeStamp", "h248.timeStamp",
6609 FT_NONE, BASE_NONE, NULL, 0,
6610 "TimeNotation", HFILL }},
6611 { &hf_h248_serviceChangeInfo,
6612 { "serviceChangeInfo", "h248.serviceChangeInfo",
6613 FT_NONE, BASE_NONE, NULL, 0,
6614 "AuditDescriptor", HFILL }},
6615 { &hf_h248_serviceChangeIncompleteFlag,
6616 { "serviceChangeIncompleteFlag", "h248.serviceChangeIncompleteFlag",
6617 FT_NONE, BASE_NONE, NULL, 0,
6619 { &hf_h248_SCreasonValue_item,
6620 { "SCreasonValueOctetStr", "h248.SCreasonValueOctetStr",
6621 FT_BYTES, BASE_NONE, NULL, 0,
6623 { &hf_h248_timestamp,
6624 { "timestamp", "h248.timestamp",
6625 FT_NONE, BASE_NONE, NULL, 0,
6626 "TimeNotation", HFILL }},
6627 { &hf_h248_profileName,
6628 { "profileName", "h248.profileName",
6629 FT_STRING, BASE_NONE, NULL, 0,
6630 "IA5String_SIZE_1_67", HFILL }},
6631 { &hf_h248_PackagesDescriptor_item,
6632 { "PackagesItem", "h248.PackagesItem",
6633 FT_NONE, BASE_NONE, NULL, 0,
6635 { &hf_h248_StatisticsDescriptor_item,
6636 { "StatisticsParameter", "h248.StatisticsParameter",
6637 FT_NONE, BASE_NONE, NULL, 0,
6639 { &hf_h248_statName,
6640 { "statName", "h248.statName",
6641 FT_BYTES, BASE_NONE, NULL, 0,
6643 { &hf_h248_statValue,
6644 { "statValue", "h248.statValue",
6645 FT_UINT32, BASE_DEC, NULL, 0,
6647 { &hf_h248_nonStandardIdentifier,
6648 { "nonStandardIdentifier", "h248.nonStandardIdentifier",
6649 FT_UINT32, BASE_DEC, VALS(h248_NonStandardIdentifier_vals), 0,
6652 { "data", "h248.data",
6653 FT_BYTES, BASE_NONE, NULL, 0,
6654 "OCTET_STRING", HFILL }},
6656 { "object", "h248.object",
6657 FT_OID, BASE_NONE, NULL, 0,
6658 "OBJECT_IDENTIFIER", HFILL }},
6659 { &hf_h248_h221NonStandard,
6660 { "h221NonStandard", "h248.h221NonStandard",
6661 FT_NONE, BASE_NONE, NULL, 0,
6663 { &hf_h248_experimental,
6664 { "experimental", "h248.experimental",
6665 FT_STRING, BASE_NONE, NULL, 0,
6666 "IA5String_SIZE_8", HFILL }},
6667 { &hf_h248_t35CountryCode1,
6668 { "t35CountryCode1", "h248.t35CountryCode1",
6669 FT_UINT32, BASE_DEC, NULL, 0,
6670 "INTEGER_0_255", HFILL }},
6671 { &hf_h248_t35CountryCode2,
6672 { "t35CountryCode2", "h248.t35CountryCode2",
6673 FT_UINT32, BASE_DEC, NULL, 0,
6674 "INTEGER_0_255", HFILL }},
6675 { &hf_h248_t35Extension,
6676 { "t35Extension", "h248.t35Extension",
6677 FT_UINT32, BASE_DEC, NULL, 0,
6678 "INTEGER_0_255", HFILL }},
6679 { &hf_h248_manufacturerCode,
6680 { "manufacturerCode", "h248.manufacturerCode",
6681 FT_UINT32, BASE_DEC, NULL, 0,
6682 "INTEGER_0_65535", HFILL }},
6684 { "date", "h248.date",
6685 FT_STRING, BASE_NONE, NULL, 0,
6686 "IA5String_SIZE_8", HFILL }},
6688 { "time", "h248.time",
6689 FT_STRING, BASE_NONE, NULL, 0,
6690 "IA5String_SIZE_8", HFILL }},
6691 { &hf_h248_Value_item,
6692 { "Value item", "h248.Value_item",
6693 FT_BYTES, BASE_NONE, NULL, 0,
6694 "OCTET_STRING", HFILL }},
6695 { &hf_h248_audit_result,
6696 { "auditResult", "h248.auditResult",
6697 FT_UINT32, BASE_DEC, VALS(h248_AuditResultV1_vals), 0,
6698 "AuditResultV1", HFILL }},
6699 { &hf_h248_contectAuditResult,
6700 { "contectAuditResult", "h248.contectAuditResult",
6701 FT_NONE, BASE_NONE, NULL, 0,
6702 "TerminationID", HFILL }},
6703 { &hf_h248_eventParamterName,
6704 { "eventParamterName", "h248.eventParamterName",
6705 FT_BYTES, BASE_NONE, NULL, 0,
6706 "EventParameterName", HFILL }},
6707 { &hf_h248_event_param_value,
6708 { "value", "h248.value",
6709 FT_BYTES, BASE_NONE, NULL, 0,
6710 "EventParamValueV1", HFILL }},
6711 { &hf_h248_sig_param_value,
6712 { "value", "h248.value",
6713 FT_BYTES, BASE_NONE, NULL, 0,
6714 "SigParamValueV1", HFILL }},
6715 { &hf_h248_T_auditToken_muxToken,
6716 { "muxToken", "h248.muxToken",
6717 FT_BOOLEAN, 8, NULL, 0x80,
6719 { &hf_h248_T_auditToken_modemToken,
6720 { "modemToken", "h248.modemToken",
6721 FT_BOOLEAN, 8, NULL, 0x40,
6723 { &hf_h248_T_auditToken_mediaToken,
6724 { "mediaToken", "h248.mediaToken",
6725 FT_BOOLEAN, 8, NULL, 0x20,
6727 { &hf_h248_T_auditToken_eventsToken,
6728 { "eventsToken", "h248.eventsToken",
6729 FT_BOOLEAN, 8, NULL, 0x10,
6731 { &hf_h248_T_auditToken_signalsToken,
6732 { "signalsToken", "h248.signalsToken",
6733 FT_BOOLEAN, 8, NULL, 0x08,
6735 { &hf_h248_T_auditToken_digitMapToken,
6736 { "digitMapToken", "h248.digitMapToken",
6737 FT_BOOLEAN, 8, NULL, 0x04,
6739 { &hf_h248_T_auditToken_statsToken,
6740 { "statsToken", "h248.statsToken",
6741 FT_BOOLEAN, 8, NULL, 0x02,
6743 { &hf_h248_T_auditToken_observedEventsToken,
6744 { "observedEventsToken", "h248.observedEventsToken",
6745 FT_BOOLEAN, 8, NULL, 0x01,
6747 { &hf_h248_T_auditToken_packagesToken,
6748 { "packagesToken", "h248.packagesToken",
6749 FT_BOOLEAN, 8, NULL, 0x80,
6751 { &hf_h248_T_auditToken_eventBufferToken,
6752 { "eventBufferToken", "h248.eventBufferToken",
6753 FT_BOOLEAN, 8, NULL, 0x40,
6755 { &hf_h248_NotifyCompletion_onTimeOut,
6756 { "onTimeOut", "h248.onTimeOut",
6757 FT_BOOLEAN, 8, NULL, 0x80,
6759 { &hf_h248_NotifyCompletion_onInterruptByEvent,
6760 { "onInterruptByEvent", "h248.onInterruptByEvent",
6761 FT_BOOLEAN, 8, NULL, 0x40,
6763 { &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr,
6764 { "onInterruptByNewSignalDescr", "h248.onInterruptByNewSignalDescr",
6765 FT_BOOLEAN, 8, NULL, 0x20,
6767 { &hf_h248_NotifyCompletion_otherReason,
6768 { "otherReason", "h248.otherReason",
6769 FT_BOOLEAN, 8, NULL, 0x10,
6771 { &hf_h248_NotifyCompletion_onIteration,
6772 { "onIteration", "h248.onIteration",
6773 FT_BOOLEAN, 8, NULL, 0x08,
6776 /*--- End of included file: packet-h248-hfarr.c ---*/
6777 #line 1560 "../../asn1/h248/packet-h248-template.c"
6779 GCP_HF_ARR_ELEMS("h248",h248_arrel)
6783 /* List of subtrees */
6784 static gint *ett[] = {
6793 GCP_ETT_ARR_ELEMS(h248_arrel),
6796 /*--- Included file: packet-h248-ettarr.c ---*/
6797 #line 1 "../../asn1/h248/packet-h248-ettarr.c"
6798 &ett_h248_MegacoMessage,
6799 &ett_h248_AuthenticationHeader,
6801 &ett_h248_T_messageBody,
6802 &ett_h248_SEQUENCE_OF_Transaction,
6804 &ett_h248_DomainName,
6805 &ett_h248_IP4Address,
6806 &ett_h248_IP6Address,
6807 &ett_h248_Transaction,
6808 &ett_h248_TransactionRequest,
6809 &ett_h248_SEQUENCE_OF_ActionRequest,
6810 &ett_h248_TransactionPending,
6811 &ett_h248_TransactionReply,
6812 &ett_h248_T_transactionResult,
6813 &ett_h248_SEQUENCE_OF_ActionReply,
6814 &ett_h248_SegmentReply,
6815 &ett_h248_TransactionResponseAck,
6816 &ett_h248_TransactionAck,
6817 &ett_h248_ErrorDescriptor,
6818 &ett_h248_ActionRequest,
6819 &ett_h248_SEQUENCE_OF_CommandRequest,
6820 &ett_h248_ActionReply,
6821 &ett_h248_SEQUENCE_OF_CommandReply,
6822 &ett_h248_ContextRequest,
6823 &ett_h248_T_topologyReq,
6824 &ett_h248_SEQUENCE_OF_PropertyParm,
6825 &ett_h248_SEQUENCE_OF_ContextIDinList,
6826 &ett_h248_ContextAttrAuditRequest,
6827 &ett_h248_SEQUENCE_OF_IndAudPropertyParm,
6828 &ett_h248_SelectLogic,
6829 &ett_h248_CommandRequest,
6831 &ett_h248_CommandReply,
6832 &ett_h248_TopologyRequest,
6833 &ett_h248_AmmRequest,
6834 &ett_h248_SEQUENCE_OF_AmmDescriptor,
6835 &ett_h248_AmmDescriptor,
6836 &ett_h248_AmmsReply,
6837 &ett_h248_SubtractRequest,
6838 &ett_h248_AuditRequest,
6839 &ett_h248_AuditReply,
6840 &ett_h248_AuditResult,
6841 &ett_h248_TermListAuditResult,
6842 &ett_h248_TerminationAudit,
6843 &ett_h248_AuditReturnParameter,
6844 &ett_h248_AuditDescriptor,
6845 &ett_h248_T_auditToken,
6846 &ett_h248_SEQUENCE_OF_IndAuditParameter,
6847 &ett_h248_IndAuditParameter,
6848 &ett_h248_IndAudMediaDescriptor,
6849 &ett_h248_IndAudMediaDescriptorStreams,
6850 &ett_h248_SEQUENCE_OF_IndAudStreamDescriptor,
6851 &ett_h248_IndAudStreamDescriptor,
6852 &ett_h248_IndAudStreamParms,
6853 &ett_h248_IndAudLocalControlDescriptor,
6854 &ett_h248_IndAudPropertyParm,
6855 &ett_h248_IndAudLocalRemoteDescriptor,
6856 &ett_h248_IndAudPropertyGroup,
6857 &ett_h248_IndAudTerminationStateDescriptor,
6858 &ett_h248_IndAudEventsDescriptor,
6859 &ett_h248_IndAudEventBufferDescriptor,
6860 &ett_h248_IndAudSignalsDescriptor,
6861 &ett_h248_IndAudSeqSigList,
6862 &ett_h248_IndAudSignal,
6863 &ett_h248_IndAudDigitMapDescriptor,
6864 &ett_h248_IndAudStatisticsDescriptor,
6865 &ett_h248_IndAudPackagesDescriptor,
6866 &ett_h248_NotifyRequest,
6867 &ett_h248_NotifyReply,
6868 &ett_h248_ObservedEventsDescriptor,
6869 &ett_h248_SEQUENCE_OF_ObservedEvent,
6870 &ett_h248_ObservedEvent,
6871 &ett_h248_SEQUENCE_OF_EventParameter,
6872 &ett_h248_EventParameter,
6873 &ett_h248_EventPar_extraInfo,
6874 &ett_h248_EventParamValues,
6875 &ett_h248_ServiceChangeRequest,
6876 &ett_h248_ServiceChangeReply,
6877 &ett_h248_ServiceChangeResult,
6878 &ett_h248_TerminationID,
6879 &ett_h248_SEQUENCE_OF_WildcardField,
6880 &ett_h248_TerminationIDList,
6881 &ett_h248_MediaDescriptor,
6882 &ett_h248_T_streams,
6883 &ett_h248_SEQUENCE_OF_StreamDescriptor,
6884 &ett_h248_StreamDescriptor,
6885 &ett_h248_StreamParms,
6886 &ett_h248_LocalControlDescriptor,
6887 &ett_h248_PropertyParm,
6888 &ett_h248_SEQUENCE_OF_PropertyID,
6889 &ett_h248_PropParm_extraInfo,
6890 &ett_h248_LocalRemoteDescriptor,
6891 &ett_h248_SEQUENCE_OF_PropertyGroup,
6892 &ett_h248_PropertyGroup,
6893 &ett_h248_TerminationStateDescriptor,
6894 &ett_h248_MuxDescriptor,
6895 &ett_h248_SEQUENCE_OF_TerminationID,
6896 &ett_h248_EventsDescriptor,
6897 &ett_h248_SEQUENCE_OF_RequestedEvent,
6898 &ett_h248_RequestedEvent,
6899 &ett_h248_RegulatedEmbeddedDescriptor,
6900 &ett_h248_NotifyBehaviour,
6901 &ett_h248_RequestedActions,
6903 &ett_h248_SecondEventsDescriptor,
6904 &ett_h248_SEQUENCE_OF_SecondRequestedEvent,
6905 &ett_h248_SecondRequestedEvent,
6906 &ett_h248_SecondRequestedActions,
6907 &ett_h248_EventBufferDescriptor,
6908 &ett_h248_EventSpec,
6909 &ett_h248_SignalsDescriptor,
6910 &ett_h248_SignalRequest,
6911 &ett_h248_SeqSigList,
6912 &ett_h248_SEQUENCE_OF_Signal,
6914 &ett_h248_SEQUENCE_OF_SigParameter,
6915 &ett_h248_NotifyCompletion,
6916 &ett_h248_SigParameter,
6917 &ett_h248_T_extraInfo,
6918 &ett_h248_SigParamValues,
6919 &ett_h248_ModemDescriptor,
6920 &ett_h248_SEQUENCE_OF_ModemType,
6921 &ett_h248_DigitMapDescriptor,
6922 &ett_h248_DigitMapValue,
6923 &ett_h248_ServiceChangeParm,
6924 &ett_h248_SCreasonValue,
6925 &ett_h248_ServiceChangeAddress,
6926 &ett_h248_ServiceChangeResParm,
6927 &ett_h248_ServiceChangeProfile,
6928 &ett_h248_PackagesDescriptor,
6929 &ett_h248_PackagesItem,
6930 &ett_h248_StatisticsDescriptor,
6931 &ett_h248_StatisticsParameter,
6932 &ett_h248_NonStandardData,
6933 &ett_h248_NonStandardIdentifier,
6934 &ett_h248_H221NonStandard,
6935 &ett_h248_TimeNotation,
6937 &ett_h248_AuditReplyV1,
6938 &ett_h248_AuditResultV1,
6939 &ett_h248_EventParameterV1,
6940 &ett_h248_SigParameterV1,
6942 /*--- End of included file: packet-h248-ettarr.c ---*/
6943 #line 1578 "../../asn1/h248/packet-h248-template.c"
6946 module_t *h248_module;
6949 /* Register protocol */
6950 proto_h248 = proto_register_protocol(PNAME, PSNAME, PFNAME);
6951 register_dissector("h248", dissect_h248, proto_h248);
6952 register_dissector("h248.tpkt", dissect_h248_tpkt, proto_h248);
6954 /* Register fields and subtrees */
6955 proto_register_field_array(proto_h248, hf, array_length(hf));
6956 proto_register_subtree_array(ett, array_length(ett));
6958 subdissector_table = register_dissector_table("h248.magic_num", "H248 Magic Num", FT_UINT32, BASE_HEX);
6960 h248_module = prefs_register_protocol(proto_h248, proto_reg_handoff_h248);
6961 prefs_register_bool_preference(h248_module, "ctx_info",
6963 "Mantain relationships between transactions and contexts and display an extra tree showing context data",
6964 &keep_persistent_data);
6965 prefs_register_uint_preference(h248_module, "udp_port",
6967 "Port to be decoded as h248",
6970 prefs_register_uint_preference(h248_module, "tcp_port",
6972 "Port to be decoded as h248",
6975 prefs_register_bool_preference(h248_module, "desegment",
6976 "Desegment H.248 over TCP",
6977 "Desegment H.248 messages that span more TCP segments",
6980 msgs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_msgs");
6981 trxs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_trxs");
6982 ctxs_by_trx = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_ctxs_by_trx");
6983 ctxs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_ctxs");
6985 h248_tap = register_tap("h248");
6990 /*--- proto_reg_handoff_h248 -------------------------------------------*/
6991 void proto_reg_handoff_h248(void) {
6993 static gboolean initialized = FALSE;
6994 static guint32 udp_port;
6995 static guint32 tcp_port;
6998 h248_handle = find_dissector("h248");
6999 h248_tpkt_handle = find_dissector("h248.tpkt");
7000 dissector_add_uint("mtp3.service_indicator", MTP_SI_GCP, h248_handle);
7001 h248_term_handle = find_dissector("h248term");
7005 dissector_delete_uint("udp.port", udp_port, h248_handle);
7008 dissector_delete_uint("tcp.port", tcp_port, h248_tpkt_handle);
7011 udp_port = global_udp_port;
7012 tcp_port = global_tcp_port;
7014 if (udp_port != 0) {
7015 dissector_add_uint("udp.port", udp_port, h248_handle);
7018 if (tcp_port != 0) {
7019 dissector_add_uint("tcp.port", tcp_port, h248_tpkt_handle);