Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-t124.c
blob50dba7cc99f7f4cd5989d4ba9bae5c5fff2154e7
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-t124.c */
4 /* asn2wrs.py -q -L -p t124 -c ./t124.cnf -s ./packet-t124-template -D . -O ../.. GCC-PROTOCOL.asn ../t125/MCS-PROTOCOL.asn */
6 /* packet-t124.c
7 * Routines for t124 packet dissection
8 * Copyright 2010, Graeme Lunt
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
18 #include "config.h"
20 #include <epan/packet.h>
21 #include <epan/exceptions.h>
22 #include <epan/conversation.h>
23 #include <wsutil/array.h>
25 #include <epan/asn1.h>
26 #include "packet-per.h"
27 #include "packet-ber.h"
28 #include "packet-t124.h"
30 #ifdef _MSC_VER
31 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
32 #pragma warning(disable:4146)
33 #endif
35 #define PNAME "GENERIC-CONFERENCE-CONTROL T.124"
36 #define PSNAME "T.124"
37 #define PFNAME "t124"
39 void proto_register_t124(void);
40 void proto_reg_handoff_t124(void);
42 /* Initialize the protocol and registered fields */
43 static int proto_t124;
44 static proto_tree *top_tree;
46 static int hf_t124_object; /* T_object */
47 static int hf_t124_h221NonStandard; /* H221NonStandardIdentifier */
48 static int hf_t124_key; /* Key */
49 static int hf_t124_data; /* OCTET_STRING */
50 static int hf_t124_UserData_item; /* UserData_item */
51 static int hf_t124_value; /* T_value */
52 static int hf_t124_numeric; /* SimpleNumericString */
53 static int hf_t124_text; /* SimpleTextString */
54 static int hf_t124_unicodeText; /* TextString */
55 static int hf_t124_passwordString; /* PasswordSelector */
56 static int hf_t124_responseData; /* UserData */
57 static int hf_t124_passwordInTheClear; /* NULL */
58 static int hf_t124_nonStandardAlgorithm; /* NonStandardParameter */
59 static int hf_t124_responseAlgorithm; /* ChallengeResponseAlgorithm */
60 static int hf_t124_challengeData; /* UserData */
61 static int hf_t124_challengeTag; /* INTEGER */
62 static int hf_t124_challengeSet; /* SET_OF_ChallengeItem */
63 static int hf_t124_challengeSet_item; /* ChallengeItem */
64 static int hf_t124_responseItem; /* ChallengeResponseItem */
65 static int hf_t124_passwordInTheClear_01; /* PasswordSelector */
66 static int hf_t124_challengeRequestResponse; /* T_challengeRequestResponse */
67 static int hf_t124_challengeRequest; /* ChallengeRequest */
68 static int hf_t124_challengeResponse; /* ChallengeResponse */
69 static int hf_t124_nonStandardScheme; /* NonStandardParameter */
70 static int hf_t124_priority; /* INTEGER_0_65535 */
71 static int hf_t124_scheme; /* ConferencePriorityScheme */
72 static int hf_t124_conventional; /* NULL */
73 static int hf_t124_counted; /* NULL */
74 static int hf_t124_anonymous; /* NULL */
75 static int hf_t124_nonStandardCategory; /* NonStandardParameter */
76 static int hf_t124_conventional_only; /* NULL */
77 static int hf_t124_counted_only; /* NULL */
78 static int hf_t124_anonymous_only; /* NULL */
79 static int hf_t124_conventional_control; /* NULL */
80 static int hf_t124_unrestricted_mode; /* NULL */
81 static int hf_t124_non_standard_mode; /* NonStandardParameter */
82 static int hf_t124_NetworkAddress_item; /* NetworkAddress_item */
83 static int hf_t124_aggregatedChannel; /* T_aggregatedChannel */
84 static int hf_t124_transferModes; /* T_transferModes */
85 static int hf_t124_speech; /* BOOLEAN */
86 static int hf_t124_voice_band; /* BOOLEAN */
87 static int hf_t124_digital_56k; /* BOOLEAN */
88 static int hf_t124_digital_64k; /* BOOLEAN */
89 static int hf_t124_digital_128k; /* BOOLEAN */
90 static int hf_t124_digital_192k; /* BOOLEAN */
91 static int hf_t124_digital_256k; /* BOOLEAN */
92 static int hf_t124_digital_320k; /* BOOLEAN */
93 static int hf_t124_digital_384k; /* BOOLEAN */
94 static int hf_t124_digital_512k; /* BOOLEAN */
95 static int hf_t124_digital_768k; /* BOOLEAN */
96 static int hf_t124_digital_1152k; /* BOOLEAN */
97 static int hf_t124_digital_1472k; /* BOOLEAN */
98 static int hf_t124_digital_1536k; /* BOOLEAN */
99 static int hf_t124_digital_1920k; /* BOOLEAN */
100 static int hf_t124_packet_mode; /* BOOLEAN */
101 static int hf_t124_frame_mode; /* BOOLEAN */
102 static int hf_t124_atm; /* BOOLEAN */
103 static int hf_t124_internationalNumber; /* DiallingString */
104 static int hf_t124_subAddress; /* SubAddressString */
105 static int hf_t124_extraDialling; /* ExtraDiallingString */
106 static int hf_t124_highLayerCompatibility; /* T_highLayerCompatibility */
107 static int hf_t124_telephony3kHz; /* BOOLEAN */
108 static int hf_t124_telephony7kHz; /* BOOLEAN */
109 static int hf_t124_videotelephony; /* BOOLEAN */
110 static int hf_t124_videoconference; /* BOOLEAN */
111 static int hf_t124_audiographic; /* BOOLEAN */
112 static int hf_t124_audiovisual; /* BOOLEAN */
113 static int hf_t124_multimedia; /* BOOLEAN */
114 static int hf_t124_transportConnection; /* T_transportConnection */
115 static int hf_t124_nsapAddress; /* OCTET_STRING_SIZE_1_20 */
116 static int hf_t124_transportSelector; /* OCTET_STRING */
117 static int hf_t124_nonStandard; /* NonStandardParameter */
118 static int hf_t124_callingNode; /* NULL */
119 static int hf_t124_calledNode; /* NULL */
120 static int hf_t124_unknown; /* INTEGER_0_4294967295 */
121 static int hf_t124_conferenceName; /* ConferenceName */
122 static int hf_t124_conferenceNameModifier; /* ConferenceNameModifier */
123 static int hf_t124_conferenceDescription; /* TextString */
124 static int hf_t124_lockedConference; /* BOOLEAN */
125 static int hf_t124_passwordInTheClearRequired; /* BOOLEAN */
126 static int hf_t124_networkAddress; /* NetworkAddress */
127 static int hf_t124_defaultConferenceFlag; /* BOOLEAN */
128 static int hf_t124_conferenceMode; /* ConferenceMode */
129 static int hf_t124_convenerPassword; /* Password */
130 static int hf_t124_password; /* Password */
131 static int hf_t124_listedConference; /* BOOLEAN */
132 static int hf_t124_conductibleConference; /* BOOLEAN */
133 static int hf_t124_terminationMethod; /* TerminationMethod */
134 static int hf_t124_conductorPrivileges; /* SET_OF_Privilege */
135 static int hf_t124_conductorPrivileges_item; /* Privilege */
136 static int hf_t124_conductedPrivileges; /* SET_OF_Privilege */
137 static int hf_t124_conductedPrivileges_item; /* Privilege */
138 static int hf_t124_nonConductedPrivileges; /* SET_OF_Privilege */
139 static int hf_t124_nonConductedPrivileges_item; /* Privilege */
140 static int hf_t124_callerIdentifier; /* TextString */
141 static int hf_t124_userData; /* UserData */
142 static int hf_t124_conferencePriority; /* ConferencePriority */
143 static int hf_t124_nodeID; /* UserID */
144 static int hf_t124_tag; /* INTEGER */
145 static int hf_t124_result; /* T_result */
146 static int hf_t124_nodeType; /* NodeType */
147 static int hf_t124_asymmetryIndicator; /* AsymmetryIndicator */
148 static int hf_t124_conferenceList; /* SET_OF_ConferenceDescriptor */
149 static int hf_t124_conferenceList_item; /* ConferenceDescriptor */
150 static int hf_t124_queryResponseResult; /* QueryResponseResult */
151 static int hf_t124_waitForInvitationFlag; /* BOOLEAN */
152 static int hf_t124_noUnlistedConferenceFlag; /* BOOLEAN */
153 static int hf_t124_conferenceName_01; /* ConferenceNameSelector */
154 static int hf_t124_password_01; /* PasswordChallengeRequestResponse */
155 static int hf_t124_convenerPassword_01; /* PasswordSelector */
156 static int hf_t124_nodeCategory; /* NodeCategory */
157 static int hf_t124_topNodeID; /* UserID */
158 static int hf_t124_conferenceNameAlias; /* ConferenceNameSelector */
159 static int hf_t124_joinResponseResult; /* JoinResponseResult */
160 static int hf_t124_inviteResponseResult; /* InviteResponseResult */
161 static int hf_t124_t124Identifier; /* Key */
162 static int hf_t124_connectPDU; /* T_connectPDU */
163 static int hf_t124_conferenceCreateRequest; /* ConferenceCreateRequest */
164 static int hf_t124_conferenceCreateResponse; /* ConferenceCreateResponse */
165 static int hf_t124_conferenceQueryRequest; /* ConferenceQueryRequest */
166 static int hf_t124_conferenceQueryResponse; /* ConferenceQueryResponse */
167 static int hf_t124_conferenceJoinRequest; /* ConferenceJoinRequest */
168 static int hf_t124_conferenceJoinResponse; /* ConferenceJoinResponse */
169 static int hf_t124_conferenceInviteRequest; /* ConferenceInviteRequest */
170 static int hf_t124_conferenceInviteResponse; /* ConferenceInviteResponse */
171 static int hf_t124_heightLimit; /* INTEGER_0_MAX */
172 static int hf_t124_subHeight; /* INTEGER_0_MAX */
173 static int hf_t124_subInterval; /* INTEGER_0_MAX */
174 static int hf_t124_static; /* T_static */
175 static int hf_t124_channelId; /* StaticChannelId */
176 static int hf_t124_userId; /* T_userId */
177 static int hf_t124_joined; /* BOOLEAN */
178 static int hf_t124_userId_01; /* UserId */
179 static int hf_t124_private; /* T_private */
180 static int hf_t124_channelId_01; /* PrivateChannelId */
181 static int hf_t124_manager; /* UserId */
182 static int hf_t124_admitted; /* SET_OF_UserId */
183 static int hf_t124_admitted_item; /* UserId */
184 static int hf_t124_assigned; /* T_assigned */
185 static int hf_t124_channelId_02; /* AssignedChannelId */
186 static int hf_t124_mergeChannels; /* SET_OF_ChannelAttributes */
187 static int hf_t124_mergeChannels_item; /* ChannelAttributes */
188 static int hf_t124_purgeChannelIds; /* SET_OF_ChannelId */
189 static int hf_t124_purgeChannelIds_item; /* ChannelId */
190 static int hf_t124_detachUserIds; /* SET_OF_UserId */
191 static int hf_t124_detachUserIds_item; /* UserId */
192 static int hf_t124_grabbed; /* T_grabbed */
193 static int hf_t124_tokenId; /* TokenId */
194 static int hf_t124_grabber; /* UserId */
195 static int hf_t124_inhibited; /* T_inhibited */
196 static int hf_t124_inhibitors; /* SET_OF_UserId */
197 static int hf_t124_inhibitors_item; /* UserId */
198 static int hf_t124_giving; /* T_giving */
199 static int hf_t124_recipient; /* UserId */
200 static int hf_t124_ungivable; /* T_ungivable */
201 static int hf_t124_given; /* T_given */
202 static int hf_t124_mergeTokens; /* SET_OF_TokenAttributes */
203 static int hf_t124_mergeTokens_item; /* TokenAttributes */
204 static int hf_t124_purgeTokenIds; /* SET_OF_TokenId */
205 static int hf_t124_purgeTokenIds_item; /* TokenId */
206 static int hf_t124_reason; /* Reason */
207 static int hf_t124_diagnostic; /* Diagnostic */
208 static int hf_t124_initialOctets; /* OCTET_STRING */
209 static int hf_t124_result_01; /* Result */
210 static int hf_t124_initiator; /* UserId */
211 static int hf_t124_userIds; /* SET_OF_UserId */
212 static int hf_t124_userIds_item; /* UserId */
213 static int hf_t124_channelId_03; /* ChannelId */
214 static int hf_t124_requested; /* ChannelId */
215 static int hf_t124_channelIds; /* SET_OF_ChannelId */
216 static int hf_t124_channelIds_item; /* ChannelId */
217 static int hf_t124_dataPriority; /* DataPriority */
218 static int hf_t124_segmentation; /* Segmentation */
219 static int hf_t124_userData_01; /* T_userData */
220 static int hf_t124_userData_02; /* T_userData_01 */
221 static int hf_t124_userData_03; /* OCTET_STRING */
222 static int hf_t124_tokenStatus; /* TokenStatus */
223 static int hf_t124_plumbDomainIndication; /* PlumbDomainIndication */
224 static int hf_t124_erectDomainRequest; /* ErectDomainRequest */
225 static int hf_t124_mergeChannelsRequest; /* MergeChannelsRequest */
226 static int hf_t124_mergeChannelsConfirm; /* MergeChannelsConfirm */
227 static int hf_t124_purgeChannelsIndication; /* PurgeChannelsIndication */
228 static int hf_t124_mergeTokensRequest; /* MergeTokensRequest */
229 static int hf_t124_mergeTokensConfirm; /* MergeTokensConfirm */
230 static int hf_t124_purgeTokensIndication; /* PurgeTokensIndication */
231 static int hf_t124_disconnectProviderUltimatum; /* DisconnectProviderUltimatum */
232 static int hf_t124_rejectMCSPDUUltimatum; /* RejectMCSPDUUltimatum */
233 static int hf_t124_attachUserRequest; /* AttachUserRequest */
234 static int hf_t124_attachUserConfirm; /* AttachUserConfirm */
235 static int hf_t124_detachUserRequest; /* DetachUserRequest */
236 static int hf_t124_detachUserIndication; /* DetachUserIndication */
237 static int hf_t124_channelJoinRequest; /* ChannelJoinRequest */
238 static int hf_t124_channelJoinConfirm; /* ChannelJoinConfirm */
239 static int hf_t124_channelLeaveRequest; /* ChannelLeaveRequest */
240 static int hf_t124_channelConveneRequest; /* ChannelConveneRequest */
241 static int hf_t124_channelConveneConfirm; /* ChannelConveneConfirm */
242 static int hf_t124_channelDisbandRequest; /* ChannelDisbandRequest */
243 static int hf_t124_channelDisbandIndication; /* ChannelDisbandIndication */
244 static int hf_t124_channelAdmitRequest; /* ChannelAdmitRequest */
245 static int hf_t124_channelAdmitIndication; /* ChannelAdmitIndication */
246 static int hf_t124_channelExpelRequest; /* ChannelExpelRequest */
247 static int hf_t124_channelExpelIndication; /* ChannelExpelIndication */
248 static int hf_t124_sendDataRequest; /* SendDataRequest */
249 static int hf_t124_sendDataIndication; /* SendDataIndication */
250 static int hf_t124_uniformSendDataRequest; /* UniformSendDataRequest */
251 static int hf_t124_uniformSendDataIndication; /* UniformSendDataIndication */
252 static int hf_t124_tokenGrabRequest; /* TokenGrabRequest */
253 static int hf_t124_tokenGrabConfirm; /* TokenGrabConfirm */
254 static int hf_t124_tokenInhibitRequest; /* TokenInhibitRequest */
255 static int hf_t124_tokenInhibitConfirm; /* TokenInhibitConfirm */
256 static int hf_t124_tokenGiveRequest; /* TokenGiveRequest */
257 static int hf_t124_tokenGiveIndication; /* TokenGiveIndication */
258 static int hf_t124_tokenGiveResponse; /* TokenGiveResponse */
259 static int hf_t124_tokenGiveConfirm; /* TokenGiveConfirm */
260 static int hf_t124_tokenPleaseRequest; /* TokenPleaseRequest */
261 static int hf_t124_tokenPleaseIndication; /* TokenPleaseIndication */
262 static int hf_t124_tokenReleaseRequest; /* TokenReleaseRequest */
263 static int hf_t124_tokenReleaseConfirm; /* TokenReleaseConfirm */
264 static int hf_t124_tokenTestRequest; /* TokenTestRequest */
265 static int hf_t124_tokenTestConfirm; /* TokenTestConfirm */
266 /* named bits */
267 static int hf_t124_Segmentation_begin;
268 static int hf_t124_Segmentation_end;
270 /* Initialize the subtree pointers */
271 static int ett_t124;
272 static int ett_t124_connectGCCPDU;
274 static int hf_t124_ConnectData;
275 static int hf_t124_connectGCCPDU;
276 static int hf_t124_DomainMCSPDU_PDU;
278 static uint32_t channelId = -1;
280 static dissector_table_t t124_ns_dissector_table;
281 static dissector_table_t t124_sd_dissector_table;
283 static int ett_t124_Key;
284 static int ett_t124_NonStandardParameter;
285 static int ett_t124_UserData;
286 static int ett_t124_UserData_item;
287 static int ett_t124_Password;
288 static int ett_t124_PasswordSelector;
289 static int ett_t124_ChallengeResponseItem;
290 static int ett_t124_ChallengeResponseAlgorithm;
291 static int ett_t124_ChallengeItem;
292 static int ett_t124_ChallengeRequest;
293 static int ett_t124_SET_OF_ChallengeItem;
294 static int ett_t124_ChallengeResponse;
295 static int ett_t124_PasswordChallengeRequestResponse;
296 static int ett_t124_T_challengeRequestResponse;
297 static int ett_t124_ConferenceName;
298 static int ett_t124_ConferenceNameSelector;
299 static int ett_t124_ConferencePriorityScheme;
300 static int ett_t124_ConferencePriority;
301 static int ett_t124_NodeCategory;
302 static int ett_t124_ConferenceMode;
303 static int ett_t124_NetworkAddress;
304 static int ett_t124_NetworkAddress_item;
305 static int ett_t124_T_aggregatedChannel;
306 static int ett_t124_T_transferModes;
307 static int ett_t124_T_highLayerCompatibility;
308 static int ett_t124_T_transportConnection;
309 static int ett_t124_AsymmetryIndicator;
310 static int ett_t124_ConferenceDescriptor;
311 static int ett_t124_ConferenceCreateRequest;
312 static int ett_t124_SET_OF_Privilege;
313 static int ett_t124_ConferenceCreateResponse;
314 static int ett_t124_ConferenceQueryRequest;
315 static int ett_t124_ConferenceQueryResponse;
316 static int ett_t124_SET_OF_ConferenceDescriptor;
317 static int ett_t124_ConferenceJoinRequest;
318 static int ett_t124_ConferenceJoinResponse;
319 static int ett_t124_ConferenceInviteRequest;
320 static int ett_t124_ConferenceInviteResponse;
321 static int ett_t124_ConnectData;
322 static int ett_t124_ConnectGCCPDU;
323 static int ett_t124_Segmentation;
324 static int ett_t124_PlumbDomainIndication;
325 static int ett_t124_ErectDomainRequest;
326 static int ett_t124_ChannelAttributes;
327 static int ett_t124_T_static;
328 static int ett_t124_T_userId;
329 static int ett_t124_T_private;
330 static int ett_t124_SET_OF_UserId;
331 static int ett_t124_T_assigned;
332 static int ett_t124_MergeChannelsRequest;
333 static int ett_t124_SET_OF_ChannelAttributes;
334 static int ett_t124_SET_OF_ChannelId;
335 static int ett_t124_MergeChannelsConfirm;
336 static int ett_t124_PurgeChannelsIndication;
337 static int ett_t124_TokenAttributes;
338 static int ett_t124_T_grabbed;
339 static int ett_t124_T_inhibited;
340 static int ett_t124_T_giving;
341 static int ett_t124_T_ungivable;
342 static int ett_t124_T_given;
343 static int ett_t124_MergeTokensRequest;
344 static int ett_t124_SET_OF_TokenAttributes;
345 static int ett_t124_SET_OF_TokenId;
346 static int ett_t124_MergeTokensConfirm;
347 static int ett_t124_PurgeTokensIndication;
348 static int ett_t124_DisconnectProviderUltimatum;
349 static int ett_t124_RejectMCSPDUUltimatum;
350 static int ett_t124_AttachUserRequest;
351 static int ett_t124_AttachUserConfirm;
352 static int ett_t124_DetachUserRequest;
353 static int ett_t124_DetachUserIndication;
354 static int ett_t124_ChannelJoinRequest;
355 static int ett_t124_ChannelJoinConfirm;
356 static int ett_t124_ChannelLeaveRequest;
357 static int ett_t124_ChannelConveneRequest;
358 static int ett_t124_ChannelConveneConfirm;
359 static int ett_t124_ChannelDisbandRequest;
360 static int ett_t124_ChannelDisbandIndication;
361 static int ett_t124_ChannelAdmitRequest;
362 static int ett_t124_ChannelAdmitIndication;
363 static int ett_t124_ChannelExpelRequest;
364 static int ett_t124_ChannelExpelIndication;
365 static int ett_t124_SendDataRequest;
366 static int ett_t124_SendDataIndication;
367 static int ett_t124_UniformSendDataRequest;
368 static int ett_t124_UniformSendDataIndication;
369 static int ett_t124_TokenGrabRequest;
370 static int ett_t124_TokenGrabConfirm;
371 static int ett_t124_TokenInhibitRequest;
372 static int ett_t124_TokenInhibitConfirm;
373 static int ett_t124_TokenGiveRequest;
374 static int ett_t124_TokenGiveIndication;
375 static int ett_t124_TokenGiveResponse;
376 static int ett_t124_TokenGiveConfirm;
377 static int ett_t124_TokenPleaseRequest;
378 static int ett_t124_TokenPleaseIndication;
379 static int ett_t124_TokenReleaseRequest;
380 static int ett_t124_TokenReleaseConfirm;
381 static int ett_t124_TokenTestRequest;
382 static int ett_t124_TokenTestConfirm;
383 static int ett_t124_DomainMCSPDU;
387 static int
388 dissect_t124_DynamicChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
389 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
390 1001U, 65535U, NULL, false);
392 return offset;
397 static int
398 dissect_t124_UserID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
399 offset = dissect_t124_DynamicChannelID(tvb, offset, actx, tree, hf_index);
401 return offset;
406 static int
407 dissect_t124_H221NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
409 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
410 4, 255, false, (tvbuff_t**)&actx->private_data);
415 return offset;
420 static int
421 dissect_t124_T_object(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
422 offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &actx->external.direct_reference);
424 return offset;
428 static const value_string t124_Key_vals[] = {
429 { 0, "object" },
430 { 1, "h221NonStandard" },
431 { 0, NULL }
434 static const per_choice_t Key_choice[] = {
435 { 0, &hf_t124_object , ASN1_NO_EXTENSIONS , dissect_t124_T_object },
436 { 1, &hf_t124_h221NonStandard, ASN1_NO_EXTENSIONS , dissect_t124_H221NonStandardIdentifier },
437 { 0, NULL, 0, NULL }
440 static int
441 dissect_t124_Key(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
442 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
443 ett_t124_Key, Key_choice,
444 NULL);
446 return offset;
451 static int
452 dissect_t124_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
453 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
454 NO_BOUND, NO_BOUND, false, NULL);
456 return offset;
460 static const per_sequence_t NonStandardParameter_sequence[] = {
461 { &hf_t124_key , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Key },
462 { &hf_t124_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
463 { NULL, 0, 0, NULL }
466 static int
467 dissect_t124_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
468 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
469 ett_t124_NonStandardParameter, NonStandardParameter_sequence);
471 return offset;
476 static int
477 dissect_t124_TextString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
478 offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
479 0, 255, false);
481 return offset;
486 static int
487 dissect_t124_SimpleTextString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
488 offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
489 0, 255, false);
491 return offset;
496 static int
497 dissect_t124_SimpleNumericString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
498 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
499 1, 255, false, "0123456789", 10,
500 NULL);
502 return offset;
507 static int
508 dissect_t124_DiallingString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
509 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
510 1, 16, false, "0123456789", 10,
511 NULL);
513 return offset;
518 static int
519 dissect_t124_SubAddressString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
520 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
521 1, 40, false, "0123456789", 10,
522 NULL);
524 return offset;
529 static int
530 dissect_t124_ExtraDiallingString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
531 offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_t124_TextString,
532 "TextString", 1, 255, false);
534 return offset;
539 static int
540 dissect_t124_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
541 tvbuff_t *next_tvb = NULL;
542 tvbuff_t *t124NSIdentifier = (tvbuff_t*)actx->private_data;
543 uint8_t *ns = NULL;
545 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
546 NO_BOUND, NO_BOUND, false, &next_tvb);
549 if(next_tvb && t124NSIdentifier) {
551 ns = tvb_get_string_enc(actx->pinfo->pool, t124NSIdentifier, 0, tvb_reported_length(t124NSIdentifier), ENC_ASCII|ENC_NA);
552 if(ns != NULL) {
553 dissector_try_string_with_data(t124_ns_dissector_table, ns, next_tvb, actx->pinfo, top_tree, false, NULL);
558 return offset;
562 static const per_sequence_t UserData_item_sequence[] = {
563 { &hf_t124_key , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Key },
564 { &hf_t124_value , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_t124_T_value },
565 { NULL, 0, 0, NULL }
568 static int
569 dissect_t124_UserData_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
570 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
571 ett_t124_UserData_item, UserData_item_sequence);
573 return offset;
577 static const per_sequence_t UserData_set_of[1] = {
578 { &hf_t124_UserData_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserData_item },
581 static int
582 dissect_t124_UserData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
583 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
584 ett_t124_UserData, UserData_set_of);
586 return offset;
590 static const per_sequence_t Password_sequence[] = {
591 { &hf_t124_numeric , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_SimpleNumericString },
592 { &hf_t124_text , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SimpleTextString },
593 { &hf_t124_unicodeText , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_TextString },
594 { NULL, 0, 0, NULL }
597 static int
598 dissect_t124_Password(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
599 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
600 ett_t124_Password, Password_sequence);
602 return offset;
606 static const value_string t124_PasswordSelector_vals[] = {
607 { 0, "numeric" },
608 { 1, "text" },
609 { 2, "unicodeText" },
610 { 0, NULL }
613 static const per_choice_t PasswordSelector_choice[] = {
614 { 0, &hf_t124_numeric , ASN1_EXTENSION_ROOT , dissect_t124_SimpleNumericString },
615 { 1, &hf_t124_text , ASN1_EXTENSION_ROOT , dissect_t124_SimpleTextString },
616 { 2, &hf_t124_unicodeText , ASN1_NOT_EXTENSION_ROOT, dissect_t124_TextString },
617 { 0, NULL, 0, NULL }
620 static int
621 dissect_t124_PasswordSelector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
622 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
623 ett_t124_PasswordSelector, PasswordSelector_choice,
624 NULL);
626 return offset;
630 static const value_string t124_ChallengeResponseItem_vals[] = {
631 { 0, "passwordString" },
632 { 1, "responseData" },
633 { 0, NULL }
636 static const per_choice_t ChallengeResponseItem_choice[] = {
637 { 0, &hf_t124_passwordString , ASN1_EXTENSION_ROOT , dissect_t124_PasswordSelector },
638 { 1, &hf_t124_responseData , ASN1_EXTENSION_ROOT , dissect_t124_UserData },
639 { 0, NULL, 0, NULL }
642 static int
643 dissect_t124_ChallengeResponseItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
644 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
645 ett_t124_ChallengeResponseItem, ChallengeResponseItem_choice,
646 NULL);
648 return offset;
653 static int
654 dissect_t124_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
655 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
657 return offset;
661 static const value_string t124_ChallengeResponseAlgorithm_vals[] = {
662 { 0, "passwordInTheClear" },
663 { 1, "nonStandardAlgorithm" },
664 { 0, NULL }
667 static const per_choice_t ChallengeResponseAlgorithm_choice[] = {
668 { 0, &hf_t124_passwordInTheClear, ASN1_EXTENSION_ROOT , dissect_t124_NULL },
669 { 1, &hf_t124_nonStandardAlgorithm, ASN1_EXTENSION_ROOT , dissect_t124_NonStandardParameter },
670 { 0, NULL, 0, NULL }
673 static int
674 dissect_t124_ChallengeResponseAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
675 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
676 ett_t124_ChallengeResponseAlgorithm, ChallengeResponseAlgorithm_choice,
677 NULL);
679 return offset;
683 static const per_sequence_t ChallengeItem_sequence[] = {
684 { &hf_t124_responseAlgorithm, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseAlgorithm },
685 { &hf_t124_challengeData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_UserData },
686 { NULL, 0, 0, NULL }
689 static int
690 dissect_t124_ChallengeItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
691 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
692 ett_t124_ChallengeItem, ChallengeItem_sequence);
694 return offset;
699 static int
700 dissect_t124_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
701 offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
703 return offset;
707 static const per_sequence_t SET_OF_ChallengeItem_set_of[1] = {
708 { &hf_t124_challengeSet_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeItem },
711 static int
712 dissect_t124_SET_OF_ChallengeItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
713 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
714 ett_t124_SET_OF_ChallengeItem, SET_OF_ChallengeItem_set_of);
716 return offset;
720 static const per_sequence_t ChallengeRequest_sequence[] = {
721 { &hf_t124_challengeTag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
722 { &hf_t124_challengeSet , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChallengeItem },
723 { NULL, 0, 0, NULL }
726 static int
727 dissect_t124_ChallengeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
728 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
729 ett_t124_ChallengeRequest, ChallengeRequest_sequence);
731 return offset;
735 static const per_sequence_t ChallengeResponse_sequence[] = {
736 { &hf_t124_challengeTag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
737 { &hf_t124_responseAlgorithm, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseAlgorithm },
738 { &hf_t124_responseItem , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseItem },
739 { NULL, 0, 0, NULL }
742 static int
743 dissect_t124_ChallengeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
744 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
745 ett_t124_ChallengeResponse, ChallengeResponse_sequence);
747 return offset;
751 static const per_sequence_t T_challengeRequestResponse_sequence[] = {
752 { &hf_t124_challengeRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ChallengeRequest },
753 { &hf_t124_challengeResponse, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ChallengeResponse },
754 { NULL, 0, 0, NULL }
757 static int
758 dissect_t124_T_challengeRequestResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
759 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
760 ett_t124_T_challengeRequestResponse, T_challengeRequestResponse_sequence);
762 return offset;
766 static const value_string t124_PasswordChallengeRequestResponse_vals[] = {
767 { 0, "passwordInTheClear" },
768 { 1, "challengeRequestResponse" },
769 { 0, NULL }
772 static const per_choice_t PasswordChallengeRequestResponse_choice[] = {
773 { 0, &hf_t124_passwordInTheClear_01, ASN1_EXTENSION_ROOT , dissect_t124_PasswordSelector },
774 { 1, &hf_t124_challengeRequestResponse, ASN1_EXTENSION_ROOT , dissect_t124_T_challengeRequestResponse },
775 { 0, NULL, 0, NULL }
778 static int
779 dissect_t124_PasswordChallengeRequestResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
780 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
781 ett_t124_PasswordChallengeRequestResponse, PasswordChallengeRequestResponse_choice,
782 NULL);
784 return offset;
788 static const per_sequence_t ConferenceName_sequence[] = {
789 { &hf_t124_numeric , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_SimpleNumericString },
790 { &hf_t124_text , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SimpleTextString },
791 { &hf_t124_unicodeText , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_TextString },
792 { NULL, 0, 0, NULL }
795 static int
796 dissect_t124_ConferenceName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
797 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
798 ett_t124_ConferenceName, ConferenceName_sequence);
800 return offset;
804 static const value_string t124_ConferenceNameSelector_vals[] = {
805 { 0, "numeric" },
806 { 1, "text" },
807 { 2, "unicodeText" },
808 { 0, NULL }
811 static const per_choice_t ConferenceNameSelector_choice[] = {
812 { 0, &hf_t124_numeric , ASN1_EXTENSION_ROOT , dissect_t124_SimpleNumericString },
813 { 1, &hf_t124_text , ASN1_EXTENSION_ROOT , dissect_t124_SimpleTextString },
814 { 2, &hf_t124_unicodeText , ASN1_NOT_EXTENSION_ROOT, dissect_t124_TextString },
815 { 0, NULL, 0, NULL }
818 static int
819 dissect_t124_ConferenceNameSelector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
820 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
821 ett_t124_ConferenceNameSelector, ConferenceNameSelector_choice,
822 NULL);
824 return offset;
829 static int
830 dissect_t124_ConferenceNameModifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
831 offset = dissect_t124_SimpleNumericString(tvb, offset, actx, tree, hf_index);
833 return offset;
837 static const value_string t124_Privilege_vals[] = {
838 { 0, "terminate" },
839 { 1, "ejectUser" },
840 { 2, "add" },
841 { 3, "lockUnlock" },
842 { 4, "transfer" },
843 { 0, NULL }
847 static int
848 dissect_t124_Privilege(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
849 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
850 5, NULL, true, 0, NULL);
852 return offset;
856 static const value_string t124_TerminationMethod_vals[] = {
857 { 0, "automatic" },
858 { 1, "manual" },
859 { 0, NULL }
863 static int
864 dissect_t124_TerminationMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
865 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
866 2, NULL, true, 0, NULL);
868 return offset;
872 static const value_string t124_ConferencePriorityScheme_vals[] = {
873 { 0, "nonStandardScheme" },
874 { 0, NULL }
877 static const per_choice_t ConferencePriorityScheme_choice[] = {
878 { 0, &hf_t124_nonStandardScheme, ASN1_EXTENSION_ROOT , dissect_t124_NonStandardParameter },
879 { 0, NULL, 0, NULL }
882 static int
883 dissect_t124_ConferencePriorityScheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
884 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
885 ett_t124_ConferencePriorityScheme, ConferencePriorityScheme_choice,
886 NULL);
888 return offset;
893 static int
894 dissect_t124_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
895 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
896 0U, 65535U, NULL, false);
898 return offset;
902 static const per_sequence_t ConferencePriority_sequence[] = {
903 { &hf_t124_priority , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_65535 },
904 { &hf_t124_scheme , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ConferencePriorityScheme },
905 { NULL, 0, 0, NULL }
908 static int
909 dissect_t124_ConferencePriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
910 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
911 ett_t124_ConferencePriority, ConferencePriority_sequence);
913 return offset;
917 static const value_string t124_NodeCategory_vals[] = {
918 { 0, "conventional" },
919 { 1, "counted" },
920 { 2, "anonymous" },
921 { 3, "nonStandardCategory" },
922 { 0, NULL }
925 static const per_choice_t NodeCategory_choice[] = {
926 { 0, &hf_t124_conventional , ASN1_EXTENSION_ROOT , dissect_t124_NULL },
927 { 1, &hf_t124_counted , ASN1_EXTENSION_ROOT , dissect_t124_NULL },
928 { 2, &hf_t124_anonymous , ASN1_EXTENSION_ROOT , dissect_t124_NULL },
929 { 3, &hf_t124_nonStandardCategory, ASN1_EXTENSION_ROOT , dissect_t124_NonStandardParameter },
930 { 0, NULL, 0, NULL }
933 static int
934 dissect_t124_NodeCategory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
935 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
936 ett_t124_NodeCategory, NodeCategory_choice,
937 NULL);
939 return offset;
943 static const value_string t124_ConferenceMode_vals[] = {
944 { 0, "conventional-only" },
945 { 1, "counted-only" },
946 { 2, "anonymous-only" },
947 { 3, "conventional-control" },
948 { 4, "unrestricted-mode" },
949 { 5, "non-standard-mode" },
950 { 0, NULL }
953 static const per_choice_t ConferenceMode_choice[] = {
954 { 0, &hf_t124_conventional_only, ASN1_EXTENSION_ROOT , dissect_t124_NULL },
955 { 1, &hf_t124_counted_only , ASN1_EXTENSION_ROOT , dissect_t124_NULL },
956 { 2, &hf_t124_anonymous_only , ASN1_EXTENSION_ROOT , dissect_t124_NULL },
957 { 3, &hf_t124_conventional_control, ASN1_EXTENSION_ROOT , dissect_t124_NULL },
958 { 4, &hf_t124_unrestricted_mode, ASN1_EXTENSION_ROOT , dissect_t124_NULL },
959 { 5, &hf_t124_non_standard_mode, ASN1_EXTENSION_ROOT , dissect_t124_NonStandardParameter },
960 { 0, NULL, 0, NULL }
963 static int
964 dissect_t124_ConferenceMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
965 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
966 ett_t124_ConferenceMode, ConferenceMode_choice,
967 NULL);
969 return offset;
974 static int
975 dissect_t124_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
976 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
978 return offset;
982 static const per_sequence_t T_transferModes_sequence[] = {
983 { &hf_t124_speech , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
984 { &hf_t124_voice_band , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
985 { &hf_t124_digital_56k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
986 { &hf_t124_digital_64k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
987 { &hf_t124_digital_128k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
988 { &hf_t124_digital_192k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
989 { &hf_t124_digital_256k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
990 { &hf_t124_digital_320k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
991 { &hf_t124_digital_384k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
992 { &hf_t124_digital_512k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
993 { &hf_t124_digital_768k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
994 { &hf_t124_digital_1152k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
995 { &hf_t124_digital_1472k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
996 { &hf_t124_digital_1536k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
997 { &hf_t124_digital_1920k , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
998 { &hf_t124_packet_mode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
999 { &hf_t124_frame_mode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1000 { &hf_t124_atm , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1001 { NULL, 0, 0, NULL }
1004 static int
1005 dissect_t124_T_transferModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1006 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1007 ett_t124_T_transferModes, T_transferModes_sequence);
1009 return offset;
1013 static const per_sequence_t T_highLayerCompatibility_sequence[] = {
1014 { &hf_t124_telephony3kHz , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1015 { &hf_t124_telephony7kHz , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1016 { &hf_t124_videotelephony , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1017 { &hf_t124_videoconference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1018 { &hf_t124_audiographic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1019 { &hf_t124_audiovisual , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1020 { &hf_t124_multimedia , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1021 { NULL, 0, 0, NULL }
1024 static int
1025 dissect_t124_T_highLayerCompatibility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1026 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1027 ett_t124_T_highLayerCompatibility, T_highLayerCompatibility_sequence);
1029 return offset;
1033 static const per_sequence_t T_aggregatedChannel_sequence[] = {
1034 { &hf_t124_transferModes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_T_transferModes },
1035 { &hf_t124_internationalNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_DiallingString },
1036 { &hf_t124_subAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SubAddressString },
1037 { &hf_t124_extraDialling , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ExtraDiallingString },
1038 { &hf_t124_highLayerCompatibility, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_T_highLayerCompatibility },
1039 { NULL, 0, 0, NULL }
1042 static int
1043 dissect_t124_T_aggregatedChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1044 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1045 ett_t124_T_aggregatedChannel, T_aggregatedChannel_sequence);
1047 return offset;
1052 static int
1053 dissect_t124_OCTET_STRING_SIZE_1_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1054 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1055 1, 20, false, NULL);
1057 return offset;
1061 static const per_sequence_t T_transportConnection_sequence[] = {
1062 { &hf_t124_nsapAddress , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING_SIZE_1_20 },
1063 { &hf_t124_transportSelector, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_t124_OCTET_STRING },
1064 { NULL, 0, 0, NULL }
1067 static int
1068 dissect_t124_T_transportConnection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1069 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1070 ett_t124_T_transportConnection, T_transportConnection_sequence);
1072 return offset;
1076 static const value_string t124_NetworkAddress_item_vals[] = {
1077 { 0, "aggregatedChannel" },
1078 { 1, "transportConnection" },
1079 { 2, "nonStandard" },
1080 { 0, NULL }
1083 static const per_choice_t NetworkAddress_item_choice[] = {
1084 { 0, &hf_t124_aggregatedChannel, ASN1_EXTENSION_ROOT , dissect_t124_T_aggregatedChannel },
1085 { 1, &hf_t124_transportConnection, ASN1_EXTENSION_ROOT , dissect_t124_T_transportConnection },
1086 { 2, &hf_t124_nonStandard , ASN1_EXTENSION_ROOT , dissect_t124_NonStandardParameter },
1087 { 0, NULL, 0, NULL }
1090 static int
1091 dissect_t124_NetworkAddress_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1092 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1093 ett_t124_NetworkAddress_item, NetworkAddress_item_choice,
1094 NULL);
1096 return offset;
1100 static const per_sequence_t NetworkAddress_sequence_of[1] = {
1101 { &hf_t124_NetworkAddress_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_NetworkAddress_item },
1104 static int
1105 dissect_t124_NetworkAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1106 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1107 ett_t124_NetworkAddress, NetworkAddress_sequence_of,
1108 1, 64, false);
1110 return offset;
1114 static const value_string t124_NodeType_vals[] = {
1115 { 0, "terminal" },
1116 { 1, "multiportTerminal" },
1117 { 2, "mcu" },
1118 { 0, NULL }
1122 static int
1123 dissect_t124_NodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1124 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1125 3, NULL, true, 0, NULL);
1127 return offset;
1132 static int
1133 dissect_t124_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1134 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1135 0U, 4294967295U, NULL, false);
1137 return offset;
1141 static const value_string t124_AsymmetryIndicator_vals[] = {
1142 { 0, "callingNode" },
1143 { 1, "calledNode" },
1144 { 2, "unknown" },
1145 { 0, NULL }
1148 static const per_choice_t AsymmetryIndicator_choice[] = {
1149 { 0, &hf_t124_callingNode , ASN1_NO_EXTENSIONS , dissect_t124_NULL },
1150 { 1, &hf_t124_calledNode , ASN1_NO_EXTENSIONS , dissect_t124_NULL },
1151 { 2, &hf_t124_unknown , ASN1_NO_EXTENSIONS , dissect_t124_INTEGER_0_4294967295 },
1152 { 0, NULL, 0, NULL }
1155 static int
1156 dissect_t124_AsymmetryIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1157 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1158 ett_t124_AsymmetryIndicator, AsymmetryIndicator_choice,
1159 NULL);
1161 return offset;
1165 static const per_sequence_t ConferenceDescriptor_sequence[] = {
1166 { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1167 { &hf_t124_conferenceNameModifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ConferenceNameModifier },
1168 { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1169 { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1170 { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1171 { &hf_t124_networkAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_NetworkAddress },
1172 { &hf_t124_defaultConferenceFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1173 { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_t124_ConferenceMode },
1174 { NULL, 0, 0, NULL }
1177 static int
1178 dissect_t124_ConferenceDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1179 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1180 ett_t124_ConferenceDescriptor, ConferenceDescriptor_sequence);
1182 return offset;
1186 static const per_sequence_t SET_OF_Privilege_set_of[1] = {
1187 { &hf_t124_conductorPrivileges_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Privilege },
1190 static int
1191 dissect_t124_SET_OF_Privilege(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1192 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1193 ett_t124_SET_OF_Privilege, SET_OF_Privilege_set_of);
1195 return offset;
1199 static const per_sequence_t ConferenceCreateRequest_sequence[] = {
1200 { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1201 { &hf_t124_convenerPassword, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_Password },
1202 { &hf_t124_password , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_Password },
1203 { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1204 { &hf_t124_listedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1205 { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1206 { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1207 { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1208 { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1209 { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1210 { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1211 { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1212 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1213 { &hf_t124_conferencePriority, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_ConferencePriority },
1214 { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_ConferenceMode },
1215 { NULL, 0, 0, NULL }
1218 static int
1219 dissect_t124_ConferenceCreateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1220 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1221 ett_t124_ConferenceCreateRequest, ConferenceCreateRequest_sequence);
1223 return offset;
1227 static const value_string t124_T_result_vals[] = {
1228 { 0, "success" },
1229 { 1, "userRejected" },
1230 { 2, "resourcesNotAvailable" },
1231 { 3, "rejectedForSymmetryBreaking" },
1232 { 4, "lockedConferenceNotSupported" },
1233 { 0, NULL }
1237 static int
1238 dissect_t124_T_result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1239 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1240 5, NULL, true, 0, NULL);
1242 return offset;
1246 static const per_sequence_t ConferenceCreateResponse_sequence[] = {
1247 { &hf_t124_nodeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1248 { &hf_t124_tag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1249 { &hf_t124_result , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_T_result },
1250 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1251 { NULL, 0, 0, NULL }
1254 static int
1255 dissect_t124_ConferenceCreateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1256 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1257 ett_t124_ConferenceCreateResponse, ConferenceCreateResponse_sequence);
1259 return offset;
1263 static const per_sequence_t ConferenceQueryRequest_sequence[] = {
1264 { &hf_t124_nodeType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_NodeType },
1265 { &hf_t124_asymmetryIndicator, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_AsymmetryIndicator },
1266 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1267 { NULL, 0, 0, NULL }
1270 static int
1271 dissect_t124_ConferenceQueryRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1272 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1273 ett_t124_ConferenceQueryRequest, ConferenceQueryRequest_sequence);
1275 return offset;
1279 static const per_sequence_t SET_OF_ConferenceDescriptor_set_of[1] = {
1280 { &hf_t124_conferenceList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceDescriptor },
1283 static int
1284 dissect_t124_SET_OF_ConferenceDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1285 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1286 ett_t124_SET_OF_ConferenceDescriptor, SET_OF_ConferenceDescriptor_set_of);
1288 return offset;
1292 static const value_string t124_QueryResponseResult_vals[] = {
1293 { 0, "success" },
1294 { 1, "userRejected" },
1295 { 0, NULL }
1299 static int
1300 dissect_t124_QueryResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1301 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1302 2, NULL, true, 0, NULL);
1304 return offset;
1308 static const per_sequence_t ConferenceQueryResponse_sequence[] = {
1309 { &hf_t124_nodeType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_NodeType },
1310 { &hf_t124_asymmetryIndicator, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_AsymmetryIndicator },
1311 { &hf_t124_conferenceList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ConferenceDescriptor },
1312 { &hf_t124_queryResponseResult, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_QueryResponseResult },
1313 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1314 { &hf_t124_waitForInvitationFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_BOOLEAN },
1315 { &hf_t124_noUnlistedConferenceFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_BOOLEAN },
1316 { NULL, 0, 0, NULL }
1319 static int
1320 dissect_t124_ConferenceQueryResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1321 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1322 ett_t124_ConferenceQueryResponse, ConferenceQueryResponse_sequence);
1324 return offset;
1328 static const per_sequence_t ConferenceJoinRequest_sequence[] = {
1329 { &hf_t124_conferenceName_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ConferenceNameSelector },
1330 { &hf_t124_conferenceNameModifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ConferenceNameModifier },
1331 { &hf_t124_tag , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_INTEGER },
1332 { &hf_t124_password_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_PasswordChallengeRequestResponse },
1333 { &hf_t124_convenerPassword_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_PasswordSelector },
1334 { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1335 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1336 { &hf_t124_nodeCategory , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_NodeCategory },
1337 { NULL, 0, 0, NULL }
1340 static int
1341 dissect_t124_ConferenceJoinRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1342 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1343 ett_t124_ConferenceJoinRequest, ConferenceJoinRequest_sequence);
1345 return offset;
1349 static const value_string t124_JoinResponseResult_vals[] = {
1350 { 0, "success" },
1351 { 1, "userRejected" },
1352 { 2, "invalidConference" },
1353 { 3, "invalidPassword" },
1354 { 4, "invalidConvenerPassword" },
1355 { 5, "challengeResponseRequired" },
1356 { 6, "invalidChallengeResponse" },
1357 { 0, NULL }
1361 static int
1362 dissect_t124_JoinResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1363 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1364 7, NULL, true, 0, NULL);
1366 return offset;
1370 static const per_sequence_t ConferenceJoinResponse_sequence[] = {
1371 { &hf_t124_nodeID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserID },
1372 { &hf_t124_topNodeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1373 { &hf_t124_tag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1374 { &hf_t124_conferenceNameAlias, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_ConferenceNameSelector },
1375 { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1376 { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1377 { &hf_t124_listedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1378 { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1379 { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1380 { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1381 { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1382 { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1383 { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1384 { &hf_t124_password_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_PasswordChallengeRequestResponse },
1385 { &hf_t124_joinResponseResult, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_JoinResponseResult },
1386 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1387 { &hf_t124_nodeCategory , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_NodeCategory },
1388 { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_ConferenceMode },
1389 { NULL, 0, 0, NULL }
1392 static int
1393 dissect_t124_ConferenceJoinResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1394 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1395 ett_t124_ConferenceJoinResponse, ConferenceJoinResponse_sequence);
1397 return offset;
1401 static const per_sequence_t ConferenceInviteRequest_sequence[] = {
1402 { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1403 { &hf_t124_nodeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1404 { &hf_t124_topNodeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1405 { &hf_t124_tag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1406 { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1407 { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1408 { &hf_t124_listedConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1409 { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1410 { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1411 { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1412 { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1413 { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_SET_OF_Privilege },
1414 { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1415 { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_TextString },
1416 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1417 { &hf_t124_conferencePriority, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_ConferencePriority },
1418 { &hf_t124_nodeCategory , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_NodeCategory },
1419 { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_t124_ConferenceMode },
1420 { NULL, 0, 0, NULL }
1423 static int
1424 dissect_t124_ConferenceInviteRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1425 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1426 ett_t124_ConferenceInviteRequest, ConferenceInviteRequest_sequence);
1428 return offset;
1432 static const value_string t124_InviteResponseResult_vals[] = {
1433 { 0, "success" },
1434 { 1, "userRejected" },
1435 { 0, NULL }
1439 static int
1440 dissect_t124_InviteResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1441 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1442 2, NULL, true, 0, NULL);
1444 return offset;
1448 static const per_sequence_t ConferenceInviteResponse_sequence[] = {
1449 { &hf_t124_inviteResponseResult, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_t124_InviteResponseResult },
1450 { &hf_t124_userData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_t124_UserData },
1451 { NULL, 0, 0, NULL }
1454 static int
1455 dissect_t124_ConferenceInviteResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1456 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1457 ett_t124_ConferenceInviteResponse, ConferenceInviteResponse_sequence);
1459 return offset;
1464 static int
1465 dissect_t124_T_connectPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1466 tvbuff_t *next_tvb = NULL;
1467 proto_tree *next_tree = NULL;
1468 int old_offset = 0;
1470 old_offset = offset;
1471 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1472 NO_BOUND, NO_BOUND, false, &next_tvb);
1474 if(next_tvb) {
1475 /* "2a -> ConnectData::connectPDU length = 42 bytes */
1476 /* This length MUST be ignored by the client." */
1478 /* Not sure why - but lets ignore the length. */
1479 /* We assume the OCTET STRING is all of the remaining bytes */
1481 if(tvb_reported_length(next_tvb) == 42) {
1482 /* this is perhaps a naive ... */
1483 next_tvb = tvb_new_subset_remaining(tvb, (old_offset>>3)+1);
1486 next_tree = proto_item_add_subtree(actx->created_item, ett_t124_connectGCCPDU);
1488 dissect_t124_ConnectGCCPDU(next_tvb, 0, actx, next_tree, hf_t124_connectGCCPDU);
1492 return offset;
1496 static const per_sequence_t ConnectData_sequence[] = {
1497 { &hf_t124_t124Identifier , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Key },
1498 { &hf_t124_connectPDU , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_T_connectPDU },
1499 { NULL, 0, 0, NULL }
1503 dissect_t124_ConnectData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1504 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1505 ett_t124_ConnectData, ConnectData_sequence);
1507 return offset;
1511 const value_string t124_ConnectGCCPDU_vals[] = {
1512 { 0, "conferenceCreateRequest" },
1513 { 1, "conferenceCreateResponse" },
1514 { 2, "conferenceQueryRequest" },
1515 { 3, "conferenceQueryResponse" },
1516 { 4, "conferenceJoinRequest" },
1517 { 5, "conferenceJoinResponse" },
1518 { 6, "conferenceInviteRequest" },
1519 { 7, "conferenceInviteResponse" },
1520 { 0, NULL }
1523 static const per_choice_t ConnectGCCPDU_choice[] = {
1524 { 0, &hf_t124_conferenceCreateRequest, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceCreateRequest },
1525 { 1, &hf_t124_conferenceCreateResponse, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceCreateResponse },
1526 { 2, &hf_t124_conferenceQueryRequest, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceQueryRequest },
1527 { 3, &hf_t124_conferenceQueryResponse, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceQueryResponse },
1528 { 4, &hf_t124_conferenceJoinRequest, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceJoinRequest },
1529 { 5, &hf_t124_conferenceJoinResponse, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceJoinResponse },
1530 { 6, &hf_t124_conferenceInviteRequest, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceInviteRequest },
1531 { 7, &hf_t124_conferenceInviteResponse, ASN1_EXTENSION_ROOT , dissect_t124_ConferenceInviteResponse },
1532 { 0, NULL, 0, NULL }
1536 dissect_t124_ConnectGCCPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1537 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1538 ett_t124_ConnectGCCPDU, ConnectGCCPDU_choice,
1539 NULL);
1541 return offset;
1546 static int
1547 dissect_t124_ChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1549 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1550 0U, 65535U, &channelId, false);
1553 if(hf_index == hf_t124_channelId_03)
1554 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%d", channelId);
1558 return offset;
1563 static int
1564 dissect_t124_StaticChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1565 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1566 1U, 1000U, NULL, false);
1568 return offset;
1573 static int
1574 dissect_t124_DynamicChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1575 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1576 1001U, 65535U, NULL, false);
1578 return offset;
1583 static int
1584 dissect_t124_UserId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1585 offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1587 return offset;
1592 static int
1593 dissect_t124_PrivateChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1594 offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1596 return offset;
1601 static int
1602 dissect_t124_AssignedChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1603 offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1605 return offset;
1610 static int
1611 dissect_t124_TokenId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1612 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1613 1U, 65535U, NULL, false);
1615 return offset;
1619 static const value_string t124_TokenStatus_vals[] = {
1620 { 0, "notInUse" },
1621 { 1, "selfGrabbed" },
1622 { 2, "otherGrabbed" },
1623 { 3, "selfInhibited" },
1624 { 4, "otherInhibited" },
1625 { 5, "selfRecipient" },
1626 { 6, "selfGiving" },
1627 { 7, "otherGiving" },
1628 { 0, NULL }
1632 static int
1633 dissect_t124_TokenStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1634 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1635 8, NULL, false, 0, NULL);
1637 return offset;
1641 static const value_string t124_DataPriority_vals[] = {
1642 { 0, "top" },
1643 { 1, "high" },
1644 { 2, "medium" },
1645 { 3, "low" },
1646 { 0, NULL }
1650 static int
1651 dissect_t124_DataPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1652 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1653 4, NULL, false, 0, NULL);
1655 return offset;
1659 static int * const Segmentation_bits[] = {
1660 &hf_t124_Segmentation_begin,
1661 &hf_t124_Segmentation_end,
1662 NULL
1665 static int
1666 dissect_t124_Segmentation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1667 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1668 2, 2, false, Segmentation_bits, 2, NULL, NULL);
1670 return offset;
1675 static int
1676 dissect_t124_INTEGER_0_MAX(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1677 offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
1678 0U, NO_BOUND, NULL, false);
1680 return offset;
1684 static const per_sequence_t PlumbDomainIndication_sequence[] = {
1685 { &hf_t124_heightLimit , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1686 { NULL, 0, 0, NULL }
1689 static int
1690 dissect_t124_PlumbDomainIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1691 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1692 ett_t124_PlumbDomainIndication, PlumbDomainIndication_sequence);
1694 return offset;
1698 static const per_sequence_t ErectDomainRequest_sequence[] = {
1699 { &hf_t124_subHeight , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1700 { &hf_t124_subInterval , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1701 { NULL, 0, 0, NULL }
1704 static int
1705 dissect_t124_ErectDomainRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1706 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1707 ett_t124_ErectDomainRequest, ErectDomainRequest_sequence);
1709 return offset;
1713 static const per_sequence_t T_static_sequence[] = {
1714 { &hf_t124_channelId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_StaticChannelId },
1715 { NULL, 0, 0, NULL }
1718 static int
1719 dissect_t124_T_static(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1720 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1721 ett_t124_T_static, T_static_sequence);
1723 return offset;
1727 static const per_sequence_t T_userId_sequence[] = {
1728 { &hf_t124_joined , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1729 { &hf_t124_userId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1730 { NULL, 0, 0, NULL }
1733 static int
1734 dissect_t124_T_userId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1735 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1736 ett_t124_T_userId, T_userId_sequence);
1738 return offset;
1742 static const per_sequence_t SET_OF_UserId_set_of[1] = {
1743 { &hf_t124_admitted_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1746 static int
1747 dissect_t124_SET_OF_UserId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1748 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1749 ett_t124_SET_OF_UserId, SET_OF_UserId_set_of);
1751 return offset;
1755 static const per_sequence_t T_private_sequence[] = {
1756 { &hf_t124_joined , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1757 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
1758 { &hf_t124_manager , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1759 { &hf_t124_admitted , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1760 { NULL, 0, 0, NULL }
1763 static int
1764 dissect_t124_T_private(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1765 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1766 ett_t124_T_private, T_private_sequence);
1768 return offset;
1772 static const per_sequence_t T_assigned_sequence[] = {
1773 { &hf_t124_channelId_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_AssignedChannelId },
1774 { NULL, 0, 0, NULL }
1777 static int
1778 dissect_t124_T_assigned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1779 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1780 ett_t124_T_assigned, T_assigned_sequence);
1782 return offset;
1786 static const value_string t124_ChannelAttributes_vals[] = {
1787 { 0, "static" },
1788 { 1, "userId" },
1789 { 2, "private" },
1790 { 3, "assigned" },
1791 { 0, NULL }
1794 static const per_choice_t ChannelAttributes_choice[] = {
1795 { 0, &hf_t124_static , ASN1_NO_EXTENSIONS , dissect_t124_T_static },
1796 { 1, &hf_t124_userId , ASN1_NO_EXTENSIONS , dissect_t124_T_userId },
1797 { 2, &hf_t124_private , ASN1_NO_EXTENSIONS , dissect_t124_T_private },
1798 { 3, &hf_t124_assigned , ASN1_NO_EXTENSIONS , dissect_t124_T_assigned },
1799 { 0, NULL, 0, NULL }
1802 static int
1803 dissect_t124_ChannelAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1804 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1805 ett_t124_ChannelAttributes, ChannelAttributes_choice,
1806 NULL);
1808 return offset;
1812 static const per_sequence_t SET_OF_ChannelAttributes_set_of[1] = {
1813 { &hf_t124_mergeChannels_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelAttributes },
1816 static int
1817 dissect_t124_SET_OF_ChannelAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1818 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1819 ett_t124_SET_OF_ChannelAttributes, SET_OF_ChannelAttributes_set_of);
1821 return offset;
1825 static const per_sequence_t SET_OF_ChannelId_set_of[1] = {
1826 { &hf_t124_purgeChannelIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
1829 static int
1830 dissect_t124_SET_OF_ChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1831 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1832 ett_t124_SET_OF_ChannelId, SET_OF_ChannelId_set_of);
1834 return offset;
1838 static const per_sequence_t MergeChannelsRequest_sequence[] = {
1839 { &hf_t124_mergeChannels , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelAttributes },
1840 { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1841 { NULL, 0, 0, NULL }
1844 static int
1845 dissect_t124_MergeChannelsRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1846 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1847 ett_t124_MergeChannelsRequest, MergeChannelsRequest_sequence);
1849 return offset;
1853 static const per_sequence_t MergeChannelsConfirm_sequence[] = {
1854 { &hf_t124_mergeChannels , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelAttributes },
1855 { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1856 { NULL, 0, 0, NULL }
1859 static int
1860 dissect_t124_MergeChannelsConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1861 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1862 ett_t124_MergeChannelsConfirm, MergeChannelsConfirm_sequence);
1864 return offset;
1868 static const per_sequence_t PurgeChannelsIndication_sequence[] = {
1869 { &hf_t124_detachUserIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1870 { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1871 { NULL, 0, 0, NULL }
1874 static int
1875 dissect_t124_PurgeChannelsIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1876 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1877 ett_t124_PurgeChannelsIndication, PurgeChannelsIndication_sequence);
1879 return offset;
1883 static const per_sequence_t T_grabbed_sequence[] = {
1884 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1885 { &hf_t124_grabber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1886 { NULL, 0, 0, NULL }
1889 static int
1890 dissect_t124_T_grabbed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1891 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1892 ett_t124_T_grabbed, T_grabbed_sequence);
1894 return offset;
1898 static const per_sequence_t T_inhibited_sequence[] = {
1899 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1900 { &hf_t124_inhibitors , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1901 { NULL, 0, 0, NULL }
1904 static int
1905 dissect_t124_T_inhibited(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1906 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1907 ett_t124_T_inhibited, T_inhibited_sequence);
1909 return offset;
1913 static const per_sequence_t T_giving_sequence[] = {
1914 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1915 { &hf_t124_grabber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1916 { &hf_t124_recipient , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1917 { NULL, 0, 0, NULL }
1920 static int
1921 dissect_t124_T_giving(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1922 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1923 ett_t124_T_giving, T_giving_sequence);
1925 return offset;
1929 static const per_sequence_t T_ungivable_sequence[] = {
1930 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1931 { &hf_t124_grabber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1932 { NULL, 0, 0, NULL }
1935 static int
1936 dissect_t124_T_ungivable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1937 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1938 ett_t124_T_ungivable, T_ungivable_sequence);
1940 return offset;
1944 static const per_sequence_t T_given_sequence[] = {
1945 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1946 { &hf_t124_recipient , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1947 { NULL, 0, 0, NULL }
1950 static int
1951 dissect_t124_T_given(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1952 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1953 ett_t124_T_given, T_given_sequence);
1955 return offset;
1959 static const value_string t124_TokenAttributes_vals[] = {
1960 { 0, "grabbed" },
1961 { 1, "inhibited" },
1962 { 2, "giving" },
1963 { 3, "ungivable" },
1964 { 4, "given" },
1965 { 0, NULL }
1968 static const per_choice_t TokenAttributes_choice[] = {
1969 { 0, &hf_t124_grabbed , ASN1_NO_EXTENSIONS , dissect_t124_T_grabbed },
1970 { 1, &hf_t124_inhibited , ASN1_NO_EXTENSIONS , dissect_t124_T_inhibited },
1971 { 2, &hf_t124_giving , ASN1_NO_EXTENSIONS , dissect_t124_T_giving },
1972 { 3, &hf_t124_ungivable , ASN1_NO_EXTENSIONS , dissect_t124_T_ungivable },
1973 { 4, &hf_t124_given , ASN1_NO_EXTENSIONS , dissect_t124_T_given },
1974 { 0, NULL, 0, NULL }
1977 static int
1978 dissect_t124_TokenAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1979 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1980 ett_t124_TokenAttributes, TokenAttributes_choice,
1981 NULL);
1983 return offset;
1987 static const per_sequence_t SET_OF_TokenAttributes_set_of[1] = {
1988 { &hf_t124_mergeTokens_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenAttributes },
1991 static int
1992 dissect_t124_SET_OF_TokenAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1993 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1994 ett_t124_SET_OF_TokenAttributes, SET_OF_TokenAttributes_set_of);
1996 return offset;
2000 static const per_sequence_t SET_OF_TokenId_set_of[1] = {
2001 { &hf_t124_purgeTokenIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2004 static int
2005 dissect_t124_SET_OF_TokenId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2006 offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
2007 ett_t124_SET_OF_TokenId, SET_OF_TokenId_set_of);
2009 return offset;
2013 static const per_sequence_t MergeTokensRequest_sequence[] = {
2014 { &hf_t124_mergeTokens , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenAttributes },
2015 { &hf_t124_purgeTokenIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2016 { NULL, 0, 0, NULL }
2019 static int
2020 dissect_t124_MergeTokensRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2021 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2022 ett_t124_MergeTokensRequest, MergeTokensRequest_sequence);
2024 return offset;
2028 static const per_sequence_t MergeTokensConfirm_sequence[] = {
2029 { &hf_t124_mergeTokens , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenAttributes },
2030 { &hf_t124_purgeTokenIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2031 { NULL, 0, 0, NULL }
2034 static int
2035 dissect_t124_MergeTokensConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2036 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2037 ett_t124_MergeTokensConfirm, MergeTokensConfirm_sequence);
2039 return offset;
2043 static const per_sequence_t PurgeTokensIndication_sequence[] = {
2044 { &hf_t124_purgeTokenIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2045 { NULL, 0, 0, NULL }
2048 static int
2049 dissect_t124_PurgeTokensIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2050 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2051 ett_t124_PurgeTokensIndication, PurgeTokensIndication_sequence);
2053 return offset;
2057 static const value_string t124_Reason_vals[] = {
2058 { 0, "rn-domain-disconnected" },
2059 { 1, "rn-provider-initiated" },
2060 { 2, "rn-token-purged" },
2061 { 3, "rn-user-requested" },
2062 { 4, "rn-channel-purged" },
2063 { 0, NULL }
2067 static int
2068 dissect_t124_Reason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2069 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2070 5, NULL, false, 0, NULL);
2072 return offset;
2076 static const per_sequence_t DisconnectProviderUltimatum_sequence[] = {
2077 { &hf_t124_reason , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2078 { NULL, 0, 0, NULL }
2081 static int
2082 dissect_t124_DisconnectProviderUltimatum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2083 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2084 ett_t124_DisconnectProviderUltimatum, DisconnectProviderUltimatum_sequence);
2086 return offset;
2090 static const value_string t124_Diagnostic_vals[] = {
2091 { 0, "dc-inconsistent-merge" },
2092 { 1, "dc-forbidden-PDU-downward" },
2093 { 2, "dc-forbidden-PDU-upward" },
2094 { 3, "dc-invalid-BER-encoding" },
2095 { 4, "dc-invalid-PER-encoding" },
2096 { 5, "dc-misrouted-user" },
2097 { 6, "dc-unrequested-confirm" },
2098 { 7, "dc-wrong-transport-priority" },
2099 { 8, "dc-channel-id-conflict" },
2100 { 9, "dc-token-id-conflict" },
2101 { 10, "dc-not-user-id-channel" },
2102 { 11, "dc-too-many-channels" },
2103 { 12, "dc-too-many-tokens" },
2104 { 13, "dc-too-many-users" },
2105 { 0, NULL }
2109 static int
2110 dissect_t124_Diagnostic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2111 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2112 14, NULL, false, 0, NULL);
2114 return offset;
2118 static const per_sequence_t RejectMCSPDUUltimatum_sequence[] = {
2119 { &hf_t124_diagnostic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Diagnostic },
2120 { &hf_t124_initialOctets , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2121 { NULL, 0, 0, NULL }
2124 static int
2125 dissect_t124_RejectMCSPDUUltimatum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2126 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2127 ett_t124_RejectMCSPDUUltimatum, RejectMCSPDUUltimatum_sequence);
2129 return offset;
2133 static const per_sequence_t AttachUserRequest_sequence[] = {
2134 { NULL, 0, 0, NULL }
2137 static int
2138 dissect_t124_AttachUserRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2139 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2140 ett_t124_AttachUserRequest, AttachUserRequest_sequence);
2142 return offset;
2146 static const value_string t124_Result_vals[] = {
2147 { 0, "rt-successful" },
2148 { 1, "rt-domain-merging" },
2149 { 2, "rt-domain-not-hierarchical" },
2150 { 3, "rt-no-such-channel" },
2151 { 4, "rt-no-such-domain" },
2152 { 5, "rt-no-such-user" },
2153 { 6, "rt-not-admitted" },
2154 { 7, "rt-other-user-id" },
2155 { 8, "rt-parameters-unacceptable" },
2156 { 9, "rt-token-not-available" },
2157 { 10, "rt-token-not-possessed" },
2158 { 11, "rt-too-many-channels" },
2159 { 12, "rt-too-many-tokens" },
2160 { 13, "rt-too-many-users" },
2161 { 14, "rt-unspecified-failure" },
2162 { 15, "rt-user-rejected" },
2163 { 0, NULL }
2167 static int
2168 dissect_t124_Result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2169 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2170 16, NULL, false, 0, NULL);
2172 return offset;
2176 static const per_sequence_t AttachUserConfirm_sequence[] = {
2177 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2178 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_t124_UserId },
2179 { NULL, 0, 0, NULL }
2182 static int
2183 dissect_t124_AttachUserConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2184 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2185 ett_t124_AttachUserConfirm, AttachUserConfirm_sequence);
2187 return offset;
2191 static const per_sequence_t DetachUserRequest_sequence[] = {
2192 { &hf_t124_reason , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2193 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2194 { NULL, 0, 0, NULL }
2197 static int
2198 dissect_t124_DetachUserRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2199 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2200 ett_t124_DetachUserRequest, DetachUserRequest_sequence);
2202 return offset;
2206 static const per_sequence_t DetachUserIndication_sequence[] = {
2207 { &hf_t124_reason , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2208 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2209 { NULL, 0, 0, NULL }
2212 static int
2213 dissect_t124_DetachUserIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2214 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2215 ett_t124_DetachUserIndication, DetachUserIndication_sequence);
2217 return offset;
2221 static const per_sequence_t ChannelJoinRequest_sequence[] = {
2222 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2223 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2224 { NULL, 0, 0, NULL }
2227 static int
2228 dissect_t124_ChannelJoinRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2229 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2230 ett_t124_ChannelJoinRequest, ChannelJoinRequest_sequence);
2232 return offset;
2236 static const per_sequence_t ChannelJoinConfirm_sequence[] = {
2237 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2238 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2239 { &hf_t124_requested , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2240 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_t124_ChannelId },
2241 { NULL, 0, 0, NULL }
2244 static int
2245 dissect_t124_ChannelJoinConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2246 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2247 ett_t124_ChannelJoinConfirm, ChannelJoinConfirm_sequence);
2249 return offset;
2253 static const per_sequence_t ChannelLeaveRequest_sequence[] = {
2254 { &hf_t124_channelIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
2255 { NULL, 0, 0, NULL }
2258 static int
2259 dissect_t124_ChannelLeaveRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2260 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2261 ett_t124_ChannelLeaveRequest, ChannelLeaveRequest_sequence);
2263 return offset;
2267 static const per_sequence_t ChannelConveneRequest_sequence[] = {
2268 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2269 { NULL, 0, 0, NULL }
2272 static int
2273 dissect_t124_ChannelConveneRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2274 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2275 ett_t124_ChannelConveneRequest, ChannelConveneRequest_sequence);
2277 return offset;
2281 static const per_sequence_t ChannelConveneConfirm_sequence[] = {
2282 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2283 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2284 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_t124_PrivateChannelId },
2285 { NULL, 0, 0, NULL }
2288 static int
2289 dissect_t124_ChannelConveneConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2290 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2291 ett_t124_ChannelConveneConfirm, ChannelConveneConfirm_sequence);
2293 return offset;
2297 static const per_sequence_t ChannelDisbandRequest_sequence[] = {
2298 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2299 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2300 { NULL, 0, 0, NULL }
2303 static int
2304 dissect_t124_ChannelDisbandRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2305 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2306 ett_t124_ChannelDisbandRequest, ChannelDisbandRequest_sequence);
2308 return offset;
2312 static const per_sequence_t ChannelDisbandIndication_sequence[] = {
2313 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2314 { NULL, 0, 0, NULL }
2317 static int
2318 dissect_t124_ChannelDisbandIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2319 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2320 ett_t124_ChannelDisbandIndication, ChannelDisbandIndication_sequence);
2322 return offset;
2326 static const per_sequence_t ChannelAdmitRequest_sequence[] = {
2327 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2328 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2329 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2330 { NULL, 0, 0, NULL }
2333 static int
2334 dissect_t124_ChannelAdmitRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2335 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2336 ett_t124_ChannelAdmitRequest, ChannelAdmitRequest_sequence);
2338 return offset;
2342 static const per_sequence_t ChannelAdmitIndication_sequence[] = {
2343 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2344 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2345 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2346 { NULL, 0, 0, NULL }
2349 static int
2350 dissect_t124_ChannelAdmitIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2351 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2352 ett_t124_ChannelAdmitIndication, ChannelAdmitIndication_sequence);
2354 return offset;
2358 static const per_sequence_t ChannelExpelRequest_sequence[] = {
2359 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2360 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2361 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2362 { NULL, 0, 0, NULL }
2365 static int
2366 dissect_t124_ChannelExpelRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2367 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2368 ett_t124_ChannelExpelRequest, ChannelExpelRequest_sequence);
2370 return offset;
2374 static const per_sequence_t ChannelExpelIndication_sequence[] = {
2375 { &hf_t124_channelId_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2376 { &hf_t124_userIds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2377 { NULL, 0, 0, NULL }
2380 static int
2381 dissect_t124_ChannelExpelIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2382 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2383 ett_t124_ChannelExpelIndication, ChannelExpelIndication_sequence);
2385 return offset;
2390 static int
2391 dissect_t124_T_userData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2392 tvbuff_t *next_tvb = NULL;
2394 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2395 NO_BOUND, NO_BOUND, false, &next_tvb);
2398 if(next_tvb) {
2400 dissector_try_uint_with_data(t124_sd_dissector_table, channelId, next_tvb, actx->pinfo, top_tree, false, NULL);
2405 return offset;
2409 static const per_sequence_t SendDataRequest_sequence[] = {
2410 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2411 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2412 { &hf_t124_dataPriority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2413 { &hf_t124_segmentation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2414 { &hf_t124_userData_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_T_userData },
2415 { NULL, 0, 0, NULL }
2418 static int
2419 dissect_t124_SendDataRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2420 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2421 ett_t124_SendDataRequest, SendDataRequest_sequence);
2423 return offset;
2428 static int
2429 dissect_t124_T_userData_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2430 tvbuff_t *next_tvb = NULL;
2432 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2433 NO_BOUND, NO_BOUND, false, &next_tvb);
2436 if(next_tvb) {
2438 dissector_try_uint(t124_sd_dissector_table, channelId, next_tvb, actx->pinfo, top_tree);
2443 return offset;
2447 static const per_sequence_t SendDataIndication_sequence[] = {
2448 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2449 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2450 { &hf_t124_dataPriority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2451 { &hf_t124_segmentation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2452 { &hf_t124_userData_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_T_userData_01 },
2453 { NULL, 0, 0, NULL }
2456 static int
2457 dissect_t124_SendDataIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2458 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2459 ett_t124_SendDataIndication, SendDataIndication_sequence);
2461 return offset;
2465 static const per_sequence_t UniformSendDataRequest_sequence[] = {
2466 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2467 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2468 { &hf_t124_dataPriority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2469 { &hf_t124_segmentation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2470 { &hf_t124_userData_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2471 { NULL, 0, 0, NULL }
2474 static int
2475 dissect_t124_UniformSendDataRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2476 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2477 ett_t124_UniformSendDataRequest, UniformSendDataRequest_sequence);
2479 return offset;
2483 static const per_sequence_t UniformSendDataIndication_sequence[] = {
2484 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2485 { &hf_t124_channelId_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2486 { &hf_t124_dataPriority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2487 { &hf_t124_segmentation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2488 { &hf_t124_userData_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2489 { NULL, 0, 0, NULL }
2492 static int
2493 dissect_t124_UniformSendDataIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2494 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2495 ett_t124_UniformSendDataIndication, UniformSendDataIndication_sequence);
2497 return offset;
2501 static const per_sequence_t TokenGrabRequest_sequence[] = {
2502 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2503 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2504 { NULL, 0, 0, NULL }
2507 static int
2508 dissect_t124_TokenGrabRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2509 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2510 ett_t124_TokenGrabRequest, TokenGrabRequest_sequence);
2512 return offset;
2516 static const per_sequence_t TokenGrabConfirm_sequence[] = {
2517 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2518 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2519 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2520 { &hf_t124_tokenStatus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2521 { NULL, 0, 0, NULL }
2524 static int
2525 dissect_t124_TokenGrabConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2526 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2527 ett_t124_TokenGrabConfirm, TokenGrabConfirm_sequence);
2529 return offset;
2533 static const per_sequence_t TokenInhibitRequest_sequence[] = {
2534 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2535 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2536 { NULL, 0, 0, NULL }
2539 static int
2540 dissect_t124_TokenInhibitRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2541 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2542 ett_t124_TokenInhibitRequest, TokenInhibitRequest_sequence);
2544 return offset;
2548 static const per_sequence_t TokenInhibitConfirm_sequence[] = {
2549 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2550 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2551 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2552 { &hf_t124_tokenStatus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2553 { NULL, 0, 0, NULL }
2556 static int
2557 dissect_t124_TokenInhibitConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2558 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2559 ett_t124_TokenInhibitConfirm, TokenInhibitConfirm_sequence);
2561 return offset;
2565 static const per_sequence_t TokenGiveRequest_sequence[] = {
2566 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2567 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2568 { &hf_t124_recipient , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2569 { NULL, 0, 0, NULL }
2572 static int
2573 dissect_t124_TokenGiveRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2574 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2575 ett_t124_TokenGiveRequest, TokenGiveRequest_sequence);
2577 return offset;
2581 static const per_sequence_t TokenGiveIndication_sequence[] = {
2582 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2583 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2584 { &hf_t124_recipient , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2585 { NULL, 0, 0, NULL }
2588 static int
2589 dissect_t124_TokenGiveIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2590 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2591 ett_t124_TokenGiveIndication, TokenGiveIndication_sequence);
2593 return offset;
2597 static const per_sequence_t TokenGiveResponse_sequence[] = {
2598 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2599 { &hf_t124_recipient , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2600 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2601 { NULL, 0, 0, NULL }
2604 static int
2605 dissect_t124_TokenGiveResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2606 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2607 ett_t124_TokenGiveResponse, TokenGiveResponse_sequence);
2609 return offset;
2613 static const per_sequence_t TokenGiveConfirm_sequence[] = {
2614 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2615 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2616 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2617 { &hf_t124_tokenStatus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2618 { NULL, 0, 0, NULL }
2621 static int
2622 dissect_t124_TokenGiveConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2623 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2624 ett_t124_TokenGiveConfirm, TokenGiveConfirm_sequence);
2626 return offset;
2630 static const per_sequence_t TokenPleaseRequest_sequence[] = {
2631 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2632 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2633 { NULL, 0, 0, NULL }
2636 static int
2637 dissect_t124_TokenPleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2638 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2639 ett_t124_TokenPleaseRequest, TokenPleaseRequest_sequence);
2641 return offset;
2645 static const per_sequence_t TokenPleaseIndication_sequence[] = {
2646 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2647 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2648 { NULL, 0, 0, NULL }
2651 static int
2652 dissect_t124_TokenPleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2653 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2654 ett_t124_TokenPleaseIndication, TokenPleaseIndication_sequence);
2656 return offset;
2660 static const per_sequence_t TokenReleaseRequest_sequence[] = {
2661 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2662 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2663 { NULL, 0, 0, NULL }
2666 static int
2667 dissect_t124_TokenReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2668 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2669 ett_t124_TokenReleaseRequest, TokenReleaseRequest_sequence);
2671 return offset;
2675 static const per_sequence_t TokenReleaseConfirm_sequence[] = {
2676 { &hf_t124_result_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2677 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2678 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2679 { &hf_t124_tokenStatus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2680 { NULL, 0, 0, NULL }
2683 static int
2684 dissect_t124_TokenReleaseConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2685 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2686 ett_t124_TokenReleaseConfirm, TokenReleaseConfirm_sequence);
2688 return offset;
2692 static const per_sequence_t TokenTestRequest_sequence[] = {
2693 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2694 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2695 { NULL, 0, 0, NULL }
2698 static int
2699 dissect_t124_TokenTestRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2700 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2701 ett_t124_TokenTestRequest, TokenTestRequest_sequence);
2703 return offset;
2707 static const per_sequence_t TokenTestConfirm_sequence[] = {
2708 { &hf_t124_initiator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2709 { &hf_t124_tokenId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2710 { &hf_t124_tokenStatus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2711 { NULL, 0, 0, NULL }
2714 static int
2715 dissect_t124_TokenTestConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2716 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2717 ett_t124_TokenTestConfirm, TokenTestConfirm_sequence);
2719 return offset;
2723 static const value_string t124_DomainMCSPDU_vals[] = {
2724 { 0, "plumbDomainIndication" },
2725 { 1, "erectDomainRequest" },
2726 { 2, "mergeChannelsRequest" },
2727 { 3, "mergeChannelsConfirm" },
2728 { 4, "purgeChannelsIndication" },
2729 { 5, "mergeTokensRequest" },
2730 { 6, "mergeTokensConfirm" },
2731 { 7, "purgeTokensIndication" },
2732 { 8, "disconnectProviderUltimatum" },
2733 { 9, "rejectMCSPDUUltimatum" },
2734 { 10, "attachUserRequest" },
2735 { 11, "attachUserConfirm" },
2736 { 12, "detachUserRequest" },
2737 { 13, "detachUserIndication" },
2738 { 14, "channelJoinRequest" },
2739 { 15, "channelJoinConfirm" },
2740 { 16, "channelLeaveRequest" },
2741 { 17, "channelConveneRequest" },
2742 { 18, "channelConveneConfirm" },
2743 { 19, "channelDisbandRequest" },
2744 { 20, "channelDisbandIndication" },
2745 { 21, "channelAdmitRequest" },
2746 { 22, "channelAdmitIndication" },
2747 { 23, "channelExpelRequest" },
2748 { 24, "channelExpelIndication" },
2749 { 25, "sendDataRequest" },
2750 { 26, "sendDataIndication" },
2751 { 27, "uniformSendDataRequest" },
2752 { 28, "uniformSendDataIndication" },
2753 { 29, "tokenGrabRequest" },
2754 { 30, "tokenGrabConfirm" },
2755 { 31, "tokenInhibitRequest" },
2756 { 32, "tokenInhibitConfirm" },
2757 { 33, "tokenGiveRequest" },
2758 { 34, "tokenGiveIndication" },
2759 { 35, "tokenGiveResponse" },
2760 { 36, "tokenGiveConfirm" },
2761 { 37, "tokenPleaseRequest" },
2762 { 38, "tokenPleaseIndication" },
2763 { 39, "tokenReleaseRequest" },
2764 { 40, "tokenReleaseConfirm" },
2765 { 41, "tokenTestRequest" },
2766 { 42, "tokenTestConfirm" },
2767 { 0, NULL }
2770 static const per_choice_t DomainMCSPDU_choice[] = {
2771 { 0, &hf_t124_plumbDomainIndication, ASN1_NO_EXTENSIONS , dissect_t124_PlumbDomainIndication },
2772 { 1, &hf_t124_erectDomainRequest, ASN1_NO_EXTENSIONS , dissect_t124_ErectDomainRequest },
2773 { 2, &hf_t124_mergeChannelsRequest, ASN1_NO_EXTENSIONS , dissect_t124_MergeChannelsRequest },
2774 { 3, &hf_t124_mergeChannelsConfirm, ASN1_NO_EXTENSIONS , dissect_t124_MergeChannelsConfirm },
2775 { 4, &hf_t124_purgeChannelsIndication, ASN1_NO_EXTENSIONS , dissect_t124_PurgeChannelsIndication },
2776 { 5, &hf_t124_mergeTokensRequest, ASN1_NO_EXTENSIONS , dissect_t124_MergeTokensRequest },
2777 { 6, &hf_t124_mergeTokensConfirm, ASN1_NO_EXTENSIONS , dissect_t124_MergeTokensConfirm },
2778 { 7, &hf_t124_purgeTokensIndication, ASN1_NO_EXTENSIONS , dissect_t124_PurgeTokensIndication },
2779 { 8, &hf_t124_disconnectProviderUltimatum, ASN1_NO_EXTENSIONS , dissect_t124_DisconnectProviderUltimatum },
2780 { 9, &hf_t124_rejectMCSPDUUltimatum, ASN1_NO_EXTENSIONS , dissect_t124_RejectMCSPDUUltimatum },
2781 { 10, &hf_t124_attachUserRequest, ASN1_NO_EXTENSIONS , dissect_t124_AttachUserRequest },
2782 { 11, &hf_t124_attachUserConfirm, ASN1_NO_EXTENSIONS , dissect_t124_AttachUserConfirm },
2783 { 12, &hf_t124_detachUserRequest, ASN1_NO_EXTENSIONS , dissect_t124_DetachUserRequest },
2784 { 13, &hf_t124_detachUserIndication, ASN1_NO_EXTENSIONS , dissect_t124_DetachUserIndication },
2785 { 14, &hf_t124_channelJoinRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelJoinRequest },
2786 { 15, &hf_t124_channelJoinConfirm, ASN1_NO_EXTENSIONS , dissect_t124_ChannelJoinConfirm },
2787 { 16, &hf_t124_channelLeaveRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelLeaveRequest },
2788 { 17, &hf_t124_channelConveneRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelConveneRequest },
2789 { 18, &hf_t124_channelConveneConfirm, ASN1_NO_EXTENSIONS , dissect_t124_ChannelConveneConfirm },
2790 { 19, &hf_t124_channelDisbandRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelDisbandRequest },
2791 { 20, &hf_t124_channelDisbandIndication, ASN1_NO_EXTENSIONS , dissect_t124_ChannelDisbandIndication },
2792 { 21, &hf_t124_channelAdmitRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelAdmitRequest },
2793 { 22, &hf_t124_channelAdmitIndication, ASN1_NO_EXTENSIONS , dissect_t124_ChannelAdmitIndication },
2794 { 23, &hf_t124_channelExpelRequest, ASN1_NO_EXTENSIONS , dissect_t124_ChannelExpelRequest },
2795 { 24, &hf_t124_channelExpelIndication, ASN1_NO_EXTENSIONS , dissect_t124_ChannelExpelIndication },
2796 { 25, &hf_t124_sendDataRequest, ASN1_NO_EXTENSIONS , dissect_t124_SendDataRequest },
2797 { 26, &hf_t124_sendDataIndication, ASN1_NO_EXTENSIONS , dissect_t124_SendDataIndication },
2798 { 27, &hf_t124_uniformSendDataRequest, ASN1_NO_EXTENSIONS , dissect_t124_UniformSendDataRequest },
2799 { 28, &hf_t124_uniformSendDataIndication, ASN1_NO_EXTENSIONS , dissect_t124_UniformSendDataIndication },
2800 { 29, &hf_t124_tokenGrabRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenGrabRequest },
2801 { 30, &hf_t124_tokenGrabConfirm, ASN1_NO_EXTENSIONS , dissect_t124_TokenGrabConfirm },
2802 { 31, &hf_t124_tokenInhibitRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenInhibitRequest },
2803 { 32, &hf_t124_tokenInhibitConfirm, ASN1_NO_EXTENSIONS , dissect_t124_TokenInhibitConfirm },
2804 { 33, &hf_t124_tokenGiveRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenGiveRequest },
2805 { 34, &hf_t124_tokenGiveIndication, ASN1_NO_EXTENSIONS , dissect_t124_TokenGiveIndication },
2806 { 35, &hf_t124_tokenGiveResponse, ASN1_NO_EXTENSIONS , dissect_t124_TokenGiveResponse },
2807 { 36, &hf_t124_tokenGiveConfirm, ASN1_NO_EXTENSIONS , dissect_t124_TokenGiveConfirm },
2808 { 37, &hf_t124_tokenPleaseRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenPleaseRequest },
2809 { 38, &hf_t124_tokenPleaseIndication, ASN1_NO_EXTENSIONS , dissect_t124_TokenPleaseIndication },
2810 { 39, &hf_t124_tokenReleaseRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenReleaseRequest },
2811 { 40, &hf_t124_tokenReleaseConfirm, ASN1_NO_EXTENSIONS , dissect_t124_TokenReleaseConfirm },
2812 { 41, &hf_t124_tokenTestRequest, ASN1_NO_EXTENSIONS , dissect_t124_TokenTestRequest },
2813 { 42, &hf_t124_tokenTestConfirm, ASN1_NO_EXTENSIONS , dissect_t124_TokenTestConfirm },
2814 { 0, NULL, 0, NULL }
2817 static int
2818 dissect_t124_DomainMCSPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2819 int domainmcs_value;
2821 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2822 ett_t124_DomainMCSPDU, DomainMCSPDU_choice,
2823 &domainmcs_value);
2825 switch(domainmcs_value) {
2826 case 25: /* sendDataRequest */
2827 case 26: /* sendDataIndication */
2828 case 27: /* uniformSendDataRequest */
2829 case 28: /* uniformSendDataIndication */
2830 /* Do nothing */
2831 break;
2832 default:
2833 col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
2834 val_to_str_const(domainmcs_value, t124_DomainMCSPDU_vals, "Unknown"));
2835 break;
2839 return offset;
2843 static const per_sequence_t t124Heur_sequence[] = {
2844 { &hf_t124_t124Identifier , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t124_Key },
2845 { NULL, 0, 0, NULL }
2848 void
2849 register_t124_ns_dissector(const char *nsKey, dissector_t dissector, int proto)
2851 dissector_handle_t dissector_handle;
2853 dissector_handle=create_dissector_handle(dissector, proto);
2854 dissector_add_string("t124.ns", nsKey, dissector_handle);
2857 void register_t124_sd_dissector(packet_info *pinfo _U_, uint32_t channelId_param, dissector_t dissector, int proto)
2859 /* XXX: we should keep the sub-dissectors list per conversation
2860 as the same channels may be used.
2861 While we are just using RDP over T.124, then we can get away with it.
2864 dissector_handle_t dissector_handle;
2866 dissector_handle=create_dissector_handle(dissector, proto);
2867 dissector_add_uint("t124.sd", channelId_param, dissector_handle);
2871 uint32_t t124_get_last_channelId(void)
2873 return channelId;
2876 void t124_set_top_tree(proto_tree *tree)
2878 top_tree = tree;
2881 int dissect_DomainMCSPDU_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2882 int offset = 0;
2883 asn1_ctx_t asn1_ctx;
2884 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2886 offset = dissect_t124_DomainMCSPDU(tvb, offset, &asn1_ctx, tree, hf_t124_DomainMCSPDU_PDU);
2887 offset += 7; offset >>= 3;
2888 return offset;
2891 static int
2892 dissect_t124(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
2894 proto_item *item = NULL;
2895 proto_tree *tree = NULL;
2896 asn1_ctx_t asn1_ctx;
2898 top_tree = parent_tree;
2900 col_set_str(pinfo->cinfo, COL_PROTOCOL, "T.124");
2901 col_clear(pinfo->cinfo, COL_INFO);
2903 item = proto_tree_add_item(parent_tree, proto_t124, tvb, 0, tvb_captured_length(tvb), ENC_NA);
2904 tree = proto_item_add_subtree(item, ett_t124);
2906 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2907 dissect_t124_ConnectData(tvb, 0, &asn1_ctx, tree, hf_t124_ConnectData);
2909 return tvb_captured_length(tvb);
2912 static bool
2913 dissect_t124_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data)
2915 asn1_ctx_t asn1_ctx;
2916 volatile bool failed = false;
2918 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2921 * We must catch all the "ran past the end of the packet" exceptions
2922 * here and, if we catch one, just return false. It's too painful
2923 * to have a version of dissect_per_sequence() that checks all
2924 * references to the tvbuff before making them and returning "no"
2925 * if they would fail.
2927 * We (ab)use hf_t124_connectGCCPDU here just to give a valid entry...
2929 TRY {
2930 (void) dissect_per_sequence(tvb, 0, &asn1_ctx, NULL, hf_t124_connectGCCPDU, -1, t124Heur_sequence);
2931 } CATCH_BOUNDS_ERRORS {
2932 failed = true;
2933 } ENDTRY;
2935 if (!failed && ((asn1_ctx.external.direct_reference != NULL) &&
2936 (strcmp(asn1_ctx.external.direct_reference, "0.0.20.124.0.1") == 0))) {
2937 dissect_t124(tvb, pinfo, parent_tree, data);
2939 return true;
2942 return false;
2945 /*--- proto_register_t124 -------------------------------------------*/
2946 void proto_register_t124(void) {
2948 /* List of fields */
2949 static hf_register_info hf[] = {
2950 { &hf_t124_ConnectData,
2951 { "ConnectData", "t124.ConnectData",
2952 FT_NONE, BASE_NONE, NULL, 0,
2953 NULL, HFILL }},
2954 { &hf_t124_connectGCCPDU,
2955 { "connectGCCPDU", "t124.connectGCCPDU",
2956 FT_UINT32, BASE_DEC, VALS(t124_ConnectGCCPDU_vals), 0,
2957 NULL, HFILL }},
2958 { &hf_t124_DomainMCSPDU_PDU,
2959 { "DomainMCSPDU", "t124.DomainMCSPDU",
2960 FT_UINT32, BASE_DEC, VALS(t124_DomainMCSPDU_vals), 0,
2961 NULL, HFILL }},
2962 { &hf_t124_object,
2963 { "object", "t124.object",
2964 FT_OID, BASE_NONE, NULL, 0,
2965 NULL, HFILL }},
2966 { &hf_t124_h221NonStandard,
2967 { "h221NonStandard", "t124.h221NonStandard",
2968 FT_BYTES, BASE_NONE, NULL, 0,
2969 "H221NonStandardIdentifier", HFILL }},
2970 { &hf_t124_key,
2971 { "key", "t124.key",
2972 FT_UINT32, BASE_DEC, VALS(t124_Key_vals), 0,
2973 NULL, HFILL }},
2974 { &hf_t124_data,
2975 { "data", "t124.data",
2976 FT_BYTES, BASE_NONE, NULL, 0,
2977 "OCTET_STRING", HFILL }},
2978 { &hf_t124_UserData_item,
2979 { "UserData item", "t124.UserData_item_element",
2980 FT_NONE, BASE_NONE, NULL, 0,
2981 NULL, HFILL }},
2982 { &hf_t124_value,
2983 { "value", "t124.value",
2984 FT_BYTES, BASE_NONE, NULL, 0,
2985 NULL, HFILL }},
2986 { &hf_t124_numeric,
2987 { "numeric", "t124.numeric",
2988 FT_STRING, BASE_NONE, NULL, 0,
2989 "SimpleNumericString", HFILL }},
2990 { &hf_t124_text,
2991 { "text", "t124.text",
2992 FT_STRING, BASE_NONE, NULL, 0,
2993 "SimpleTextString", HFILL }},
2994 { &hf_t124_unicodeText,
2995 { "unicodeText", "t124.unicodeText",
2996 FT_STRING, BASE_NONE, NULL, 0,
2997 "TextString", HFILL }},
2998 { &hf_t124_passwordString,
2999 { "passwordString", "t124.passwordString",
3000 FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3001 "PasswordSelector", HFILL }},
3002 { &hf_t124_responseData,
3003 { "responseData", "t124.responseData",
3004 FT_UINT32, BASE_DEC, NULL, 0,
3005 "UserData", HFILL }},
3006 { &hf_t124_passwordInTheClear,
3007 { "passwordInTheClear", "t124.passwordInTheClear_element",
3008 FT_NONE, BASE_NONE, NULL, 0,
3009 NULL, HFILL }},
3010 { &hf_t124_nonStandardAlgorithm,
3011 { "nonStandardAlgorithm", "t124.nonStandardAlgorithm_element",
3012 FT_NONE, BASE_NONE, NULL, 0,
3013 "NonStandardParameter", HFILL }},
3014 { &hf_t124_responseAlgorithm,
3015 { "responseAlgorithm", "t124.responseAlgorithm",
3016 FT_UINT32, BASE_DEC, VALS(t124_ChallengeResponseAlgorithm_vals), 0,
3017 "ChallengeResponseAlgorithm", HFILL }},
3018 { &hf_t124_challengeData,
3019 { "challengeData", "t124.challengeData",
3020 FT_UINT32, BASE_DEC, NULL, 0,
3021 "UserData", HFILL }},
3022 { &hf_t124_challengeTag,
3023 { "challengeTag", "t124.challengeTag",
3024 FT_INT32, BASE_DEC, NULL, 0,
3025 "INTEGER", HFILL }},
3026 { &hf_t124_challengeSet,
3027 { "challengeSet", "t124.challengeSet",
3028 FT_UINT32, BASE_DEC, NULL, 0,
3029 "SET_OF_ChallengeItem", HFILL }},
3030 { &hf_t124_challengeSet_item,
3031 { "ChallengeItem", "t124.ChallengeItem_element",
3032 FT_NONE, BASE_NONE, NULL, 0,
3033 NULL, HFILL }},
3034 { &hf_t124_responseItem,
3035 { "responseItem", "t124.responseItem",
3036 FT_UINT32, BASE_DEC, VALS(t124_ChallengeResponseItem_vals), 0,
3037 "ChallengeResponseItem", HFILL }},
3038 { &hf_t124_passwordInTheClear_01,
3039 { "passwordInTheClear", "t124.passwordInTheClear",
3040 FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3041 "PasswordSelector", HFILL }},
3042 { &hf_t124_challengeRequestResponse,
3043 { "challengeRequestResponse", "t124.challengeRequestResponse_element",
3044 FT_NONE, BASE_NONE, NULL, 0,
3045 NULL, HFILL }},
3046 { &hf_t124_challengeRequest,
3047 { "challengeRequest", "t124.challengeRequest_element",
3048 FT_NONE, BASE_NONE, NULL, 0,
3049 NULL, HFILL }},
3050 { &hf_t124_challengeResponse,
3051 { "challengeResponse", "t124.challengeResponse_element",
3052 FT_NONE, BASE_NONE, NULL, 0,
3053 NULL, HFILL }},
3054 { &hf_t124_nonStandardScheme,
3055 { "nonStandardScheme", "t124.nonStandardScheme_element",
3056 FT_NONE, BASE_NONE, NULL, 0,
3057 "NonStandardParameter", HFILL }},
3058 { &hf_t124_priority,
3059 { "priority", "t124.priority",
3060 FT_UINT32, BASE_DEC, NULL, 0,
3061 "INTEGER_0_65535", HFILL }},
3062 { &hf_t124_scheme,
3063 { "scheme", "t124.scheme",
3064 FT_UINT32, BASE_DEC, VALS(t124_ConferencePriorityScheme_vals), 0,
3065 "ConferencePriorityScheme", HFILL }},
3066 { &hf_t124_conventional,
3067 { "conventional", "t124.conventional_element",
3068 FT_NONE, BASE_NONE, NULL, 0,
3069 NULL, HFILL }},
3070 { &hf_t124_counted,
3071 { "counted", "t124.counted_element",
3072 FT_NONE, BASE_NONE, NULL, 0,
3073 NULL, HFILL }},
3074 { &hf_t124_anonymous,
3075 { "anonymous", "t124.anonymous_element",
3076 FT_NONE, BASE_NONE, NULL, 0,
3077 NULL, HFILL }},
3078 { &hf_t124_nonStandardCategory,
3079 { "nonStandardCategory", "t124.nonStandardCategory_element",
3080 FT_NONE, BASE_NONE, NULL, 0,
3081 "NonStandardParameter", HFILL }},
3082 { &hf_t124_conventional_only,
3083 { "conventional-only", "t124.conventional_only_element",
3084 FT_NONE, BASE_NONE, NULL, 0,
3085 NULL, HFILL }},
3086 { &hf_t124_counted_only,
3087 { "counted-only", "t124.counted_only_element",
3088 FT_NONE, BASE_NONE, NULL, 0,
3089 NULL, HFILL }},
3090 { &hf_t124_anonymous_only,
3091 { "anonymous-only", "t124.anonymous_only_element",
3092 FT_NONE, BASE_NONE, NULL, 0,
3093 NULL, HFILL }},
3094 { &hf_t124_conventional_control,
3095 { "conventional-control", "t124.conventional_control_element",
3096 FT_NONE, BASE_NONE, NULL, 0,
3097 NULL, HFILL }},
3098 { &hf_t124_unrestricted_mode,
3099 { "unrestricted-mode", "t124.unrestricted_mode_element",
3100 FT_NONE, BASE_NONE, NULL, 0,
3101 NULL, HFILL }},
3102 { &hf_t124_non_standard_mode,
3103 { "non-standard-mode", "t124.non_standard_mode_element",
3104 FT_NONE, BASE_NONE, NULL, 0,
3105 "NonStandardParameter", HFILL }},
3106 { &hf_t124_NetworkAddress_item,
3107 { "NetworkAddress item", "t124.NetworkAddress_item",
3108 FT_UINT32, BASE_DEC, VALS(t124_NetworkAddress_item_vals), 0,
3109 NULL, HFILL }},
3110 { &hf_t124_aggregatedChannel,
3111 { "aggregatedChannel", "t124.aggregatedChannel_element",
3112 FT_NONE, BASE_NONE, NULL, 0,
3113 NULL, HFILL }},
3114 { &hf_t124_transferModes,
3115 { "transferModes", "t124.transferModes_element",
3116 FT_NONE, BASE_NONE, NULL, 0,
3117 NULL, HFILL }},
3118 { &hf_t124_speech,
3119 { "speech", "t124.speech",
3120 FT_BOOLEAN, BASE_NONE, NULL, 0,
3121 "BOOLEAN", HFILL }},
3122 { &hf_t124_voice_band,
3123 { "voice-band", "t124.voice_band",
3124 FT_BOOLEAN, BASE_NONE, NULL, 0,
3125 "BOOLEAN", HFILL }},
3126 { &hf_t124_digital_56k,
3127 { "digital-56k", "t124.digital_56k",
3128 FT_BOOLEAN, BASE_NONE, NULL, 0,
3129 "BOOLEAN", HFILL }},
3130 { &hf_t124_digital_64k,
3131 { "digital-64k", "t124.digital_64k",
3132 FT_BOOLEAN, BASE_NONE, NULL, 0,
3133 "BOOLEAN", HFILL }},
3134 { &hf_t124_digital_128k,
3135 { "digital-128k", "t124.digital_128k",
3136 FT_BOOLEAN, BASE_NONE, NULL, 0,
3137 "BOOLEAN", HFILL }},
3138 { &hf_t124_digital_192k,
3139 { "digital-192k", "t124.digital_192k",
3140 FT_BOOLEAN, BASE_NONE, NULL, 0,
3141 "BOOLEAN", HFILL }},
3142 { &hf_t124_digital_256k,
3143 { "digital-256k", "t124.digital_256k",
3144 FT_BOOLEAN, BASE_NONE, NULL, 0,
3145 "BOOLEAN", HFILL }},
3146 { &hf_t124_digital_320k,
3147 { "digital-320k", "t124.digital_320k",
3148 FT_BOOLEAN, BASE_NONE, NULL, 0,
3149 "BOOLEAN", HFILL }},
3150 { &hf_t124_digital_384k,
3151 { "digital-384k", "t124.digital_384k",
3152 FT_BOOLEAN, BASE_NONE, NULL, 0,
3153 "BOOLEAN", HFILL }},
3154 { &hf_t124_digital_512k,
3155 { "digital-512k", "t124.digital_512k",
3156 FT_BOOLEAN, BASE_NONE, NULL, 0,
3157 "BOOLEAN", HFILL }},
3158 { &hf_t124_digital_768k,
3159 { "digital-768k", "t124.digital_768k",
3160 FT_BOOLEAN, BASE_NONE, NULL, 0,
3161 "BOOLEAN", HFILL }},
3162 { &hf_t124_digital_1152k,
3163 { "digital-1152k", "t124.digital_1152k",
3164 FT_BOOLEAN, BASE_NONE, NULL, 0,
3165 "BOOLEAN", HFILL }},
3166 { &hf_t124_digital_1472k,
3167 { "digital-1472k", "t124.digital_1472k",
3168 FT_BOOLEAN, BASE_NONE, NULL, 0,
3169 "BOOLEAN", HFILL }},
3170 { &hf_t124_digital_1536k,
3171 { "digital-1536k", "t124.digital_1536k",
3172 FT_BOOLEAN, BASE_NONE, NULL, 0,
3173 "BOOLEAN", HFILL }},
3174 { &hf_t124_digital_1920k,
3175 { "digital-1920k", "t124.digital_1920k",
3176 FT_BOOLEAN, BASE_NONE, NULL, 0,
3177 "BOOLEAN", HFILL }},
3178 { &hf_t124_packet_mode,
3179 { "packet-mode", "t124.packet_mode",
3180 FT_BOOLEAN, BASE_NONE, NULL, 0,
3181 "BOOLEAN", HFILL }},
3182 { &hf_t124_frame_mode,
3183 { "frame-mode", "t124.frame_mode",
3184 FT_BOOLEAN, BASE_NONE, NULL, 0,
3185 "BOOLEAN", HFILL }},
3186 { &hf_t124_atm,
3187 { "atm", "t124.atm",
3188 FT_BOOLEAN, BASE_NONE, NULL, 0,
3189 "BOOLEAN", HFILL }},
3190 { &hf_t124_internationalNumber,
3191 { "internationalNumber", "t124.internationalNumber",
3192 FT_STRING, BASE_NONE, NULL, 0,
3193 "DiallingString", HFILL }},
3194 { &hf_t124_subAddress,
3195 { "subAddress", "t124.subAddress",
3196 FT_STRING, BASE_NONE, NULL, 0,
3197 "SubAddressString", HFILL }},
3198 { &hf_t124_extraDialling,
3199 { "extraDialling", "t124.extraDialling",
3200 FT_STRING, BASE_NONE, NULL, 0,
3201 "ExtraDiallingString", HFILL }},
3202 { &hf_t124_highLayerCompatibility,
3203 { "highLayerCompatibility", "t124.highLayerCompatibility_element",
3204 FT_NONE, BASE_NONE, NULL, 0,
3205 NULL, HFILL }},
3206 { &hf_t124_telephony3kHz,
3207 { "telephony3kHz", "t124.telephony3kHz",
3208 FT_BOOLEAN, BASE_NONE, NULL, 0,
3209 "BOOLEAN", HFILL }},
3210 { &hf_t124_telephony7kHz,
3211 { "telephony7kHz", "t124.telephony7kHz",
3212 FT_BOOLEAN, BASE_NONE, NULL, 0,
3213 "BOOLEAN", HFILL }},
3214 { &hf_t124_videotelephony,
3215 { "videotelephony", "t124.videotelephony",
3216 FT_BOOLEAN, BASE_NONE, NULL, 0,
3217 "BOOLEAN", HFILL }},
3218 { &hf_t124_videoconference,
3219 { "videoconference", "t124.videoconference",
3220 FT_BOOLEAN, BASE_NONE, NULL, 0,
3221 "BOOLEAN", HFILL }},
3222 { &hf_t124_audiographic,
3223 { "audiographic", "t124.audiographic",
3224 FT_BOOLEAN, BASE_NONE, NULL, 0,
3225 "BOOLEAN", HFILL }},
3226 { &hf_t124_audiovisual,
3227 { "audiovisual", "t124.audiovisual",
3228 FT_BOOLEAN, BASE_NONE, NULL, 0,
3229 "BOOLEAN", HFILL }},
3230 { &hf_t124_multimedia,
3231 { "multimedia", "t124.multimedia",
3232 FT_BOOLEAN, BASE_NONE, NULL, 0,
3233 "BOOLEAN", HFILL }},
3234 { &hf_t124_transportConnection,
3235 { "transportConnection", "t124.transportConnection_element",
3236 FT_NONE, BASE_NONE, NULL, 0,
3237 NULL, HFILL }},
3238 { &hf_t124_nsapAddress,
3239 { "nsapAddress", "t124.nsapAddress",
3240 FT_BYTES, BASE_NONE, NULL, 0,
3241 "OCTET_STRING_SIZE_1_20", HFILL }},
3242 { &hf_t124_transportSelector,
3243 { "transportSelector", "t124.transportSelector",
3244 FT_BYTES, BASE_NONE, NULL, 0,
3245 "OCTET_STRING", HFILL }},
3246 { &hf_t124_nonStandard,
3247 { "nonStandard", "t124.nonStandard_element",
3248 FT_NONE, BASE_NONE, NULL, 0,
3249 "NonStandardParameter", HFILL }},
3250 { &hf_t124_callingNode,
3251 { "callingNode", "t124.callingNode_element",
3252 FT_NONE, BASE_NONE, NULL, 0,
3253 NULL, HFILL }},
3254 { &hf_t124_calledNode,
3255 { "calledNode", "t124.calledNode_element",
3256 FT_NONE, BASE_NONE, NULL, 0,
3257 NULL, HFILL }},
3258 { &hf_t124_unknown,
3259 { "unknown", "t124.unknown",
3260 FT_UINT32, BASE_DEC, NULL, 0,
3261 "INTEGER_0_4294967295", HFILL }},
3262 { &hf_t124_conferenceName,
3263 { "conferenceName", "t124.conferenceName_element",
3264 FT_NONE, BASE_NONE, NULL, 0,
3265 NULL, HFILL }},
3266 { &hf_t124_conferenceNameModifier,
3267 { "conferenceNameModifier", "t124.conferenceNameModifier",
3268 FT_STRING, BASE_NONE, NULL, 0,
3269 NULL, HFILL }},
3270 { &hf_t124_conferenceDescription,
3271 { "conferenceDescription", "t124.conferenceDescription",
3272 FT_STRING, BASE_NONE, NULL, 0,
3273 "TextString", HFILL }},
3274 { &hf_t124_lockedConference,
3275 { "lockedConference", "t124.lockedConference",
3276 FT_BOOLEAN, BASE_NONE, NULL, 0,
3277 "BOOLEAN", HFILL }},
3278 { &hf_t124_passwordInTheClearRequired,
3279 { "passwordInTheClearRequired", "t124.passwordInTheClearRequired",
3280 FT_BOOLEAN, BASE_NONE, NULL, 0,
3281 "BOOLEAN", HFILL }},
3282 { &hf_t124_networkAddress,
3283 { "networkAddress", "t124.networkAddress",
3284 FT_UINT32, BASE_DEC, NULL, 0,
3285 NULL, HFILL }},
3286 { &hf_t124_defaultConferenceFlag,
3287 { "defaultConferenceFlag", "t124.defaultConferenceFlag",
3288 FT_BOOLEAN, BASE_NONE, NULL, 0,
3289 "BOOLEAN", HFILL }},
3290 { &hf_t124_conferenceMode,
3291 { "conferenceMode", "t124.conferenceMode",
3292 FT_UINT32, BASE_DEC, VALS(t124_ConferenceMode_vals), 0,
3293 NULL, HFILL }},
3294 { &hf_t124_convenerPassword,
3295 { "convenerPassword", "t124.convenerPassword_element",
3296 FT_NONE, BASE_NONE, NULL, 0,
3297 "Password", HFILL }},
3298 { &hf_t124_password,
3299 { "password", "t124.password_element",
3300 FT_NONE, BASE_NONE, NULL, 0,
3301 NULL, HFILL }},
3302 { &hf_t124_listedConference,
3303 { "listedConference", "t124.listedConference",
3304 FT_BOOLEAN, BASE_NONE, NULL, 0,
3305 "BOOLEAN", HFILL }},
3306 { &hf_t124_conductibleConference,
3307 { "conductibleConference", "t124.conductibleConference",
3308 FT_BOOLEAN, BASE_NONE, NULL, 0,
3309 "BOOLEAN", HFILL }},
3310 { &hf_t124_terminationMethod,
3311 { "terminationMethod", "t124.terminationMethod",
3312 FT_UINT32, BASE_DEC, VALS(t124_TerminationMethod_vals), 0,
3313 NULL, HFILL }},
3314 { &hf_t124_conductorPrivileges,
3315 { "conductorPrivileges", "t124.conductorPrivileges",
3316 FT_UINT32, BASE_DEC, NULL, 0,
3317 "SET_OF_Privilege", HFILL }},
3318 { &hf_t124_conductorPrivileges_item,
3319 { "Privilege", "t124.Privilege",
3320 FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3321 NULL, HFILL }},
3322 { &hf_t124_conductedPrivileges,
3323 { "conductedPrivileges", "t124.conductedPrivileges",
3324 FT_UINT32, BASE_DEC, NULL, 0,
3325 "SET_OF_Privilege", HFILL }},
3326 { &hf_t124_conductedPrivileges_item,
3327 { "Privilege", "t124.Privilege",
3328 FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3329 NULL, HFILL }},
3330 { &hf_t124_nonConductedPrivileges,
3331 { "nonConductedPrivileges", "t124.nonConductedPrivileges",
3332 FT_UINT32, BASE_DEC, NULL, 0,
3333 "SET_OF_Privilege", HFILL }},
3334 { &hf_t124_nonConductedPrivileges_item,
3335 { "Privilege", "t124.Privilege",
3336 FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3337 NULL, HFILL }},
3338 { &hf_t124_callerIdentifier,
3339 { "callerIdentifier", "t124.callerIdentifier",
3340 FT_STRING, BASE_NONE, NULL, 0,
3341 "TextString", HFILL }},
3342 { &hf_t124_userData,
3343 { "userData", "t124.userData",
3344 FT_UINT32, BASE_DEC, NULL, 0,
3345 NULL, HFILL }},
3346 { &hf_t124_conferencePriority,
3347 { "conferencePriority", "t124.conferencePriority_element",
3348 FT_NONE, BASE_NONE, NULL, 0,
3349 NULL, HFILL }},
3350 { &hf_t124_nodeID,
3351 { "nodeID", "t124.nodeID",
3352 FT_UINT32, BASE_DEC, NULL, 0,
3353 "UserID", HFILL }},
3354 { &hf_t124_tag,
3355 { "tag", "t124.tag",
3356 FT_INT32, BASE_DEC, NULL, 0,
3357 "INTEGER", HFILL }},
3358 { &hf_t124_result,
3359 { "result", "t124.result",
3360 FT_UINT32, BASE_DEC, VALS(t124_T_result_vals), 0,
3361 NULL, HFILL }},
3362 { &hf_t124_nodeType,
3363 { "nodeType", "t124.nodeType",
3364 FT_UINT32, BASE_DEC, VALS(t124_NodeType_vals), 0,
3365 NULL, HFILL }},
3366 { &hf_t124_asymmetryIndicator,
3367 { "asymmetryIndicator", "t124.asymmetryIndicator",
3368 FT_UINT32, BASE_DEC, VALS(t124_AsymmetryIndicator_vals), 0,
3369 NULL, HFILL }},
3370 { &hf_t124_conferenceList,
3371 { "conferenceList", "t124.conferenceList",
3372 FT_UINT32, BASE_DEC, NULL, 0,
3373 "SET_OF_ConferenceDescriptor", HFILL }},
3374 { &hf_t124_conferenceList_item,
3375 { "ConferenceDescriptor", "t124.ConferenceDescriptor_element",
3376 FT_NONE, BASE_NONE, NULL, 0,
3377 NULL, HFILL }},
3378 { &hf_t124_queryResponseResult,
3379 { "result", "t124.result",
3380 FT_UINT32, BASE_DEC, VALS(t124_QueryResponseResult_vals), 0,
3381 "QueryResponseResult", HFILL }},
3382 { &hf_t124_waitForInvitationFlag,
3383 { "waitForInvitationFlag", "t124.waitForInvitationFlag",
3384 FT_BOOLEAN, BASE_NONE, NULL, 0,
3385 "BOOLEAN", HFILL }},
3386 { &hf_t124_noUnlistedConferenceFlag,
3387 { "noUnlistedConferenceFlag", "t124.noUnlistedConferenceFlag",
3388 FT_BOOLEAN, BASE_NONE, NULL, 0,
3389 "BOOLEAN", HFILL }},
3390 { &hf_t124_conferenceName_01,
3391 { "conferenceName", "t124.conferenceName",
3392 FT_UINT32, BASE_DEC, VALS(t124_ConferenceNameSelector_vals), 0,
3393 "ConferenceNameSelector", HFILL }},
3394 { &hf_t124_password_01,
3395 { "password", "t124.password",
3396 FT_UINT32, BASE_DEC, VALS(t124_PasswordChallengeRequestResponse_vals), 0,
3397 "PasswordChallengeRequestResponse", HFILL }},
3398 { &hf_t124_convenerPassword_01,
3399 { "convenerPassword", "t124.convenerPassword",
3400 FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3401 "PasswordSelector", HFILL }},
3402 { &hf_t124_nodeCategory,
3403 { "nodeCategory", "t124.nodeCategory",
3404 FT_UINT32, BASE_DEC, VALS(t124_NodeCategory_vals), 0,
3405 NULL, HFILL }},
3406 { &hf_t124_topNodeID,
3407 { "topNodeID", "t124.topNodeID",
3408 FT_UINT32, BASE_DEC, NULL, 0,
3409 "UserID", HFILL }},
3410 { &hf_t124_conferenceNameAlias,
3411 { "conferenceNameAlias", "t124.conferenceNameAlias",
3412 FT_UINT32, BASE_DEC, VALS(t124_ConferenceNameSelector_vals), 0,
3413 "ConferenceNameSelector", HFILL }},
3414 { &hf_t124_joinResponseResult,
3415 { "result", "t124.result",
3416 FT_UINT32, BASE_DEC, VALS(t124_JoinResponseResult_vals), 0,
3417 "JoinResponseResult", HFILL }},
3418 { &hf_t124_inviteResponseResult,
3419 { "result", "t124.result",
3420 FT_UINT32, BASE_DEC, VALS(t124_InviteResponseResult_vals), 0,
3421 "InviteResponseResult", HFILL }},
3422 { &hf_t124_t124Identifier,
3423 { "t124Identifier", "t124.t124Identifier",
3424 FT_UINT32, BASE_DEC, VALS(t124_Key_vals), 0,
3425 "Key", HFILL }},
3426 { &hf_t124_connectPDU,
3427 { "connectPDU", "t124.connectPDU",
3428 FT_BYTES, BASE_NONE, NULL, 0,
3429 NULL, HFILL }},
3430 { &hf_t124_conferenceCreateRequest,
3431 { "conferenceCreateRequest", "t124.conferenceCreateRequest_element",
3432 FT_NONE, BASE_NONE, NULL, 0,
3433 NULL, HFILL }},
3434 { &hf_t124_conferenceCreateResponse,
3435 { "conferenceCreateResponse", "t124.conferenceCreateResponse_element",
3436 FT_NONE, BASE_NONE, NULL, 0,
3437 NULL, HFILL }},
3438 { &hf_t124_conferenceQueryRequest,
3439 { "conferenceQueryRequest", "t124.conferenceQueryRequest_element",
3440 FT_NONE, BASE_NONE, NULL, 0,
3441 NULL, HFILL }},
3442 { &hf_t124_conferenceQueryResponse,
3443 { "conferenceQueryResponse", "t124.conferenceQueryResponse_element",
3444 FT_NONE, BASE_NONE, NULL, 0,
3445 NULL, HFILL }},
3446 { &hf_t124_conferenceJoinRequest,
3447 { "conferenceJoinRequest", "t124.conferenceJoinRequest_element",
3448 FT_NONE, BASE_NONE, NULL, 0,
3449 NULL, HFILL }},
3450 { &hf_t124_conferenceJoinResponse,
3451 { "conferenceJoinResponse", "t124.conferenceJoinResponse_element",
3452 FT_NONE, BASE_NONE, NULL, 0,
3453 NULL, HFILL }},
3454 { &hf_t124_conferenceInviteRequest,
3455 { "conferenceInviteRequest", "t124.conferenceInviteRequest_element",
3456 FT_NONE, BASE_NONE, NULL, 0,
3457 NULL, HFILL }},
3458 { &hf_t124_conferenceInviteResponse,
3459 { "conferenceInviteResponse", "t124.conferenceInviteResponse_element",
3460 FT_NONE, BASE_NONE, NULL, 0,
3461 NULL, HFILL }},
3462 { &hf_t124_heightLimit,
3463 { "heightLimit", "t124.heightLimit",
3464 FT_UINT64, BASE_DEC, NULL, 0,
3465 "INTEGER_0_MAX", HFILL }},
3466 { &hf_t124_subHeight,
3467 { "subHeight", "t124.subHeight",
3468 FT_UINT64, BASE_DEC, NULL, 0,
3469 "INTEGER_0_MAX", HFILL }},
3470 { &hf_t124_subInterval,
3471 { "subInterval", "t124.subInterval",
3472 FT_UINT64, BASE_DEC, NULL, 0,
3473 "INTEGER_0_MAX", HFILL }},
3474 { &hf_t124_static,
3475 { "static", "t124.static_element",
3476 FT_NONE, BASE_NONE, NULL, 0,
3477 NULL, HFILL }},
3478 { &hf_t124_channelId,
3479 { "channelId", "t124.channelId",
3480 FT_UINT32, BASE_DEC, NULL, 0,
3481 "StaticChannelId", HFILL }},
3482 { &hf_t124_userId,
3483 { "userId", "t124.userId_element",
3484 FT_NONE, BASE_NONE, NULL, 0,
3485 NULL, HFILL }},
3486 { &hf_t124_joined,
3487 { "joined", "t124.joined",
3488 FT_BOOLEAN, BASE_NONE, NULL, 0,
3489 "BOOLEAN", HFILL }},
3490 { &hf_t124_userId_01,
3491 { "userId", "t124.userId",
3492 FT_UINT32, BASE_DEC, NULL, 0,
3493 NULL, HFILL }},
3494 { &hf_t124_private,
3495 { "private", "t124.private_element",
3496 FT_NONE, BASE_NONE, NULL, 0,
3497 NULL, HFILL }},
3498 { &hf_t124_channelId_01,
3499 { "channelId", "t124.channelId",
3500 FT_UINT32, BASE_DEC, NULL, 0,
3501 "PrivateChannelId", HFILL }},
3502 { &hf_t124_manager,
3503 { "manager", "t124.manager",
3504 FT_UINT32, BASE_DEC, NULL, 0,
3505 "UserId", HFILL }},
3506 { &hf_t124_admitted,
3507 { "admitted", "t124.admitted",
3508 FT_UINT32, BASE_DEC, NULL, 0,
3509 "SET_OF_UserId", HFILL }},
3510 { &hf_t124_admitted_item,
3511 { "UserId", "t124.UserId",
3512 FT_UINT32, BASE_DEC, NULL, 0,
3513 NULL, HFILL }},
3514 { &hf_t124_assigned,
3515 { "assigned", "t124.assigned_element",
3516 FT_NONE, BASE_NONE, NULL, 0,
3517 NULL, HFILL }},
3518 { &hf_t124_channelId_02,
3519 { "channelId", "t124.channelId",
3520 FT_UINT32, BASE_DEC, NULL, 0,
3521 "AssignedChannelId", HFILL }},
3522 { &hf_t124_mergeChannels,
3523 { "mergeChannels", "t124.mergeChannels",
3524 FT_UINT32, BASE_DEC, NULL, 0,
3525 "SET_OF_ChannelAttributes", HFILL }},
3526 { &hf_t124_mergeChannels_item,
3527 { "ChannelAttributes", "t124.ChannelAttributes",
3528 FT_UINT32, BASE_DEC, VALS(t124_ChannelAttributes_vals), 0,
3529 NULL, HFILL }},
3530 { &hf_t124_purgeChannelIds,
3531 { "purgeChannelIds", "t124.purgeChannelIds",
3532 FT_UINT32, BASE_DEC, NULL, 0,
3533 "SET_OF_ChannelId", HFILL }},
3534 { &hf_t124_purgeChannelIds_item,
3535 { "ChannelId", "t124.ChannelId",
3536 FT_UINT32, BASE_DEC, NULL, 0,
3537 NULL, HFILL }},
3538 { &hf_t124_detachUserIds,
3539 { "detachUserIds", "t124.detachUserIds",
3540 FT_UINT32, BASE_DEC, NULL, 0,
3541 "SET_OF_UserId", HFILL }},
3542 { &hf_t124_detachUserIds_item,
3543 { "UserId", "t124.UserId",
3544 FT_UINT32, BASE_DEC, NULL, 0,
3545 NULL, HFILL }},
3546 { &hf_t124_grabbed,
3547 { "grabbed", "t124.grabbed_element",
3548 FT_NONE, BASE_NONE, NULL, 0,
3549 NULL, HFILL }},
3550 { &hf_t124_tokenId,
3551 { "tokenId", "t124.tokenId",
3552 FT_UINT32, BASE_DEC, NULL, 0,
3553 NULL, HFILL }},
3554 { &hf_t124_grabber,
3555 { "grabber", "t124.grabber",
3556 FT_UINT32, BASE_DEC, NULL, 0,
3557 "UserId", HFILL }},
3558 { &hf_t124_inhibited,
3559 { "inhibited", "t124.inhibited_element",
3560 FT_NONE, BASE_NONE, NULL, 0,
3561 NULL, HFILL }},
3562 { &hf_t124_inhibitors,
3563 { "inhibitors", "t124.inhibitors",
3564 FT_UINT32, BASE_DEC, NULL, 0,
3565 "SET_OF_UserId", HFILL }},
3566 { &hf_t124_inhibitors_item,
3567 { "UserId", "t124.UserId",
3568 FT_UINT32, BASE_DEC, NULL, 0,
3569 NULL, HFILL }},
3570 { &hf_t124_giving,
3571 { "giving", "t124.giving_element",
3572 FT_NONE, BASE_NONE, NULL, 0,
3573 NULL, HFILL }},
3574 { &hf_t124_recipient,
3575 { "recipient", "t124.recipient",
3576 FT_UINT32, BASE_DEC, NULL, 0,
3577 "UserId", HFILL }},
3578 { &hf_t124_ungivable,
3579 { "ungivable", "t124.ungivable_element",
3580 FT_NONE, BASE_NONE, NULL, 0,
3581 NULL, HFILL }},
3582 { &hf_t124_given,
3583 { "given", "t124.given_element",
3584 FT_NONE, BASE_NONE, NULL, 0,
3585 NULL, HFILL }},
3586 { &hf_t124_mergeTokens,
3587 { "mergeTokens", "t124.mergeTokens",
3588 FT_UINT32, BASE_DEC, NULL, 0,
3589 "SET_OF_TokenAttributes", HFILL }},
3590 { &hf_t124_mergeTokens_item,
3591 { "TokenAttributes", "t124.TokenAttributes",
3592 FT_UINT32, BASE_DEC, VALS(t124_TokenAttributes_vals), 0,
3593 NULL, HFILL }},
3594 { &hf_t124_purgeTokenIds,
3595 { "purgeTokenIds", "t124.purgeTokenIds",
3596 FT_UINT32, BASE_DEC, NULL, 0,
3597 "SET_OF_TokenId", HFILL }},
3598 { &hf_t124_purgeTokenIds_item,
3599 { "TokenId", "t124.TokenId",
3600 FT_UINT32, BASE_DEC, NULL, 0,
3601 NULL, HFILL }},
3602 { &hf_t124_reason,
3603 { "reason", "t124.reason",
3604 FT_UINT32, BASE_DEC, VALS(t124_Reason_vals), 0,
3605 NULL, HFILL }},
3606 { &hf_t124_diagnostic,
3607 { "diagnostic", "t124.diagnostic",
3608 FT_UINT32, BASE_DEC, VALS(t124_Diagnostic_vals), 0,
3609 NULL, HFILL }},
3610 { &hf_t124_initialOctets,
3611 { "initialOctets", "t124.initialOctets",
3612 FT_BYTES, BASE_NONE, NULL, 0,
3613 "OCTET_STRING", HFILL }},
3614 { &hf_t124_result_01,
3615 { "result", "t124.result",
3616 FT_UINT32, BASE_DEC, VALS(t124_Result_vals), 0,
3617 NULL, HFILL }},
3618 { &hf_t124_initiator,
3619 { "initiator", "t124.initiator",
3620 FT_UINT32, BASE_DEC, NULL, 0,
3621 "UserId", HFILL }},
3622 { &hf_t124_userIds,
3623 { "userIds", "t124.userIds",
3624 FT_UINT32, BASE_DEC, NULL, 0,
3625 "SET_OF_UserId", HFILL }},
3626 { &hf_t124_userIds_item,
3627 { "UserId", "t124.UserId",
3628 FT_UINT32, BASE_DEC, NULL, 0,
3629 NULL, HFILL }},
3630 { &hf_t124_channelId_03,
3631 { "channelId", "t124.channelId",
3632 FT_UINT32, BASE_DEC, NULL, 0,
3633 NULL, HFILL }},
3634 { &hf_t124_requested,
3635 { "requested", "t124.requested",
3636 FT_UINT32, BASE_DEC, NULL, 0,
3637 "ChannelId", HFILL }},
3638 { &hf_t124_channelIds,
3639 { "channelIds", "t124.channelIds",
3640 FT_UINT32, BASE_DEC, NULL, 0,
3641 "SET_OF_ChannelId", HFILL }},
3642 { &hf_t124_channelIds_item,
3643 { "ChannelId", "t124.ChannelId",
3644 FT_UINT32, BASE_DEC, NULL, 0,
3645 NULL, HFILL }},
3646 { &hf_t124_dataPriority,
3647 { "dataPriority", "t124.dataPriority",
3648 FT_UINT32, BASE_DEC, VALS(t124_DataPriority_vals), 0,
3649 NULL, HFILL }},
3650 { &hf_t124_segmentation,
3651 { "segmentation", "t124.segmentation",
3652 FT_BYTES, BASE_NONE, NULL, 0,
3653 NULL, HFILL }},
3654 { &hf_t124_userData_01,
3655 { "userData", "t124.userData",
3656 FT_BYTES, BASE_NONE, NULL, 0,
3657 NULL, HFILL }},
3658 { &hf_t124_userData_02,
3659 { "userData", "t124.userData",
3660 FT_BYTES, BASE_NONE, NULL, 0,
3661 "T_userData_01", HFILL }},
3662 { &hf_t124_userData_03,
3663 { "userData", "t124.userData",
3664 FT_BYTES, BASE_NONE, NULL, 0,
3665 "OCTET_STRING", HFILL }},
3666 { &hf_t124_tokenStatus,
3667 { "tokenStatus", "t124.tokenStatus",
3668 FT_UINT32, BASE_DEC, VALS(t124_TokenStatus_vals), 0,
3669 NULL, HFILL }},
3670 { &hf_t124_plumbDomainIndication,
3671 { "plumbDomainIndication", "t124.plumbDomainIndication_element",
3672 FT_NONE, BASE_NONE, NULL, 0,
3673 NULL, HFILL }},
3674 { &hf_t124_erectDomainRequest,
3675 { "erectDomainRequest", "t124.erectDomainRequest_element",
3676 FT_NONE, BASE_NONE, NULL, 0,
3677 NULL, HFILL }},
3678 { &hf_t124_mergeChannelsRequest,
3679 { "mergeChannelsRequest", "t124.mergeChannelsRequest_element",
3680 FT_NONE, BASE_NONE, NULL, 0,
3681 NULL, HFILL }},
3682 { &hf_t124_mergeChannelsConfirm,
3683 { "mergeChannelsConfirm", "t124.mergeChannelsConfirm_element",
3684 FT_NONE, BASE_NONE, NULL, 0,
3685 NULL, HFILL }},
3686 { &hf_t124_purgeChannelsIndication,
3687 { "purgeChannelsIndication", "t124.purgeChannelsIndication_element",
3688 FT_NONE, BASE_NONE, NULL, 0,
3689 NULL, HFILL }},
3690 { &hf_t124_mergeTokensRequest,
3691 { "mergeTokensRequest", "t124.mergeTokensRequest_element",
3692 FT_NONE, BASE_NONE, NULL, 0,
3693 NULL, HFILL }},
3694 { &hf_t124_mergeTokensConfirm,
3695 { "mergeTokensConfirm", "t124.mergeTokensConfirm_element",
3696 FT_NONE, BASE_NONE, NULL, 0,
3697 NULL, HFILL }},
3698 { &hf_t124_purgeTokensIndication,
3699 { "purgeTokensIndication", "t124.purgeTokensIndication_element",
3700 FT_NONE, BASE_NONE, NULL, 0,
3701 NULL, HFILL }},
3702 { &hf_t124_disconnectProviderUltimatum,
3703 { "disconnectProviderUltimatum", "t124.disconnectProviderUltimatum_element",
3704 FT_NONE, BASE_NONE, NULL, 0,
3705 NULL, HFILL }},
3706 { &hf_t124_rejectMCSPDUUltimatum,
3707 { "rejectMCSPDUUltimatum", "t124.rejectMCSPDUUltimatum_element",
3708 FT_NONE, BASE_NONE, NULL, 0,
3709 NULL, HFILL }},
3710 { &hf_t124_attachUserRequest,
3711 { "attachUserRequest", "t124.attachUserRequest_element",
3712 FT_NONE, BASE_NONE, NULL, 0,
3713 NULL, HFILL }},
3714 { &hf_t124_attachUserConfirm,
3715 { "attachUserConfirm", "t124.attachUserConfirm_element",
3716 FT_NONE, BASE_NONE, NULL, 0,
3717 NULL, HFILL }},
3718 { &hf_t124_detachUserRequest,
3719 { "detachUserRequest", "t124.detachUserRequest_element",
3720 FT_NONE, BASE_NONE, NULL, 0,
3721 NULL, HFILL }},
3722 { &hf_t124_detachUserIndication,
3723 { "detachUserIndication", "t124.detachUserIndication_element",
3724 FT_NONE, BASE_NONE, NULL, 0,
3725 NULL, HFILL }},
3726 { &hf_t124_channelJoinRequest,
3727 { "channelJoinRequest", "t124.channelJoinRequest_element",
3728 FT_NONE, BASE_NONE, NULL, 0,
3729 NULL, HFILL }},
3730 { &hf_t124_channelJoinConfirm,
3731 { "channelJoinConfirm", "t124.channelJoinConfirm_element",
3732 FT_NONE, BASE_NONE, NULL, 0,
3733 NULL, HFILL }},
3734 { &hf_t124_channelLeaveRequest,
3735 { "channelLeaveRequest", "t124.channelLeaveRequest_element",
3736 FT_NONE, BASE_NONE, NULL, 0,
3737 NULL, HFILL }},
3738 { &hf_t124_channelConveneRequest,
3739 { "channelConveneRequest", "t124.channelConveneRequest_element",
3740 FT_NONE, BASE_NONE, NULL, 0,
3741 NULL, HFILL }},
3742 { &hf_t124_channelConveneConfirm,
3743 { "channelConveneConfirm", "t124.channelConveneConfirm_element",
3744 FT_NONE, BASE_NONE, NULL, 0,
3745 NULL, HFILL }},
3746 { &hf_t124_channelDisbandRequest,
3747 { "channelDisbandRequest", "t124.channelDisbandRequest_element",
3748 FT_NONE, BASE_NONE, NULL, 0,
3749 NULL, HFILL }},
3750 { &hf_t124_channelDisbandIndication,
3751 { "channelDisbandIndication", "t124.channelDisbandIndication_element",
3752 FT_NONE, BASE_NONE, NULL, 0,
3753 NULL, HFILL }},
3754 { &hf_t124_channelAdmitRequest,
3755 { "channelAdmitRequest", "t124.channelAdmitRequest_element",
3756 FT_NONE, BASE_NONE, NULL, 0,
3757 NULL, HFILL }},
3758 { &hf_t124_channelAdmitIndication,
3759 { "channelAdmitIndication", "t124.channelAdmitIndication_element",
3760 FT_NONE, BASE_NONE, NULL, 0,
3761 NULL, HFILL }},
3762 { &hf_t124_channelExpelRequest,
3763 { "channelExpelRequest", "t124.channelExpelRequest_element",
3764 FT_NONE, BASE_NONE, NULL, 0,
3765 NULL, HFILL }},
3766 { &hf_t124_channelExpelIndication,
3767 { "channelExpelIndication", "t124.channelExpelIndication_element",
3768 FT_NONE, BASE_NONE, NULL, 0,
3769 NULL, HFILL }},
3770 { &hf_t124_sendDataRequest,
3771 { "sendDataRequest", "t124.sendDataRequest_element",
3772 FT_NONE, BASE_NONE, NULL, 0,
3773 NULL, HFILL }},
3774 { &hf_t124_sendDataIndication,
3775 { "sendDataIndication", "t124.sendDataIndication_element",
3776 FT_NONE, BASE_NONE, NULL, 0,
3777 NULL, HFILL }},
3778 { &hf_t124_uniformSendDataRequest,
3779 { "uniformSendDataRequest", "t124.uniformSendDataRequest_element",
3780 FT_NONE, BASE_NONE, NULL, 0,
3781 NULL, HFILL }},
3782 { &hf_t124_uniformSendDataIndication,
3783 { "uniformSendDataIndication", "t124.uniformSendDataIndication_element",
3784 FT_NONE, BASE_NONE, NULL, 0,
3785 NULL, HFILL }},
3786 { &hf_t124_tokenGrabRequest,
3787 { "tokenGrabRequest", "t124.tokenGrabRequest_element",
3788 FT_NONE, BASE_NONE, NULL, 0,
3789 NULL, HFILL }},
3790 { &hf_t124_tokenGrabConfirm,
3791 { "tokenGrabConfirm", "t124.tokenGrabConfirm_element",
3792 FT_NONE, BASE_NONE, NULL, 0,
3793 NULL, HFILL }},
3794 { &hf_t124_tokenInhibitRequest,
3795 { "tokenInhibitRequest", "t124.tokenInhibitRequest_element",
3796 FT_NONE, BASE_NONE, NULL, 0,
3797 NULL, HFILL }},
3798 { &hf_t124_tokenInhibitConfirm,
3799 { "tokenInhibitConfirm", "t124.tokenInhibitConfirm_element",
3800 FT_NONE, BASE_NONE, NULL, 0,
3801 NULL, HFILL }},
3802 { &hf_t124_tokenGiveRequest,
3803 { "tokenGiveRequest", "t124.tokenGiveRequest_element",
3804 FT_NONE, BASE_NONE, NULL, 0,
3805 NULL, HFILL }},
3806 { &hf_t124_tokenGiveIndication,
3807 { "tokenGiveIndication", "t124.tokenGiveIndication_element",
3808 FT_NONE, BASE_NONE, NULL, 0,
3809 NULL, HFILL }},
3810 { &hf_t124_tokenGiveResponse,
3811 { "tokenGiveResponse", "t124.tokenGiveResponse_element",
3812 FT_NONE, BASE_NONE, NULL, 0,
3813 NULL, HFILL }},
3814 { &hf_t124_tokenGiveConfirm,
3815 { "tokenGiveConfirm", "t124.tokenGiveConfirm_element",
3816 FT_NONE, BASE_NONE, NULL, 0,
3817 NULL, HFILL }},
3818 { &hf_t124_tokenPleaseRequest,
3819 { "tokenPleaseRequest", "t124.tokenPleaseRequest_element",
3820 FT_NONE, BASE_NONE, NULL, 0,
3821 NULL, HFILL }},
3822 { &hf_t124_tokenPleaseIndication,
3823 { "tokenPleaseIndication", "t124.tokenPleaseIndication_element",
3824 FT_NONE, BASE_NONE, NULL, 0,
3825 NULL, HFILL }},
3826 { &hf_t124_tokenReleaseRequest,
3827 { "tokenReleaseRequest", "t124.tokenReleaseRequest_element",
3828 FT_NONE, BASE_NONE, NULL, 0,
3829 NULL, HFILL }},
3830 { &hf_t124_tokenReleaseConfirm,
3831 { "tokenReleaseConfirm", "t124.tokenReleaseConfirm_element",
3832 FT_NONE, BASE_NONE, NULL, 0,
3833 NULL, HFILL }},
3834 { &hf_t124_tokenTestRequest,
3835 { "tokenTestRequest", "t124.tokenTestRequest_element",
3836 FT_NONE, BASE_NONE, NULL, 0,
3837 NULL, HFILL }},
3838 { &hf_t124_tokenTestConfirm,
3839 { "tokenTestConfirm", "t124.tokenTestConfirm_element",
3840 FT_NONE, BASE_NONE, NULL, 0,
3841 NULL, HFILL }},
3842 { &hf_t124_Segmentation_begin,
3843 { "begin", "t124.Segmentation.begin",
3844 FT_BOOLEAN, 8, NULL, 0x80,
3845 NULL, HFILL }},
3846 { &hf_t124_Segmentation_end,
3847 { "end", "t124.Segmentation.end",
3848 FT_BOOLEAN, 8, NULL, 0x40,
3849 NULL, HFILL }},
3852 /* List of subtrees */
3853 static int *ett[] = {
3854 &ett_t124,
3855 &ett_t124_connectGCCPDU,
3856 &ett_t124_Key,
3857 &ett_t124_NonStandardParameter,
3858 &ett_t124_UserData,
3859 &ett_t124_UserData_item,
3860 &ett_t124_Password,
3861 &ett_t124_PasswordSelector,
3862 &ett_t124_ChallengeResponseItem,
3863 &ett_t124_ChallengeResponseAlgorithm,
3864 &ett_t124_ChallengeItem,
3865 &ett_t124_ChallengeRequest,
3866 &ett_t124_SET_OF_ChallengeItem,
3867 &ett_t124_ChallengeResponse,
3868 &ett_t124_PasswordChallengeRequestResponse,
3869 &ett_t124_T_challengeRequestResponse,
3870 &ett_t124_ConferenceName,
3871 &ett_t124_ConferenceNameSelector,
3872 &ett_t124_ConferencePriorityScheme,
3873 &ett_t124_ConferencePriority,
3874 &ett_t124_NodeCategory,
3875 &ett_t124_ConferenceMode,
3876 &ett_t124_NetworkAddress,
3877 &ett_t124_NetworkAddress_item,
3878 &ett_t124_T_aggregatedChannel,
3879 &ett_t124_T_transferModes,
3880 &ett_t124_T_highLayerCompatibility,
3881 &ett_t124_T_transportConnection,
3882 &ett_t124_AsymmetryIndicator,
3883 &ett_t124_ConferenceDescriptor,
3884 &ett_t124_ConferenceCreateRequest,
3885 &ett_t124_SET_OF_Privilege,
3886 &ett_t124_ConferenceCreateResponse,
3887 &ett_t124_ConferenceQueryRequest,
3888 &ett_t124_ConferenceQueryResponse,
3889 &ett_t124_SET_OF_ConferenceDescriptor,
3890 &ett_t124_ConferenceJoinRequest,
3891 &ett_t124_ConferenceJoinResponse,
3892 &ett_t124_ConferenceInviteRequest,
3893 &ett_t124_ConferenceInviteResponse,
3894 &ett_t124_ConnectData,
3895 &ett_t124_ConnectGCCPDU,
3896 &ett_t124_Segmentation,
3897 &ett_t124_PlumbDomainIndication,
3898 &ett_t124_ErectDomainRequest,
3899 &ett_t124_ChannelAttributes,
3900 &ett_t124_T_static,
3901 &ett_t124_T_userId,
3902 &ett_t124_T_private,
3903 &ett_t124_SET_OF_UserId,
3904 &ett_t124_T_assigned,
3905 &ett_t124_MergeChannelsRequest,
3906 &ett_t124_SET_OF_ChannelAttributes,
3907 &ett_t124_SET_OF_ChannelId,
3908 &ett_t124_MergeChannelsConfirm,
3909 &ett_t124_PurgeChannelsIndication,
3910 &ett_t124_TokenAttributes,
3911 &ett_t124_T_grabbed,
3912 &ett_t124_T_inhibited,
3913 &ett_t124_T_giving,
3914 &ett_t124_T_ungivable,
3915 &ett_t124_T_given,
3916 &ett_t124_MergeTokensRequest,
3917 &ett_t124_SET_OF_TokenAttributes,
3918 &ett_t124_SET_OF_TokenId,
3919 &ett_t124_MergeTokensConfirm,
3920 &ett_t124_PurgeTokensIndication,
3921 &ett_t124_DisconnectProviderUltimatum,
3922 &ett_t124_RejectMCSPDUUltimatum,
3923 &ett_t124_AttachUserRequest,
3924 &ett_t124_AttachUserConfirm,
3925 &ett_t124_DetachUserRequest,
3926 &ett_t124_DetachUserIndication,
3927 &ett_t124_ChannelJoinRequest,
3928 &ett_t124_ChannelJoinConfirm,
3929 &ett_t124_ChannelLeaveRequest,
3930 &ett_t124_ChannelConveneRequest,
3931 &ett_t124_ChannelConveneConfirm,
3932 &ett_t124_ChannelDisbandRequest,
3933 &ett_t124_ChannelDisbandIndication,
3934 &ett_t124_ChannelAdmitRequest,
3935 &ett_t124_ChannelAdmitIndication,
3936 &ett_t124_ChannelExpelRequest,
3937 &ett_t124_ChannelExpelIndication,
3938 &ett_t124_SendDataRequest,
3939 &ett_t124_SendDataIndication,
3940 &ett_t124_UniformSendDataRequest,
3941 &ett_t124_UniformSendDataIndication,
3942 &ett_t124_TokenGrabRequest,
3943 &ett_t124_TokenGrabConfirm,
3944 &ett_t124_TokenInhibitRequest,
3945 &ett_t124_TokenInhibitConfirm,
3946 &ett_t124_TokenGiveRequest,
3947 &ett_t124_TokenGiveIndication,
3948 &ett_t124_TokenGiveResponse,
3949 &ett_t124_TokenGiveConfirm,
3950 &ett_t124_TokenPleaseRequest,
3951 &ett_t124_TokenPleaseIndication,
3952 &ett_t124_TokenReleaseRequest,
3953 &ett_t124_TokenReleaseConfirm,
3954 &ett_t124_TokenTestRequest,
3955 &ett_t124_TokenTestConfirm,
3956 &ett_t124_DomainMCSPDU,
3959 /* Register protocol */
3960 proto_t124 = proto_register_protocol(PNAME, PSNAME, PFNAME);
3961 /* Register fields and subtrees */
3962 proto_register_field_array(proto_t124, hf, array_length(hf));
3963 proto_register_subtree_array(ett, array_length(ett));
3965 t124_ns_dissector_table = register_dissector_table("t124.ns", "T.124 H.221 Non Standard Dissectors", proto_t124, FT_STRING, STRING_CASE_SENSITIVE);
3966 t124_sd_dissector_table = register_dissector_table("t124.sd", "T.124 H.221 Send Data Dissectors", proto_t124, FT_UINT32, BASE_HEX);
3968 register_dissector("t124", dissect_t124, proto_t124);
3972 void
3973 proto_reg_handoff_t124(void) {
3975 register_ber_oid_dissector("0.0.20.124.0.1", dissect_t124, proto_t124, "Generic Conference Control");
3977 heur_dissector_add("t125", dissect_t124_heur, "T.124 over T.125", "t124_t125", proto_t124, HEURISTIC_ENABLE);