Added dissection of some packages Property ID:s
[obnox/wireshark/wip.git] / epan / dissectors / packet-h248.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
3 /* .\packet-h248.c                                                            */
4 /* ../../tools/asn2eth.py -X -b -e -p h248 -c h248.cnf -s packet-h248-template MEGACO.asn */
5
6 /* Input file: packet-h248-template.c */
7
8 /* packet-h248.c
9  * Routines for H.248/MEGACO packet dissection
10  * Ronnie Sahlberg 2004
11  *
12  * $Id$
13  *
14  * Ethereal - Network traffic analyzer
15  * By Gerald Combs <gerald@ethereal.com>
16  * Copyright 1998 Gerald Combs
17  *
18  * This program is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU General Public License
20  * as published by the Free Software Foundation; either version 2
21  * of the License, or (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
31  */
32
33 #ifdef HAVE_CONFIG_H
34 # include "config.h"
35 #endif
36
37 #include <glib.h>
38 #include <epan/packet.h>
39 #include <epan/conversation.h>
40
41 #include <stdio.h>
42 #include <string.h>
43
44 #include "packet-ber.h"
45 #include "packet-h248.h"
46 #include "packet-isup.h"
47 #include "packet-q931.h"
48
49 #define PNAME  "H.248 MEGACO"
50 #define PSNAME "H248"
51 #define PFNAME "h248"
52
53 /*XXX this define should be moved to packet-m3ua.h ? */
54 #define GATEWAY_CONTROL_PROTOCOL_USER_ID 14
55
56 /* Initialize the protocol and registered fields */
57 static int proto_h248                           = -1;
58 static int proto_h248_annex_C           = -1;
59 static int hf_h248_mtpaddress_ni        = -1;
60 static int hf_h248_mtpaddress_pc        = -1;
61 static int hf_h248_package_name         = -1;
62 static int hf_h248_package_bcp_BNCChar_PDU = -1;
63 static int hf_h248_package_annex_C_TMR = -1;
64 static int hf_h248_package_annex_C_USI = -1;
65 static int hf_h248_package_annex_C_NSAP = -1;
66 static int hf_h248_package_annex_C_BIR = -1;
67
68 /*--- Included file: packet-h248-hf.c ---*/
69
70 static int hf_h248_authHeader = -1;               /* AuthenticationHeader */
71 static int hf_h248_mess = -1;                     /* Message */
72 static int hf_h248_secParmIndex = -1;             /* SecurityParmIndex */
73 static int hf_h248_seqNum = -1;                   /* SequenceNum */
74 static int hf_h248_ad = -1;                       /* AuthData */
75 static int hf_h248_version = -1;                  /* INTEGER_0_99 */
76 static int hf_h248_mId = -1;                      /* MId */
77 static int hf_h248_messageBody = -1;              /* T_messageBody */
78 static int hf_h248_messageError = -1;             /* ErrorDescriptor */
79 static int hf_h248_transactions = -1;             /* SEQUNCE_OF_Transaction */
80 static int hf_h248_transactions_item = -1;        /* Transaction */
81 static int hf_h248_ip4Address = -1;               /* IP4Address */
82 static int hf_h248_ip6Address = -1;               /* IP6Address */
83 static int hf_h248_domainName = -1;               /* DomainName */
84 static int hf_h248_deviceName = -1;               /* PathName */
85 static int hf_h248_mtpAddress = -1;               /* MtpAddress */
86 static int hf_h248_name = -1;                     /* IA5String */
87 static int hf_h248_portNumber = -1;               /* INTEGER_0_65535 */
88 static int hf_h248_address = -1;                  /* OCTET_STRING_SIZE_4 */
89 static int hf_h248_address1 = -1;                 /* OCTET_STRING_SIZE_16 */
90 static int hf_h248_transactionRequest = -1;       /* TransactionRequest */
91 static int hf_h248_transactionPending = -1;       /* TransactionPending */
92 static int hf_h248_transactionReply = -1;         /* TransactionReply */
93 static int hf_h248_transactionResponseAck = -1;   /* TransactionResponseAck */
94 static int hf_h248_transactionId = -1;            /* TransactionId */
95 static int hf_h248_actions = -1;                  /* SEQUNCE_OF_ActionRequest */
96 static int hf_h248_actions_item = -1;             /* ActionRequest */
97 static int hf_h248_immAckRequired = -1;           /* NULL */
98 static int hf_h248_transactionResult = -1;        /* T_transactionResult */
99 static int hf_h248_transactionError = -1;         /* ErrorDescriptor */
100 static int hf_h248_actionReplies = -1;            /* SEQUNCE_OF_ActionReply */
101 static int hf_h248_actionReplies_item = -1;       /* ActionReply */
102 static int hf_h248_TransactionResponseAck_item = -1;  /* TransactionAck */
103 static int hf_h248_firstAck = -1;                 /* TransactionId */
104 static int hf_h248_lastAck = -1;                  /* TransactionId */
105 static int hf_h248_errorCode = -1;                /* ErrorCode */
106 static int hf_h248_errorText = -1;                /* ErrorText */
107 static int hf_h248_contextId = -1;                /* ContextID */
108 static int hf_h248_contextRequest = -1;           /* ContextRequest */
109 static int hf_h248_contextAttrAuditReq = -1;      /* ContextAttrAuditRequest */
110 static int hf_h248_commandRequests = -1;          /* SEQUNCE_OF_CommandRequest */
111 static int hf_h248_commandRequests_item = -1;     /* CommandRequest */
112 static int hf_h248_errorDescriptor = -1;          /* ErrorDescriptor */
113 static int hf_h248_contextReply = -1;             /* ContextRequest */
114 static int hf_h248_commandReply = -1;             /* SEQUNCE_OF_CommandReply */
115 static int hf_h248_commandReply_item = -1;        /* CommandReply */
116 static int hf_h248_priority = -1;                 /* INTEGER_0_15 */
117 static int hf_h248_emergency = -1;                /* BOOLEAN */
118 static int hf_h248_topologyReq = -1;              /* SEQUNCE_OF_TopologyRequest */
119 static int hf_h248_topologyReq_item = -1;         /* TopologyRequest */
120 static int hf_h248_topology = -1;                 /* NULL */
121 static int hf_h248_emergency1 = -1;               /* NULL */
122 static int hf_h248_priority1 = -1;                /* NULL */
123 static int hf_h248_command = -1;                  /* Command */
124 static int hf_h248_optional = -1;                 /* NULL */
125 static int hf_h248_wildcardReturn = -1;           /* NULL */
126 static int hf_h248_addReq = -1;                   /* AmmRequest */
127 static int hf_h248_moveReq = -1;                  /* AmmRequest */
128 static int hf_h248_modReq = -1;                   /* AmmRequest */
129 static int hf_h248_subtractReq = -1;              /* SubtractRequest */
130 static int hf_h248_auditCapRequest = -1;          /* AuditRequest */
131 static int hf_h248_auditValueRequest = -1;        /* AuditRequest */
132 static int hf_h248_notifyReq = -1;                /* NotifyRequest */
133 static int hf_h248_serviceChangeReq = -1;         /* ServiceChangeRequest */
134 static int hf_h248_addReply = -1;                 /* AmmsReply */
135 static int hf_h248_moveReply = -1;                /* AmmsReply */
136 static int hf_h248_modReply = -1;                 /* AmmsReply */
137 static int hf_h248_subtractReply = -1;            /* AmmsReply */
138 static int hf_h248_auditCapReply = -1;            /* AuditReply */
139 static int hf_h248_auditValueReply = -1;          /* AuditReply */
140 static int hf_h248_notifyReply = -1;              /* NotifyReply */
141 static int hf_h248_serviceChangeReply = -1;       /* ServiceChangeReply */
142 static int hf_h248_terminationFrom = -1;          /* TerminationID */
143 static int hf_h248_terminationTo = -1;            /* TerminationID */
144 static int hf_h248_topologyDirection = -1;        /* T_topologyDirection */
145 static int hf_h248_streamID = -1;                 /* StreamID */
146 static int hf_h248_terminationID = -1;            /* TerminationIDList */
147 static int hf_h248_descriptors = -1;              /* SEQUNCE_OF_AmmDescriptor */
148 static int hf_h248_descriptors_item = -1;         /* AmmDescriptor */
149 static int hf_h248_mediaDescriptor = -1;          /* MediaDescriptor */
150 static int hf_h248_modemDescriptor = -1;          /* ModemDescriptor */
151 static int hf_h248_muxDescriptor = -1;            /* MuxDescriptor */
152 static int hf_h248_eventsDescriptor = -1;         /* EventsDescriptor */
153 static int hf_h248_eventBufferDescriptor = -1;    /* EventBufferDescriptor */
154 static int hf_h248_signalsDescriptor = -1;        /* SignalsDescriptor */
155 static int hf_h248_digitMapDescriptor = -1;       /* DigitMapDescriptor */
156 static int hf_h248_auditDescriptor = -1;          /* AuditDescriptor */
157 static int hf_h248_terminationAudit = -1;         /* TerminationAudit */
158 static int hf_h248_terminationID1 = -1;           /* TerminationID */
159 static int hf_h248_contextAuditResult = -1;       /* TerminationIDList */
160 static int hf_h248_error = -1;                    /* ErrorDescriptor */
161 static int hf_h248_auditResult = -1;              /* AuditResult */
162 static int hf_h248_terminationAuditResult = -1;   /* TerminationAudit */
163 static int hf_h248_TerminationAudit_item = -1;    /* AuditReturnParameter */
164 static int hf_h248_observedEventsDescriptor = -1;  /* ObservedEventsDescriptor */
165 static int hf_h248_statisticsDescriptor = -1;     /* StatisticsDescriptor */
166 static int hf_h248_packagesDescriptor = -1;       /* PackagesDescriptor */
167 static int hf_h248_emptyDescriptors = -1;         /* AuditDescriptor */
168 static int hf_h248_auditToken = -1;               /* T_auditToken */
169 static int hf_h248_auditPropertyToken = -1;       /* SEQUNCE_OF_IndAuditParameter */
170 static int hf_h248_auditPropertyToken_item = -1;  /* IndAuditParameter */
171 static int hf_h248_indaudmediaDescriptor = -1;    /* IndAudMediaDescriptor */
172 static int hf_h248_indaudeventsDescriptor = -1;   /* IndAudEventsDescriptor */
173 static int hf_h248_indaudeventBufferDescriptor = -1;  /* IndAudEventBufferDescriptor */
174 static int hf_h248_indaudsignalsDescriptor = -1;  /* IndAudSignalsDescriptor */
175 static int hf_h248_indauddigitMapDescriptor = -1;  /* IndAudDigitMapDescriptor */
176 static int hf_h248_indaudstatisticsDescriptor = -1;  /* IndAudStatisticsDescriptor */
177 static int hf_h248_indaudpackagesDescriptor = -1;  /* IndAudPackagesDescriptor */
178 static int hf_h248_termStateDescr = -1;           /* IndAudTerminationStateDescriptor */
179 static int hf_h248_streams = -1;                  /* T_streams */
180 static int hf_h248_oneStream = -1;                /* IndAudStreamParms */
181 static int hf_h248_multiStream = -1;              /* SEQUNCE_OF_IndAudStreamDescriptor */
182 static int hf_h248_multiStream_item = -1;         /* IndAudStreamDescriptor */
183 static int hf_h248_streamParms = -1;              /* IndAudStreamParms */
184 static int hf_h248_localControlDescriptor = -1;   /* IndAudLocalControlDescriptor */
185 static int hf_h248_localDescriptor = -1;          /* IndAudLocalRemoteDescriptor */
186 static int hf_h248_remoteDescriptor = -1;         /* IndAudLocalRemoteDescriptor */
187 static int hf_h248_streamMode = -1;               /* NULL */
188 static int hf_h248_reserveValue = -1;             /* NULL */
189 static int hf_h248_reserveGroup = -1;             /* NULL */
190 static int hf_h248_propertyParms = -1;            /* SEQUNCE_OF_IndAudPropertyParm */
191 static int hf_h248_propertyParms_item = -1;       /* IndAudPropertyParm */
192 static int hf_h248_name1 = -1;                    /* PkgdName */
193 static int hf_h248_propGroupID = -1;              /* INTEGER_0_65535 */
194 static int hf_h248_propGrps = -1;                 /* IndAudPropertyGroup */
195 static int hf_h248_IndAudPropertyGroup_item = -1;  /* IndAudPropertyParm */
196 static int hf_h248_eventBufferControl = -1;       /* NULL */
197 static int hf_h248_serviceState = -1;             /* NULL */
198 static int hf_h248_requestID = -1;                /* RequestID */
199 static int hf_h248_pkgdName = -1;                 /* PkgdName */
200 static int hf_h248_eventName = -1;                /* PkgdName */
201 static int hf_h248_signal = -1;                   /* IndAudSignal */
202 static int hf_h248_seqSigList = -1;               /* IndAudSeqSigList */
203 static int hf_h248_id = -1;                       /* INTEGER_0_65535 */
204 static int hf_h248_signalList = -1;               /* IndAudSignal */
205 static int hf_h248_signalName = -1;               /* PkgdName */
206 static int hf_h248_digitMapName = -1;             /* DigitMapName */
207 static int hf_h248_statName = -1;                 /* PkgdName */
208 static int hf_h248_packageName = -1;              /* Name */
209 static int hf_h248_packageVersion = -1;           /* INTEGER_0_99 */
210 static int hf_h248_requestId = -1;                /* RequestID */
211 static int hf_h248_observedEventLst = -1;         /* SEQUNCE_OF_ObservedEvent */
212 static int hf_h248_observedEventLst_item = -1;    /* ObservedEvent */
213 static int hf_h248_eventName1 = -1;               /* EventName */
214 static int hf_h248_eventParList = -1;             /* SEQUNCE_OF_EventParameter */
215 static int hf_h248_eventParList_item = -1;        /* EventParameter */
216 static int hf_h248_timeNotation = -1;             /* TimeNotation */
217 static int hf_h248_eventParameterName = -1;       /* Name */
218 static int hf_h248_value = -1;                    /* Value */
219 static int hf_h248_extraInfo = -1;                /* T_extraInfo */
220 static int hf_h248_relation = -1;                 /* Relation */
221 static int hf_h248_range = -1;                    /* BOOLEAN */
222 static int hf_h248_sublist = -1;                  /* BOOLEAN */
223 static int hf_h248_serviceChangeParms = -1;       /* ServiceChangeParm */
224 static int hf_h248_serviceChangeResult = -1;      /* ServiceChangeResult */
225 static int hf_h248_serviceChangeResParms = -1;    /* ServiceChangeResParm */
226 static int hf_h248_wildcard = -1;                 /* SEQUNCE_OF_WildcardField */
227 static int hf_h248_wildcard_item = -1;            /* WildcardField */
228 static int hf_h248_id1 = -1;                      /* OCTET_STRING_SIZE_1_8 */
229 static int hf_h248_TerminationIDList_item = -1;   /* TerminationID */
230 static int hf_h248_termStateDescr1 = -1;          /* TerminationStateDescriptor */
231 static int hf_h248_streams1 = -1;                 /* T_streams1 */
232 static int hf_h248_oneStream1 = -1;               /* StreamParms */
233 static int hf_h248_multiStream1 = -1;             /* SEQUNCE_OF_StreamDescriptor */
234 static int hf_h248_multiStream_item1 = -1;        /* StreamDescriptor */
235 static int hf_h248_streamParms1 = -1;             /* StreamParms */
236 static int hf_h248_localControlDescriptor1 = -1;  /* LocalControlDescriptor */
237 static int hf_h248_localDescriptor1 = -1;         /* LocalRemoteDescriptor */
238 static int hf_h248_remoteDescriptor1 = -1;        /* LocalRemoteDescriptor */
239 static int hf_h248_streamMode1 = -1;              /* StreamMode */
240 static int hf_h248_reserveValue1 = -1;            /* BOOLEAN */
241 static int hf_h248_reserveGroup1 = -1;            /* BOOLEAN */
242 static int hf_h248_propertyParms1 = -1;           /* SEQUNCE_OF_PropertyParm */
243 static int hf_h248_propertyParms_item1 = -1;      /* PropertyParm */
244 static int hf_h248_propertyName = -1;             /* PkgdName */
245 static int hf_h248_value1 = -1;                   /* SEQUNCE_OF_PropertyID */
246 static int hf_h248_value_item = -1;               /* PropertyID */
247 static int hf_h248_extraInfo1 = -1;               /* T_extraInfo1 */
248 static int hf_h248_propGrps1 = -1;                /* SEQUNCE_OF_PropertyGroup */
249 static int hf_h248_propGrps_item = -1;            /* PropertyGroup */
250 static int hf_h248_PropertyGroup_item = -1;       /* PropertyParm */
251 static int hf_h248_eventBufferControl1 = -1;      /* EventBufferControl */
252 static int hf_h248_serviceState1 = -1;            /* ServiceState */
253 static int hf_h248_muxType = -1;                  /* MuxType */
254 static int hf_h248_termList = -1;                 /* SEQUNCE_OF_TerminationID */
255 static int hf_h248_termList_item = -1;            /* TerminationID */
256 static int hf_h248_nonStandardData = -1;          /* NonStandardData */
257 static int hf_h248_eventList = -1;                /* SEQUNCE_OF_RequestedEvent */
258 static int hf_h248_eventList_item = -1;           /* RequestedEvent */
259 static int hf_h248_eventAction = -1;              /* RequestedActions */
260 static int hf_h248_evParList = -1;                /* SEQUNCE_OF_EventParameter */
261 static int hf_h248_evParList_item = -1;           /* EventParameter */
262 static int hf_h248_keepActive = -1;               /* BOOLEAN */
263 static int hf_h248_eventDM = -1;                  /* EventDM */
264 static int hf_h248_secondEvent = -1;              /* SecondEventsDescriptor */
265 static int hf_h248_digitMapValue = -1;            /* DigitMapValue */
266 static int hf_h248_eventList1 = -1;               /* SEQUNCE_OF_SecondRequestedEvent */
267 static int hf_h248_eventList_item1 = -1;          /* SecondRequestedEvent */
268 static int hf_h248_eventAction1 = -1;             /* SecondRequestedActions */
269 static int hf_h248_EventBufferDescriptor_item = -1;  /* EventSpec */
270 static int hf_h248_SignalsDescriptor_item = -1;   /* SignalRequest */
271 static int hf_h248_signal1 = -1;                  /* Signal */
272 static int hf_h248_seqSigList1 = -1;              /* SeqSigList */
273 static int hf_h248_signalList1 = -1;              /* SEQUNCE_OF_Signal */
274 static int hf_h248_signalList_item = -1;          /* Signal */
275 static int hf_h248_signalName1 = -1;              /* SignalName */
276 static int hf_h248_sigType = -1;                  /* SignalType */
277 static int hf_h248_duration = -1;                 /* INTEGER_0_65535 */
278 static int hf_h248_notifyCompletion = -1;         /* NotifyCompletion */
279 static int hf_h248_sigParList = -1;               /* SEQUNCE_OF_SigParameter */
280 static int hf_h248_sigParList_item = -1;          /* SigParameter */
281 static int hf_h248_sigParameterName = -1;         /* Name */
282 static int hf_h248_extraInfo2 = -1;               /* T_extraInfo2 */
283 static int hf_h248_mtl = -1;                      /* SEQUNCE_OF_ModemType */
284 static int hf_h248_mtl_item = -1;                 /* ModemType */
285 static int hf_h248_mpl = -1;                      /* SEQUNCE_OF_PropertyParm */
286 static int hf_h248_mpl_item = -1;                 /* PropertyParm */
287 static int hf_h248_startTimer = -1;               /* INTEGER_0_99 */
288 static int hf_h248_shortTimer = -1;               /* INTEGER_0_99 */
289 static int hf_h248_longTimer = -1;                /* INTEGER_0_99 */
290 static int hf_h248_digitMapBody = -1;             /* IA5String */
291 static int hf_h248_durationTimer = -1;            /* INTEGER_0_99 */
292 static int hf_h248_serviceChangeMethod = -1;      /* ServiceChangeMethod */
293 static int hf_h248_serviceChangeAddress = -1;     /* ServiceChangeAddress */
294 static int hf_h248_serviceChangeVersion = -1;     /* INTEGER_0_99 */
295 static int hf_h248_serviceChangeProfile = -1;     /* ServiceChangeProfile */
296 static int hf_h248_serviceChangeReason = -1;      /* Value */
297 static int hf_h248_serviceChangeDelay = -1;       /* INTEGER_0_4294967295 */
298 static int hf_h248_serviceChangeMgcId = -1;       /* MId */
299 static int hf_h248_timeStamp = -1;                /* TimeNotation */
300 static int hf_h248_serviceChangeInfo = -1;        /* AuditDescriptor */
301 static int hf_h248_mtpAddress1 = -1;              /* OCTET_STRING_SIZE_2_4 */
302 static int hf_h248_timestamp = -1;                /* TimeNotation */
303 static int hf_h248_profileName = -1;              /* IA5String_SIZE_1_67 */
304 static int hf_h248_PackagesDescriptor_item = -1;  /* PackagesItem */
305 static int hf_h248_StatisticsDescriptor_item = -1;  /* StatisticsParameter */
306 static int hf_h248_statValue = -1;                /* Value */
307 static int hf_h248_nonStandardIdentifier = -1;    /* NonStandardIdentifier */
308 static int hf_h248_data = -1;                     /* OCTET_STRING */
309 static int hf_h248_object = -1;                   /* OBJECT_IDENTIFIER */
310 static int hf_h248_h221NonStandard = -1;          /* H221NonStandard */
311 static int hf_h248_experimental = -1;             /* IA5String_SIZE_8 */
312 static int hf_h248_t35CountryCode1 = -1;          /* INTEGER_0_255 */
313 static int hf_h248_t35CountryCode2 = -1;          /* INTEGER_0_255 */
314 static int hf_h248_t35Extension = -1;             /* INTEGER_0_255 */
315 static int hf_h248_manufacturerCode = -1;         /* INTEGER_0_65535 */
316 static int hf_h248_date = -1;                     /* IA5String_SIZE_8 */
317 static int hf_h248_time = -1;                     /* IA5String_SIZE_8 */
318 static int hf_h248_Value_item = -1;               /* OCTET_STRING */
319 /* named bits */
320 static int hf_h248_T_auditToken_muxToken = -1;
321 static int hf_h248_T_auditToken_modemToken = -1;
322 static int hf_h248_T_auditToken_mediaToken = -1;
323 static int hf_h248_T_auditToken_eventsToken = -1;
324 static int hf_h248_T_auditToken_signalsToken = -1;
325 static int hf_h248_T_auditToken_digitMapToken = -1;
326 static int hf_h248_T_auditToken_statsToken = -1;
327 static int hf_h248_T_auditToken_observedEventsToken = -1;
328 static int hf_h248_T_auditToken_packagesToken = -1;
329 static int hf_h248_T_auditToken_eventBufferToken = -1;
330 static int hf_h248_NotifyCompletion_onTimeOut = -1;
331 static int hf_h248_NotifyCompletion_onInterruptByEvent = -1;
332 static int hf_h248_NotifyCompletion_onInterruptByNewSignalDescr = -1;
333 static int hf_h248_NotifyCompletion_otherReason = -1;
334
335 /*--- End of included file: packet-h248-hf.c ---*/
336
337
338 /* Initialize the subtree pointers */
339 static gint ett_h248 = -1;
340 static gint ett_mtpaddress = -1;
341 static gint ett_packagename = -1;
342
343 /*--- Included file: packet-h248-ett.c ---*/
344
345 static gint ett_h248_MegacoMessage = -1;
346 static gint ett_h248_AuthenticationHeader = -1;
347 static gint ett_h248_Message = -1;
348 static gint ett_h248_T_messageBody = -1;
349 static gint ett_h248_SEQUNCE_OF_Transaction = -1;
350 static gint ett_h248_MId = -1;
351 static gint ett_h248_DomainName = -1;
352 static gint ett_h248_IP4Address = -1;
353 static gint ett_h248_IP6Address = -1;
354 static gint ett_h248_Transaction = -1;
355 static gint ett_h248_TransactionRequest = -1;
356 static gint ett_h248_SEQUNCE_OF_ActionRequest = -1;
357 static gint ett_h248_TransactionPending = -1;
358 static gint ett_h248_TransactionReply = -1;
359 static gint ett_h248_T_transactionResult = -1;
360 static gint ett_h248_SEQUNCE_OF_ActionReply = -1;
361 static gint ett_h248_TransactionResponseAck = -1;
362 static gint ett_h248_TransactionAck = -1;
363 static gint ett_h248_ErrorDescriptor = -1;
364 static gint ett_h248_ActionRequest = -1;
365 static gint ett_h248_SEQUNCE_OF_CommandRequest = -1;
366 static gint ett_h248_ActionReply = -1;
367 static gint ett_h248_SEQUNCE_OF_CommandReply = -1;
368 static gint ett_h248_ContextRequest = -1;
369 static gint ett_h248_SEQUNCE_OF_TopologyRequest = -1;
370 static gint ett_h248_ContextAttrAuditRequest = -1;
371 static gint ett_h248_CommandRequest = -1;
372 static gint ett_h248_Command = -1;
373 static gint ett_h248_CommandReply = -1;
374 static gint ett_h248_TopologyRequest = -1;
375 static gint ett_h248_AmmRequest = -1;
376 static gint ett_h248_SEQUNCE_OF_AmmDescriptor = -1;
377 static gint ett_h248_AmmDescriptor = -1;
378 static gint ett_h248_AmmsReply = -1;
379 static gint ett_h248_SubtractRequest = -1;
380 static gint ett_h248_AuditRequest = -1;
381 static gint ett_h248_AuditReply = -1;
382 static gint ett_h248_AuditResult = -1;
383 static gint ett_h248_TerminationAudit = -1;
384 static gint ett_h248_AuditReturnParameter = -1;
385 static gint ett_h248_AuditDescriptor = -1;
386 static gint ett_h248_T_auditToken = -1;
387 static gint ett_h248_SEQUNCE_OF_IndAuditParameter = -1;
388 static gint ett_h248_IndAuditParameter = -1;
389 static gint ett_h248_IndAudMediaDescriptor = -1;
390 static gint ett_h248_T_streams = -1;
391 static gint ett_h248_SEQUNCE_OF_IndAudStreamDescriptor = -1;
392 static gint ett_h248_IndAudStreamDescriptor = -1;
393 static gint ett_h248_IndAudStreamParms = -1;
394 static gint ett_h248_IndAudLocalControlDescriptor = -1;
395 static gint ett_h248_SEQUNCE_OF_IndAudPropertyParm = -1;
396 static gint ett_h248_IndAudPropertyParm = -1;
397 static gint ett_h248_IndAudLocalRemoteDescriptor = -1;
398 static gint ett_h248_IndAudPropertyGroup = -1;
399 static gint ett_h248_IndAudTerminationStateDescriptor = -1;
400 static gint ett_h248_IndAudEventsDescriptor = -1;
401 static gint ett_h248_IndAudEventBufferDescriptor = -1;
402 static gint ett_h248_IndAudSignalsDescriptor = -1;
403 static gint ett_h248_IndAudSeqSigList = -1;
404 static gint ett_h248_IndAudSignal = -1;
405 static gint ett_h248_IndAudDigitMapDescriptor = -1;
406 static gint ett_h248_IndAudStatisticsDescriptor = -1;
407 static gint ett_h248_IndAudPackagesDescriptor = -1;
408 static gint ett_h248_NotifyRequest = -1;
409 static gint ett_h248_NotifyReply = -1;
410 static gint ett_h248_ObservedEventsDescriptor = -1;
411 static gint ett_h248_SEQUNCE_OF_ObservedEvent = -1;
412 static gint ett_h248_ObservedEvent = -1;
413 static gint ett_h248_SEQUNCE_OF_EventParameter = -1;
414 static gint ett_h248_EventParameter = -1;
415 static gint ett_h248_T_extraInfo = -1;
416 static gint ett_h248_ServiceChangeRequest = -1;
417 static gint ett_h248_ServiceChangeReply = -1;
418 static gint ett_h248_ServiceChangeResult = -1;
419 static gint ett_h248_TerminationID = -1;
420 static gint ett_h248_SEQUNCE_OF_WildcardField = -1;
421 static gint ett_h248_TerminationIDList = -1;
422 static gint ett_h248_MediaDescriptor = -1;
423 static gint ett_h248_T_streams1 = -1;
424 static gint ett_h248_SEQUNCE_OF_StreamDescriptor = -1;
425 static gint ett_h248_StreamDescriptor = -1;
426 static gint ett_h248_StreamParms = -1;
427 static gint ett_h248_LocalControlDescriptor = -1;
428 static gint ett_h248_SEQUNCE_OF_PropertyParm = -1;
429 static gint ett_h248_PropertyParm = -1;
430 static gint ett_h248_SEQUNCE_OF_PropertyID = -1;
431 static gint ett_h248_T_extraInfo1 = -1;
432 static gint ett_h248_LocalRemoteDescriptor = -1;
433 static gint ett_h248_SEQUNCE_OF_PropertyGroup = -1;
434 static gint ett_h248_PropertyGroup = -1;
435 static gint ett_h248_TerminationStateDescriptor = -1;
436 static gint ett_h248_MuxDescriptor = -1;
437 static gint ett_h248_SEQUNCE_OF_TerminationID = -1;
438 static gint ett_h248_EventsDescriptor = -1;
439 static gint ett_h248_SEQUNCE_OF_RequestedEvent = -1;
440 static gint ett_h248_RequestedEvent = -1;
441 static gint ett_h248_RequestedActions = -1;
442 static gint ett_h248_EventDM = -1;
443 static gint ett_h248_SecondEventsDescriptor = -1;
444 static gint ett_h248_SEQUNCE_OF_SecondRequestedEvent = -1;
445 static gint ett_h248_SecondRequestedEvent = -1;
446 static gint ett_h248_SecondRequestedActions = -1;
447 static gint ett_h248_EventBufferDescriptor = -1;
448 static gint ett_h248_EventSpec = -1;
449 static gint ett_h248_SignalsDescriptor = -1;
450 static gint ett_h248_SignalRequest = -1;
451 static gint ett_h248_SeqSigList = -1;
452 static gint ett_h248_SEQUNCE_OF_Signal = -1;
453 static gint ett_h248_Signal = -1;
454 static gint ett_h248_SEQUNCE_OF_SigParameter = -1;
455 static gint ett_h248_NotifyCompletion = -1;
456 static gint ett_h248_SigParameter = -1;
457 static gint ett_h248_T_extraInfo2 = -1;
458 static gint ett_h248_ModemDescriptor = -1;
459 static gint ett_h248_SEQUNCE_OF_ModemType = -1;
460 static gint ett_h248_DigitMapDescriptor = -1;
461 static gint ett_h248_DigitMapValue = -1;
462 static gint ett_h248_ServiceChangeParm = -1;
463 static gint ett_h248_ServiceChangeAddress = -1;
464 static gint ett_h248_ServiceChangeResParm = -1;
465 static gint ett_h248_ServiceChangeProfile = -1;
466 static gint ett_h248_PackagesDescriptor = -1;
467 static gint ett_h248_PackagesItem = -1;
468 static gint ett_h248_StatisticsDescriptor = -1;
469 static gint ett_h248_StatisticsParameter = -1;
470 static gint ett_h248_NonStandardData = -1;
471 static gint ett_h248_NonStandardIdentifier = -1;
472 static gint ett_h248_H221NonStandard = -1;
473 static gint ett_h248_TimeNotation = -1;
474 static gint ett_h248_Value = -1;
475
476 /*--- End of included file: packet-h248-ett.c ---*/
477
478
479
480 static dissector_table_t h248_package_bin_dissector_table=NULL;
481
482
483 static const value_string package_name_vals[] = {
484   {   0x0000, "Media stream properties H.248.1 Annex C" },
485   {   0x0001, "g H.248.1 Annex E" },
486   {   0x0002, "root H.248.1 Annex E" },
487   {   0x0003, "tonegen H.248.1 Annex E" },
488   {   0x0004, "tonedet H.248.1 Annex E" },
489   {   0x0005, "dg H.248.1 Annex E" },
490   {   0x0006, "dd H.248.1 Annex E" },
491   {   0x0007, "cg H.248.1 Annex E" }, 
492   {   0x0008, "cd H.248.1 Annex E" },
493   {   0x0009, "al H.248.1 Annex E" },
494   {   0x000a, "ct H.248.1 Annex E" }, 
495   {   0x000b, "nt H.248.1 Annex E" },
496   {   0x000c, "rtp H.248.1 Annex E" },
497   {   0x000d, "tdmc H.248.1 Annex E" },
498   {   0x000e, "ftmd H.248.1 Annex E" },
499   {   0x000f, "txc H.248.2" },                                                                                  /* H.248.2 */
500   {   0x0010, "txp H.248.2" },
501   {   0x0011, "ctyp H.248.2" },
502   {   0x0012, "fax H.248.2" },
503   {   0x0013, "ipfax H.248.2" },
504   {   0x0014, "dis H.248.3" },                                                                                  /* H.248.3 */
505   {   0x0015, "key H.248.3" },
506   {   0x0016, "kp H.248.3" },
507   {   0x0017, "labelkey H.248.3" },   
508   {   0x0018, "kf H.248.3" },
509   {   0x0019, "ind H.248.3" },
510   {   0x001a, "ks H.248.3" },
511   {   0x001b, "anci H.248.3" },
512   {   0x001c, "dtd H.248.6" },                                                                                  /* H.248.6 */
513   {   0x001d, "an H.248.7" },                                                                                   /* H.248.7 */
514   {   0x001e, "Bearer Characteristics Q.1950 Annex A" },                                /* Q.1950 Annex A */ 
515   {   0x001f, "Bearer Network Connection Cut Q.1950 Annex A" },
516   {   0x0020, "Reuse Idle Q.1950 Annex A" },
517   {   0x0021, "Generic Bearer Connection Q.1950 Annex A" }, 
518   {   0x0022, "Bearer Control Tunnelling Q.1950 Annex A" },
519   {   0x0023, "Basic Call Progress Tones Q.1950 Annex A" },
520   {   0x0024, "Expanded Call Progress Tones Q.1950 Annex A" },
521   {   0x0025, "Basic Services Tones Q.1950 Annex A" },
522   {   0x0026, "Expanded Services Tones Q.1950 Annex A" },
523   {   0x0027, "Intrusion Tones Q.1950 Annex A" },
524   {   0x0028, "Business Tones Q.1950 Annex A" },
525   {   0x0029, "Media Gateway Resource Congestion Handling H.248.10" },  /* H.248.10 */
526   {   0x002a, "H245 package H248.12" },                                                                 /* H.248.12 */
527   {   0x002b, "H323 bearer control package H.248.12" },                                 /* H.248.12 */
528   {   0x002c, "H324 package H.248.12" },                                                                /* H.248.12 */
529   {   0x002d, "H245 command package H.248.12" },                                                /* H.248.12 */
530   {   0x002e, "H245 indication package H.248.12" },                                             /* H.248.12 */
531   {   0x002f, "3G User Plane" },                                                                                /* 3GPP TS 29.232 v4.1.0 */
532   {   0x0030, "3G Circuit Switched Data" },
533   {   0x0031, "3G TFO Control" },
534   {   0x0032, "3G Expanded Call Progress Tones" },
535   {   0x0033, "Advanced Audio Server (AAS) Base)" },                                    /* H.248.9 */
536   {   0x0034, "AAS Digit Collection" },                                                                 /* H.248.9 */
537   {   0x0035, "AAS Recording" },                                                                                /* H.248.9 */
538   {   0x0036, "AAS Segment Management" },                                                               /* H.248.9 */ 
539   {   0x0037, "Quality Alert Ceasing" },                                                                /* H.248.13 */
540   {   0x0038, "Conferencing Tones Generation" },                                                /* H.248.27 */
541   {   0x0039, "Diagnostic Tones Generation" },                                                  /* H.248.27 */
542   {   0x003a, "Carrier Tones Generation Package H.248.23" },                    /* H.248.27 */
543   {   0x003b, "Enhanced Alerting Package H.248.23" },                                   /* H.248.23 */
544   {   0x003c, "Analog Display Signalling Package H.248.23" },                   /* H.248.23 */
545   {   0x003d, "Multi-Frequency Tone Generation Package H.248.24" },             /* H.248.24 */                                                                                             
546   {   0x003e, "H.248.23Multi-Frequency Tone Detection Package H.248.24" }, /* H.248.24 */
547   {   0x003f, "Basic CAS Package H.248.25" },                                                   /* H.248.25 */                                                                                             
548   {   0x0040, "Robbed Bit Signalling Package H.248.25" },                       /* H.248.25 */
549   {   0x0041, "Operator Services and Emgergency Services Package H.248.25" },                                                                                              
550   {   0x0042, "Operator Services Extension Package H.248.25" },
551   {   0x0043, "Extended Analog Line Supervision Package H.248.26" },
552   {   0x0044, "Automatic Metering Package H.248.26" },  
553   {   0x0045, "Inactivity Timer Package H.248.14" },      
554   {   0x0046, "3G Modification of Link Characteristics Bearer Capability" }, /* 3GPP TS 29.232 v4.4.0 */ 
555   {   0x0047, "Base Announcement Syntax H.248.9" },
556   {   0x0048, "Voice Variable Syntax H.248.9" },
557   {   0x0049, "Announcement Set Syntax H.248.9" },
558   {   0x004a, "Phrase Variable Syntax H.248.9" },
559   {   0x004b, "Basic NAS package" },
560   {   0x004c, "NAS incoming package" },
561   {   0x004d, "NAS outgoing package" },
562   {   0x004e, "NAS control package" },
563   {   0x004f, "NAS root package" },
564   {   0x0050, "Profile Handling Package H.248.18" }, 
565   {   0x0051, "Media Gateway Overload Control Package H.248.11" }, 
566   {   0x0052, "Extended DTMF Detection Package H.248.16" },
567   {   0x0053, "Quiet Termination Line Test" },
568   {   0x0054, "Loopback Line Test Response" },                                                  /* H.248.17 */
569   {   0x0055, "ITU 404Hz Line Test" },                                                                  /* H.248.17 */
570   {   0x0056, "ITU 816Hz Line Test" },                                                                  /* H.248.17 */
571   {   0x0057, "ITU 1020Hz Line Test" },                                                                 /* H.248.17 */
572   {   0x0058, "ITU 2100Hz Disable Tone Line Test" },                                    /* H.248.17 */
573   {   0x0059, "ITU 2100Hz Disable Echo Canceller Tone Line Test" },             /* H.248.17 */
574   {   0x005a, "ITU 2804Hz Tone Line Test" },                                                    /* H.248.17 */
575   {   0x005b, "ITU Noise Test Tone Line Test" },                                                /* H.248.17 */
576   {   0x005c, "ITU Digital Pseudo Random Test Line Test" },                             /* H.248.17 */
577   {   0x005d, "ITU ATME No.2 Test Line Response" },                                             /* H.248.17 */
578   {   0x005e, "ANSI 1004Hz Test Tone Line Test" },                                              /* H.248.17 */
579   {   0x005f, "ANSI Test Responder Line Test" },                                                /* H.248.17 */
580   {   0x0060, "ANSI 2225Hz Test Progress Tone Line Test" },                             /* H.248.17 */
581   {   0x0061, "ANSI Digital Test Signal Line Test" },                                   /* H.248.17 */
582   {   0x0062, "ANSI Inverting Loopback Line Test Repsonse" },                   /* H.248.17 */
583   {   0x0063, "Extended H.324 Packages H.248.12 Annex A" },
584   {   0x0064, "Extended H.245 Command Package H.248.12 Annex A" },
585   {   0x0065, "Extended H.245 Indication Package H.248.12 Annex A" },
586   {   0x0066, "Enhanced DTMF Detection Package H.248.16" }, 
587   {   0x0067, "Connection Group Identity Package Q.1950 Annex E" }, 
588   {   0x0068, "CTM Text Transport 3GPP TS 29.232 v5.2.0" }, 
589   {   0x0069, "SPNE Control Package Q.115.0" },
590   {   0x006a, "Semi-permanent Connection Package H.248.21" },
591   {   0x006b, "Shared Risk Group Package H.248.22" },
592   {   0x006c, "isuptn Annex B of ITU-T Rec. J.171" },
593   {   0x006d, "Basic CAS Addressing Package H.248.25" },
594   {   0x006e, "Floor Control Package H.248.19" },
595   {   0x006f, "Indication of Being Viewed Package H.248.19" },
596   {   0x0070, "Volume Control Package H.248.19" },
597   {   0x0071, "UNASSIGNED" },
598   {   0x0072, "Volume Detection Package H.248.19" },
599   {   0x0073, "Volume Level Mixing Package H.248.19" },
600   {   0x0074, "Mixing Volume Level Control Package H.248.19" },
601   {   0x0075, "Voice Activated Video Switch Package H.248.19" },
602   {   0x0076, "Lecture Video Mode Package H.248.19" },
603   {   0x0077, "Contributing Video Source Package H.248.19" },
604   {   0x0078, "Video Window Package H.248.19" },
605   {   0x0079, "Tiled Window Package H.248.19" },
606   {   0x007a, "Adaptive Jitter Buffer Package H.248.31" },
607   {   0x007b, "International CAS Package H.248.28" },
608   {   0x007c, "CAS Blocking Package H.248.28" },
609   {   0x007d, "International CAS Compelled Package H.248.29" },
610   {   0x007e, "International CAS Compelled with Overlap Package H.248.29" },
611   {   0x007f, "International CAS Compelled with End-to-end Package H.248.29" },
612   {   0x0080, "RTCP XR Package H.248.30" },
613   {   0x0081, "RTCP XR Burst Metrics Package H.248.30" },
614   {   0x0082, "threegcsden 3G Circuit Switched Data" },                         /* 3GPP TS 29.232 v5.6.0 */
615   {   0x0083, "threegiptra 3G Circuit Switched Data" },                         /* 3GPP TS 29.232 v5.6.0 */
616   {   0x0084, "threegflex 3G Circuit Switched Data" },                          /* 3GPP TS 29.232 v5.6.0 */                                                                                                
617   {   0x0085, "H.248 PCMSB" },
618   {   0x008a, "TIPHON Extended H.248/MEGACO Package" },                         /* ETSI specification TS 101 3 */
619   {   0x008b, "Differentiated Services Package" },                                      /* Annex A of ETSI TS 102 333 */
620   {   0x008c, "Gate Management Package" },                                                      /* Annex B of ETSI TS 102 333 */
621   {   0x008d, "Traffic Management Package" },                                           /* Annex C of ETSI TS 102 333 */
622   {   0x008e, "Gate Recovery Information Package" },                            /* Annex D of ETSI TS 102 333 */
623   {   0x008f, "NAT Traversal Package" },                                                        /* Annex E of ETSI TS 102 333 */
624   {   0x0090, "MPLS Package" },                                                                         /* Annex F of ETSI TS 102 333 */
625   {   0x0091, "VLAN Package" },                                                                         /* Annex G of ETSI TS 102 333 */
626   {   0x8000, "Ericsson IU" }, 
627   {   0x8001, "Ericsson UMTS and GSM Circuit" },
628   {   0x8002, "Ericsson Tone Generator Package" },
629   {   0x8003, "Ericsson Line Test Package" },
630   {   0x8004, "Nokia Advanced TFO Package" },
631   {   0x8005, "Nokia IWF Package" },
632   {   0x8006, "Nokia Root Package" },
633   {   0x8007, "Nokia Trace Package" },
634   {   0x8008, "Ericsson  V5.2 Layer" },
635   {   0x8009, "Ericsson Detailed Termination Information Package" },
636   {   0x800a, "Nokia Bearer Characteristics Package" },
637         {0,     NULL}
638 };
639
640 static void 
641 dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor) {
642         int offset = 0;
643         tvbuff_t *new_tvb;
644
645         switch ( name_minor ){
646                 case 0x1001: /* Media */
647                         proto_tree_add_text(tree, tvb, offset, -1,"Media");
648                         break;
649                 case 0x3002: /* BIR */
650                         offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_BIR, &new_tvb);
651                         break;
652                 case 0x3003: /* NSAP */
653                         offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_NSAP, &new_tvb);
654                         dissect_nsap(new_tvb, 0,tvb_length_remaining(new_tvb, 0), tree);
655                         break;
656                 case 0x9001: /* TMR */
657                         offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_h248_package_annex_C_TMR, NULL);
658                         break;
659                 case 0x9023: /* User Service Information */
660                         offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_USI, &new_tvb);
661                         dissect_q931_bearer_capability_ie(new_tvb, 0, 3, tree);
662                         break;
663                 default:
664                         proto_tree_add_text(tree, tvb, offset, -1,"PropertyID not decoded(yet) 0x%x",name_minor);
665                         break;
666         }
667 }
668 static const value_string BNCChar_vals[] = {
669   {   1, "aal1" },
670   {   2, "aal2" },
671   {   3, "aal1struct" },
672   {   4, "ipRtp" },
673   {   5, "tdm" },
674   { 0, NULL }
675 };
676 static void
677 dissect_h248_package_data(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,guint16 name_major, guint16 name_minor){
678
679 guint offset=0;
680
681         switch ( name_major ){
682                 case 0x0000: /* Media stream properties H.248.1 Annex C */
683                         dissect_h248_annex_C_PDU(implicit_tag, tvb, pinfo, tree, name_minor);
684                         break;
685                 case 0x0001: /* g H.248.1 Annex E */
686                         proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
687                         break;
688                 case 0x001e: /* g H.248.1 Annex E */
689                         offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_h248_package_bcp_BNCChar_PDU, NULL);
690                         break;
691                 default:
692                         proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
693                         break;
694         }
695
696 }
697 static guint32 packageandid;
698
699 static int 
700 dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
701   tvbuff_t *new_tvb;
702   proto_tree *package_tree=NULL;
703   guint32 name_major, name_minor;
704   int old_offset;
705
706   old_offset=offset;
707   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
708
709
710   /* this field is always 4 bytes  so just read it into two integers */
711   name_major=tvb_get_ntohs(new_tvb, 0);
712   name_minor=tvb_get_ntohs(new_tvb, 2);
713   packageandid=(name_major<<16)|name_minor;
714
715   /* do the prettification */
716   proto_item_append_text(ber_last_created_item, "  %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major);
717   if(tree){
718     package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename);
719   }
720   proto_tree_add_uint(package_tree, hf_h248_package_name, tvb, offset-4, 2, name_major);
721
722
723   return offset;
724 }
725
726 static int
727 dissect_h248_PropertyID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
728
729         guint8 class;
730         gboolean pc, ind;
731         guint32 tag;
732         guint32 len;
733         guint16 name_major;
734         guint16 name_minor;
735         int old_offset, end_offset;
736         tvbuff_t *next_tvb;
737
738         old_offset=offset;
739         offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
740         offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
741         end_offset=offset+len;
742
743         if( (class!=BER_CLASS_UNI)
744           ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
745                 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);
746                 return end_offset;
747         }
748
749
750         next_tvb = tvb_new_subset(tvb, offset , len , len );
751         name_major = packageandid >> 16;
752         name_minor = packageandid & 0xffff;
753 /*
754         if(!dissector_try_port(h248_package_bin_dissector_table, name_major, next_tvb, pinfo, tree)){
755                 proto_tree_add_text(tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%08x not implemented (yet).", packageandid);
756
757                 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, old_offset, hf_index, NULL);
758         }
759 */
760         dissect_h248_package_data(implicit_tag, next_tvb, pinfo, tree, name_major, name_minor);
761         return end_offset;
762 }
763
764
765
766 static int 
767 dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) {
768   tvbuff_t *new_tvb;
769   proto_tree *mtp_tree=NULL;
770   guint32 val;
771   int i, len, old_offset;
772
773   old_offset=offset;
774   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb);
775
776
777   /* this field is either 2 or 4 bytes  so just read it into an integer */
778   val=0;
779   len=tvb_length(new_tvb);
780   for(i=0;i<len;i++){
781     val= (val<<8)|tvb_get_guint8(new_tvb, i);
782   }
783
784   /* do the prettification */
785   proto_item_append_text(ber_last_created_item, "  NI = %d, PC = %d ( %d-%d )", val&0x03,val>>2,val&0x03,val>>2);
786   if(tree){
787     mtp_tree = proto_item_add_subtree(ber_last_created_item, ett_mtpaddress);
788   }
789   proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_ni, tvb, old_offset, offset-old_offset, val&0x03);
790   proto_tree_add_uint(mtp_tree, hf_h248_mtpaddress_pc, tvb, old_offset, offset-old_offset, val>>2);
791
792
793   return offset;
794 }
795
796
797
798 /*--- Included file: packet-h248-fn.c ---*/
799
800 /*--- Fields for imported types ---*/
801
802
803
804 static int
805 dissect_h248_SecurityParmIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
806   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
807                                     NULL);
808
809   return offset;
810 }
811 static int dissect_secParmIndex_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
812   return dissect_h248_SecurityParmIndex(TRUE, tvb, offset, pinfo, tree, hf_h248_secParmIndex);
813 }
814
815
816 static int
817 dissect_h248_SequenceNum(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
818   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
819                                     NULL);
820
821   return offset;
822 }
823 static int dissect_seqNum_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
824   return dissect_h248_SequenceNum(TRUE, tvb, offset, pinfo, tree, hf_h248_seqNum);
825 }
826
827
828 static int
829 dissect_h248_AuthData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
830   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
831                                     NULL);
832
833   return offset;
834 }
835 static int dissect_ad_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
836   return dissect_h248_AuthData(TRUE, tvb, offset, pinfo, tree, hf_h248_ad);
837 }
838
839 static ber_sequence AuthenticationHeader_sequence[] = {
840   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_secParmIndex_impl },
841   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqNum_impl },
842   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ad_impl },
843   { 0, 0, 0, NULL }
844 };
845
846 static int
847 dissect_h248_AuthenticationHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
848   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
849                                 AuthenticationHeader_sequence, hf_index, ett_h248_AuthenticationHeader);
850
851   return offset;
852 }
853 static int dissect_authHeader_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
854   return dissect_h248_AuthenticationHeader(TRUE, tvb, offset, pinfo, tree, hf_h248_authHeader);
855 }
856
857
858
859 static int
860 dissect_h248_INTEGER_0_99(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
861   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
862
863   return offset;
864 }
865 static int dissect_version_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
866   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_version);
867 }
868 static int dissect_packageVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
869   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_packageVersion);
870 }
871 static int dissect_startTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
872   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_startTimer);
873 }
874 static int dissect_shortTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
875   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_shortTimer);
876 }
877 static int dissect_longTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
878   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_longTimer);
879 }
880 static int dissect_durationTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
881   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_durationTimer);
882 }
883 static int dissect_serviceChangeVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
884   return dissect_h248_INTEGER_0_99(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeVersion);
885 }
886
887
888 static int
889 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) {
890   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
891                                     NULL);
892
893   return offset;
894 }
895 static int dissect_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
896   return dissect_h248_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_h248_address);
897 }
898
899
900
901 static int
902 dissect_h248_INTEGER_0_65535(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
903   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
904
905   return offset;
906 }
907 static int dissect_portNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
908   return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_portNumber);
909 }
910 static int dissect_propGroupID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
911   return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_propGroupID);
912 }
913 static int dissect_id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
914   return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_id);
915 }
916 static int dissect_duration_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
917   return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_duration);
918 }
919 static int dissect_manufacturerCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
920   return dissect_h248_INTEGER_0_65535(TRUE, tvb, offset, pinfo, tree, hf_h248_manufacturerCode);
921 }
922
923 static ber_sequence IP4Address_sequence[] = {
924   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_address_impl },
925   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
926   { 0, 0, 0, NULL }
927 };
928
929 static int
930 dissect_h248_IP4Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
931   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
932                                 IP4Address_sequence, hf_index, ett_h248_IP4Address);
933
934   return offset;
935 }
936 static int dissect_ip4Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
937   return dissect_h248_IP4Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip4Address);
938 }
939
940
941 static int
942 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) {
943   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
944                                     NULL);
945
946   return offset;
947 }
948 static int dissect_address1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
949   return dissect_h248_OCTET_STRING_SIZE_16(TRUE, tvb, offset, pinfo, tree, hf_h248_address1);
950 }
951
952 static ber_sequence IP6Address_sequence[] = {
953   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_address1_impl },
954   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
955   { 0, 0, 0, NULL }
956 };
957
958 static int
959 dissect_h248_IP6Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
960   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
961                                 IP6Address_sequence, hf_index, ett_h248_IP6Address);
962
963   return offset;
964 }
965 static int dissect_ip6Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
966   return dissect_h248_IP6Address(TRUE, tvb, offset, pinfo, tree, hf_h248_ip6Address);
967 }
968
969
970 static int
971 dissect_h248_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
972   offset = dissect_ber_restricted_string(implicit_tag, 0,
973                                          pinfo, tree, tvb, offset, hf_index,
974                                          NULL);
975
976   return offset;
977 }
978 static int dissect_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
979   return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_name);
980 }
981 static int dissect_digitMapBody_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
982   return dissect_h248_IA5String(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapBody);
983 }
984
985 static ber_sequence DomainName_sequence[] = {
986   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_name_impl },
987   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
988   { 0, 0, 0, NULL }
989 };
990
991 static int
992 dissect_h248_DomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
993   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
994                                 DomainName_sequence, hf_index, ett_h248_DomainName);
995
996   return offset;
997 }
998 static int dissect_domainName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
999   return dissect_h248_DomainName(TRUE, tvb, offset, pinfo, tree, hf_h248_domainName);
1000 }
1001
1002
1003 static int
1004 dissect_h248_PathName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1005   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1006                                          pinfo, tree, tvb, offset, hf_index,
1007                                          NULL);
1008
1009   return offset;
1010 }
1011 static int dissect_deviceName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1012   return dissect_h248_PathName(TRUE, tvb, offset, pinfo, tree, hf_h248_deviceName);
1013 }
1014
1015 static int dissect_mtpAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1016   return dissect_h248_MtpAddress(TRUE, tvb, offset, pinfo, tree, hf_h248_mtpAddress);
1017 }
1018
1019
1020 static const value_string MId_vals[] = {
1021   {   0, "ip4Address" },
1022   {   1, "ip6Address" },
1023   {   2, "domainName" },
1024   {   3, "deviceName" },
1025   {   4, "mtpAddress" },
1026   { 0, NULL }
1027 };
1028
1029 static ber_choice MId_choice[] = {
1030   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
1031   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
1032   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
1033   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
1034   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mtpAddress_impl },
1035   { 0, 0, 0, 0, NULL }
1036 };
1037
1038 static int
1039 dissect_h248_MId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1040   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1041                               MId_choice, hf_index, ett_h248_MId);
1042
1043   return offset;
1044 }
1045 static int dissect_mId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1046   return dissect_h248_MId(FALSE, tvb, offset, pinfo, tree, hf_h248_mId);
1047 }
1048 static int dissect_serviceChangeMgcId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1049   return dissect_h248_MId(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMgcId);
1050 }
1051
1052
1053
1054 static int
1055 dissect_h248_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1056   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1057
1058   return offset;
1059 }
1060 static int dissect_errorCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1061   return dissect_h248_ErrorCode(TRUE, tvb, offset, pinfo, tree, hf_h248_errorCode);
1062 }
1063
1064
1065 static int
1066 dissect_h248_ErrorText(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1067   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1068                                          pinfo, tree, tvb, offset, hf_index,
1069                                          NULL);
1070
1071   return offset;
1072 }
1073 static int dissect_errorText_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1074   return dissect_h248_ErrorText(TRUE, tvb, offset, pinfo, tree, hf_h248_errorText);
1075 }
1076
1077 static ber_sequence ErrorDescriptor_sequence[] = {
1078   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorCode_impl },
1079   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorText_impl },
1080   { 0, 0, 0, NULL }
1081 };
1082
1083 static int
1084 dissect_h248_ErrorDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1085   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1086                                 ErrorDescriptor_sequence, hf_index, ett_h248_ErrorDescriptor);
1087
1088   return offset;
1089 }
1090 static int dissect_messageError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1091   return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_messageError);
1092 }
1093 static int dissect_transactionError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1094   return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionError);
1095 }
1096 static int dissect_errorDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1097   return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_errorDescriptor);
1098 }
1099 static int dissect_error_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1100   return dissect_h248_ErrorDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_error);
1101 }
1102
1103
1104
1105 static int
1106 dissect_h248_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1107   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1108
1109   return offset;
1110 }
1111 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1112   return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionId);
1113 }
1114 static int dissect_firstAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1115   return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_firstAck);
1116 }
1117 static int dissect_lastAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1118   return dissect_h248_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_h248_lastAck);
1119 }
1120
1121
1122
1123 static int
1124 dissect_h248_ContextID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1125   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1126
1127   return offset;
1128 }
1129 static int dissect_contextId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1130   return dissect_h248_ContextID(TRUE, tvb, offset, pinfo, tree, hf_h248_contextId);
1131 }
1132
1133
1134
1135 static int
1136 dissect_h248_INTEGER_0_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1137   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1138
1139   return offset;
1140 }
1141 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1142   return dissect_h248_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_h248_priority);
1143 }
1144
1145
1146 static int
1147 dissect_h248_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1148   offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
1149
1150   return offset;
1151 }
1152 static int dissect_emergency_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1153   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_emergency);
1154 }
1155 static int dissect_range_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1156   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_range);
1157 }
1158 static int dissect_sublist_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1159   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_sublist);
1160 }
1161 static int dissect_reserveValue1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1162   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveValue1);
1163 }
1164 static int dissect_reserveGroup1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1165   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveGroup1);
1166 }
1167 static int dissect_keepActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1168   return dissect_h248_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_h248_keepActive);
1169 }
1170
1171
1172 static int
1173 dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1174   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1175                                     NULL);
1176
1177   return offset;
1178 }
1179 static int dissect_wildcard_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1180   return dissect_h248_WildcardField(FALSE, tvb, offset, pinfo, tree, hf_h248_wildcard_item);
1181 }
1182
1183 static ber_sequence SEQUNCE_OF_WildcardField_sequence_of[1] = {
1184   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_wildcard_item },
1185 };
1186
1187 static int
1188 dissect_h248_SEQUNCE_OF_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1189   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1190                                    SEQUNCE_OF_WildcardField_sequence_of, hf_index, ett_h248_SEQUNCE_OF_WildcardField);
1191
1192   return offset;
1193 }
1194 static int dissect_wildcard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1195   return dissect_h248_SEQUNCE_OF_WildcardField(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcard);
1196 }
1197
1198
1199 static int
1200 dissect_h248_OCTET_STRING_SIZE_1_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1201   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1202                                     NULL);
1203
1204   return offset;
1205 }
1206 static int dissect_id1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1207   return dissect_h248_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_h248_id1);
1208 }
1209
1210 static ber_sequence TerminationID_sequence[] = {
1211   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_wildcard_impl },
1212   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_id1_impl },
1213   { 0, 0, 0, NULL }
1214 };
1215
1216 static int
1217 dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1218   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1219                                 TerminationID_sequence, hf_index, ett_h248_TerminationID);
1220
1221   return offset;
1222 }
1223 static int dissect_terminationFrom_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1224   return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationFrom);
1225 }
1226 static int dissect_terminationTo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1227   return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationTo);
1228 }
1229 static int dissect_terminationID1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1230   return dissect_h248_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationID1);
1231 }
1232 static int dissect_TerminationIDList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1233   return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationIDList_item);
1234 }
1235 static int dissect_termList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1236   return dissect_h248_TerminationID(FALSE, tvb, offset, pinfo, tree, hf_h248_termList_item);
1237 }
1238
1239
1240 static const value_string T_topologyDirection_vals[] = {
1241   {   0, "bothway" },
1242   {   1, "isolate" },
1243   {   2, "oneway" },
1244   { 0, NULL }
1245 };
1246
1247
1248 static int
1249 dissect_h248_T_topologyDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1250   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1251
1252   return offset;
1253 }
1254 static int dissect_topologyDirection_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1255   return dissect_h248_T_topologyDirection(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyDirection);
1256 }
1257
1258
1259
1260 static int
1261 dissect_h248_StreamID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1262   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1263
1264   return offset;
1265 }
1266 static int dissect_streamID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1267   return dissect_h248_StreamID(TRUE, tvb, offset, pinfo, tree, hf_h248_streamID);
1268 }
1269
1270 static ber_sequence TopologyRequest_sequence[] = {
1271   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationFrom_impl },
1272   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationTo_impl },
1273   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_topologyDirection_impl },
1274   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
1275   { 0, 0, 0, NULL }
1276 };
1277
1278 static int
1279 dissect_h248_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1280   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1281                                 TopologyRequest_sequence, hf_index, ett_h248_TopologyRequest);
1282
1283   return offset;
1284 }
1285 static int dissect_topologyReq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1286   return dissect_h248_TopologyRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_topologyReq_item);
1287 }
1288
1289 static ber_sequence SEQUNCE_OF_TopologyRequest_sequence_of[1] = {
1290   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_topologyReq_item },
1291 };
1292
1293 static int
1294 dissect_h248_SEQUNCE_OF_TopologyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1295   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1296                                    SEQUNCE_OF_TopologyRequest_sequence_of, hf_index, ett_h248_SEQUNCE_OF_TopologyRequest);
1297
1298   return offset;
1299 }
1300 static int dissect_topologyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1301   return dissect_h248_SEQUNCE_OF_TopologyRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_topologyReq);
1302 }
1303
1304 static ber_sequence ContextRequest_sequence[] = {
1305   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
1306   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_emergency_impl },
1307   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topologyReq_impl },
1308   { 0, 0, 0, NULL }
1309 };
1310
1311 static int
1312 dissect_h248_ContextRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1313   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1314                                 ContextRequest_sequence, hf_index, ett_h248_ContextRequest);
1315
1316   return offset;
1317 }
1318 static int dissect_contextRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1319   return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextRequest);
1320 }
1321 static int dissect_contextReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1322   return dissect_h248_ContextRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextReply);
1323 }
1324
1325
1326 static int
1327 dissect_h248_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1328   { proto_item *ti_tmp;
1329   ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
1330   proto_item_append_text(ti_tmp, ": NULL");
1331   }
1332
1333   return offset;
1334 }
1335 static int dissect_immAckRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1336   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_immAckRequired);
1337 }
1338 static int dissect_topology_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1339   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_topology);
1340 }
1341 static int dissect_emergency1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1342   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_emergency1);
1343 }
1344 static int dissect_priority1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1345   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_priority1);
1346 }
1347 static int dissect_optional_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1348   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_optional);
1349 }
1350 static int dissect_wildcardReturn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1351   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_wildcardReturn);
1352 }
1353 static int dissect_streamMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1354   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_streamMode);
1355 }
1356 static int dissect_reserveValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1357   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveValue);
1358 }
1359 static int dissect_reserveGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1360   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_reserveGroup);
1361 }
1362 static int dissect_eventBufferControl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1363   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferControl);
1364 }
1365 static int dissect_serviceState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1366   return dissect_h248_NULL(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceState);
1367 }
1368
1369 static ber_sequence ContextAttrAuditRequest_sequence[] = {
1370   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_topology_impl },
1371   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_emergency1_impl },
1372   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority1_impl },
1373   { 0, 0, 0, NULL }
1374 };
1375
1376 static int
1377 dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1378   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1379                                 ContextAttrAuditRequest_sequence, hf_index, ett_h248_ContextAttrAuditRequest);
1380
1381   return offset;
1382 }
1383 static int dissect_contextAttrAuditReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1384   return dissect_h248_ContextAttrAuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAttrAuditReq);
1385 }
1386
1387 static ber_sequence TerminationIDList_sequence_of[1] = {
1388   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TerminationIDList_item },
1389 };
1390
1391 static int
1392 dissect_h248_TerminationIDList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1393   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1394                                    TerminationIDList_sequence_of, hf_index, ett_h248_TerminationIDList);
1395
1396   return offset;
1397 }
1398 static int dissect_terminationID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1399   return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationID);
1400 }
1401 static int dissect_contextAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1402   return dissect_h248_TerminationIDList(TRUE, tvb, offset, pinfo, tree, hf_h248_contextAuditResult);
1403 }
1404
1405 static int dissect_name1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1406   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_name1);
1407 }
1408 static int dissect_pkgdName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1409   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_pkgdName);
1410 }
1411 static int dissect_eventName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1412   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventName);
1413 }
1414 static int dissect_signalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1415   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_signalName);
1416 }
1417 static int dissect_statName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1418   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_statName);
1419 }
1420 static int dissect_propertyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1421   return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyName);
1422 }
1423
1424 static int dissect_value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1425   return dissect_h248_PropertyID(FALSE, tvb, offset, pinfo, tree, hf_h248_value_item);
1426 }
1427
1428 static ber_sequence SEQUNCE_OF_PropertyID_sequence_of[1] = {
1429   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_value_item },
1430 };
1431
1432 static int
1433 dissect_h248_SEQUNCE_OF_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1434   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1435                                    SEQUNCE_OF_PropertyID_sequence_of, hf_index, ett_h248_SEQUNCE_OF_PropertyID);
1436
1437   return offset;
1438 }
1439 static int dissect_value1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1440   return dissect_h248_SEQUNCE_OF_PropertyID(TRUE, tvb, offset, pinfo, tree, hf_h248_value1);
1441 }
1442
1443
1444 static const value_string Relation_vals[] = {
1445   {   0, "greaterThan" },
1446   {   1, "smallerThan" },
1447   {   2, "unequalTo" },
1448   { 0, NULL }
1449 };
1450
1451
1452 static int
1453 dissect_h248_Relation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1454   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1455
1456   return offset;
1457 }
1458 static int dissect_relation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1459   return dissect_h248_Relation(TRUE, tvb, offset, pinfo, tree, hf_h248_relation);
1460 }
1461
1462
1463 static const value_string T_extraInfo1_vals[] = {
1464   {   0, "relation" },
1465   {   1, "range" },
1466   {   2, "sublist" },
1467   { 0, NULL }
1468 };
1469
1470 static ber_choice T_extraInfo1_choice[] = {
1471   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
1472   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
1473   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
1474   { 0, 0, 0, 0, NULL }
1475 };
1476
1477 static int
1478 dissect_h248_T_extraInfo1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1479   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1480                               T_extraInfo1_choice, hf_index, ett_h248_T_extraInfo1);
1481
1482   return offset;
1483 }
1484 static int dissect_extraInfo1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1485   return dissect_h248_T_extraInfo1(FALSE, tvb, offset, pinfo, tree, hf_h248_extraInfo1);
1486 }
1487
1488 static ber_sequence PropertyParm_sequence[] = {
1489   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyName_impl },
1490   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value1_impl },
1491   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_extraInfo1 },
1492   { 0, 0, 0, NULL }
1493 };
1494
1495 static int
1496 dissect_h248_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1497   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1498                                 PropertyParm_sequence, hf_index, ett_h248_PropertyParm);
1499
1500   return offset;
1501 }
1502 static int dissect_propertyParms_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1503   return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_propertyParms_item1);
1504 }
1505 static int dissect_PropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1506   return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_PropertyGroup_item);
1507 }
1508 static int dissect_mpl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1509   return dissect_h248_PropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_mpl_item);
1510 }
1511
1512 static ber_sequence SEQUNCE_OF_PropertyParm_sequence_of[1] = {
1513   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_propertyParms_item1 },
1514 };
1515
1516 static int
1517 dissect_h248_SEQUNCE_OF_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1518   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1519                                    SEQUNCE_OF_PropertyParm_sequence_of, hf_index, ett_h248_SEQUNCE_OF_PropertyParm);
1520
1521   return offset;
1522 }
1523 static int dissect_propertyParms1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1524   return dissect_h248_SEQUNCE_OF_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParms1);
1525 }
1526 static int dissect_mpl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1527   return dissect_h248_SEQUNCE_OF_PropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_mpl);
1528 }
1529
1530
1531 static const value_string EventBufferControl_vals[] = {
1532   {   0, "off" },
1533   {   1, "lockStep" },
1534   { 0, NULL }
1535 };
1536
1537
1538 static int
1539 dissect_h248_EventBufferControl(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1540   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1541
1542   return offset;
1543 }
1544 static int dissect_eventBufferControl1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1545   return dissect_h248_EventBufferControl(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferControl1);
1546 }
1547
1548
1549 static const value_string ServiceState_vals[] = {
1550   {   0, "test" },
1551   {   1, "outOfSvc" },
1552   {   2, "inSvc" },
1553   { 0, NULL }
1554 };
1555
1556
1557 static int
1558 dissect_h248_ServiceState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1559   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1560
1561   return offset;
1562 }
1563 static int dissect_serviceState1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1564   return dissect_h248_ServiceState(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceState1);
1565 }
1566
1567 static ber_sequence TerminationStateDescriptor_sequence[] = {
1568   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyParms1_impl },
1569   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventBufferControl1_impl },
1570   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceState1_impl },
1571   { 0, 0, 0, NULL }
1572 };
1573
1574 static int
1575 dissect_h248_TerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1576   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1577                                 TerminationStateDescriptor_sequence, hf_index, ett_h248_TerminationStateDescriptor);
1578
1579   return offset;
1580 }
1581 static int dissect_termStateDescr1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1582   return dissect_h248_TerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_termStateDescr1);
1583 }
1584
1585
1586 static const value_string StreamMode_vals[] = {
1587   {   0, "sendOnly" },
1588   {   1, "recvOnly" },
1589   {   2, "sendRecv" },
1590   {   3, "inactive" },
1591   {   4, "loopBack" },
1592   { 0, NULL }
1593 };
1594
1595
1596 static int
1597 dissect_h248_StreamMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1598   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1599
1600   return offset;
1601 }
1602 static int dissect_streamMode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1603   return dissect_h248_StreamMode(TRUE, tvb, offset, pinfo, tree, hf_h248_streamMode1);
1604 }
1605
1606 static ber_sequence LocalControlDescriptor_sequence[] = {
1607   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamMode1_impl },
1608   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveValue1_impl },
1609   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveGroup1_impl },
1610   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_propertyParms1_impl },
1611   { 0, 0, 0, NULL }
1612 };
1613
1614 static int
1615 dissect_h248_LocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1616   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1617                                 LocalControlDescriptor_sequence, hf_index, ett_h248_LocalControlDescriptor);
1618
1619   return offset;
1620 }
1621 static int dissect_localControlDescriptor1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1622   return dissect_h248_LocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localControlDescriptor1);
1623 }
1624
1625 static ber_sequence PropertyGroup_sequence_of[1] = {
1626   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PropertyGroup_item },
1627 };
1628
1629 static int
1630 dissect_h248_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1631   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1632                                    PropertyGroup_sequence_of, hf_index, ett_h248_PropertyGroup);
1633
1634   return offset;
1635 }
1636 static int dissect_propGrps_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1637   return dissect_h248_PropertyGroup(FALSE, tvb, offset, pinfo, tree, hf_h248_propGrps_item);
1638 }
1639
1640 static ber_sequence SEQUNCE_OF_PropertyGroup_sequence_of[1] = {
1641   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_propGrps_item },
1642 };
1643
1644 static int
1645 dissect_h248_SEQUNCE_OF_PropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1646   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1647                                    SEQUNCE_OF_PropertyGroup_sequence_of, hf_index, ett_h248_SEQUNCE_OF_PropertyGroup);
1648
1649   return offset;
1650 }
1651 static int dissect_propGrps1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1652   return dissect_h248_SEQUNCE_OF_PropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_propGrps1);
1653 }
1654
1655 static ber_sequence LocalRemoteDescriptor_sequence[] = {
1656   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propGrps1_impl },
1657   { 0, 0, 0, NULL }
1658 };
1659
1660 static int
1661 dissect_h248_LocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1662   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1663                                 LocalRemoteDescriptor_sequence, hf_index, ett_h248_LocalRemoteDescriptor);
1664
1665   return offset;
1666 }
1667 static int dissect_localDescriptor1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1668   return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localDescriptor1);
1669 }
1670 static int dissect_remoteDescriptor1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1671   return dissect_h248_LocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_remoteDescriptor1);
1672 }
1673
1674 static ber_sequence StreamParms_sequence[] = {
1675   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localControlDescriptor1_impl },
1676   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localDescriptor1_impl },
1677   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remoteDescriptor1_impl },
1678   { 0, 0, 0, NULL }
1679 };
1680
1681 static int
1682 dissect_h248_StreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1683   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1684                                 StreamParms_sequence, hf_index, ett_h248_StreamParms);
1685
1686   return offset;
1687 }
1688 static int dissect_oneStream1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1689   return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_oneStream1);
1690 }
1691 static int dissect_streamParms1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1692   return dissect_h248_StreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_streamParms1);
1693 }
1694
1695 static ber_sequence StreamDescriptor_sequence[] = {
1696   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
1697   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_streamParms1_impl },
1698   { 0, 0, 0, NULL }
1699 };
1700
1701 static int
1702 dissect_h248_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1703   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1704                                 StreamDescriptor_sequence, hf_index, ett_h248_StreamDescriptor);
1705
1706   return offset;
1707 }
1708 static int dissect_multiStream_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1709   return dissect_h248_StreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_multiStream_item1);
1710 }
1711
1712 static ber_sequence SEQUNCE_OF_StreamDescriptor_sequence_of[1] = {
1713   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_multiStream_item1 },
1714 };
1715
1716 static int
1717 dissect_h248_SEQUNCE_OF_StreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1718   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1719                                    SEQUNCE_OF_StreamDescriptor_sequence_of, hf_index, ett_h248_SEQUNCE_OF_StreamDescriptor);
1720
1721   return offset;
1722 }
1723 static int dissect_multiStream1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1724   return dissect_h248_SEQUNCE_OF_StreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_multiStream1);
1725 }
1726
1727
1728 static const value_string T_streams1_vals[] = {
1729   {   0, "oneStream" },
1730   {   1, "multiStream" },
1731   { 0, NULL }
1732 };
1733
1734 static ber_choice T_streams1_choice[] = {
1735   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_oneStream1_impl },
1736   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_multiStream1_impl },
1737   { 0, 0, 0, 0, NULL }
1738 };
1739
1740 static int
1741 dissect_h248_T_streams1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1742   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1743                               T_streams1_choice, hf_index, ett_h248_T_streams1);
1744
1745   return offset;
1746 }
1747 static int dissect_streams1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1748   return dissect_h248_T_streams1(FALSE, tvb, offset, pinfo, tree, hf_h248_streams1);
1749 }
1750
1751 static ber_sequence MediaDescriptor_sequence[] = {
1752   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_termStateDescr1_impl },
1753   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_streams1 },
1754   { 0, 0, 0, NULL }
1755 };
1756
1757 static int
1758 dissect_h248_MediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1759   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1760                                 MediaDescriptor_sequence, hf_index, ett_h248_MediaDescriptor);
1761
1762   return offset;
1763 }
1764 static int dissect_mediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1765   return dissect_h248_MediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_mediaDescriptor);
1766 }
1767
1768
1769 static const value_string ModemType_vals[] = {
1770   {   0, "v18" },
1771   {   1, "v22" },
1772   {   2, "v22bis" },
1773   {   3, "v32" },
1774   {   4, "v32bis" },
1775   {   5, "v34" },
1776   {   6, "v90" },
1777   {   7, "v91" },
1778   {   8, "synchISDN" },
1779   { 0, NULL }
1780 };
1781
1782
1783 static int
1784 dissect_h248_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1785   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1786
1787   return offset;
1788 }
1789 static int dissect_mtl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1790   return dissect_h248_ModemType(FALSE, tvb, offset, pinfo, tree, hf_h248_mtl_item);
1791 }
1792
1793 static ber_sequence SEQUNCE_OF_ModemType_sequence_of[1] = {
1794   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_mtl_item },
1795 };
1796
1797 static int
1798 dissect_h248_SEQUNCE_OF_ModemType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1799   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1800                                    SEQUNCE_OF_ModemType_sequence_of, hf_index, ett_h248_SEQUNCE_OF_ModemType);
1801
1802   return offset;
1803 }
1804 static int dissect_mtl_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1805   return dissect_h248_SEQUNCE_OF_ModemType(TRUE, tvb, offset, pinfo, tree, hf_h248_mtl);
1806 }
1807
1808
1809 static int
1810 dissect_h248_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1811   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
1812                                          hf_index, NULL);
1813
1814   return offset;
1815 }
1816 static int dissect_object_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1817   return dissect_h248_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_h248_object);
1818 }
1819
1820
1821
1822 static int
1823 dissect_h248_INTEGER_0_255(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1824   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1825
1826   return offset;
1827 }
1828 static int dissect_t35CountryCode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1829   return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode1);
1830 }
1831 static int dissect_t35CountryCode2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1832   return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35CountryCode2);
1833 }
1834 static int dissect_t35Extension_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1835   return dissect_h248_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_h248_t35Extension);
1836 }
1837
1838 static ber_sequence H221NonStandard_sequence[] = {
1839   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_t35CountryCode1_impl },
1840   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_t35CountryCode2_impl },
1841   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_t35Extension_impl },
1842   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_manufacturerCode_impl },
1843   { 0, 0, 0, NULL }
1844 };
1845
1846 static int
1847 dissect_h248_H221NonStandard(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1848   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1849                                 H221NonStandard_sequence, hf_index, ett_h248_H221NonStandard);
1850
1851   return offset;
1852 }
1853 static int dissect_h221NonStandard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1854   return dissect_h248_H221NonStandard(TRUE, tvb, offset, pinfo, tree, hf_h248_h221NonStandard);
1855 }
1856
1857
1858 static int
1859 dissect_h248_IA5String_SIZE_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1860   offset = dissect_ber_restricted_string(implicit_tag, 2,
1861                                          pinfo, tree, tvb, offset, hf_index,
1862                                          NULL);
1863
1864   return offset;
1865 }
1866 static int dissect_experimental_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1867   return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_experimental);
1868 }
1869 static int dissect_date_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1870   return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_date);
1871 }
1872 static int dissect_time_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1873   return dissect_h248_IA5String_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_h248_time);
1874 }
1875
1876
1877 static const value_string NonStandardIdentifier_vals[] = {
1878   {   0, "object" },
1879   {   1, "h221NonStandard" },
1880   {   2, "experimental" },
1881   { 0, NULL }
1882 };
1883
1884 static ber_choice NonStandardIdentifier_choice[] = {
1885   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_object_impl },
1886   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h221NonStandard_impl },
1887   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_experimental_impl },
1888   { 0, 0, 0, 0, NULL }
1889 };
1890
1891 static int
1892 dissect_h248_NonStandardIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1893   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1894                               NonStandardIdentifier_choice, hf_index, ett_h248_NonStandardIdentifier);
1895
1896   return offset;
1897 }
1898 static int dissect_nonStandardIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1899   return dissect_h248_NonStandardIdentifier(FALSE, tvb, offset, pinfo, tree, hf_h248_nonStandardIdentifier);
1900 }
1901
1902
1903 static int
1904 dissect_h248_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1905   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1906                                     NULL);
1907
1908   return offset;
1909 }
1910 static int dissect_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1911   return dissect_h248_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_h248_data);
1912 }
1913 static int dissect_Value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1914   return dissect_h248_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_h248_Value_item);
1915 }
1916
1917 static ber_sequence NonStandardData_sequence[] = {
1918   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_nonStandardIdentifier },
1919   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_data_impl },
1920   { 0, 0, 0, NULL }
1921 };
1922
1923 static int
1924 dissect_h248_NonStandardData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1925   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1926                                 NonStandardData_sequence, hf_index, ett_h248_NonStandardData);
1927
1928   return offset;
1929 }
1930 static int dissect_nonStandardData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1931   return dissect_h248_NonStandardData(TRUE, tvb, offset, pinfo, tree, hf_h248_nonStandardData);
1932 }
1933
1934 static ber_sequence ModemDescriptor_sequence[] = {
1935   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mtl_impl },
1936   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mpl_impl },
1937   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
1938   { 0, 0, 0, NULL }
1939 };
1940
1941 static int
1942 dissect_h248_ModemDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1943   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1944                                 ModemDescriptor_sequence, hf_index, ett_h248_ModemDescriptor);
1945
1946   return offset;
1947 }
1948 static int dissect_modemDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1949   return dissect_h248_ModemDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_modemDescriptor);
1950 }
1951
1952
1953 static const value_string MuxType_vals[] = {
1954   {   0, "h221" },
1955   {   1, "h223" },
1956   {   2, "h226" },
1957   {   3, "v76" },
1958   {   4, "nx64k" },
1959   { 0, NULL }
1960 };
1961
1962
1963 static int
1964 dissect_h248_MuxType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1965   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
1966
1967   return offset;
1968 }
1969 static int dissect_muxType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1970   return dissect_h248_MuxType(TRUE, tvb, offset, pinfo, tree, hf_h248_muxType);
1971 }
1972
1973 static ber_sequence SEQUNCE_OF_TerminationID_sequence_of[1] = {
1974   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_termList_item },
1975 };
1976
1977 static int
1978 dissect_h248_SEQUNCE_OF_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1979   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1980                                    SEQUNCE_OF_TerminationID_sequence_of, hf_index, ett_h248_SEQUNCE_OF_TerminationID);
1981
1982   return offset;
1983 }
1984 static int dissect_termList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1985   return dissect_h248_SEQUNCE_OF_TerminationID(TRUE, tvb, offset, pinfo, tree, hf_h248_termList);
1986 }
1987
1988 static ber_sequence MuxDescriptor_sequence[] = {
1989   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_muxType_impl },
1990   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_termList_impl },
1991   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
1992   { 0, 0, 0, NULL }
1993 };
1994
1995 static int
1996 dissect_h248_MuxDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
1997   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1998                                 MuxDescriptor_sequence, hf_index, ett_h248_MuxDescriptor);
1999
2000   return offset;
2001 }
2002 static int dissect_muxDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2003   return dissect_h248_MuxDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_muxDescriptor);
2004 }
2005
2006
2007
2008 static int
2009 dissect_h248_RequestID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2010   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
2011
2012   return offset;
2013 }
2014 static int dissect_requestID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2015   return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestID);
2016 }
2017 static int dissect_requestId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2018   return dissect_h248_RequestID(TRUE, tvb, offset, pinfo, tree, hf_h248_requestId);
2019 }
2020
2021
2022 static int
2023 dissect_h248_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2024   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2025                                     NULL);
2026
2027   return offset;
2028 }
2029 static int dissect_packageName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2030   return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_packageName);
2031 }
2032 static int dissect_eventParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2033   return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterName);
2034 }
2035 static int dissect_sigParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2036   return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterName);
2037 }
2038
2039
2040 static int
2041 dissect_h248_DigitMapName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2042   offset = dissect_h248_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2043
2044   return offset;
2045 }
2046 static int dissect_digitMapName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2047   return dissect_h248_DigitMapName(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapName);
2048 }
2049
2050 static ber_sequence DigitMapValue_sequence[] = {
2051   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_startTimer_impl },
2052   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_shortTimer_impl },
2053   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longTimer_impl },
2054   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_digitMapBody_impl },
2055   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_durationTimer_impl },
2056   { 0, 0, 0, NULL }
2057 };
2058
2059 static int
2060 dissect_h248_DigitMapValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2061   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2062                                 DigitMapValue_sequence, hf_index, ett_h248_DigitMapValue);
2063
2064   return offset;
2065 }
2066 static int dissect_digitMapValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2067   return dissect_h248_DigitMapValue(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapValue);
2068 }
2069
2070
2071 static const value_string EventDM_vals[] = {
2072   {   0, "digitMapName" },
2073   {   1, "digitMapValue" },
2074   { 0, NULL }
2075 };
2076
2077 static ber_choice EventDM_choice[] = {
2078   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
2079   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
2080   { 0, 0, 0, 0, NULL }
2081 };
2082
2083 static int
2084 dissect_h248_EventDM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2085   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2086                               EventDM_choice, hf_index, ett_h248_EventDM);
2087
2088   return offset;
2089 }
2090 static int dissect_eventDM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2091   return dissect_h248_EventDM(FALSE, tvb, offset, pinfo, tree, hf_h248_eventDM);
2092 }
2093
2094
2095 static int
2096 dissect_h248_SignalName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2097   offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2098
2099   return offset;
2100 }
2101 static int dissect_signalName1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2102   return dissect_h248_SignalName(TRUE, tvb, offset, pinfo, tree, hf_h248_signalName1);
2103 }
2104
2105
2106 static const value_string SignalType_vals[] = {
2107   {   0, "brief" },
2108   {   1, "onOff" },
2109   {   2, "timeOut" },
2110   { 0, NULL }
2111 };
2112
2113
2114 static int
2115 dissect_h248_SignalType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2116   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
2117
2118   return offset;
2119 }
2120 static int dissect_sigType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2121   return dissect_h248_SignalType(TRUE, tvb, offset, pinfo, tree, hf_h248_sigType);
2122 }
2123
2124 static asn_namedbit NotifyCompletion_bits[] = {
2125   {  0, &hf_h248_NotifyCompletion_onTimeOut, -1, -1, NULL, NULL },
2126   {  1, &hf_h248_NotifyCompletion_onInterruptByEvent, -1, -1, NULL, NULL },
2127   {  2, &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr, -1, -1, NULL, NULL },
2128   {  3, &hf_h248_NotifyCompletion_otherReason, -1, -1, NULL, NULL },
2129   { 0, NULL, 0, 0, NULL, NULL }
2130 };
2131
2132 static int
2133 dissect_h248_NotifyCompletion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2134   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2135                                  NotifyCompletion_bits, hf_index, ett_h248_NotifyCompletion,
2136                                  NULL);
2137
2138   return offset;
2139 }
2140 static int dissect_notifyCompletion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2141   return dissect_h248_NotifyCompletion(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyCompletion);
2142 }
2143
2144 static ber_sequence Value_sequence_of[1] = {
2145   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_Value_item },
2146 };
2147
2148 static int
2149 dissect_h248_Value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2150   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2151                                    Value_sequence_of, hf_index, ett_h248_Value);
2152
2153   return offset;
2154 }
2155 static int dissect_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2156   return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_value);
2157 }
2158 static int dissect_serviceChangeReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2159   return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReason);
2160 }
2161 static int dissect_statValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2162   return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_statValue);
2163 }
2164
2165
2166 static const value_string T_extraInfo2_vals[] = {
2167   {   0, "relation" },
2168   {   1, "range" },
2169   {   2, "sublist" },
2170   { 0, NULL }
2171 };
2172
2173 static ber_choice T_extraInfo2_choice[] = {
2174   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
2175   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
2176   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
2177   { 0, 0, 0, 0, NULL }
2178 };
2179
2180 static int
2181 dissect_h248_T_extraInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2182   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2183                               T_extraInfo2_choice, hf_index, ett_h248_T_extraInfo2);
2184
2185   return offset;
2186 }
2187 static int dissect_extraInfo2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2188   return dissect_h248_T_extraInfo2(FALSE, tvb, offset, pinfo, tree, hf_h248_extraInfo2);
2189 }
2190
2191 static ber_sequence SigParameter_sequence[] = {
2192   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sigParameterName_impl },
2193   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
2194   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_extraInfo2 },
2195   { 0, 0, 0, NULL }
2196 };
2197
2198 static int
2199 dissect_h248_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2200   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2201                                 SigParameter_sequence, hf_index, ett_h248_SigParameter);
2202
2203   return offset;
2204 }
2205 static int dissect_sigParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2206   return dissect_h248_SigParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_sigParList_item);
2207 }
2208
2209 static ber_sequence SEQUNCE_OF_SigParameter_sequence_of[1] = {
2210   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_sigParList_item },
2211 };
2212
2213 static int
2214 dissect_h248_SEQUNCE_OF_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2215   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2216                                    SEQUNCE_OF_SigParameter_sequence_of, hf_index, ett_h248_SEQUNCE_OF_SigParameter);
2217
2218   return offset;
2219 }
2220 static int dissect_sigParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2221   return dissect_h248_SEQUNCE_OF_SigParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParList);
2222 }
2223
2224 static ber_sequence Signal_sequence[] = {
2225   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signalName1_impl },
2226   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2227   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sigType_impl },
2228   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_duration_impl },
2229   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notifyCompletion_impl },
2230   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
2231   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_sigParList_impl },
2232   { 0, 0, 0, NULL }
2233 };
2234
2235 static int
2236 dissect_h248_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2237   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2238                                 Signal_sequence, hf_index, ett_h248_Signal);
2239
2240   return offset;
2241 }
2242 static int dissect_signal1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2243   return dissect_h248_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signal1);
2244 }
2245 static int dissect_signalList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2246   return dissect_h248_Signal(FALSE, tvb, offset, pinfo, tree, hf_h248_signalList_item);
2247 }
2248
2249 static ber_sequence SEQUNCE_OF_Signal_sequence_of[1] = {
2250   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signalList_item },
2251 };
2252
2253 static int
2254 dissect_h248_SEQUNCE_OF_Signal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2255   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2256                                    SEQUNCE_OF_Signal_sequence_of, hf_index, ett_h248_SEQUNCE_OF_Signal);
2257
2258   return offset;
2259 }
2260 static int dissect_signalList1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2261   return dissect_h248_SEQUNCE_OF_Signal(TRUE, tvb, offset, pinfo, tree, hf_h248_signalList1);
2262 }
2263
2264 static ber_sequence SeqSigList_sequence[] = {
2265   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
2266   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_signalList1_impl },
2267   { 0, 0, 0, NULL }
2268 };
2269
2270 static int
2271 dissect_h248_SeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2272   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2273                                 SeqSigList_sequence, hf_index, ett_h248_SeqSigList);
2274
2275   return offset;
2276 }
2277 static int dissect_seqSigList1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2278   return dissect_h248_SeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_seqSigList1);
2279 }
2280
2281
2282 static const value_string SignalRequest_vals[] = {
2283   {   0, "signal" },
2284   {   1, "seqSigList" },
2285   { 0, NULL }
2286 };
2287
2288 static ber_choice SignalRequest_choice[] = {
2289   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signal1_impl },
2290   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqSigList1_impl },
2291   { 0, 0, 0, 0, NULL }
2292 };
2293
2294 static int
2295 dissect_h248_SignalRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2296   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2297                               SignalRequest_choice, hf_index, ett_h248_SignalRequest);
2298
2299   return offset;
2300 }
2301 static int dissect_SignalsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2302   return dissect_h248_SignalRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_SignalsDescriptor_item);
2303 }
2304
2305 static ber_sequence SignalsDescriptor_sequence_of[1] = {
2306   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_SignalsDescriptor_item },
2307 };
2308
2309 static int
2310 dissect_h248_SignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2311   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2312                                    SignalsDescriptor_sequence_of, hf_index, ett_h248_SignalsDescriptor);
2313
2314   return offset;
2315 }
2316 static int dissect_signalsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2317   return dissect_h248_SignalsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_signalsDescriptor);
2318 }
2319
2320 static ber_sequence SecondRequestedActions_sequence[] = {
2321   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
2322   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_eventDM },
2323   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
2324   { 0, 0, 0, NULL }
2325 };
2326
2327 static int
2328 dissect_h248_SecondRequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2329   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2330                                 SecondRequestedActions_sequence, hf_index, ett_h248_SecondRequestedActions);
2331
2332   return offset;
2333 }
2334 static int dissect_eventAction1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2335   return dissect_h248_SecondRequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_eventAction1);
2336 }
2337
2338
2339 static const value_string T_extraInfo_vals[] = {
2340   {   0, "relation" },
2341   {   1, "range" },
2342   {   2, "sublist" },
2343   { 0, NULL }
2344 };
2345
2346 static ber_choice T_extraInfo_choice[] = {
2347   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relation_impl },
2348   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_range_impl },
2349   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_sublist_impl },
2350   { 0, 0, 0, 0, NULL }
2351 };
2352
2353 static int
2354 dissect_h248_T_extraInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2355   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2356                               T_extraInfo_choice, hf_index, ett_h248_T_extraInfo);
2357
2358   return offset;
2359 }
2360 static int dissect_extraInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2361   return dissect_h248_T_extraInfo(FALSE, tvb, offset, pinfo, tree, hf_h248_extraInfo);
2362 }
2363
2364 static ber_sequence EventParameter_sequence[] = {
2365   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventParameterName_impl },
2366   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
2367   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extraInfo },
2368   { 0, 0, 0, NULL }
2369 };
2370
2371 static int
2372 dissect_h248_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2373   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2374                                 EventParameter_sequence, hf_index, ett_h248_EventParameter);
2375
2376   return offset;
2377 }
2378 static int dissect_eventParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2379   return dissect_h248_EventParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_eventParList_item);
2380 }
2381 static int dissect_evParList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2382   return dissect_h248_EventParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_evParList_item);
2383 }
2384
2385 static ber_sequence SEQUNCE_OF_EventParameter_sequence_of[1] = {
2386   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventParList_item },
2387 };
2388
2389 static int
2390 dissect_h248_SEQUNCE_OF_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2391   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2392                                    SEQUNCE_OF_EventParameter_sequence_of, hf_index, ett_h248_SEQUNCE_OF_EventParameter);
2393
2394   return offset;
2395 }
2396 static int dissect_eventParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2397   return dissect_h248_SEQUNCE_OF_EventParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParList);
2398 }
2399 static int dissect_evParList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2400   return dissect_h248_SEQUNCE_OF_EventParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_evParList);
2401 }
2402
2403 static ber_sequence SecondRequestedEvent_sequence[] = {
2404   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
2405   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2406   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventAction1_impl },
2407   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
2408   { 0, 0, 0, NULL }
2409 };
2410
2411 static int
2412 dissect_h248_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2413   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2414                                 SecondRequestedEvent_sequence, hf_index, ett_h248_SecondRequestedEvent);
2415
2416   return offset;
2417 }
2418 static int dissect_eventList_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2419   return dissect_h248_SecondRequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_eventList_item1);
2420 }
2421
2422 static ber_sequence SEQUNCE_OF_SecondRequestedEvent_sequence_of[1] = {
2423   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventList_item1 },
2424 };
2425
2426 static int
2427 dissect_h248_SEQUNCE_OF_SecondRequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2428   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2429                                    SEQUNCE_OF_SecondRequestedEvent_sequence_of, hf_index, ett_h248_SEQUNCE_OF_SecondRequestedEvent);
2430
2431   return offset;
2432 }
2433 static int dissect_eventList1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2434   return dissect_h248_SEQUNCE_OF_SecondRequestedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_eventList1);
2435 }
2436
2437 static ber_sequence SecondEventsDescriptor_sequence[] = {
2438   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
2439   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventList1_impl },
2440   { 0, 0, 0, NULL }
2441 };
2442
2443 static int
2444 dissect_h248_SecondEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2445   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2446                                 SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor);
2447
2448   return offset;
2449 }
2450 static int dissect_secondEvent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2451   return dissect_h248_SecondEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_secondEvent);
2452 }
2453
2454 static ber_sequence RequestedActions_sequence[] = {
2455   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepActive_impl },
2456   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_eventDM },
2457   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondEvent_impl },
2458   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
2459   { 0, 0, 0, NULL }
2460 };
2461
2462 static int
2463 dissect_h248_RequestedActions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2464   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2465                                 RequestedActions_sequence, hf_index, ett_h248_RequestedActions);
2466
2467   return offset;
2468 }
2469 static int dissect_eventAction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2470   return dissect_h248_RequestedActions(TRUE, tvb, offset, pinfo, tree, hf_h248_eventAction);
2471 }
2472
2473 static ber_sequence RequestedEvent_sequence[] = {
2474   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
2475   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2476   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventAction_impl },
2477   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_evParList_impl },
2478   { 0, 0, 0, NULL }
2479 };
2480
2481 static int
2482 dissect_h248_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2483   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2484                                 RequestedEvent_sequence, hf_index, ett_h248_RequestedEvent);
2485
2486   return offset;
2487 }
2488 static int dissect_eventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2489   return dissect_h248_RequestedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_eventList_item);
2490 }
2491
2492 static ber_sequence SEQUNCE_OF_RequestedEvent_sequence_of[1] = {
2493   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_eventList_item },
2494 };
2495
2496 static int
2497 dissect_h248_SEQUNCE_OF_RequestedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2498   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2499                                    SEQUNCE_OF_RequestedEvent_sequence_of, hf_index, ett_h248_SEQUNCE_OF_RequestedEvent);
2500
2501   return offset;
2502 }
2503 static int dissect_eventList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2504   return dissect_h248_SEQUNCE_OF_RequestedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_eventList);
2505 }
2506
2507 static ber_sequence EventsDescriptor_sequence[] = {
2508   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
2509   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventList_impl },
2510   { 0, 0, 0, NULL }
2511 };
2512
2513 static int
2514 dissect_h248_EventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2515   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2516                                 EventsDescriptor_sequence, hf_index, ett_h248_EventsDescriptor);
2517
2518   return offset;
2519 }
2520 static int dissect_eventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2521   return dissect_h248_EventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventsDescriptor);
2522 }
2523
2524
2525 static int
2526 dissect_h248_EventName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2527   offset = dissect_h248_PkgdName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2528
2529   return offset;
2530 }
2531 static int dissect_eventName1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2532   return dissect_h248_EventName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventName1);
2533 }
2534
2535 static ber_sequence EventSpec_sequence[] = {
2536   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName1_impl },
2537   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2538   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
2539   { 0, 0, 0, NULL }
2540 };
2541
2542 static int
2543 dissect_h248_EventSpec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2544   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2545                                 EventSpec_sequence, hf_index, ett_h248_EventSpec);
2546
2547   return offset;
2548 }
2549 static int dissect_EventBufferDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2550   return dissect_h248_EventSpec(FALSE, tvb, offset, pinfo, tree, hf_h248_EventBufferDescriptor_item);
2551 }
2552
2553 static ber_sequence EventBufferDescriptor_sequence_of[1] = {
2554   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_EventBufferDescriptor_item },
2555 };
2556
2557 static int
2558 dissect_h248_EventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2559   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2560                                    EventBufferDescriptor_sequence_of, hf_index, ett_h248_EventBufferDescriptor);
2561
2562   return offset;
2563 }
2564 static int dissect_eventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2565   return dissect_h248_EventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_eventBufferDescriptor);
2566 }
2567
2568 static ber_sequence DigitMapDescriptor_sequence[] = {
2569   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
2570   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapValue_impl },
2571   { 0, 0, 0, NULL }
2572 };
2573
2574 static int
2575 dissect_h248_DigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2576   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2577                                 DigitMapDescriptor_sequence, hf_index, ett_h248_DigitMapDescriptor);
2578
2579   return offset;
2580 }
2581 static int dissect_digitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2582   return dissect_h248_DigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_digitMapDescriptor);
2583 }
2584
2585 static asn_namedbit T_auditToken_bits[] = {
2586   {  0, &hf_h248_T_auditToken_muxToken, -1, -1, NULL, NULL },
2587   {  1, &hf_h248_T_auditToken_modemToken, -1, -1, NULL, NULL },
2588   {  2, &hf_h248_T_auditToken_mediaToken, -1, -1, NULL, NULL },
2589   {  3, &hf_h248_T_auditToken_eventsToken, -1, -1, NULL, NULL },
2590   {  4, &hf_h248_T_auditToken_signalsToken, -1, -1, NULL, NULL },
2591   {  5, &hf_h248_T_auditToken_digitMapToken, -1, -1, NULL, NULL },
2592   {  6, &hf_h248_T_auditToken_statsToken, -1, -1, NULL, NULL },
2593   {  7, &hf_h248_T_auditToken_observedEventsToken, -1, -1, NULL, NULL },
2594   {  8, &hf_h248_T_auditToken_packagesToken, -1, -1, NULL, NULL },
2595   {  9, &hf_h248_T_auditToken_eventBufferToken, -1, -1, NULL, NULL },
2596   { 0, NULL, 0, 0, NULL, NULL }
2597 };
2598
2599 static int
2600 dissect_h248_T_auditToken(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2601   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2602                                  T_auditToken_bits, hf_index, ett_h248_T_auditToken,
2603                                  NULL);
2604
2605   return offset;
2606 }
2607 static int dissect_auditToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2608   return dissect_h248_T_auditToken(TRUE, tvb, offset, pinfo, tree, hf_h248_auditToken);
2609 }
2610
2611 static ber_sequence IndAudPropertyParm_sequence[] = {
2612   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_name1_impl },
2613   { 0, 0, 0, NULL }
2614 };
2615
2616 static int
2617 dissect_h248_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2618   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2619                                 IndAudPropertyParm_sequence, hf_index, ett_h248_IndAudPropertyParm);
2620
2621   return offset;
2622 }
2623 static int dissect_propertyParms_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2624   return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_propertyParms_item);
2625 }
2626 static int dissect_IndAudPropertyGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2627   return dissect_h248_IndAudPropertyParm(FALSE, tvb, offset, pinfo, tree, hf_h248_IndAudPropertyGroup_item);
2628 }
2629
2630 static ber_sequence SEQUNCE_OF_IndAudPropertyParm_sequence_of[1] = {
2631   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_propertyParms_item },
2632 };
2633
2634 static int
2635 dissect_h248_SEQUNCE_OF_IndAudPropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2636   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2637                                    SEQUNCE_OF_IndAudPropertyParm_sequence_of, hf_index, ett_h248_SEQUNCE_OF_IndAudPropertyParm);
2638
2639   return offset;
2640 }
2641 static int dissect_propertyParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2642   return dissect_h248_SEQUNCE_OF_IndAudPropertyParm(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyParms);
2643 }
2644
2645 static ber_sequence IndAudTerminationStateDescriptor_sequence[] = {
2646   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_propertyParms_impl },
2647   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventBufferControl_impl },
2648   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceState_impl },
2649   { 0, 0, 0, NULL }
2650 };
2651
2652 static int
2653 dissect_h248_IndAudTerminationStateDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2654   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2655                                 IndAudTerminationStateDescriptor_sequence, hf_index, ett_h248_IndAudTerminationStateDescriptor);
2656
2657   return offset;
2658 }
2659 static int dissect_termStateDescr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2660   return dissect_h248_IndAudTerminationStateDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_termStateDescr);
2661 }
2662
2663 static ber_sequence IndAudLocalControlDescriptor_sequence[] = {
2664   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamMode_impl },
2665   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveValue_impl },
2666   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reserveGroup_impl },
2667   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_propertyParms_impl },
2668   { 0, 0, 0, NULL }
2669 };
2670
2671 static int
2672 dissect_h248_IndAudLocalControlDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2673   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2674                                 IndAudLocalControlDescriptor_sequence, hf_index, ett_h248_IndAudLocalControlDescriptor);
2675
2676   return offset;
2677 }
2678 static int dissect_localControlDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2679   return dissect_h248_IndAudLocalControlDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localControlDescriptor);
2680 }
2681
2682 static ber_sequence IndAudPropertyGroup_sequence_of[1] = {
2683   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IndAudPropertyGroup_item },
2684 };
2685
2686 static int
2687 dissect_h248_IndAudPropertyGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2688   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2689                                    IndAudPropertyGroup_sequence_of, hf_index, ett_h248_IndAudPropertyGroup);
2690
2691   return offset;
2692 }
2693 static int dissect_propGrps_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2694   return dissect_h248_IndAudPropertyGroup(TRUE, tvb, offset, pinfo, tree, hf_h248_propGrps);
2695 }
2696
2697 static ber_sequence IndAudLocalRemoteDescriptor_sequence[] = {
2698   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_propGroupID_impl },
2699   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_propGrps_impl },
2700   { 0, 0, 0, NULL }
2701 };
2702
2703 static int
2704 dissect_h248_IndAudLocalRemoteDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2705   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2706                                 IndAudLocalRemoteDescriptor_sequence, hf_index, ett_h248_IndAudLocalRemoteDescriptor);
2707
2708   return offset;
2709 }
2710 static int dissect_localDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2711   return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_localDescriptor);
2712 }
2713 static int dissect_remoteDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2714   return dissect_h248_IndAudLocalRemoteDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_remoteDescriptor);
2715 }
2716
2717 static ber_sequence IndAudStreamParms_sequence[] = {
2718   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localControlDescriptor_impl },
2719   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_localDescriptor_impl },
2720   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remoteDescriptor_impl },
2721   { 0, 0, 0, NULL }
2722 };
2723
2724 static int
2725 dissect_h248_IndAudStreamParms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2726   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2727                                 IndAudStreamParms_sequence, hf_index, ett_h248_IndAudStreamParms);
2728
2729   return offset;
2730 }
2731 static int dissect_oneStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2732   return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_oneStream);
2733 }
2734 static int dissect_streamParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2735   return dissect_h248_IndAudStreamParms(TRUE, tvb, offset, pinfo, tree, hf_h248_streamParms);
2736 }
2737
2738 static ber_sequence IndAudStreamDescriptor_sequence[] = {
2739   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2740   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_streamParms_impl },
2741   { 0, 0, 0, NULL }
2742 };
2743
2744 static int
2745 dissect_h248_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2746   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2747                                 IndAudStreamDescriptor_sequence, hf_index, ett_h248_IndAudStreamDescriptor);
2748
2749   return offset;
2750 }
2751 static int dissect_multiStream_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2752   return dissect_h248_IndAudStreamDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_multiStream_item);
2753 }
2754
2755 static ber_sequence SEQUNCE_OF_IndAudStreamDescriptor_sequence_of[1] = {
2756   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_multiStream_item },
2757 };
2758
2759 static int
2760 dissect_h248_SEQUNCE_OF_IndAudStreamDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2761   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2762                                    SEQUNCE_OF_IndAudStreamDescriptor_sequence_of, hf_index, ett_h248_SEQUNCE_OF_IndAudStreamDescriptor);
2763
2764   return offset;
2765 }
2766 static int dissect_multiStream_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2767   return dissect_h248_SEQUNCE_OF_IndAudStreamDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_multiStream);
2768 }
2769
2770
2771 static const value_string T_streams_vals[] = {
2772   {   0, "oneStream" },
2773   {   1, "multiStream" },
2774   { 0, NULL }
2775 };
2776
2777 static ber_choice T_streams_choice[] = {
2778   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_oneStream_impl },
2779   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_multiStream_impl },
2780   { 0, 0, 0, 0, NULL }
2781 };
2782
2783 static int
2784 dissect_h248_T_streams(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2785   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2786                               T_streams_choice, hf_index, ett_h248_T_streams);
2787
2788   return offset;
2789 }
2790 static int dissect_streams(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2791   return dissect_h248_T_streams(FALSE, tvb, offset, pinfo, tree, hf_h248_streams);
2792 }
2793
2794 static ber_sequence IndAudMediaDescriptor_sequence[] = {
2795   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_termStateDescr_impl },
2796   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_streams },
2797   { 0, 0, 0, NULL }
2798 };
2799
2800 static int
2801 dissect_h248_IndAudMediaDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2802   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2803                                 IndAudMediaDescriptor_sequence, hf_index, ett_h248_IndAudMediaDescriptor);
2804
2805   return offset;
2806 }
2807 static int dissect_indaudmediaDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2808   return dissect_h248_IndAudMediaDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudmediaDescriptor);
2809 }
2810
2811 static ber_sequence IndAudEventsDescriptor_sequence[] = {
2812   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestID_impl },
2813   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_pkgdName_impl },
2814   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2815   { 0, 0, 0, NULL }
2816 };
2817
2818 static int
2819 dissect_h248_IndAudEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2820   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2821                                 IndAudEventsDescriptor_sequence, hf_index, ett_h248_IndAudEventsDescriptor);
2822
2823   return offset;
2824 }
2825 static int dissect_indaudeventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2826   return dissect_h248_IndAudEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventsDescriptor);
2827 }
2828
2829 static ber_sequence IndAudEventBufferDescriptor_sequence[] = {
2830   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName_impl },
2831   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2832   { 0, 0, 0, NULL }
2833 };
2834
2835 static int
2836 dissect_h248_IndAudEventBufferDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2837   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2838                                 IndAudEventBufferDescriptor_sequence, hf_index, ett_h248_IndAudEventBufferDescriptor);
2839
2840   return offset;
2841 }
2842 static int dissect_indaudeventBufferDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2843   return dissect_h248_IndAudEventBufferDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudeventBufferDescriptor);
2844 }
2845
2846 static ber_sequence IndAudSignal_sequence[] = {
2847   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signalName_impl },
2848   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
2849   { 0, 0, 0, NULL }
2850 };
2851
2852 static int
2853 dissect_h248_IndAudSignal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2854   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2855                                 IndAudSignal_sequence, hf_index, ett_h248_IndAudSignal);
2856
2857   return offset;
2858 }
2859 static int dissect_signal_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2860   return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_signal);
2861 }
2862 static int dissect_signalList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2863   return dissect_h248_IndAudSignal(TRUE, tvb, offset, pinfo, tree, hf_h248_signalList);
2864 }
2865
2866 static ber_sequence IndAudSeqSigList_sequence[] = {
2867   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_id_impl },
2868   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signalList_impl },
2869   { 0, 0, 0, NULL }
2870 };
2871
2872 static int
2873 dissect_h248_IndAudSeqSigList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2874   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2875                                 IndAudSeqSigList_sequence, hf_index, ett_h248_IndAudSeqSigList);
2876
2877   return offset;
2878 }
2879 static int dissect_seqSigList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2880   return dissect_h248_IndAudSeqSigList(TRUE, tvb, offset, pinfo, tree, hf_h248_seqSigList);
2881 }
2882
2883
2884 static const value_string IndAudSignalsDescriptor_vals[] = {
2885   {   0, "signal" },
2886   {   1, "seqSigList" },
2887   { 0, NULL }
2888 };
2889
2890 static ber_choice IndAudSignalsDescriptor_choice[] = {
2891   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_signal_impl },
2892   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_seqSigList_impl },
2893   { 0, 0, 0, 0, NULL }
2894 };
2895
2896 static int
2897 dissect_h248_IndAudSignalsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2898   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2899                               IndAudSignalsDescriptor_choice, hf_index, ett_h248_IndAudSignalsDescriptor);
2900
2901   return offset;
2902 }
2903 static int dissect_indaudsignalsDescriptor(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2904   return dissect_h248_IndAudSignalsDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_indaudsignalsDescriptor);
2905 }
2906
2907 static ber_sequence IndAudDigitMapDescriptor_sequence[] = {
2908   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_digitMapName_impl },
2909   { 0, 0, 0, NULL }
2910 };
2911
2912 static int
2913 dissect_h248_IndAudDigitMapDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2914   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2915                                 IndAudDigitMapDescriptor_sequence, hf_index, ett_h248_IndAudDigitMapDescriptor);
2916
2917   return offset;
2918 }
2919 static int dissect_indauddigitMapDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2920   return dissect_h248_IndAudDigitMapDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indauddigitMapDescriptor);
2921 }
2922
2923 static ber_sequence IndAudStatisticsDescriptor_sequence[] = {
2924   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl },
2925   { 0, 0, 0, NULL }
2926 };
2927
2928 static int
2929 dissect_h248_IndAudStatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2930   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2931                                 IndAudStatisticsDescriptor_sequence, hf_index, ett_h248_IndAudStatisticsDescriptor);
2932
2933   return offset;
2934 }
2935 static int dissect_indaudstatisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2936   return dissect_h248_IndAudStatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudstatisticsDescriptor);
2937 }
2938
2939 static ber_sequence IndAudPackagesDescriptor_sequence[] = {
2940   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
2941   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
2942   { 0, 0, 0, NULL }
2943 };
2944
2945 static int
2946 dissect_h248_IndAudPackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2947   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2948                                 IndAudPackagesDescriptor_sequence, hf_index, ett_h248_IndAudPackagesDescriptor);
2949
2950   return offset;
2951 }
2952 static int dissect_indaudpackagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2953   return dissect_h248_IndAudPackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_indaudpackagesDescriptor);
2954 }
2955
2956
2957 static const value_string IndAuditParameter_vals[] = {
2958   {   0, "indaudmediaDescriptor" },
2959   {   1, "indaudeventsDescriptor" },
2960   {   2, "indaudeventBufferDescriptor" },
2961   {   3, "indaudsignalsDescriptor" },
2962   {   4, "indauddigitMapDescriptor" },
2963   {   5, "indaudstatisticsDescriptor" },
2964   {   6, "indaudpackagesDescriptor" },
2965   { 0, NULL }
2966 };
2967
2968 static ber_choice IndAuditParameter_choice[] = {
2969   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_indaudmediaDescriptor_impl },
2970   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_indaudeventsDescriptor_impl },
2971   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_indaudeventBufferDescriptor_impl },
2972   {   3, BER_CLASS_CON, 3, 0, dissect_indaudsignalsDescriptor },
2973   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_indauddigitMapDescriptor_impl },
2974   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_indaudstatisticsDescriptor_impl },
2975   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_indaudpackagesDescriptor_impl },
2976   { 0, 0, 0, 0, NULL }
2977 };
2978
2979 static int
2980 dissect_h248_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2981   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2982                               IndAuditParameter_choice, hf_index, ett_h248_IndAuditParameter);
2983
2984   return offset;
2985 }
2986 static int dissect_auditPropertyToken_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2987   return dissect_h248_IndAuditParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken_item);
2988 }
2989
2990 static ber_sequence SEQUNCE_OF_IndAuditParameter_sequence_of[1] = {
2991   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_auditPropertyToken_item },
2992 };
2993
2994 static int
2995 dissect_h248_SEQUNCE_OF_IndAuditParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
2996   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2997                                    SEQUNCE_OF_IndAuditParameter_sequence_of, hf_index, ett_h248_SEQUNCE_OF_IndAuditParameter);
2998
2999   return offset;
3000 }
3001 static int dissect_auditPropertyToken_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3002   return dissect_h248_SEQUNCE_OF_IndAuditParameter(TRUE, tvb, offset, pinfo, tree, hf_h248_auditPropertyToken);
3003 }
3004
3005 static ber_sequence AuditDescriptor_sequence[] = {
3006   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditToken_impl },
3007   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditPropertyToken_impl },
3008   { 0, 0, 0, NULL }
3009 };
3010
3011 static int
3012 dissect_h248_AuditDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3013   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3014                                 AuditDescriptor_sequence, hf_index, ett_h248_AuditDescriptor);
3015
3016   return offset;
3017 }
3018 static int dissect_auditDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3019   return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_auditDescriptor);
3020 }
3021 static int dissect_emptyDescriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3022   return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_emptyDescriptors);
3023 }
3024 static int dissect_serviceChangeInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3025   return dissect_h248_AuditDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeInfo);
3026 }
3027
3028
3029 static const value_string AmmDescriptor_vals[] = {
3030   {   0, "mediaDescriptor" },
3031   {   1, "modemDescriptor" },
3032   {   2, "muxDescriptor" },
3033   {   3, "eventsDescriptor" },
3034   {   4, "eventBufferDescriptor" },
3035   {   5, "signalsDescriptor" },
3036   {   6, "digitMapDescriptor" },
3037   {   7, "auditDescriptor" },
3038   { 0, NULL }
3039 };
3040
3041 static ber_choice AmmDescriptor_choice[] = {
3042   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
3043   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
3044   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
3045   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
3046   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
3047   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
3048   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
3049   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
3050   { 0, 0, 0, 0, NULL }
3051 };
3052
3053 static int
3054 dissect_h248_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3055   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3056                               AmmDescriptor_choice, hf_index, ett_h248_AmmDescriptor);
3057
3058   return offset;
3059 }
3060 static int dissect_descriptors_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3061   return dissect_h248_AmmDescriptor(FALSE, tvb, offset, pinfo, tree, hf_h248_descriptors_item);
3062 }
3063
3064 static ber_sequence SEQUNCE_OF_AmmDescriptor_sequence_of[1] = {
3065   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_descriptors_item },
3066 };
3067
3068 static int
3069 dissect_h248_SEQUNCE_OF_AmmDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3070   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3071                                    SEQUNCE_OF_AmmDescriptor_sequence_of, hf_index, ett_h248_SEQUNCE_OF_AmmDescriptor);
3072
3073   return offset;
3074 }
3075 static int dissect_descriptors_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3076   return dissect_h248_SEQUNCE_OF_AmmDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_descriptors);
3077 }
3078
3079 static ber_sequence AmmRequest_sequence[] = {
3080   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3081   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_descriptors_impl },
3082   { 0, 0, 0, NULL }
3083 };
3084
3085 static int
3086 dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3087   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3088                                 AmmRequest_sequence, hf_index, ett_h248_AmmRequest);
3089
3090   return offset;
3091 }
3092 static int dissect_addReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3093   return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_addReq);
3094 }
3095 static int dissect_moveReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3096   return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReq);
3097 }
3098 static int dissect_modReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3099   return dissect_h248_AmmRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_modReq);
3100 }
3101
3102 static ber_sequence SubtractRequest_sequence[] = {
3103   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3104   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
3105   { 0, 0, 0, NULL }
3106 };
3107
3108 static int
3109 dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3110   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3111                                 SubtractRequest_sequence, hf_index, ett_h248_SubtractRequest);
3112
3113   return offset;
3114 }
3115 static int dissect_subtractReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3116   return dissect_h248_SubtractRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReq);
3117 }
3118
3119 static ber_sequence AuditRequest_sequence[] = {
3120   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID1_impl },
3121   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_auditDescriptor_impl },
3122   { 0, 0, 0, NULL }
3123 };
3124
3125 static int
3126 dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3127   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3128                                 AuditRequest_sequence, hf_index, ett_h248_AuditRequest);
3129
3130   return offset;
3131 }
3132 static int dissect_auditCapRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3133   return dissect_h248_AuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditCapRequest);
3134 }
3135 static int dissect_auditValueRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3136   return dissect_h248_AuditRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_auditValueRequest);
3137 }
3138
3139 static ber_sequence TimeNotation_sequence[] = {
3140   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_date_impl },
3141   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_time_impl },
3142   { 0, 0, 0, NULL }
3143 };
3144
3145 static int
3146 dissect_h248_TimeNotation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3147   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3148                                 TimeNotation_sequence, hf_index, ett_h248_TimeNotation);
3149
3150   return offset;
3151 }
3152 static int dissect_timeNotation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3153   return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeNotation);
3154 }
3155 static int dissect_timeStamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3156   return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timeStamp);
3157 }
3158 static int dissect_timestamp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3159   return dissect_h248_TimeNotation(TRUE, tvb, offset, pinfo, tree, hf_h248_timestamp);
3160 }
3161
3162 static ber_sequence ObservedEvent_sequence[] = {
3163   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventName1_impl },
3164   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_streamID_impl },
3165   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_eventParList_impl },
3166   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeNotation_impl },
3167   { 0, 0, 0, NULL }
3168 };
3169
3170 static int
3171 dissect_h248_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3172   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3173                                 ObservedEvent_sequence, hf_index, ett_h248_ObservedEvent);
3174
3175   return offset;
3176 }
3177 static int dissect_observedEventLst_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3178   return dissect_h248_ObservedEvent(FALSE, tvb, offset, pinfo, tree, hf_h248_observedEventLst_item);
3179 }
3180
3181 static ber_sequence SEQUNCE_OF_ObservedEvent_sequence_of[1] = {
3182   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_observedEventLst_item },
3183 };
3184
3185 static int
3186 dissect_h248_SEQUNCE_OF_ObservedEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3187   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3188                                    SEQUNCE_OF_ObservedEvent_sequence_of, hf_index, ett_h248_SEQUNCE_OF_ObservedEvent);
3189
3190   return offset;
3191 }
3192 static int dissect_observedEventLst_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3193   return dissect_h248_SEQUNCE_OF_ObservedEvent(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventLst);
3194 }
3195
3196 static ber_sequence ObservedEventsDescriptor_sequence[] = {
3197   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestId_impl },
3198   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventLst_impl },
3199   { 0, 0, 0, NULL }
3200 };
3201
3202 static int
3203 dissect_h248_ObservedEventsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3204   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3205                                 ObservedEventsDescriptor_sequence, hf_index, ett_h248_ObservedEventsDescriptor);
3206
3207   return offset;
3208 }
3209 static int dissect_observedEventsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3210   return dissect_h248_ObservedEventsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_observedEventsDescriptor);
3211 }
3212
3213 static ber_sequence NotifyRequest_sequence[] = {
3214   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3215   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
3216   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
3217   { 0, 0, 0, NULL }
3218 };
3219
3220 static int
3221 dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3222   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3223                                 NotifyRequest_sequence, hf_index, ett_h248_NotifyRequest);
3224
3225   return offset;
3226 }
3227 static int dissect_notifyReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3228   return dissect_h248_NotifyRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReq);
3229 }
3230
3231
3232 static const value_string ServiceChangeMethod_vals[] = {
3233   {   0, "failover" },
3234   {   1, "forced" },
3235   {   2, "graceful" },
3236   {   3, "restart" },
3237   {   4, "disconnected" },
3238   {   5, "handOff" },
3239   { 0, NULL }
3240 };
3241
3242
3243 static int
3244 dissect_h248_ServiceChangeMethod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3245   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
3246
3247   return offset;
3248 }
3249 static int dissect_serviceChangeMethod_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3250   return dissect_h248_ServiceChangeMethod(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeMethod);
3251 }
3252
3253
3254 static int
3255 dissect_h248_OCTET_STRING_SIZE_2_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3256   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3257                                     NULL);
3258
3259   return offset;
3260 }
3261 static int dissect_mtpAddress1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3262   return dissect_h248_OCTET_STRING_SIZE_2_4(TRUE, tvb, offset, pinfo, tree, hf_h248_mtpAddress1);
3263 }
3264
3265
3266 static const value_string ServiceChangeAddress_vals[] = {
3267   {   0, "portNumber" },
3268   {   1, "ip4Address" },
3269   {   2, "ip6Address" },
3270   {   3, "domainName" },
3271   {   4, "deviceName" },
3272   {   5, "mtpAddress" },
3273   { 0, NULL }
3274 };
3275
3276 static ber_choice ServiceChangeAddress_choice[] = {
3277   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_portNumber_impl },
3278   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ip4Address_impl },
3279   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ip6Address_impl },
3280   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_domainName_impl },
3281   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_deviceName_impl },
3282   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mtpAddress1_impl },
3283   { 0, 0, 0, 0, NULL }
3284 };
3285
3286 static int
3287 dissect_h248_ServiceChangeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3288   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3289                               ServiceChangeAddress_choice, hf_index, ett_h248_ServiceChangeAddress);
3290
3291   return offset;
3292 }
3293 static int dissect_serviceChangeAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3294   return dissect_h248_ServiceChangeAddress(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeAddress);
3295 }
3296
3297
3298 static int
3299 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) {
3300   offset = dissect_ber_restricted_string(implicit_tag, 0,
3301                                          pinfo, tree, tvb, offset, hf_index,
3302                                          NULL);
3303
3304   return offset;
3305 }
3306 static int dissect_profileName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3307   return dissect_h248_IA5String_SIZE_1_67(TRUE, tvb, offset, pinfo, tree, hf_h248_profileName);
3308 }
3309
3310 static ber_sequence ServiceChangeProfile_sequence[] = {
3311   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_profileName_impl },
3312   { 0, 0, 0, NULL }
3313 };
3314
3315 static int
3316 dissect_h248_ServiceChangeProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3317   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3318                                 ServiceChangeProfile_sequence, hf_index, ett_h248_ServiceChangeProfile);
3319
3320   return offset;
3321 }
3322 static int dissect_serviceChangeProfile_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3323   return dissect_h248_ServiceChangeProfile(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeProfile);
3324 }
3325
3326
3327
3328 static int
3329 dissect_h248_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3330   offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
3331
3332   return offset;
3333 }
3334 static int dissect_serviceChangeDelay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3335   return dissect_h248_INTEGER_0_4294967295(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeDelay);
3336 }
3337
3338 static ber_sequence ServiceChangeParm_sequence[] = {
3339   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_serviceChangeMethod_impl },
3340   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress },
3341   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
3342   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
3343   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceChangeReason_impl },
3344   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeDelay_impl },
3345   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId },
3346   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timeStamp_impl },
3347   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nonStandardData_impl },
3348   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeInfo_impl },
3349   { 0, 0, 0, NULL }
3350 };
3351
3352 static int
3353 dissect_h248_ServiceChangeParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3354   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3355                                 ServiceChangeParm_sequence, hf_index, ett_h248_ServiceChangeParm);
3356
3357   return offset;
3358 }
3359 static int dissect_serviceChangeParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3360   return dissect_h248_ServiceChangeParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeParms);
3361 }
3362
3363 static ber_sequence ServiceChangeRequest_sequence[] = {
3364   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3365   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeParms_impl },
3366   { 0, 0, 0, NULL }
3367 };
3368
3369 static int
3370 dissect_h248_ServiceChangeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3371   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3372                                 ServiceChangeRequest_sequence, hf_index, ett_h248_ServiceChangeRequest);
3373
3374   return offset;
3375 }
3376 static int dissect_serviceChangeReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3377   return dissect_h248_ServiceChangeRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReq);
3378 }
3379
3380
3381 static const value_string Command_vals[] = {
3382   {   0, "addReq" },
3383   {   1, "moveReq" },
3384   {   2, "modReq" },
3385   {   3, "subtractReq" },
3386   {   4, "auditCapRequest" },
3387   {   5, "auditValueRequest" },
3388   {   6, "notifyReq" },
3389   {   7, "serviceChangeReq" },
3390   { 0, NULL }
3391 };
3392
3393 static ber_choice Command_choice[] = {
3394   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReq_impl },
3395   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReq_impl },
3396   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReq_impl },
3397   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReq_impl },
3398   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_auditCapRequest_impl },
3399   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_auditValueRequest_impl },
3400   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReq_impl },
3401   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReq_impl },
3402   { 0, 0, 0, 0, NULL }
3403 };
3404
3405 static int
3406 dissect_h248_Command(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3407   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3408                               Command_choice, hf_index, ett_h248_Command);
3409
3410   return offset;
3411 }
3412 static int dissect_command(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3413   return dissect_h248_Command(FALSE, tvb, offset, pinfo, tree, hf_h248_command);
3414 }
3415
3416 static ber_sequence CommandRequest_sequence[] = {
3417   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_command },
3418   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_optional_impl },
3419   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wildcardReturn_impl },
3420   { 0, 0, 0, NULL }
3421 };
3422
3423 static int
3424 dissect_h248_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3425   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3426                                 CommandRequest_sequence, hf_index, ett_h248_CommandRequest);
3427
3428   return offset;
3429 }
3430 static int dissect_commandRequests_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3431   return dissect_h248_CommandRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_commandRequests_item);
3432 }
3433
3434 static ber_sequence SEQUNCE_OF_CommandRequest_sequence_of[1] = {
3435   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_commandRequests_item },
3436 };
3437
3438 static int
3439 dissect_h248_SEQUNCE_OF_CommandRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3440   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3441                                    SEQUNCE_OF_CommandRequest_sequence_of, hf_index, ett_h248_SEQUNCE_OF_CommandRequest);
3442
3443   return offset;
3444 }
3445 static int dissect_commandRequests_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3446   return dissect_h248_SEQUNCE_OF_CommandRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_commandRequests);
3447 }
3448
3449 static ber_sequence ActionRequest_sequence[] = {
3450   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
3451   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextRequest_impl },
3452   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextAttrAuditReq_impl },
3453   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandRequests_impl },
3454   { 0, 0, 0, NULL }
3455 };
3456
3457 static int
3458 dissect_h248_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3459   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3460                                 ActionRequest_sequence, hf_index, ett_h248_ActionRequest);
3461
3462   return offset;
3463 }
3464 static int dissect_actions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3465   return dissect_h248_ActionRequest(FALSE, tvb, offset, pinfo, tree, hf_h248_actions_item);
3466 }
3467
3468 static ber_sequence SEQUNCE_OF_ActionRequest_sequence_of[1] = {
3469   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actions_item },
3470 };
3471
3472 static int
3473 dissect_h248_SEQUNCE_OF_ActionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3474   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3475                                    SEQUNCE_OF_ActionRequest_sequence_of, hf_index, ett_h248_SEQUNCE_OF_ActionRequest);
3476
3477   return offset;
3478 }
3479 static int dissect_actions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3480   return dissect_h248_SEQUNCE_OF_ActionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_actions);
3481 }
3482
3483 static ber_sequence TransactionRequest_sequence[] = {
3484   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
3485   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actions_impl },
3486   { 0, 0, 0, NULL }
3487 };
3488
3489 static int
3490 dissect_h248_TransactionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3491   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3492                                 TransactionRequest_sequence, hf_index, ett_h248_TransactionRequest);
3493
3494   return offset;
3495 }
3496 static int dissect_transactionRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3497   return dissect_h248_TransactionRequest(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionRequest);
3498 }
3499
3500 static ber_sequence TransactionPending_sequence[] = {
3501   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
3502   { 0, 0, 0, NULL }
3503 };
3504
3505 static int
3506 dissect_h248_TransactionPending(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3507   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3508                                 TransactionPending_sequence, hf_index, ett_h248_TransactionPending);
3509
3510   return offset;
3511 }
3512 static int dissect_transactionPending_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3513   return dissect_h248_TransactionPending(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionPending);
3514 }
3515
3516 static ber_sequence StatisticsParameter_sequence[] = {
3517   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl },
3518   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_statValue_impl },
3519   { 0, 0, 0, NULL }
3520 };
3521
3522 static int
3523 dissect_h248_StatisticsParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3524   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3525                                 StatisticsParameter_sequence, hf_index, ett_h248_StatisticsParameter);
3526
3527   return offset;
3528 }
3529 static int dissect_StatisticsDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3530   return dissect_h248_StatisticsParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_StatisticsDescriptor_item);
3531 }
3532
3533 static ber_sequence StatisticsDescriptor_sequence_of[1] = {
3534   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_StatisticsDescriptor_item },
3535 };
3536
3537 static int
3538 dissect_h248_StatisticsDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3539   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3540                                    StatisticsDescriptor_sequence_of, hf_index, ett_h248_StatisticsDescriptor);
3541
3542   return offset;
3543 }
3544 static int dissect_statisticsDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3545   return dissect_h248_StatisticsDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_statisticsDescriptor);
3546 }
3547
3548 static ber_sequence PackagesItem_sequence[] = {
3549   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_packageName_impl },
3550   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_packageVersion_impl },
3551   { 0, 0, 0, NULL }
3552 };
3553
3554 static int
3555 dissect_h248_PackagesItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3556   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3557                                 PackagesItem_sequence, hf_index, ett_h248_PackagesItem);
3558
3559   return offset;
3560 }
3561 static int dissect_PackagesDescriptor_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3562   return dissect_h248_PackagesItem(FALSE, tvb, offset, pinfo, tree, hf_h248_PackagesDescriptor_item);
3563 }
3564
3565 static ber_sequence PackagesDescriptor_sequence_of[1] = {
3566   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PackagesDescriptor_item },
3567 };
3568
3569 static int
3570 dissect_h248_PackagesDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3571   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3572                                    PackagesDescriptor_sequence_of, hf_index, ett_h248_PackagesDescriptor);
3573
3574   return offset;
3575 }
3576 static int dissect_packagesDescriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3577   return dissect_h248_PackagesDescriptor(TRUE, tvb, offset, pinfo, tree, hf_h248_packagesDescriptor);
3578 }
3579
3580
3581 static const value_string AuditReturnParameter_vals[] = {
3582   {   0, "errorDescriptor" },
3583   {   1, "mediaDescriptor" },
3584   {   2, "modemDescriptor" },
3585   {   3, "muxDescriptor" },
3586   {   4, "eventsDescriptor" },
3587   {   5, "eventBufferDescriptor" },
3588   {   6, "signalsDescriptor" },
3589   {   7, "digitMapDescriptor" },
3590   {   8, "observedEventsDescriptor" },
3591   {   9, "statisticsDescriptor" },
3592   {  10, "packagesDescriptor" },
3593   {  11, "emptyDescriptors" },
3594   { 0, NULL }
3595 };
3596
3597 static ber_choice AuditReturnParameter_choice[] = {
3598   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
3599   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mediaDescriptor_impl },
3600   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modemDescriptor_impl },
3601   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_muxDescriptor_impl },
3602   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_eventsDescriptor_impl },
3603   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_eventBufferDescriptor_impl },
3604   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_signalsDescriptor_impl },
3605   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_digitMapDescriptor_impl },
3606   {   8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_observedEventsDescriptor_impl },
3607   {   9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_statisticsDescriptor_impl },
3608   {  10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_packagesDescriptor_impl },
3609   {  11, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_emptyDescriptors_impl },
3610   { 0, 0, 0, 0, NULL }
3611 };
3612
3613 static int
3614 dissect_h248_AuditReturnParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3615   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3616                               AuditReturnParameter_choice, hf_index, ett_h248_AuditReturnParameter);
3617
3618   return offset;
3619 }
3620 static int dissect_TerminationAudit_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3621   return dissect_h248_AuditReturnParameter(FALSE, tvb, offset, pinfo, tree, hf_h248_TerminationAudit_item);
3622 }
3623
3624 static ber_sequence TerminationAudit_sequence_of[1] = {
3625   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_TerminationAudit_item },
3626 };
3627
3628 static int
3629 dissect_h248_TerminationAudit(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3630   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3631                                    TerminationAudit_sequence_of, hf_index, ett_h248_TerminationAudit);
3632
3633   return offset;
3634 }
3635 static int dissect_terminationAudit_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3636   return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAudit);
3637 }
3638 static int dissect_terminationAuditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3639   return dissect_h248_TerminationAudit(TRUE, tvb, offset, pinfo, tree, hf_h248_terminationAuditResult);
3640 }
3641
3642 static ber_sequence AmmsReply_sequence[] = {
3643   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3644   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationAudit_impl },
3645   { 0, 0, 0, NULL }
3646 };
3647
3648 static int
3649 dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3650   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3651                                 AmmsReply_sequence, hf_index, ett_h248_AmmsReply);
3652
3653   return offset;
3654 }
3655 static int dissect_addReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3656   return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_addReply);
3657 }
3658 static int dissect_moveReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3659   return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_moveReply);
3660 }
3661 static int dissect_modReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3662   return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_modReply);
3663 }
3664 static int dissect_subtractReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3665   return dissect_h248_AmmsReply(TRUE, tvb, offset, pinfo, tree, hf_h248_subtractReply);
3666 }
3667
3668 static ber_sequence AuditResult_sequence[] = {
3669   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID1_impl },
3670   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_terminationAuditResult_impl },
3671   { 0, 0, 0, NULL }
3672 };
3673
3674 static int
3675 dissect_h248_AuditResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3676   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3677                                 AuditResult_sequence, hf_index, ett_h248_AuditResult);
3678
3679   return offset;
3680 }
3681 static int dissect_auditResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3682   return dissect_h248_AuditResult(TRUE, tvb, offset, pinfo, tree, hf_h248_auditResult);
3683 }
3684
3685
3686 static const value_string AuditReply_vals[] = {
3687   {   0, "contextAuditResult" },
3688   {   1, "error" },
3689   {   2, "auditResult" },
3690   { 0, NULL }
3691 };
3692
3693 static ber_choice AuditReply_choice[] = {
3694   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextAuditResult_impl },
3695   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_impl },
3696   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_auditResult_impl },
3697   { 0, 0, 0, 0, NULL }
3698 };
3699
3700 static int
3701 dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3702   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3703                               AuditReply_choice, hf_index, ett_h248_AuditReply);
3704
3705   return offset;
3706 }
3707 static int dissect_auditCapReply(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3708   return dissect_h248_AuditReply(FALSE, tvb, offset, pinfo, tree, hf_h248_auditCapReply);
3709 }
3710 static int dissect_auditValueReply(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3711   return dissect_h248_AuditReply(FALSE, tvb, offset, pinfo, tree, hf_h248_auditValueReply);
3712 }
3713
3714 static ber_sequence NotifyReply_sequence[] = {
3715   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3716   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
3717   { 0, 0, 0, NULL }
3718 };
3719
3720 static int
3721 dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3722   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3723                                 NotifyReply_sequence, hf_index, ett_h248_NotifyReply);
3724
3725   return offset;
3726 }
3727 static int dissect_notifyReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3728   return dissect_h248_NotifyReply(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyReply);
3729 }
3730
3731 static ber_sequence ServiceChangeResParm_sequence[] = {
3732   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeMgcId },
3733   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_serviceChangeAddress },
3734   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeVersion_impl },
3735   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceChangeProfile_impl },
3736   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_timestamp_impl },
3737   { 0, 0, 0, NULL }
3738 };
3739
3740 static int
3741 dissect_h248_ServiceChangeResParm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3742   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3743                                 ServiceChangeResParm_sequence, hf_index, ett_h248_ServiceChangeResParm);
3744
3745   return offset;
3746 }
3747 static int dissect_serviceChangeResParms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3748   return dissect_h248_ServiceChangeResParm(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResParms);
3749 }
3750
3751
3752 static const value_string ServiceChangeResult_vals[] = {
3753   {   0, "errorDescriptor" },
3754   {   1, "serviceChangeResParms" },
3755   { 0, NULL }
3756 };
3757
3758 static ber_choice ServiceChangeResult_choice[] = {
3759   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
3760   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceChangeResParms_impl },
3761   { 0, 0, 0, 0, NULL }
3762 };
3763
3764 static int
3765 dissect_h248_ServiceChangeResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3766   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3767                               ServiceChangeResult_choice, hf_index, ett_h248_ServiceChangeResult);
3768
3769   return offset;
3770 }
3771 static int dissect_serviceChangeResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3772   return dissect_h248_ServiceChangeResult(FALSE, tvb, offset, pinfo, tree, hf_h248_serviceChangeResult);
3773 }
3774
3775 static ber_sequence ServiceChangeReply_sequence[] = {
3776   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_terminationID_impl },
3777   { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_serviceChangeResult },
3778   { 0, 0, 0, NULL }
3779 };
3780
3781 static int
3782 dissect_h248_ServiceChangeReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3783   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3784                                 ServiceChangeReply_sequence, hf_index, ett_h248_ServiceChangeReply);
3785
3786   return offset;
3787 }
3788 static int dissect_serviceChangeReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3789   return dissect_h248_ServiceChangeReply(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReply);
3790 }
3791
3792
3793 static const value_string CommandReply_vals[] = {
3794   {   0, "addReply" },
3795   {   1, "moveReply" },
3796   {   2, "modReply" },
3797   {   3, "subtractReply" },
3798   {   4, "auditCapReply" },
3799   {   5, "auditValueReply" },
3800   {   6, "notifyReply" },
3801   {   7, "serviceChangeReply" },
3802   { 0, NULL }
3803 };
3804
3805 static ber_choice CommandReply_choice[] = {
3806   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_addReply_impl },
3807   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_moveReply_impl },
3808   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_modReply_impl },
3809   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_subtractReply_impl },
3810   {   4, BER_CLASS_CON, 4, 0, dissect_auditCapReply },
3811   {   5, BER_CLASS_CON, 5, 0, dissect_auditValueReply },
3812   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_notifyReply_impl },
3813   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_serviceChangeReply_impl },
3814   { 0, 0, 0, 0, NULL }
3815 };
3816
3817 static int
3818 dissect_h248_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3819   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3820                               CommandReply_choice, hf_index, ett_h248_CommandReply);
3821
3822   return offset;
3823 }
3824 static int dissect_commandReply_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3825   return dissect_h248_CommandReply(FALSE, tvb, offset, pinfo, tree, hf_h248_commandReply_item);
3826 }
3827
3828 static ber_sequence SEQUNCE_OF_CommandReply_sequence_of[1] = {
3829   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_commandReply_item },
3830 };
3831
3832 static int
3833 dissect_h248_SEQUNCE_OF_CommandReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3834   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3835                                    SEQUNCE_OF_CommandReply_sequence_of, hf_index, ett_h248_SEQUNCE_OF_CommandReply);
3836
3837   return offset;
3838 }
3839 static int dissect_commandReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3840   return dissect_h248_SEQUNCE_OF_CommandReply(TRUE, tvb, offset, pinfo, tree, hf_h248_commandReply);
3841 }
3842
3843 static ber_sequence ActionReply_sequence[] = {
3844   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_contextId_impl },
3845   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_errorDescriptor_impl },
3846   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_contextReply_impl },
3847   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_commandReply_impl },
3848   { 0, 0, 0, NULL }
3849 };
3850
3851 static int
3852 dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3853   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3854                                 ActionReply_sequence, hf_index, ett_h248_ActionReply);
3855
3856   return offset;
3857 }
3858 static int dissect_actionReplies_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3859   return dissect_h248_ActionReply(FALSE, tvb, offset, pinfo, tree, hf_h248_actionReplies_item);
3860 }
3861
3862 static ber_sequence SEQUNCE_OF_ActionReply_sequence_of[1] = {
3863   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actionReplies_item },
3864 };
3865
3866 static int
3867 dissect_h248_SEQUNCE_OF_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3868   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3869                                    SEQUNCE_OF_ActionReply_sequence_of, hf_index, ett_h248_SEQUNCE_OF_ActionReply);
3870
3871   return offset;
3872 }
3873 static int dissect_actionReplies_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3874   return dissect_h248_SEQUNCE_OF_ActionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_actionReplies);
3875 }
3876
3877
3878 static const value_string T_transactionResult_vals[] = {
3879   {   0, "transactionError" },
3880   {   1, "actionReplies" },
3881   { 0, NULL }
3882 };
3883
3884 static ber_choice T_transactionResult_choice[] = {
3885   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionError_impl },
3886   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actionReplies_impl },
3887   { 0, 0, 0, 0, NULL }
3888 };
3889
3890 static int
3891 dissect_h248_T_transactionResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3892   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3893                               T_transactionResult_choice, hf_index, ett_h248_T_transactionResult);
3894
3895   return offset;
3896 }
3897 static int dissect_transactionResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3898   return dissect_h248_T_transactionResult(FALSE, tvb, offset, pinfo, tree, hf_h248_transactionResult);
3899 }
3900
3901 static ber_sequence TransactionReply_sequence[] = {
3902   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
3903   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immAckRequired_impl },
3904   { BER_CLASS_CON, 2, 0, dissect_transactionResult },
3905   { 0, 0, 0, NULL }
3906 };
3907
3908 static int
3909 dissect_h248_TransactionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3910   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3911                                 TransactionReply_sequence, hf_index, ett_h248_TransactionReply);
3912
3913   return offset;
3914 }
3915 static int dissect_transactionReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3916   return dissect_h248_TransactionReply(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionReply);
3917 }
3918
3919 static ber_sequence TransactionAck_sequence[] = {
3920   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_firstAck_impl },
3921   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lastAck_impl },
3922   { 0, 0, 0, NULL }
3923 };
3924
3925 static int
3926 dissect_h248_TransactionAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3927   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3928                                 TransactionAck_sequence, hf_index, ett_h248_TransactionAck);
3929
3930   return offset;
3931 }
3932 static int dissect_TransactionResponseAck_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3933   return dissect_h248_TransactionAck(FALSE, tvb, offset, pinfo, tree, hf_h248_TransactionResponseAck_item);
3934 }
3935
3936 static ber_sequence TransactionResponseAck_sequence_of[1] = {
3937   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TransactionResponseAck_item },
3938 };
3939
3940 static int
3941 dissect_h248_TransactionResponseAck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3942   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3943                                    TransactionResponseAck_sequence_of, hf_index, ett_h248_TransactionResponseAck);
3944
3945   return offset;
3946 }
3947 static int dissect_transactionResponseAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3948   return dissect_h248_TransactionResponseAck(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionResponseAck);
3949 }
3950
3951
3952 static const value_string Transaction_vals[] = {
3953   {   0, "transactionRequest" },
3954   {   1, "transactionPending" },
3955   {   2, "transactionReply" },
3956   {   3, "transactionResponseAck" },
3957   { 0, NULL }
3958 };
3959
3960 static ber_choice Transaction_choice[] = {
3961   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_transactionRequest_impl },
3962   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactionPending_impl },
3963   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_transactionReply_impl },
3964   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_transactionResponseAck_impl },
3965   { 0, 0, 0, 0, NULL }
3966 };
3967
3968 static int
3969 dissect_h248_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3970   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3971                               Transaction_choice, hf_index, ett_h248_Transaction);
3972
3973   return offset;
3974 }
3975 static int dissect_transactions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3976   return dissect_h248_Transaction(FALSE, tvb, offset, pinfo, tree, hf_h248_transactions_item);
3977 }
3978
3979 static ber_sequence SEQUNCE_OF_Transaction_sequence_of[1] = {
3980   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_transactions_item },
3981 };
3982
3983 static int
3984 dissect_h248_SEQUNCE_OF_Transaction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
3985   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3986                                    SEQUNCE_OF_Transaction_sequence_of, hf_index, ett_h248_SEQUNCE_OF_Transaction);
3987
3988   return offset;
3989 }
3990 static int dissect_transactions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3991   return dissect_h248_SEQUNCE_OF_Transaction(TRUE, tvb, offset, pinfo, tree, hf_h248_transactions);
3992 }
3993
3994
3995 static const value_string T_messageBody_vals[] = {
3996   {   0, "messageError" },
3997   {   1, "transactions" },
3998   { 0, NULL }
3999 };
4000
4001 static ber_choice T_messageBody_choice[] = {
4002   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_messageError_impl },
4003   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transactions_impl },
4004   { 0, 0, 0, 0, NULL }
4005 };
4006
4007 static int
4008 dissect_h248_T_messageBody(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
4009   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4010                               T_messageBody_choice, hf_index, ett_h248_T_messageBody);
4011
4012   return offset;
4013 }
4014 static int dissect_messageBody(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4015   return dissect_h248_T_messageBody(FALSE, tvb, offset, pinfo, tree, hf_h248_messageBody);
4016 }
4017
4018 static ber_sequence Message_sequence[] = {
4019   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_version_impl },
4020   { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mId },
4021   { BER_CLASS_CON, 2, 0, dissect_messageBody },
4022   { 0, 0, 0, NULL }
4023 };
4024
4025 static int
4026 dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
4027   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4028                                 Message_sequence, hf_index, ett_h248_Message);
4029
4030   return offset;
4031 }
4032 static int dissect_mess_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4033   return dissect_h248_Message(TRUE, tvb, offset, pinfo, tree, hf_h248_mess);
4034 }
4035
4036 static ber_sequence MegacoMessage_sequence[] = {
4037   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_authHeader_impl },
4038   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mess_impl },
4039   { 0, 0, 0, NULL }
4040 };
4041
4042 static int
4043 dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
4044   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4045                                 MegacoMessage_sequence, hf_index, ett_h248_MegacoMessage);
4046
4047   return offset;
4048 }
4049
4050
4051 /*--- End of included file: packet-h248-fn.c ---*/
4052
4053
4054
4055 static void
4056 dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4057 {
4058   proto_item *h248_item;
4059   proto_tree *h248_tree = NULL;
4060
4061   /* Make entry in the Protocol column on summary display */
4062   if (check_col(pinfo->cinfo, COL_PROTOCOL))
4063     col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");
4064
4065   if (tree) {
4066     h248_item = proto_tree_add_item(tree, proto_h248, tvb, 0, -1, FALSE);
4067     h248_tree = proto_item_add_subtree(h248_item, ett_h248);
4068   }
4069
4070   dissect_h248_MegacoMessage(FALSE, tvb, 0, pinfo, h248_tree, -1);
4071   
4072 }
4073
4074
4075
4076 /*--- proto_register_h248 ----------------------------------------------*/
4077 void proto_register_h248(void) {
4078
4079   /* List of fields */
4080   static hf_register_info hf[] = {
4081     { &hf_h248_mtpaddress_ni, {
4082       "NI", "h248.mtpaddress.ni", FT_UINT32, BASE_DEC,
4083       NULL, 0, "NI", HFILL }},
4084     { &hf_h248_mtpaddress_pc, {
4085       "PC", "h248.mtpaddress.pc", FT_UINT32, BASE_DEC,
4086       NULL, 0, "PC", HFILL }},
4087     { &hf_h248_package_name, {
4088       "Package", "h248.package_name", FT_UINT32, BASE_HEX,
4089       VALS(package_name_vals), 0, "Package", HFILL }},
4090         { &hf_h248_package_bcp_BNCChar_PDU,
4091       { "BNCChar", "h248.package_bcp.BNCChar",
4092         FT_UINT32, BASE_DEC, VALS(BNCChar_vals), 0,
4093         "BNCChar", HFILL }},
4094         { &hf_h248_package_annex_C_TMR,
4095       { "TMR", "h248.package_annex_C.TMR",
4096         FT_UINT32, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0,
4097         "BNCChar", HFILL }},
4098         { &hf_h248_package_annex_C_USI,
4099       { "USI", "h248.package_annex_C.USI",
4100         FT_BYTES, BASE_HEX, NULL, 0,
4101         "User Service Information", HFILL }},
4102         { &hf_h248_package_annex_C_BIR,
4103       { "BIR", "h248.package_annex_C.BIR",
4104         FT_BYTES, BASE_HEX, NULL, 0,
4105         "BIR", HFILL }},
4106         { &hf_h248_package_annex_C_NSAP,
4107       { "NSAP", "h248.package_annex_C.NSAP",
4108         FT_BYTES, BASE_HEX, NULL, 0,
4109         "NSAP", HFILL }},
4110
4111
4112 /*--- Included file: packet-h248-hfarr.c ---*/
4113
4114     { &hf_h248_authHeader,
4115       { "authHeader", "h248.authHeader",
4116         FT_NONE, BASE_NONE, NULL, 0,
4117         "MegacoMessage/authHeader", HFILL }},
4118     { &hf_h248_mess,
4119       { "mess", "h248.mess",
4120         FT_NONE, BASE_NONE, NULL, 0,
4121         "MegacoMessage/mess", HFILL }},
4122     { &hf_h248_secParmIndex,
4123       { "secParmIndex", "h248.secParmIndex",
4124         FT_BYTES, BASE_HEX, NULL, 0,
4125         "AuthenticationHeader/secParmIndex", HFILL }},
4126     { &hf_h248_seqNum,
4127       { "seqNum", "h248.seqNum",
4128         FT_BYTES, BASE_HEX, NULL, 0,
4129         "AuthenticationHeader/seqNum", HFILL }},
4130     { &hf_h248_ad,
4131       { "ad", "h248.ad",
4132         FT_BYTES, BASE_HEX, NULL, 0,
4133         "AuthenticationHeader/ad", HFILL }},
4134     { &hf_h248_version,
4135       { "version", "h248.version",
4136         FT_UINT32, BASE_DEC, NULL, 0,
4137         "Message/version", HFILL }},
4138     { &hf_h248_mId,
4139       { "mId", "h248.mId",
4140         FT_UINT32, BASE_DEC, VALS(MId_vals), 0,
4141         "Message/mId", HFILL }},
4142     { &hf_h248_messageBody,
4143       { "messageBody", "h248.messageBody",
4144         FT_UINT32, BASE_DEC, VALS(T_messageBody_vals), 0,
4145         "Message/messageBody", HFILL }},
4146     { &hf_h248_messageError,
4147       { "messageError", "h248.messageError",
4148         FT_NONE, BASE_NONE, NULL, 0,
4149         "Message/messageBody/messageError", HFILL }},
4150     { &hf_h248_transactions,
4151       { "transactions", "h248.transactions",
4152         FT_UINT32, BASE_DEC, NULL, 0,
4153         "Message/messageBody/transactions", HFILL }},
4154     { &hf_h248_transactions_item,
4155       { "Item", "h248.transactions_item",
4156         FT_UINT32, BASE_DEC, VALS(Transaction_vals), 0,
4157         "Message/messageBody/transactions/_item", HFILL }},
4158     { &hf_h248_ip4Address,
4159       { "ip4Address", "h248.ip4Address",
4160         FT_NONE, BASE_NONE, NULL, 0,
4161         "", HFILL }},
4162     { &hf_h248_ip6Address,
4163       { "ip6Address", "h248.ip6Address",
4164         FT_NONE, BASE_NONE, NULL, 0,
4165         "", HFILL }},
4166     { &hf_h248_domainName,
4167       { "domainName", "h248.domainName",
4168         FT_NONE, BASE_NONE, NULL, 0,
4169         "", HFILL }},
4170     { &hf_h248_deviceName,
4171       { "deviceName", "h248.deviceName",
4172         FT_STRING, BASE_NONE, NULL, 0,
4173         "", HFILL }},
4174     { &hf_h248_mtpAddress,
4175       { "mtpAddress", "h248.mtpAddress",
4176         FT_BYTES, BASE_HEX, NULL, 0,
4177         "MId/mtpAddress", HFILL }},
4178     { &hf_h248_name,
4179       { "name", "h248.name",
4180         FT_STRING, BASE_NONE, NULL, 0,
4181         "DomainName/name", HFILL }},
4182     { &hf_h248_portNumber,
4183       { "portNumber", "h248.portNumber",
4184         FT_UINT32, BASE_DEC, NULL, 0,
4185         "", HFILL }},
4186     { &hf_h248_address,
4187       { "address", "h248.address",
4188         FT_BYTES, BASE_HEX, NULL, 0,
4189         "IP4Address/address", HFILL }},
4190     { &hf_h248_address1,
4191       { "address", "h248.address",
4192         FT_BYTES, BASE_HEX, NULL, 0,
4193         "IP6Address/address", HFILL }},
4194     { &hf_h248_transactionRequest,
4195       { "transactionRequest", "h248.transactionRequest",
4196         FT_NONE, BASE_NONE, NULL, 0,
4197         "Transaction/transactionRequest", HFILL }},
4198     { &hf_h248_transactionPending,
4199       { "transactionPending", "h248.transactionPending",
4200         FT_NONE, BASE_NONE, NULL, 0,
4201         "Transaction/transactionPending", HFILL }},
4202     { &hf_h248_transactionReply,
4203       { "transactionReply", "h248.transactionReply",
4204         FT_NONE, BASE_NONE, NULL, 0,
4205         "Transaction/transactionReply", HFILL }},
4206     { &hf_h248_transactionResponseAck,
4207       { "transactionResponseAck", "h248.transactionResponseAck",
4208         FT_UINT32, BASE_DEC, NULL, 0,
4209         "Transaction/transactionResponseAck", HFILL }},
4210     { &hf_h248_transactionId,
4211       { "transactionId", "h248.transactionId",
4212         FT_UINT32, BASE_DEC, NULL, 0,
4213         "", HFILL }},
4214     { &hf_h248_actions,
4215       { "actions", "h248.actions",
4216         FT_UINT32, BASE_DEC, NULL, 0,
4217         "TransactionRequest/actions", HFILL }},
4218     { &hf_h248_actions_item,
4219       { "Item", "h248.actions_item",
4220         FT_NONE, BASE_NONE, NULL, 0,
4221         "TransactionRequest/actions/_item", HFILL }},
4222     { &hf_h248_immAckRequired,
4223       { "immAckRequired", "h248.immAckRequired",
4224         FT_NONE, BASE_NONE, NULL, 0,
4225         "TransactionReply/immAckRequired", HFILL }},
4226     { &hf_h248_transactionResult,
4227       { "transactionResult", "h248.transactionResult",
4228         FT_UINT32, BASE_DEC, VALS(T_transactionResult_vals), 0,
4229         "TransactionReply/transactionResult", HFILL }},
4230     { &hf_h248_transactionError,
4231       { "transactionError", "h248.transactionError",
4232         FT_NONE, BASE_NONE, NULL, 0,
4233         "TransactionReply/transactionResult/transactionError", HFILL }},
4234     { &hf_h248_actionReplies,
4235       { "actionReplies", "h248.actionReplies",
4236         FT_UINT32, BASE_DEC, NULL, 0,
4237         "TransactionReply/transactionResult/actionReplies", HFILL }},
4238     { &hf_h248_actionReplies_item,
4239       { "Item", "h248.actionReplies_item",
4240         FT_NONE, BASE_NONE, NULL, 0,
4241         "TransactionReply/transactionResult/actionReplies/_item", HFILL }},
4242     { &hf_h248_TransactionResponseAck_item,
4243       { "Item", "h248.TransactionResponseAck_item",
4244         FT_NONE, BASE_NONE, NULL, 0,
4245         "TransactionResponseAck/_item", HFILL }},
4246     { &hf_h248_firstAck,
4247       { "firstAck", "h248.firstAck",
4248         FT_UINT32, BASE_DEC, NULL, 0,
4249         "TransactionAck/firstAck", HFILL }},
4250     { &hf_h248_lastAck,
4251       { "lastAck", "h248.lastAck",
4252         FT_UINT32, BASE_DEC, NULL, 0,
4253         "TransactionAck/lastAck", HFILL }},
4254     { &hf_h248_errorCode,
4255       { "errorCode", "h248.errorCode",
4256         FT_UINT32, BASE_DEC, NULL, 0,
4257         "ErrorDescriptor/errorCode", HFILL }},
4258     { &hf_h248_errorText,
4259       { "errorText", "h248.errorText",
4260         FT_STRING, BASE_NONE, NULL, 0,
4261         "ErrorDescriptor/errorText", HFILL }},
4262     { &hf_h248_contextId,
4263       { "contextId", "h248.contextId",
4264         FT_UINT32, BASE_DEC, NULL, 0,
4265         "", HFILL }},
4266     { &hf_h248_contextRequest,
4267       { "contextRequest", "h248.contextRequest",
4268         FT_NONE, BASE_NONE, NULL, 0,
4269         "ActionRequest/contextRequest", HFILL }},
4270     { &hf_h248_contextAttrAuditReq,
4271       { "contextAttrAuditReq", "h248.contextAttrAuditReq",
4272         FT_NONE, BASE_NONE, NULL, 0,
4273         "ActionRequest/contextAttrAuditReq", HFILL }},
4274     { &hf_h248_commandRequests,
4275       { "commandRequests", "h248.commandRequests",
4276         FT_UINT32, BASE_DEC, NULL, 0,
4277         "ActionRequest/commandRequests", HFILL }},
4278     { &hf_h248_commandRequests_item,
4279       { "Item", "h248.commandRequests_item",
4280         FT_NONE, BASE_NONE, NULL, 0,
4281         "ActionRequest/commandRequests/_item", HFILL }},
4282     { &hf_h248_errorDescriptor,
4283       { "errorDescriptor", "h248.errorDescriptor",
4284         FT_NONE, BASE_NONE, NULL, 0,
4285         "", HFILL }},
4286     { &hf_h248_contextReply,
4287       { "contextReply", "h248.contextReply",
4288         FT_NONE, BASE_NONE, NULL, 0,
4289         "ActionReply/contextReply", HFILL }},
4290     { &hf_h248_commandReply,
4291       { "commandReply", "h248.commandReply",
4292         FT_UINT32, BASE_DEC, NULL, 0,
4293         "ActionReply/commandReply", HFILL }},
4294     { &hf_h248_commandReply_item,
4295       { "Item", "h248.commandReply_item",
4296         FT_UINT32, BASE_DEC, VALS(CommandReply_vals), 0,
4297         "ActionReply/commandReply/_item", HFILL }},
4298     { &hf_h248_priority,
4299       { "priority", "h248.priority",
4300         FT_UINT32, BASE_DEC, NULL, 0,
4301         "ContextRequest/priority", HFILL }},
4302     { &hf_h248_emergency,
4303       { "emergency", "h248.emergency",
4304         FT_BOOLEAN, 8, NULL, 0,
4305         "ContextRequest/emergency", HFILL }},
4306     { &hf_h248_topologyReq,
4307       { "topologyReq", "h248.topologyReq",
4308         FT_UINT32, BASE_DEC, NULL, 0,
4309         "ContextRequest/topologyReq", HFILL }},
4310     { &hf_h248_topologyReq_item,
4311       { "Item", "h248.topologyReq_item",
4312         FT_NONE, BASE_NONE, NULL, 0,
4313         "ContextRequest/topologyReq/_item", HFILL }},
4314     { &hf_h248_topology,
4315       { "topology", "h248.topology",
4316         FT_NONE, BASE_NONE, NULL, 0,
4317         "ContextAttrAuditRequest/topology", HFILL }},
4318     { &hf_h248_emergency1,
4319       { "emergency", "h248.emergency",
4320         FT_NONE, BASE_NONE, NULL, 0,
4321         "ContextAttrAuditRequest/emergency", HFILL }},
4322     { &hf_h248_priority1,
4323       { "priority", "h248.priority",
4324         FT_NONE, BASE_NONE, NULL, 0,
4325         "ContextAttrAuditRequest/priority", HFILL }},
4326     { &hf_h248_command,
4327       { "command", "h248.command",
4328         FT_UINT32, BASE_DEC, VALS(Command_vals), 0,
4329         "CommandRequest/command", HFILL }},
4330     { &hf_h248_optional,
4331       { "optional", "h248.optional",
4332         FT_NONE, BASE_NONE, NULL, 0,
4333         "CommandRequest/optional", HFILL }},
4334     { &hf_h248_wildcardReturn,
4335       { "wildcardReturn", "h248.wildcardReturn",
4336         FT_NONE, BASE_NONE, NULL, 0,
4337         "CommandRequest/wildcardReturn", HFILL }},
4338     { &hf_h248_addReq,
4339       { "addReq", "h248.addReq",
4340         FT_NONE, BASE_NONE, NULL, 0,
4341         "Command/addReq", HFILL }},
4342     { &hf_h248_moveReq,
4343       { "moveReq", "h248.moveReq",
4344         FT_NONE, BASE_NONE, NULL, 0,
4345         "Command/moveReq", HFILL }},
4346     { &hf_h248_modReq,
4347       { "modReq", "h248.modReq",
4348         FT_NONE, BASE_NONE, NULL, 0,
4349         "Command/modReq", HFILL }},
4350     { &hf_h248_subtractReq,
4351       { "subtractReq", "h248.subtractReq",
4352         FT_NONE, BASE_NONE, NULL, 0,
4353         "Command/subtractReq", HFILL }},
4354     { &hf_h248_auditCapRequest,
4355       { "auditCapRequest", "h248.auditCapRequest",
4356         FT_NONE, BASE_NONE, NULL, 0,
4357         "Command/auditCapRequest", HFILL }},
4358     { &hf_h248_auditValueRequest,
4359       { "auditValueRequest", "h248.auditValueRequest",
4360         FT_NONE, BASE_NONE, NULL, 0,
4361         "Command/auditValueRequest", HFILL }},
4362     { &hf_h248_notifyReq,
4363       { "notifyReq", "h248.notifyReq",
4364         FT_NONE, BASE_NONE, NULL, 0,
4365         "Command/notifyReq", HFILL }},
4366     { &hf_h248_serviceChangeReq,
4367       { "serviceChangeReq", "h248.serviceChangeReq",
4368         FT_NONE, BASE_NONE, NULL, 0,
4369         "Command/serviceChangeReq", HFILL }},
4370     { &hf_h248_addReply,
4371       { "addReply", "h248.addReply",
4372         FT_NONE, BASE_NONE, NULL, 0,
4373         "CommandReply/addReply", HFILL }},
4374     { &hf_h248_moveReply,
4375       { "moveReply", "h248.moveReply",
4376         FT_NONE, BASE_NONE, NULL, 0,
4377         "CommandReply/moveReply", HFILL }},
4378     { &hf_h248_modReply,
4379       { "modReply", "h248.modReply",
4380         FT_NONE, BASE_NONE, NULL, 0,
4381         "CommandReply/modReply", HFILL }},
4382     { &hf_h248_subtractReply,
4383       { "subtractReply", "h248.subtractReply",
4384         FT_NONE, BASE_NONE, NULL, 0,
4385         "CommandReply/subtractReply", HFILL }},
4386     { &hf_h248_auditCapReply,
4387       { "auditCapReply", "h248.auditCapReply",
4388         FT_UINT32, BASE_DEC, VALS(AuditReply_vals), 0,
4389         "CommandReply/auditCapReply", HFILL }},
4390     { &hf_h248_auditValueReply,
4391       { "auditValueReply", "h248.auditValueReply",
4392         FT_UINT32, BASE_DEC, VALS(AuditReply_vals), 0,
4393         "CommandReply/auditValueReply", HFILL }},
4394     { &hf_h248_notifyReply,
4395       { "notifyReply", "h248.notifyReply",
4396         FT_NONE, BASE_NONE, NULL, 0,
4397         "CommandReply/notifyReply", HFILL }},
4398     { &hf_h248_serviceChangeReply,
4399       { "serviceChangeReply", "h248.serviceChangeReply",
4400         FT_NONE, BASE_NONE, NULL, 0,
4401         "CommandReply/serviceChangeReply", HFILL }},
4402     { &hf_h248_terminationFrom,
4403       { "terminationFrom", "h248.terminationFrom",
4404         FT_NONE, BASE_NONE, NULL, 0,
4405         "TopologyRequest/terminationFrom", HFILL }},
4406     { &hf_h248_terminationTo,
4407       { "terminationTo", "h248.terminationTo",
4408         FT_NONE, BASE_NONE, NULL, 0,
4409         "TopologyRequest/terminationTo", HFILL }},
4410     { &hf_h248_topologyDirection,
4411       { "topologyDirection", "h248.topologyDirection",
4412         FT_UINT32, BASE_DEC, VALS(T_topologyDirection_vals), 0,
4413         "TopologyRequest/topologyDirection", HFILL }},
4414     { &hf_h248_streamID,
4415       { "streamID", "h248.streamID",
4416         FT_UINT32, BASE_DEC, NULL, 0,
4417         "", HFILL }},
4418     { &hf_h248_terminationID,
4419       { "terminationID", "h248.terminationID",
4420         FT_UINT32, BASE_DEC, NULL, 0,
4421         "", HFILL }},
4422     { &hf_h248_descriptors,
4423       { "descriptors", "h248.descriptors",
4424         FT_UINT32, BASE_DEC, NULL, 0,
4425         "AmmRequest/descriptors", HFILL }},
4426     { &hf_h248_descriptors_item,
4427       { "Item", "h248.descriptors_item",
4428         FT_UINT32, BASE_DEC, VALS(AmmDescriptor_vals), 0,
4429         "AmmRequest/descriptors/_item", HFILL }},
4430     { &hf_h248_mediaDescriptor,
4431       { "mediaDescriptor", "h248.mediaDescriptor",
4432         FT_NONE, BASE_NONE, NULL, 0,
4433         "", HFILL }},
4434     { &hf_h248_modemDescriptor,
4435       { "modemDescriptor", "h248.modemDescriptor",
4436         FT_NONE, BASE_NONE, NULL, 0,
4437         "", HFILL }},
4438     { &hf_h248_muxDescriptor,
4439       { "muxDescriptor", "h248.muxDescriptor",
4440         FT_NONE, BASE_NONE, NULL, 0,
4441         "", HFILL }},
4442     { &hf_h248_eventsDescriptor,
4443       { "eventsDescriptor", "h248.eventsDescriptor",
4444         FT_NONE, BASE_NONE, NULL, 0,
4445         "", HFILL }},
4446     { &hf_h248_eventBufferDescriptor,
4447       { "eventBufferDescriptor", "h248.eventBufferDescriptor",
4448         FT_UINT32, BASE_DEC, NULL, 0,
4449         "", HFILL }},
4450     { &hf_h248_signalsDescriptor,
4451       { "signalsDescriptor", "h248.signalsDescriptor",
4452         FT_UINT32, BASE_DEC, NULL, 0,
4453         "", HFILL }},
4454     { &hf_h248_digitMapDescriptor,
4455       { "digitMapDescriptor", "h248.digitMapDescriptor",
4456         FT_NONE, BASE_NONE, NULL, 0,
4457         "", HFILL }},
4458     { &hf_h248_auditDescriptor,
4459       { "auditDescriptor", "h248.auditDescriptor",
4460         FT_NONE, BASE_NONE, NULL, 0,
4461         "", HFILL }},
4462     { &hf_h248_terminationAudit,
4463       { "terminationAudit", "h248.terminationAudit",
4464         FT_UINT32, BASE_DEC, NULL, 0,
4465         "AmmsReply/terminationAudit", HFILL }},
4466     { &hf_h248_terminationID1,
4467       { "terminationID", "h248.terminationID",
4468         FT_NONE, BASE_NONE, NULL, 0,
4469         "", HFILL }},
4470     { &hf_h248_contextAuditResult,
4471       { "contextAuditResult", "h248.contextAuditResult",
4472         FT_UINT32, BASE_DEC, NULL, 0,
4473         "AuditReply/contextAuditResult", HFILL }},
4474     { &hf_h248_error,
4475       { "error", "h248.error",
4476         FT_NONE, BASE_NONE, NULL, 0,
4477         "AuditReply/error", HFILL }},
4478     { &hf_h248_auditResult,
4479       { "auditResult", "h248.auditResult",
4480         FT_NONE, BASE_NONE, NULL, 0,
4481         "AuditReply/auditResult", HFILL }},
4482     { &hf_h248_terminationAuditResult,
4483       { "terminationAuditResult", "h248.terminationAuditResult",
4484         FT_UINT32, BASE_DEC, NULL, 0,
4485         "AuditResult/terminationAuditResult", HFILL }},
4486     { &hf_h248_TerminationAudit_item,
4487       { "Item", "h248.TerminationAudit_item",
4488         FT_UINT32, BASE_DEC, VALS(AuditReturnParameter_vals), 0,
4489         "TerminationAudit/_item", HFILL }},
4490     { &hf_h248_observedEventsDescriptor,
4491       { "observedEventsDescriptor", "h248.observedEventsDescriptor",
4492         FT_NONE, BASE_NONE, NULL, 0,
4493         "", HFILL }},
4494     { &hf_h248_statisticsDescriptor,
4495       { "statisticsDescriptor", "h248.statisticsDescriptor",
4496         FT_UINT32, BASE_DEC, NULL, 0,
4497         "AuditReturnParameter/statisticsDescriptor", HFILL }},
4498     { &hf_h248_packagesDescriptor,
4499       { "packagesDescriptor", "h248.packagesDescriptor",
4500         FT_UINT32, BASE_DEC, NULL, 0,
4501         "AuditReturnParameter/packagesDescriptor", HFILL }},
4502     { &hf_h248_emptyDescriptors,
4503       { "emptyDescriptors", "h248.emptyDescriptors",
4504         FT_NONE, BASE_NONE, NULL, 0,
4505         "AuditReturnParameter/emptyDescriptors", HFILL }},
4506     { &hf_h248_auditToken,
4507       { "auditToken", "h248.auditToken",
4508         FT_BYTES, BASE_HEX, NULL, 0,
4509         "AuditDescriptor/auditToken", HFILL }},
4510     { &hf_h248_auditPropertyToken,
4511       { "auditPropertyToken", "h248.auditPropertyToken",
4512         FT_UINT32, BASE_DEC, NULL, 0,
4513         "AuditDescriptor/auditPropertyToken", HFILL }},
4514     { &hf_h248_auditPropertyToken_item,
4515       { "Item", "h248.auditPropertyToken_item",
4516         FT_UINT32, BASE_DEC, VALS(IndAuditParameter_vals), 0,
4517         "AuditDescriptor/auditPropertyToken/_item", HFILL }},
4518     { &hf_h248_indaudmediaDescriptor,
4519       { "indaudmediaDescriptor", "h248.indaudmediaDescriptor",
4520         FT_NONE, BASE_NONE, NULL, 0,
4521         "IndAuditParameter/indaudmediaDescriptor", HFILL }},
4522     { &hf_h248_indaudeventsDescriptor,
4523       { "indaudeventsDescriptor", "h248.indaudeventsDescriptor",
4524         FT_NONE, BASE_NONE, NULL, 0,
4525         "IndAuditParameter/indaudeventsDescriptor", HFILL }},
4526     { &hf_h248_indaudeventBufferDescriptor,
4527       { "indaudeventBufferDescriptor", "h248.indaudeventBufferDescriptor",
4528         FT_NONE, BASE_NONE, NULL, 0,
4529         "IndAuditParameter/indaudeventBufferDescriptor", HFILL }},
4530     { &hf_h248_indaudsignalsDescriptor,
4531       { "indaudsignalsDescriptor", "h248.indaudsignalsDescriptor",
4532         FT_UINT32, BASE_DEC, VALS(IndAudSignalsDescriptor_vals), 0,
4533         "IndAuditParameter/indaudsignalsDescriptor", HFILL }},
4534     { &hf_h248_indauddigitMapDescriptor,
4535       { "indauddigitMapDescriptor", "h248.indauddigitMapDescriptor",
4536         FT_NONE, BASE_NONE, NULL, 0,
4537         "IndAuditParameter/indauddigitMapDescriptor", HFILL }},
4538     { &hf_h248_indaudstatisticsDescriptor,
4539       { "indaudstatisticsDescriptor", "h248.indaudstatisticsDescriptor",
4540         FT_NONE, BASE_NONE, NULL, 0,
4541         "IndAuditParameter/indaudstatisticsDescriptor", HFILL }},
4542     { &hf_h248_indaudpackagesDescriptor,
4543       { "indaudpackagesDescriptor", "h248.indaudpackagesDescriptor",
4544         FT_NONE, BASE_NONE, NULL, 0,
4545         "IndAuditParameter/indaudpackagesDescriptor", HFILL }},
4546     { &hf_h248_termStateDescr,
4547       { "termStateDescr", "h248.termStateDescr",
4548         FT_NONE, BASE_NONE, NULL, 0,
4549         "IndAudMediaDescriptor/termStateDescr", HFILL }},
4550     { &hf_h248_streams,
4551       { "streams", "h248.streams",
4552         FT_UINT32, BASE_DEC, VALS(T_streams_vals), 0,
4553         "IndAudMediaDescriptor/streams", HFILL }},
4554     { &hf_h248_oneStream,
4555       { "oneStream", "h248.oneStream",
4556         FT_NONE, BASE_NONE, NULL, 0,
4557         "IndAudMediaDescriptor/streams/oneStream", HFILL }},
4558     { &hf_h248_multiStream,
4559       { "multiStream", "h248.multiStream",
4560         FT_UINT32, BASE_DEC, NULL, 0,
4561         "IndAudMediaDescriptor/streams/multiStream", HFILL }},
4562     { &hf_h248_multiStream_item,
4563       { "Item", "h248.multiStream_item",
4564         FT_NONE, BASE_NONE, NULL, 0,
4565         "IndAudMediaDescriptor/streams/multiStream/_item", HFILL }},
4566     { &hf_h248_streamParms,
4567       { "streamParms", "h248.streamParms",
4568         FT_NONE, BASE_NONE, NULL, 0,
4569         "IndAudStreamDescriptor/streamParms", HFILL }},
4570     { &hf_h248_localControlDescriptor,
4571       { "localControlDescriptor", "h248.localControlDescriptor",
4572         FT_NONE, BASE_NONE, NULL, 0,
4573         "IndAudStreamParms/localControlDescriptor", HFILL }},
4574     { &hf_h248_localDescriptor,
4575       { "localDescriptor", "h248.localDescriptor",
4576         FT_NONE, BASE_NONE, NULL, 0,
4577         "IndAudStreamParms/localDescriptor", HFILL }},
4578     { &hf_h248_remoteDescriptor,
4579       { "remoteDescriptor", "h248.remoteDescriptor",
4580         FT_NONE, BASE_NONE, NULL, 0,
4581         "IndAudStreamParms/remoteDescriptor", HFILL }},
4582     { &hf_h248_streamMode,
4583       { "streamMode", "h248.streamMode",
4584         FT_NONE, BASE_NONE, NULL, 0,
4585         "IndAudLocalControlDescriptor/streamMode", HFILL }},
4586     { &hf_h248_reserveValue,
4587       { "reserveValue", "h248.reserveValue",
4588         FT_NONE, BASE_NONE, NULL, 0,
4589         "IndAudLocalControlDescriptor/reserveValue", HFILL }},
4590     { &hf_h248_reserveGroup,
4591       { "reserveGroup", "h248.reserveGroup",
4592         FT_NONE, BASE_NONE, NULL, 0,
4593         "IndAudLocalControlDescriptor/reserveGroup", HFILL }},
4594     { &hf_h248_propertyParms,
4595       { "propertyParms", "h248.propertyParms",
4596         FT_UINT32, BASE_DEC, NULL, 0,
4597         "", HFILL }},
4598     { &hf_h248_propertyParms_item,
4599       { "Item", "h248.propertyParms_item",
4600         FT_NONE, BASE_NONE, NULL, 0,
4601         "", HFILL }},
4602     { &hf_h248_name1,
4603       { "name", "h248.name",
4604         FT_BYTES, BASE_HEX, NULL, 0,
4605         "IndAudPropertyParm/name", HFILL }},
4606     { &hf_h248_propGroupID,
4607       { "propGroupID", "h248.propGroupID",
4608         FT_UINT32, BASE_DEC, NULL, 0,
4609         "IndAudLocalRemoteDescriptor/propGroupID", HFILL }},
4610     { &hf_h248_propGrps,
4611       { "propGrps", "h248.propGrps",
4612         FT_UINT32, BASE_DEC, NULL, 0,
4613         "IndAudLocalRemoteDescriptor/propGrps", HFILL }},
4614     { &hf_h248_IndAudPropertyGroup_item,
4615       { "Item", "h248.IndAudPropertyGroup_item",
4616         FT_NONE, BASE_NONE, NULL, 0,
4617         "IndAudPropertyGroup/_item", HFILL }},
4618     { &hf_h248_eventBufferControl,
4619       { "eventBufferControl", "h248.eventBufferControl",
4620         FT_NONE, BASE_NONE, NULL, 0,
4621         "IndAudTerminationStateDescriptor/eventBufferControl", HFILL }},
4622     { &hf_h248_serviceState,
4623       { "serviceState", "h248.serviceState",
4624         FT_NONE, BASE_NONE, NULL, 0,
4625         "IndAudTerminationStateDescriptor/serviceState", HFILL }},
4626     { &hf_h248_requestID,
4627       { "requestID", "h248.requestID",
4628         FT_UINT32, BASE_DEC, NULL, 0,
4629         "", HFILL }},
4630     { &hf_h248_pkgdName,
4631       { "pkgdName", "h248.pkgdName",
4632         FT_BYTES, BASE_HEX, NULL, 0,
4633         "", HFILL }},
4634     { &hf_h248_eventName,
4635       { "eventName", "h248.eventName",
4636         FT_BYTES, BASE_HEX, NULL, 0,
4637         "IndAudEventBufferDescriptor/eventName", HFILL }},
4638     { &hf_h248_signal,
4639       { "signal", "h248.signal",
4640         FT_NONE, BASE_NONE, NULL, 0,
4641         "IndAudSignalsDescriptor/signal", HFILL }},
4642     { &hf_h248_seqSigList,
4643       { "seqSigList", "h248.seqSigList",
4644         FT_NONE, BASE_NONE, NULL, 0,
4645         "IndAudSignalsDescriptor/seqSigList", HFILL }},
4646     { &hf_h248_id,
4647       { "id", "h248.id",
4648         FT_UINT32, BASE_DEC, NULL, 0,
4649         "", HFILL }},
4650     { &hf_h248_signalList,
4651       { "signalList", "h248.signalList",
4652         FT_NONE, BASE_NONE, NULL, 0,
4653         "IndAudSeqSigList/signalList", HFILL }},
4654     { &hf_h248_signalName,
4655       { "signalName", "h248.signalName",
4656         FT_BYTES, BASE_HEX, NULL, 0,
4657         "IndAudSignal/signalName", HFILL }},
4658     { &hf_h248_digitMapName,
4659       { "digitMapName", "h248.digitMapName",
4660         FT_BYTES, BASE_HEX, NULL, 0,
4661         "", HFILL }},
4662     { &hf_h248_statName,
4663       { "statName", "h248.statName",
4664         FT_BYTES, BASE_HEX, NULL, 0,
4665         "", HFILL }},
4666     { &hf_h248_packageName,
4667       { "packageName", "h248.packageName",
4668         FT_BYTES, BASE_HEX, NULL, 0,
4669         "", HFILL }},
4670     { &hf_h248_packageVersion,
4671       { "packageVersion", "h248.packageVersion",
4672         FT_UINT32, BASE_DEC, NULL, 0,
4673         "", HFILL }},
4674     { &hf_h248_requestId,
4675       { "requestId", "h248.requestId",
4676         FT_UINT32, BASE_DEC, NULL, 0,
4677         "ObservedEventsDescriptor/requestId", HFILL }},
4678     { &hf_h248_observedEventLst,
4679       { "observedEventLst", "h248.observedEventLst",
4680         FT_UINT32, BASE_DEC, NULL, 0,
4681         "ObservedEventsDescriptor/observedEventLst", HFILL }},
4682     { &hf_h248_observedEventLst_item,
4683       { "Item", "h248.observedEventLst_item",
4684         FT_NONE, BASE_NONE, NULL, 0,
4685         "ObservedEventsDescriptor/observedEventLst/_item", HFILL }},
4686     { &hf_h248_eventName1,
4687       { "eventName", "h248.eventName",
4688         FT_BYTES, BASE_HEX, NULL, 0,
4689         "", HFILL }},
4690     { &hf_h248_eventParList,
4691       { "eventParList", "h248.eventParList",
4692         FT_UINT32, BASE_DEC, NULL, 0,
4693         "", HFILL }},
4694     { &hf_h248_eventParList_item,
4695       { "Item", "h248.eventParList_item",
4696         FT_NONE, BASE_NONE, NULL, 0,
4697         "", HFILL }},
4698     { &hf_h248_timeNotation,
4699       { "timeNotation", "h248.timeNotation",
4700         FT_NONE, BASE_NONE, NULL, 0,
4701         "ObservedEvent/timeNotation", HFILL }},
4702     { &hf_h248_eventParameterName,
4703       { "eventParameterName", "h248.eventParameterName",
4704         FT_BYTES, BASE_HEX, NULL, 0,
4705         "EventParameter/eventParameterName", HFILL }},
4706     { &hf_h248_value,
4707       { "value", "h248.value",
4708         FT_UINT32, BASE_DEC, NULL, 0,
4709         "", HFILL }},
4710     { &hf_h248_extraInfo,
4711       { "extraInfo", "h248.extraInfo",
4712         FT_UINT32, BASE_DEC, VALS(T_extraInfo_vals), 0,
4713         "EventParameter/extraInfo", HFILL }},
4714     { &hf_h248_relation,
4715       { "relation", "h248.relation",
4716         FT_UINT32, BASE_DEC, VALS(Relation_vals), 0,
4717         "", HFILL }},
4718     { &hf_h248_range,
4719       { "range", "h248.range",
4720         FT_BOOLEAN, 8, NULL, 0,
4721         "", HFILL }},
4722     { &hf_h248_sublist,
4723       { "sublist", "h248.sublist",
4724         FT_BOOLEAN, 8, NULL, 0,
4725         "", HFILL }},
4726     { &hf_h248_serviceChangeParms,
4727       { "serviceChangeParms", "h248.serviceChangeParms",
4728         FT_NONE, BASE_NONE, NULL, 0,
4729         "ServiceChangeRequest/serviceChangeParms", HFILL }},
4730     { &hf_h248_serviceChangeResult,
4731       { "serviceChangeResult", "h248.serviceChangeResult",
4732         FT_UINT32, BASE_DEC, VALS(ServiceChangeResult_vals), 0,
4733         "ServiceChangeReply/serviceChangeResult", HFILL }},
4734     { &hf_h248_serviceChangeResParms,
4735       { "serviceChangeResParms", "h248.serviceChangeResParms",
4736         FT_NONE, BASE_NONE, NULL, 0,
4737         "ServiceChangeResult/serviceChangeResParms", HFILL }},
4738     { &hf_h248_wildcard,
4739       { "wildcard", "h248.wildcard",
4740         FT_UINT32, BASE_DEC, NULL, 0,
4741         "TerminationID/wildcard", HFILL }},
4742     { &hf_h248_wildcard_item,
4743       { "Item", "h248.wildcard_item",
4744         FT_BYTES, BASE_HEX, NULL, 0,
4745         "TerminationID/wildcard/_item", HFILL }},
4746     { &hf_h248_id1,
4747       { "id", "h248.id",
4748         FT_BYTES, BASE_HEX, NULL, 0,
4749         "TerminationID/id", HFILL }},
4750     { &hf_h248_TerminationIDList_item,
4751       { "Item", "h248.TerminationIDList_item",
4752         FT_NONE, BASE_NONE, NULL, 0,
4753         "TerminationIDList/_item", HFILL }},
4754     { &hf_h248_termStateDescr1,
4755       { "termStateDescr", "h248.termStateDescr",
4756         FT_NONE, BASE_NONE, NULL, 0,
4757         "MediaDescriptor/termStateDescr", HFILL }},
4758     { &hf_h248_streams1,
4759       { "streams", "h248.streams",
4760         FT_UINT32, BASE_DEC, VALS(T_streams1_vals), 0,
4761         "MediaDescriptor/streams", HFILL }},
4762     { &hf_h248_oneStream1,
4763       { "oneStream", "h248.oneStream",
4764         FT_NONE, BASE_NONE, NULL, 0,
4765         "MediaDescriptor/streams/oneStream", HFILL }},
4766     { &hf_h248_multiStream1,
4767       { "multiStream", "h248.multiStream",
4768         FT_UINT32, BASE_DEC, NULL, 0,
4769         "MediaDescriptor/streams/multiStream", HFILL }},
4770     { &hf_h248_multiStream_item1,
4771       { "Item", "h248.multiStream_item",
4772         FT_NONE, BASE_NONE, NULL, 0,
4773         "MediaDescriptor/streams/multiStream/_item", HFILL }},
4774     { &hf_h248_streamParms1,
4775       { "streamParms", "h248.streamParms",
4776         FT_NONE, BASE_NONE, NULL, 0,
4777         "StreamDescriptor/streamParms", HFILL }},
4778     { &hf_h248_localControlDescriptor1,
4779       { "localControlDescriptor", "h248.localControlDescriptor",
4780         FT_NONE, BASE_NONE, NULL, 0,
4781         "StreamParms/localControlDescriptor", HFILL }},
4782     { &hf_h248_localDescriptor1,
4783       { "localDescriptor", "h248.localDescriptor",
4784         FT_NONE, BASE_NONE, NULL, 0,
4785         "StreamParms/localDescriptor", HFILL }},
4786     { &hf_h248_remoteDescriptor1,
4787       { "remoteDescriptor", "h248.remoteDescriptor",
4788         FT_NONE, BASE_NONE, NULL, 0,
4789         "StreamParms/remoteDescriptor", HFILL }},
4790     { &hf_h248_streamMode1,
4791       { "streamMode", "h248.streamMode",
4792         FT_UINT32, BASE_DEC, VALS(StreamMode_vals), 0,
4793         "LocalControlDescriptor/streamMode", HFILL }},
4794     { &hf_h248_reserveValue1,
4795       { "reserveValue", "h248.reserveValue",
4796         FT_BOOLEAN, 8, NULL, 0,
4797         "LocalControlDescriptor/reserveValue", HFILL }},
4798     { &hf_h248_reserveGroup1,
4799       { "reserveGroup", "h248.reserveGroup",
4800         FT_BOOLEAN, 8, NULL, 0,
4801         "LocalControlDescriptor/reserveGroup", HFILL }},
4802     { &hf_h248_propertyParms1,
4803       { "propertyParms", "h248.propertyParms",
4804         FT_UINT32, BASE_DEC, NULL, 0,
4805         "", HFILL }},
4806     { &hf_h248_propertyParms_item1,
4807       { "Item", "h248.propertyParms_item",
4808         FT_NONE, BASE_NONE, NULL, 0,
4809         "", HFILL }},
4810     { &hf_h248_propertyName,
4811       { "propertyName", "h248.propertyName",
4812         FT_BYTES, BASE_HEX, NULL, 0,
4813         "PropertyParm/propertyName", HFILL }},
4814     { &hf_h248_value1,
4815       { "value", "h248.value",
4816         FT_UINT32, BASE_DEC, NULL, 0,
4817         "PropertyParm/value", HFILL }},
4818     { &hf_h248_value_item,
4819       { "Item", "h248.value_item",
4820         FT_BYTES, BASE_HEX, NULL, 0,
4821         "PropertyParm/value/_item", HFILL }},
4822     { &hf_h248_extraInfo1,
4823       { "extraInfo", "h248.extraInfo",
4824         FT_UINT32, BASE_DEC, VALS(T_extraInfo1_vals), 0,
4825         "PropertyParm/extraInfo", HFILL }},
4826     { &hf_h248_propGrps1,
4827       { "propGrps", "h248.propGrps",
4828         FT_UINT32, BASE_DEC, NULL, 0,
4829         "LocalRemoteDescriptor/propGrps", HFILL }},
4830     { &hf_h248_propGrps_item,
4831       { "Item", "h248.propGrps_item",
4832         FT_UINT32, BASE_DEC, NULL, 0,
4833         "LocalRemoteDescriptor/propGrps/_item", HFILL }},
4834     { &hf_h248_PropertyGroup_item,
4835       { "Item", "h248.PropertyGroup_item",
4836         FT_NONE, BASE_NONE, NULL, 0,
4837         "PropertyGroup/_item", HFILL }},
4838     { &hf_h248_eventBufferControl1,
4839       { "eventBufferControl", "h248.eventBufferControl",
4840         FT_UINT32, BASE_DEC, VALS(EventBufferControl_vals), 0,
4841         "TerminationStateDescriptor/eventBufferControl", HFILL }},
4842     { &hf_h248_serviceState1,
4843       { "serviceState", "h248.serviceState",
4844         FT_UINT32, BASE_DEC, VALS(ServiceState_vals), 0,
4845         "TerminationStateDescriptor/serviceState", HFILL }},
4846     { &hf_h248_muxType,
4847       { "muxType", "h248.muxType",
4848         FT_UINT32, BASE_DEC, VALS(MuxType_vals), 0,
4849         "MuxDescriptor/muxType", HFILL }},
4850     { &hf_h248_termList,
4851       { "termList", "h248.termList",
4852         FT_UINT32, BASE_DEC, NULL, 0,
4853         "MuxDescriptor/termList", HFILL }},
4854     { &hf_h248_termList_item,
4855       { "Item", "h248.termList_item",
4856         FT_NONE, BASE_NONE, NULL, 0,
4857         "MuxDescriptor/termList/_item", HFILL }},
4858     { &hf_h248_nonStandardData,
4859       { "nonStandardData", "h248.nonStandardData",
4860         FT_NONE, BASE_NONE, NULL, 0,
4861         "", HFILL }},
4862     { &hf_h248_eventList,
4863       { "eventList", "h248.eventList",
4864         FT_UINT32, BASE_DEC, NULL, 0,
4865         "EventsDescriptor/eventList", HFILL }},
4866     { &hf_h248_eventList_item,
4867       { "Item", "h248.eventList_item",
4868         FT_NONE, BASE_NONE, NULL, 0,
4869         "EventsDescriptor/eventList/_item", HFILL }},
4870     { &hf_h248_eventAction,
4871       { "eventAction", "h248.eventAction",
4872         FT_NONE, BASE_NONE, NULL, 0,
4873         "RequestedEvent/eventAction", HFILL }},
4874     { &hf_h248_evParList,
4875       { "evParList", "h248.evParList",
4876         FT_UINT32, BASE_DEC, NULL, 0,
4877         "", HFILL }},
4878     { &hf_h248_evParList_item,
4879       { "Item", "h248.evParList_item",
4880         FT_NONE, BASE_NONE, NULL, 0,
4881         "", HFILL }},
4882     { &hf_h248_keepActive,
4883       { "keepActive", "h248.keepActive",
4884         FT_BOOLEAN, 8, NULL, 0,
4885         "", HFILL }},
4886     { &hf_h248_eventDM,
4887       { "eventDM", "h248.eventDM",
4888         FT_UINT32, BASE_DEC, VALS(EventDM_vals), 0,
4889         "", HFILL }},
4890     { &hf_h248_secondEvent,
4891       { "secondEvent", "h248.secondEvent",
4892         FT_NONE, BASE_NONE, NULL, 0,
4893         "RequestedActions/secondEvent", HFILL }},
4894     { &hf_h248_digitMapValue,
4895       { "digitMapValue", "h248.digitMapValue",
4896         FT_NONE, BASE_NONE, NULL, 0,
4897         "", HFILL }},
4898     { &hf_h248_eventList1,
4899       { "eventList", "h248.eventList",
4900         FT_UINT32, BASE_DEC, NULL, 0,
4901         "SecondEventsDescriptor/eventList", HFILL }},
4902     { &hf_h248_eventList_item1,
4903       { "Item", "h248.eventList_item",
4904         FT_NONE, BASE_NONE, NULL, 0,
4905         "SecondEventsDescriptor/eventList/_item", HFILL }},
4906     { &hf_h248_eventAction1,
4907       { "eventAction", "h248.eventAction",
4908         FT_NONE, BASE_NONE, NULL, 0,
4909         "SecondRequestedEvent/eventAction", HFILL }},
4910     { &hf_h248_EventBufferDescriptor_item,
4911       { "Item", "h248.EventBufferDescriptor_item",
4912         FT_NONE, BASE_NONE, NULL, 0,
4913         "EventBufferDescriptor/_item", HFILL }},
4914     { &hf_h248_SignalsDescriptor_item,
4915       { "Item", "h248.SignalsDescriptor_item",
4916         FT_UINT32, BASE_DEC, VALS(SignalRequest_vals), 0,
4917         "SignalsDescriptor/_item", HFILL }},
4918     { &hf_h248_signal1,
4919       { "signal", "h248.signal",
4920         FT_NONE, BASE_NONE, NULL, 0,
4921         "SignalRequest/signal", HFILL }},
4922     { &hf_h248_seqSigList1,
4923       { "seqSigList", "h248.seqSigList",
4924         FT_NONE, BASE_NONE, NULL, 0,
4925         "SignalRequest/seqSigList", HFILL }},
4926     { &hf_h248_signalList1,
4927       { "signalList", "h248.signalList",
4928         FT_UINT32, BASE_DEC, NULL, 0,
4929         "SeqSigList/signalList", HFILL }},
4930     { &hf_h248_signalList_item,
4931       { "Item", "h248.signalList_item",
4932         FT_NONE, BASE_NONE, NULL, 0,
4933         "SeqSigList/signalList/_item", HFILL }},
4934     { &hf_h248_signalName1,
4935       { "signalName", "h248.signalName",
4936         FT_BYTES, BASE_HEX, NULL, 0,
4937         "Signal/signalName", HFILL }},
4938     { &hf_h248_sigType,
4939       { "sigType", "h248.sigType",
4940         FT_UINT32, BASE_DEC, VALS(SignalType_vals), 0,
4941         "Signal/sigType", HFILL }},
4942     { &hf_h248_duration,
4943       { "duration", "h248.duration",
4944         FT_UINT32, BASE_DEC, NULL, 0,
4945         "Signal/duration", HFILL }},
4946     { &hf_h248_notifyCompletion,
4947       { "notifyCompletion", "h248.notifyCompletion",
4948         FT_BYTES, BASE_HEX, NULL, 0,
4949         "Signal/notifyCompletion", HFILL }},
4950     { &hf_h248_sigParList,
4951       { "sigParList", "h248.sigParList",
4952         FT_UINT32, BASE_DEC, NULL, 0,
4953         "Signal/sigParList", HFILL }},
4954     { &hf_h248_sigParList_item,
4955       { "Item", "h248.sigParList_item",
4956         FT_NONE, BASE_NONE, NULL, 0,
4957         "Signal/sigParList/_item", HFILL }},
4958     { &hf_h248_sigParameterName,
4959       { "sigParameterName", "h248.sigParameterName",
4960         FT_BYTES, BASE_HEX, NULL, 0,
4961         "SigParameter/sigParameterName", HFILL }},
4962     { &hf_h248_extraInfo2,
4963       { "extraInfo", "h248.extraInfo",
4964         FT_UINT32, BASE_DEC, VALS(T_extraInfo2_vals), 0,
4965         "SigParameter/extraInfo", HFILL }},
4966     { &hf_h248_mtl,
4967       { "mtl", "h248.mtl",
4968         FT_UINT32, BASE_DEC, NULL, 0,
4969         "ModemDescriptor/mtl", HFILL }},
4970     { &hf_h248_mtl_item,
4971       { "Item", "h248.mtl_item",
4972         FT_UINT32, BASE_DEC, VALS(ModemType_vals), 0,
4973         "ModemDescriptor/mtl/_item", HFILL }},
4974     { &hf_h248_mpl,
4975       { "mpl", "h248.mpl",
4976         FT_UINT32, BASE_DEC, NULL, 0,
4977         "ModemDescriptor/mpl", HFILL }},
4978     { &hf_h248_mpl_item,
4979       { "Item", "h248.mpl_item",
4980         FT_NONE, BASE_NONE, NULL, 0,
4981         "ModemDescriptor/mpl/_item", HFILL }},
4982     { &hf_h248_startTimer,
4983       { "startTimer", "h248.startTimer",
4984         FT_UINT32, BASE_DEC, NULL, 0,
4985         "DigitMapValue/startTimer", HFILL }},
4986     { &hf_h248_shortTimer,
4987       { "shortTimer", "h248.shortTimer",
4988         FT_UINT32, BASE_DEC, NULL, 0,
4989         "DigitMapValue/shortTimer", HFILL }},
4990     { &hf_h248_longTimer,
4991       { "longTimer", "h248.longTimer",
4992         FT_UINT32, BASE_DEC, NULL, 0,
4993         "DigitMapValue/longTimer", HFILL }},
4994     { &hf_h248_digitMapBody,
4995       { "digitMapBody", "h248.digitMapBody",
4996         FT_STRING, BASE_NONE, NULL, 0,
4997         "DigitMapValue/digitMapBody", HFILL }},
4998     { &hf_h248_durationTimer,
4999       { "durationTimer", "h248.durationTimer",
5000         FT_UINT32, BASE_DEC, NULL, 0,
5001         "DigitMapValue/durationTimer", HFILL }},
5002     { &hf_h248_serviceChangeMethod,
5003       { "serviceChangeMethod", "h248.serviceChangeMethod",
5004         FT_UINT32, BASE_DEC, VALS(ServiceChangeMethod_vals), 0,
5005         "ServiceChangeParm/serviceChangeMethod", HFILL }},
5006     { &hf_h248_serviceChangeAddress,
5007       { "serviceChangeAddress", "h248.serviceChangeAddress",
5008         FT_UINT32, BASE_DEC, VALS(ServiceChangeAddress_vals), 0,
5009         "", HFILL }},
5010     { &hf_h248_serviceChangeVersion,
5011       { "serviceChangeVersion", "h248.serviceChangeVersion",
5012         FT_UINT32, BASE_DEC, NULL, 0,
5013         "", HFILL }},
5014     { &hf_h248_serviceChangeProfile,
5015       { "serviceChangeProfile", "h248.serviceChangeProfile",
5016         FT_NONE, BASE_NONE, NULL, 0,
5017         "", HFILL }},
5018     { &hf_h248_serviceChangeReason,
5019       { "serviceChangeReason", "h248.serviceChangeReason",
5020         FT_UINT32, BASE_DEC, NULL, 0,
5021         "ServiceChangeParm/serviceChangeReason", HFILL }},
5022     { &hf_h248_serviceChangeDelay,
5023       { "serviceChangeDelay", "h248.serviceChangeDelay",
5024         FT_UINT32, BASE_DEC, NULL, 0,
5025         "ServiceChangeParm/serviceChangeDelay", HFILL }},
5026     { &hf_h248_serviceChangeMgcId,
5027       { "serviceChangeMgcId", "h248.serviceChangeMgcId",
5028         FT_UINT32, BASE_DEC, VALS(MId_vals), 0,
5029         "", HFILL }},
5030     { &hf_h248_timeStamp,
5031       { "timeStamp", "h248.timeStamp",
5032         FT_NONE, BASE_NONE, NULL, 0,
5033         "ServiceChangeParm/timeStamp", HFILL }},
5034     { &hf_h248_serviceChangeInfo,
5035       { "serviceChangeInfo", "h248.serviceChangeInfo",
5036         FT_NONE, BASE_NONE, NULL, 0,
5037         "ServiceChangeParm/serviceChangeInfo", HFILL }},
5038     { &hf_h248_mtpAddress1,
5039       { "mtpAddress", "h248.mtpAddress",
5040         FT_BYTES, BASE_HEX, NULL, 0,
5041         "ServiceChangeAddress/mtpAddress", HFILL }},
5042     { &hf_h248_timestamp,
5043       { "timestamp", "h248.timestamp",
5044         FT_NONE, BASE_NONE, NULL, 0,
5045         "ServiceChangeResParm/timestamp", HFILL }},
5046     { &hf_h248_profileName,
5047       { "profileName", "h248.profileName",
5048         FT_STRING, BASE_NONE, NULL, 0,
5049         "ServiceChangeProfile/profileName", HFILL }},
5050     { &hf_h248_PackagesDescriptor_item,
5051       { "Item", "h248.PackagesDescriptor_item",
5052         FT_NONE, BASE_NONE, NULL, 0,
5053         "PackagesDescriptor/_item", HFILL }},
5054     { &hf_h248_StatisticsDescriptor_item,
5055       { "Item", "h248.StatisticsDescriptor_item",
5056         FT_NONE, BASE_NONE, NULL, 0,
5057         "StatisticsDescriptor/_item", HFILL }},
5058     { &hf_h248_statValue,
5059       { "statValue", "h248.statValue",
5060         FT_UINT32, BASE_DEC, NULL, 0,
5061         "StatisticsParameter/statValue", HFILL }},
5062     { &hf_h248_nonStandardIdentifier,
5063       { "nonStandardIdentifier", "h248.nonStandardIdentifier",
5064         FT_UINT32, BASE_DEC, VALS(NonStandardIdentifier_vals), 0,
5065         "NonStandardData/nonStandardIdentifier", HFILL }},
5066     { &hf_h248_data,
5067       { "data", "h248.data",
5068         FT_BYTES, BASE_HEX, NULL, 0,
5069         "NonStandardData/data", HFILL }},
5070     { &hf_h248_object,
5071       { "object", "h248.object",
5072         FT_STRING, BASE_NONE, NULL, 0,
5073         "NonStandardIdentifier/object", HFILL }},
5074     { &hf_h248_h221NonStandard,
5075       { "h221NonStandard", "h248.h221NonStandard",
5076         FT_NONE, BASE_NONE, NULL, 0,
5077         "NonStandardIdentifier/h221NonStandard", HFILL }},
5078     { &hf_h248_experimental,
5079       { "experimental", "h248.experimental",
5080         FT_STRING, BASE_NONE, NULL, 0,
5081         "NonStandardIdentifier/experimental", HFILL }},
5082     { &hf_h248_t35CountryCode1,
5083       { "t35CountryCode1", "h248.t35CountryCode1",
5084         FT_UINT32, BASE_DEC, NULL, 0,
5085         "H221NonStandard/t35CountryCode1", HFILL }},
5086     { &hf_h248_t35CountryCode2,
5087       { "t35CountryCode2", "h248.t35CountryCode2",
5088         FT_UINT32, BASE_DEC, NULL, 0,
5089         "H221NonStandard/t35CountryCode2", HFILL }},
5090     { &hf_h248_t35Extension,
5091       { "t35Extension", "h248.t35Extension",
5092         FT_UINT32, BASE_DEC, NULL, 0,
5093         "H221NonStandard/t35Extension", HFILL }},
5094     { &hf_h248_manufacturerCode,
5095       { "manufacturerCode", "h248.manufacturerCode",
5096         FT_UINT32, BASE_DEC, NULL, 0,
5097         "H221NonStandard/manufacturerCode", HFILL }},
5098     { &hf_h248_date,
5099       { "date", "h248.date",
5100         FT_STRING, BASE_NONE, NULL, 0,
5101         "TimeNotation/date", HFILL }},
5102     { &hf_h248_time,
5103       { "time", "h248.time",
5104         FT_STRING, BASE_NONE, NULL, 0,
5105         "TimeNotation/time", HFILL }},
5106     { &hf_h248_Value_item,
5107       { "Item", "h248.Value_item",
5108         FT_BYTES, BASE_HEX, NULL, 0,
5109         "Value/_item", HFILL }},
5110     { &hf_h248_T_auditToken_muxToken,
5111       { "muxToken", "h248.muxToken",
5112         FT_BOOLEAN, 8, NULL, 0x80,
5113         "", HFILL }},
5114     { &hf_h248_T_auditToken_modemToken,
5115       { "modemToken", "h248.modemToken",
5116         FT_BOOLEAN, 8, NULL, 0x40,
5117         "", HFILL }},
5118     { &hf_h248_T_auditToken_mediaToken,
5119       { "mediaToken", "h248.mediaToken",
5120         FT_BOOLEAN, 8, NULL, 0x20,
5121         "", HFILL }},
5122     { &hf_h248_T_auditToken_eventsToken,
5123       { "eventsToken", "h248.eventsToken",
5124         FT_BOOLEAN, 8, NULL, 0x10,
5125         "", HFILL }},
5126     { &hf_h248_T_auditToken_signalsToken,
5127       { "signalsToken", "h248.signalsToken",
5128         FT_BOOLEAN, 8, NULL, 0x08,
5129         "", HFILL }},
5130     { &hf_h248_T_auditToken_digitMapToken,
5131       { "digitMapToken", "h248.digitMapToken",
5132         FT_BOOLEAN, 8, NULL, 0x04,
5133         "", HFILL }},
5134     { &hf_h248_T_auditToken_statsToken,
5135       { "statsToken", "h248.statsToken",
5136         FT_BOOLEAN, 8, NULL, 0x02,
5137         "", HFILL }},
5138     { &hf_h248_T_auditToken_observedEventsToken,
5139       { "observedEventsToken", "h248.observedEventsToken",
5140         FT_BOOLEAN, 8, NULL, 0x01,
5141         "", HFILL }},
5142     { &hf_h248_T_auditToken_packagesToken,
5143       { "packagesToken", "h248.packagesToken",
5144         FT_BOOLEAN, 8, NULL, 0x80,
5145         "", HFILL }},
5146     { &hf_h248_T_auditToken_eventBufferToken,
5147       { "eventBufferToken", "h248.eventBufferToken",
5148         FT_BOOLEAN, 8, NULL, 0x40,
5149         "", HFILL }},
5150     { &hf_h248_NotifyCompletion_onTimeOut,
5151       { "onTimeOut", "h248.onTimeOut",
5152         FT_BOOLEAN, 8, NULL, 0x80,
5153         "", HFILL }},
5154     { &hf_h248_NotifyCompletion_onInterruptByEvent,
5155       { "onInterruptByEvent", "h248.onInterruptByEvent",
5156         FT_BOOLEAN, 8, NULL, 0x40,
5157         "", HFILL }},
5158     { &hf_h248_NotifyCompletion_onInterruptByNewSignalDescr,
5159       { "onInterruptByNewSignalDescr", "h248.onInterruptByNewSignalDescr",
5160         FT_BOOLEAN, 8, NULL, 0x20,
5161         "", HFILL }},
5162     { &hf_h248_NotifyCompletion_otherReason,
5163       { "otherReason", "h248.otherReason",
5164         FT_BOOLEAN, 8, NULL, 0x10,
5165         "", HFILL }},
5166
5167 /*--- End of included file: packet-h248-hfarr.c ---*/
5168
5169   };
5170
5171   /* List of subtrees */
5172   static gint *ett[] = {
5173     &ett_h248,
5174     &ett_mtpaddress,
5175     &ett_packagename,
5176
5177 /*--- Included file: packet-h248-ettarr.c ---*/
5178
5179     &ett_h248_MegacoMessage,
5180     &ett_h248_AuthenticationHeader,
5181     &ett_h248_Message,
5182     &ett_h248_T_messageBody,
5183     &ett_h248_SEQUNCE_OF_Transaction,
5184     &ett_h248_MId,
5185     &ett_h248_DomainName,
5186     &ett_h248_IP4Address,
5187     &ett_h248_IP6Address,
5188     &ett_h248_Transaction,
5189     &ett_h248_TransactionRequest,
5190     &ett_h248_SEQUNCE_OF_ActionRequest,
5191     &ett_h248_TransactionPending,
5192     &ett_h248_TransactionReply,
5193     &ett_h248_T_transactionResult,
5194     &ett_h248_SEQUNCE_OF_ActionReply,
5195     &ett_h248_TransactionResponseAck,
5196     &ett_h248_TransactionAck,
5197     &ett_h248_ErrorDescriptor,
5198     &ett_h248_ActionRequest,
5199     &ett_h248_SEQUNCE_OF_CommandRequest,
5200     &ett_h248_ActionReply,
5201     &ett_h248_SEQUNCE_OF_CommandReply,
5202     &ett_h248_ContextRequest,
5203     &ett_h248_SEQUNCE_OF_TopologyRequest,
5204     &ett_h248_ContextAttrAuditRequest,
5205     &ett_h248_CommandRequest,
5206     &ett_h248_Command,
5207     &ett_h248_CommandReply,
5208     &ett_h248_TopologyRequest,
5209     &ett_h248_AmmRequest,
5210     &ett_h248_SEQUNCE_OF_AmmDescriptor,
5211     &ett_h248_AmmDescriptor,
5212     &ett_h248_AmmsReply,
5213     &ett_h248_SubtractRequest,
5214     &ett_h248_AuditRequest,
5215     &ett_h248_AuditReply,
5216     &ett_h248_AuditResult,
5217     &ett_h248_TerminationAudit,
5218     &ett_h248_AuditReturnParameter,
5219     &ett_h248_AuditDescriptor,
5220     &ett_h248_T_auditToken,
5221     &ett_h248_SEQUNCE_OF_IndAuditParameter,
5222     &ett_h248_IndAuditParameter,
5223     &ett_h248_IndAudMediaDescriptor,
5224     &ett_h248_T_streams,
5225     &ett_h248_SEQUNCE_OF_IndAudStreamDescriptor,
5226     &ett_h248_IndAudStreamDescriptor,
5227     &ett_h248_IndAudStreamParms,
5228     &ett_h248_IndAudLocalControlDescriptor,
5229     &ett_h248_SEQUNCE_OF_IndAudPropertyParm,
5230     &ett_h248_IndAudPropertyParm,
5231     &ett_h248_IndAudLocalRemoteDescriptor,
5232     &ett_h248_IndAudPropertyGroup,
5233     &ett_h248_IndAudTerminationStateDescriptor,
5234     &ett_h248_IndAudEventsDescriptor,
5235     &ett_h248_IndAudEventBufferDescriptor,
5236     &ett_h248_IndAudSignalsDescriptor,
5237     &ett_h248_IndAudSeqSigList,
5238     &ett_h248_IndAudSignal,
5239     &ett_h248_IndAudDigitMapDescriptor,
5240     &ett_h248_IndAudStatisticsDescriptor,
5241     &ett_h248_IndAudPackagesDescriptor,
5242     &ett_h248_NotifyRequest,
5243     &ett_h248_NotifyReply,
5244     &ett_h248_ObservedEventsDescriptor,
5245     &ett_h248_SEQUNCE_OF_ObservedEvent,
5246     &ett_h248_ObservedEvent,
5247     &ett_h248_SEQUNCE_OF_EventParameter,
5248     &ett_h248_EventParameter,
5249     &ett_h248_T_extraInfo,
5250     &ett_h248_ServiceChangeRequest,
5251     &ett_h248_ServiceChangeReply,
5252     &ett_h248_ServiceChangeResult,
5253     &ett_h248_TerminationID,
5254     &ett_h248_SEQUNCE_OF_WildcardField,
5255     &ett_h248_TerminationIDList,
5256     &ett_h248_MediaDescriptor,
5257     &ett_h248_T_streams1,
5258     &ett_h248_SEQUNCE_OF_StreamDescriptor,
5259     &ett_h248_StreamDescriptor,
5260     &ett_h248_StreamParms,
5261     &ett_h248_LocalControlDescriptor,
5262     &ett_h248_SEQUNCE_OF_PropertyParm,
5263     &ett_h248_PropertyParm,
5264     &ett_h248_SEQUNCE_OF_PropertyID,
5265     &ett_h248_T_extraInfo1,
5266     &ett_h248_LocalRemoteDescriptor,
5267     &ett_h248_SEQUNCE_OF_PropertyGroup,
5268     &ett_h248_PropertyGroup,
5269     &ett_h248_TerminationStateDescriptor,
5270     &ett_h248_MuxDescriptor,
5271     &ett_h248_SEQUNCE_OF_TerminationID,
5272     &ett_h248_EventsDescriptor,
5273     &ett_h248_SEQUNCE_OF_RequestedEvent,
5274     &ett_h248_RequestedEvent,
5275     &ett_h248_RequestedActions,
5276     &ett_h248_EventDM,
5277     &ett_h248_SecondEventsDescriptor,
5278     &ett_h248_SEQUNCE_OF_SecondRequestedEvent,
5279     &ett_h248_SecondRequestedEvent,
5280     &ett_h248_SecondRequestedActions,
5281     &ett_h248_EventBufferDescriptor,
5282     &ett_h248_EventSpec,
5283     &ett_h248_SignalsDescriptor,
5284     &ett_h248_SignalRequest,
5285     &ett_h248_SeqSigList,
5286     &ett_h248_SEQUNCE_OF_Signal,
5287     &ett_h248_Signal,
5288     &ett_h248_SEQUNCE_OF_SigParameter,
5289     &ett_h248_NotifyCompletion,
5290     &ett_h248_SigParameter,
5291     &ett_h248_T_extraInfo2,
5292     &ett_h248_ModemDescriptor,
5293     &ett_h248_SEQUNCE_OF_ModemType,
5294     &ett_h248_DigitMapDescriptor,
5295     &ett_h248_DigitMapValue,
5296     &ett_h248_ServiceChangeParm,
5297     &ett_h248_ServiceChangeAddress,
5298     &ett_h248_ServiceChangeResParm,
5299     &ett_h248_ServiceChangeProfile,
5300     &ett_h248_PackagesDescriptor,
5301     &ett_h248_PackagesItem,
5302     &ett_h248_StatisticsDescriptor,
5303     &ett_h248_StatisticsParameter,
5304     &ett_h248_NonStandardData,
5305     &ett_h248_NonStandardIdentifier,
5306     &ett_h248_H221NonStandard,
5307     &ett_h248_TimeNotation,
5308     &ett_h248_Value,
5309
5310 /*--- End of included file: packet-h248-ettarr.c ---*/
5311
5312   };
5313
5314   /* Register protocol */
5315   proto_h248 = proto_register_protocol(PNAME, PSNAME, PFNAME);
5316   register_dissector("h248", dissect_h248, proto_h248);
5317
5318   /* Register fields and subtrees */
5319   proto_register_field_array(proto_h248, hf, array_length(hf));
5320   proto_register_subtree_array(ett, array_length(ett));
5321
5322   /* register a dissector table packages can attach to */
5323   h248_package_bin_dissector_table = register_dissector_table("h248.package.bin", "Binary H.248 Package Dissectors", FT_UINT16,BASE_HEX);
5324
5325 }
5326
5327
5328 /*--- proto_reg_handoff_h248 -------------------------------------------*/
5329 void proto_reg_handoff_h248(void) {
5330   dissector_handle_t h248_handle;
5331
5332   h248_handle = find_dissector("h248");
5333   /*
5334    * Handle the dissection of Media stream properties H.248.1 Annex C in this dissector 
5335    */
5336
5337   dissector_add("m3ua.protocol_data_si", GATEWAY_CONTROL_PROTOCOL_USER_ID, h248_handle);
5338 }
5339