1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template h248v3.asn */
6 /* Input file: packet-h248-template.c */
8 #line 1 "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 * Ethereal - Network traffic analyzer
19 * By Gerald Combs <gerald@ethereal.com>
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 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
37 #include "packet-h248.h"
39 #define PNAME "H.248 MEGACO"
43 #define GATEWAY_CONTROL_PROTOCOL_USER_ID 14
45 /* Initialize the protocol and registered fields */
46 static int proto_h248 = -1;
47 static int hf_h248_mtpaddress_ni = -1;
48 static int hf_h248_mtpaddress_pc = -1;
49 static int hf_h248_pkg_name = -1;
50 static int hf_248_no_pkg_param = -1;
51 static int hf_h248_event_name = -1;
52 static int hf_h248_signal_name = -1;
53 static int hf_h248_pkg_bcp_BNCChar_PDU = -1;
57 static int hf_h248_context_id = -1;
58 static int hf_h248_error_code = -1;
59 static int hf_h248_term_wild_type = -1;
60 static int hf_h248_term_wild_level = -1;
61 static int hf_h248_term_wild_position = -1;
63 static int hf_h248_ctx = -1;
64 static int hf_h248_ctx_term = -1;
65 static int hf_h248_ctx_term_type = -1;
66 static int hf_h248_ctx_term_bir = -1;
67 static int hf_h248_ctx_term_nsap = -1;
68 static int hf_h248_ctx_cmd = -1;
71 static int hf_h248_no_pkg = -1;
72 static int hf_h248_no_sig = -1;
73 static int hf_h248_no_evt = -1;
74 static int hf_h248_no_param = -1;
76 static int hf_h248_serviceChangeReasonStr = -1;
79 /*--- Included file: packet-h248-hf.c ---*/
80 #line 1 "packet-h248-hf.c"
81 static int hf_h248_authHeader = -1; /* AuthenticationHeader */
82 static int hf_h248_mess = -1; /* Message */
83 static int hf_h248_secParmIndex = -1; /* SecurityParmIndex */
84 static int hf_h248_seqNum = -1; /* SequenceNum */
85 static int hf_h248_ad = -1; /* AuthData */
86 static int hf_h248_version = -1; /* INTEGER_0_99 */
87 static int hf_h248_mId = -1; /* MId */
88 static int hf_h248_messageBody = -1; /* T_messageBody */
89 static int hf_h248_messageError = -1; /* ErrorDescriptor */
90 static int hf_h248_transactions = -1; /* SEQUENCE_OF_Transaction */
91 static int hf_h248_transactions_item = -1; /* Transaction */
92 static int hf_h248_ip4Address = -1; /* IP4Address */
93 static int hf_h248_ip6Address = -1; /* IP6Address */
94 static int hf_h248_domainName = -1; /* DomainName */
95 static int hf_h248_deviceName = -1; /* PathName */
96 static int hf_h248_mtpAddress = -1; /* MtpAddress */
97 static int hf_h248_domName = -1; /* IA5String */
98 static int hf_h248_portNumber = -1; /* INTEGER_0_65535 */
99 static int hf_h248_iP4Address = -1; /* OCTET_STRING_SIZE_4 */
100 static int hf_h248_iP6Address = -1; /* OCTET_STRING_SIZE_16 */
101 static int hf_h248_transactionRequest = -1; /* TransactionRequest */
102 static int hf_h248_transactionPending = -1; /* TransactionPending */
103 static int hf_h248_transactionReply = -1; /* TransactionReply */
104 static int hf_h248_transactionResponseAck = -1; /* TransactionResponseAck */
105 static int hf_h248_segmentReply = -1; /* SegmentReply */
106 static int hf_h248_transactionId = -1; /* transactionId */
107 static int hf_h248_actions = -1; /* SEQUENCE_OF_ActionRequest */
108 static int hf_h248_actions_item = -1; /* ActionRequest */
109 static int hf_h248_immAckRequired = -1; /* NULL */
110 static int hf_h248_transactionResult = -1; /* T_transactionResult */
111 static int hf_h248_transactionError = -1; /* ErrorDescriptor */
112 static int hf_h248_actionReplies = -1; /* SEQUENCE_OF_ActionReply */
113 static int hf_h248_actionReplies_item = -1; /* ActionReply */
114 static int hf_h248_segmentNumber = -1; /* SegmentNumber */
115 static int hf_h248_segmentationComplete = -1; /* NULL */
116 static int hf_h248_transactionId1 = -1; /* TransactionId */
117 static int hf_h248_TransactionResponseAck_item = -1; /* TransactionAck */
118 static int hf_h248_firstAck = -1; /* TransactionId */
119 static int hf_h248_lastAck = -1; /* TransactionId */
120 static int hf_h248_errorCode = -1; /* T_errorCode */
121 static int hf_h248_errorText = -1; /* ErrorText */
122 static int hf_h248_contextId = -1; /* contextId */
123 static int hf_h248_contextRequest = -1; /* ContextRequest */
124 static int hf_h248_contextAttrAuditReq = -1; /* T_contextAttrAuditReq */
125 static int hf_h248_commandRequests = -1; /* SEQUENCE_OF_CommandRequest */
126 static int hf_h248_commandRequests_item = -1; /* CommandRequest */
127 static int hf_h248_errorDescriptor = -1; /* ErrorDescriptor */
128 static int hf_h248_contextReply = -1; /* ContextRequest */
129 static int hf_h248_commandReply = -1; /* SEQUENCE_OF_CommandReply */
130 static int hf_h248_commandReply_item = -1; /* CommandReply */
131 static int hf_h248_priority = -1; /* INTEGER_0_15 */
132 static int hf_h248_emergency = -1; /* BOOLEAN */
133 static int hf_h248_topologyReq = -1; /* T_topologyReq */
134 static int hf_h248_topologyReq_item = -1; /* TopologyRequest */
135 static int hf_h248_iepscallind = -1; /* BOOLEAN */
136 static int hf_h248_contextProp = -1; /* SEQUENCE_OF_PropertyParm */
137 static int hf_h248_contextProp_item = -1; /* PropertyParm */
138 static int hf_h248_contextList = -1; /* SEQUENCE_OF_ContextID */
139 static int hf_h248_contextList_item = -1; /* ContextID */
140 static int hf_h248_topology = -1; /* NULL */
141 static int hf_h248_cAAREmergency = -1; /* NULL */
142 static int hf_h248_cAARPriority = -1; /* NULL */
143 static int hf_h248_iepscallind1 = -1; /* NULL */
144 static int hf_h248_contextPropAud = -1; /* SEQUENCE_OF_IndAudPropertyParm */
145 static int hf_h248_contextPropAud_item = -1; /* IndAudPropertyParm */
146 static int hf_h248_selectpriority = -1; /* INTEGER_0_15 */
147 static int hf_h248_selectemergency = -1; /* BOOLEAN */
148 static int hf_h248_selectiepscallind = -1; /* BOOLEAN */
149 static int hf_h248_selectLogic = -1; /* SelectLogic */
150 static int hf_h248_andAUDITSelect = -1; /* NULL */
151 static int hf_h248_orAUDITSelect = -1; /* NULL */
152 static int hf_h248_command = -1; /* Command */
153 static int hf_h248_optional = -1; /* NULL */
154 static int hf_h248_wildcardReturn = -1; /* NULL */
155 static int hf_h248_addReq = -1; /* T_addReq */
156 static int hf_h248_moveReq = -1; /* T_moveReq */
157 static int hf_h248_modReq = -1; /* T_modReq */
158 static int hf_h248_subtractReq = -1; /* T_subtractReq */
159 static int hf_h248_auditCapRequest = -1; /* T_auditCapRequest */
160 static int hf_h248_auditValueRequest = -1; /* T_auditValueRequest */
161 static int hf_h248_notifyReq = -1; /* T_notifyReq */
162 static int hf_h248_serviceChangeReq = -1; /* ServiceChangeRequest */
163 static int hf_h248_addReply = -1; /* T_addReply */
164 static int hf_h248_moveReply = -1; /* T_moveReply */
165 static int hf_h248_modReply = -1; /* T_modReply */
166 static int hf_h248_subtractReply = -1; /* T_subtractReply */
167 static int hf_h248_auditCapReply = -1; /* T_auditCapReply */
168 static int hf_h248_auditValueReply = -1; /* T_auditValueReply */
169 static int hf_h248_notifyReply = -1; /* T_notifyReply */
170 static int hf_h248_serviceChangeReply = -1; /* ServiceChangeReply */
171 static int hf_h248_terminationFrom = -1; /* TerminationID */
172 static int hf_h248_terminationTo = -1; /* TerminationID */
173 static int hf_h248_topologyDirection = -1; /* T_topologyDirection */
174 static int hf_h248_streamID = -1; /* StreamID */
175 static int hf_h248_topologyDirectionExtension = -1; /* T_topologyDirectionExtension */
176 static int hf_h248_terminationIDList = -1; /* TerminationIDList */
177 static int hf_h248_descriptors = -1; /* SEQUENCE_OF_AmmDescriptor */
178 static int hf_h248_descriptors_item = -1; /* AmmDescriptor */
179 static int hf_h248_mediaDescriptor = -1; /* MediaDescriptor */
180 static int hf_h248_modemDescriptor = -1; /* ModemDescriptor */
181 static int hf_h248_muxDescriptor = -1; /* MuxDescriptor */
182 static int hf_h248_eventsDescriptor = -1; /* EventsDescriptor */
183 static int hf_h248_eventBufferDescriptor = -1; /* EventBufferDescriptor */
184 static int hf_h248_signalsDescriptor = -1; /* SignalsDescriptor */
185 static int hf_h248_digitMapDescriptor = -1; /* DigitMapDescriptor */
186 static int hf_h248_auditDescriptor = -1; /* AuditDescriptor */
187 static int hf_h248_statisticsDescriptor = -1; /* StatisticsDescriptor */
188 static int hf_h248_terminationAudit = -1; /* TerminationAudit */
189 static int hf_h248_terminationID = -1; /* TerminationID */
190 static int hf_h248_contextAuditResult = -1; /* TerminationIDList */
191 static int hf_h248_error = -1; /* ErrorDescriptor */
192 static int hf_h248_auditResult = -1; /* AuditResult */
193 static int hf_h248_auditResultTermList = -1; /* TermListAuditResult */
194 static int hf_h248_terminationAuditResult = -1; /* TerminationAudit */
195 static int hf_h248_TerminationAudit_item = -1; /* AuditReturnParameter */
196 static int hf_h248_observedEventsDescriptor = -1; /* ObservedEventsDescriptor */
197 static int hf_h248_packagesDescriptor = -1; /* PackagesDescriptor */
198 static int hf_h248_emptyDescriptors = -1; /* AuditDescriptor */
199 static int hf_h248_auditToken = -1; /* T_auditToken */
200 static int hf_h248_auditPropertyToken = -1; /* SEQUENCE_OF_IndAuditParameter */
201 static int hf_h248_auditPropertyToken_item = -1; /* IndAuditParameter */
202 static int hf_h248_indaudmediaDescriptor = -1; /* IndAudMediaDescriptor */
203 static int hf_h248_indaudeventsDescriptor = -1; /* IndAudEventsDescriptor */
204 static int hf_h248_indaudeventBufferDescriptor = -1; /* IndAudEventBufferDescriptor */
205 static int hf_h248_indaudsignalsDescriptor = -1; /* IndAudSignalsDescriptor */
206 static int hf_h248_indauddigitMapDescriptor = -1; /* IndAudDigitMapDescriptor */
207 static int hf_h248_indaudstatisticsDescriptor = -1; /* IndAudStatisticsDescriptor */
208 static int hf_h248_indaudpackagesDescriptor = -1; /* IndAudPackagesDescriptor */
209 static int hf_h248_indAudTerminationStateDescriptor = -1; /* IndAudTerminationStateDescriptor */
210 static int hf_h248_indAudMediaDescriptorStreams = -1; /* indAudMediaDescriptorStreams */
211 static int hf_h248_oneStream = -1; /* IndAudStreamParms */
212 static int hf_h248_multiStream = -1; /* SEQUENCE_OF_IndAudStreamDescriptor */
213 static int hf_h248_multiStream_item = -1; /* IndAudStreamDescriptor */
214 static int hf_h248_indAudStreamParms = -1; /* IndAudStreamParms */
215 static int hf_h248_iASPLocalControlDescriptor = -1; /* IndAudLocalControlDescriptor */
216 static int hf_h248_iASPLocalDescriptor = -1; /* IndAudLocalRemoteDescriptor */
217 static int hf_h248_iASPRemoteDescriptor = -1; /* IndAudLocalRemoteDescriptor */
218 static int hf_h248_statisticsDescriptor1 = -1; /* IndAudStatisticsDescriptor */
219 static int hf_h248_iALCDStreamMode = -1; /* NULL */
220 static int hf_h248_iALCDReserveValue = -1; /* NULL */
221 static int hf_h248_iALCDReserveGroup = -1; /* NULL */
222 static int hf_h248_indAudPropertyParms = -1; /* SEQUENCE_OF_IndAudPropertyParm */
223 static int hf_h248_indAudPropertyParms_item = -1; /* IndAudPropertyParm */
224 static int hf_h248_streamModeSel = -1; /* StreamMode */
225 static int hf_h248_name = -1; /* PkgdName */
226 static int hf_h248_propertyParms = -1; /* PropertyParm */
227 static int hf_h248_propGroupID = -1; /* INTEGER_0_65535 */
228 static int hf_h248_iAPropertyGroup = -1; /* IndAudPropertyGroup */
229 static int hf_h248_IndAudPropertyGroup_item = -1; /* IndAudPropertyParm */
230 static int hf_h248_eventBufferControl = -1; /* NULL */
231 static int hf_h248_iATSDServiceState = -1; /* NULL */
232 static int hf_h248_serviceStateSel = -1; /* ServiceState */
233 static int hf_h248_requestID = -1; /* RequestID */
234 static int hf_h248_iAEDPkgdName = -1; /* PkgdName */
235 static int hf_h248_iAEBDEventName = -1; /* PkgdName */
236 static int hf_h248_indAudSignal = -1; /* IndAudSignal */
237 static int hf_h248_indAudSeqSigList = -1; /* IndAudSeqSigList */
238 static int hf_h248_id = -1; /* INTEGER_0_65535 */
239 static int hf_h248_iASignalList = -1; /* IndAudSignal */
240 static int hf_h248_iASignalName = -1; /* PkgdName */
241 static int hf_h248_signalRequestID = -1; /* RequestID */
242 static int hf_h248_digitMapName = -1; /* DigitMapName */
243 static int hf_h248_iAStatName = -1; /* PkgdName */
244 static int hf_h248_packageName = -1; /* Name */
245 static int hf_h248_packageVersion = -1; /* INTEGER_0_99 */
246 static int hf_h248_requestId = -1; /* RequestID */
247 static int hf_h248_observedEventLst = -1; /* SEQUENCE_OF_ObservedEvent */
248 static int hf_h248_observedEventLst_item = -1; /* ObservedEvent */
249 static int hf_h248_eventName = -1; /* EventName */
250 static int hf_h248_eventParList = -1; /* SEQUENCE_OF_EventParameter */
251 static int hf_h248_eventParList_item = -1; /* EventParameter */
252 static int hf_h248_timeNotation = -1; /* TimeNotation */
253 static int hf_h248_eventParameterName = -1; /* EventParameterName */
254 static int hf_h248_eventParamValue = -1; /* EventParamValues */
255 static int hf_h248_extraInfo = -1; /* T_extraInfo */
256 static int hf_h248_relation = -1; /* Relation */
257 static int hf_h248_range = -1; /* BOOLEAN */
258 static int hf_h248_sublist = -1; /* BOOLEAN */
259 static int hf_h248_EventParamValues_item = -1; /* EventParamValue */
260 static int hf_h248_serviceChangeParms = -1; /* ServiceChangeParm */
261 static int hf_h248_serviceChangeResult = -1; /* ServiceChangeResult */
262 static int hf_h248_serviceChangeResParms = -1; /* ServiceChangeResParm */
263 static int hf_h248_wildcard = -1; /* SEQUENCE_OF_WildcardField */
264 static int hf_h248_wildcard_item = -1; /* WildcardField */
265 static int hf_h248_terminationId = -1; /* T_terminationId */
266 static int hf_h248_TerminationIDList_item = -1; /* TerminationID */
267 static int hf_h248_termStateDescr = -1; /* TerminationStateDescriptor */
268 static int hf_h248_streams = -1; /* T_streams */
269 static int hf_h248_mediaDescriptorOneStream = -1; /* StreamParms */
270 static int hf_h248_mediaDescriptorMultiStream = -1; /* SEQUENCE_OF_StreamDescriptor */
271 static int hf_h248_mediaDescriptorMultiStream_item = -1; /* StreamDescriptor */
272 static int hf_h248_streamParms = -1; /* StreamParms */
273 static int hf_h248_localControlDescriptor = -1; /* LocalControlDescriptor */
274 static int hf_h248_localDescriptor = -1; /* LocalRemoteDescriptor */
275 static int hf_h248_remoteDescriptor = -1; /* LocalRemoteDescriptor */
276 static int hf_h248_streamMode = -1; /* StreamMode */
277 static int hf_h248_reserveValue = -1; /* BOOLEAN */
278 static int hf_h248_reserveGroup = -1; /* BOOLEAN */
279 static int hf_h248_propertyParms1 = -1; /* SEQUENCE_OF_PropertyParm */
280 static int hf_h248_propertyParms_item = -1; /* PropertyParm */
281 static int hf_h248_propertyName = -1; /* PropertyName */
282 static int hf_h248_propertyParamValue = -1; /* SEQUENCE_OF_PropertyID */
283 static int hf_h248_propertyParamValue_item = -1; /* PropertyID */
284 static int hf_h248_extraInfo1 = -1; /* T_extraInfo1 */
285 static int hf_h248_propGrps = -1; /* SEQUENCE_OF_PropertyGroup */
286 static int hf_h248_propGrps_item = -1; /* PropertyGroup */
287 static int hf_h248_PropertyGroup_item = -1; /* PropertyParm */
288 static int hf_h248_tSEventBufferControl = -1; /* EventBufferControl */
289 static int hf_h248_serviceState = -1; /* ServiceState */
290 static int hf_h248_muxType = -1; /* MuxType */
291 static int hf_h248_termList = -1; /* SEQUENCE_OF_TerminationID */
292 static int hf_h248_termList_item = -1; /* TerminationID */
293 static int hf_h248_nonStandardData = -1; /* NonStandardData */
294 static int hf_h248_eventList = -1; /* SEQUENCE_OF_RequestedEvent */
295 static int hf_h248_eventList_item = -1; /* RequestedEvent */
296 static int hf_h248_pkgdName = -1; /* EventName */
297 static int hf_h248_eventAction = -1; /* RequestedActions */
298 static int hf_h248_evParList = -1; /* SEQUENCE_OF_EventParameter */
299 static int hf_h248_evParList_item = -1; /* EventParameter */
300 static int hf_h248_secondEvent = -1; /* SecondEventsDescriptor */
301 static int hf_h248_notifyImmediate = -1; /* NULL */
302 static int hf_h248_notifyRegulated = -1; /* RegulatedEmbeddedDescriptor */
303 static int hf_h248_neverNotify = -1; /* NULL */
304 static int hf_h248_keepActive = -1; /* BOOLEAN */
305 static int hf_h248_eventDM = -1; /* EventDM */
306 static int hf_h248_notifyBehaviour = -1; /* NotifyBehaviour */
307 static int hf_h248_resetEventsDescriptor = -1; /* NULL */
308 static int hf_h248_digitMapValue = -1; /* DigitMapValue */
309 static int hf_h248_secondaryEventList = -1; /* SEQUENCE_OF_SecondRequestedEvent */
310 static int hf_h248_secondaryEventList_item = -1; /* SecondRequestedEvent */
311 static int hf_h248_pkgdName1 = -1; /* PkgdName */
312 static int hf_h248_secondaryEventAction = -1; /* SecondRequestedActions */
313 static int hf_h248_EventBufferDescriptor_item = -1; /* EventSpec */
314 static int hf_h248_SignalsDescriptor_item = -1; /* SignalRequest */
315 static int hf_h248_signal = -1; /* Signal */
316 static int hf_h248_seqSigList = -1; /* SeqSigList */
317 static int hf_h248_signalList = -1; /* SEQUENCE_OF_Signal */
318 static int hf_h248_signalList_item = -1; /* Signal */
319 static int hf_h248_signalName = -1; /* SignalName */
320 static int hf_h248_sigType = -1; /* SignalType */
321 static int hf_h248_duration = -1; /* INTEGER_0_65535 */
322 static int hf_h248_notifyCompletion = -1; /* NotifyCompletion */
323 static int hf_h248_sigParList = -1; /* SEQUENCE_OF_SigParameter */
324 static int hf_h248_sigParList_item = -1; /* SigParameter */
325 static int hf_h248_direction = -1; /* SignalDirection */
326 static int hf_h248_intersigDelay = -1; /* INTEGER_0_65535 */
327 static int hf_h248_sigParameterName = -1; /* SigParameterName */
328 static int hf_h248_value = -1; /* SigParamValues */
329 static int hf_h248_extraInfo2 = -1; /* T_extraInfo2 */
330 static int hf_h248_SigParamValues_item = -1; /* SigParamValue */
331 static int hf_h248_mtl = -1; /* SEQUENCE_OF_ModemType */
332 static int hf_h248_mtl_item = -1; /* ModemType */
333 static int hf_h248_mpl = -1; /* SEQUENCE_OF_PropertyParm */
334 static int hf_h248_mpl_item = -1; /* PropertyParm */
335 static int hf_h248_startTimer = -1; /* INTEGER_0_99 */
336 static int hf_h248_shortTimer = -1; /* INTEGER_0_99 */
337 static int hf_h248_longTimer = -1; /* INTEGER_0_99 */
338 static int hf_h248_digitMapBody = -1; /* IA5String */
339 static int hf_h248_durationTimer = -1; /* INTEGER_0_99 */
340 static int hf_h248_serviceChangeMethod = -1; /* ServiceChangeMethod */
341 static int hf_h248_serviceChangeAddress = -1; /* ServiceChangeAddress */
342 static int hf_h248_serviceChangeVersion = -1; /* INTEGER_0_99 */
343 static int hf_h248_serviceChangeProfile = -1; /* ServiceChangeProfile */
344 static int hf_h248_serviceChangeReason = -1; /* SCreasonValue */
345 static int hf_h248_serviceChangeDelay = -1; /* INTEGER_0_4294967295 */
346 static int hf_h248_serviceChangeMgcId = -1; /* MId */
347 static int hf_h248_timeStamp = -1; /* TimeNotation */
348 static int hf_h248_serviceChangeInfo = -1; /* AuditDescriptor */
349 static int hf_h248_serviceChangeIncompleteFlag = -1; /* NULL */
350 static int hf_h248_SCreasonValue_item = -1; /* SCreasonValueOctetStr */
351 static int hf_h248_timestamp = -1; /* TimeNotation */
352 static int hf_h248_profileName = -1; /* IA5String_SIZE_1_67 */
353 static int hf_h248_PackagesDescriptor_item = -1; /* PackagesItem */
354 static int hf_h248_StatisticsDescriptor_item = -1; /* StatisticsParameter */
355 static int hf_h248_statName = -1; /* StatName */
356 static int hf_h248_statValue = -1; /* StatValue */
357 static int hf_h248_nonStandardIdentifier = -1; /* NonStandardIdentifier */
358 static int hf_h248_data = -1; /* OCTET_STRING */
359 static int hf_h248_object = -1; /* OBJECT_IDENTIFIER */
360 static int hf_h248_h221NonStandard = -1; /* H221NonStandard */
361 static int hf_h248_experimental = -1; /* IA5String_SIZE_8 */
362 static int hf_h248_t35CountryCode1 = -1; /* INTEGER_0_255 */
363 static int hf_h248_t35CountryCode2 = -1; /* INTEGER_0_255 */
364 static int hf_h248_t35Extension = -1; /* INTEGER_0_255 */
365 static int hf_h248_manufacturerCode = -1; /* INTEGER_0_65535 */
366 static int hf_h248_date = -1; /* IA5String_SIZE_8 */
367 static int hf_h248_time = -1; /* IA5String_SIZE_8 */
368 static int hf_h248_Value_item = -1; /* OCTET_STRING */
370 static int hf_h248_T_auditToken_muxToken = -1;
371 static int hf_h248_T_auditToken_modemToken = -1;
372 static int hf_h248_T_auditToken_mediaToken = -1;
373 static int hf_h248_T_auditToken_eventsToken = -1;
374 static int hf_h248_T_auditToken_signalsToken = -1;
375 static int hf_h248_T_auditToken_digitMapToken = -1;
376 static int hf_h248_T_auditToken_statsToken = -1;
377 static int hf_h248_T_auditToken_observedEventsToken = -1;
378 static int hf_h248_T_auditToken_packagesToken = -1;
379 static int hf_h248_T_auditToken_eventBufferToken = -1;
380 static int hf_h248_NotifyCompletion_onTimeOut = -1;
381 static int hf_h248_NotifyCompletion_onInterruptByEvent = -1;
382 static int hf_h248_NotifyCompletion_onInterruptByNewSignalDescr = -1;
383 static int hf_h248_NotifyCompletion_otherReason = -1;
384 static int hf_h248_NotifyCompletion_onIteration = -1;
386 /*--- End of included file: packet-h248-hf.c ---*/
387 #line 71 "packet-h248-template.c"
389 /* Initialize the subtree pointers */
390 static gint ett_h248 = -1;
391 static gint ett_mtpaddress = -1;
392 static gint ett_packagename = -1;
393 static gint ett_codec = -1;
394 static gint ett_wildcard = -1;
396 static gint ett_cmd = -1;
397 static gint ett_ctx = -1;
398 static gint ett_ctx_cmds = -1;
399 static gint ett_ctx_terms = -1;
400 static gint ett_ctx_term = -1;
402 static gint ett_h248_no_pkg = -1;
403 static gint ett_h248_no_sig = -1;
404 static gint ett_h248_no_evt = -1;
407 /*--- Included file: packet-h248-ett.c ---*/
408 #line 1 "packet-h248-ett.c"
409 static gint ett_h248_MegacoMessage = -1;
410 static gint ett_h248_AuthenticationHeader = -1;
411 static gint ett_h248_Message = -1;
412 static gint ett_h248_T_messageBody = -1;
413 static gint ett_h248_SEQUENCE_OF_Transaction = -1;
414 static gint ett_h248_MId = -1;
415 static gint ett_h248_DomainName = -1;
416 static gint ett_h248_IP4Address = -1;
417 static gint ett_h248_IP6Address = -1;
418 static gint ett_h248_Transaction = -1;
419 static gint ett_h248_TransactionRequest = -1;
420 static gint ett_h248_SEQUENCE_OF_ActionRequest = -1;
421 static gint ett_h248_TransactionPending = -1;
422 static gint ett_h248_TransactionReply = -1;
423 static gint ett_h248_T_transactionResult = -1;
424 static gint ett_h248_SEQUENCE_OF_ActionReply = -1;
425 static gint ett_h248_SegmentReply = -1;
426 static gint ett_h248_TransactionResponseAck = -1;
427 static gint ett_h248_TransactionAck = -1;
428 static gint ett_h248_ErrorDescriptor = -1;
429 static gint ett_h248_ActionRequest = -1;
430 static gint ett_h248_SEQUENCE_OF_CommandRequest = -1;
431 static gint ett_h248_ActionReply = -1;
432 static gint ett_h248_SEQUENCE_OF_CommandReply = -1;
433 static gint ett_h248_ContextRequest = -1;
434 static gint ett_h248_T_topologyReq = -1;
435 static gint ett_h248_SEQUENCE_OF_PropertyParm = -1;
436 static gint ett_h248_SEQUENCE_OF_ContextID = -1;
437 static gint ett_h248_ContextAttrAuditRequest = -1;
438 static gint ett_h248_SEQUENCE_OF_IndAudPropertyParm = -1;
439 static gint ett_h248_SelectLogic = -1;
440 static gint ett_h248_CommandRequest = -1;
441 static gint ett_h248_Command = -1;
442 static gint ett_h248_CommandReply = -1;
443 static gint ett_h248_TopologyRequest = -1;
444 static gint ett_h248_AmmRequest = -1;
445 static gint ett_h248_SEQUENCE_OF_AmmDescriptor = -1;
446 static gint ett_h248_AmmDescriptor = -1;
447 static gint ett_h248_AmmsReply = -1;
448 static gint ett_h248_SubtractRequest = -1;
449 static gint ett_h248_AuditRequest = -1;
450 static gint ett_h248_AuditReply = -1;
451 static gint ett_h248_AuditResult = -1;
452 static gint ett_h248_TermListAuditResult = -1;
453 static gint ett_h248_TerminationAudit = -1;
454 static gint ett_h248_AuditReturnParameter = -1;
455 static gint ett_h248_AuditDescriptor = -1;
456 static gint ett_h248_T_auditToken = -1;
457 static gint ett_h248_SEQUENCE_OF_IndAuditParameter = -1;
458 static gint ett_h248_IndAuditParameter = -1;
459 static gint ett_h248_IndAudMediaDescriptor = -1;
460 static gint ett_h248_indAudMediaDescriptorStreams = -1;
461 static gint ett_h248_SEQUENCE_OF_IndAudStreamDescriptor = -1;
462 static gint ett_h248_IndAudStreamDescriptor = -1;
463 static gint ett_h248_IndAudStreamParms = -1;
464 static gint ett_h248_IndAudLocalControlDescriptor = -1;
465 static gint ett_h248_IndAudPropertyParm = -1;
466 static gint ett_h248_IndAudLocalRemoteDescriptor = -1;
467 static gint ett_h248_IndAudPropertyGroup = -1;
468 static gint ett_h248_IndAudTerminationStateDescriptor = -1;
469 static gint ett_h248_IndAudEventsDescriptor = -1;
470 static gint ett_h248_IndAudEventBufferDescriptor = -1;
471 static gint ett_h248_IndAudSignalsDescriptor = -1;
472 static gint ett_h248_IndAudSeqSigList = -1;
473 static gint ett_h248_IndAudSignal = -1;
474 static gint ett_h248_IndAudDigitMapDescriptor = -1;
475 static gint ett_h248_IndAudStatisticsDescriptor = -1;
476 static gint ett_h248_IndAudPackagesDescriptor = -1;
477 static gint ett_h248_NotifyRequest = -1;
478 static gint ett_h248_NotifyReply = -1;
479 static gint ett_h248_ObservedEventsDescriptor = -1;
480 static gint ett_h248_SEQUENCE_OF_ObservedEvent = -1;
481 static gint ett_h248_ObservedEvent = -1;
482 static gint ett_h248_SEQUENCE_OF_EventParameter = -1;
483 static gint ett_h248_EventParameter = -1;
484 static gint ett_h248_T_extraInfo = -1;
485 static gint ett_h248_EventParamValues = -1;
486 static gint ett_h248_ServiceChangeRequest = -1;
487 static gint ett_h248_ServiceChangeReply = -1;
488 static gint ett_h248_ServiceChangeResult = -1;
489 static gint ett_h248_TerminationID = -1;
490 static gint ett_h248_SEQUENCE_OF_WildcardField = -1;
491 static gint ett_h248_TerminationIDList = -1;
492 static gint ett_h248_MediaDescriptor = -1;
493 static gint ett_h248_T_streams = -1;
494 static gint ett_h248_SEQUENCE_OF_StreamDescriptor = -1;
495 static gint ett_h248_StreamDescriptor = -1;
496 static gint ett_h248_StreamParms = -1;
497 static gint ett_h248_LocalControlDescriptor = -1;
498 static gint ett_h248_PropertyParm = -1;
499 static gint ett_h248_SEQUENCE_OF_PropertyID = -1;
500 static gint ett_h248_T_extraInfo1 = -1;
501 static gint ett_h248_LocalRemoteDescriptor = -1;
502 static gint ett_h248_SEQUENCE_OF_PropertyGroup = -1;
503 static gint ett_h248_PropertyGroup = -1;
504 static gint ett_h248_TerminationStateDescriptor = -1;
505 static gint ett_h248_MuxDescriptor = -1;
506 static gint ett_h248_SEQUENCE_OF_TerminationID = -1;
507 static gint ett_h248_EventsDescriptor = -1;
508 static gint ett_h248_SEQUENCE_OF_RequestedEvent = -1;
509 static gint ett_h248_RequestedEvent = -1;
510 static gint ett_h248_RegulatedEmbeddedDescriptor = -1;
511 static gint ett_h248_NotifyBehaviour = -1;
512 static gint ett_h248_RequestedActions = -1;
513 static gint ett_h248_EventDM = -1;
514 static gint ett_h248_SecondEventsDescriptor = -1;
515 static gint ett_h248_SEQUENCE_OF_SecondRequestedEvent = -1;
516 static gint ett_h248_SecondRequestedEvent = -1;
517 static gint ett_h248_SecondRequestedActions = -1;
518 static gint ett_h248_EventBufferDescriptor = -1;
519 static gint ett_h248_EventSpec = -1;
520 static gint ett_h248_SignalsDescriptor = -1;
521 static gint ett_h248_SignalRequest = -1;
522 static gint ett_h248_SeqSigList = -1;
523 static gint ett_h248_SEQUENCE_OF_Signal = -1;
524 static gint ett_h248_Signal = -1;
525 static gint ett_h248_SEQUENCE_OF_SigParameter = -1;
526 static gint ett_h248_NotifyCompletion = -1;
527 static gint ett_h248_SigParameter = -1;
528 static gint ett_h248_T_extraInfo2 = -1;
529 static gint ett_h248_SigParamValues = -1;
530 static gint ett_h248_ModemDescriptor = -1;
531 static gint ett_h248_SEQUENCE_OF_ModemType = -1;
532 static gint ett_h248_DigitMapDescriptor = -1;
533 static gint ett_h248_DigitMapValue = -1;
534 static gint ett_h248_ServiceChangeParm = -1;
535 static gint ett_h248_SCreasonValue = -1;
536 static gint ett_h248_ServiceChangeAddress = -1;
537 static gint ett_h248_ServiceChangeResParm = -1;
538 static gint ett_h248_ServiceChangeProfile = -1;
539 static gint ett_h248_PackagesDescriptor = -1;
540 static gint ett_h248_PackagesItem = -1;
541 static gint ett_h248_StatisticsDescriptor = -1;
542 static gint ett_h248_StatisticsParameter = -1;
543 static gint ett_h248_NonStandardData = -1;
544 static gint ett_h248_NonStandardIdentifier = -1;
545 static gint ett_h248_H221NonStandard = -1;
546 static gint ett_h248_TimeNotation = -1;
547 static gint ett_h248_Value = -1;
549 /*--- End of included file: packet-h248-ett.c ---*/
550 #line 90 "packet-h248-template.c"
552 static dissector_handle_t h248_term_handle;
555 static GHashTable* h248_pkg_signals = NULL;
556 static GHashTable* h248_pkg_events = NULL;
557 static GHashTable* h248_pkg_properties = NULL;
558 static GHashTable* h248_wild_terms = NULL;
560 static dissector_table_t h248_pkg_bin_dissector_table=NULL;
563 static emem_tree_t* msgs = NULL;
564 static emem_tree_t* trxs = NULL;
565 static emem_tree_t* ctxs_by_trx = NULL;
566 static emem_tree_t* ctxs = NULL;
568 static gboolean h248_prefs_initialized = FALSE;
569 static gboolean keep_persistent_data = FALSE;
570 static guint32 udp_port = 0;
571 static guint32 temp_udp_port = 0;
574 static proto_tree *h248_tree;
575 static tvbuff_t* h248_tvb;
577 static dissector_handle_t h248_handle;
578 static dissector_handle_t h248_term_handle;
580 /* Forward declarations */
581 static int dissect_h248_ServiceChangeReasonStr(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
584 static const value_string package_name_vals[] = {
585 { 0x0000, "Media stream properties H.248.1 Annex C" },
586 { 0x0001, "Generic H.248.1 Annex E" },
587 { 0x0002, "root H.248.1 Annex E" },
588 { 0x0003, "tonegen H.248.1 Annex E" },
589 { 0x0004, "tonedet H.248.1 Annex E" },
590 { 0x0005, "dg H.248.1 Annex E" },
591 { 0x0006, "dd H.248.1 Annex E" },
592 { 0x0007, "cg H.248.1 Annex E" },
593 { 0x0008, "cd H.248.1 Annex E" },
594 { 0x0009, "al H.248.1 Annex E" },
595 { 0x000a, "ct H.248.1 Annex E" },
596 { 0x000b, "nt H.248.1 Annex E" },
597 { 0x000c, "rtp H.248.1 Annex E" },
598 { 0x000d, "tdmc H.248.1 Annex E" },
599 { 0x000e, "ftmd H.248.1 Annex E" },
600 { 0x000f, "txc H.248.2" }, /* H.248.2 */
601 { 0x0010, "txp H.248.2" },
602 { 0x0011, "ctyp H.248.2" },
603 { 0x0012, "fax H.248.2" },
604 { 0x0013, "ipfax H.248.2" },
605 { 0x0014, "dis H.248.3" }, /* H.248.3 */
606 { 0x0015, "key H.248.3" },
607 { 0x0016, "kp H.248.3" },
608 { 0x0017, "labelkey H.248.3" },
609 { 0x0018, "kf H.248.3" },
610 { 0x0019, "ind H.248.3" },
611 { 0x001a, "ks H.248.3" },
612 { 0x001b, "anci H.248.3" },
613 { 0x001c, "dtd H.248.6" }, /* H.248.6 */
614 { 0x001d, "an H.248.7" }, /* H.248.7 */
615 { 0x001e, "Bearer Characteristics Q.1950 Annex A" }, /* Q.1950 Annex A */
616 { 0x001f, "Bearer Network Connection Cut Q.1950 Annex A" },
617 { 0x0020, "Reuse Idle Q.1950 Annex A" },
618 { 0x0021, "Generic Bearer Connection Q.1950 Annex A" },
619 { 0x0022, "Bearer Control Tunnelling Q.1950 Annex A" },
620 { 0x0023, "Basic Call Progress Tones Q.1950 Annex A" },
621 { 0x0024, "Expanded Call Progress Tones Q.1950 Annex A" },
622 { 0x0025, "Basic Services Tones Q.1950 Annex A" },
623 { 0x0026, "Expanded Services Tones Q.1950 Annex A" },
624 { 0x0027, "Intrusion Tones Q.1950 Annex A" },
625 { 0x0028, "Business Tones Q.1950 Annex A" },
626 { 0x0029, "Media Gateway Resource Congestion Handling H.248.10" }, /* H.248.10 */
627 { 0x002a, "H245 package H248.12" }, /* H.248.12 */
628 { 0x002b, "H323 bearer control package H.248.12" }, /* H.248.12 */
629 { 0x002c, "H324 package H.248.12" }, /* H.248.12 */
630 { 0x002d, "H245 command package H.248.12" }, /* H.248.12 */
631 { 0x002e, "H245 indication package H.248.12" }, /* H.248.12 */
632 { 0x002f, "3G User Plane" }, /* 3GPP TS 29.232 v4.1.0 */
633 { 0x0030, "3G Circuit Switched Data" },
634 { 0x0031, "3G TFO Control" },
635 { 0x0032, "3G Expanded Call Progress Tones" },
636 { 0x0033, "Advanced Audio Server (AAS Base)" }, /* H.248.9 */
637 { 0x0034, "AAS Digit Collection" }, /* H.248.9 */
638 { 0x0035, "AAS Recording" }, /* H.248.9 */
639 { 0x0036, "AAS Segment Management" }, /* H.248.9 */
640 { 0x0037, "Quality Alert Ceasing" }, /* H.248.13 */
641 { 0x0038, "Conferencing Tones Generation" }, /* H.248.27 */
642 { 0x0039, "Diagnostic Tones Generation" }, /* H.248.27 */
643 { 0x003a, "Carrier Tones Generation Package H.248.23" }, /* H.248.27 */
644 { 0x003b, "Enhanced Alerting Package H.248.23" }, /* H.248.23 */
645 { 0x003c, "Analog Display Signalling Package H.248.23" }, /* H.248.23 */
646 { 0x003d, "Multi-Frequency Tone Generation Package H.248.24" }, /* H.248.24 */
647 { 0x003e, "H.248.23Multi-Frequency Tone Detection Package H.248.24" }, /* H.248.24 */
648 { 0x003f, "Basic CAS Package H.248.25" }, /* H.248.25 */
649 { 0x0040, "Robbed Bit Signalling Package H.248.25" }, /* H.248.25 */
650 { 0x0041, "Operator Services and Emgergency Services Package H.248.25" },
651 { 0x0042, "Operator Services Extension Package H.248.25" },
652 { 0x0043, "Extended Analog Line Supervision Package H.248.26" },
653 { 0x0044, "Automatic Metering Package H.248.26" },
654 { 0x0045, "Inactivity Timer Package H.248.14" },
655 { 0x0046, "3G Modification of Link Characteristics Bearer Capability" }, /* 3GPP TS 29.232 v4.4.0 */
656 { 0x0047, "Base Announcement Syntax H.248.9" },
657 { 0x0048, "Voice Variable Syntax H.248.9" },
658 { 0x0049, "Announcement Set Syntax H.248.9" },
659 { 0x004a, "Phrase Variable Syntax H.248.9" },
660 { 0x004b, "Basic NAS package" },
661 { 0x004c, "NAS incoming package" },
662 { 0x004d, "NAS outgoing package" },
663 { 0x004e, "NAS control package" },
664 { 0x004f, "NAS root package" },
665 { 0x0050, "Profile Handling Package H.248.18" },
666 { 0x0051, "Media Gateway Overload Control Package H.248.11" },
667 { 0x0052, "Extended DTMF Detection Package H.248.16" },
668 { 0x0053, "Quiet Termination Line Test" },
669 { 0x0054, "Loopback Line Test Response" }, /* H.248.17 */
670 { 0x0055, "ITU 404Hz Line Test" }, /* H.248.17 */
671 { 0x0056, "ITU 816Hz Line Test" }, /* H.248.17 */
672 { 0x0057, "ITU 1020Hz Line Test" }, /* H.248.17 */
673 { 0x0058, "ITU 2100Hz Disable Tone Line Test" }, /* H.248.17 */
674 { 0x0059, "ITU 2100Hz Disable Echo Canceller Tone Line Test" }, /* H.248.17 */
675 { 0x005a, "ITU 2804Hz Tone Line Test" }, /* H.248.17 */
676 { 0x005b, "ITU Noise Test Tone Line Test" }, /* H.248.17 */
677 { 0x005c, "ITU Digital Pseudo Random Test Line Test" }, /* H.248.17 */
678 { 0x005d, "ITU ATME No.2 Test Line Response" }, /* H.248.17 */
679 { 0x005e, "ANSI 1004Hz Test Tone Line Test" }, /* H.248.17 */
680 { 0x005f, "ANSI Test Responder Line Test" }, /* H.248.17 */
681 { 0x0060, "ANSI 2225Hz Test Progress Tone Line Test" }, /* H.248.17 */
682 { 0x0061, "ANSI Digital Test Signal Line Test" }, /* H.248.17 */
683 { 0x0062, "ANSI Inverting Loopback Line Test Repsonse" }, /* H.248.17 */
684 { 0x0063, "Extended H.324 Packages H.248.12 Annex A" },
685 { 0x0064, "Extended H.245 Command Package H.248.12 Annex A" },
686 { 0x0065, "Extended H.245 Indication Package H.248.12 Annex A" },
687 { 0x0066, "Enhanced DTMF Detection Package H.248.16" },
688 { 0x0067, "Connection Group Identity Package Q.1950 Annex E" },
689 { 0x0068, "CTM Text Transport 3GPP TS 29.232 v5.2.0" },
690 { 0x0069, "SPNE Control Package Q.115.0" },
691 { 0x006a, "Semi-permanent Connection Package H.248.21" },
692 { 0x006b, "Shared Risk Group Package H.248.22" },
693 { 0x006c, "isuptn Annex B of ITU-T Rec. J.171" },
694 { 0x006d, "Basic CAS Addressing Package H.248.25" },
695 { 0x006e, "Floor Control Package H.248.19" },
696 { 0x006f, "Indication of Being Viewed Package H.248.19" },
697 { 0x0070, "Volume Control Package H.248.19" },
698 { 0x0071, "UNASSIGNED" },
699 { 0x0072, "Volume Detection Package H.248.19" },
700 { 0x0073, "Volume Level Mixing Package H.248.19" },
701 { 0x0074, "Mixing Volume Level Control Package H.248.19" },
702 { 0x0075, "Voice Activated Video Switch Package H.248.19" },
703 { 0x0076, "Lecture Video Mode Package H.248.19" },
704 { 0x0077, "Contributing Video Source Package H.248.19" },
705 { 0x0078, "Video Window Package H.248.19" },
706 { 0x0079, "Tiled Window Package H.248.19" },
707 { 0x007a, "Adaptive Jitter Buffer Package H.248.31" },
708 { 0x007b, "International CAS Package H.248.28" },
709 { 0x007c, "CAS Blocking Package H.248.28" },
710 { 0x007d, "International CAS Compelled Package H.248.29" },
711 { 0x007e, "International CAS Compelled with Overlap Package H.248.29" },
712 { 0x007f, "International CAS Compelled with End-to-end Package H.248.29" },
713 { 0x0080, "RTCP XR Package H.248.30" },
714 { 0x0081, "RTCP XR Burst Metrics Package H.248.30" },
715 { 0x0082, "threegcsden 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
716 { 0x0083, "threegiptra 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
717 { 0x0084, "threegflex 3G Circuit Switched Data" }, /* 3GPP TS 29.232 v5.6.0 */
718 { 0x0085, "H.248 PCMSB" },
719 { 0x008a, "TIPHON Extended H.248/MEGACO Package" }, /* ETSI specification TS 101 3 */
720 { 0x008b, "Differentiated Services Package" }, /* Annex A of ETSI TS 102 333 */
721 { 0x008c, "Gate Management Package" }, /* Annex B of ETSI TS 102 333 */
722 { 0x008d, "Traffic Management Package" }, /* Annex C of ETSI TS 102 333 */
723 { 0x008e, "Gate Recovery Information Package" }, /* Annex D of ETSI TS 102 333 */
724 { 0x008f, "NAT Traversal Package" }, /* Annex E of ETSI TS 102 333 */
725 { 0x0090, "MPLS Package" }, /* Annex F of ETSI TS 102 333 */
726 { 0x0091, "VLAN Package" }, /* Annex G of ETSI TS 102 333 */
727 { 0x8000, "Ericsson IU" },
728 { 0x8001, "Ericsson UMTS and GSM Circuit" },
729 { 0x8002, "Ericsson Tone Generator Package" },
730 { 0x8003, "Ericsson Line Test Package" },
731 { 0x8004, "Nokia Advanced TFO Package" },
732 { 0x8005, "Nokia IWF Package" },
733 { 0x8006, "Nokia Root Package" },
734 { 0x8007, "Nokia Trace Package" },
735 { 0x8008, "Ericsson V5.2 Layer" },
736 { 0x8009, "Ericsson Detailed Termination Information Package" },
737 { 0x800a, "Nokia Bearer Characteristics Package" },
741 * This table consist of PackageName + EventName and its's corresponding string
744 static const value_string event_name_vals[] = {
745 { 0x00000000, "Media stream properties H.248.1 Annex C" },
746 { 0x00010000, "g H.248.1 Annex E" },
747 { 0x00010001, "g/Cause" },
748 { 0x00010002, "g/Signal Completion" },
749 { 0x00040001, "tonedet/std(Start tone detected)" },
750 { 0x00040002, "tonedet/etd(End tone detected)" },
751 { 0x00040003, "tonedet/ltd(Long tone detected)" },
752 { 0x00060004, "dd, DigitMap Completion Event" },
753 { 0x00060010, "dd, DTMF character 0" },
754 { 0x00060011, "dd, DTMF character 1" },
755 { 0x00060012, "dd, DTMF character 2" },
756 { 0x00060013, "dd, DTMF character 3" },
757 { 0x00060014, "dd, DTMF character 4" },
758 { 0x00060015, "dd, DTMF character 5" },
759 { 0x00060016, "dd, DTMF character 6" },
760 { 0x00060017, "dd, DTMF character 7" },
761 { 0x00060018, "dd, DTMF character 8" },
762 { 0x00060019, "dd, DTMF character 9" },
763 { 0x0006001a, "dd, DTMF character A" },
764 { 0x0006001b, "dd, DTMF character B" },
765 { 0x0006001c, "dd, DTMF character C" },
766 { 0x0006001d, "dd, DTMF character D" },
767 { 0x00060020, "dd, DTMF character *" },
768 { 0x00060021, "dd, DTMF character #" },
769 { 0x00080030, "cd, Dial Tone" },
770 { 0x00080031, "cd, Ringing Tone" },
771 { 0x00080032, "cd, Busy Tone" },
772 { 0x00080033, "cd, Congestion Tone" },
773 { 0x00080034, "cd, Special Information Tone" },
774 { 0x00080035, "cd, (Recording) Warning Tone" },
775 { 0x00080036, "cd, Payphone Recognition Tone" },
776 { 0x00080037, "cd, Call Waiting Tone" },
777 { 0x00080038, "cd, Caller Waiting Tone" },
778 { 0x00090004, "al, onhook" },
779 { 0x00090005, "al, offhook" },
780 { 0x00090006, "al, flashhook" },
781 { 0x0009ffff, "al, *" },
782 { 0x000a0005, "ct, Completion" },
783 { 0x000b0005, "nt, network failure" },
784 { 0x000b0006, "nt, quality alert" },
785 { 0x000c0001, "rtp, Payload Transition" },
786 { 0x00210000, "Generic Bearer Connection Q.1950 Annex A" },
787 { 0x00210001, "GB/BNCChange" },
788 { 0x002a0001, "H.245/h245msg (Incoming H.245 Message)" },
789 { 0x002a0004, "H.245/h245ChC (H.245 Channel Closed)" },
790 { 0x800a0000, "Nokia Bearer Characteristics Package" },
795 * This table consist of PackageName + SignalName and its's corresponding string
797 static const value_string signal_name_vals[] = {
798 { 0x00000000, "Media stream properties H.248.1 Annex C" },
799 { 0x00010000, "g H.248.1 Annex E" },
800 { 0x00030001, "tonegen/pt(Play tone)" },
801 { 0x00050010, "dg, DTMF character 0" },
802 { 0x00050011, "dg, DTMF character 1" },
803 { 0x00050012, "dg, DTMF character 2" },
804 { 0x00050013, "dg, DTMF character 3" },
805 { 0x00050014, "dg, DTMF character 4" },
806 { 0x00050015, "dg, DTMF character 5" },
807 { 0x00050016, "dg, DTMF character 6" },
808 { 0x00050017, "dg, DTMF character 7" },
809 { 0x00050018, "dg, DTMF character 8" },
810 { 0x00050019, "dg, DTMF character 9" },
811 { 0x0005001a, "dg, DTMF character A" },
812 { 0x0005001b, "dg, DTMF character B" },
813 { 0x0005001c, "dg, DTMF character C" },
814 { 0x0005001d, "dg, DTMF character D" },
815 { 0x00050020, "dg, DTMF character *" },
816 { 0x00050021, "dg, DTMF character #" },
817 { 0x00070030, "cg, Dial Tone" },
818 { 0x00070031, "cg/rt (Ringing Tone)" },
819 { 0x00070032, "cg, Busy Tone" },
820 { 0x00070033, "cg, Congestion Tone" },
821 { 0x00070034, "cg, Special Information Tone" },
822 { 0x00070035, "cg, (Recording) Warning Tone" },
823 { 0x00070036, "cg, Payphone Recognition Tone" },
824 { 0x00070037, "cg, Call Waiting Tone" },
825 { 0x00070038, "cg, Caller Waiting Tone" },
826 { 0x00090002, "al, ring" },
827 { 0x0009ffff, "al, *" },
828 { 0x000a0003, "ct, Continuity test" },
829 { 0x000a0004, "ct, Continuity respond" },
830 { 0x00210000, "GB Generic Bearer Connection Q.1950 Annex A" },
831 { 0x00210001, "GB/EstBNC(Establish BNC)" },
832 { 0x00210002, "GB/ModBNC (Modify BNC)" },
833 { 0x00210003, "GB/RelBNC(Release BNC)" },
835 { 0x002a0001, "H.245/cs (channel state)" },
836 { 0x002a0002, "H.245/termtype (Terminal Type)" },
838 { 0x002c0001, "H.324/cmod (Communication mode)" },
839 { 0x002c0002, "H.324/muxlv (Highest Multiplexing level)" },
840 { 0x002c0003, "H.324/demux (Demultiplex)" },
841 { 0x002c0004, "H.324/h223capr (Remote H.223 capability)" },
842 { 0x002c0005, "H.324/muxtbl_in (Incoming Multiplex Table)" },
843 { 0x002c0006, "H.324/muxtbl_out (Outgoing Multiplex Table)" },
845 { 0x800a0000, "Nokia Bearer Characteristics Package" },
852 #define NULL_CONTEXT 0
853 #define CHOOSE_CONTEXT 0xFFFFFFFE
854 #define ALL_CONTEXTS 0xFFFFFFFF
857 static const value_string context_id_type[] = {
858 {NULL_CONTEXT,"0 (Null Context)"},
859 {CHOOSE_CONTEXT,"$ (Choose Context)"},
860 {ALL_CONTEXTS,"* (All Contexts)"},
865 static const value_string h248_reasons[] = {
866 { 400, "Syntax error in message"},
867 { 401, "Protocol Error"},
868 { 402, "Unauthorized"},
869 { 403, "Syntax error in transaction request"},
870 { 406, "Version Not Supported"},
871 { 410, "Incorrect identifier"},
872 { 411, "The transaction refers to an unknown ContextId"},
873 { 412, "No ContextIDs available"},
874 { 421, "Unknown action or illegal combination of actions"},
875 { 422, "Syntax Error in Action"},
876 { 430, "Unknown TerminationID"},
877 { 431, "No TerminationID matched a wildcard"},
878 { 432, "Out of TerminationIDs or No TerminationID available"},
879 { 433, "TerminationID is already in a Context"},
880 { 434, "Max number of Terminations in a Context exceeded"},
881 { 435, "Termination ID is not in specified Context"},
882 { 440, "Unsupported or unknown Package"},
883 { 441, "Missing Remote or Local Descriptor"},
884 { 442, "Syntax Error in Command"},
885 { 443, "Unsupported or Unknown Command"},
886 { 444, "Unsupported or Unknown Descriptor"},
887 { 445, "Unsupported or Unknown Property"},
888 { 446, "Unsupported or Unknown Parameter"},
889 { 447, "Descriptor not legal in this command"},
890 { 448, "Descriptor appears twice in a command"},
891 { 449, "Unsupported or Unknown Parameter or Property Value"},
892 { 450, "No such property in this package"},
893 { 451, "No such event in this package"},
894 { 452, "No such signal in this package"},
895 { 453, "No such statistic in this package"},
896 { 454, "No such parameter value in this package"},
897 { 455, "Property illegal in this Descriptor"},
898 { 456, "Property appears twice in this Descriptor"},
899 { 457, "Missing parameter in signal or event"},
900 { 458, "Unexpected Event/Request ID"},
901 { 459, "Unsupported or Unknown Profile"},
902 { 460, "Unable to set statistic on stream"},
903 { 471, "Implied Add for Multiplex failure"},
904 { 500, "Internal software Failure in MG"},
905 { 501, "Not Implemented"},
907 { 503, "Service Unavailable"},
908 { 504, "Command Received from unauthorized entity"},
909 { 505, "Transaction Request Received before a Service Change Reply has been received"},
910 { 506, "Number of Transaction Pendings Exceeded"},
911 { 510, "Insufficient resources"},
912 { 512, "Media Gateway unequipped to detect requested Event"},
913 { 513, "Media Gateway unequipped to generate requested Signals"},
914 { 514, "Media Gateway cannot send the specified announcement"},
915 { 515, "Unsupported Media Type"},
916 { 517, "Unsupported or invalid mode"},
917 { 518, "Event buffer full"},
918 { 519, "Out of space to store digit map"},
919 { 520, "Digit Map undefined in the MG"},
920 { 521, "Termination is ServiceChangeing"},
921 { 522, "Functionality Requested in Topology Triple Not Supported"},
922 { 526, "Insufficient bandwidth"},
923 { 529, "Internal hardware failure in MG"},
924 { 530, "Temporary Network failure"},
925 { 531, "Permanent Network failure"},
926 { 532, "Audited Property, Statistic, Event or Signal does not exist"},
927 { 533, "Response exceeds maximum transport PDU size"},
928 { 534, "Illegal write or read only property"},
929 { 540, "Unexpected initial hook state"},
930 { 542, "Command is not allowed on this termination"},
931 { 581, "Does Not Exist"},
932 { 600, "Illegal syntax within an announcement specification"},
933 { 601, "Variable type not supported"},
934 { 602, "Variable value out of range"},
935 { 603, "Category not supported"},
936 { 604, "Selector type not supported"},
937 { 605, "Selector value not supported"},
938 { 606, "Unknown segment ID"},
939 { 607, "Mismatch between play specification and provisioned data"},
940 { 608, "Provisioning error"},
941 { 609, "Invalid offset"},
942 { 610, "No free segment IDs"},
943 { 611, "Temporary segment not found"},
944 { 612, "Segment in use"},
945 { 613, "ISP port limit overrun"},
946 { 614, "No modems available"},
947 { 615, "Calling number unacceptable"},
948 { 616, "Called number unacceptable"},
949 { 900, "Service Restored"},
952 { 903, "MGC Directed Change"},
953 { 904, "Termination malfunctioning"},
954 { 905, "Termination taken out of service"},
955 { 906, "Loss of lower layer connectivity (e.g. downstream sync)"},
956 { 907, "Transmission Failure"},
957 { 908, "MG Impending Failure"},
958 { 909, "MGC Impending Failure"},
959 { 910, "Media Capability Failure"},
960 { 911, "Modem Capability Failure"},
961 { 912, "Mux Capability Failure"},
962 { 913, "Signal Capability Failure"},
963 { 914, "Event Capability Failure"},
964 { 915, "State Loss"},
965 { 916, "Packages Change"},
966 { 917, "Capabilities Change"},
967 { 918, "Cancel Graceful"},
968 { 919, "Warm Failover"},
969 { 920, "Cold Failover"},
973 static const value_string wildcard_modes[] = {
979 static const value_string wildcard_levels[] = {
980 { 0, "This One Level" },
981 { 1, "This Level and those below" },
986 static const value_string cmd_type[] = {
987 { H248_CMD_NONE, "NoCommand"},
988 { H248_CMD_ADD_REQ, "addReq"},
989 { H248_CMD_MOVE_REQ, "moveReq"},
990 { H248_CMD_MOD_REQ, "modReq"},
991 { H248_CMD_SUB_REQ, "subReq"},
992 { H248_CMD_AUDITCAP_REQ, "auditCapReq"},
993 { H248_CMD_AUDITVAL_REQ, "auditValReq"},
994 { H248_CMD_NOTIFY_REQ, "notifyReq"},
995 { H248_CMD_SVCCHG_REQ, "svcChgReq"},
996 { H248_CMD_TOPOLOGY_REQ, "topologyReq"},
997 { H248_CMD_CTX_ATTR_AUDIT_REQ, "ctxAttrAuditReq"},
998 { H248_CMD_ADD_REPLY, "addReply"},
999 { H248_CMD_MOVE_REPLY, "moveReply"},
1000 { H248_CMD_MOD_REPLY, "modReply"},
1001 { H248_CMD_SUB_REPLY, "subReply"},
1002 { H248_CMD_AUDITCAP_REPLY, "auditCapReply"},
1003 { H248_CMD_AUDITVAL_REPLY, "auditValReply"},
1004 { H248_CMD_NOTIFY_REPLY, "notifyReply"},
1005 { H248_CMD_SVCCHG_REPLY, "svcChgReply"},
1006 { H248_CMD_TOPOLOGY_REPLY, "topologyReply"},
1010 h248_curr_info_t curr_info = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
1011 static guint32 error_code;
1012 static h248_wildcard_t wild_term;
1015 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) {
1016 dissect_ber_integer(implicit ? *((gboolean*)implicit) : FALSE, pinfo, tree, tvb, 0, hfid, NULL);
1019 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) {
1020 dissect_ber_octet_string(implicit ? *((gboolean*)implicit) : FALSE, pinfo, tree, tvb, 0, hfid, NULL);
1023 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) {
1024 dissect_ber_boolean(implicit ? *((gboolean*)implicit) : FALSE, pinfo, tree, tvb, 0, hfid);
1027 extern void h248_param_item(proto_tree* tree,
1029 packet_info* pinfo _U_,
1031 h248_curr_info_t* h248_info _U_,
1033 int len = lenp ? *((int*)lenp) : -1;
1034 proto_tree_add_item(tree,hfid,tvb,0,len,FALSE);
1037 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) {
1038 call_dissector((dissector_handle_t) dissector_hdl,tvb,pinfo,tree);
1042 static h248_package_t no_package = { 0xffff, &hf_h248_no_pkg, &hf_248_no_pkg_param, &ett_h248_no_pkg, NULL, NULL, NULL, NULL };
1043 static h248_pkg_sig_t no_signal = { 0, &hf_h248_no_sig, &ett_h248_no_sig, NULL };
1044 static h248_pkg_param_t no_param = { 0, &hf_h248_no_param, h248_param_item, NULL };
1045 static h248_pkg_evt_t no_event = { 0, &hf_h248_no_evt, &ett_h248_no_evt, NULL };
1047 static int dissect_h248_trx_id(gboolean implicit_tag, packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, guint32* trx_id_p) {
1056 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
1057 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
1059 len=tvb_length_remaining(tvb, offset);
1063 if (len > 8 || len < 1) {
1066 for(i=1;i<=len;i++){
1067 trx_id=(trx_id<<8)|tvb_get_guint8(tvb, offset);
1070 if (trx_id > 0xffffffff) {
1071 proto_item* pi = proto_tree_add_text(tree, tvb, offset-len, len,"transactionId %" PRIu64, trx_id);
1072 proto_item_set_expert_flags(pi, PI_MALFORMED, PI_WARN);
1077 proto_tree_add_uint(tree, hf_h248_transactionId, tvb, offset-len, len, (guint32)trx_id);
1078 *trx_id_p = (guint32)trx_id;
1085 static int dissect_h248_ctx_id(gboolean implicit_tag, packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, guint32* ctx_id_p) {
1094 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
1095 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
1097 len=tvb_length_remaining(tvb, offset);
1101 if (len > 8 || len < 1) {
1104 for(i=1;i<=len;i++){
1105 ctx_id=(ctx_id<<8)|tvb_get_guint8(tvb, offset);
1109 if (ctx_id > 0xffffffff) {
1110 proto_item* pi = proto_tree_add_text(tree, tvb, offset-len, len,
1111 "contextId: %" PRIu64, ctx_id);
1112 proto_item_set_expert_flags(pi, PI_MALFORMED, PI_WARN);
1114 *ctx_id_p = 0xfffffffd;
1117 proto_item* pi = proto_tree_add_uint(tree, hf_h248_context_id, tvb, offset-len, len, (guint32)ctx_id);
1119 if ( ctx_id == NULL_CONTEXT ) {
1120 proto_item_set_text(pi,"contextId: Null Context(0)");
1121 } else if ( ctx_id == CHOOSE_CONTEXT ) {
1122 proto_item_set_text(pi,"contextId: $ (Choose Context = 0xfffffffe)");
1123 } else if ( ctx_id == ALL_CONTEXTS ) {
1124 proto_item_set_text(pi,"contextId: * (All Contexts = 0xffffffff)");
1127 *ctx_id_p = (guint32) ctx_id;
1136 static const value_string BNCChar_vals[] = {
1137 { H248_TERM_TYPE_AAL1, "aal1" },
1138 { H248_TERM_TYPE_AAL2, "aal2" },
1139 { H248_TERM_TYPE_AAL1_STRUCT, "aal1struct" },
1140 { H248_TERM_TYPE_IP_RTP, "ipRtp" },
1141 { H248_TERM_TYPE_TDM, "tdm" },
1147 static GPtrArray* packages = NULL;
1149 void h248_register_package(h248_package_t* pkg) {
1150 if (! packages) packages = g_ptr_array_new();
1152 g_assert(pkg != NULL);
1154 g_ptr_array_add(packages,pkg);
1159 dissect_h248_pkg_data(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,guint16 name_major, guint16 name_minor){
1163 switch ( name_major ){
1164 case 0x001e: /* Bearer Characteristics Q.1950 Annex A */
1166 guint bearer_type = 0;
1167 offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_pkg_bcp_BNCChar_PDU, &bearer_type);
1168 if ( bearer_type && curr_info.term )
1169 curr_info.term->type = bearer_type;
1178 static guint32 packageandid;
1180 static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
1181 tvbuff_t *new_tvb = NULL;
1182 proto_tree *package_tree=NULL;
1183 guint16 name_major, name_minor;
1186 h248_package_t* pkg = NULL;
1190 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
1193 /* this field is always 4 bytes so just read it into two integers */
1194 name_major=tvb_get_ntohs(new_tvb, 0);
1195 name_minor=tvb_get_ntohs(new_tvb, 2);
1196 packageandid=(name_major<<16)|name_minor;
1198 /* do the prettification */
1199 proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
1202 package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
1203 proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major);
1206 for(i=0; i < packages->len; i++) {
1207 pkg = g_ptr_array_index(packages,i);
1209 if (name_major == pkg->id) {
1216 if (! pkg ) pkg = &no_package;
1218 hf_param = *(pkg->hfid_params);
1221 /* TODO: Will this ever happen now??*/
1222 proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor);
1228 curr_info.pkg = pkg;
1235 dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
1237 proto_tree *package_tree=NULL;
1238 guint16 name_major, name_minor;
1240 h248_package_t* pkg = NULL;
1241 h248_pkg_evt_t* evt = NULL;
1245 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
1248 /* this field is always 4 bytes so just read it into two integers */
1249 name_major=tvb_get_ntohs(new_tvb, 0);
1250 name_minor=tvb_get_ntohs(new_tvb, 2);
1251 packageandid=(name_major<<16)|name_minor;
1253 /* do the prettification */
1254 proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
1256 package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
1258 proto_tree_add_uint(package_tree, hf_h248_event_name, tvb, offset-4, 4, packageandid);
1261 for(i=0; i < packages->len; i++) {
1262 pkg = g_ptr_array_index(packages,i);
1264 if (name_major == pkg->id) {
1269 if (!pkg->hfid) pkg = &no_package;
1271 curr_info.pkg = pkg;
1274 for (evt = pkg->events; evt->hfid; evt++) {
1275 if (name_minor == evt->id) {
1280 if (! evt->hfid) evt = &no_event;
1285 curr_info.evt = evt;
1288 curr_info.pkg = &no_package;
1289 curr_info.evt = &no_event;
1298 dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
1300 proto_tree *package_tree=NULL;
1301 guint16 name_major, name_minor;
1303 h248_package_t* pkg = NULL;
1304 h248_pkg_sig_t* sig;
1308 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
1311 /* this field is always 4 bytes so just read it into two integers */
1312 name_major=tvb_get_ntohs(new_tvb, 0);
1313 name_minor=tvb_get_ntohs(new_tvb, 2);
1314 packageandid=(name_major<<16)|name_minor;
1316 /* do the prettification */
1317 proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
1319 package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
1321 proto_tree_add_uint(package_tree, hf_h248_signal_name, tvb, offset-4, 4, packageandid);
1323 for(i=0; i < packages->len; i++) {
1324 pkg = g_ptr_array_index(packages,i);
1326 if (name_major == pkg->id) {
1333 if (! pkg ) pkg = &no_package;
1336 for (sig = pkg->signals; sig->hfid; sig++) {
1337 if (name_minor == sig->id) {
1342 if (! sig->hfid) sig = &no_signal;
1344 curr_info.pkg = pkg;
1345 curr_info.sig = sig;
1347 curr_info.pkg = &no_package;
1348 curr_info.sig = &no_signal;
1352 curr_info.pkg = &no_package;
1353 curr_info.sig = &no_signal;
1360 dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index _U_) {
1368 int old_offset, end_offset;
1370 h248_package_t* pkg;
1371 h248_pkg_param_t* prop;
1374 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
1375 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
1376 end_offset=offset+len;
1378 if( (class!=BER_CLASS_UNI)
1379 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1380 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag);
1385 next_tvb = tvb_new_subset(tvb, offset , len , len );
1386 name_major = packageandid >> 16;
1387 name_minor = packageandid & 0xffff;
1389 pkg = (curr_info.pkg) ? curr_info.pkg : &no_package;
1391 if (pkg->properties) {
1392 for (prop = pkg->properties; prop && prop->hfid; prop++) {
1393 if (name_minor == prop->id) {
1401 if (prop && prop->hfid && prop->data) {
1402 if (!prop->dissector) prop = &no_param;
1403 prop->dissector(tree, next_tvb, pinfo, *(prop->hfid), &curr_info, prop->data);
1411 dissect_h248_SigParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1413 guint32 param_id = 0xffffffff;
1414 h248_pkg_param_t* sigpar;
1416 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &next_tvb);
1417 switch(tvb_length(next_tvb)) {
1418 case 4: param_id = tvb_get_ntohl(next_tvb,0); break;
1419 case 3: param_id = tvb_get_ntoh24(next_tvb,0); break;
1420 case 2: param_id = tvb_get_ntohs(next_tvb,0); break;
1421 case 1: param_id = tvb_get_guint8(next_tvb,0); break;
1425 curr_info.par = &no_param;
1427 if (curr_info.sig && curr_info.sig->parameters) {
1428 for(sigpar = curr_info.sig->parameters; sigpar->hfid; sigpar++) {
1429 if (sigpar->id == param_id) {
1430 curr_info.par = sigpar;
1440 dissect_h248_SigParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1442 int old_offset, end_offset;
1449 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
1450 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
1451 end_offset=offset+len;
1453 if( (class!=BER_CLASS_UNI)
1454 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1455 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag);
1460 next_tvb = tvb_new_subset(tvb,offset,len,len);
1462 if ( curr_info.par && curr_info.par->dissector) {
1463 curr_info.par->dissector(tree, next_tvb, pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
1470 dissect_h248_EventParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1472 guint32 param_id = 0xffffffff;
1473 h248_pkg_param_t* evtpar;
1475 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &next_tvb);
1478 switch(tvb_length(next_tvb)) {
1479 case 4: param_id = tvb_get_ntohl(next_tvb,0); break;
1480 case 3: param_id = tvb_get_ntoh24(next_tvb,0); break;
1481 case 2: param_id = tvb_get_ntohs(next_tvb,0); break;
1482 case 1: param_id = tvb_get_guint8(next_tvb,0); break;
1487 curr_info.par = &no_param;
1489 if (curr_info.evt->parameters) {
1490 for(evtpar = curr_info.evt->parameters; evtpar->hfid; evtpar++) {
1491 if (evtpar->id == param_id) {
1492 curr_info.par = evtpar;
1497 curr_info.par = &no_param;
1504 dissect_h248_EventParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1506 int old_offset, end_offset;
1513 offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
1514 offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
1515 end_offset=offset+len;
1517 if( (class!=BER_CLASS_UNI)
1518 ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
1519 proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag);
1524 next_tvb = tvb_new_subset(tvb,offset,len,len);
1526 if ( curr_info.par && curr_info.par->dissector) {
1527 curr_info.par->dissector(tree, next_tvb, pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
1534 dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
1536 proto_tree *mtp_tree=NULL;
1538 int i, len, old_offset;
1541 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
1544 /* this field is either 2 or 4 bytes so just read it into an integer */
1546 len=tvb_length(new_tvb);
1548 val= (val<<8)|tvb_get_guint8(new_tvb, i);
1551 /* do the prettification */
1552 proto_item_append_text(ber_last_created_item, " NI = %d, PC = %d ( %d-%d )", val&0x03,val>>2,val&0x03,val>>2);
1554 mtp_tree = proto_item_add_subtree(ber_last_created_item, ett_mtpaddress);
1556 proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_ni, tvb, old_offset, offset-old_offset, val&0x03);
1557 proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_pc, tvb, old_offset, offset-old_offset, val>>2);
1564 * Context and Transaction Tracing
1569 static h248_msg_t* h248_msg(packet_info* pinfo, int o) {
1571 guint32 framenum = (guint32)pinfo->fd->num;
1572 guint32 offset = (guint32)o;
1573 address* src = &(pinfo->src);
1574 address* dst = &(pinfo->dst);
1579 if (keep_persistent_data) {
1580 emem_tree_key_t key[] = {
1586 if (( m = se_tree_lookup32_array(msgs,key) )) {
1590 m = se_alloc(sizeof(h248_msg_t));
1591 m->framenum = framenum;
1593 m->commited = FALSE;
1595 se_tree_insert32_array(msgs,key,m);
1598 m = ep_new0(h248_msg_t);
1599 m->framenum = framenum;
1601 m->commited = FALSE;
1604 if (CMP_ADDRESS(src, dst) < 0) {
1612 switch(lo_addr->type) {
1618 memcpy((guint8*)&(m->hi_addr),hi_addr->data,4);
1619 memcpy((guint8*)&(m->lo_addr),lo_addr->data,4);
1622 m->hi_addr = mtp3_pc_hash(hi_addr->data);
1623 m->lo_addr = mtp3_pc_hash(lo_addr->data);
1626 /* XXX: heuristic and error prone */
1627 m->hi_addr = g_str_hash(address_to_str(hi_addr));
1628 m->lo_addr = g_str_hash(address_to_str(lo_addr));
1635 static h248_trx_t* h248_trx(h248_msg_t* m ,guint32 t_id , h248_trx_type_t type) {
1636 h248_trx_t* t = NULL;
1637 h248_trx_msg_t* trxmsg;
1639 if ( !m ) return NULL;
1641 if (keep_persistent_data) {
1644 for ( trxmsg = m->trxs; trxmsg; trxmsg = trxmsg->next) {
1645 if (trxmsg->trx && trxmsg->trx->id == t_id) {
1650 DISSECTOR_ASSERT(! "a trx that should exist does not!" );
1653 emem_tree_key_t key[] = {
1660 trxmsg = se_alloc(sizeof(h248_trx_msg_t));
1661 t = se_tree_lookup32_array(trxs,key);
1664 t = se_alloc(sizeof(h248_trx_t));
1672 se_tree_insert32_array(trxs,key,t);
1675 /* XXX: request, reply and ack + point to frames where they are */
1677 case H248_TRX_PENDING:
1686 t = ep_new(h248_trx_t);
1687 trxmsg = ep_new(h248_trx_msg_t);
1697 trxmsg->next = NULL;
1698 trxmsg->last = trxmsg;
1701 m->trxs->last = m->trxs->last->next = trxmsg;
1710 static h248_ctx_t* h248_ctx(h248_msg_t* m, h248_trx_t* t, guint32 c_id) {
1711 h248_ctx_t* context = NULL;
1712 h248_ctx_t** context_p = NULL;
1714 if ( !m || !t ) return NULL;
1716 if (keep_persistent_data) {
1717 emem_tree_key_t ctx_key[] = {
1724 emem_tree_key_t trx_key[] = {
1732 if (( context = se_tree_lookup32_array(ctxs_by_trx,trx_key) )) {
1734 } if ((context_p = se_tree_lookup32_array(ctxs,ctx_key))) {
1735 context = *context_p;
1738 if (context->initial->framenum <= m->framenum) {
1741 } while(( context = context->prev ));
1743 DISSECTOR_ASSERT(! "a context should exist");
1746 if (c_id == CHOOSE_CONTEXT) {
1747 if (! ( context = se_tree_lookup32_array(ctxs_by_trx,trx_key))) {
1748 context = se_alloc(sizeof(h248_ctx_t));
1749 context->initial = m;
1750 context->cmds = NULL;
1752 context->terms.last = &(context->terms);
1753 context->terms.next = NULL;
1754 context->terms.term = NULL;
1756 se_tree_insert32_array(ctxs_by_trx,trx_key,context);
1759 if (( context = se_tree_lookup32_array(ctxs_by_trx,trx_key) )) {
1760 if (( context_p = se_tree_lookup32_array(ctxs,ctx_key) )) {
1761 if (context != *context_p) {
1762 context = se_alloc(sizeof(h248_ctx_t));
1763 context->initial = m;
1765 context->cmds = NULL;
1766 context->terms.last = &(context->terms);
1767 context->terms.next = NULL;
1768 context->terms.term = NULL;
1770 context->prev = *context_p;
1771 *context_p = context;
1774 context_p = se_alloc(sizeof(void*));
1775 *context_p = context;
1776 context->initial = m;
1778 se_tree_insert32_array(ctxs,ctx_key,context_p);
1780 } else if (! ( context_p = se_tree_lookup32_array(ctxs,ctx_key) )) {
1781 context = se_alloc(sizeof(h248_ctx_t));
1782 context->initial = m;
1784 context->cmds = NULL;
1785 context->terms.last = &(context->terms);
1786 context->terms.next = NULL;
1787 context->terms.term = NULL;
1789 context_p = se_alloc(sizeof(void*));
1790 *context_p = context;
1791 se_tree_insert32_array(ctxs,ctx_key,context_p);
1793 context = *context_p;
1798 context = ep_new(h248_ctx_t);
1799 context->initial = m;
1800 context->cmds = NULL;
1802 context->terms.last = &(context->terms);
1803 context->terms.next = NULL;
1804 context->terms.term = NULL;
1810 static h248_cmd_t* h248_cmd(h248_msg_t* m, h248_trx_t* t, h248_ctx_t* c, h248_cmd_type_t type, guint offset) {
1812 h248_cmd_msg_t* cmdtrx;
1813 h248_cmd_msg_t* cmdctx;
1815 if ( !m || !t || !c) return NULL;
1817 if (keep_persistent_data) {
1819 DISSECTOR_ASSERT(t->cmds != NULL);
1821 for (cmdctx = t->cmds; cmdctx; cmdctx = cmdctx->next) {
1823 if (cmd->msg == m && cmd->offset == offset) {
1828 DISSECTOR_ASSERT(!"called for a command that does not exist!");
1832 cmd = se_alloc(sizeof(h248_cmd_t));
1833 cmdtrx = se_alloc(sizeof(h248_cmd_msg_t));
1834 cmdctx = se_alloc(sizeof(h248_cmd_msg_t));
1837 cmd = ep_new(h248_cmd_t);
1838 cmdtrx = ep_new(h248_cmd_msg_t);
1839 cmdctx = ep_new(h248_cmd_msg_t);
1843 cmd->offset = offset;
1844 cmd->terms.term = NULL;
1845 cmd->terms.next = NULL;
1846 cmd->terms.last = &(cmd->terms);
1852 cmdctx->cmd = cmdtrx->cmd = cmd;
1853 cmdctx->next = cmdtrx->next = NULL;
1854 cmdctx->last = cmdtrx->last = NULL;
1857 t->cmds->last->next = cmdtrx;
1858 t->cmds->last = cmdtrx;
1861 t->cmds->last = cmdtrx;
1865 c->cmds->last->next = cmdctx;
1866 c->cmds->last = cmdctx;
1869 c->cmds->last = cmdctx;
1876 static h248_term_t* h248_cmd_add_term(h248_msg_t* m, h248_trx_t* tr, h248_cmd_t* c, h248_term_t* t, h248_wildcard_t wildcard) {
1880 static h248_term_t all_terms = {"$",(guint8*)"",1,H248_TERM_TYPE_UNKNOWN,NULL,NULL,NULL};
1882 if ( !c ) return NULL;
1884 if ( wildcard == H248_WILDCARD_CHOOSE) {
1888 if (keep_persistent_data) {
1889 if ( c->msg->commited ) {
1890 if (wildcard == H248_WILDCARD_ALL) {
1891 for (ct = c->ctx->terms.next; ct; ct = ct->next) {
1892 /* XXX not handling more wilcards in one msg */
1893 if ( ct->term->start == m ) {
1899 for (ct = c->ctx->terms.next; ct; ct = ct->next) {
1900 if ( g_str_equal(ct->term->str,t->str) ) {
1908 for (ct = c->ctx->terms.next; ct; ct = ct->next) {
1909 if ( g_str_equal(ct->term->str,t->str) || ct->term->start == m) {
1916 if (wildcard == H248_WILDCARD_ALL) {
1917 ct = se_alloc(sizeof(h248_terms_t));
1919 ct->term = se_alloc0(sizeof(h248_term_t));
1921 ct->term->start = m;
1922 ct->term->str = "*";
1923 ct->term->buffer = NULL;
1926 c->terms.last = c->terms.last->next = ct;
1928 ct2 = se_alloc0(sizeof(h248_terms_t));
1929 ct2->term = ct->term;
1931 c->ctx->terms.last->next = ct2;
1932 c->ctx->terms.last = ct2;
1936 for (ct = c->ctx->terms.next; ct; ct = ct->next) {
1937 /* XXX not handling more wilcards in one msg */
1938 if ( ct->term->buffer == NULL && tr->cmds->cmd->msg == ct->term->start ) {
1939 ct->term->str = se_strdup(t->str);
1940 ct->term->buffer = se_memdup(t->buffer,t->len);
1941 ct->term->len = t->len;
1943 ct2 = se_alloc0(sizeof(h248_terms_t));
1944 ct2->term = ct->term;
1946 c->terms.last = c->terms.last->next = ct2;
1951 if ( g_str_equal(ct->term->str,t->str) ) {
1952 ct2 = se_alloc0(sizeof(h248_terms_t));
1953 ct2->term = ct->term;
1955 c->terms.last = c->terms.last->next = ct2;
1961 ct = se_alloc(sizeof(h248_terms_t));
1963 ct->term = se_alloc0(sizeof(h248_term_t));
1965 ct->term->start = m;
1966 ct->term->str = se_strdup(t->str);
1967 ct->term->buffer = se_memdup(t->buffer,t->len);
1968 ct->term->len = t->len;
1970 ct2 = se_alloc0(sizeof(h248_terms_t));
1971 ct2->term = ct->term;
1973 c->terms.last = c->terms.last->next = ct2;
1975 ct2 = se_alloc0(sizeof(h248_terms_t));
1976 ct2->term = ct->term;
1978 c->ctx->terms.last = c->ctx->terms.last->next = ct2;
1983 ct2 = se_alloc0(sizeof(h248_terms_t));
1984 ct2->term = ct->term;
1986 c->terms.last = c->terms.last->next = ct2;
1990 DISSECTOR_ASSERT_NOT_REACHED();
1994 ct = ep_new(h248_terms_t);
1997 c->terms.last = c->terms.last->next = ct;
2004 static gchar* h248_cmd_to_str(h248_cmd_t* c) {
2008 if ( !c ) return "-";
2014 case H248_CMD_ADD_REQ:
2017 case H248_CMD_MOVE_REQ:
2020 case H248_CMD_MOD_REQ:
2023 case H248_CMD_SUB_REQ:
2026 case H248_CMD_AUDITCAP_REQ:
2027 s = "AuditCapReq {";
2029 case H248_CMD_AUDITVAL_REQ:
2030 s = "AuditValReq {";
2032 case H248_CMD_NOTIFY_REQ:
2035 case H248_CMD_SVCCHG_REQ:
2038 case H248_CMD_TOPOLOGY_REQ:
2039 s = "TopologyReq {";
2041 case H248_CMD_CTX_ATTR_AUDIT_REQ:
2042 s = "CtxAttribAuditReq {";
2044 case H248_CMD_ADD_REPLY:
2047 case H248_CMD_MOVE_REPLY:
2050 case H248_CMD_MOD_REPLY:
2053 case H248_CMD_SUB_REPLY:
2056 case H248_CMD_AUDITCAP_REPLY:
2057 s = "AuditCapReply {";
2059 case H248_CMD_AUDITVAL_REPLY:
2060 s = "AuditValReply {";
2062 case H248_CMD_NOTIFY_REPLY:
2063 s = "NotifyReply {";
2065 case H248_CMD_SVCCHG_REPLY:
2066 s = "SvcChgReply {";
2068 case H248_CMD_TOPOLOGY_REPLY:
2069 s = "TopologyReply {";
2071 case H248_CMD_REPLY:
2072 s = "ActionReply {";
2076 for (term = c->terms.next; term; term = term->next) {
2077 s = ep_strdup_printf("%s %s",s,term->term->str);
2081 s = ep_strdup_printf("%s Error=%i",s,c->error);
2085 return ep_strdup_printf("%s }", s);
2088 static gchar* h248_trx_to_str(h248_msg_t* m, h248_trx_t* t) {
2092 if ( !m || !t ) return "-";
2094 s = ep_strdup_printf("T %x { ",t->id);
2097 if (t->cmds->cmd->ctx) {
2098 s = ep_strdup_printf("%s C %x {",s,t->cmds->cmd->ctx->id);
2100 for (c = t->cmds; c; c = c->next) {
2101 if (c->cmd->msg == m)
2102 s = ep_strdup_printf("%s %s",s,h248_cmd_to_str(c->cmd));
2105 s = ep_strdup_printf("%s %s",s,"}");
2110 s = ep_strdup_printf("%s Error=%i",s,t->error);
2113 return ep_strdup_printf("%s %s",s,"}");
2116 static gchar* h248_msg_to_str(h248_msg_t* m) {
2120 if ( !m ) return "-";
2122 for (t = m->trxs; t; t = t->next) {
2123 s = ep_strdup_printf("%s %s",s,h248_trx_to_str(m,t->trx));
2129 typedef struct _h248_ctxs_t {
2130 struct _h248_ctx_t* ctx;
2131 struct _h248_ctxs_t* next;
2134 /*static const gchar* trx_types[] = {"None","Req","Reply","Pending","Ack"};*/
2136 static void analyze_h248_msg(h248_msg_t* m) {
2138 h248_ctxs_t contexts = {NULL,NULL};
2139 h248_ctxs_t* ctx_node;
2143 for (t = m->trxs; t; t = t->next) {
2144 for (c = t->trx->cmds; c; c = c->next) {
2145 h248_ctx_t* ctx = c->cmd->ctx;
2147 for (ctx_node = contexts.next; ctx_node; ctx_node = ctx_node->next) {
2148 if (ctx_node->ctx->id == ctx->id) {
2154 ctx_node = ep_new(h248_ctxs_t);
2155 ctx_node->ctx = ctx;
2156 ctx_node->next = contexts.next;
2157 contexts.next = ctx_node;
2163 for (ctx_node = contexts.next; ctx_node; ctx_node = ctx_node->next) {
2164 h248_ctx_t* ctx = ctx_node->ctx;
2165 proto_item* ctx_item = proto_tree_add_uint(h248_tree,hf_h248_ctx,h248_tvb,0,0,ctx->id);
2166 proto_tree* ctx_tree = proto_item_add_subtree(ctx_item,ett_ctx);
2167 h248_terms_t *ctx_term;
2169 PROTO_ITEM_SET_GENERATED(ctx_item);
2171 if (( c = ctx->cmds )) {
2172 proto_item* history_item = proto_tree_add_text(ctx_tree,h248_tvb,0,0,"[ Command History ]");
2173 proto_tree* history_tree = proto_item_add_subtree(history_item,ett_ctx_cmds);
2175 for (c = ctx->cmds; c; c = c->next) {
2176 proto_item* cmd_item = proto_tree_add_uint(history_tree,hf_h248_ctx_cmd,h248_tvb,0,0,c->cmd->msg->framenum);
2177 proto_item_set_text(cmd_item,"%s",h248_cmd_to_str(c->cmd) );
2178 PROTO_ITEM_SET_GENERATED(cmd_item);
2179 if (c->cmd->error) {
2180 proto_item_set_expert_flags(cmd_item, PI_RESPONSE_CODE, PI_WARN);
2185 if (( ctx_term = ctx->terms.next )) {
2186 proto_item* terms_item = proto_tree_add_text(ctx_tree,h248_tvb,0,0,"[ Terminations Used ]");
2187 proto_tree* terms_tree = proto_item_add_subtree(terms_item,ett_ctx_terms);
2189 for (; ctx_term; ctx_term = ctx_term->next ) {
2190 if ( ctx_term->term && ctx_term->term->str) {
2191 proto_item* pi = proto_tree_add_string(terms_tree,hf_h248_ctx_term,h248_tvb,0,0,ctx_term->term->str);
2192 proto_tree* term_tree = proto_item_add_subtree(pi,ett_ctx_term);
2194 PROTO_ITEM_SET_GENERATED(pi);
2196 if (ctx_term->term->type) {
2197 pi = proto_tree_add_uint(term_tree,hf_h248_ctx_term_type,h248_tvb,0,0,ctx_term->term->type);
2198 PROTO_ITEM_SET_GENERATED(pi);
2201 if (ctx_term->term->bir) {
2202 pi = proto_tree_add_string(term_tree,hf_h248_ctx_term_bir,h248_tvb,0,0,ctx_term->term->bir);
2203 PROTO_ITEM_SET_GENERATED(pi);
2206 if (ctx_term->term->nsap) {
2207 pi = proto_tree_add_string(term_tree,hf_h248_ctx_term_nsap,h248_tvb,0,0,ctx_term->term->nsap);
2208 PROTO_ITEM_SET_GENERATED(pi);
2211 if (ctx_term->term->bir && ctx_term->term->nsap) {
2212 gchar* key = ep_strdup_printf("%s:%s",ctx_term->term->nsap,ctx_term->term->bir);
2214 alcap_tree_from_bearer_key(term_tree, h248_tvb, key);
2222 #define h248_cmd_set_error(c,e) (c->error = e)
2223 #define h248_trx_set_error(t,e) (t->error = e)
2226 /*--- Included file: packet-h248-fn.c ---*/
2227 #line 1 "packet-h248-fn.c"
2228 /*--- Cyclic dependencies ---*/
2230 /* SecondEventsDescriptor -> SecondEventsDescriptor/eventList -> SecondRequestedEvent -> SecondRequestedActions -> NotifyBehaviour -> RegulatedEmbeddedDescriptor -> SecondEventsDescriptor */
2231 static int dissect_h248_SecondEventsDescriptor(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
2233 static int dissect_secondEvent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2234 return dissect_h248_SecondEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_secondEvent);
2238 /*--- Fields for imported types ---*/
2244 dissect_h248_SecurityParmIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2245 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2250 static int dissect_secParmIndex_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2251 return dissect_h248_SecurityParmIndex(TRUE, tvb, offset, pinfo, tree, hf_h248_secParmIndex);
2257 dissect_h248_SequenceNum(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2258 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2263 static int dissect_seqNum_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2264 return dissect_h248_SequenceNum(TRUE, tvb, offset, pinfo, tree, hf_h248_seqNum);
2270 dissect_h248_AuthData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2271 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2276 static int dissect_ad_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2277 return dissect_h248_AuthData(TRUE, tvb, offset, pinfo, tree, hf_h248_ad);
2281 static const ber_sequence_t AuthenticationHeader_sequence[] = {
2282 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_secParmIndex_impl },
2283 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqNum_impl },
2284 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ad_impl },
2289 dissect_h248_AuthenticationHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2290 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2291 AuthenticationHeader_sequence, hf_index, ett_h248_AuthenticationHeader);
2295 static int dissect_authHeader_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2296 return dissect_h248_AuthenticationHeader(TRUE, tvb, offset, pinfo, tree, hf_h248_authHeader);
2302 dissect_h248_INTEGER_0_99(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2303 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2308 static int dissect_version_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2309 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_version);
2311 static int dissect_packageVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2312 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_packageVersion);
2314 static int dissect_startTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2315 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_startTimer);
2317 static int dissect_shortTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2318 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_shortTimer);
2320 static int dissect_longTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2321 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_longTimer);
2323 static int dissect_durationTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2324 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_durationTimer);
2326 static int dissect_serviceChangeVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2327 return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeVersion);
2333 dissect_h248_OCTET_STRING_SIZE_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2334 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2339 static int dissect_iP4Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2340 return dissect_h248_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_h248_iP4Address);
2346 dissect_h248_INTEGER_0_65535(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2347 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2352 static int dissect_portNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2353 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_portNumber);
2355 static int dissect_propGroupID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2356 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_propGroupID);
2358 static int dissect_id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2359 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_id);
2361 static int dissect_duration_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2362 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_duration);
2364 static int dissect_intersigDelay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2365 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_intersigDelay);
2367 static int dissect_manufacturerCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2368 return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_manufacturerCode);
2372 static const ber_sequence_t IP4Address_sequence[] = {
2373 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iP4Address_impl },
2374 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
2379 dissect_h248_IP4Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2380 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2381 IP4Address_sequence, hf_index, ett_h248_IP4Address);
2385 static int dissect_ip4Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2386 return dissect_h248_IP4Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip4Address);
2392 dissect_h248_OCTET_STRING_SIZE_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2393 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2398 static int dissect_iP6Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2399 return dissect_h248_OCTET_STRING_SIZE_16(TRUE, tvb, offset, pinfo, tree, hf_h248_iP6Address);
2403 static const ber_sequence_t IP6Address_sequence[] = {
2404 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iP6Address_impl },
2405 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
2410 dissect_h248_IP6Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2411 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2412 IP6Address_sequence, hf_index, ett_h248_IP6Address);
2416 static int dissect_ip6Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2417 return dissect_h248_IP6Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip6Address);
2423 dissect_h248_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2424 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2425 pinfo, tree, tvb, offset, hf_index,
2430 static int dissect_domName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2431 return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_domName);
2433 static int dissect_digitMapBody_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2434 return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapBody);
2438 static const ber_sequence_t DomainName_sequence[] = {
2439 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_domName_impl },
2440 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
2445 dissect_h248_DomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2446 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2447 DomainName_sequence, hf_index, ett_h248_DomainName);
2451 static int dissect_domainName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2452 return dissect_h248_DomainName(TRUE, tvb, offset, pinfo, tree, hf_h248_domainName);
2458 dissect_h248_PathName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2459 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2460 pinfo, tree, tvb, offset, hf_index,
2465 static int dissect_deviceName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2466 return dissect_h248_PathName(TRUE, tvb, offset, pinfo, tree, hf_h248_deviceName);
2469 static int dissect_mtpAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2470 return dissect_h248_MtpAddress(TRUE, tvb, offset, pinfo, tree, hf_h248_mtpAddress);
2474 static const value_string h248_MId_vals[] = {
2475 { 0, "ip4Address" },
2476 { 1, "ip6Address" },
2477 { 2, "domainName" },
2478 { 3, "deviceName" },
2479 { 4, "mtpAddress" },
2483 static const ber_choice_t MId_choice[] = {
2484 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
2485 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
2486 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
2487 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
2488 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mtpAddress_impl },
2489 { 0, 0, 0, 0, NULL }
2493 dissect_h248_MId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2494 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2495 MId_choice, hf_index, ett_h248_MId,
2500 static int dissect_mId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2501 return dissect_h248_MId(TRUE, tvb, offset, pinfo, tree, hf_h248_mId);
2503 static int dissect_serviceChangeMgcId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2504 return dissect_h248_MId(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMgcId);
2511 dissect_h248_T_errorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2512 #line 215 "h248.cnf"
2513 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_h248_error_code, &error_code);
2514 expert_add_info_format(pinfo, get_ber_last_created_item(), PI_RESPONSE_CODE, PI_WARN, "Errored Command");
2516 if (curr_info.cmd) {
2517 h248_cmd_set_error(curr_info.cmd,error_code);
2518 } else if (curr_info.trx) {
2519 h248_trx_set_error(curr_info.trx,error_code);
2527 static int dissect_errorCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2528 return dissect_h248_T_errorCode(TRUE, tvb, offset, pinfo, tree, hf_h248_errorCode);
2534 dissect_h248_ErrorText(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2535 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2536 pinfo, tree, tvb, offset, hf_index,
2541 static int dissect_errorText_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2542 return dissect_h248_ErrorText(TRUE, tvb, offset, pinfo, tree, hf_h248_errorText);
2546 static const ber_sequence_t ErrorDescriptor_sequence[] = {
2547 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorCode_impl },
2548 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorText_impl },
2553 dissect_h248_ErrorDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2554 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2555 ErrorDescriptor_sequence, hf_index, ett_h248_ErrorDescriptor);
2559 static int dissect_messageError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2560 return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_messageError);
2562 static int dissect_transactionError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2563 return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionError);
2565 static int dissect_errorDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2566 return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_errorDescriptor);
2568 static int dissect_error_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2569 return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_error);
2575 dissect_h248_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2576 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2581 static int dissect_transactionId1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2582 return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionId1);
2584 static int dissect_firstAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2585 return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_firstAck);
2587 static int dissect_lastAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2588 return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_lastAck);
2594 dissect_h248_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2597 offset = dissect_h248_trx_id(implicit_tag, pinfo, tree, tvb, offset, &trx_id);
2598 curr_info.trx = h248_trx(curr_info.msg,trx_id,H248_TRX_REQUEST);
2604 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2605 return dissect_h248_transactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionId);
2611 dissect_h248_ContextID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2612 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2617 static int dissect_contextList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2618 return dissect_h248_ContextID(FALSE, tvb, offset, pinfo, tree, hf_h248_contextList_item);
2624 dissect_h248_contextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2627 offset = dissect_h248_ctx_id(implicit_tag, pinfo, tree, tvb, offset, &ctx_id);
2628 curr_info.ctx = h248_ctx(curr_info.msg,curr_info.trx,ctx_id);
2629 curr_info.cmd = NULL;
2630 curr_info.term = NULL;
2635 static int dissect_contextId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2636 return dissect_h248_contextId(TRUE, tvb, offset, pinfo, tree, hf_h248_contextId);
2642 dissect_h248_INTEGER_0_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2643 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2648 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2649 return dissect_h248_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_h248_priority);
2651 static int dissect_selectpriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2652 return dissect_h248_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_h248_selectpriority);
2658 dissect_h248_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2659 offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
2663 static int dissect_emergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2664 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_emergency);
2666 static int dissect_iepscallind_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2667 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_iepscallind);
2669 static int dissect_selectemergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2670 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_selectemergency);
2672 static int dissect_selectiepscallind_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2673 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_selectiepscallind);
2675 static int dissect_range_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2676 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_range);
2678 static int dissect_sublist_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2679 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_sublist);
2681 static int dissect_reserveValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2682 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveValue);
2684 static int dissect_reserveGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2685 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveGroup);
2687 static int dissect_keepActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2688 return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_keepActive);
2694 dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2695 #line 233 "h248.cnf"
2697 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
2698 tree = proto_item_add_subtree(get_ber_last_created_item(),ett_wildcard);
2699 proto_tree_add_item(tree,hf_h248_term_wild_type,new_tvb,0,1,FALSE);
2700 proto_tree_add_item(tree,hf_h248_term_wild_level,new_tvb,0,1,FALSE);
2701 proto_tree_add_item(tree,hf_h248_term_wild_position,new_tvb,0,1,FALSE);
2703 wild_term = tvb_get_guint8(new_tvb,0) & 0x80 ? H248_WILDCARD_CHOOSE : H248_WILDCARD_ALL;
2709 static int dissect_wildcard_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2710 return dissect_h248_WildcardField(FALSE, tvb, offset, pinfo, tree, hf_h248_wildcard_item);
2714 static const ber_sequence_t SEQUENCE_OF_WildcardField_sequence_of[1] = {
2715 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_wildcard_item },
2719 dissect_h248_SEQUENCE_OF_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2720 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2721 SEQUENCE_OF_WildcardField_sequence_of, hf_index, ett_h248_SEQUENCE_OF_WildcardField);
2725 static int dissect_wildcard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2726 return dissect_h248_SEQUENCE_OF_WildcardField(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcard);
2732 dissect_h248_T_terminationId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2733 #line 245 "h248.cnf"
2735 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
2738 curr_info.term->len = tvb_length(new_tvb);
2739 curr_info.term->type = 0; /* unknown */
2741 if (curr_info.term->len) {
2742 curr_info.term->buffer = ep_tvb_memdup(new_tvb,0,curr_info.term->len);
2743 curr_info.term->str = bytes_to_str(curr_info.term->buffer,curr_info.term->len);
2746 curr_info.term = h248_cmd_add_term(curr_info.msg, curr_info.trx, curr_info.cmd, curr_info.term, wild_term);
2748 if (h248_term_handle) {
2749 call_dissector(h248_term_handle, new_tvb, pinfo, tree);
2752 curr_info.term->len = 0;
2753 curr_info.term->buffer = (guint8*)ep_strdup("");
2754 curr_info.term->str = ep_strdup("?");
2760 static int dissect_terminationId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2761 return dissect_h248_T_terminationId(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationId);
2765 static const ber_sequence_t TerminationID_sequence[] = {
2766 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_wildcard_impl },
2767 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationId_impl },
2772 dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2773 #line 228 "h248.cnf"
2774 curr_info.term = ep_new0(h248_term_t);
2775 wild_term = H248_WILDCARD_NONE;
2777 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2778 TerminationID_sequence, hf_index, ett_h248_TerminationID);
2782 static int dissect_terminationFrom_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2783 return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationFrom);
2785 static int dissect_terminationTo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2786 return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationTo);
2788 static int dissect_terminationID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2789 return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationID);
2791 static int dissect_TerminationIDList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2792 return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationIDList_item);
2794 static int dissect_termList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2795 return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_termList_item);
2799 static const value_string h248_T_topologyDirection_vals[] = {
2808 dissect_h248_T_topologyDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2809 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2814 static int dissect_topologyDirection_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2815 return dissect_h248_T_topologyDirection(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyDirection);
2821 dissect_h248_StreamID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2822 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2827 static int dissect_streamID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2828 return dissect_h248_StreamID(TRUE, tvb, offset, pinfo, tree, hf_h248_streamID);
2832 static const value_string h248_T_topologyDirectionExtension_vals[] = {
2833 { 0, "onewayexternal" },
2834 { 1, "onewayboth" },
2840 dissect_h248_T_topologyDirectionExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2841 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2846 static int dissect_topologyDirectionExtension_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2847 return dissect_h248_T_topologyDirectionExtension(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyDirectionExtension);
2851 static const ber_sequence_t TopologyRequest_sequence[] = {
2852 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationFrom_impl },
2853 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationTo_impl },
2854 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_topologyDirection_impl },
2855 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2856 { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_topologyDirectionExtension_impl },
2861 dissect_h248_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2862 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2863 TopologyRequest_sequence, hf_index, ett_h248_TopologyRequest);
2867 static int dissect_topologyReq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2868 return dissect_h248_TopologyRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_topologyReq_item);
2872 static const ber_sequence_t T_topologyReq_sequence_of[1] = {
2873 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_topologyReq_item },
2877 dissect_h248_T_topologyReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2878 #line 169 "h248.cnf"
2879 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_TOPOLOGY_REQ,offset);
2881 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2882 T_topologyReq_sequence_of, hf_index, ett_h248_T_topologyReq);
2884 #line 172 "h248.cnf"
2885 curr_info.cmd = NULL;
2889 static int dissect_topologyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2890 return dissect_h248_T_topologyReq(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyReq);
2893 static int dissect_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2894 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_name);
2896 static int dissect_iAEDPkgdName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2897 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAEDPkgdName);
2899 static int dissect_iAEBDEventName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2900 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAEBDEventName);
2902 static int dissect_iASignalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2903 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iASignalName);
2905 static int dissect_iAStatName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2906 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAStatName);
2908 static int dissect_pkgdName1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2909 return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_pkgdName1);
2915 dissect_h248_PropertyName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2916 offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2920 static int dissect_propertyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2921 return dissect_h248_PropertyName(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyName);
2924 static int dissect_propertyParamValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2925 return dissect_h248_PropertyID(FALSE, tvb, offset, pinfo, tree, hf_h248_propertyParamValue_item);
2929 static const ber_sequence_t SEQUENCE_OF_PropertyID_sequence_of[1] = {
2930 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_propertyParamValue_item },
2934 dissect_h248_SEQUENCE_OF_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2935 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2936 SEQUENCE_OF_PropertyID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyID);
2940 static int dissect_propertyParamValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2941 return dissect_h248_SEQUENCE_OF_PropertyID(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParamValue);
2945 static const value_string h248_Relation_vals[] = {
2946 { 0, "greaterThan" },
2947 { 1, "smallerThan" },
2954 dissect_h248_Relation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2955 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2960 static int dissect_relation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2961 return dissect_h248_Relation(TRUE, tvb, offset, pinfo, tree, hf_h248_relation);
2965 static const value_string h248_T_extraInfo1_vals[] = {
2972 static const ber_choice_t T_extraInfo1_choice[] = {
2973 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
2974 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
2975 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
2976 { 0, 0, 0, 0, NULL }
2980 dissect_h248_T_extraInfo1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2981 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2982 T_extraInfo1_choice, hf_index, ett_h248_T_extraInfo1,
2987 static int dissect_extraInfo1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2988 return dissect_h248_T_extraInfo1(TRUE, tvb, offset, pinfo, tree, hf_h248_extraInfo1);
2992 static const ber_sequence_t PropertyParm_sequence[] = {
2993 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyName_impl },
2994 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_propertyParamValue_impl },
2995 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extraInfo1_impl },
3000 dissect_h248_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3001 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3002 PropertyParm_sequence, hf_index, ett_h248_PropertyParm);
3006 static int dissect_contextProp_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3007 return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_contextProp_item);
3009 static int dissect_propertyParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3010 return dissect_h248_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParms);
3012 static int dissect_propertyParms_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3013 return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_propertyParms_item);
3015 static int dissect_PropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3016 return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_PropertyGroup_item);
3018 static int dissect_mpl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3019 return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_mpl_item);
3023 static const ber_sequence_t SEQUENCE_OF_PropertyParm_sequence_of[1] = {
3024 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextProp_item },
3028 dissect_h248_SEQUENCE_OF_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3029 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3030 SEQUENCE_OF_PropertyParm_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyParm);
3034 static int dissect_contextProp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3035 return dissect_h248_SEQUENCE_OF_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_contextProp);
3037 static int dissect_propertyParms1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3038 return dissect_h248_SEQUENCE_OF_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParms1);
3040 static int dissect_mpl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3041 return dissect_h248_SEQUENCE_OF_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_mpl);
3045 static const ber_sequence_t SEQUENCE_OF_ContextID_sequence_of[1] = {
3046 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_contextList_item },
3050 dissect_h248_SEQUENCE_OF_ContextID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3051 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3052 SEQUENCE_OF_ContextID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ContextID);
3056 static int dissect_contextList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3057 return dissect_h248_SEQUENCE_OF_ContextID(TRUE, tvb, offset, pinfo, tree, hf_h248_contextList);
3061 static const ber_sequence_t ContextRequest_sequence[] = {
3062 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
3063 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_emergency_impl },
3064 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topologyReq_impl },
3065 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iepscallind_impl },
3066 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextProp_impl },
3067 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextList_impl },
3072 dissect_h248_ContextRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3073 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3074 ContextRequest_sequence, hf_index, ett_h248_ContextRequest);
3078 static int dissect_contextRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3079 return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextRequest);
3081 static int dissect_contextReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3082 return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextReply);
3088 dissect_h248_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3089 offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
3093 static int dissect_immAckRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3094 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_immAckRequired);
3096 static int dissect_segmentationComplete_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3097 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_segmentationComplete);
3099 static int dissect_topology_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3100 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_topology);
3102 static int dissect_cAAREmergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3103 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_cAAREmergency);
3105 static int dissect_cAARPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3106 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_cAARPriority);
3108 static int dissect_iepscallind1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3109 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iepscallind1);
3111 static int dissect_andAUDITSelect_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3112 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_andAUDITSelect);
3114 static int dissect_orAUDITSelect_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3115 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_orAUDITSelect);
3117 static int dissect_optional_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3118 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_optional);
3120 static int dissect_wildcardReturn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3121 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcardReturn);
3123 static int dissect_iALCDStreamMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3124 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDStreamMode);
3126 static int dissect_iALCDReserveValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3127 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDReserveValue);
3129 static int dissect_iALCDReserveGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3130 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iALCDReserveGroup);
3132 static int dissect_eventBufferControl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3133 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferControl);
3135 static int dissect_iATSDServiceState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3136 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_iATSDServiceState);
3138 static int dissect_notifyImmediate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3139 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyImmediate);
3141 static int dissect_neverNotify_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3142 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_neverNotify);
3144 static int dissect_resetEventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3145 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_resetEventsDescriptor);
3147 static int dissect_serviceChangeIncompleteFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3148 return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeIncompleteFlag);
3152 static const ber_sequence_t IndAudPropertyParm_sequence[] = {
3153 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_name_impl },
3154 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_propertyParms_impl },
3159 dissect_h248_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3160 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3161 IndAudPropertyParm_sequence, hf_index, ett_h248_IndAudPropertyParm);
3165 static int dissect_contextPropAud_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3166 return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_contextPropAud_item);
3168 static int dissect_indAudPropertyParms_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3169 return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_indAudPropertyParms_item);
3171 static int dissect_IndAudPropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3172 return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_IndAudPropertyGroup_item);
3176 static const ber_sequence_t SEQUENCE_OF_IndAudPropertyParm_sequence_of[1] = {
3177 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextPropAud_item },
3181 dissect_h248_SEQUENCE_OF_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3182 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3183 SEQUENCE_OF_IndAudPropertyParm_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAudPropertyParm);
3187 static int dissect_contextPropAud_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3188 return dissect_h248_SEQUENCE_OF_IndAudPropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_contextPropAud);
3190 static int dissect_indAudPropertyParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3191 return dissect_h248_SEQUENCE_OF_IndAudPropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudPropertyParms);
3195 static const value_string h248_SelectLogic_vals[] = {
3196 { 0, "andAUDITSelect" },
3197 { 1, "orAUDITSelect" },
3201 static const ber_choice_t SelectLogic_choice[] = {
3202 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_andAUDITSelect_impl },
3203 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_orAUDITSelect_impl },
3204 { 0, 0, 0, 0, NULL }
3208 dissect_h248_SelectLogic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3209 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3210 SelectLogic_choice, hf_index, ett_h248_SelectLogic,
3215 static int dissect_selectLogic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3216 return dissect_h248_SelectLogic(TRUE, tvb, offset, pinfo, tree, hf_h248_selectLogic);
3220 static const ber_sequence_t ContextAttrAuditRequest_sequence[] = {
3221 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topology_impl },
3222 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cAAREmergency_impl },
3223 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cAARPriority_impl },
3224 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iepscallind1_impl },
3225 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextPropAud_impl },
3226 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectpriority_impl },
3227 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectemergency_impl },
3228 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectiepscallind_impl },
3229 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_selectLogic_impl },
3234 dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3235 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3236 ContextAttrAuditRequest_sequence, hf_index, ett_h248_ContextAttrAuditRequest);
3244 dissect_h248_T_contextAttrAuditReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3245 #line 176 "h248.cnf"
3246 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_CTX_ATTR_AUDIT_REQ,offset);
3248 offset = dissect_h248_ContextAttrAuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3250 #line 179 "h248.cnf"
3251 curr_info.cmd = NULL;
3255 static int dissect_contextAttrAuditReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3256 return dissect_h248_T_contextAttrAuditReq(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAttrAuditReq);
3260 static const ber_sequence_t TerminationIDList_sequence_of[1] = {
3261 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TerminationIDList_item },
3265 dissect_h248_TerminationIDList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3266 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3267 TerminationIDList_sequence_of, hf_index, ett_h248_TerminationIDList);
3271 static int dissect_terminationIDList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3272 return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationIDList);
3274 static int dissect_contextAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3275 return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAuditResult);
3279 static const value_string h248_EventBufferControl_vals[] = {
3287 dissect_h248_EventBufferControl(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3288 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3293 static int dissect_tSEventBufferControl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3294 return dissect_h248_EventBufferControl(TRUE, tvb, offset, pinfo, tree, hf_h248_tSEventBufferControl);
3298 static const value_string h248_ServiceState_vals[] = {
3307 dissect_h248_ServiceState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3308 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3313 static int dissect_serviceStateSel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3314 return dissect_h248_ServiceState(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceStateSel);
3316 static int dissect_serviceState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3317 return dissect_h248_ServiceState(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceState);
3321 static const ber_sequence_t TerminationStateDescriptor_sequence[] = {
3322 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyParms1_impl },
3323 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tSEventBufferControl_impl },
3324 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceState_impl },
3329 dissect_h248_TerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3330 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3331 TerminationStateDescriptor_sequence, hf_index, ett_h248_TerminationStateDescriptor);
3335 static int dissect_termStateDescr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3336 return dissect_h248_TerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_termStateDescr);
3340 static const value_string h248_StreamMode_vals[] = {
3351 dissect_h248_StreamMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3352 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3357 static int dissect_streamModeSel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3358 return dissect_h248_StreamMode(TRUE, tvb, offset, pinfo, tree, hf_h248_streamModeSel);
3360 static int dissect_streamMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3361 return dissect_h248_StreamMode(TRUE, tvb, offset, pinfo, tree, hf_h248_streamMode);
3365 static const ber_sequence_t LocalControlDescriptor_sequence[] = {
3366 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamMode_impl },
3367 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveValue_impl },
3368 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveGroup_impl },
3369 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_propertyParms1_impl },
3374 dissect_h248_LocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3375 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3376 LocalControlDescriptor_sequence, hf_index, ett_h248_LocalControlDescriptor);
3380 static int dissect_localControlDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3381 return dissect_h248_LocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localControlDescriptor);
3385 static const ber_sequence_t PropertyGroup_sequence_of[1] = {
3386 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PropertyGroup_item },
3390 dissect_h248_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3391 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3392 PropertyGroup_sequence_of, hf_index, ett_h248_PropertyGroup);
3396 static int dissect_propGrps_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3397 return dissect_h248_PropertyGroup(FALSE, tvb, offset, pinfo, tree, hf_h248_propGrps_item);
3401 static const ber_sequence_t SEQUENCE_OF_PropertyGroup_sequence_of[1] = {
3402 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_propGrps_item },
3406 dissect_h248_SEQUENCE_OF_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3407 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3408 SEQUENCE_OF_PropertyGroup_sequence_of, hf_index, ett_h248_SEQUENCE_OF_PropertyGroup);
3412 static int dissect_propGrps_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3413 return dissect_h248_SEQUENCE_OF_PropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_propGrps);
3417 static const ber_sequence_t LocalRemoteDescriptor_sequence[] = {
3418 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propGrps_impl },
3423 dissect_h248_LocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3424 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3425 LocalRemoteDescriptor_sequence, hf_index, ett_h248_LocalRemoteDescriptor);
3429 static int dissect_localDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3430 return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localDescriptor);
3432 static int dissect_remoteDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3433 return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_remoteDescriptor);
3439 dissect_h248_StatName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3440 offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3444 static int dissect_statName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3445 return dissect_h248_StatName(TRUE, tvb, offset, pinfo, tree, hf_h248_statName);
3451 dissect_h248_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3452 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3457 static int dissect_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3458 return dissect_h248_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_h248_data);
3460 static int dissect_Value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3461 return dissect_h248_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_h248_Value_item);
3465 static const ber_sequence_t Value_sequence_of[1] = {
3466 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_Value_item },
3470 dissect_h248_Value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3471 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3472 Value_sequence_of, hf_index, ett_h248_Value);
3480 dissect_h248_StatValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3481 offset = dissect_h248_Value(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3485 static int dissect_statValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3486 return dissect_h248_StatValue(TRUE, tvb, offset, pinfo, tree, hf_h248_statValue);
3490 static const ber_sequence_t StatisticsParameter_sequence[] = {
3491 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl },
3492 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_statValue_impl },
3497 dissect_h248_StatisticsParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3498 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3499 StatisticsParameter_sequence, hf_index, ett_h248_StatisticsParameter);
3503 static int dissect_StatisticsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3504 return dissect_h248_StatisticsParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_StatisticsDescriptor_item);
3508 static const ber_sequence_t StatisticsDescriptor_sequence_of[1] = {
3509 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_StatisticsDescriptor_item },
3513 dissect_h248_StatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3514 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3515 StatisticsDescriptor_sequence_of, hf_index, ett_h248_StatisticsDescriptor);
3519 static int dissect_statisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3520 return dissect_h248_StatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_statisticsDescriptor);
3524 static const ber_sequence_t StreamParms_sequence[] = {
3525 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localControlDescriptor_impl },
3526 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localDescriptor_impl },
3527 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remoteDescriptor_impl },
3528 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
3533 dissect_h248_StreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3534 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3535 StreamParms_sequence, hf_index, ett_h248_StreamParms);
3539 static int dissect_mediaDescriptorOneStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3540 return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorOneStream);
3542 static int dissect_streamParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3543 return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_streamParms);
3547 static const ber_sequence_t StreamDescriptor_sequence[] = {
3548 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
3549 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_streamParms_impl },
3554 dissect_h248_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3555 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3556 StreamDescriptor_sequence, hf_index, ett_h248_StreamDescriptor);
3560 static int dissect_mediaDescriptorMultiStream_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3561 return dissect_h248_StreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorMultiStream_item);
3565 static const ber_sequence_t SEQUENCE_OF_StreamDescriptor_sequence_of[1] = {
3566 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mediaDescriptorMultiStream_item },
3570 dissect_h248_SEQUENCE_OF_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3571 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3572 SEQUENCE_OF_StreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_StreamDescriptor);
3576 static int dissect_mediaDescriptorMultiStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3577 return dissect_h248_SEQUENCE_OF_StreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptorMultiStream);
3581 static const value_string h248_T_streams_vals[] = {
3583 { 1, "multiStream" },
3587 static const ber_choice_t T_streams_choice[] = {
3588 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mediaDescriptorOneStream_impl },
3589 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mediaDescriptorMultiStream_impl },
3590 { 0, 0, 0, 0, NULL }
3594 dissect_h248_T_streams(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3595 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3596 T_streams_choice, hf_index, ett_h248_T_streams,
3601 static int dissect_streams_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3602 return dissect_h248_T_streams(TRUE, tvb, offset, pinfo, tree, hf_h248_streams);
3606 static const ber_sequence_t MediaDescriptor_sequence[] = {
3607 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_termStateDescr_impl },
3608 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streams_impl },
3613 dissect_h248_MediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3614 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3615 MediaDescriptor_sequence, hf_index, ett_h248_MediaDescriptor);
3619 static int dissect_mediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3620 return dissect_h248_MediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptor);
3624 static const value_string h248_ModemType_vals[] = {
3639 dissect_h248_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3640 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3645 static int dissect_mtl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3646 return dissect_h248_ModemType(FALSE, tvb, offset, pinfo, tree, hf_h248_mtl_item);
3650 static const ber_sequence_t SEQUENCE_OF_ModemType_sequence_of[1] = {
3651 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_mtl_item },
3655 dissect_h248_SEQUENCE_OF_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3656 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3657 SEQUENCE_OF_ModemType_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ModemType);
3661 static int dissect_mtl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3662 return dissect_h248_SEQUENCE_OF_ModemType(TRUE, tvb, offset, pinfo, tree, hf_h248_mtl);
3668 dissect_h248_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3669 offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3673 static int dissect_object_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3674 return dissect_h248_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_h248_object);
3680 dissect_h248_INTEGER_0_255(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3681 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3686 static int dissect_t35CountryCode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3687 return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode1);
3689 static int dissect_t35CountryCode2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3690 return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode2);
3692 static int dissect_t35Extension_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3693 return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35Extension);
3697 static const ber_sequence_t H221NonStandard_sequence[] = {
3698 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_t35CountryCode1_impl },
3699 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_t35CountryCode2_impl },
3700 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_t35Extension_impl },
3701 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_manufacturerCode_impl },
3706 dissect_h248_H221NonStandard(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3707 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3708 H221NonStandard_sequence, hf_index, ett_h248_H221NonStandard);
3712 static int dissect_h221NonStandard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3713 return dissect_h248_H221NonStandard(TRUE, tvb, offset, pinfo, tree, hf_h248_h221NonStandard);
3719 dissect_h248_IA5String_SIZE_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3720 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
3721 pinfo, tree, tvb, offset, hf_index,
3726 static int dissect_experimental_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3727 return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_experimental);
3729 static int dissect_date_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3730 return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_date);
3732 static int dissect_time_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3733 return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_time);
3737 static const value_string h248_NonStandardIdentifier_vals[] = {
3739 { 1, "h221NonStandard" },
3740 { 2, "experimental" },
3744 static const ber_choice_t NonStandardIdentifier_choice[] = {
3745 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_object_impl },
3746 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h221NonStandard_impl },
3747 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_experimental_impl },
3748 { 0, 0, 0, 0, NULL }
3752 dissect_h248_NonStandardIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3753 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3754 NonStandardIdentifier_choice, hf_index, ett_h248_NonStandardIdentifier,
3759 static int dissect_nonStandardIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3760 return dissect_h248_NonStandardIdentifier(TRUE, tvb, offset, pinfo, tree, hf_h248_nonStandardIdentifier);
3764 static const ber_sequence_t NonStandardData_sequence[] = {
3765 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_nonStandardIdentifier_impl },
3766 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_data_impl },
3771 dissect_h248_NonStandardData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3772 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3773 NonStandardData_sequence, hf_index, ett_h248_NonStandardData);
3777 static int dissect_nonStandardData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3778 return dissect_h248_NonStandardData(TRUE, tvb, offset, pinfo, tree, hf_h248_nonStandardData);
3782 static const ber_sequence_t ModemDescriptor_sequence[] = {
3783 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mtl_impl },
3784 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mpl_impl },
3785 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
3790 dissect_h248_ModemDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3791 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3792 ModemDescriptor_sequence, hf_index, ett_h248_ModemDescriptor);
3796 static int dissect_modemDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3797 return dissect_h248_ModemDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_modemDescriptor);
3801 static const value_string h248_MuxType_vals[] = {
3812 dissect_h248_MuxType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3813 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3818 static int dissect_muxType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3819 return dissect_h248_MuxType(TRUE, tvb, offset, pinfo, tree, hf_h248_muxType);
3823 static const ber_sequence_t SEQUENCE_OF_TerminationID_sequence_of[1] = {
3824 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_termList_item },
3828 dissect_h248_SEQUENCE_OF_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3829 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3830 SEQUENCE_OF_TerminationID_sequence_of, hf_index, ett_h248_SEQUENCE_OF_TerminationID);
3834 static int dissect_termList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3835 return dissect_h248_SEQUENCE_OF_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_termList);
3839 static const ber_sequence_t MuxDescriptor_sequence[] = {
3840 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_muxType_impl },
3841 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_termList_impl },
3842 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
3847 dissect_h248_MuxDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3848 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3849 MuxDescriptor_sequence, hf_index, ett_h248_MuxDescriptor);
3853 static int dissect_muxDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3854 return dissect_h248_MuxDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_muxDescriptor);
3860 dissect_h248_RequestID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3861 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3866 static int dissect_requestID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3867 return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestID);
3869 static int dissect_signalRequestID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3870 return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_signalRequestID);
3872 static int dissect_requestId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3873 return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestId);
3876 static int dissect_eventName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3877 return dissect_h248_EventName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventName);
3879 static int dissect_pkgdName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3880 return dissect_h248_EventName(TRUE, tvb, offset, pinfo, tree, hf_h248_pkgdName);
3886 dissect_h248_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3887 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3892 static int dissect_packageName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3893 return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_packageName);
3899 dissect_h248_DigitMapName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3900 offset = dissect_h248_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3904 static int dissect_digitMapName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3905 return dissect_h248_DigitMapName(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapName);
3909 static const ber_sequence_t DigitMapValue_sequence[] = {
3910 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_startTimer_impl },
3911 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_shortTimer_impl },
3912 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longTimer_impl },
3913 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_digitMapBody_impl },
3914 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_durationTimer_impl },
3919 dissect_h248_DigitMapValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3920 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3921 DigitMapValue_sequence, hf_index, ett_h248_DigitMapValue);
3925 static int dissect_digitMapValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3926 return dissect_h248_DigitMapValue(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapValue);
3930 static const value_string h248_EventDM_vals[] = {
3931 { 0, "digitMapName" },
3932 { 1, "digitMapValue" },
3936 static const ber_choice_t EventDM_choice[] = {
3937 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
3938 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
3939 { 0, 0, 0, 0, NULL }
3943 dissect_h248_EventDM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3944 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3945 EventDM_choice, hf_index, ett_h248_EventDM,
3950 static int dissect_eventDM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3951 return dissect_h248_EventDM(TRUE, tvb, offset, pinfo, tree, hf_h248_eventDM);
3954 static int dissect_signalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3955 return dissect_h248_SignalName(TRUE, tvb, offset, pinfo, tree, hf_h248_signalName);
3959 static const value_string h248_SignalType_vals[] = {
3968 dissect_h248_SignalType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3969 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3974 static int dissect_sigType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3975 return dissect_h248_SignalType(TRUE, tvb, offset, pinfo, tree, hf_h248_sigType);
3979 static const asn_namedbit NotifyCompletion_bits[] = {
3980 { 0, &hf_h248_NotifyCompletion_onTimeOut, -1, -1, "onTimeOut", NULL },
3981 { 1, &hf_h248_NotifyCompletion_onInterruptByEvent, -1, -1, "onInterruptByEvent", NULL },
3982 { 2, &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr, -1, -1, "onInterruptByNewSignalDescr", NULL },
3983 { 3, &hf_h248_NotifyCompletion_otherReason, -1, -1, "otherReason", NULL },
3984 { 4, &hf_h248_NotifyCompletion_onIteration, -1, -1, "onIteration", NULL },
3985 { 0, NULL, 0, 0, NULL, NULL }
3989 dissect_h248_NotifyCompletion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3990 offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3991 NotifyCompletion_bits, hf_index, ett_h248_NotifyCompletion,
3996 static int dissect_notifyCompletion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3997 return dissect_h248_NotifyCompletion(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyCompletion);
4000 static int dissect_sigParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4001 return dissect_h248_SigParameterName(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterName);
4004 static int dissect_SigParamValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4005 return dissect_h248_SigParamValue(FALSE, tvb, offset, pinfo, tree, hf_h248_SigParamValues_item);
4009 static const ber_sequence_t SigParamValues_sequence_of[1] = {
4010 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SigParamValues_item },
4014 dissect_h248_SigParamValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4015 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4016 SigParamValues_sequence_of, hf_index, ett_h248_SigParamValues);
4020 static int dissect_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4021 return dissect_h248_SigParamValues(TRUE, tvb, offset, pinfo, tree, hf_h248_value);
4025 static const value_string h248_T_extraInfo2_vals[] = {
4032 static const ber_choice_t T_extraInfo2_choice[] = {
4033 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
4034 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
4035 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
4036 { 0, 0, 0, 0, NULL }
4040 dissect_h248_T_extraInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4041 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4042 T_extraInfo2_choice, hf_index, ett_h248_T_extraInfo2,
4047 static int dissect_extraInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4048 return dissect_h248_T_extraInfo2(TRUE, tvb, offset, pinfo, tree, hf_h248_extraInfo2);
4052 static const ber_sequence_t SigParameter_sequence[] = {
4053 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sigParameterName_impl },
4054 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
4055 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extraInfo2_impl },
4060 dissect_h248_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4061 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4062 SigParameter_sequence, hf_index, ett_h248_SigParameter);
4066 static int dissect_sigParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4067 return dissect_h248_SigParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_sigParList_item);
4071 static const ber_sequence_t SEQUENCE_OF_SigParameter_sequence_of[1] = {
4072 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_sigParList_item },
4076 dissect_h248_SEQUENCE_OF_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4077 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4078 SEQUENCE_OF_SigParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SigParameter);
4082 static int dissect_sigParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4083 return dissect_h248_SEQUENCE_OF_SigParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParList);
4087 static const value_string h248_SignalDirection_vals[] = {
4096 dissect_h248_SignalDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4097 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4102 static int dissect_direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4103 return dissect_h248_SignalDirection(TRUE, tvb, offset, pinfo, tree, hf_h248_direction);
4107 static const ber_sequence_t Signal_sequence[] = {
4108 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signalName_impl },
4109 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4110 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sigType_impl },
4111 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_duration_impl },
4112 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notifyCompletion_impl },
4113 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
4114 { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_sigParList_impl },
4115 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_direction_impl },
4116 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
4117 { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_intersigDelay_impl },
4122 dissect_h248_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4123 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4124 Signal_sequence, hf_index, ett_h248_Signal);
4128 static int dissect_signal_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4129 return dissect_h248_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signal);
4131 static int dissect_signalList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4132 return dissect_h248_Signal(FALSE, tvb, offset, pinfo, tree, hf_h248_signalList_item);
4136 static const ber_sequence_t SEQUENCE_OF_Signal_sequence_of[1] = {
4137 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signalList_item },
4141 dissect_h248_SEQUENCE_OF_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4142 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4143 SEQUENCE_OF_Signal_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Signal);
4147 static int dissect_signalList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4148 return dissect_h248_SEQUENCE_OF_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signalList);
4152 static const ber_sequence_t SeqSigList_sequence[] = {
4153 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
4154 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_signalList_impl },
4159 dissect_h248_SeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4160 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4161 SeqSigList_sequence, hf_index, ett_h248_SeqSigList);
4165 static int dissect_seqSigList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4166 return dissect_h248_SeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_seqSigList);
4170 static const value_string h248_SignalRequest_vals[] = {
4172 { 1, "seqSigList" },
4176 static const ber_choice_t SignalRequest_choice[] = {
4177 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signal_impl },
4178 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqSigList_impl },
4179 { 0, 0, 0, 0, NULL }
4183 dissect_h248_SignalRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4184 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4185 SignalRequest_choice, hf_index, ett_h248_SignalRequest,
4190 static int dissect_SignalsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4191 return dissect_h248_SignalRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_SignalsDescriptor_item);
4195 static const ber_sequence_t SignalsDescriptor_sequence_of[1] = {
4196 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_SignalsDescriptor_item },
4200 dissect_h248_SignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4201 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4202 SignalsDescriptor_sequence_of, hf_index, ett_h248_SignalsDescriptor);
4206 static int dissect_signalsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4207 return dissect_h248_SignalsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_signalsDescriptor);
4211 static const ber_sequence_t RegulatedEmbeddedDescriptor_sequence[] = {
4212 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondEvent_impl },
4213 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
4218 dissect_h248_RegulatedEmbeddedDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4219 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4220 RegulatedEmbeddedDescriptor_sequence, hf_index, ett_h248_RegulatedEmbeddedDescriptor);
4224 static int dissect_notifyRegulated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4225 return dissect_h248_RegulatedEmbeddedDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyRegulated);
4229 static const value_string h248_NotifyBehaviour_vals[] = {
4230 { 0, "notifyImmediate" },
4231 { 1, "notifyRegulated" },
4232 { 2, "neverNotify" },
4236 static const ber_choice_t NotifyBehaviour_choice[] = {
4237 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notifyImmediate_impl },
4238 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_notifyRegulated_impl },
4239 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_neverNotify_impl },
4240 { 0, 0, 0, 0, NULL }
4244 dissect_h248_NotifyBehaviour(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4245 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4246 NotifyBehaviour_choice, hf_index, ett_h248_NotifyBehaviour,
4251 static int dissect_notifyBehaviour_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4252 return dissect_h248_NotifyBehaviour(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyBehaviour);
4256 static const ber_sequence_t SecondRequestedActions_sequence[] = {
4257 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
4258 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_eventDM_impl },
4259 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
4260 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_notifyBehaviour_impl },
4261 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_resetEventsDescriptor_impl },
4266 dissect_h248_SecondRequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4267 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4268 SecondRequestedActions_sequence, hf_index, ett_h248_SecondRequestedActions);
4272 static int dissect_secondaryEventAction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4273 return dissect_h248_SecondRequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_secondaryEventAction);
4276 static int dissect_eventParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4277 return dissect_h248_EventParameterName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterName);
4280 static int dissect_EventParamValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4281 return dissect_h248_EventParamValue(FALSE, tvb, offset, pinfo, tree, hf_h248_EventParamValues_item);
4285 static const ber_sequence_t EventParamValues_sequence_of[1] = {
4286 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_EventParamValues_item },
4290 dissect_h248_EventParamValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4291 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4292 EventParamValues_sequence_of, hf_index, ett_h248_EventParamValues);
4296 static int dissect_eventParamValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4297 return dissect_h248_EventParamValues(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParamValue);
4301 static const value_string h248_T_extraInfo_vals[] = {
4308 static const ber_choice_t T_extraInfo_choice[] = {
4309 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
4310 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
4311 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
4312 { 0, 0, 0, 0, NULL }
4316 dissect_h248_T_extraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4317 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4318 T_extraInfo_choice, hf_index, ett_h248_T_extraInfo,
4323 static int dissect_extraInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4324 return dissect_h248_T_extraInfo(FALSE, tvb, offset, pinfo, tree, hf_h248_extraInfo);
4328 static const ber_sequence_t EventParameter_sequence[] = {
4329 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventParameterName_impl },
4330 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventParamValue_impl },
4331 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extraInfo },
4336 dissect_h248_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4337 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4338 EventParameter_sequence, hf_index, ett_h248_EventParameter);
4342 static int dissect_eventParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4343 return dissect_h248_EventParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_eventParList_item);
4345 static int dissect_evParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4346 return dissect_h248_EventParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_evParList_item);
4350 static const ber_sequence_t SEQUENCE_OF_EventParameter_sequence_of[1] = {
4351 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventParList_item },
4355 dissect_h248_SEQUENCE_OF_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4356 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4357 SEQUENCE_OF_EventParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_EventParameter);
4361 static int dissect_eventParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4362 return dissect_h248_SEQUENCE_OF_EventParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParList);
4364 static int dissect_evParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4365 return dissect_h248_SEQUENCE_OF_EventParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_evParList);
4369 static const ber_sequence_t SecondRequestedEvent_sequence[] = {
4370 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName1_impl },
4371 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4372 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondaryEventAction_impl },
4373 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
4378 dissect_h248_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4379 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4380 SecondRequestedEvent_sequence, hf_index, ett_h248_SecondRequestedEvent);
4384 static int dissect_secondaryEventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4385 return dissect_h248_SecondRequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_secondaryEventList_item);
4389 static const ber_sequence_t SEQUENCE_OF_SecondRequestedEvent_sequence_of[1] = {
4390 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_secondaryEventList_item },
4394 dissect_h248_SEQUENCE_OF_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4395 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4396 SEQUENCE_OF_SecondRequestedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_SecondRequestedEvent);
4400 static int dissect_secondaryEventList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4401 return dissect_h248_SEQUENCE_OF_SecondRequestedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_secondaryEventList);
4405 static const ber_sequence_t SecondEventsDescriptor_sequence[] = {
4406 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
4407 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_secondaryEventList_impl },
4412 dissect_h248_SecondEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4413 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4414 SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor);
4420 static const ber_sequence_t RequestedActions_sequence[] = {
4421 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
4422 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_eventDM_impl },
4423 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondEvent_impl },
4424 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
4425 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_notifyBehaviour_impl },
4426 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_resetEventsDescriptor_impl },
4431 dissect_h248_RequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4432 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4433 RequestedActions_sequence, hf_index, ett_h248_RequestedActions);
4437 static int dissect_eventAction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4438 return dissect_h248_RequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_eventAction);
4442 static const ber_sequence_t RequestedEvent_sequence[] = {
4443 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
4444 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4445 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventAction_impl },
4446 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
4451 dissect_h248_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4452 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4453 RequestedEvent_sequence, hf_index, ett_h248_RequestedEvent);
4457 static int dissect_eventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4458 return dissect_h248_RequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_eventList_item);
4462 static const ber_sequence_t SEQUENCE_OF_RequestedEvent_sequence_of[1] = {
4463 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventList_item },
4467 dissect_h248_SEQUENCE_OF_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4468 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4469 SEQUENCE_OF_RequestedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_RequestedEvent);
4473 static int dissect_eventList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4474 return dissect_h248_SEQUENCE_OF_RequestedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_eventList);
4478 static const ber_sequence_t EventsDescriptor_sequence[] = {
4479 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
4480 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventList_impl },
4485 dissect_h248_EventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4486 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4487 EventsDescriptor_sequence, hf_index, ett_h248_EventsDescriptor);
4491 static int dissect_eventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4492 return dissect_h248_EventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventsDescriptor);
4496 static const ber_sequence_t EventSpec_sequence[] = {
4497 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName_impl },
4498 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4499 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
4504 dissect_h248_EventSpec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4505 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4506 EventSpec_sequence, hf_index, ett_h248_EventSpec);
4510 static int dissect_EventBufferDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4511 return dissect_h248_EventSpec(FALSE, tvb, offset, pinfo, tree, hf_h248_EventBufferDescriptor_item);
4515 static const ber_sequence_t EventBufferDescriptor_sequence_of[1] = {
4516 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_EventBufferDescriptor_item },
4520 dissect_h248_EventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4521 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4522 EventBufferDescriptor_sequence_of, hf_index, ett_h248_EventBufferDescriptor);
4526 static int dissect_eventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4527 return dissect_h248_EventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferDescriptor);
4531 static const ber_sequence_t DigitMapDescriptor_sequence[] = {
4532 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
4533 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
4538 dissect_h248_DigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4539 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4540 DigitMapDescriptor_sequence, hf_index, ett_h248_DigitMapDescriptor);
4544 static int dissect_digitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4545 return dissect_h248_DigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapDescriptor);
4549 static const asn_namedbit T_auditToken_bits[] = {
4550 { 0, &hf_h248_T_auditToken_muxToken, -1, -1, "muxToken", NULL },
4551 { 1, &hf_h248_T_auditToken_modemToken, -1, -1, "modemToken", NULL },
4552 { 2, &hf_h248_T_auditToken_mediaToken, -1, -1, "mediaToken", NULL },
4553 { 3, &hf_h248_T_auditToken_eventsToken, -1, -1, "eventsToken", NULL },
4554 { 4, &hf_h248_T_auditToken_signalsToken, -1, -1, "signalsToken", NULL },
4555 { 5, &hf_h248_T_auditToken_digitMapToken, -1, -1, "digitMapToken", NULL },
4556 { 6, &hf_h248_T_auditToken_statsToken, -1, -1, "statsToken", NULL },
4557 { 7, &hf_h248_T_auditToken_observedEventsToken, -1, -1, "observedEventsToken", NULL },
4558 { 8, &hf_h248_T_auditToken_packagesToken, -1, -1, "packagesToken", NULL },
4559 { 9, &hf_h248_T_auditToken_eventBufferToken, -1, -1, "eventBufferToken", NULL },
4560 { 0, NULL, 0, 0, NULL, NULL }
4564 dissect_h248_T_auditToken(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4565 offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4566 T_auditToken_bits, hf_index, ett_h248_T_auditToken,
4571 static int dissect_auditToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4572 return dissect_h248_T_auditToken(TRUE, tvb, offset, pinfo, tree, hf_h248_auditToken);
4576 static const ber_sequence_t IndAudTerminationStateDescriptor_sequence[] = {
4577 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indAudPropertyParms_impl },
4578 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventBufferControl_impl },
4579 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iATSDServiceState_impl },
4580 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceStateSel_impl },
4585 dissect_h248_IndAudTerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4586 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4587 IndAudTerminationStateDescriptor_sequence, hf_index, ett_h248_IndAudTerminationStateDescriptor);
4591 static int dissect_indAudTerminationStateDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4592 return dissect_h248_IndAudTerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudTerminationStateDescriptor);
4596 static const ber_sequence_t IndAudLocalControlDescriptor_sequence[] = {
4597 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDStreamMode_impl },
4598 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDReserveValue_impl },
4599 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iALCDReserveGroup_impl },
4600 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_indAudPropertyParms_impl },
4601 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamModeSel_impl },
4606 dissect_h248_IndAudLocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4607 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4608 IndAudLocalControlDescriptor_sequence, hf_index, ett_h248_IndAudLocalControlDescriptor);
4612 static int dissect_iASPLocalControlDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4613 return dissect_h248_IndAudLocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPLocalControlDescriptor);
4617 static const ber_sequence_t IndAudPropertyGroup_sequence_of[1] = {
4618 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IndAudPropertyGroup_item },
4622 dissect_h248_IndAudPropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4623 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4624 IndAudPropertyGroup_sequence_of, hf_index, ett_h248_IndAudPropertyGroup);
4628 static int dissect_iAPropertyGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4629 return dissect_h248_IndAudPropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_iAPropertyGroup);
4633 static const ber_sequence_t IndAudLocalRemoteDescriptor_sequence[] = {
4634 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_propGroupID_impl },
4635 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_iAPropertyGroup_impl },
4640 dissect_h248_IndAudLocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4641 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4642 IndAudLocalRemoteDescriptor_sequence, hf_index, ett_h248_IndAudLocalRemoteDescriptor);
4646 static int dissect_iASPLocalDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4647 return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPLocalDescriptor);
4649 static int dissect_iASPRemoteDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4650 return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_iASPRemoteDescriptor);
4654 static const ber_sequence_t IndAudStatisticsDescriptor_sequence[] = {
4655 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iAStatName_impl },
4660 dissect_h248_IndAudStatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4661 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4662 IndAudStatisticsDescriptor_sequence, hf_index, ett_h248_IndAudStatisticsDescriptor);
4666 static int dissect_indaudstatisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4667 return dissect_h248_IndAudStatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudstatisticsDescriptor);
4669 static int dissect_statisticsDescriptor1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4670 return dissect_h248_IndAudStatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_statisticsDescriptor1);
4674 static const ber_sequence_t IndAudStreamParms_sequence[] = {
4675 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPLocalControlDescriptor_impl },
4676 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPLocalDescriptor_impl },
4677 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASPRemoteDescriptor_impl },
4678 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor1_impl },
4683 dissect_h248_IndAudStreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4684 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4685 IndAudStreamParms_sequence, hf_index, ett_h248_IndAudStreamParms);
4689 static int dissect_oneStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4690 return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_oneStream);
4692 static int dissect_indAudStreamParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4693 return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudStreamParms);
4697 static const ber_sequence_t IndAudStreamDescriptor_sequence[] = {
4698 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4699 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indAudStreamParms_impl },
4704 dissect_h248_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4705 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4706 IndAudStreamDescriptor_sequence, hf_index, ett_h248_IndAudStreamDescriptor);
4710 static int dissect_multiStream_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4711 return dissect_h248_IndAudStreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_multiStream_item);
4715 static const ber_sequence_t SEQUENCE_OF_IndAudStreamDescriptor_sequence_of[1] = {
4716 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_multiStream_item },
4720 dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4721 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4722 SEQUENCE_OF_IndAudStreamDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAudStreamDescriptor);
4726 static int dissect_multiStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4727 return dissect_h248_SEQUENCE_OF_IndAudStreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_multiStream);
4731 static const value_string h248_indAudMediaDescriptorStreams_vals[] = {
4733 { 1, "multiStream" },
4737 static const ber_choice_t indAudMediaDescriptorStreams_choice[] = {
4738 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_oneStream_impl },
4739 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_multiStream_impl },
4740 { 0, 0, 0, 0, NULL }
4744 dissect_h248_indAudMediaDescriptorStreams(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4745 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4746 indAudMediaDescriptorStreams_choice, hf_index, ett_h248_indAudMediaDescriptorStreams,
4751 static int dissect_indAudMediaDescriptorStreams_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4752 return dissect_h248_indAudMediaDescriptorStreams(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudMediaDescriptorStreams);
4756 static const ber_sequence_t IndAudMediaDescriptor_sequence[] = {
4757 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_indAudTerminationStateDescriptor_impl },
4758 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_indAudMediaDescriptorStreams_impl },
4763 dissect_h248_IndAudMediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4764 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4765 IndAudMediaDescriptor_sequence, hf_index, ett_h248_IndAudMediaDescriptor);
4769 static int dissect_indaudmediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4770 return dissect_h248_IndAudMediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudmediaDescriptor);
4774 static const ber_sequence_t IndAudEventsDescriptor_sequence[] = {
4775 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
4776 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_iAEDPkgdName_impl },
4777 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4782 dissect_h248_IndAudEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4783 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4784 IndAudEventsDescriptor_sequence, hf_index, ett_h248_IndAudEventsDescriptor);
4788 static int dissect_indaudeventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4789 return dissect_h248_IndAudEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventsDescriptor);
4793 static const ber_sequence_t IndAudEventBufferDescriptor_sequence[] = {
4794 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iAEBDEventName_impl },
4795 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4800 dissect_h248_IndAudEventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4801 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4802 IndAudEventBufferDescriptor_sequence, hf_index, ett_h248_IndAudEventBufferDescriptor);
4806 static int dissect_indaudeventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4807 return dissect_h248_IndAudEventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventBufferDescriptor);
4811 static const ber_sequence_t IndAudSignal_sequence[] = {
4812 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iASignalName_impl },
4813 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
4814 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalRequestID_impl },
4819 dissect_h248_IndAudSignal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4820 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4821 IndAudSignal_sequence, hf_index, ett_h248_IndAudSignal);
4825 static int dissect_indAudSignal_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4826 return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudSignal);
4828 static int dissect_iASignalList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4829 return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_iASignalList);
4833 static const ber_sequence_t IndAudSeqSigList_sequence[] = {
4834 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
4835 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iASignalList_impl },
4840 dissect_h248_IndAudSeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4841 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4842 IndAudSeqSigList_sequence, hf_index, ett_h248_IndAudSeqSigList);
4846 static int dissect_indAudSeqSigList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4847 return dissect_h248_IndAudSeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_indAudSeqSigList);
4851 static const value_string h248_IndAudSignalsDescriptor_vals[] = {
4853 { 1, "seqSigList" },
4857 static const ber_choice_t IndAudSignalsDescriptor_choice[] = {
4858 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indAudSignal_impl },
4859 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indAudSeqSigList_impl },
4860 { 0, 0, 0, 0, NULL }
4864 dissect_h248_IndAudSignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4865 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4866 IndAudSignalsDescriptor_choice, hf_index, ett_h248_IndAudSignalsDescriptor,
4871 static int dissect_indaudsignalsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4872 return dissect_h248_IndAudSignalsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudsignalsDescriptor);
4876 static const ber_sequence_t IndAudDigitMapDescriptor_sequence[] = {
4877 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
4882 dissect_h248_IndAudDigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4883 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4884 IndAudDigitMapDescriptor_sequence, hf_index, ett_h248_IndAudDigitMapDescriptor);
4888 static int dissect_indauddigitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4889 return dissect_h248_IndAudDigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indauddigitMapDescriptor);
4893 static const ber_sequence_t IndAudPackagesDescriptor_sequence[] = {
4894 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
4895 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
4900 dissect_h248_IndAudPackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4901 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4902 IndAudPackagesDescriptor_sequence, hf_index, ett_h248_IndAudPackagesDescriptor);
4906 static int dissect_indaudpackagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4907 return dissect_h248_IndAudPackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudpackagesDescriptor);
4911 static const value_string h248_IndAuditParameter_vals[] = {
4912 { 0, "indaudmediaDescriptor" },
4913 { 1, "indaudeventsDescriptor" },
4914 { 2, "indaudeventBufferDescriptor" },
4915 { 3, "indaudsignalsDescriptor" },
4916 { 4, "indauddigitMapDescriptor" },
4917 { 5, "indaudstatisticsDescriptor" },
4918 { 6, "indaudpackagesDescriptor" },
4922 static const ber_choice_t IndAuditParameter_choice[] = {
4923 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indaudmediaDescriptor_impl },
4924 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indaudeventsDescriptor_impl },
4925 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_indaudeventBufferDescriptor_impl },
4926 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_indaudsignalsDescriptor_impl },
4927 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_indauddigitMapDescriptor_impl },
4928 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_indaudstatisticsDescriptor_impl },
4929 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_indaudpackagesDescriptor_impl },
4930 { 0, 0, 0, 0, NULL }
4934 dissect_h248_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4935 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4936 IndAuditParameter_choice, hf_index, ett_h248_IndAuditParameter,
4941 static int dissect_auditPropertyToken_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4942 return dissect_h248_IndAuditParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken_item);
4946 static const ber_sequence_t SEQUENCE_OF_IndAuditParameter_sequence_of[1] = {
4947 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_auditPropertyToken_item },
4951 dissect_h248_SEQUENCE_OF_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4952 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4953 SEQUENCE_OF_IndAuditParameter_sequence_of, hf_index, ett_h248_SEQUENCE_OF_IndAuditParameter);
4957 static int dissect_auditPropertyToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4958 return dissect_h248_SEQUENCE_OF_IndAuditParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken);
4962 static const ber_sequence_t AuditDescriptor_sequence[] = {
4963 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditToken_impl },
4964 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditPropertyToken_impl },
4969 dissect_h248_AuditDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4970 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4971 AuditDescriptor_sequence, hf_index, ett_h248_AuditDescriptor);
4975 static int dissect_auditDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4976 return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_auditDescriptor);
4978 static int dissect_emptyDescriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4979 return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_emptyDescriptors);
4981 static int dissect_serviceChangeInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4982 return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeInfo);
4986 static const value_string h248_AmmDescriptor_vals[] = {
4987 { 0, "mediaDescriptor" },
4988 { 1, "modemDescriptor" },
4989 { 2, "muxDescriptor" },
4990 { 3, "eventsDescriptor" },
4991 { 4, "eventBufferDescriptor" },
4992 { 5, "signalsDescriptor" },
4993 { 6, "digitMapDescriptor" },
4994 { 7, "auditDescriptor" },
4995 { 8, "statisticsDescriptor" },
4996 { 8, "statisticsDescriptor" },
5000 static const ber_choice_t AmmDescriptor_choice[] = {
5001 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
5002 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
5003 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
5004 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
5005 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
5006 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
5007 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
5008 { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
5009 { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
5010 { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
5011 { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
5012 { 0, 0, 0, 0, NULL }
5016 dissect_h248_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5017 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5018 AmmDescriptor_choice, hf_index, ett_h248_AmmDescriptor,
5023 static int dissect_descriptors_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5024 return dissect_h248_AmmDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_descriptors_item);
5028 static const ber_sequence_t SEQUENCE_OF_AmmDescriptor_sequence_of[1] = {
5029 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_descriptors_item },
5033 dissect_h248_SEQUENCE_OF_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5034 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5035 SEQUENCE_OF_AmmDescriptor_sequence_of, hf_index, ett_h248_SEQUENCE_OF_AmmDescriptor);
5039 static int dissect_descriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5040 return dissect_h248_SEQUENCE_OF_AmmDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_descriptors);
5044 static const ber_sequence_t AmmRequest_sequence[] = {
5045 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5046 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_descriptors_impl },
5051 dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5052 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5053 AmmRequest_sequence, hf_index, ett_h248_AmmRequest);
5061 dissect_h248_T_addReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5062 #line 111 "h248.cnf"
5063 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_ADD_REQ,offset);
5065 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5067 #line 115 "h248.cnf"
5068 curr_info.cmd = NULL;
5072 static int dissect_addReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5073 return dissect_h248_T_addReq(TRUE, tvb, offset, pinfo, tree, hf_h248_addReq);
5079 dissect_h248_T_moveReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5080 #line 119 "h248.cnf"
5081 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_MOVE_REQ,offset);
5083 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5085 #line 123 "h248.cnf"
5086 curr_info.cmd = NULL;
5090 static int dissect_moveReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5091 return dissect_h248_T_moveReq(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReq);
5097 dissect_h248_T_modReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5098 #line 127 "h248.cnf"
5099 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_MOD_REQ,offset);
5101 offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5103 #line 130 "h248.cnf"
5104 curr_info.cmd = NULL;
5108 static int dissect_modReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5109 return dissect_h248_T_modReq(TRUE, tvb, offset, pinfo, tree, hf_h248_modReq);
5113 static const ber_sequence_t SubtractRequest_sequence[] = {
5114 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5115 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
5120 dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5121 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5122 SubtractRequest_sequence, hf_index, ett_h248_SubtractRequest);
5130 dissect_h248_T_subtractReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5131 #line 134 "h248.cnf"
5132 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_SUB_REQ,offset);
5134 offset = dissect_h248_SubtractRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5136 #line 137 "h248.cnf"
5137 curr_info.cmd = NULL;
5141 static int dissect_subtractReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5142 return dissect_h248_T_subtractReq(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReq);
5146 static const ber_sequence_t AuditRequest_sequence[] = {
5147 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
5148 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
5149 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5154 dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5155 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5156 AuditRequest_sequence, hf_index, ett_h248_AuditRequest);
5164 dissect_h248_T_auditCapRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5165 #line 141 "h248.cnf"
5166 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_AUDITCAP_REQ,offset);
5168 offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5170 #line 144 "h248.cnf"
5171 curr_info.cmd = NULL;
5175 static int dissect_auditCapRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5176 return dissect_h248_T_auditCapRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditCapRequest);
5182 dissect_h248_T_auditValueRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5183 #line 148 "h248.cnf"
5184 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_AUDITVAL_REQ,offset);
5186 offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5188 #line 151 "h248.cnf"
5189 curr_info.cmd = NULL;
5193 static int dissect_auditValueRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5194 return dissect_h248_T_auditValueRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditValueRequest);
5198 static const ber_sequence_t TimeNotation_sequence[] = {
5199 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_date_impl },
5200 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_time_impl },
5205 dissect_h248_TimeNotation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5206 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5207 TimeNotation_sequence, hf_index, ett_h248_TimeNotation);
5211 static int dissect_timeNotation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5212 return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeNotation);
5214 static int dissect_timeStamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5215 return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeStamp);
5217 static int dissect_timestamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5218 return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timestamp);
5222 static const ber_sequence_t ObservedEvent_sequence[] = {
5223 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName_impl },
5224 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
5225 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
5226 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeNotation_impl },
5231 dissect_h248_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5232 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5233 ObservedEvent_sequence, hf_index, ett_h248_ObservedEvent);
5237 static int dissect_observedEventLst_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5238 return dissect_h248_ObservedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_observedEventLst_item);
5242 static const ber_sequence_t SEQUENCE_OF_ObservedEvent_sequence_of[1] = {
5243 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_observedEventLst_item },
5247 dissect_h248_SEQUENCE_OF_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5248 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5249 SEQUENCE_OF_ObservedEvent_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ObservedEvent);
5253 static int dissect_observedEventLst_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5254 return dissect_h248_SEQUENCE_OF_ObservedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventLst);
5258 static const ber_sequence_t ObservedEventsDescriptor_sequence[] = {
5259 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestId_impl },
5260 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventLst_impl },
5265 dissect_h248_ObservedEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5266 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5267 ObservedEventsDescriptor_sequence, hf_index, ett_h248_ObservedEventsDescriptor);
5271 static int dissect_observedEventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5272 return dissect_h248_ObservedEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventsDescriptor);
5276 static const ber_sequence_t NotifyRequest_sequence[] = {
5277 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5278 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
5279 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
5284 dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5285 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5286 NotifyRequest_sequence, hf_index, ett_h248_NotifyRequest);
5294 dissect_h248_T_notifyReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5295 #line 155 "h248.cnf"
5296 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_NOTIFY_REQ,offset);
5298 offset = dissect_h248_NotifyRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5300 #line 158 "h248.cnf"
5301 curr_info.cmd = NULL;
5305 static int dissect_notifyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5306 return dissect_h248_T_notifyReq(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReq);
5310 static const value_string h248_ServiceChangeMethod_vals[] = {
5315 { 4, "disconnected" },
5322 dissect_h248_ServiceChangeMethod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5323 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5328 static int dissect_serviceChangeMethod_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5329 return dissect_h248_ServiceChangeMethod(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMethod);
5333 static const value_string h248_ServiceChangeAddress_vals[] = {
5334 { 0, "portNumber" },
5335 { 1, "ip4Address" },
5336 { 2, "ip6Address" },
5337 { 3, "domainName" },
5338 { 4, "deviceName" },
5339 { 5, "mtpAddress" },
5343 static const ber_choice_t ServiceChangeAddress_choice[] = {
5344 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
5345 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
5346 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
5347 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
5348 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
5349 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mtpAddress_impl },
5350 { 0, 0, 0, 0, NULL }
5354 dissect_h248_ServiceChangeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5355 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5356 ServiceChangeAddress_choice, hf_index, ett_h248_ServiceChangeAddress,
5361 static int dissect_serviceChangeAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5362 return dissect_h248_ServiceChangeAddress(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeAddress);
5368 dissect_h248_IA5String_SIZE_1_67(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5369 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
5370 pinfo, tree, tvb, offset, hf_index,
5375 static int dissect_profileName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5376 return dissect_h248_IA5String_SIZE_1_67(TRUE, tvb, offset, pinfo, tree, hf_h248_profileName);
5380 static const ber_sequence_t ServiceChangeProfile_sequence[] = {
5381 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_profileName_impl },
5386 dissect_h248_ServiceChangeProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5387 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5388 ServiceChangeProfile_sequence, hf_index, ett_h248_ServiceChangeProfile);
5392 static int dissect_serviceChangeProfile_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5393 return dissect_h248_ServiceChangeProfile(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeProfile);
5399 dissect_h248_SCreasonValueOctetStr(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5400 #line 271 "h248.cnf"
5402 tvbuff_t *parameter_tvb;
5403 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5410 dissect_h248_ServiceChangeReasonStr(FALSE, parameter_tvb, 0, pinfo, tree, hf_h248_serviceChangeReasonStr);
5416 static int dissect_SCreasonValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5417 return dissect_h248_SCreasonValueOctetStr(FALSE, tvb, offset, pinfo, tree, hf_h248_SCreasonValue_item);
5421 static const ber_sequence_t SCreasonValue_sequence_of[1] = {
5422 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SCreasonValue_item },
5426 dissect_h248_SCreasonValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5427 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5428 SCreasonValue_sequence_of, hf_index, ett_h248_SCreasonValue);
5432 static int dissect_serviceChangeReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5433 return dissect_h248_SCreasonValue(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReason);
5439 dissect_h248_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5440 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5445 static int dissect_serviceChangeDelay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5446 return dissect_h248_INTEGER_0_4294967295(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeDelay);
5450 static const ber_sequence_t ServiceChangeParm_sequence[] = {
5451 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_serviceChangeMethod_impl },
5452 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress_impl },
5453 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
5454 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
5455 { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceChangeReason_impl },
5456 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeDelay_impl },
5457 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId_impl },
5458 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeStamp_impl },
5459 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
5460 { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeInfo_impl },
5461 { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeIncompleteFlag_impl },
5466 dissect_h248_ServiceChangeParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5467 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5468 ServiceChangeParm_sequence, hf_index, ett_h248_ServiceChangeParm);
5472 static int dissect_serviceChangeParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5473 return dissect_h248_ServiceChangeParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeParms);
5477 static const ber_sequence_t ServiceChangeRequest_sequence[] = {
5478 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5479 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeParms_impl },
5484 dissect_h248_ServiceChangeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5485 #line 162 "h248.cnf"
5486 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_SVCCHG_REQ,offset);
5488 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5489 ServiceChangeRequest_sequence, hf_index, ett_h248_ServiceChangeRequest);
5491 #line 165 "h248.cnf"
5492 curr_info.cmd = NULL;
5496 static int dissect_serviceChangeReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5497 return dissect_h248_ServiceChangeRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReq);
5501 static const value_string h248_Command_vals[] = {
5505 { 3, "subtractReq" },
5506 { 4, "auditCapRequest" },
5507 { 5, "auditValueRequest" },
5509 { 7, "serviceChangeReq" },
5513 static const ber_choice_t Command_choice[] = {
5514 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReq_impl },
5515 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReq_impl },
5516 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReq_impl },
5517 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReq_impl },
5518 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_auditCapRequest_impl },
5519 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_auditValueRequest_impl },
5520 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReq_impl },
5521 { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReq_impl },
5522 { 0, 0, 0, 0, NULL }
5526 dissect_h248_Command(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5527 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5528 Command_choice, hf_index, ett_h248_Command,
5533 static int dissect_command_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5534 return dissect_h248_Command(TRUE, tvb, offset, pinfo, tree, hf_h248_command);
5538 static const ber_sequence_t CommandRequest_sequence[] = {
5539 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_command_impl },
5540 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_optional_impl },
5541 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wildcardReturn_impl },
5546 dissect_h248_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5547 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5548 CommandRequest_sequence, hf_index, ett_h248_CommandRequest);
5552 static int dissect_commandRequests_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5553 return dissect_h248_CommandRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_commandRequests_item);
5557 static const ber_sequence_t SEQUENCE_OF_CommandRequest_sequence_of[1] = {
5558 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_commandRequests_item },
5562 dissect_h248_SEQUENCE_OF_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5563 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5564 SEQUENCE_OF_CommandRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandRequest);
5568 static int dissect_commandRequests_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5569 return dissect_h248_SEQUENCE_OF_CommandRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_commandRequests);
5573 static const ber_sequence_t ActionRequest_sequence[] = {
5574 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
5575 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextRequest_impl },
5576 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextAttrAuditReq_impl },
5577 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandRequests_impl },
5582 dissect_h248_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5583 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5584 ActionRequest_sequence, hf_index, ett_h248_ActionRequest);
5588 static int dissect_actions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5589 return dissect_h248_ActionRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_actions_item);
5593 static const ber_sequence_t SEQUENCE_OF_ActionRequest_sequence_of[1] = {
5594 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actions_item },
5598 dissect_h248_SEQUENCE_OF_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5599 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5600 SEQUENCE_OF_ActionRequest_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionRequest);
5604 static int dissect_actions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5605 return dissect_h248_SEQUENCE_OF_ActionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_actions);
5609 static const ber_sequence_t TransactionRequest_sequence[] = {
5610 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
5611 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actions_impl },
5616 dissect_h248_TransactionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5617 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5618 TransactionRequest_sequence, hf_index, ett_h248_TransactionRequest);
5622 static int dissect_transactionRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5623 return dissect_h248_TransactionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionRequest);
5627 static const ber_sequence_t TransactionPending_sequence[] = {
5628 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
5633 dissect_h248_TransactionPending(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5634 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5635 TransactionPending_sequence, hf_index, ett_h248_TransactionPending);
5639 static int dissect_transactionPending_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5640 return dissect_h248_TransactionPending(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionPending);
5644 static const ber_sequence_t PackagesItem_sequence[] = {
5645 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
5646 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
5651 dissect_h248_PackagesItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5652 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5653 PackagesItem_sequence, hf_index, ett_h248_PackagesItem);
5657 static int dissect_PackagesDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5658 return dissect_h248_PackagesItem(FALSE, tvb, offset, pinfo, tree, hf_h248_PackagesDescriptor_item);
5662 static const ber_sequence_t PackagesDescriptor_sequence_of[1] = {
5663 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PackagesDescriptor_item },
5667 dissect_h248_PackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5668 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5669 PackagesDescriptor_sequence_of, hf_index, ett_h248_PackagesDescriptor);
5673 static int dissect_packagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5674 return dissect_h248_PackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_packagesDescriptor);
5678 static const value_string h248_AuditReturnParameter_vals[] = {
5679 { 0, "errorDescriptor" },
5680 { 1, "mediaDescriptor" },
5681 { 2, "modemDescriptor" },
5682 { 3, "muxDescriptor" },
5683 { 4, "eventsDescriptor" },
5684 { 5, "eventBufferDescriptor" },
5685 { 6, "signalsDescriptor" },
5686 { 7, "digitMapDescriptor" },
5687 { 8, "observedEventsDescriptor" },
5688 { 9, "statisticsDescriptor" },
5689 { 10, "packagesDescriptor" },
5690 { 11, "emptyDescriptors" },
5694 static const ber_choice_t AuditReturnParameter_choice[] = {
5695 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
5696 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
5697 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
5698 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
5699 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
5700 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
5701 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
5702 { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
5703 { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
5704 { 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
5705 { 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_packagesDescriptor_impl },
5706 { 11, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_emptyDescriptors_impl },
5707 { 0, 0, 0, 0, NULL }
5711 dissect_h248_AuditReturnParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5712 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5713 AuditReturnParameter_choice, hf_index, ett_h248_AuditReturnParameter,
5718 static int dissect_TerminationAudit_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5719 return dissect_h248_AuditReturnParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationAudit_item);
5723 static const ber_sequence_t TerminationAudit_sequence_of[1] = {
5724 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_TerminationAudit_item },
5728 dissect_h248_TerminationAudit(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5729 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5730 TerminationAudit_sequence_of, hf_index, ett_h248_TerminationAudit);
5734 static int dissect_terminationAudit_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5735 return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAudit);
5737 static int dissect_terminationAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5738 return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAuditResult);
5742 static const ber_sequence_t AmmsReply_sequence[] = {
5743 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5744 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationAudit_impl },
5749 dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5750 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5751 AmmsReply_sequence, hf_index, ett_h248_AmmsReply);
5759 dissect_h248_T_addReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5760 #line 183 "h248.cnf"
5761 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_ADD_REPLY,offset);
5763 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5767 static int dissect_addReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5768 return dissect_h248_T_addReply(TRUE, tvb, offset, pinfo, tree, hf_h248_addReply);
5774 dissect_h248_T_moveReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5775 #line 187 "h248.cnf"
5776 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_MOVE_REPLY,offset);
5778 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5782 static int dissect_moveReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5783 return dissect_h248_T_moveReply(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReply);
5789 dissect_h248_T_modReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5790 #line 191 "h248.cnf"
5791 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_MOD_REPLY,offset);
5793 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5797 static int dissect_modReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5798 return dissect_h248_T_modReply(TRUE, tvb, offset, pinfo, tree, hf_h248_modReply);
5804 dissect_h248_T_subtractReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5805 #line 195 "h248.cnf"
5806 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_SUB_REPLY,offset);
5808 offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5812 static int dissect_subtractReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5813 return dissect_h248_T_subtractReply(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReply);
5817 static const ber_sequence_t AuditResult_sequence[] = {
5818 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
5819 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationAuditResult_impl },
5824 dissect_h248_AuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5825 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5826 AuditResult_sequence, hf_index, ett_h248_AuditResult);
5830 static int dissect_auditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5831 return dissect_h248_AuditResult(TRUE, tvb, offset, pinfo, tree, hf_h248_auditResult);
5835 static const ber_sequence_t TermListAuditResult_sequence[] = {
5836 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5837 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationAuditResult_impl },
5842 dissect_h248_TermListAuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5843 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5844 TermListAuditResult_sequence, hf_index, ett_h248_TermListAuditResult);
5848 static int dissect_auditResultTermList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5849 return dissect_h248_TermListAuditResult(TRUE, tvb, offset, pinfo, tree, hf_h248_auditResultTermList);
5853 static const value_string h248_AuditReply_vals[] = {
5854 { 0, "contextAuditResult" },
5856 { 2, "auditResult" },
5857 { 3, "auditResultTermList" },
5858 { 3, "auditResultTermList" },
5862 static const ber_choice_t AuditReply_choice[] = {
5863 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextAuditResult_impl },
5864 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_impl },
5865 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_auditResult_impl },
5866 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_auditResultTermList_impl },
5867 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_auditResultTermList_impl },
5868 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_auditResultTermList_impl },
5869 { 0, 0, 0, 0, NULL }
5873 dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5874 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5875 AuditReply_choice, hf_index, ett_h248_AuditReply,
5884 dissect_h248_T_auditCapReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5885 #line 207 "h248.cnf"
5886 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_AUDITCAP_REPLY,offset);
5888 offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5892 static int dissect_auditCapReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5893 return dissect_h248_T_auditCapReply(TRUE, tvb, offset, pinfo, tree, hf_h248_auditCapReply);
5899 dissect_h248_T_auditValueReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5900 #line 211 "h248.cnf"
5901 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_AUDITVAL_REPLY,offset);
5903 offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5907 static int dissect_auditValueReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5908 return dissect_h248_T_auditValueReply(TRUE, tvb, offset, pinfo, tree, hf_h248_auditValueReply);
5912 static const ber_sequence_t NotifyReply_sequence[] = {
5913 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5914 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
5919 dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5920 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5921 NotifyReply_sequence, hf_index, ett_h248_NotifyReply);
5929 dissect_h248_T_notifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5930 #line 199 "h248.cnf"
5931 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_NOTIFY_REPLY,offset);
5933 offset = dissect_h248_NotifyReply(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5937 static int dissect_notifyReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5938 return dissect_h248_T_notifyReply(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReply);
5942 static const ber_sequence_t ServiceChangeResParm_sequence[] = {
5943 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId_impl },
5944 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress_impl },
5945 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
5946 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
5947 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timestamp_impl },
5952 dissect_h248_ServiceChangeResParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5953 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5954 ServiceChangeResParm_sequence, hf_index, ett_h248_ServiceChangeResParm);
5958 static int dissect_serviceChangeResParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5959 return dissect_h248_ServiceChangeResParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResParms);
5963 static const value_string h248_ServiceChangeResult_vals[] = {
5964 { 0, "errorDescriptor" },
5965 { 1, "serviceChangeResParms" },
5969 static const ber_choice_t ServiceChangeResult_choice[] = {
5970 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
5971 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeResParms_impl },
5972 { 0, 0, 0, 0, NULL }
5976 dissect_h248_ServiceChangeResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5977 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5978 ServiceChangeResult_choice, hf_index, ett_h248_ServiceChangeResult,
5983 static int dissect_serviceChangeResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5984 return dissect_h248_ServiceChangeResult(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResult);
5988 static const ber_sequence_t ServiceChangeReply_sequence[] = {
5989 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationIDList_impl },
5990 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeResult_impl },
5995 dissect_h248_ServiceChangeReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5996 #line 203 "h248.cnf"
5997 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_SVCCHG_REPLY,offset);
5999 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6000 ServiceChangeReply_sequence, hf_index, ett_h248_ServiceChangeReply);
6004 static int dissect_serviceChangeReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6005 return dissect_h248_ServiceChangeReply(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReply);
6009 static const value_string h248_CommandReply_vals[] = {
6013 { 3, "subtractReply" },
6014 { 4, "auditCapReply" },
6015 { 5, "auditValueReply" },
6016 { 6, "notifyReply" },
6017 { 7, "serviceChangeReply" },
6021 static const ber_choice_t CommandReply_choice[] = {
6022 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReply_impl },
6023 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReply_impl },
6024 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReply_impl },
6025 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReply_impl },
6026 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_auditCapReply_impl },
6027 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_auditValueReply_impl },
6028 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReply_impl },
6029 { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReply_impl },
6030 { 0, 0, 0, 0, NULL }
6034 dissect_h248_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6035 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6036 CommandReply_choice, hf_index, ett_h248_CommandReply,
6041 static int dissect_commandReply_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6042 return dissect_h248_CommandReply(FALSE, tvb, offset, pinfo, tree, hf_h248_commandReply_item);
6046 static const ber_sequence_t SEQUENCE_OF_CommandReply_sequence_of[1] = {
6047 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_commandReply_item },
6051 dissect_h248_SEQUENCE_OF_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6052 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6053 SEQUENCE_OF_CommandReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_CommandReply);
6057 static int dissect_commandReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6058 return dissect_h248_SEQUENCE_OF_CommandReply(TRUE, tvb, offset, pinfo, tree, hf_h248_commandReply);
6062 static const ber_sequence_t ActionReply_sequence[] = {
6063 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
6064 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
6065 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextReply_impl },
6066 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandReply_impl },
6071 dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6072 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6073 ActionReply_sequence, hf_index, ett_h248_ActionReply);
6075 #line 106 "h248.cnf"
6077 curr_info.cmd = h248_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,H248_CMD_REPLY,offset);
6081 static int dissect_actionReplies_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6082 return dissect_h248_ActionReply(FALSE, tvb, offset, pinfo, tree, hf_h248_actionReplies_item);
6086 static const ber_sequence_t SEQUENCE_OF_ActionReply_sequence_of[1] = {
6087 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actionReplies_item },
6091 dissect_h248_SEQUENCE_OF_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6092 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6093 SEQUENCE_OF_ActionReply_sequence_of, hf_index, ett_h248_SEQUENCE_OF_ActionReply);
6097 static int dissect_actionReplies_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6098 return dissect_h248_SEQUENCE_OF_ActionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_actionReplies);
6102 static const value_string h248_T_transactionResult_vals[] = {
6103 { 0, "transactionError" },
6104 { 1, "actionReplies" },
6108 static const ber_choice_t T_transactionResult_choice[] = {
6109 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionError_impl },
6110 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actionReplies_impl },
6111 { 0, 0, 0, 0, NULL }
6115 dissect_h248_T_transactionResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6116 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6117 T_transactionResult_choice, hf_index, ett_h248_T_transactionResult,
6122 static int dissect_transactionResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6123 return dissect_h248_T_transactionResult(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionResult);
6129 dissect_h248_SegmentNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6130 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6135 static int dissect_segmentNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6136 return dissect_h248_SegmentNumber(TRUE, tvb, offset, pinfo, tree, hf_h248_segmentNumber);
6140 static const ber_sequence_t TransactionReply_sequence[] = {
6141 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
6142 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immAckRequired_impl },
6143 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_transactionResult_impl },
6144 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_segmentNumber_impl },
6145 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_segmentationComplete_impl },
6150 dissect_h248_TransactionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6151 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6152 TransactionReply_sequence, hf_index, ett_h248_TransactionReply);
6156 static int dissect_transactionReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6157 return dissect_h248_TransactionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionReply);
6161 static const ber_sequence_t TransactionAck_sequence[] = {
6162 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_firstAck_impl },
6163 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lastAck_impl },
6168 dissect_h248_TransactionAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6169 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6170 TransactionAck_sequence, hf_index, ett_h248_TransactionAck);
6174 static int dissect_TransactionResponseAck_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6175 return dissect_h248_TransactionAck(FALSE, tvb, offset, pinfo, tree, hf_h248_TransactionResponseAck_item);
6179 static const ber_sequence_t TransactionResponseAck_sequence_of[1] = {
6180 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TransactionResponseAck_item },
6184 dissect_h248_TransactionResponseAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6185 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6186 TransactionResponseAck_sequence_of, hf_index, ett_h248_TransactionResponseAck);
6190 static int dissect_transactionResponseAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6191 return dissect_h248_TransactionResponseAck(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionResponseAck);
6195 static const ber_sequence_t SegmentReply_sequence[] = {
6196 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId1_impl },
6197 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_segmentNumber_impl },
6198 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_segmentationComplete_impl },
6203 dissect_h248_SegmentReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6204 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6205 SegmentReply_sequence, hf_index, ett_h248_SegmentReply);
6209 static int dissect_segmentReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6210 return dissect_h248_SegmentReply(TRUE, tvb, offset, pinfo, tree, hf_h248_segmentReply);
6214 static const value_string h248_Transaction_vals[] = {
6215 { 0, "transactionRequest" },
6216 { 1, "transactionPending" },
6217 { 2, "transactionReply" },
6218 { 3, "transactionResponseAck" },
6219 { 4, "segmentReply" },
6220 { 4, "segmentReply" },
6224 static const ber_choice_t Transaction_choice[] = {
6225 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionRequest_impl },
6226 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactionPending_impl },
6227 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_transactionReply_impl },
6228 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_transactionResponseAck_impl },
6229 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_segmentReply_impl },
6230 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_segmentReply_impl },
6231 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_segmentReply_impl },
6232 { 0, 0, 0, 0, NULL }
6236 dissect_h248_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6237 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6238 Transaction_choice, hf_index, ett_h248_Transaction,
6243 static int dissect_transactions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6244 return dissect_h248_Transaction(FALSE, tvb, offset, pinfo, tree, hf_h248_transactions_item);
6248 static const ber_sequence_t SEQUENCE_OF_Transaction_sequence_of[1] = {
6249 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_transactions_item },
6253 dissect_h248_SEQUENCE_OF_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6254 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6255 SEQUENCE_OF_Transaction_sequence_of, hf_index, ett_h248_SEQUENCE_OF_Transaction);
6259 static int dissect_transactions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6260 return dissect_h248_SEQUENCE_OF_Transaction(TRUE, tvb, offset, pinfo, tree, hf_h248_transactions);
6264 static const value_string h248_T_messageBody_vals[] = {
6265 { 0, "messageError" },
6266 { 1, "transactions" },
6270 static const ber_choice_t T_messageBody_choice[] = {
6271 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_messageError_impl },
6272 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactions_impl },
6273 { 0, 0, 0, 0, NULL }
6277 dissect_h248_T_messageBody(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6278 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6279 T_messageBody_choice, hf_index, ett_h248_T_messageBody,
6284 static int dissect_messageBody_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6285 return dissect_h248_T_messageBody(TRUE, tvb, offset, pinfo, tree, hf_h248_messageBody);
6289 static const ber_sequence_t Message_sequence[] = {
6290 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_version_impl },
6291 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_mId_impl },
6292 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_messageBody_impl },
6297 dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6299 curr_info.msg = h248_msg(pinfo,TVB_RAW_OFFSET(tvb));
6301 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6302 Message_sequence, hf_index, ett_h248_Message);
6305 if (check_col(pinfo->cinfo, COL_INFO))
6306 col_set_str(pinfo->cinfo, COL_INFO, h248_msg_to_str(curr_info.msg));
6308 if (keep_persistent_data)
6309 analyze_h248_msg(curr_info.msg);
6313 static int dissect_mess_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6314 return dissect_h248_Message(TRUE, tvb, offset, pinfo, tree, hf_h248_mess);
6318 static const ber_sequence_t MegacoMessage_sequence[] = {
6319 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_authHeader_impl },
6320 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mess_impl },
6325 dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6326 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6327 MegacoMessage_sequence, hf_index, ett_h248_MegacoMessage);
6335 dissect_h248_ServiceChangeReasonStr(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6336 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
6337 pinfo, tree, tvb, offset, hf_index,
6344 /*--- End of included file: packet-h248-fn.c ---*/
6345 #line 1765 "packet-h248-template.c"
6348 dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
6350 proto_item *h248_item;
6355 curr_info.msg = NULL;
6356 curr_info.trx = NULL;
6357 curr_info.ctx = NULL;
6358 curr_info.cmd = NULL;
6359 curr_info.term = NULL;
6360 curr_info.pkg = NULL;
6361 curr_info.evt = NULL;
6362 curr_info.sig = NULL;
6363 curr_info.stat = NULL;
6364 curr_info.par = NULL;
6366 /* Check if it is actually a text-based H.248 encoding, which we
6367 dissect with the "megaco" dissector in Wireshark. (Both
6368 encodings are MEGACO (RFC 3015) and both are H.248.)
6370 if(tvb_length(tvb)>=6){
6371 if(!tvb_strneql(tvb, 0, "MEGACO", 6)){
6372 static dissector_handle_t megaco_handle=NULL;
6374 megaco_handle = find_dissector("megaco");
6377 call_dissector(megaco_handle, tvb, pinfo, tree);
6383 /* Make entry in the Protocol column on summary display */
6384 if (check_col(pinfo->cinfo, COL_PROTOCOL))
6385 col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");
6388 h248_item = proto_tree_add_item(tree, proto_h248, tvb, 0, -1, FALSE);
6389 h248_tree = proto_item_add_subtree(h248_item, ett_h248);
6392 dissect_h248_MegacoMessage(FALSE, tvb, 0, pinfo, h248_tree, -1);
6397 static void h248_init(void) {
6399 if (!h248_prefs_initialized) {
6400 h248_prefs_initialized = TRUE;
6403 dissector_delete("udp.port", udp_port, h248_handle);
6406 udp_port = temp_udp_port;
6409 dissector_add("udp.port", udp_port, h248_handle);
6414 /*--- proto_register_h248 ----------------------------------------------*/
6415 void proto_register_h248(void) {
6417 /* List of fields */
6418 static hf_register_info hf[] = {
6419 { &hf_h248_mtpaddress_ni, {
6420 "NI", "h248.mtpaddress.ni", FT_UINT32, BASE_DEC,
6421 NULL, 0, "NI", HFILL }},
6422 { &hf_h248_mtpaddress_pc, {
6423 "PC", "h248.mtpaddress.pc", FT_UINT32, BASE_DEC,
6424 NULL, 0, "PC", HFILL }},
6425 { &hf_h248_pkg_name, {
6426 "Package", "h248.package_name", FT_UINT16, BASE_HEX,
6427 VALS(package_name_vals), 0, "Package", HFILL }},
6428 { &hf_248_no_pkg_param, {
6429 "Parameter ID", "h248.package_paramid", FT_UINT16, BASE_HEX,
6430 NULL, 0, "Unknown Package Parameter ID", HFILL }},
6431 { &hf_h248_event_name, {
6432 "Package and Event name", "h248.event_name", FT_UINT32, BASE_HEX,
6433 VALS(event_name_vals), 0, "Package", HFILL }},
6434 { &hf_h248_signal_name, {
6435 "Package and Signal name", "h248.signal_name", FT_UINT32, BASE_HEX,
6436 VALS(signal_name_vals), 0, "Package", HFILL }},
6437 { &hf_h248_pkg_bcp_BNCChar_PDU,
6438 { "BNCChar", "h248.package_bcp.BNCChar",
6439 FT_UINT32, BASE_DEC, VALS(BNCChar_vals), 0,
6440 "BNCChar", HFILL }},
6442 { &hf_h248_error_code,
6443 { "errorCode", "h248.errorCode",
6444 FT_UINT32, BASE_DEC, VALS(h248_reasons), 0,
6445 "ErrorDescriptor/errorCode", HFILL }},
6446 { &hf_h248_context_id,
6447 { "contextId", "h248.contextId",
6448 FT_UINT32, BASE_HEX, NULL, 0,
6449 "Context ID", HFILL }},
6450 { &hf_h248_term_wild_type,
6451 { "Wildcard Mode", "h248.term.wildcard.mode",
6452 FT_UINT8, BASE_DEC, VALS(wildcard_modes), 0x80,
6454 { &hf_h248_term_wild_level,
6455 { "Wildcarding Level", "h248.term.wildcard.level",
6456 FT_UINT8, BASE_DEC, VALS(wildcard_levels), 0x40,
6458 { &hf_h248_term_wild_position,
6459 { "Wildcarding Position", "h248.term.wildcard.pos",
6460 FT_UINT8, BASE_DEC, NULL, 0x3F,
6464 { "Unknown Package", "h248.pkg.unknown",
6465 FT_BYTES, BASE_HEX, NULL, 0,
6468 { "Unknown Signal", "h248.pkg.unknown.sig",
6469 FT_BYTES, BASE_HEX, NULL, 0,
6472 { "Unknown Event", "h248.pkg.unknown.evt",
6473 FT_BYTES, BASE_HEX, NULL, 0,
6475 { &hf_h248_no_param,
6476 { "Unknown Parameter", "h248.pkg.unknown.param",
6477 FT_BYTES, BASE_HEX, NULL, 0,
6479 { &hf_h248_serviceChangeReasonStr,
6480 { "ServiceChangeReasonStr", "h248.serviceChangeReasonstr",
6481 FT_STRING, BASE_NONE, NULL, 0,
6482 "h248.IA5String", HFILL }},
6485 /*--- Included file: packet-h248-hfarr.c ---*/
6486 #line 1 "packet-h248-hfarr.c"
6487 { &hf_h248_authHeader,
6488 { "authHeader", "h248.authHeader",
6489 FT_NONE, BASE_NONE, NULL, 0,
6490 "h248.AuthenticationHeader", HFILL }},
6492 { "mess", "h248.mess",
6493 FT_NONE, BASE_NONE, NULL, 0,
6494 "h248.Message", HFILL }},
6495 { &hf_h248_secParmIndex,
6496 { "secParmIndex", "h248.secParmIndex",
6497 FT_BYTES, BASE_HEX, NULL, 0,
6498 "h248.SecurityParmIndex", HFILL }},
6500 { "seqNum", "h248.seqNum",
6501 FT_BYTES, BASE_HEX, NULL, 0,
6502 "h248.SequenceNum", HFILL }},
6505 FT_BYTES, BASE_HEX, NULL, 0,
6506 "h248.AuthData", HFILL }},
6508 { "version", "h248.version",
6509 FT_UINT32, BASE_DEC, NULL, 0,
6510 "h248.INTEGER_0_99", HFILL }},
6512 { "mId", "h248.mId",
6513 FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
6514 "h248.MId", HFILL }},
6515 { &hf_h248_messageBody,
6516 { "messageBody", "h248.messageBody",
6517 FT_UINT32, BASE_DEC, VALS(h248_T_messageBody_vals), 0,
6518 "h248.T_messageBody", HFILL }},
6519 { &hf_h248_messageError,
6520 { "messageError", "h248.messageError",
6521 FT_NONE, BASE_NONE, NULL, 0,
6522 "h248.ErrorDescriptor", HFILL }},
6523 { &hf_h248_transactions,
6524 { "transactions", "h248.transactions",
6525 FT_UINT32, BASE_DEC, NULL, 0,
6526 "h248.SEQUENCE_OF_Transaction", HFILL }},
6527 { &hf_h248_transactions_item,
6528 { "Item", "h248.transactions_item",
6529 FT_UINT32, BASE_DEC, VALS(h248_Transaction_vals), 0,
6530 "h248.Transaction", HFILL }},
6531 { &hf_h248_ip4Address,
6532 { "ip4Address", "h248.ip4Address",
6533 FT_NONE, BASE_NONE, NULL, 0,
6534 "h248.IP4Address", HFILL }},
6535 { &hf_h248_ip6Address,
6536 { "ip6Address", "h248.ip6Address",
6537 FT_NONE, BASE_NONE, NULL, 0,
6538 "h248.IP6Address", HFILL }},
6539 { &hf_h248_domainName,
6540 { "domainName", "h248.domainName",
6541 FT_NONE, BASE_NONE, NULL, 0,
6542 "h248.DomainName", HFILL }},
6543 { &hf_h248_deviceName,
6544 { "deviceName", "h248.deviceName",
6545 FT_STRING, BASE_NONE, NULL, 0,
6546 "h248.PathName", HFILL }},
6547 { &hf_h248_mtpAddress,
6548 { "mtpAddress", "h248.mtpAddress",
6549 FT_BYTES, BASE_HEX, NULL, 0,
6550 "h248.MtpAddress", HFILL }},
6552 { "name", "h248.name",
6553 FT_STRING, BASE_NONE, NULL, 0,
6554 "h248.IA5String", HFILL }},
6555 { &hf_h248_portNumber,
6556 { "portNumber", "h248.portNumber",
6557 FT_UINT32, BASE_DEC, NULL, 0,
6558 "h248.INTEGER_0_65535", HFILL }},
6559 { &hf_h248_iP4Address,
6560 { "address", "h248.address",
6561 FT_IPv4, BASE_NONE, NULL, 0,
6562 "h248.OCTET_STRING_SIZE_4", HFILL }},
6563 { &hf_h248_iP6Address,
6564 { "address", "h248.address",
6565 FT_IPv6, BASE_NONE, NULL, 0,
6566 "h248.OCTET_STRING_SIZE_16", HFILL }},
6567 { &hf_h248_transactionRequest,
6568 { "transactionRequest", "h248.transactionRequest",
6569 FT_NONE, BASE_NONE, NULL, 0,
6570 "h248.TransactionRequest", HFILL }},
6571 { &hf_h248_transactionPending,
6572 { "transactionPending", "h248.transactionPending",
6573 FT_NONE, BASE_NONE, NULL, 0,
6574 "h248.TransactionPending", HFILL }},
6575 { &hf_h248_transactionReply,
6576 { "transactionReply", "h248.transactionReply",
6577 FT_NONE, BASE_NONE, NULL, 0,
6578 "h248.TransactionReply", HFILL }},
6579 { &hf_h248_transactionResponseAck,
6580 { "transactionResponseAck", "h248.transactionResponseAck",
6581 FT_UINT32, BASE_DEC, NULL, 0,
6582 "h248.TransactionResponseAck", HFILL }},
6583 { &hf_h248_segmentReply,
6584 { "segmentReply", "h248.segmentReply",
6585 FT_NONE, BASE_NONE, NULL, 0,
6586 "h248.SegmentReply", HFILL }},
6587 { &hf_h248_transactionId,
6588 { "transactionId", "h248.transactionId",
6589 FT_UINT32, BASE_DEC, NULL, 0,
6590 "h248.transactionId", HFILL }},
6592 { "actions", "h248.actions",
6593 FT_UINT32, BASE_DEC, NULL, 0,
6594 "h248.SEQUENCE_OF_ActionRequest", HFILL }},
6595 { &hf_h248_actions_item,
6596 { "Item", "h248.actions_item",
6597 FT_NONE, BASE_NONE, NULL, 0,
6598 "h248.ActionRequest", HFILL }},
6599 { &hf_h248_immAckRequired,
6600 { "immAckRequired", "h248.immAckRequired",
6601 FT_NONE, BASE_NONE, NULL, 0,
6602 "h248.NULL", HFILL }},
6603 { &hf_h248_transactionResult,
6604 { "transactionResult", "h248.transactionResult",
6605 FT_UINT32, BASE_DEC, VALS(h248_T_transactionResult_vals), 0,
6606 "h248.T_transactionResult", HFILL }},
6607 { &hf_h248_transactionError,
6608 { "transactionError", "h248.transactionError",
6609 FT_NONE, BASE_NONE, NULL, 0,
6610 "h248.ErrorDescriptor", HFILL }},
6611 { &hf_h248_actionReplies,
6612 { "actionReplies", "h248.actionReplies",
6613 FT_UINT32, BASE_DEC, NULL, 0,
6614 "h248.SEQUENCE_OF_ActionReply", HFILL }},
6615 { &hf_h248_actionReplies_item,
6616 { "Item", "h248.actionReplies_item",
6617 FT_NONE, BASE_NONE, NULL, 0,
6618 "h248.ActionReply", HFILL }},
6619 { &hf_h248_segmentNumber,
6620 { "segmentNumber", "h248.segmentNumber",
6621 FT_UINT32, BASE_DEC, NULL, 0,
6622 "h248.SegmentNumber", HFILL }},
6623 { &hf_h248_segmentationComplete,
6624 { "segmentationComplete", "h248.segmentationComplete",
6625 FT_NONE, BASE_NONE, NULL, 0,
6626 "h248.NULL", HFILL }},
6627 { &hf_h248_transactionId1,
6628 { "transactionId", "h248.transactionId",
6629 FT_UINT32, BASE_DEC, NULL, 0,
6630 "h248.TransactionId", HFILL }},
6631 { &hf_h248_TransactionResponseAck_item,
6632 { "Item", "h248.TransactionResponseAck_item",
6633 FT_NONE, BASE_NONE, NULL, 0,
6634 "h248.TransactionAck", HFILL }},
6635 { &hf_h248_firstAck,
6636 { "firstAck", "h248.firstAck",
6637 FT_UINT32, BASE_DEC, NULL, 0,
6638 "h248.TransactionId", HFILL }},
6640 { "lastAck", "h248.lastAck",
6641 FT_UINT32, BASE_DEC, NULL, 0,
6642 "h248.TransactionId", HFILL }},
6643 { &hf_h248_errorCode,
6644 { "errorCode", "h248.errorCode",
6645 FT_UINT32, BASE_DEC, NULL, 0,
6646 "h248.T_errorCode", HFILL }},
6647 { &hf_h248_errorText,
6648 { "errorText", "h248.errorText",
6649 FT_STRING, BASE_NONE, NULL, 0,
6650 "h248.ErrorText", HFILL }},
6651 { &hf_h248_contextId,
6652 { "contextId", "h248.contextId",
6653 FT_UINT32, BASE_HEX, NULL, 0,
6654 "h248.contextId", HFILL }},
6655 { &hf_h248_contextRequest,
6656 { "contextRequest", "h248.contextRequest",
6657 FT_NONE, BASE_NONE, NULL, 0,
6658 "h248.ContextRequest", HFILL }},
6659 { &hf_h248_contextAttrAuditReq,
6660 { "contextAttrAuditReq", "h248.contextAttrAuditReq",
6661 FT_NONE, BASE_NONE, NULL, 0,
6662 "h248.T_contextAttrAuditReq", HFILL }},
6663 { &hf_h248_commandRequests,
6664 { "commandRequests", "h248.commandRequests",
6665 FT_UINT32, BASE_DEC, NULL, 0,
6666 "h248.SEQUENCE_OF_CommandRequest", HFILL }},
6667 { &hf_h248_commandRequests_item,
6668 { "Item", "h248.commandRequests_item",
6669 FT_NONE, BASE_NONE, NULL, 0,
6670 "h248.CommandRequest", HFILL }},
6671 { &hf_h248_errorDescriptor,
6672 { "errorDescriptor", "h248.errorDescriptor",
6673 FT_NONE, BASE_NONE, NULL, 0,
6674 "h248.ErrorDescriptor", HFILL }},
6675 { &hf_h248_contextReply,
6676 { "contextReply", "h248.contextReply",
6677 FT_NONE, BASE_NONE, NULL, 0,
6678 "h248.ContextRequest", HFILL }},
6679 { &hf_h248_commandReply,
6680 { "commandReply", "h248.commandReply",
6681 FT_UINT32, BASE_DEC, NULL, 0,
6682 "h248.SEQUENCE_OF_CommandReply", HFILL }},
6683 { &hf_h248_commandReply_item,
6684 { "Item", "h248.commandReply_item",
6685 FT_UINT32, BASE_DEC, VALS(h248_CommandReply_vals), 0,
6686 "h248.CommandReply", HFILL }},
6687 { &hf_h248_priority,
6688 { "priority", "h248.priority",
6689 FT_UINT32, BASE_DEC, NULL, 0,
6690 "h248.INTEGER_0_15", HFILL }},
6691 { &hf_h248_emergency,
6692 { "emergency", "h248.emergency",
6693 FT_BOOLEAN, 8, NULL, 0,
6694 "h248.BOOLEAN", HFILL }},
6695 { &hf_h248_topologyReq,
6696 { "topologyReq", "h248.topologyReq",
6697 FT_UINT32, BASE_DEC, NULL, 0,
6698 "h248.T_topologyReq", HFILL }},
6699 { &hf_h248_topologyReq_item,
6700 { "Item", "h248.topologyReq_item",
6701 FT_NONE, BASE_NONE, NULL, 0,
6702 "h248.TopologyRequest", HFILL }},
6703 { &hf_h248_iepscallind,
6704 { "iepscallind", "h248.iepscallind",
6705 FT_BOOLEAN, 8, NULL, 0,
6706 "h248.BOOLEAN", HFILL }},
6707 { &hf_h248_contextProp,
6708 { "contextProp", "h248.contextProp",
6709 FT_UINT32, BASE_DEC, NULL, 0,
6710 "h248.SEQUENCE_OF_PropertyParm", HFILL }},
6711 { &hf_h248_contextProp_item,
6712 { "Item", "h248.contextProp_item",
6713 FT_NONE, BASE_NONE, NULL, 0,
6714 "h248.PropertyParm", HFILL }},
6715 { &hf_h248_contextList,
6716 { "contextList", "h248.contextList",
6717 FT_UINT32, BASE_DEC, NULL, 0,
6718 "h248.SEQUENCE_OF_ContextID", HFILL }},
6719 { &hf_h248_contextList_item,
6720 { "Item", "h248.contextList_item",
6721 FT_UINT32, BASE_DEC, NULL, 0,
6722 "h248.ContextID", HFILL }},
6723 { &hf_h248_topology,
6724 { "topology", "h248.topology",
6725 FT_NONE, BASE_NONE, NULL, 0,
6726 "h248.NULL", HFILL }},
6727 { &hf_h248_cAAREmergency,
6728 { "emergency", "h248.emergency",
6729 FT_NONE, BASE_NONE, NULL, 0,
6730 "h248.NULL", HFILL }},
6731 { &hf_h248_cAARPriority,
6732 { "priority", "h248.priority",
6733 FT_NONE, BASE_NONE, NULL, 0,
6734 "h248.NULL", HFILL }},
6735 { &hf_h248_iepscallind1,
6736 { "iepscallind", "h248.iepscallind",
6737 FT_NONE, BASE_NONE, NULL, 0,
6738 "h248.NULL", HFILL }},
6739 { &hf_h248_contextPropAud,
6740 { "contextPropAud", "h248.contextPropAud",
6741 FT_UINT32, BASE_DEC, NULL, 0,
6742 "h248.SEQUENCE_OF_IndAudPropertyParm", HFILL }},
6743 { &hf_h248_contextPropAud_item,
6744 { "Item", "h248.contextPropAud_item",
6745 FT_NONE, BASE_NONE, NULL, 0,
6746 "h248.IndAudPropertyParm", HFILL }},
6747 { &hf_h248_selectpriority,
6748 { "selectpriority", "h248.selectpriority",
6749 FT_UINT32, BASE_DEC, NULL, 0,
6750 "h248.INTEGER_0_15", HFILL }},
6751 { &hf_h248_selectemergency,
6752 { "selectemergency", "h248.selectemergency",
6753 FT_BOOLEAN, 8, NULL, 0,
6754 "h248.BOOLEAN", HFILL }},
6755 { &hf_h248_selectiepscallind,
6756 { "selectiepscallind", "h248.selectiepscallind",
6757 FT_BOOLEAN, 8, NULL, 0,
6758 "h248.BOOLEAN", HFILL }},
6759 { &hf_h248_selectLogic,
6760 { "selectLogic", "h248.selectLogic",
6761 FT_UINT32, BASE_DEC, VALS(h248_SelectLogic_vals), 0,
6762 "h248.SelectLogic", HFILL }},
6763 { &hf_h248_andAUDITSelect,
6764 { "andAUDITSelect", "h248.andAUDITSelect",
6765 FT_NONE, BASE_NONE, NULL, 0,
6766 "h248.NULL", HFILL }},
6767 { &hf_h248_orAUDITSelect,
6768 { "orAUDITSelect", "h248.orAUDITSelect",
6769 FT_NONE, BASE_NONE, NULL, 0,
6770 "h248.NULL", HFILL }},
6772 { "command", "h248.command",
6773 FT_UINT32, BASE_DEC, VALS(h248_Command_vals), 0,
6774 "h248.Command", HFILL }},
6775 { &hf_h248_optional,
6776 { "optional", "h248.optional",
6777 FT_NONE, BASE_NONE, NULL, 0,
6778 "h248.NULL", HFILL }},
6779 { &hf_h248_wildcardReturn,
6780 { "wildcardReturn", "h248.wildcardReturn",
6781 FT_NONE, BASE_NONE, NULL, 0,
6782 "h248.NULL", HFILL }},
6784 { "addReq", "h248.addReq",
6785 FT_NONE, BASE_NONE, NULL, 0,
6786 "h248.T_addReq", HFILL }},
6788 { "moveReq", "h248.moveReq",
6789 FT_NONE, BASE_NONE, NULL, 0,
6790 "h248.T_moveReq", HFILL }},
6792 { "modReq", "h248.modReq",
6793 FT_NONE, BASE_NONE, NULL, 0,
6794 "h248.T_modReq", HFILL }},
6795 { &hf_h248_subtractReq,
6796 { "subtractReq", "h248.subtractReq",
6797 FT_NONE, BASE_NONE, NULL, 0,
6798 "h248.T_subtractReq", HFILL }},
6799 { &hf_h248_auditCapRequest,
6800 { "auditCapRequest", "h248.auditCapRequest",
6801 FT_NONE, BASE_NONE, NULL, 0,
6802 "h248.T_auditCapRequest", HFILL }},
6803 { &hf_h248_auditValueRequest,
6804 { "auditValueRequest", "h248.auditValueRequest",
6805 FT_NONE, BASE_NONE, NULL, 0,
6806 "h248.T_auditValueRequest", HFILL }},
6807 { &hf_h248_notifyReq,
6808 { "notifyReq", "h248.notifyReq",
6809 FT_NONE, BASE_NONE, NULL, 0,
6810 "h248.T_notifyReq", HFILL }},
6811 { &hf_h248_serviceChangeReq,
6812 { "serviceChangeReq", "h248.serviceChangeReq",
6813 FT_NONE, BASE_NONE, NULL, 0,
6814 "h248.ServiceChangeRequest", HFILL }},
6815 { &hf_h248_addReply,
6816 { "addReply", "h248.addReply",
6817 FT_NONE, BASE_NONE, NULL, 0,
6818 "h248.T_addReply", HFILL }},
6819 { &hf_h248_moveReply,
6820 { "moveReply", "h248.moveReply",
6821 FT_NONE, BASE_NONE, NULL, 0,
6822 "h248.T_moveReply", HFILL }},
6823 { &hf_h248_modReply,
6824 { "modReply", "h248.modReply",
6825 FT_NONE, BASE_NONE, NULL, 0,
6826 "h248.T_modReply", HFILL }},
6827 { &hf_h248_subtractReply,
6828 { "subtractReply", "h248.subtractReply",
6829 FT_NONE, BASE_NONE, NULL, 0,
6830 "h248.T_subtractReply", HFILL }},
6831 { &hf_h248_auditCapReply,
6832 { "auditCapReply", "h248.auditCapReply",
6833 FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
6834 "h248.T_auditCapReply", HFILL }},
6835 { &hf_h248_auditValueReply,
6836 { "auditValueReply", "h248.auditValueReply",
6837 FT_UINT32, BASE_DEC, VALS(h248_AuditReply_vals), 0,
6838 "h248.T_auditValueReply", HFILL }},
6839 { &hf_h248_notifyReply,
6840 { "notifyReply", "h248.notifyReply",
6841 FT_NONE, BASE_NONE, NULL, 0,
6842 "h248.T_notifyReply", HFILL }},
6843 { &hf_h248_serviceChangeReply,
6844 { "serviceChangeReply", "h248.serviceChangeReply",
6845 FT_NONE, BASE_NONE, NULL, 0,
6846 "h248.ServiceChangeReply", HFILL }},
6847 { &hf_h248_terminationFrom,
6848 { "terminationFrom", "h248.terminationFrom",
6849 FT_NONE, BASE_NONE, NULL, 0,
6850 "h248.TerminationID", HFILL }},
6851 { &hf_h248_terminationTo,
6852 { "terminationTo", "h248.terminationTo",
6853 FT_NONE, BASE_NONE, NULL, 0,
6854 "h248.TerminationID", HFILL }},
6855 { &hf_h248_topologyDirection,
6856 { "topologyDirection", "h248.topologyDirection",
6857 FT_UINT32, BASE_DEC, VALS(h248_T_topologyDirection_vals), 0,
6858 "h248.T_topologyDirection", HFILL }},
6859 { &hf_h248_streamID,
6860 { "streamID", "h248.streamID",
6861 FT_UINT32, BASE_DEC, NULL, 0,
6862 "h248.StreamID", HFILL }},
6863 { &hf_h248_topologyDirectionExtension,
6864 { "topologyDirectionExtension", "h248.topologyDirectionExtension",
6865 FT_UINT32, BASE_DEC, VALS(h248_T_topologyDirectionExtension_vals), 0,
6866 "h248.T_topologyDirectionExtension", HFILL }},
6867 { &hf_h248_terminationIDList,
6868 { "terminationID", "h248.terminationID",
6869 FT_UINT32, BASE_DEC, NULL, 0,
6870 "h248.TerminationIDList", HFILL }},
6871 { &hf_h248_descriptors,
6872 { "descriptors", "h248.descriptors",
6873 FT_UINT32, BASE_DEC, NULL, 0,
6874 "h248.SEQUENCE_OF_AmmDescriptor", HFILL }},
6875 { &hf_h248_descriptors_item,
6876 { "Item", "h248.descriptors_item",
6877 FT_UINT32, BASE_DEC, VALS(h248_AmmDescriptor_vals), 0,
6878 "h248.AmmDescriptor", HFILL }},
6879 { &hf_h248_mediaDescriptor,
6880 { "mediaDescriptor", "h248.mediaDescriptor",
6881 FT_NONE, BASE_NONE, NULL, 0,
6882 "h248.MediaDescriptor", HFILL }},
6883 { &hf_h248_modemDescriptor,
6884 { "modemDescriptor", "h248.modemDescriptor",
6885 FT_NONE, BASE_NONE, NULL, 0,
6886 "h248.ModemDescriptor", HFILL }},
6887 { &hf_h248_muxDescriptor,
6888 { "muxDescriptor", "h248.muxDescriptor",
6889 FT_NONE, BASE_NONE, NULL, 0,
6890 "h248.MuxDescriptor", HFILL }},
6891 { &hf_h248_eventsDescriptor,
6892 { "eventsDescriptor", "h248.eventsDescriptor",
6893 FT_NONE, BASE_NONE, NULL, 0,
6894 "h248.EventsDescriptor", HFILL }},
6895 { &hf_h248_eventBufferDescriptor,
6896 { "eventBufferDescriptor", "h248.eventBufferDescriptor",
6897 FT_UINT32, BASE_DEC, NULL, 0,
6898 "h248.EventBufferDescriptor", HFILL }},
6899 { &hf_h248_signalsDescriptor,
6900 { "signalsDescriptor", "h248.signalsDescriptor",
6901 FT_UINT32, BASE_DEC, NULL, 0,
6902 "h248.SignalsDescriptor", HFILL }},
6903 { &hf_h248_digitMapDescriptor,
6904 { "digitMapDescriptor", "h248.digitMapDescriptor",
6905 FT_NONE, BASE_NONE, NULL, 0,
6906 "h248.DigitMapDescriptor", HFILL }},
6907 { &hf_h248_auditDescriptor,
6908 { "auditDescriptor", "h248.auditDescriptor",
6909 FT_NONE, BASE_NONE, NULL, 0,
6910 "h248.AuditDescriptor", HFILL }},
6911 { &hf_h248_statisticsDescriptor,
6912 { "statisticsDescriptor", "h248.statisticsDescriptor",
6913 FT_UINT32, BASE_DEC, NULL, 0,
6914 "h248.StatisticsDescriptor", HFILL }},
6915 { &hf_h248_terminationAudit,
6916 { "terminationAudit", "h248.terminationAudit",
6917 FT_UINT32, BASE_DEC, NULL, 0,
6918 "h248.TerminationAudit", HFILL }},
6919 { &hf_h248_terminationID,
6920 { "terminationID", "h248.terminationID",
6921 FT_NONE, BASE_NONE, NULL, 0,
6922 "h248.TerminationID", HFILL }},
6923 { &hf_h248_contextAuditResult,
6924 { "contextAuditResult", "h248.contextAuditResult",
6925 FT_UINT32, BASE_DEC, NULL, 0,
6926 "h248.TerminationIDList", HFILL }},
6928 { "error", "h248.error",
6929 FT_NONE, BASE_NONE, NULL, 0,
6930 "h248.ErrorDescriptor", HFILL }},
6931 { &hf_h248_auditResult,
6932 { "auditResult", "h248.auditResult",
6933 FT_NONE, BASE_NONE, NULL, 0,
6934 "h248.AuditResult", HFILL }},
6935 { &hf_h248_auditResultTermList,
6936 { "auditResultTermList", "h248.auditResultTermList",
6937 FT_NONE, BASE_NONE, NULL, 0,
6938 "h248.TermListAuditResult", HFILL }},
6939 { &hf_h248_terminationAuditResult,
6940 { "terminationAuditResult", "h248.terminationAuditResult",
6941 FT_UINT32, BASE_DEC, NULL, 0,
6942 "h248.TerminationAudit", HFILL }},
6943 { &hf_h248_TerminationAudit_item,
6944 { "Item", "h248.TerminationAudit_item",
6945 FT_UINT32, BASE_DEC, VALS(h248_AuditReturnParameter_vals), 0,
6946 "h248.AuditReturnParameter", HFILL }},
6947 { &hf_h248_observedEventsDescriptor,
6948 { "observedEventsDescriptor", "h248.observedEventsDescriptor",
6949 FT_NONE, BASE_NONE, NULL, 0,
6950 "h248.ObservedEventsDescriptor", HFILL }},
6951 { &hf_h248_packagesDescriptor,
6952 { "packagesDescriptor", "h248.packagesDescriptor",
6953 FT_UINT32, BASE_DEC, NULL, 0,
6954 "h248.PackagesDescriptor", HFILL }},
6955 { &hf_h248_emptyDescriptors,
6956 { "emptyDescriptors", "h248.emptyDescriptors",
6957 FT_NONE, BASE_NONE, NULL, 0,
6958 "h248.AuditDescriptor", HFILL }},
6959 { &hf_h248_auditToken,
6960 { "auditToken", "h248.auditToken",
6961 FT_BYTES, BASE_HEX, NULL, 0,
6962 "h248.T_auditToken", HFILL }},
6963 { &hf_h248_auditPropertyToken,
6964 { "auditPropertyToken", "h248.auditPropertyToken",
6965 FT_UINT32, BASE_DEC, NULL, 0,
6966 "h248.SEQUENCE_OF_IndAuditParameter", HFILL }},
6967 { &hf_h248_auditPropertyToken_item,
6968 { "Item", "h248.auditPropertyToken_item",
6969 FT_UINT32, BASE_DEC, VALS(h248_IndAuditParameter_vals), 0,
6970 "h248.IndAuditParameter", HFILL }},
6971 { &hf_h248_indaudmediaDescriptor,
6972 { "indaudmediaDescriptor", "h248.indaudmediaDescriptor",
6973 FT_NONE, BASE_NONE, NULL, 0,
6974 "h248.IndAudMediaDescriptor", HFILL }},
6975 { &hf_h248_indaudeventsDescriptor,
6976 { "indaudeventsDescriptor", "h248.indaudeventsDescriptor",
6977 FT_NONE, BASE_NONE, NULL, 0,
6978 "h248.IndAudEventsDescriptor", HFILL }},
6979 { &hf_h248_indaudeventBufferDescriptor,
6980 { "indaudeventBufferDescriptor", "h248.indaudeventBufferDescriptor",
6981 FT_NONE, BASE_NONE, NULL, 0,
6982 "h248.IndAudEventBufferDescriptor", HFILL }},
6983 { &hf_h248_indaudsignalsDescriptor,
6984 { "indaudsignalsDescriptor", "h248.indaudsignalsDescriptor",
6985 FT_UINT32, BASE_DEC, VALS(h248_IndAudSignalsDescriptor_vals), 0,
6986 "h248.IndAudSignalsDescriptor", HFILL }},
6987 { &hf_h248_indauddigitMapDescriptor,
6988 { "indauddigitMapDescriptor", "h248.indauddigitMapDescriptor",
6989 FT_NONE, BASE_NONE, NULL, 0,
6990 "h248.IndAudDigitMapDescriptor", HFILL }},
6991 { &hf_h248_indaudstatisticsDescriptor,
6992 { "indaudstatisticsDescriptor", "h248.indaudstatisticsDescriptor",
6993 FT_NONE, BASE_NONE, NULL, 0,
6994 "h248.IndAudStatisticsDescriptor", HFILL }},
6995 { &hf_h248_indaudpackagesDescriptor,
6996 { "indaudpackagesDescriptor", "h248.indaudpackagesDescriptor",
6997 FT_NONE, BASE_NONE, NULL, 0,
6998 "h248.IndAudPackagesDescriptor", HFILL }},
6999 { &hf_h248_indAudTerminationStateDescriptor,
7000 { "termStateDescr", "h248.termStateDescr",
7001 FT_NONE, BASE_NONE, NULL, 0,
7002 "h248.IndAudTerminationStateDescriptor", HFILL }},
7003 { &hf_h248_indAudMediaDescriptorStreams,
7004 { "streams", "h248.streams",
7005 FT_UINT32, BASE_DEC, VALS(h248_indAudMediaDescriptorStreams_vals), 0,
7006 "h248.indAudMediaDescriptorStreams", HFILL }},
7007 { &hf_h248_oneStream,
7008 { "oneStream", "h248.oneStream",
7009 FT_NONE, BASE_NONE, NULL, 0,
7010 "h248.IndAudStreamParms", HFILL }},
7011 { &hf_h248_multiStream,
7012 { "multiStream", "h248.multiStream",
7013 FT_UINT32, BASE_DEC, NULL, 0,
7014 "h248.SEQUENCE_OF_IndAudStreamDescriptor", HFILL }},
7015 { &hf_h248_multiStream_item,
7016 { "Item", "h248.multiStream_item",
7017 FT_NONE, BASE_NONE, NULL, 0,
7018 "h248.IndAudStreamDescriptor", HFILL }},
7019 { &hf_h248_indAudStreamParms,
7020 { "streamParms", "h248.streamParms",
7021 FT_NONE, BASE_NONE, NULL, 0,
7022 "h248.IndAudStreamParms", HFILL }},
7023 { &hf_h248_iASPLocalControlDescriptor,
7024 { "localControlDescriptor", "h248.localControlDescriptor",
7025 FT_NONE, BASE_NONE, NULL, 0,
7026 "h248.IndAudLocalControlDescriptor", HFILL }},
7027 { &hf_h248_iASPLocalDescriptor,
7028 { "localDescriptor", "h248.localDescriptor",
7029 FT_NONE, BASE_NONE, NULL, 0,
7030 "h248.IndAudLocalRemoteDescriptor", HFILL }},
7031 { &hf_h248_iASPRemoteDescriptor,
7032 { "remoteDescriptor", "h248.remoteDescriptor",
7033 FT_NONE, BASE_NONE, NULL, 0,
7034 "h248.IndAudLocalRemoteDescriptor", HFILL }},
7035 { &hf_h248_statisticsDescriptor1,
7036 { "statisticsDescriptor", "h248.statisticsDescriptor",
7037 FT_NONE, BASE_NONE, NULL, 0,
7038 "h248.IndAudStatisticsDescriptor", HFILL }},
7039 { &hf_h248_iALCDStreamMode,
7040 { "streamMode", "h248.streamMode",
7041 FT_NONE, BASE_NONE, NULL, 0,
7042 "h248.NULL", HFILL }},
7043 { &hf_h248_iALCDReserveValue,
7044 { "reserveValue", "h248.reserveValue",
7045 FT_NONE, BASE_NONE, NULL, 0,
7046 "h248.NULL", HFILL }},
7047 { &hf_h248_iALCDReserveGroup,
7048 { "reserveGroup", "h248.reserveGroup",
7049 FT_NONE, BASE_NONE, NULL, 0,
7050 "h248.NULL", HFILL }},
7051 { &hf_h248_indAudPropertyParms,
7052 { "propertyParms", "h248.propertyParms",
7053 FT_UINT32, BASE_DEC, NULL, 0,
7054 "h248.SEQUENCE_OF_IndAudPropertyParm", HFILL }},
7055 { &hf_h248_indAudPropertyParms_item,
7056 { "Item", "h248.propertyParms_item",
7057 FT_NONE, BASE_NONE, NULL, 0,
7058 "h248.IndAudPropertyParm", HFILL }},
7059 { &hf_h248_streamModeSel,
7060 { "streamModeSel", "h248.streamModeSel",
7061 FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
7062 "h248.StreamMode", HFILL }},
7064 { "name", "h248.name",
7065 FT_BYTES, BASE_HEX, NULL, 0,
7066 "h248.PkgdName", HFILL }},
7067 { &hf_h248_propertyParms,
7068 { "propertyParms", "h248.propertyParms",
7069 FT_NONE, BASE_NONE, NULL, 0,
7070 "h248.PropertyParm", HFILL }},
7071 { &hf_h248_propGroupID,
7072 { "propGroupID", "h248.propGroupID",
7073 FT_UINT32, BASE_DEC, NULL, 0,
7074 "h248.INTEGER_0_65535", HFILL }},
7075 { &hf_h248_iAPropertyGroup,
7076 { "propGrps", "h248.propGrps",
7077 FT_UINT32, BASE_DEC, NULL, 0,
7078 "h248.IndAudPropertyGroup", HFILL }},
7079 { &hf_h248_IndAudPropertyGroup_item,
7080 { "Item", "h248.IndAudPropertyGroup_item",
7081 FT_NONE, BASE_NONE, NULL, 0,
7082 "h248.IndAudPropertyParm", HFILL }},
7083 { &hf_h248_eventBufferControl,
7084 { "eventBufferControl", "h248.eventBufferControl",
7085 FT_NONE, BASE_NONE, NULL, 0,
7086 "h248.NULL", HFILL }},
7087 { &hf_h248_iATSDServiceState,
7088 { "serviceState", "h248.serviceState",
7089 FT_NONE, BASE_NONE, NULL, 0,
7090 "h248.NULL", HFILL }},
7091 { &hf_h248_serviceStateSel,
7092 { "serviceStateSel", "h248.serviceStateSel",
7093 FT_UINT32, BASE_DEC, VALS(h248_ServiceState_vals), 0,
7094 "h248.ServiceState", HFILL }},
7095 { &hf_h248_requestID,
7096 { "requestID", "h248.requestID",
7097 FT_UINT32, BASE_DEC, NULL, 0,
7098 "h248.RequestID", HFILL }},
7099 { &hf_h248_iAEDPkgdName,
7100 { "pkgdName", "h248.pkgdName",
7101 FT_BYTES, BASE_HEX, NULL, 0,
7102 "h248.PkgdName", HFILL }},
7103 { &hf_h248_iAEBDEventName,
7104 { "eventName", "h248.eventName",
7105 FT_BYTES, BASE_HEX, NULL, 0,
7106 "h248.PkgdName", HFILL }},
7107 { &hf_h248_indAudSignal,
7108 { "signal", "h248.signal",
7109 FT_NONE, BASE_NONE, NULL, 0,
7110 "h248.IndAudSignal", HFILL }},
7111 { &hf_h248_indAudSeqSigList,
7112 { "seqSigList", "h248.seqSigList",
7113 FT_NONE, BASE_NONE, NULL, 0,
7114 "h248.IndAudSeqSigList", HFILL }},
7117 FT_UINT32, BASE_DEC, NULL, 0,
7118 "h248.INTEGER_0_65535", HFILL }},
7119 { &hf_h248_iASignalList,
7120 { "signalList", "h248.signalList",
7121 FT_NONE, BASE_NONE, NULL, 0,
7122 "h248.IndAudSignal", HFILL }},
7123 { &hf_h248_iASignalName,
7124 { "signalName", "h248.signalName",
7125 FT_BYTES, BASE_HEX, NULL, 0,
7126 "h248.PkgdName", HFILL }},
7127 { &hf_h248_signalRequestID,
7128 { "signalRequestID", "h248.signalRequestID",
7129 FT_UINT32, BASE_DEC, NULL, 0,
7130 "h248.RequestID", HFILL }},
7131 { &hf_h248_digitMapName,
7132 { "digitMapName", "h248.digitMapName",
7133 FT_BYTES, BASE_HEX, NULL, 0,
7134 "h248.DigitMapName", HFILL }},
7135 { &hf_h248_iAStatName,
7136 { "statName", "h248.statName",
7137 FT_BYTES, BASE_HEX, NULL, 0,
7138 "h248.PkgdName", HFILL }},
7139 { &hf_h248_packageName,
7140 { "packageName", "h248.packageName",
7141 FT_BYTES, BASE_HEX, NULL, 0,
7142 "h248.Name", HFILL }},
7143 { &hf_h248_packageVersion,
7144 { "packageVersion", "h248.packageVersion",
7145 FT_UINT32, BASE_DEC, NULL, 0,
7146 "h248.INTEGER_0_99", HFILL }},
7147 { &hf_h248_requestId,
7148 { "requestId", "h248.requestId",
7149 FT_UINT32, BASE_DEC, NULL, 0,
7150 "h248.RequestID", HFILL }},
7151 { &hf_h248_observedEventLst,
7152 { "observedEventLst", "h248.observedEventLst",
7153 FT_UINT32, BASE_DEC, NULL, 0,
7154 "h248.SEQUENCE_OF_ObservedEvent", HFILL }},
7155 { &hf_h248_observedEventLst_item,
7156 { "Item", "h248.observedEventLst_item",
7157 FT_NONE, BASE_NONE, NULL, 0,
7158 "h248.ObservedEvent", HFILL }},
7159 { &hf_h248_eventName,
7160 { "eventName", "h248.eventName",
7161 FT_BYTES, BASE_HEX, NULL, 0,
7162 "h248.EventName", HFILL }},
7163 { &hf_h248_eventParList,
7164 { "eventParList", "h248.eventParList",
7165 FT_UINT32, BASE_DEC, NULL, 0,
7166 "h248.SEQUENCE_OF_EventParameter", HFILL }},
7167 { &hf_h248_eventParList_item,
7168 { "Item", "h248.eventParList_item",
7169 FT_NONE, BASE_NONE, NULL, 0,
7170 "h248.EventParameter", HFILL }},
7171 { &hf_h248_timeNotation,
7172 { "timeNotation", "h248.timeNotation",
7173 FT_NONE, BASE_NONE, NULL, 0,
7174 "h248.TimeNotation", HFILL }},
7175 { &hf_h248_eventParameterName,
7176 { "eventParameterName", "h248.eventParameterName",
7177 FT_BYTES, BASE_HEX, NULL, 0,
7178 "h248.EventParameterName", HFILL }},
7179 { &hf_h248_eventParamValue,
7180 { "eventParamValue", "h248.eventParamValue",
7181 FT_UINT32, BASE_DEC, NULL, 0,
7182 "h248.EventParamValues", HFILL }},
7183 { &hf_h248_extraInfo,
7184 { "extraInfo", "h248.extraInfo",
7185 FT_UINT32, BASE_DEC, VALS(h248_T_extraInfo_vals), 0,
7186 "h248.T_extraInfo", HFILL }},
7187 { &hf_h248_relation,
7188 { "relation", "h248.relation",
7189 FT_UINT32, BASE_DEC, VALS(h248_Relation_vals), 0,
7190 "h248.Relation", HFILL }},
7192 { "range", "h248.range",
7193 FT_BOOLEAN, 8, NULL, 0,
7194 "h248.BOOLEAN", HFILL }},
7196 { "sublist", "h248.sublist",
7197 FT_BOOLEAN, 8, NULL, 0,
7198 "h248.BOOLEAN", HFILL }},
7199 { &hf_h248_EventParamValues_item,
7200 { "Item", "h248.EventParamValues_item",
7201 FT_BYTES, BASE_HEX, NULL, 0,
7202 "h248.EventParamValue", HFILL }},
7203 { &hf_h248_serviceChangeParms,
7204 { "serviceChangeParms", "h248.serviceChangeParms",
7205 FT_NONE, BASE_NONE, NULL, 0,
7206 "h248.ServiceChangeParm", HFILL }},
7207 { &hf_h248_serviceChangeResult,
7208 { "serviceChangeResult", "h248.serviceChangeResult",
7209 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeResult_vals), 0,
7210 "h248.ServiceChangeResult", HFILL }},
7211 { &hf_h248_serviceChangeResParms,
7212 { "serviceChangeResParms", "h248.serviceChangeResParms",
7213 FT_NONE, BASE_NONE, NULL, 0,
7214 "h248.ServiceChangeResParm", HFILL }},
7215 { &hf_h248_wildcard,
7216 { "wildcard", "h248.wildcard",
7217 FT_UINT32, BASE_DEC, NULL, 0,
7218 "h248.SEQUENCE_OF_WildcardField", HFILL }},
7219 { &hf_h248_wildcard_item,
7220 { "Item", "h248.wildcard_item",
7221 FT_BYTES, BASE_HEX, NULL, 0,
7222 "h248.WildcardField", HFILL }},
7223 { &hf_h248_terminationId,
7225 FT_BYTES, BASE_HEX, NULL, 0,
7226 "h248.T_terminationId", HFILL }},
7227 { &hf_h248_TerminationIDList_item,
7228 { "Item", "h248.TerminationIDList_item",
7229 FT_NONE, BASE_NONE, NULL, 0,
7230 "h248.TerminationID", HFILL }},
7231 { &hf_h248_termStateDescr,
7232 { "termStateDescr", "h248.termStateDescr",
7233 FT_NONE, BASE_NONE, NULL, 0,
7234 "h248.TerminationStateDescriptor", HFILL }},
7236 { "streams", "h248.streams",
7237 FT_UINT32, BASE_DEC, VALS(h248_T_streams_vals), 0,
7238 "h248.T_streams", HFILL }},
7239 { &hf_h248_mediaDescriptorOneStream,
7240 { "oneStream", "h248.oneStream",
7241 FT_NONE, BASE_NONE, NULL, 0,
7242 "h248.StreamParms", HFILL }},
7243 { &hf_h248_mediaDescriptorMultiStream,
7244 { "multiStream", "h248.multiStream",
7245 FT_UINT32, BASE_DEC, NULL, 0,
7246 "h248.SEQUENCE_OF_StreamDescriptor", HFILL }},
7247 { &hf_h248_mediaDescriptorMultiStream_item,
7248 { "Item", "h248.multiStream_item",
7249 FT_NONE, BASE_NONE, NULL, 0,
7250 "h248.StreamDescriptor", HFILL }},
7251 { &hf_h248_streamParms,
7252 { "streamParms", "h248.streamParms",
7253 FT_NONE, BASE_NONE, NULL, 0,
7254 "h248.StreamParms", HFILL }},
7255 { &hf_h248_localControlDescriptor,
7256 { "localControlDescriptor", "h248.localControlDescriptor",
7257 FT_NONE, BASE_NONE, NULL, 0,
7258 "h248.LocalControlDescriptor", HFILL }},
7259 { &hf_h248_localDescriptor,
7260 { "localDescriptor", "h248.localDescriptor",
7261 FT_NONE, BASE_NONE, NULL, 0,
7262 "h248.LocalRemoteDescriptor", HFILL }},
7263 { &hf_h248_remoteDescriptor,
7264 { "remoteDescriptor", "h248.remoteDescriptor",
7265 FT_NONE, BASE_NONE, NULL, 0,
7266 "h248.LocalRemoteDescriptor", HFILL }},
7267 { &hf_h248_streamMode,
7268 { "streamMode", "h248.streamMode",
7269 FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
7270 "h248.StreamMode", HFILL }},
7271 { &hf_h248_reserveValue,
7272 { "reserveValue", "h248.reserveValue",
7273 FT_BOOLEAN, 8, NULL, 0,
7274 "h248.BOOLEAN", HFILL }},
7275 { &hf_h248_reserveGroup,
7276 { "reserveGroup", "h248.reserveGroup",
7277 FT_BOOLEAN, 8, NULL, 0,
7278 "h248.BOOLEAN", HFILL }},
7279 { &hf_h248_propertyParms1,
7280 { "propertyParms", "h248.propertyParms",
7281 FT_UINT32, BASE_DEC, NULL, 0,
7282 "h248.SEQUENCE_OF_PropertyParm", HFILL }},
7283 { &hf_h248_propertyParms_item,
7284 { "Item", "h248.propertyParms_item",
7285 FT_NONE, BASE_NONE, NULL, 0,
7286 "h248.PropertyParm", HFILL }},
7287 { &hf_h248_propertyName,
7288 { "propertyName", "h248.propertyName",
7289 FT_BYTES, BASE_HEX, NULL, 0,
7290 "h248.PropertyName", HFILL }},
7291 { &hf_h248_propertyParamValue,
7292 { "value", "h248.value",
7293 FT_UINT32, BASE_DEC, NULL, 0,
7294 "h248.SEQUENCE_OF_PropertyID", HFILL }},
7295 { &hf_h248_propertyParamValue_item,
7296 { "Item", "h248.value_item",
7297 FT_BYTES, BASE_HEX, NULL, 0,
7298 "h248.PropertyID", HFILL }},
7299 { &hf_h248_extraInfo1,
7300 { "extraInfo", "h248.extraInfo",
7301 FT_UINT32, BASE_DEC, VALS(h248_T_extraInfo1_vals), 0,
7302 "h248.T_extraInfo1", HFILL }},
7303 { &hf_h248_propGrps,
7304 { "propGrps", "h248.propGrps",
7305 FT_UINT32, BASE_DEC, NULL, 0,
7306 "h248.SEQUENCE_OF_PropertyGroup", HFILL }},
7307 { &hf_h248_propGrps_item,
7308 { "Item", "h248.propGrps_item",
7309 FT_UINT32, BASE_DEC, NULL, 0,
7310 "h248.PropertyGroup", HFILL }},
7311 { &hf_h248_PropertyGroup_item,
7312 { "Item", "h248.PropertyGroup_item",
7313 FT_NONE, BASE_NONE, NULL, 0,
7314 "h248.PropertyParm", HFILL }},
7315 { &hf_h248_tSEventBufferControl,
7316 { "eventBufferControl", "h248.eventBufferControl",
7317 FT_UINT32, BASE_DEC, VALS(h248_EventBufferControl_vals), 0,
7318 "h248.EventBufferControl", HFILL }},
7319 { &hf_h248_serviceState,
7320 { "serviceState", "h248.serviceState",
7321 FT_UINT32, BASE_DEC, VALS(h248_ServiceState_vals), 0,
7322 "h248.ServiceState", HFILL }},
7324 { "muxType", "h248.muxType",
7325 FT_UINT32, BASE_DEC, VALS(h248_MuxType_vals), 0,
7326 "h248.MuxType", HFILL }},
7327 { &hf_h248_termList,
7328 { "termList", "h248.termList",
7329 FT_UINT32, BASE_DEC, NULL, 0,
7330 "h248.SEQUENCE_OF_TerminationID", HFILL }},
7331 { &hf_h248_termList_item,
7332 { "Item", "h248.termList_item",
7333 FT_NONE, BASE_NONE, NULL, 0,
7334 "h248.TerminationID", HFILL }},
7335 { &hf_h248_nonStandardData,
7336 { "nonStandardData", "h248.nonStandardData",
7337 FT_NONE, BASE_NONE, NULL, 0,
7338 "h248.NonStandardData", HFILL }},
7339 { &hf_h248_eventList,
7340 { "eventList", "h248.eventList",
7341 FT_UINT32, BASE_DEC, NULL, 0,
7342 "h248.SEQUENCE_OF_RequestedEvent", HFILL }},
7343 { &hf_h248_eventList_item,
7344 { "Item", "h248.eventList_item",
7345 FT_NONE, BASE_NONE, NULL, 0,
7346 "h248.RequestedEvent", HFILL }},
7347 { &hf_h248_pkgdName,
7348 { "pkgdName", "h248.pkgdName",
7349 FT_BYTES, BASE_HEX, NULL, 0,
7350 "h248.EventName", HFILL }},
7351 { &hf_h248_eventAction,
7352 { "eventAction", "h248.eventAction",
7353 FT_NONE, BASE_NONE, NULL, 0,
7354 "h248.RequestedActions", HFILL }},
7355 { &hf_h248_evParList,
7356 { "evParList", "h248.evParList",
7357 FT_UINT32, BASE_DEC, NULL, 0,
7358 "h248.SEQUENCE_OF_EventParameter", HFILL }},
7359 { &hf_h248_evParList_item,
7360 { "Item", "h248.evParList_item",
7361 FT_NONE, BASE_NONE, NULL, 0,
7362 "h248.EventParameter", HFILL }},
7363 { &hf_h248_secondEvent,
7364 { "secondEvent", "h248.secondEvent",
7365 FT_NONE, BASE_NONE, NULL, 0,
7366 "h248.SecondEventsDescriptor", HFILL }},
7367 { &hf_h248_notifyImmediate,
7368 { "notifyImmediate", "h248.notifyImmediate",
7369 FT_NONE, BASE_NONE, NULL, 0,
7370 "h248.NULL", HFILL }},
7371 { &hf_h248_notifyRegulated,
7372 { "notifyRegulated", "h248.notifyRegulated",
7373 FT_NONE, BASE_NONE, NULL, 0,
7374 "h248.RegulatedEmbeddedDescriptor", HFILL }},
7375 { &hf_h248_neverNotify,
7376 { "neverNotify", "h248.neverNotify",
7377 FT_NONE, BASE_NONE, NULL, 0,
7378 "h248.NULL", HFILL }},
7379 { &hf_h248_keepActive,
7380 { "keepActive", "h248.keepActive",
7381 FT_BOOLEAN, 8, NULL, 0,
7382 "h248.BOOLEAN", HFILL }},
7384 { "eventDM", "h248.eventDM",
7385 FT_UINT32, BASE_DEC, VALS(h248_EventDM_vals), 0,
7386 "h248.EventDM", HFILL }},
7387 { &hf_h248_notifyBehaviour,
7388 { "notifyBehaviour", "h248.notifyBehaviour",
7389 FT_UINT32, BASE_DEC, VALS(h248_NotifyBehaviour_vals), 0,
7390 "h248.NotifyBehaviour", HFILL }},
7391 { &hf_h248_resetEventsDescriptor,
7392 { "resetEventsDescriptor", "h248.resetEventsDescriptor",
7393 FT_NONE, BASE_NONE, NULL, 0,
7394 "h248.NULL", HFILL }},
7395 { &hf_h248_digitMapValue,
7396 { "digitMapValue", "h248.digitMapValue",
7397 FT_NONE, BASE_NONE, NULL, 0,
7398 "h248.DigitMapValue", HFILL }},
7399 { &hf_h248_secondaryEventList,
7400 { "eventList", "h248.eventList",
7401 FT_UINT32, BASE_DEC, NULL, 0,
7402 "h248.SEQUENCE_OF_SecondRequestedEvent", HFILL }},
7403 { &hf_h248_secondaryEventList_item,
7404 { "Item", "h248.eventList_item",
7405 FT_NONE, BASE_NONE, NULL, 0,
7406 "h248.SecondRequestedEvent", HFILL }},
7407 { &hf_h248_pkgdName1,
7408 { "pkgdName", "h248.pkgdName",
7409 FT_BYTES, BASE_HEX, NULL, 0,
7410 "h248.PkgdName", HFILL }},
7411 { &hf_h248_secondaryEventAction,
7412 { "eventAction", "h248.eventAction",
7413 FT_NONE, BASE_NONE, NULL, 0,
7414 "h248.SecondRequestedActions", HFILL }},
7415 { &hf_h248_EventBufferDescriptor_item,
7416 { "Item", "h248.EventBufferDescriptor_item",
7417 FT_NONE, BASE_NONE, NULL, 0,
7418 "h248.EventSpec", HFILL }},
7419 { &hf_h248_SignalsDescriptor_item,
7420 { "Item", "h248.SignalsDescriptor_item",
7421 FT_UINT32, BASE_DEC, VALS(h248_SignalRequest_vals), 0,
7422 "h248.SignalRequest", HFILL }},
7424 { "signal", "h248.signal",
7425 FT_NONE, BASE_NONE, NULL, 0,
7426 "h248.Signal", HFILL }},
7427 { &hf_h248_seqSigList,
7428 { "seqSigList", "h248.seqSigList",
7429 FT_NONE, BASE_NONE, NULL, 0,
7430 "h248.SeqSigList", HFILL }},
7431 { &hf_h248_signalList,
7432 { "signalList", "h248.signalList",
7433 FT_UINT32, BASE_DEC, NULL, 0,
7434 "h248.SEQUENCE_OF_Signal", HFILL }},
7435 { &hf_h248_signalList_item,
7436 { "Item", "h248.signalList_item",
7437 FT_NONE, BASE_NONE, NULL, 0,
7438 "h248.Signal", HFILL }},
7439 { &hf_h248_signalName,
7440 { "signalName", "h248.signalName",
7441 FT_BYTES, BASE_HEX, NULL, 0,
7442 "h248.SignalName", HFILL }},
7444 { "sigType", "h248.sigType",
7445 FT_UINT32, BASE_DEC, VALS(h248_SignalType_vals), 0,
7446 "h248.SignalType", HFILL }},
7447 { &hf_h248_duration,
7448 { "duration", "h248.duration",
7449 FT_UINT32, BASE_DEC, NULL, 0,
7450 "h248.INTEGER_0_65535", HFILL }},
7451 { &hf_h248_notifyCompletion,
7452 { "notifyCompletion", "h248.notifyCompletion",
7453 FT_BYTES, BASE_HEX, NULL, 0,
7454 "h248.NotifyCompletion", HFILL }},
7455 { &hf_h248_sigParList,
7456 { "sigParList", "h248.sigParList",
7457 FT_UINT32, BASE_DEC, NULL, 0,
7458 "h248.SEQUENCE_OF_SigParameter", HFILL }},
7459 { &hf_h248_sigParList_item,
7460 { "Item", "h248.sigParList_item",
7461 FT_NONE, BASE_NONE, NULL, 0,
7462 "h248.SigParameter", HFILL }},
7463 { &hf_h248_direction,
7464 { "direction", "h248.direction",
7465 FT_UINT32, BASE_DEC, VALS(h248_SignalDirection_vals), 0,
7466 "h248.SignalDirection", HFILL }},
7467 { &hf_h248_intersigDelay,
7468 { "intersigDelay", "h248.intersigDelay",
7469 FT_UINT32, BASE_DEC, NULL, 0,
7470 "h248.INTEGER_0_65535", HFILL }},
7471 { &hf_h248_sigParameterName,
7472 { "sigParameterName", "h248.sigParameterName",
7473 FT_BYTES, BASE_HEX, NULL, 0,
7474 "h248.SigParameterName", HFILL }},
7476 { "value", "h248.value",
7477 FT_UINT32, BASE_DEC, NULL, 0,
7478 "h248.SigParamValues", HFILL }},
7479 { &hf_h248_extraInfo2,
7480 { "extraInfo", "h248.extraInfo",
7481 FT_UINT32, BASE_DEC, VALS(h248_T_extraInfo2_vals), 0,
7482 "h248.T_extraInfo2", HFILL }},
7483 { &hf_h248_SigParamValues_item,
7484 { "Item", "h248.SigParamValues_item",
7485 FT_BYTES, BASE_HEX, NULL, 0,
7486 "h248.SigParamValue", HFILL }},
7488 { "mtl", "h248.mtl",
7489 FT_UINT32, BASE_DEC, NULL, 0,
7490 "h248.SEQUENCE_OF_ModemType", HFILL }},
7491 { &hf_h248_mtl_item,
7492 { "Item", "h248.mtl_item",
7493 FT_UINT32, BASE_DEC, VALS(h248_ModemType_vals), 0,
7494 "h248.ModemType", HFILL }},
7496 { "mpl", "h248.mpl",
7497 FT_UINT32, BASE_DEC, NULL, 0,
7498 "h248.SEQUENCE_OF_PropertyParm", HFILL }},
7499 { &hf_h248_mpl_item,
7500 { "Item", "h248.mpl_item",
7501 FT_NONE, BASE_NONE, NULL, 0,
7502 "h248.PropertyParm", HFILL }},
7503 { &hf_h248_startTimer,
7504 { "startTimer", "h248.startTimer",
7505 FT_UINT32, BASE_DEC, NULL, 0,
7506 "h248.INTEGER_0_99", HFILL }},
7507 { &hf_h248_shortTimer,
7508 { "shortTimer", "h248.shortTimer",
7509 FT_UINT32, BASE_DEC, NULL, 0,
7510 "h248.INTEGER_0_99", HFILL }},
7511 { &hf_h248_longTimer,
7512 { "longTimer", "h248.longTimer",
7513 FT_UINT32, BASE_DEC, NULL, 0,
7514 "h248.INTEGER_0_99", HFILL }},
7515 { &hf_h248_digitMapBody,
7516 { "digitMapBody", "h248.digitMapBody",
7517 FT_STRING, BASE_NONE, NULL, 0,
7518 "h248.IA5String", HFILL }},
7519 { &hf_h248_durationTimer,
7520 { "durationTimer", "h248.durationTimer",
7521 FT_UINT32, BASE_DEC, NULL, 0,
7522 "h248.INTEGER_0_99", HFILL }},
7523 { &hf_h248_serviceChangeMethod,
7524 { "serviceChangeMethod", "h248.serviceChangeMethod",
7525 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeMethod_vals), 0,
7526 "h248.ServiceChangeMethod", HFILL }},
7527 { &hf_h248_serviceChangeAddress,
7528 { "serviceChangeAddress", "h248.serviceChangeAddress",
7529 FT_UINT32, BASE_DEC, VALS(h248_ServiceChangeAddress_vals), 0,
7530 "h248.ServiceChangeAddress", HFILL }},
7531 { &hf_h248_serviceChangeVersion,
7532 { "serviceChangeVersion", "h248.serviceChangeVersion",
7533 FT_UINT32, BASE_DEC, NULL, 0,
7534 "h248.INTEGER_0_99", HFILL }},
7535 { &hf_h248_serviceChangeProfile,
7536 { "serviceChangeProfile", "h248.serviceChangeProfile",
7537 FT_NONE, BASE_NONE, NULL, 0,
7538 "h248.ServiceChangeProfile", HFILL }},
7539 { &hf_h248_serviceChangeReason,
7540 { "serviceChangeReason", "h248.serviceChangeReason",
7541 FT_UINT32, BASE_DEC, NULL, 0,
7542 "h248.SCreasonValue", HFILL }},
7543 { &hf_h248_serviceChangeDelay,
7544 { "serviceChangeDelay", "h248.serviceChangeDelay",
7545 FT_UINT32, BASE_DEC, NULL, 0,
7546 "h248.INTEGER_0_4294967295", HFILL }},
7547 { &hf_h248_serviceChangeMgcId,
7548 { "serviceChangeMgcId", "h248.serviceChangeMgcId",
7549 FT_UINT32, BASE_DEC, VALS(h248_MId_vals), 0,
7550 "h248.MId", HFILL }},
7551 { &hf_h248_timeStamp,
7552 { "timeStamp", "h248.timeStamp",
7553 FT_NONE, BASE_NONE, NULL, 0,
7554 "h248.TimeNotation", HFILL }},
7555 { &hf_h248_serviceChangeInfo,
7556 { "serviceChangeInfo", "h248.serviceChangeInfo",
7557 FT_NONE, BASE_NONE, NULL, 0,
7558 "h248.AuditDescriptor", HFILL }},
7559 { &hf_h248_serviceChangeIncompleteFlag,
7560 { "serviceChangeIncompleteFlag", "h248.serviceChangeIncompleteFlag",
7561 FT_NONE, BASE_NONE, NULL, 0,
7562 "h248.NULL", HFILL }},
7563 { &hf_h248_SCreasonValue_item,
7564 { "Item", "h248.SCreasonValue_item",
7565 FT_BYTES, BASE_HEX, NULL, 0,
7566 "h248.SCreasonValueOctetStr", HFILL }},
7567 { &hf_h248_timestamp,
7568 { "timestamp", "h248.timestamp",
7569 FT_NONE, BASE_NONE, NULL, 0,
7570 "h248.TimeNotation", HFILL }},
7571 { &hf_h248_profileName,
7572 { "profileName", "h248.profileName",
7573 FT_STRING, BASE_NONE, NULL, 0,
7574 "h248.IA5String_SIZE_1_67", HFILL }},
7575 { &hf_h248_PackagesDescriptor_item,
7576 { "Item", "h248.PackagesDescriptor_item",
7577 FT_NONE, BASE_NONE, NULL, 0,
7578 "h248.PackagesItem", HFILL }},
7579 { &hf_h248_StatisticsDescriptor_item,
7580 { "Item", "h248.StatisticsDescriptor_item",
7581 FT_NONE, BASE_NONE, NULL, 0,
7582 "h248.StatisticsParameter", HFILL }},
7583 { &hf_h248_statName,
7584 { "statName", "h248.statName",
7585 FT_BYTES, BASE_HEX, NULL, 0,
7586 "h248.StatName", HFILL }},
7587 { &hf_h248_statValue,
7588 { "statValue", "h248.statValue",
7589 FT_UINT32, BASE_DEC, NULL, 0,
7590 "h248.StatValue", HFILL }},
7591 { &hf_h248_nonStandardIdentifier,
7592 { "nonStandardIdentifier", "h248.nonStandardIdentifier",
7593 FT_UINT32, BASE_DEC, VALS(h248_NonStandardIdentifier_vals), 0,
7594 "h248.NonStandardIdentifier", HFILL }},
7596 { "data", "h248.data",
7597 FT_BYTES, BASE_HEX, NULL, 0,
7598 "h248.OCTET_STRING", HFILL }},
7600 { "object", "h248.object",
7601 FT_OID, BASE_NONE, NULL, 0,
7602 "h248.OBJECT_IDENTIFIER", HFILL }},
7603 { &hf_h248_h221NonStandard,
7604 { "h221NonStandard", "h248.h221NonStandard",
7605 FT_NONE, BASE_NONE, NULL, 0,
7606 "h248.H221NonStandard", HFILL }},
7607 { &hf_h248_experimental,
7608 { "experimental", "h248.experimental",
7609 FT_STRING, BASE_NONE, NULL, 0,
7610 "h248.IA5String_SIZE_8", HFILL }},
7611 { &hf_h248_t35CountryCode1,
7612 { "t35CountryCode1", "h248.t35CountryCode1",
7613 FT_UINT32, BASE_DEC, NULL, 0,
7614 "h248.INTEGER_0_255", HFILL }},
7615 { &hf_h248_t35CountryCode2,
7616 { "t35CountryCode2", "h248.t35CountryCode2",
7617 FT_UINT32, BASE_DEC, NULL, 0,
7618 "h248.INTEGER_0_255", HFILL }},
7619 { &hf_h248_t35Extension,
7620 { "t35Extension", "h248.t35Extension",
7621 FT_UINT32, BASE_DEC, NULL, 0,
7622 "h248.INTEGER_0_255", HFILL }},
7623 { &hf_h248_manufacturerCode,
7624 { "manufacturerCode", "h248.manufacturerCode",
7625 FT_UINT32, BASE_DEC, NULL, 0,
7626 "h248.INTEGER_0_65535", HFILL }},
7628 { "date", "h248.date",
7629 FT_STRING, BASE_NONE, NULL, 0,
7630 "h248.IA5String_SIZE_8", HFILL }},
7632 { "time", "h248.time",
7633 FT_STRING, BASE_NONE, NULL, 0,
7634 "h248.IA5String_SIZE_8", HFILL }},
7635 { &hf_h248_Value_item,
7636 { "Item", "h248.Value_item",
7637 FT_BYTES, BASE_HEX, NULL, 0,
7638 "h248.OCTET_STRING", HFILL }},
7639 { &hf_h248_T_auditToken_muxToken,
7640 { "muxToken", "h248.muxToken",
7641 FT_BOOLEAN, 8, NULL, 0x80,
7643 { &hf_h248_T_auditToken_modemToken,
7644 { "modemToken", "h248.modemToken",
7645 FT_BOOLEAN, 8, NULL, 0x40,
7647 { &hf_h248_T_auditToken_mediaToken,
7648 { "mediaToken", "h248.mediaToken",
7649 FT_BOOLEAN, 8, NULL, 0x20,
7651 { &hf_h248_T_auditToken_eventsToken,
7652 { "eventsToken", "h248.eventsToken",
7653 FT_BOOLEAN, 8, NULL, 0x10,
7655 { &hf_h248_T_auditToken_signalsToken,
7656 { "signalsToken", "h248.signalsToken",
7657 FT_BOOLEAN, 8, NULL, 0x08,
7659 { &hf_h248_T_auditToken_digitMapToken,
7660 { "digitMapToken", "h248.digitMapToken",
7661 FT_BOOLEAN, 8, NULL, 0x04,
7663 { &hf_h248_T_auditToken_statsToken,
7664 { "statsToken", "h248.statsToken",
7665 FT_BOOLEAN, 8, NULL, 0x02,
7667 { &hf_h248_T_auditToken_observedEventsToken,
7668 { "observedEventsToken", "h248.observedEventsToken",
7669 FT_BOOLEAN, 8, NULL, 0x01,
7671 { &hf_h248_T_auditToken_packagesToken,
7672 { "packagesToken", "h248.packagesToken",
7673 FT_BOOLEAN, 8, NULL, 0x80,
7675 { &hf_h248_T_auditToken_eventBufferToken,
7676 { "eventBufferToken", "h248.eventBufferToken",
7677 FT_BOOLEAN, 8, NULL, 0x40,
7679 { &hf_h248_NotifyCompletion_onTimeOut,
7680 { "onTimeOut", "h248.onTimeOut",
7681 FT_BOOLEAN, 8, NULL, 0x80,
7683 { &hf_h248_NotifyCompletion_onInterruptByEvent,
7684 { "onInterruptByEvent", "h248.onInterruptByEvent",
7685 FT_BOOLEAN, 8, NULL, 0x40,
7687 { &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr,
7688 { "onInterruptByNewSignalDescr", "h248.onInterruptByNewSignalDescr",
7689 FT_BOOLEAN, 8, NULL, 0x20,
7691 { &hf_h248_NotifyCompletion_otherReason,
7692 { "otherReason", "h248.otherReason",
7693 FT_BOOLEAN, 8, NULL, 0x10,
7695 { &hf_h248_NotifyCompletion_onIteration,
7696 { "onIteration", "h248.onIteration",
7697 FT_BOOLEAN, 8, NULL, 0x08,
7700 /*--- End of included file: packet-h248-hfarr.c ---*/
7701 #line 1904 "packet-h248-template.c"
7703 { &hf_h248_ctx, { "Context", "h248.ctx", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
7704 { &hf_h248_ctx_term, { "Termination", "h248.ctx.term", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
7705 { &hf_h248_ctx_term_type, { "Type", "h248.ctx.term.type", FT_UINT32, BASE_HEX, VALS(BNCChar_vals), 0, "", HFILL }},
7706 { &hf_h248_ctx_term_bir, { "BIR", "h248.ctx.term.bir", FT_STRING, BASE_HEX, NULL, 0, "", HFILL }},
7707 { &hf_h248_ctx_term_nsap, { "NSAP", "h248.ctx.term.nsap", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
7708 { &hf_h248_ctx_cmd, { "Command", "h248.ctx.cmd", FT_FRAMENUM, BASE_DEC, NULL, 0, "", HFILL }},
7711 /* List of subtrees */
7712 static gint *ett[] = {
7727 /*--- Included file: packet-h248-ettarr.c ---*/
7728 #line 1 "packet-h248-ettarr.c"
7729 &ett_h248_MegacoMessage,
7730 &ett_h248_AuthenticationHeader,
7732 &ett_h248_T_messageBody,
7733 &ett_h248_SEQUENCE_OF_Transaction,
7735 &ett_h248_DomainName,
7736 &ett_h248_IP4Address,
7737 &ett_h248_IP6Address,
7738 &ett_h248_Transaction,
7739 &ett_h248_TransactionRequest,
7740 &ett_h248_SEQUENCE_OF_ActionRequest,
7741 &ett_h248_TransactionPending,
7742 &ett_h248_TransactionReply,
7743 &ett_h248_T_transactionResult,
7744 &ett_h248_SEQUENCE_OF_ActionReply,
7745 &ett_h248_SegmentReply,
7746 &ett_h248_TransactionResponseAck,
7747 &ett_h248_TransactionAck,
7748 &ett_h248_ErrorDescriptor,
7749 &ett_h248_ActionRequest,
7750 &ett_h248_SEQUENCE_OF_CommandRequest,
7751 &ett_h248_ActionReply,
7752 &ett_h248_SEQUENCE_OF_CommandReply,
7753 &ett_h248_ContextRequest,
7754 &ett_h248_T_topologyReq,
7755 &ett_h248_SEQUENCE_OF_PropertyParm,
7756 &ett_h248_SEQUENCE_OF_ContextID,
7757 &ett_h248_ContextAttrAuditRequest,
7758 &ett_h248_SEQUENCE_OF_IndAudPropertyParm,
7759 &ett_h248_SelectLogic,
7760 &ett_h248_CommandRequest,
7762 &ett_h248_CommandReply,
7763 &ett_h248_TopologyRequest,
7764 &ett_h248_AmmRequest,
7765 &ett_h248_SEQUENCE_OF_AmmDescriptor,
7766 &ett_h248_AmmDescriptor,
7767 &ett_h248_AmmsReply,
7768 &ett_h248_SubtractRequest,
7769 &ett_h248_AuditRequest,
7770 &ett_h248_AuditReply,
7771 &ett_h248_AuditResult,
7772 &ett_h248_TermListAuditResult,
7773 &ett_h248_TerminationAudit,
7774 &ett_h248_AuditReturnParameter,
7775 &ett_h248_AuditDescriptor,
7776 &ett_h248_T_auditToken,
7777 &ett_h248_SEQUENCE_OF_IndAuditParameter,
7778 &ett_h248_IndAuditParameter,
7779 &ett_h248_IndAudMediaDescriptor,
7780 &ett_h248_indAudMediaDescriptorStreams,
7781 &ett_h248_SEQUENCE_OF_IndAudStreamDescriptor,
7782 &ett_h248_IndAudStreamDescriptor,
7783 &ett_h248_IndAudStreamParms,
7784 &ett_h248_IndAudLocalControlDescriptor,
7785 &ett_h248_IndAudPropertyParm,
7786 &ett_h248_IndAudLocalRemoteDescriptor,
7787 &ett_h248_IndAudPropertyGroup,
7788 &ett_h248_IndAudTerminationStateDescriptor,
7789 &ett_h248_IndAudEventsDescriptor,
7790 &ett_h248_IndAudEventBufferDescriptor,
7791 &ett_h248_IndAudSignalsDescriptor,
7792 &ett_h248_IndAudSeqSigList,
7793 &ett_h248_IndAudSignal,
7794 &ett_h248_IndAudDigitMapDescriptor,
7795 &ett_h248_IndAudStatisticsDescriptor,
7796 &ett_h248_IndAudPackagesDescriptor,
7797 &ett_h248_NotifyRequest,
7798 &ett_h248_NotifyReply,
7799 &ett_h248_ObservedEventsDescriptor,
7800 &ett_h248_SEQUENCE_OF_ObservedEvent,
7801 &ett_h248_ObservedEvent,
7802 &ett_h248_SEQUENCE_OF_EventParameter,
7803 &ett_h248_EventParameter,
7804 &ett_h248_T_extraInfo,
7805 &ett_h248_EventParamValues,
7806 &ett_h248_ServiceChangeRequest,
7807 &ett_h248_ServiceChangeReply,
7808 &ett_h248_ServiceChangeResult,
7809 &ett_h248_TerminationID,
7810 &ett_h248_SEQUENCE_OF_WildcardField,
7811 &ett_h248_TerminationIDList,
7812 &ett_h248_MediaDescriptor,
7813 &ett_h248_T_streams,
7814 &ett_h248_SEQUENCE_OF_StreamDescriptor,
7815 &ett_h248_StreamDescriptor,
7816 &ett_h248_StreamParms,
7817 &ett_h248_LocalControlDescriptor,
7818 &ett_h248_PropertyParm,
7819 &ett_h248_SEQUENCE_OF_PropertyID,
7820 &ett_h248_T_extraInfo1,
7821 &ett_h248_LocalRemoteDescriptor,
7822 &ett_h248_SEQUENCE_OF_PropertyGroup,
7823 &ett_h248_PropertyGroup,
7824 &ett_h248_TerminationStateDescriptor,
7825 &ett_h248_MuxDescriptor,
7826 &ett_h248_SEQUENCE_OF_TerminationID,
7827 &ett_h248_EventsDescriptor,
7828 &ett_h248_SEQUENCE_OF_RequestedEvent,
7829 &ett_h248_RequestedEvent,
7830 &ett_h248_RegulatedEmbeddedDescriptor,
7831 &ett_h248_NotifyBehaviour,
7832 &ett_h248_RequestedActions,
7834 &ett_h248_SecondEventsDescriptor,
7835 &ett_h248_SEQUENCE_OF_SecondRequestedEvent,
7836 &ett_h248_SecondRequestedEvent,
7837 &ett_h248_SecondRequestedActions,
7838 &ett_h248_EventBufferDescriptor,
7839 &ett_h248_EventSpec,
7840 &ett_h248_SignalsDescriptor,
7841 &ett_h248_SignalRequest,
7842 &ett_h248_SeqSigList,
7843 &ett_h248_SEQUENCE_OF_Signal,
7845 &ett_h248_SEQUENCE_OF_SigParameter,
7846 &ett_h248_NotifyCompletion,
7847 &ett_h248_SigParameter,
7848 &ett_h248_T_extraInfo2,
7849 &ett_h248_SigParamValues,
7850 &ett_h248_ModemDescriptor,
7851 &ett_h248_SEQUENCE_OF_ModemType,
7852 &ett_h248_DigitMapDescriptor,
7853 &ett_h248_DigitMapValue,
7854 &ett_h248_ServiceChangeParm,
7855 &ett_h248_SCreasonValue,
7856 &ett_h248_ServiceChangeAddress,
7857 &ett_h248_ServiceChangeResParm,
7858 &ett_h248_ServiceChangeProfile,
7859 &ett_h248_PackagesDescriptor,
7860 &ett_h248_PackagesItem,
7861 &ett_h248_StatisticsDescriptor,
7862 &ett_h248_StatisticsParameter,
7863 &ett_h248_NonStandardData,
7864 &ett_h248_NonStandardIdentifier,
7865 &ett_h248_H221NonStandard,
7866 &ett_h248_TimeNotation,
7869 /*--- End of included file: packet-h248-ettarr.c ---*/
7870 #line 1929 "packet-h248-template.c"
7873 module_t *h248_module;
7876 /* Register protocol */
7877 proto_h248 = proto_register_protocol(PNAME, PSNAME, PFNAME);
7878 register_dissector("h248", dissect_h248, proto_h248);
7880 /* Register fields and subtrees */
7881 proto_register_field_array(proto_h248, hf, array_length(hf));
7882 proto_register_subtree_array(ett, array_length(ett));
7884 h248_module = prefs_register_protocol(proto_h248, h248_init);
7885 prefs_register_bool_preference(h248_module, "ctx_info",
7886 "Keep Persistent Context Information",
7887 "Whether persistent context information is to be kept",
7888 &keep_persistent_data);
7889 prefs_register_uint_preference(h248_module, "udp_port",
7891 "Port to be decoded as h248",
7895 register_init_routine( &h248_init );
7897 msgs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_msgs");
7898 trxs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_trxs");
7899 ctxs_by_trx = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_ctxs_by_trx");
7900 ctxs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_ctxs");
7904 /*--- proto_reg_handoff_h248 -------------------------------------------*/
7905 void proto_reg_handoff_h248(void) {
7907 h248_handle = find_dissector("h248");
7908 h248_term_handle = find_dissector("h248term");
7910 dissector_add("mtp3.service_indicator", GATEWAY_CONTROL_PROTOCOL_USER_ID, h248_handle);
7911 dissector_add("sctp.ppi", H248_PAYLOAD_PROTOCOL_ID, h248_handle);
7912 dissector_add("udp.port", udp_port, h248_handle);