Update Free Software Foundation address.
[metze/wireshark/wip.git] / epan / dissectors / packet-t124.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-t124.c                                                              */
4 /* ../../tools/asn2wrs.py -p t124 -c ./t124.cnf -s ./packet-t124-template -D . -O ../../epan/dissectors GCC-PROTOCOL.asn MCS-PROTOCOL.asn */
5
6 /* Input file: packet-t124-template.c */
7
8 #line 1 "../../asn1/t124/packet-t124-template.c"
9 /* packet-t124.c
10  * Routines for t124 packet dissection
11  * Copyright 2010, Graeme Lunt
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
32  *
33  */
34
35 #ifdef HAVE_CONFIG_H
36 # include "config.h"
37 #endif
38
39 #include <glib.h>
40 #include <epan/packet.h>
41 #include <epan/conversation.h>
42
43 #include <epan/asn1.h>
44 #include "packet-per.h"
45 #include "packet-ber.h"
46 #include "packet-t124.h"
47
48 #ifdef _MSC_VER
49 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
50 #pragma warning(disable:4146)
51 #endif
52
53 #define PNAME  "GENERIC-CONFERENCE-CONTROL T.124"
54 #define PSNAME "T.124"
55 #define PFNAME "t124"
56
57 /* Initialize the protocol and registered fields */
58 static int proto_t124 = -1;
59 static proto_tree *top_tree = NULL;
60
61
62 /*--- Included file: packet-t124-hf.c ---*/
63 #line 1 "../../asn1/t124/packet-t124-hf.c"
64 static int hf_t124_object = -1;                   /* T_object */
65 static int hf_t124_h221NonStandard = -1;          /* H221NonStandardIdentifier */
66 static int hf_t124_key = -1;                      /* Key */
67 static int hf_t124_data = -1;                     /* OCTET_STRING */
68 static int hf_t124_UserData_item = -1;            /* UserData_item */
69 static int hf_t124_value = -1;                    /* T_value */
70 static int hf_t124_numeric = -1;                  /* SimpleNumericString */
71 static int hf_t124_text = -1;                     /* SimpleTextString */
72 static int hf_t124_unicodeText = -1;              /* TextString */
73 static int hf_t124_passwordString = -1;           /* PasswordSelector */
74 static int hf_t124_responseData = -1;             /* UserData */
75 static int hf_t124_passwordInTheClear = -1;       /* NULL */
76 static int hf_t124_nonStandardAlgorithm = -1;     /* NonStandardParameter */
77 static int hf_t124_responseAlgorithm = -1;        /* ChallengeResponseAlgorithm */
78 static int hf_t124_challengeData = -1;            /* UserData */
79 static int hf_t124_challengeTag = -1;             /* INTEGER */
80 static int hf_t124_challengeSet = -1;             /* SET_OF_ChallengeItem */
81 static int hf_t124_challengeSet_item = -1;        /* ChallengeItem */
82 static int hf_t124_responseItem = -1;             /* ChallengeResponseItem */
83 static int hf_t124_passwordInTheClear_01 = -1;    /* PasswordSelector */
84 static int hf_t124_challengeRequestResponse = -1;  /* T_challengeRequestResponse */
85 static int hf_t124_challengeRequest = -1;         /* ChallengeRequest */
86 static int hf_t124_challengeResponse = -1;        /* ChallengeResponse */
87 static int hf_t124_nonStandardScheme = -1;        /* NonStandardParameter */
88 static int hf_t124_priority = -1;                 /* INTEGER_0_65535 */
89 static int hf_t124_scheme = -1;                   /* ConferencePriorityScheme */
90 static int hf_t124_conventional = -1;             /* NULL */
91 static int hf_t124_counted = -1;                  /* NULL */
92 static int hf_t124_anonymous = -1;                /* NULL */
93 static int hf_t124_nonStandardCategory = -1;      /* NonStandardParameter */
94 static int hf_t124_conventional_only = -1;        /* NULL */
95 static int hf_t124_counted_only = -1;             /* NULL */
96 static int hf_t124_anonymous_only = -1;           /* NULL */
97 static int hf_t124_conventional_control = -1;     /* NULL */
98 static int hf_t124_unrestricted_mode = -1;        /* NULL */
99 static int hf_t124_non_standard_mode = -1;        /* NonStandardParameter */
100 static int hf_t124_NetworkAddress_item = -1;      /* NetworkAddress_item */
101 static int hf_t124_aggregatedChannel = -1;        /* T_aggregatedChannel */
102 static int hf_t124_transferModes = -1;            /* T_transferModes */
103 static int hf_t124_speech = -1;                   /* BOOLEAN */
104 static int hf_t124_voice_band = -1;               /* BOOLEAN */
105 static int hf_t124_digital_56k = -1;              /* BOOLEAN */
106 static int hf_t124_digital_64k = -1;              /* BOOLEAN */
107 static int hf_t124_digital_128k = -1;             /* BOOLEAN */
108 static int hf_t124_digital_192k = -1;             /* BOOLEAN */
109 static int hf_t124_digital_256k = -1;             /* BOOLEAN */
110 static int hf_t124_digital_320k = -1;             /* BOOLEAN */
111 static int hf_t124_digital_384k = -1;             /* BOOLEAN */
112 static int hf_t124_digital_512k = -1;             /* BOOLEAN */
113 static int hf_t124_digital_768k = -1;             /* BOOLEAN */
114 static int hf_t124_digital_1152k = -1;            /* BOOLEAN */
115 static int hf_t124_digital_1472k = -1;            /* BOOLEAN */
116 static int hf_t124_digital_1536k = -1;            /* BOOLEAN */
117 static int hf_t124_digital_1920k = -1;            /* BOOLEAN */
118 static int hf_t124_packet_mode = -1;              /* BOOLEAN */
119 static int hf_t124_frame_mode = -1;               /* BOOLEAN */
120 static int hf_t124_atm = -1;                      /* BOOLEAN */
121 static int hf_t124_internationalNumber = -1;      /* DiallingString */
122 static int hf_t124_subAddress = -1;               /* SubAddressString */
123 static int hf_t124_extraDialling = -1;            /* ExtraDiallingString */
124 static int hf_t124_highLayerCompatibility = -1;   /* T_highLayerCompatibility */
125 static int hf_t124_telephony3kHz = -1;            /* BOOLEAN */
126 static int hf_t124_telephony7kHz = -1;            /* BOOLEAN */
127 static int hf_t124_videotelephony = -1;           /* BOOLEAN */
128 static int hf_t124_videoconference = -1;          /* BOOLEAN */
129 static int hf_t124_audiographic = -1;             /* BOOLEAN */
130 static int hf_t124_audiovisual = -1;              /* BOOLEAN */
131 static int hf_t124_multimedia = -1;               /* BOOLEAN */
132 static int hf_t124_transportConnection = -1;      /* T_transportConnection */
133 static int hf_t124_nsapAddress = -1;              /* OCTET_STRING_SIZE_1_20 */
134 static int hf_t124_transportSelector = -1;        /* OCTET_STRING */
135 static int hf_t124_nonStandard = -1;              /* NonStandardParameter */
136 static int hf_t124_callingNode = -1;              /* NULL */
137 static int hf_t124_calledNode = -1;               /* NULL */
138 static int hf_t124_unknown = -1;                  /* INTEGER_0_4294967295 */
139 static int hf_t124_conferenceName = -1;           /* ConferenceName */
140 static int hf_t124_conferenceNameModifier = -1;   /* ConferenceNameModifier */
141 static int hf_t124_conferenceDescription = -1;    /* TextString */
142 static int hf_t124_lockedConference = -1;         /* BOOLEAN */
143 static int hf_t124_passwordInTheClearRequired = -1;  /* BOOLEAN */
144 static int hf_t124_networkAddress = -1;           /* NetworkAddress */
145 static int hf_t124_defaultConferenceFlag = -1;    /* BOOLEAN */
146 static int hf_t124_conferenceMode = -1;           /* ConferenceMode */
147 static int hf_t124_convenerPassword = -1;         /* Password */
148 static int hf_t124_password = -1;                 /* Password */
149 static int hf_t124_listedConference = -1;         /* BOOLEAN */
150 static int hf_t124_conductibleConference = -1;    /* BOOLEAN */
151 static int hf_t124_terminationMethod = -1;        /* TerminationMethod */
152 static int hf_t124_conductorPrivileges = -1;      /* SET_OF_Privilege */
153 static int hf_t124_conductorPrivileges_item = -1;  /* Privilege */
154 static int hf_t124_conductedPrivileges = -1;      /* SET_OF_Privilege */
155 static int hf_t124_conductedPrivileges_item = -1;  /* Privilege */
156 static int hf_t124_nonConductedPrivileges = -1;   /* SET_OF_Privilege */
157 static int hf_t124_nonConductedPrivileges_item = -1;  /* Privilege */
158 static int hf_t124_callerIdentifier = -1;         /* TextString */
159 static int hf_t124_userData = -1;                 /* UserData */
160 static int hf_t124_conferencePriority = -1;       /* ConferencePriority */
161 static int hf_t124_nodeID = -1;                   /* UserID */
162 static int hf_t124_tag = -1;                      /* INTEGER */
163 static int hf_t124_result = -1;                   /* T_result */
164 static int hf_t124_nodeType = -1;                 /* NodeType */
165 static int hf_t124_asymmetryIndicator = -1;       /* AsymmetryIndicator */
166 static int hf_t124_conferenceList = -1;           /* SET_OF_ConferenceDescriptor */
167 static int hf_t124_conferenceList_item = -1;      /* ConferenceDescriptor */
168 static int hf_t124_queryResponseResult = -1;      /* QueryResponseResult */
169 static int hf_t124_waitForInvitationFlag = -1;    /* BOOLEAN */
170 static int hf_t124_noUnlistedConferenceFlag = -1;  /* BOOLEAN */
171 static int hf_t124_conferenceName_01 = -1;        /* ConferenceNameSelector */
172 static int hf_t124_password_01 = -1;              /* PasswordChallengeRequestResponse */
173 static int hf_t124_convenerPassword_01 = -1;      /* PasswordSelector */
174 static int hf_t124_nodeCategory = -1;             /* NodeCategory */
175 static int hf_t124_topNodeID = -1;                /* UserID */
176 static int hf_t124_conferenceNameAlias = -1;      /* ConferenceNameSelector */
177 static int hf_t124_joinResponseResult = -1;       /* JoinResponseResult */
178 static int hf_t124_inviteResponseResult = -1;     /* InviteResponseResult */
179 static int hf_t124_t124Identifier = -1;           /* Key */
180 static int hf_t124_connectPDU = -1;               /* T_connectPDU */
181 static int hf_t124_conferenceCreateRequest = -1;  /* ConferenceCreateRequest */
182 static int hf_t124_conferenceCreateResponse = -1;  /* ConferenceCreateResponse */
183 static int hf_t124_conferenceQueryRequest = -1;   /* ConferenceQueryRequest */
184 static int hf_t124_conferenceQueryResponse = -1;  /* ConferenceQueryResponse */
185 static int hf_t124_conferenceJoinRequest = -1;    /* ConferenceJoinRequest */
186 static int hf_t124_conferenceJoinResponse = -1;   /* ConferenceJoinResponse */
187 static int hf_t124_conferenceInviteRequest = -1;  /* ConferenceInviteRequest */
188 static int hf_t124_conferenceInviteResponse = -1;  /* ConferenceInviteResponse */
189 static int hf_t124_heightLimit = -1;              /* INTEGER_0_MAX */
190 static int hf_t124_subHeight = -1;                /* INTEGER_0_MAX */
191 static int hf_t124_subInterval = -1;              /* INTEGER_0_MAX */
192 static int hf_t124_static = -1;                   /* T_static */
193 static int hf_t124_channelId = -1;                /* StaticChannelId */
194 static int hf_t124_userId = -1;                   /* T_userId */
195 static int hf_t124_joined = -1;                   /* BOOLEAN */
196 static int hf_t124_userId_01 = -1;                /* UserId */
197 static int hf_t124_private = -1;                  /* T_private */
198 static int hf_t124_channelId_01 = -1;             /* PrivateChannelId */
199 static int hf_t124_manager = -1;                  /* UserId */
200 static int hf_t124_admitted = -1;                 /* SET_OF_UserId */
201 static int hf_t124_admitted_item = -1;            /* UserId */
202 static int hf_t124_assigned = -1;                 /* T_assigned */
203 static int hf_t124_channelId_02 = -1;             /* AssignedChannelId */
204 static int hf_t124_mergeChannels = -1;            /* SET_OF_ChannelAttributes */
205 static int hf_t124_mergeChannels_item = -1;       /* ChannelAttributes */
206 static int hf_t124_purgeChannelIds = -1;          /* SET_OF_ChannelId */
207 static int hf_t124_purgeChannelIds_item = -1;     /* ChannelId */
208 static int hf_t124_detachUserIds = -1;            /* SET_OF_UserId */
209 static int hf_t124_detachUserIds_item = -1;       /* UserId */
210 static int hf_t124_grabbed = -1;                  /* T_grabbed */
211 static int hf_t124_tokenId = -1;                  /* TokenId */
212 static int hf_t124_grabber = -1;                  /* UserId */
213 static int hf_t124_inhibited = -1;                /* T_inhibited */
214 static int hf_t124_inhibitors = -1;               /* SET_OF_UserId */
215 static int hf_t124_inhibitors_item = -1;          /* UserId */
216 static int hf_t124_giving = -1;                   /* T_giving */
217 static int hf_t124_recipient = -1;                /* UserId */
218 static int hf_t124_ungivable = -1;                /* T_ungivable */
219 static int hf_t124_given = -1;                    /* T_given */
220 static int hf_t124_mergeTokens = -1;              /* SET_OF_TokenAttributes */
221 static int hf_t124_mergeTokens_item = -1;         /* TokenAttributes */
222 static int hf_t124_purgeTokenIds = -1;            /* SET_OF_TokenId */
223 static int hf_t124_purgeTokenIds_item = -1;       /* TokenId */
224 static int hf_t124_reason = -1;                   /* Reason */
225 static int hf_t124_diagnostic = -1;               /* Diagnostic */
226 static int hf_t124_initialOctets = -1;            /* OCTET_STRING */
227 static int hf_t124_result_01 = -1;                /* Result */
228 static int hf_t124_initiator = -1;                /* UserId */
229 static int hf_t124_userIds = -1;                  /* SET_OF_UserId */
230 static int hf_t124_userIds_item = -1;             /* UserId */
231 static int hf_t124_channelId_03 = -1;             /* ChannelId */
232 static int hf_t124_requested = -1;                /* ChannelId */
233 static int hf_t124_channelIds = -1;               /* SET_OF_ChannelId */
234 static int hf_t124_channelIds_item = -1;          /* ChannelId */
235 static int hf_t124_dataPriority = -1;             /* DataPriority */
236 static int hf_t124_segmentation = -1;             /* Segmentation */
237 static int hf_t124_userData_01 = -1;              /* T_userData */
238 static int hf_t124_userData_02 = -1;              /* T_userData_01 */
239 static int hf_t124_userData_03 = -1;              /* OCTET_STRING */
240 static int hf_t124_tokenStatus = -1;              /* TokenStatus */
241 static int hf_t124_plumbDomainIndication = -1;    /* PlumbDomainIndication */
242 static int hf_t124_erectDomainRequest = -1;       /* ErectDomainRequest */
243 static int hf_t124_mergeChannelsRequest = -1;     /* MergeChannelsRequest */
244 static int hf_t124_mergeChannelsConfirm = -1;     /* MergeChannelsConfirm */
245 static int hf_t124_purgeChannelsIndication = -1;  /* PurgeChannelsIndication */
246 static int hf_t124_mergeTokensRequest = -1;       /* MergeTokensRequest */
247 static int hf_t124_mergeTokensConfirm = -1;       /* MergeTokensConfirm */
248 static int hf_t124_purgeTokensIndication = -1;    /* PurgeTokensIndication */
249 static int hf_t124_disconnectProviderUltimatum = -1;  /* DisconnectProviderUltimatum */
250 static int hf_t124_rejectMCSPDUUltimatum = -1;    /* RejectMCSPDUUltimatum */
251 static int hf_t124_attachUserRequest = -1;        /* AttachUserRequest */
252 static int hf_t124_attachUserConfirm = -1;        /* AttachUserConfirm */
253 static int hf_t124_detachUserRequest = -1;        /* DetachUserRequest */
254 static int hf_t124_detachUserIndication = -1;     /* DetachUserIndication */
255 static int hf_t124_channelJoinRequest = -1;       /* ChannelJoinRequest */
256 static int hf_t124_channelJoinConfirm = -1;       /* ChannelJoinConfirm */
257 static int hf_t124_channelLeaveRequest = -1;      /* ChannelLeaveRequest */
258 static int hf_t124_channelConveneRequest = -1;    /* ChannelConveneRequest */
259 static int hf_t124_channelConveneConfirm = -1;    /* ChannelConveneConfirm */
260 static int hf_t124_channelDisbandRequest = -1;    /* ChannelDisbandRequest */
261 static int hf_t124_channelDisbandIndication = -1;  /* ChannelDisbandIndication */
262 static int hf_t124_channelAdmitRequest = -1;      /* ChannelAdmitRequest */
263 static int hf_t124_channelAdmitIndication = -1;   /* ChannelAdmitIndication */
264 static int hf_t124_channelExpelRequest = -1;      /* ChannelExpelRequest */
265 static int hf_t124_channelExpelIndication = -1;   /* ChannelExpelIndication */
266 static int hf_t124_sendDataRequest = -1;          /* SendDataRequest */
267 static int hf_t124_sendDataIndication = -1;       /* SendDataIndication */
268 static int hf_t124_uniformSendDataRequest = -1;   /* UniformSendDataRequest */
269 static int hf_t124_uniformSendDataIndication = -1;  /* UniformSendDataIndication */
270 static int hf_t124_tokenGrabRequest = -1;         /* TokenGrabRequest */
271 static int hf_t124_tokenGrabConfirm = -1;         /* TokenGrabConfirm */
272 static int hf_t124_tokenInhibitRequest = -1;      /* TokenInhibitRequest */
273 static int hf_t124_tokenInhibitConfirm = -1;      /* TokenInhibitConfirm */
274 static int hf_t124_tokenGiveRequest = -1;         /* TokenGiveRequest */
275 static int hf_t124_tokenGiveIndication = -1;      /* TokenGiveIndication */
276 static int hf_t124_tokenGiveResponse = -1;        /* TokenGiveResponse */
277 static int hf_t124_tokenGiveConfirm = -1;         /* TokenGiveConfirm */
278 static int hf_t124_tokenPleaseRequest = -1;       /* TokenPleaseRequest */
279 static int hf_t124_tokenPleaseIndication = -1;    /* TokenPleaseIndication */
280 static int hf_t124_tokenReleaseRequest = -1;      /* TokenReleaseRequest */
281 static int hf_t124_tokenReleaseConfirm = -1;      /* TokenReleaseConfirm */
282 static int hf_t124_tokenTestRequest = -1;         /* TokenTestRequest */
283 static int hf_t124_tokenTestConfirm = -1;         /* TokenTestConfirm */
284 /* named bits */
285 static int hf_t124_Segmentation_begin = -1;
286 static int hf_t124_Segmentation_end = -1;
287
288 /*--- End of included file: packet-t124-hf.c ---*/
289 #line 54 "../../asn1/t124/packet-t124-template.c"
290
291 /* Initialize the subtree pointers */
292 static int ett_t124 = -1;
293 static int ett_t124_connectGCCPDU = -1;
294
295 static int hf_t124_ConnectData = -1;
296 static int hf_t124_connectGCCPDU = -1;
297 static int hf_t124_DomainMCSPDU_PDU = -1;
298
299 static guint32 channelId = -1;
300
301 static const char *t124Identifier = NULL; /* extensions identifier */
302 static tvbuff_t *t124NSIdentifier = NULL; /* extensions non-standard identifier */
303 static dissector_table_t t124_ns_dissector_table=NULL;
304 static dissector_table_t t124_sd_dissector_table=NULL;
305
306
307 /*--- Included file: packet-t124-ett.c ---*/
308 #line 1 "../../asn1/t124/packet-t124-ett.c"
309 static gint ett_t124_Key = -1;
310 static gint ett_t124_NonStandardParameter = -1;
311 static gint ett_t124_UserData = -1;
312 static gint ett_t124_UserData_item = -1;
313 static gint ett_t124_Password = -1;
314 static gint ett_t124_PasswordSelector = -1;
315 static gint ett_t124_ChallengeResponseItem = -1;
316 static gint ett_t124_ChallengeResponseAlgorithm = -1;
317 static gint ett_t124_ChallengeItem = -1;
318 static gint ett_t124_ChallengeRequest = -1;
319 static gint ett_t124_SET_OF_ChallengeItem = -1;
320 static gint ett_t124_ChallengeResponse = -1;
321 static gint ett_t124_PasswordChallengeRequestResponse = -1;
322 static gint ett_t124_T_challengeRequestResponse = -1;
323 static gint ett_t124_ConferenceName = -1;
324 static gint ett_t124_ConferenceNameSelector = -1;
325 static gint ett_t124_ConferencePriorityScheme = -1;
326 static gint ett_t124_ConferencePriority = -1;
327 static gint ett_t124_NodeCategory = -1;
328 static gint ett_t124_ConferenceMode = -1;
329 static gint ett_t124_NetworkAddress = -1;
330 static gint ett_t124_NetworkAddress_item = -1;
331 static gint ett_t124_T_aggregatedChannel = -1;
332 static gint ett_t124_T_transferModes = -1;
333 static gint ett_t124_T_highLayerCompatibility = -1;
334 static gint ett_t124_T_transportConnection = -1;
335 static gint ett_t124_AsymmetryIndicator = -1;
336 static gint ett_t124_ConferenceDescriptor = -1;
337 static gint ett_t124_ConferenceCreateRequest = -1;
338 static gint ett_t124_SET_OF_Privilege = -1;
339 static gint ett_t124_ConferenceCreateResponse = -1;
340 static gint ett_t124_ConferenceQueryRequest = -1;
341 static gint ett_t124_ConferenceQueryResponse = -1;
342 static gint ett_t124_SET_OF_ConferenceDescriptor = -1;
343 static gint ett_t124_ConferenceJoinRequest = -1;
344 static gint ett_t124_ConferenceJoinResponse = -1;
345 static gint ett_t124_ConferenceInviteRequest = -1;
346 static gint ett_t124_ConferenceInviteResponse = -1;
347 static gint ett_t124_ConnectData = -1;
348 static gint ett_t124_ConnectGCCPDU = -1;
349 static gint ett_t124_Segmentation = -1;
350 static gint ett_t124_PlumbDomainIndication = -1;
351 static gint ett_t124_ErectDomainRequest = -1;
352 static gint ett_t124_ChannelAttributes = -1;
353 static gint ett_t124_T_static = -1;
354 static gint ett_t124_T_userId = -1;
355 static gint ett_t124_T_private = -1;
356 static gint ett_t124_SET_OF_UserId = -1;
357 static gint ett_t124_T_assigned = -1;
358 static gint ett_t124_MergeChannelsRequest = -1;
359 static gint ett_t124_SET_OF_ChannelAttributes = -1;
360 static gint ett_t124_SET_OF_ChannelId = -1;
361 static gint ett_t124_MergeChannelsConfirm = -1;
362 static gint ett_t124_PurgeChannelsIndication = -1;
363 static gint ett_t124_TokenAttributes = -1;
364 static gint ett_t124_T_grabbed = -1;
365 static gint ett_t124_T_inhibited = -1;
366 static gint ett_t124_T_giving = -1;
367 static gint ett_t124_T_ungivable = -1;
368 static gint ett_t124_T_given = -1;
369 static gint ett_t124_MergeTokensRequest = -1;
370 static gint ett_t124_SET_OF_TokenAttributes = -1;
371 static gint ett_t124_SET_OF_TokenId = -1;
372 static gint ett_t124_MergeTokensConfirm = -1;
373 static gint ett_t124_PurgeTokensIndication = -1;
374 static gint ett_t124_DisconnectProviderUltimatum = -1;
375 static gint ett_t124_RejectMCSPDUUltimatum = -1;
376 static gint ett_t124_AttachUserRequest = -1;
377 static gint ett_t124_AttachUserConfirm = -1;
378 static gint ett_t124_DetachUserRequest = -1;
379 static gint ett_t124_DetachUserIndication = -1;
380 static gint ett_t124_ChannelJoinRequest = -1;
381 static gint ett_t124_ChannelJoinConfirm = -1;
382 static gint ett_t124_ChannelLeaveRequest = -1;
383 static gint ett_t124_ChannelConveneRequest = -1;
384 static gint ett_t124_ChannelConveneConfirm = -1;
385 static gint ett_t124_ChannelDisbandRequest = -1;
386 static gint ett_t124_ChannelDisbandIndication = -1;
387 static gint ett_t124_ChannelAdmitRequest = -1;
388 static gint ett_t124_ChannelAdmitIndication = -1;
389 static gint ett_t124_ChannelExpelRequest = -1;
390 static gint ett_t124_ChannelExpelIndication = -1;
391 static gint ett_t124_SendDataRequest = -1;
392 static gint ett_t124_SendDataIndication = -1;
393 static gint ett_t124_UniformSendDataRequest = -1;
394 static gint ett_t124_UniformSendDataIndication = -1;
395 static gint ett_t124_TokenGrabRequest = -1;
396 static gint ett_t124_TokenGrabConfirm = -1;
397 static gint ett_t124_TokenInhibitRequest = -1;
398 static gint ett_t124_TokenInhibitConfirm = -1;
399 static gint ett_t124_TokenGiveRequest = -1;
400 static gint ett_t124_TokenGiveIndication = -1;
401 static gint ett_t124_TokenGiveResponse = -1;
402 static gint ett_t124_TokenGiveConfirm = -1;
403 static gint ett_t124_TokenPleaseRequest = -1;
404 static gint ett_t124_TokenPleaseIndication = -1;
405 static gint ett_t124_TokenReleaseRequest = -1;
406 static gint ett_t124_TokenReleaseConfirm = -1;
407 static gint ett_t124_TokenTestRequest = -1;
408 static gint ett_t124_TokenTestConfirm = -1;
409 static gint ett_t124_DomainMCSPDU = -1;
410
411 /*--- End of included file: packet-t124-ett.c ---*/
412 #line 71 "../../asn1/t124/packet-t124-template.c"
413
414
415 /*--- Included file: packet-t124-fn.c ---*/
416 #line 1 "../../asn1/t124/packet-t124-fn.c"
417
418
419 static int
420 dissect_t124_DynamicChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
421   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
422                                                             1001U, 65535U, NULL, FALSE);
423
424   return offset;
425 }
426
427
428
429 static int
430 dissect_t124_UserID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
431   offset = dissect_t124_DynamicChannelID(tvb, offset, actx, tree, hf_index);
432
433   return offset;
434 }
435
436
437
438 static int
439 dissect_t124_H221NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
440 #line 218 "../../asn1/t124/t124.cnf"
441
442       offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
443                                        4, 255, FALSE, &t124NSIdentifier);
444
445
446
447
448
449   return offset;
450 }
451
452
453
454 static int
455 dissect_t124_T_object(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
456   offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &t124Identifier);
457
458   return offset;
459 }
460
461
462 static const value_string t124_Key_vals[] = {
463   {   0, "object" },
464   {   1, "h221NonStandard" },
465   { 0, NULL }
466 };
467
468 static const per_choice_t Key_choice[] = {
469   {   0, &hf_t124_object         , ASN1_NO_EXTENSIONS     , dissect_t124_T_object },
470   {   1, &hf_t124_h221NonStandard, ASN1_NO_EXTENSIONS     , dissect_t124_H221NonStandardIdentifier },
471   { 0, NULL, 0, NULL }
472 };
473
474 static int
475 dissect_t124_Key(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
476   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
477                                  ett_t124_Key, Key_choice,
478                                  NULL);
479
480   return offset;
481 }
482
483
484
485 static int
486 dissect_t124_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
487   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
488                                        NO_BOUND, NO_BOUND, FALSE, NULL);
489
490   return offset;
491 }
492
493
494 static const per_sequence_t NonStandardParameter_sequence[] = {
495   { &hf_t124_key            , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Key },
496   { &hf_t124_data           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
497   { NULL, 0, 0, NULL }
498 };
499
500 static int
501 dissect_t124_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
502   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
503                                    ett_t124_NonStandardParameter, NonStandardParameter_sequence);
504
505   return offset;
506 }
507
508
509
510 static int
511 dissect_t124_TextString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
512   offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
513                                           0, 255, FALSE);
514
515   return offset;
516 }
517
518
519
520 static int
521 dissect_t124_SimpleTextString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
522   offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
523                                           0, 255, FALSE);
524
525   return offset;
526 }
527
528
529
530 static int
531 dissect_t124_SimpleNumericString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
532   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
533                                                       1, 255, FALSE, "0123456789", 10,
534                                                       NULL);
535
536   return offset;
537 }
538
539
540
541 static int
542 dissect_t124_DiallingString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
543   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
544                                                       1, 16, FALSE, "0123456789", 10,
545                                                       NULL);
546
547   return offset;
548 }
549
550
551
552 static int
553 dissect_t124_SubAddressString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
554   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
555                                                       1, 40, FALSE, "0123456789", 10,
556                                                       NULL);
557
558   return offset;
559 }
560
561
562
563 static int
564 dissect_t124_ExtraDiallingString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
565   offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_t124_TextString,
566                                                 "TextString", 1, 255, FALSE);
567
568   return offset;
569 }
570
571
572
573 static int
574 dissect_t124_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
575 #line 150 "../../asn1/t124/t124.cnf"
576     tvbuff_t    *next_tvb = NULL;
577     guint8      *ns = NULL;
578
579   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
580                                        NO_BOUND, NO_BOUND, FALSE, &next_tvb);
581
582
583         if(next_tvb) {
584
585         ns = tvb_get_string(t124NSIdentifier, 0, tvb_length(t124NSIdentifier));
586         if(ns != NULL) {
587                 dissector_try_string(t124_ns_dissector_table, ns, next_tvb, actx->pinfo, top_tree);
588                 g_free(ns);
589         }
590         }
591
592
593
594   return offset;
595 }
596
597
598 static const per_sequence_t UserData_item_sequence[] = {
599   { &hf_t124_key            , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Key },
600   { &hf_t124_value          , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_t124_T_value },
601   { NULL, 0, 0, NULL }
602 };
603
604 static int
605 dissect_t124_UserData_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
606   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
607                                    ett_t124_UserData_item, UserData_item_sequence);
608
609   return offset;
610 }
611
612
613 static const per_sequence_t UserData_set_of[1] = {
614   { &hf_t124_UserData_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserData_item },
615 };
616
617 static int
618 dissect_t124_UserData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
619   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
620                                  ett_t124_UserData, UserData_set_of);
621
622   return offset;
623 }
624
625
626 static const per_sequence_t Password_sequence[] = {
627   { &hf_t124_numeric        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_SimpleNumericString },
628   { &hf_t124_text           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SimpleTextString },
629   { &hf_t124_unicodeText    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_TextString },
630   { NULL, 0, 0, NULL }
631 };
632
633 static int
634 dissect_t124_Password(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
635   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
636                                    ett_t124_Password, Password_sequence);
637
638   return offset;
639 }
640
641
642 static const value_string t124_PasswordSelector_vals[] = {
643   {   0, "numeric" },
644   {   1, "text" },
645   {   2, "unicodeText" },
646   { 0, NULL }
647 };
648
649 static const per_choice_t PasswordSelector_choice[] = {
650   {   0, &hf_t124_numeric        , ASN1_EXTENSION_ROOT    , dissect_t124_SimpleNumericString },
651   {   1, &hf_t124_text           , ASN1_EXTENSION_ROOT    , dissect_t124_SimpleTextString },
652   {   2, &hf_t124_unicodeText    , ASN1_NOT_EXTENSION_ROOT, dissect_t124_TextString },
653   { 0, NULL, 0, NULL }
654 };
655
656 static int
657 dissect_t124_PasswordSelector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
658   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
659                                  ett_t124_PasswordSelector, PasswordSelector_choice,
660                                  NULL);
661
662   return offset;
663 }
664
665
666 static const value_string t124_ChallengeResponseItem_vals[] = {
667   {   0, "passwordString" },
668   {   1, "responseData" },
669   { 0, NULL }
670 };
671
672 static const per_choice_t ChallengeResponseItem_choice[] = {
673   {   0, &hf_t124_passwordString , ASN1_EXTENSION_ROOT    , dissect_t124_PasswordSelector },
674   {   1, &hf_t124_responseData   , ASN1_EXTENSION_ROOT    , dissect_t124_UserData },
675   { 0, NULL, 0, NULL }
676 };
677
678 static int
679 dissect_t124_ChallengeResponseItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
680   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
681                                  ett_t124_ChallengeResponseItem, ChallengeResponseItem_choice,
682                                  NULL);
683
684   return offset;
685 }
686
687
688
689 static int
690 dissect_t124_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
691   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
692
693   return offset;
694 }
695
696
697 static const value_string t124_ChallengeResponseAlgorithm_vals[] = {
698   {   0, "passwordInTheClear" },
699   {   1, "nonStandardAlgorithm" },
700   { 0, NULL }
701 };
702
703 static const per_choice_t ChallengeResponseAlgorithm_choice[] = {
704   {   0, &hf_t124_passwordInTheClear, ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
705   {   1, &hf_t124_nonStandardAlgorithm, ASN1_EXTENSION_ROOT    , dissect_t124_NonStandardParameter },
706   { 0, NULL, 0, NULL }
707 };
708
709 static int
710 dissect_t124_ChallengeResponseAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
711   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
712                                  ett_t124_ChallengeResponseAlgorithm, ChallengeResponseAlgorithm_choice,
713                                  NULL);
714
715   return offset;
716 }
717
718
719 static const per_sequence_t ChallengeItem_sequence[] = {
720   { &hf_t124_responseAlgorithm, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseAlgorithm },
721   { &hf_t124_challengeData  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_UserData },
722   { NULL, 0, 0, NULL }
723 };
724
725 static int
726 dissect_t124_ChallengeItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
727   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
728                                    ett_t124_ChallengeItem, ChallengeItem_sequence);
729
730   return offset;
731 }
732
733
734
735 static int
736 dissect_t124_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
737   offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
738
739   return offset;
740 }
741
742
743 static const per_sequence_t SET_OF_ChallengeItem_set_of[1] = {
744   { &hf_t124_challengeSet_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeItem },
745 };
746
747 static int
748 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_) {
749   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
750                                  ett_t124_SET_OF_ChallengeItem, SET_OF_ChallengeItem_set_of);
751
752   return offset;
753 }
754
755
756 static const per_sequence_t ChallengeRequest_sequence[] = {
757   { &hf_t124_challengeTag   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
758   { &hf_t124_challengeSet   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChallengeItem },
759   { NULL, 0, 0, NULL }
760 };
761
762 static int
763 dissect_t124_ChallengeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
764   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
765                                    ett_t124_ChallengeRequest, ChallengeRequest_sequence);
766
767   return offset;
768 }
769
770
771 static const per_sequence_t ChallengeResponse_sequence[] = {
772   { &hf_t124_challengeTag   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
773   { &hf_t124_responseAlgorithm, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseAlgorithm },
774   { &hf_t124_responseItem   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ChallengeResponseItem },
775   { NULL, 0, 0, NULL }
776 };
777
778 static int
779 dissect_t124_ChallengeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
780   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
781                                    ett_t124_ChallengeResponse, ChallengeResponse_sequence);
782
783   return offset;
784 }
785
786
787 static const per_sequence_t T_challengeRequestResponse_sequence[] = {
788   { &hf_t124_challengeRequest, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ChallengeRequest },
789   { &hf_t124_challengeResponse, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ChallengeResponse },
790   { NULL, 0, 0, NULL }
791 };
792
793 static int
794 dissect_t124_T_challengeRequestResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
795   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
796                                    ett_t124_T_challengeRequestResponse, T_challengeRequestResponse_sequence);
797
798   return offset;
799 }
800
801
802 static const value_string t124_PasswordChallengeRequestResponse_vals[] = {
803   {   0, "passwordInTheClear" },
804   {   1, "challengeRequestResponse" },
805   { 0, NULL }
806 };
807
808 static const per_choice_t PasswordChallengeRequestResponse_choice[] = {
809   {   0, &hf_t124_passwordInTheClear_01, ASN1_EXTENSION_ROOT    , dissect_t124_PasswordSelector },
810   {   1, &hf_t124_challengeRequestResponse, ASN1_EXTENSION_ROOT    , dissect_t124_T_challengeRequestResponse },
811   { 0, NULL, 0, NULL }
812 };
813
814 static int
815 dissect_t124_PasswordChallengeRequestResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
816   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
817                                  ett_t124_PasswordChallengeRequestResponse, PasswordChallengeRequestResponse_choice,
818                                  NULL);
819
820   return offset;
821 }
822
823
824 static const per_sequence_t ConferenceName_sequence[] = {
825   { &hf_t124_numeric        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_SimpleNumericString },
826   { &hf_t124_text           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SimpleTextString },
827   { &hf_t124_unicodeText    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_TextString },
828   { NULL, 0, 0, NULL }
829 };
830
831 static int
832 dissect_t124_ConferenceName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
833   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
834                                    ett_t124_ConferenceName, ConferenceName_sequence);
835
836   return offset;
837 }
838
839
840 static const value_string t124_ConferenceNameSelector_vals[] = {
841   {   0, "numeric" },
842   {   1, "text" },
843   {   2, "unicodeText" },
844   { 0, NULL }
845 };
846
847 static const per_choice_t ConferenceNameSelector_choice[] = {
848   {   0, &hf_t124_numeric        , ASN1_EXTENSION_ROOT    , dissect_t124_SimpleNumericString },
849   {   1, &hf_t124_text           , ASN1_EXTENSION_ROOT    , dissect_t124_SimpleTextString },
850   {   2, &hf_t124_unicodeText    , ASN1_NOT_EXTENSION_ROOT, dissect_t124_TextString },
851   { 0, NULL, 0, NULL }
852 };
853
854 static int
855 dissect_t124_ConferenceNameSelector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
856   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
857                                  ett_t124_ConferenceNameSelector, ConferenceNameSelector_choice,
858                                  NULL);
859
860   return offset;
861 }
862
863
864
865 static int
866 dissect_t124_ConferenceNameModifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
867   offset = dissect_t124_SimpleNumericString(tvb, offset, actx, tree, hf_index);
868
869   return offset;
870 }
871
872
873 static const value_string t124_Privilege_vals[] = {
874   {   0, "terminate" },
875   {   1, "ejectUser" },
876   {   2, "add" },
877   {   3, "lockUnlock" },
878   {   4, "transfer" },
879   { 0, NULL }
880 };
881
882
883 static int
884 dissect_t124_Privilege(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
885   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
886                                      5, NULL, TRUE, 0, NULL);
887
888   return offset;
889 }
890
891
892 static const value_string t124_TerminationMethod_vals[] = {
893   {   0, "automatic" },
894   {   1, "manual" },
895   { 0, NULL }
896 };
897
898
899 static int
900 dissect_t124_TerminationMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
901   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
902                                      2, NULL, TRUE, 0, NULL);
903
904   return offset;
905 }
906
907
908 static const value_string t124_ConferencePriorityScheme_vals[] = {
909   {   0, "nonStandardScheme" },
910   { 0, NULL }
911 };
912
913 static const per_choice_t ConferencePriorityScheme_choice[] = {
914   {   0, &hf_t124_nonStandardScheme, ASN1_EXTENSION_ROOT    , dissect_t124_NonStandardParameter },
915   { 0, NULL, 0, NULL }
916 };
917
918 static int
919 dissect_t124_ConferencePriorityScheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
920   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
921                                  ett_t124_ConferencePriorityScheme, ConferencePriorityScheme_choice,
922                                  NULL);
923
924   return offset;
925 }
926
927
928
929 static int
930 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_) {
931   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
932                                                             0U, 65535U, NULL, FALSE);
933
934   return offset;
935 }
936
937
938 static const per_sequence_t ConferencePriority_sequence[] = {
939   { &hf_t124_priority       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_65535 },
940   { &hf_t124_scheme         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ConferencePriorityScheme },
941   { NULL, 0, 0, NULL }
942 };
943
944 static int
945 dissect_t124_ConferencePriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
946   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
947                                    ett_t124_ConferencePriority, ConferencePriority_sequence);
948
949   return offset;
950 }
951
952
953 static const value_string t124_NodeCategory_vals[] = {
954   {   0, "conventional" },
955   {   1, "counted" },
956   {   2, "anonymous" },
957   {   3, "nonStandardCategory" },
958   { 0, NULL }
959 };
960
961 static const per_choice_t NodeCategory_choice[] = {
962   {   0, &hf_t124_conventional   , ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
963   {   1, &hf_t124_counted        , ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
964   {   2, &hf_t124_anonymous      , ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
965   {   3, &hf_t124_nonStandardCategory, ASN1_EXTENSION_ROOT    , dissect_t124_NonStandardParameter },
966   { 0, NULL, 0, NULL }
967 };
968
969 static int
970 dissect_t124_NodeCategory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
971   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
972                                  ett_t124_NodeCategory, NodeCategory_choice,
973                                  NULL);
974
975   return offset;
976 }
977
978
979 static const value_string t124_ConferenceMode_vals[] = {
980   {   0, "conventional-only" },
981   {   1, "counted-only" },
982   {   2, "anonymous-only" },
983   {   3, "conventional-control" },
984   {   4, "unrestricted-mode" },
985   {   5, "non-standard-mode" },
986   { 0, NULL }
987 };
988
989 static const per_choice_t ConferenceMode_choice[] = {
990   {   0, &hf_t124_conventional_only, ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
991   {   1, &hf_t124_counted_only   , ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
992   {   2, &hf_t124_anonymous_only , ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
993   {   3, &hf_t124_conventional_control, ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
994   {   4, &hf_t124_unrestricted_mode, ASN1_EXTENSION_ROOT    , dissect_t124_NULL },
995   {   5, &hf_t124_non_standard_mode, ASN1_EXTENSION_ROOT    , dissect_t124_NonStandardParameter },
996   { 0, NULL, 0, NULL }
997 };
998
999 static int
1000 dissect_t124_ConferenceMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1001   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1002                                  ett_t124_ConferenceMode, ConferenceMode_choice,
1003                                  NULL);
1004
1005   return offset;
1006 }
1007
1008
1009
1010 static int
1011 dissect_t124_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1012   offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
1013
1014   return offset;
1015 }
1016
1017
1018 static const per_sequence_t T_transferModes_sequence[] = {
1019   { &hf_t124_speech         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1020   { &hf_t124_voice_band     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1021   { &hf_t124_digital_56k    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1022   { &hf_t124_digital_64k    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1023   { &hf_t124_digital_128k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1024   { &hf_t124_digital_192k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1025   { &hf_t124_digital_256k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1026   { &hf_t124_digital_320k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1027   { &hf_t124_digital_384k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1028   { &hf_t124_digital_512k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1029   { &hf_t124_digital_768k   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1030   { &hf_t124_digital_1152k  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1031   { &hf_t124_digital_1472k  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1032   { &hf_t124_digital_1536k  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1033   { &hf_t124_digital_1920k  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1034   { &hf_t124_packet_mode    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1035   { &hf_t124_frame_mode     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1036   { &hf_t124_atm            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1037   { NULL, 0, 0, NULL }
1038 };
1039
1040 static int
1041 dissect_t124_T_transferModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1042   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1043                                    ett_t124_T_transferModes, T_transferModes_sequence);
1044
1045   return offset;
1046 }
1047
1048
1049 static const per_sequence_t T_highLayerCompatibility_sequence[] = {
1050   { &hf_t124_telephony3kHz  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1051   { &hf_t124_telephony7kHz  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1052   { &hf_t124_videotelephony , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1053   { &hf_t124_videoconference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1054   { &hf_t124_audiographic   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1055   { &hf_t124_audiovisual    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1056   { &hf_t124_multimedia     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1057   { NULL, 0, 0, NULL }
1058 };
1059
1060 static int
1061 dissect_t124_T_highLayerCompatibility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1062   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1063                                    ett_t124_T_highLayerCompatibility, T_highLayerCompatibility_sequence);
1064
1065   return offset;
1066 }
1067
1068
1069 static const per_sequence_t T_aggregatedChannel_sequence[] = {
1070   { &hf_t124_transferModes  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_T_transferModes },
1071   { &hf_t124_internationalNumber, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_DiallingString },
1072   { &hf_t124_subAddress     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SubAddressString },
1073   { &hf_t124_extraDialling  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ExtraDiallingString },
1074   { &hf_t124_highLayerCompatibility, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_T_highLayerCompatibility },
1075   { NULL, 0, 0, NULL }
1076 };
1077
1078 static int
1079 dissect_t124_T_aggregatedChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1080   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1081                                    ett_t124_T_aggregatedChannel, T_aggregatedChannel_sequence);
1082
1083   return offset;
1084 }
1085
1086
1087
1088 static int
1089 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_) {
1090   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1091                                        1, 20, FALSE, NULL);
1092
1093   return offset;
1094 }
1095
1096
1097 static const per_sequence_t T_transportConnection_sequence[] = {
1098   { &hf_t124_nsapAddress    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING_SIZE_1_20 },
1099   { &hf_t124_transportSelector, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_t124_OCTET_STRING },
1100   { NULL, 0, 0, NULL }
1101 };
1102
1103 static int
1104 dissect_t124_T_transportConnection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1105   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1106                                    ett_t124_T_transportConnection, T_transportConnection_sequence);
1107
1108   return offset;
1109 }
1110
1111
1112 static const value_string t124_NetworkAddress_item_vals[] = {
1113   {   0, "aggregatedChannel" },
1114   {   1, "transportConnection" },
1115   {   2, "nonStandard" },
1116   { 0, NULL }
1117 };
1118
1119 static const per_choice_t NetworkAddress_item_choice[] = {
1120   {   0, &hf_t124_aggregatedChannel, ASN1_EXTENSION_ROOT    , dissect_t124_T_aggregatedChannel },
1121   {   1, &hf_t124_transportConnection, ASN1_EXTENSION_ROOT    , dissect_t124_T_transportConnection },
1122   {   2, &hf_t124_nonStandard    , ASN1_EXTENSION_ROOT    , dissect_t124_NonStandardParameter },
1123   { 0, NULL, 0, NULL }
1124 };
1125
1126 static int
1127 dissect_t124_NetworkAddress_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1128   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1129                                  ett_t124_NetworkAddress_item, NetworkAddress_item_choice,
1130                                  NULL);
1131
1132   return offset;
1133 }
1134
1135
1136 static const per_sequence_t NetworkAddress_sequence_of[1] = {
1137   { &hf_t124_NetworkAddress_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_NetworkAddress_item },
1138 };
1139
1140 static int
1141 dissect_t124_NetworkAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1142   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1143                                                   ett_t124_NetworkAddress, NetworkAddress_sequence_of,
1144                                                   1, 64, FALSE);
1145
1146   return offset;
1147 }
1148
1149
1150 static const value_string t124_NodeType_vals[] = {
1151   {   0, "terminal" },
1152   {   1, "multiportTerminal" },
1153   {   2, "mcu" },
1154   { 0, NULL }
1155 };
1156
1157
1158 static int
1159 dissect_t124_NodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1160   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1161                                      3, NULL, TRUE, 0, NULL);
1162
1163   return offset;
1164 }
1165
1166
1167
1168 static int
1169 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_) {
1170   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1171                                                             0U, 4294967295U, NULL, FALSE);
1172
1173   return offset;
1174 }
1175
1176
1177 static const value_string t124_AsymmetryIndicator_vals[] = {
1178   {   0, "callingNode" },
1179   {   1, "calledNode" },
1180   {   2, "unknown" },
1181   { 0, NULL }
1182 };
1183
1184 static const per_choice_t AsymmetryIndicator_choice[] = {
1185   {   0, &hf_t124_callingNode    , ASN1_NO_EXTENSIONS     , dissect_t124_NULL },
1186   {   1, &hf_t124_calledNode     , ASN1_NO_EXTENSIONS     , dissect_t124_NULL },
1187   {   2, &hf_t124_unknown        , ASN1_NO_EXTENSIONS     , dissect_t124_INTEGER_0_4294967295 },
1188   { 0, NULL, 0, NULL }
1189 };
1190
1191 static int
1192 dissect_t124_AsymmetryIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1193   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1194                                  ett_t124_AsymmetryIndicator, AsymmetryIndicator_choice,
1195                                  NULL);
1196
1197   return offset;
1198 }
1199
1200
1201 static const per_sequence_t ConferenceDescriptor_sequence[] = {
1202   { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1203   { &hf_t124_conferenceNameModifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ConferenceNameModifier },
1204   { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1205   { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1206   { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1207   { &hf_t124_networkAddress , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_NetworkAddress },
1208   { &hf_t124_defaultConferenceFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1209   { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_t124_ConferenceMode },
1210   { NULL, 0, 0, NULL }
1211 };
1212
1213 static int
1214 dissect_t124_ConferenceDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1215   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1216                                    ett_t124_ConferenceDescriptor, ConferenceDescriptor_sequence);
1217
1218   return offset;
1219 }
1220
1221
1222 static const per_sequence_t SET_OF_Privilege_set_of[1] = {
1223   { &hf_t124_conductorPrivileges_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Privilege },
1224 };
1225
1226 static int
1227 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_) {
1228   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1229                                  ett_t124_SET_OF_Privilege, SET_OF_Privilege_set_of);
1230
1231   return offset;
1232 }
1233
1234
1235 static const per_sequence_t ConferenceCreateRequest_sequence[] = {
1236   { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1237   { &hf_t124_convenerPassword, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_Password },
1238   { &hf_t124_password       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_Password },
1239   { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1240   { &hf_t124_listedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1241   { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1242   { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1243   { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1244   { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1245   { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1246   { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1247   { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1248   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1249   { &hf_t124_conferencePriority, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_ConferencePriority },
1250   { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_ConferenceMode },
1251   { NULL, 0, 0, NULL }
1252 };
1253
1254 static int
1255 dissect_t124_ConferenceCreateRequest(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_ConferenceCreateRequest, ConferenceCreateRequest_sequence);
1258
1259   return offset;
1260 }
1261
1262
1263 static const value_string t124_T_result_vals[] = {
1264   {   0, "success" },
1265   {   1, "userRejected" },
1266   {   2, "resourcesNotAvailable" },
1267   {   3, "rejectedForSymmetryBreaking" },
1268   {   4, "lockedConferenceNotSupported" },
1269   { 0, NULL }
1270 };
1271
1272
1273 static int
1274 dissect_t124_T_result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1275   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1276                                      5, NULL, TRUE, 0, NULL);
1277
1278   return offset;
1279 }
1280
1281
1282 static const per_sequence_t ConferenceCreateResponse_sequence[] = {
1283   { &hf_t124_nodeID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1284   { &hf_t124_tag            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1285   { &hf_t124_result         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_T_result },
1286   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1287   { NULL, 0, 0, NULL }
1288 };
1289
1290 static int
1291 dissect_t124_ConferenceCreateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1292   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1293                                    ett_t124_ConferenceCreateResponse, ConferenceCreateResponse_sequence);
1294
1295   return offset;
1296 }
1297
1298
1299 static const per_sequence_t ConferenceQueryRequest_sequence[] = {
1300   { &hf_t124_nodeType       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_NodeType },
1301   { &hf_t124_asymmetryIndicator, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_AsymmetryIndicator },
1302   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1303   { NULL, 0, 0, NULL }
1304 };
1305
1306 static int
1307 dissect_t124_ConferenceQueryRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1308   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1309                                    ett_t124_ConferenceQueryRequest, ConferenceQueryRequest_sequence);
1310
1311   return offset;
1312 }
1313
1314
1315 static const per_sequence_t SET_OF_ConferenceDescriptor_set_of[1] = {
1316   { &hf_t124_conferenceList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceDescriptor },
1317 };
1318
1319 static int
1320 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_) {
1321   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1322                                  ett_t124_SET_OF_ConferenceDescriptor, SET_OF_ConferenceDescriptor_set_of);
1323
1324   return offset;
1325 }
1326
1327
1328 static const value_string t124_QueryResponseResult_vals[] = {
1329   {   0, "success" },
1330   {   1, "userRejected" },
1331   { 0, NULL }
1332 };
1333
1334
1335 static int
1336 dissect_t124_QueryResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1337   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1338                                      2, NULL, TRUE, 0, NULL);
1339
1340   return offset;
1341 }
1342
1343
1344 static const per_sequence_t ConferenceQueryResponse_sequence[] = {
1345   { &hf_t124_nodeType       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_NodeType },
1346   { &hf_t124_asymmetryIndicator, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_AsymmetryIndicator },
1347   { &hf_t124_conferenceList , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ConferenceDescriptor },
1348   { &hf_t124_queryResponseResult, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_QueryResponseResult },
1349   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1350   { &hf_t124_waitForInvitationFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_BOOLEAN },
1351   { &hf_t124_noUnlistedConferenceFlag, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_BOOLEAN },
1352   { NULL, 0, 0, NULL }
1353 };
1354
1355 static int
1356 dissect_t124_ConferenceQueryResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1357   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1358                                    ett_t124_ConferenceQueryResponse, ConferenceQueryResponse_sequence);
1359
1360   return offset;
1361 }
1362
1363
1364 static const per_sequence_t ConferenceJoinRequest_sequence[] = {
1365   { &hf_t124_conferenceName_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ConferenceNameSelector },
1366   { &hf_t124_conferenceNameModifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ConferenceNameModifier },
1367   { &hf_t124_tag            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_INTEGER },
1368   { &hf_t124_password_01    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_PasswordChallengeRequestResponse },
1369   { &hf_t124_convenerPassword_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_PasswordSelector },
1370   { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1371   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1372   { &hf_t124_nodeCategory   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_NodeCategory },
1373   { NULL, 0, 0, NULL }
1374 };
1375
1376 static int
1377 dissect_t124_ConferenceJoinRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1378   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1379                                    ett_t124_ConferenceJoinRequest, ConferenceJoinRequest_sequence);
1380
1381   return offset;
1382 }
1383
1384
1385 static const value_string t124_JoinResponseResult_vals[] = {
1386   {   0, "success" },
1387   {   1, "userRejected" },
1388   {   2, "invalidConference" },
1389   {   3, "invalidPassword" },
1390   {   4, "invalidConvenerPassword" },
1391   {   5, "challengeResponseRequired" },
1392   {   6, "invalidChallengeResponse" },
1393   { 0, NULL }
1394 };
1395
1396
1397 static int
1398 dissect_t124_JoinResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1399   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1400                                      7, NULL, TRUE, 0, NULL);
1401
1402   return offset;
1403 }
1404
1405
1406 static const per_sequence_t ConferenceJoinResponse_sequence[] = {
1407   { &hf_t124_nodeID         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserID },
1408   { &hf_t124_topNodeID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1409   { &hf_t124_tag            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1410   { &hf_t124_conferenceNameAlias, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_ConferenceNameSelector },
1411   { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1412   { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1413   { &hf_t124_listedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1414   { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1415   { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1416   { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1417   { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1418   { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1419   { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1420   { &hf_t124_password_01    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_PasswordChallengeRequestResponse },
1421   { &hf_t124_joinResponseResult, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_JoinResponseResult },
1422   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1423   { &hf_t124_nodeCategory   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_NodeCategory },
1424   { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_ConferenceMode },
1425   { NULL, 0, 0, NULL }
1426 };
1427
1428 static int
1429 dissect_t124_ConferenceJoinResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1430   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1431                                    ett_t124_ConferenceJoinResponse, ConferenceJoinResponse_sequence);
1432
1433   return offset;
1434 }
1435
1436
1437 static const per_sequence_t ConferenceInviteRequest_sequence[] = {
1438   { &hf_t124_conferenceName , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_ConferenceName },
1439   { &hf_t124_nodeID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1440   { &hf_t124_topNodeID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_UserID },
1441   { &hf_t124_tag            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER },
1442   { &hf_t124_passwordInTheClearRequired, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1443   { &hf_t124_lockedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1444   { &hf_t124_listedConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1445   { &hf_t124_conductibleConference, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1446   { &hf_t124_terminationMethod, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_TerminationMethod },
1447   { &hf_t124_conductorPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1448   { &hf_t124_conductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1449   { &hf_t124_nonConductedPrivileges, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_SET_OF_Privilege },
1450   { &hf_t124_conferenceDescription, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1451   { &hf_t124_callerIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_TextString },
1452   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1453   { &hf_t124_conferencePriority, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_ConferencePriority },
1454   { &hf_t124_nodeCategory   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_NodeCategory },
1455   { &hf_t124_conferenceMode , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_t124_ConferenceMode },
1456   { NULL, 0, 0, NULL }
1457 };
1458
1459 static int
1460 dissect_t124_ConferenceInviteRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1461   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1462                                    ett_t124_ConferenceInviteRequest, ConferenceInviteRequest_sequence);
1463
1464   return offset;
1465 }
1466
1467
1468 static const value_string t124_InviteResponseResult_vals[] = {
1469   {   0, "success" },
1470   {   1, "userRejected" },
1471   { 0, NULL }
1472 };
1473
1474
1475 static int
1476 dissect_t124_InviteResponseResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1477   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1478                                      2, NULL, TRUE, 0, NULL);
1479
1480   return offset;
1481 }
1482
1483
1484 static const per_sequence_t ConferenceInviteResponse_sequence[] = {
1485   { &hf_t124_inviteResponseResult, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t124_InviteResponseResult },
1486   { &hf_t124_userData       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t124_UserData },
1487   { NULL, 0, 0, NULL }
1488 };
1489
1490 static int
1491 dissect_t124_ConferenceInviteResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1492   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1493                                    ett_t124_ConferenceInviteResponse, ConferenceInviteResponse_sequence);
1494
1495   return offset;
1496 }
1497
1498
1499
1500 static int
1501 dissect_t124_T_connectPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1502 #line 124 "../../asn1/t124/t124.cnf"
1503     tvbuff_t    *next_tvb = NULL;
1504     proto_tree  *next_tree = NULL;
1505     int         old_offset = 0;
1506
1507     old_offset = offset;
1508       offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1509                                        NO_BOUND, NO_BOUND, FALSE, &next_tvb);
1510
1511     if(next_tvb) {
1512       /* "2a -> ConnectData::connectPDU length = 42 bytes */
1513       /* This length MUST be ignored by the client." */
1514
1515       /* Not sure why - but lets ignore the length. */
1516       /* We assume the OCTET STRING is all of the remaining bytes */     
1517
1518       if(tvb_length(next_tvb) == 42) {
1519          /* this is perhaps a naive ... */
1520          next_tvb = tvb_new_subset_remaining(tvb, (old_offset>>3)+1);
1521       }
1522
1523          next_tree = proto_item_add_subtree(actx->created_item, ett_t124_connectGCCPDU);
1524
1525        dissect_t124_ConnectGCCPDU(next_tvb, 0, actx, next_tree, hf_t124_connectGCCPDU);
1526
1527     }
1528
1529
1530   return offset;
1531 }
1532
1533
1534 static const per_sequence_t ConnectData_sequence[] = {
1535   { &hf_t124_t124Identifier , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Key },
1536   { &hf_t124_connectPDU     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_T_connectPDU },
1537   { NULL, 0, 0, NULL }
1538 };
1539
1540 int
1541 dissect_t124_ConnectData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1542   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1543                                    ett_t124_ConnectData, ConnectData_sequence);
1544
1545   return offset;
1546 }
1547
1548
1549 const value_string t124_ConnectGCCPDU_vals[] = {
1550   {   0, "conferenceCreateRequest" },
1551   {   1, "conferenceCreateResponse" },
1552   {   2, "conferenceQueryRequest" },
1553   {   3, "conferenceQueryResponse" },
1554   {   4, "conferenceJoinRequest" },
1555   {   5, "conferenceJoinResponse" },
1556   {   6, "conferenceInviteRequest" },
1557   {   7, "conferenceInviteResponse" },
1558   { 0, NULL }
1559 };
1560
1561 static const per_choice_t ConnectGCCPDU_choice[] = {
1562   {   0, &hf_t124_conferenceCreateRequest, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceCreateRequest },
1563   {   1, &hf_t124_conferenceCreateResponse, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceCreateResponse },
1564   {   2, &hf_t124_conferenceQueryRequest, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceQueryRequest },
1565   {   3, &hf_t124_conferenceQueryResponse, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceQueryResponse },
1566   {   4, &hf_t124_conferenceJoinRequest, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceJoinRequest },
1567   {   5, &hf_t124_conferenceJoinResponse, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceJoinResponse },
1568   {   6, &hf_t124_conferenceInviteRequest, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceInviteRequest },
1569   {   7, &hf_t124_conferenceInviteResponse, ASN1_EXTENSION_ROOT    , dissect_t124_ConferenceInviteResponse },
1570   { 0, NULL, 0, NULL }
1571 };
1572
1573 int
1574 dissect_t124_ConnectGCCPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1575   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1576                                  ett_t124_ConnectGCCPDU, ConnectGCCPDU_choice,
1577                                  NULL);
1578
1579   return offset;
1580 }
1581
1582
1583
1584 static int
1585 dissect_t124_ChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1586 #line 223 "../../asn1/t124/t124.cnf"
1587
1588       offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1589                                                             0U, 65535U, &channelId, FALSE);
1590
1591
1592     if(hf_index == hf_t124_channelId_03) 
1593         col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%d", channelId);
1594         
1595
1596
1597
1598   return offset;
1599 }
1600
1601
1602
1603 static int
1604 dissect_t124_StaticChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605   offset = dissect_t124_ChannelId(tvb, offset, actx, tree, hf_index);
1606
1607   return offset;
1608 }
1609
1610
1611
1612 static int
1613 dissect_t124_DynamicChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1614   offset = dissect_t124_ChannelId(tvb, offset, actx, tree, hf_index);
1615
1616   return offset;
1617 }
1618
1619
1620
1621 static int
1622 dissect_t124_UserId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1623   offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1624
1625   return offset;
1626 }
1627
1628
1629
1630 static int
1631 dissect_t124_PrivateChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1632   offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1633
1634   return offset;
1635 }
1636
1637
1638
1639 static int
1640 dissect_t124_AssignedChannelId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1641   offset = dissect_t124_DynamicChannelId(tvb, offset, actx, tree, hf_index);
1642
1643   return offset;
1644 }
1645
1646
1647
1648 static int
1649 dissect_t124_TokenId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1650   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1651                                                             1U, 65535U, NULL, FALSE);
1652
1653   return offset;
1654 }
1655
1656
1657 static const value_string t124_TokenStatus_vals[] = {
1658   {   0, "notInUse" },
1659   {   1, "selfGrabbed" },
1660   {   2, "otherGrabbed" },
1661   {   3, "selfInhibited" },
1662   {   4, "otherInhibited" },
1663   {   5, "selfRecipient" },
1664   {   6, "selfGiving" },
1665   {   7, "otherGiving" },
1666   { 0, NULL }
1667 };
1668
1669
1670 static int
1671 dissect_t124_TokenStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1672   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1673                                      8, NULL, FALSE, 0, NULL);
1674
1675   return offset;
1676 }
1677
1678
1679 static const value_string t124_DataPriority_vals[] = {
1680   {   0, "top" },
1681   {   1, "high" },
1682   {   2, "medium" },
1683   {   3, "low" },
1684   { 0, NULL }
1685 };
1686
1687
1688 static int
1689 dissect_t124_DataPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1690   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1691                                      4, NULL, FALSE, 0, NULL);
1692
1693   return offset;
1694 }
1695
1696
1697
1698 static int
1699 dissect_t124_Segmentation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1700   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1701                                      2, 2, FALSE, NULL);
1702
1703   return offset;
1704 }
1705
1706
1707
1708 static int
1709 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_) {
1710   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1711                                                             0U, NO_BOUND, NULL, FALSE);
1712
1713   return offset;
1714 }
1715
1716
1717 static const per_sequence_t PlumbDomainIndication_sequence[] = {
1718   { &hf_t124_heightLimit    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1719   { NULL, 0, 0, NULL }
1720 };
1721
1722 static int
1723 dissect_t124_PlumbDomainIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1724   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1725                                    ett_t124_PlumbDomainIndication, PlumbDomainIndication_sequence);
1726
1727   return offset;
1728 }
1729
1730
1731 static const per_sequence_t ErectDomainRequest_sequence[] = {
1732   { &hf_t124_subHeight      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1733   { &hf_t124_subInterval    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_INTEGER_0_MAX },
1734   { NULL, 0, 0, NULL }
1735 };
1736
1737 static int
1738 dissect_t124_ErectDomainRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1739   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1740                                    ett_t124_ErectDomainRequest, ErectDomainRequest_sequence);
1741
1742   return offset;
1743 }
1744
1745
1746 static const per_sequence_t T_static_sequence[] = {
1747   { &hf_t124_channelId      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_StaticChannelId },
1748   { NULL, 0, 0, NULL }
1749 };
1750
1751 static int
1752 dissect_t124_T_static(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1753   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1754                                    ett_t124_T_static, T_static_sequence);
1755
1756   return offset;
1757 }
1758
1759
1760 static const per_sequence_t T_userId_sequence[] = {
1761   { &hf_t124_joined         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1762   { &hf_t124_userId_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1763   { NULL, 0, 0, NULL }
1764 };
1765
1766 static int
1767 dissect_t124_T_userId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1768   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1769                                    ett_t124_T_userId, T_userId_sequence);
1770
1771   return offset;
1772 }
1773
1774
1775 static const per_sequence_t SET_OF_UserId_set_of[1] = {
1776   { &hf_t124_admitted_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1777 };
1778
1779 static int
1780 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_) {
1781   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1782                                  ett_t124_SET_OF_UserId, SET_OF_UserId_set_of);
1783
1784   return offset;
1785 }
1786
1787
1788 static const per_sequence_t T_private_sequence[] = {
1789   { &hf_t124_joined         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_BOOLEAN },
1790   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
1791   { &hf_t124_manager        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1792   { &hf_t124_admitted       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1793   { NULL, 0, 0, NULL }
1794 };
1795
1796 static int
1797 dissect_t124_T_private(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1798   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1799                                    ett_t124_T_private, T_private_sequence);
1800
1801   return offset;
1802 }
1803
1804
1805 static const per_sequence_t T_assigned_sequence[] = {
1806   { &hf_t124_channelId_02   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_AssignedChannelId },
1807   { NULL, 0, 0, NULL }
1808 };
1809
1810 static int
1811 dissect_t124_T_assigned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1813                                    ett_t124_T_assigned, T_assigned_sequence);
1814
1815   return offset;
1816 }
1817
1818
1819 static const value_string t124_ChannelAttributes_vals[] = {
1820   {   0, "static" },
1821   {   1, "userId" },
1822   {   2, "private" },
1823   {   3, "assigned" },
1824   { 0, NULL }
1825 };
1826
1827 static const per_choice_t ChannelAttributes_choice[] = {
1828   {   0, &hf_t124_static         , ASN1_NO_EXTENSIONS     , dissect_t124_T_static },
1829   {   1, &hf_t124_userId         , ASN1_NO_EXTENSIONS     , dissect_t124_T_userId },
1830   {   2, &hf_t124_private        , ASN1_NO_EXTENSIONS     , dissect_t124_T_private },
1831   {   3, &hf_t124_assigned       , ASN1_NO_EXTENSIONS     , dissect_t124_T_assigned },
1832   { 0, NULL, 0, NULL }
1833 };
1834
1835 static int
1836 dissect_t124_ChannelAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1837   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1838                                  ett_t124_ChannelAttributes, ChannelAttributes_choice,
1839                                  NULL);
1840
1841   return offset;
1842 }
1843
1844
1845 static const per_sequence_t SET_OF_ChannelAttributes_set_of[1] = {
1846   { &hf_t124_mergeChannels_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelAttributes },
1847 };
1848
1849 static int
1850 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_) {
1851   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1852                                  ett_t124_SET_OF_ChannelAttributes, SET_OF_ChannelAttributes_set_of);
1853
1854   return offset;
1855 }
1856
1857
1858 static const per_sequence_t SET_OF_ChannelId_set_of[1] = {
1859   { &hf_t124_purgeChannelIds_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
1860 };
1861
1862 static int
1863 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_) {
1864   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
1865                                  ett_t124_SET_OF_ChannelId, SET_OF_ChannelId_set_of);
1866
1867   return offset;
1868 }
1869
1870
1871 static const per_sequence_t MergeChannelsRequest_sequence[] = {
1872   { &hf_t124_mergeChannels  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelAttributes },
1873   { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1874   { NULL, 0, 0, NULL }
1875 };
1876
1877 static int
1878 dissect_t124_MergeChannelsRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1879   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1880                                    ett_t124_MergeChannelsRequest, MergeChannelsRequest_sequence);
1881
1882   return offset;
1883 }
1884
1885
1886 static const per_sequence_t MergeChannelsConfirm_sequence[] = {
1887   { &hf_t124_mergeChannels  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelAttributes },
1888   { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1889   { NULL, 0, 0, NULL }
1890 };
1891
1892 static int
1893 dissect_t124_MergeChannelsConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1894   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1895                                    ett_t124_MergeChannelsConfirm, MergeChannelsConfirm_sequence);
1896
1897   return offset;
1898 }
1899
1900
1901 static const per_sequence_t PurgeChannelsIndication_sequence[] = {
1902   { &hf_t124_detachUserIds  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1903   { &hf_t124_purgeChannelIds, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
1904   { NULL, 0, 0, NULL }
1905 };
1906
1907 static int
1908 dissect_t124_PurgeChannelsIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1909   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1910                                    ett_t124_PurgeChannelsIndication, PurgeChannelsIndication_sequence);
1911
1912   return offset;
1913 }
1914
1915
1916 static const per_sequence_t T_grabbed_sequence[] = {
1917   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1918   { &hf_t124_grabber        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1919   { NULL, 0, 0, NULL }
1920 };
1921
1922 static int
1923 dissect_t124_T_grabbed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1924   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1925                                    ett_t124_T_grabbed, T_grabbed_sequence);
1926
1927   return offset;
1928 }
1929
1930
1931 static const per_sequence_t T_inhibited_sequence[] = {
1932   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1933   { &hf_t124_inhibitors     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
1934   { NULL, 0, 0, NULL }
1935 };
1936
1937 static int
1938 dissect_t124_T_inhibited(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1939   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1940                                    ett_t124_T_inhibited, T_inhibited_sequence);
1941
1942   return offset;
1943 }
1944
1945
1946 static const per_sequence_t T_giving_sequence[] = {
1947   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1948   { &hf_t124_grabber        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1949   { &hf_t124_recipient      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1950   { NULL, 0, 0, NULL }
1951 };
1952
1953 static int
1954 dissect_t124_T_giving(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1955   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1956                                    ett_t124_T_giving, T_giving_sequence);
1957
1958   return offset;
1959 }
1960
1961
1962 static const per_sequence_t T_ungivable_sequence[] = {
1963   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1964   { &hf_t124_grabber        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1965   { NULL, 0, 0, NULL }
1966 };
1967
1968 static int
1969 dissect_t124_T_ungivable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1970   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1971                                    ett_t124_T_ungivable, T_ungivable_sequence);
1972
1973   return offset;
1974 }
1975
1976
1977 static const per_sequence_t T_given_sequence[] = {
1978   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
1979   { &hf_t124_recipient      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
1980   { NULL, 0, 0, NULL }
1981 };
1982
1983 static int
1984 dissect_t124_T_given(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1985   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1986                                    ett_t124_T_given, T_given_sequence);
1987
1988   return offset;
1989 }
1990
1991
1992 static const value_string t124_TokenAttributes_vals[] = {
1993   {   0, "grabbed" },
1994   {   1, "inhibited" },
1995   {   2, "giving" },
1996   {   3, "ungivable" },
1997   {   4, "given" },
1998   { 0, NULL }
1999 };
2000
2001 static const per_choice_t TokenAttributes_choice[] = {
2002   {   0, &hf_t124_grabbed        , ASN1_NO_EXTENSIONS     , dissect_t124_T_grabbed },
2003   {   1, &hf_t124_inhibited      , ASN1_NO_EXTENSIONS     , dissect_t124_T_inhibited },
2004   {   2, &hf_t124_giving         , ASN1_NO_EXTENSIONS     , dissect_t124_T_giving },
2005   {   3, &hf_t124_ungivable      , ASN1_NO_EXTENSIONS     , dissect_t124_T_ungivable },
2006   {   4, &hf_t124_given          , ASN1_NO_EXTENSIONS     , dissect_t124_T_given },
2007   { 0, NULL, 0, NULL }
2008 };
2009
2010 static int
2011 dissect_t124_TokenAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2012   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2013                                  ett_t124_TokenAttributes, TokenAttributes_choice,
2014                                  NULL);
2015
2016   return offset;
2017 }
2018
2019
2020 static const per_sequence_t SET_OF_TokenAttributes_set_of[1] = {
2021   { &hf_t124_mergeTokens_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenAttributes },
2022 };
2023
2024 static int
2025 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_) {
2026   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
2027                                  ett_t124_SET_OF_TokenAttributes, SET_OF_TokenAttributes_set_of);
2028
2029   return offset;
2030 }
2031
2032
2033 static const per_sequence_t SET_OF_TokenId_set_of[1] = {
2034   { &hf_t124_purgeTokenIds_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2035 };
2036
2037 static int
2038 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_) {
2039   offset = dissect_per_set_of(tvb, offset, actx, tree, hf_index,
2040                                  ett_t124_SET_OF_TokenId, SET_OF_TokenId_set_of);
2041
2042   return offset;
2043 }
2044
2045
2046 static const per_sequence_t MergeTokensRequest_sequence[] = {
2047   { &hf_t124_mergeTokens    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenAttributes },
2048   { &hf_t124_purgeTokenIds  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2049   { NULL, 0, 0, NULL }
2050 };
2051
2052 static int
2053 dissect_t124_MergeTokensRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2054   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2055                                    ett_t124_MergeTokensRequest, MergeTokensRequest_sequence);
2056
2057   return offset;
2058 }
2059
2060
2061 static const per_sequence_t MergeTokensConfirm_sequence[] = {
2062   { &hf_t124_mergeTokens    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenAttributes },
2063   { &hf_t124_purgeTokenIds  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2064   { NULL, 0, 0, NULL }
2065 };
2066
2067 static int
2068 dissect_t124_MergeTokensConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2069   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2070                                    ett_t124_MergeTokensConfirm, MergeTokensConfirm_sequence);
2071
2072   return offset;
2073 }
2074
2075
2076 static const per_sequence_t PurgeTokensIndication_sequence[] = {
2077   { &hf_t124_purgeTokenIds  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_TokenId },
2078   { NULL, 0, 0, NULL }
2079 };
2080
2081 static int
2082 dissect_t124_PurgeTokensIndication(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_PurgeTokensIndication, PurgeTokensIndication_sequence);
2085
2086   return offset;
2087 }
2088
2089
2090 static const value_string t124_Reason_vals[] = {
2091   {   0, "rn-domain-disconnected" },
2092   {   1, "rn-provider-initiated" },
2093   {   2, "rn-token-purged" },
2094   {   3, "rn-user-requested" },
2095   {   4, "rn-channel-purged" },
2096   { 0, NULL }
2097 };
2098
2099
2100 static int
2101 dissect_t124_Reason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2102   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2103                                      5, NULL, FALSE, 0, NULL);
2104
2105   return offset;
2106 }
2107
2108
2109 static const per_sequence_t DisconnectProviderUltimatum_sequence[] = {
2110   { &hf_t124_reason         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2111   { NULL, 0, 0, NULL }
2112 };
2113
2114 static int
2115 dissect_t124_DisconnectProviderUltimatum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2116   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2117                                    ett_t124_DisconnectProviderUltimatum, DisconnectProviderUltimatum_sequence);
2118
2119   return offset;
2120 }
2121
2122
2123 static const value_string t124_Diagnostic_vals[] = {
2124   {   0, "dc-inconsistent-merge" },
2125   {   1, "dc-forbidden-PDU-downward" },
2126   {   2, "dc-forbidden-PDU-upward" },
2127   {   3, "dc-invalid-BER-encoding" },
2128   {   4, "dc-invalid-PER-encoding" },
2129   {   5, "dc-misrouted-user" },
2130   {   6, "dc-unrequested-confirm" },
2131   {   7, "dc-wrong-transport-priority" },
2132   {   8, "dc-channel-id-conflict" },
2133   {   9, "dc-token-id-conflict" },
2134   {  10, "dc-not-user-id-channel" },
2135   {  11, "dc-too-many-channels" },
2136   {  12, "dc-too-many-tokens" },
2137   {  13, "dc-too-many-users" },
2138   { 0, NULL }
2139 };
2140
2141
2142 static int
2143 dissect_t124_Diagnostic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2144   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2145                                      14, NULL, FALSE, 0, NULL);
2146
2147   return offset;
2148 }
2149
2150
2151 static const per_sequence_t RejectMCSPDUUltimatum_sequence[] = {
2152   { &hf_t124_diagnostic     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Diagnostic },
2153   { &hf_t124_initialOctets  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2154   { NULL, 0, 0, NULL }
2155 };
2156
2157 static int
2158 dissect_t124_RejectMCSPDUUltimatum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2159   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2160                                    ett_t124_RejectMCSPDUUltimatum, RejectMCSPDUUltimatum_sequence);
2161
2162   return offset;
2163 }
2164
2165
2166 static const per_sequence_t AttachUserRequest_sequence[] = {
2167   { NULL, 0, 0, NULL }
2168 };
2169
2170 static int
2171 dissect_t124_AttachUserRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2172   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2173                                    ett_t124_AttachUserRequest, AttachUserRequest_sequence);
2174
2175   return offset;
2176 }
2177
2178
2179 static const value_string t124_Result_vals[] = {
2180   {   0, "rt-successful" },
2181   {   1, "rt-domain-merging" },
2182   {   2, "rt-domain-not-hierarchical" },
2183   {   3, "rt-no-such-channel" },
2184   {   4, "rt-no-such-domain" },
2185   {   5, "rt-no-such-user" },
2186   {   6, "rt-not-admitted" },
2187   {   7, "rt-other-user-id" },
2188   {   8, "rt-parameters-unacceptable" },
2189   {   9, "rt-token-not-available" },
2190   {  10, "rt-token-not-possessed" },
2191   {  11, "rt-too-many-channels" },
2192   {  12, "rt-too-many-tokens" },
2193   {  13, "rt-too-many-users" },
2194   {  14, "rt-unspecified-failure" },
2195   {  15, "rt-user-rejected" },
2196   { 0, NULL }
2197 };
2198
2199
2200 static int
2201 dissect_t124_Result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2202   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2203                                      16, NULL, FALSE, 0, NULL);
2204
2205   return offset;
2206 }
2207
2208
2209 static const per_sequence_t AttachUserConfirm_sequence[] = {
2210   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2211   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_t124_UserId },
2212   { NULL, 0, 0, NULL }
2213 };
2214
2215 static int
2216 dissect_t124_AttachUserConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2217   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2218                                    ett_t124_AttachUserConfirm, AttachUserConfirm_sequence);
2219
2220   return offset;
2221 }
2222
2223
2224 static const per_sequence_t DetachUserRequest_sequence[] = {
2225   { &hf_t124_reason         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2226   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2227   { NULL, 0, 0, NULL }
2228 };
2229
2230 static int
2231 dissect_t124_DetachUserRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2232   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2233                                    ett_t124_DetachUserRequest, DetachUserRequest_sequence);
2234
2235   return offset;
2236 }
2237
2238
2239 static const per_sequence_t DetachUserIndication_sequence[] = {
2240   { &hf_t124_reason         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Reason },
2241   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2242   { NULL, 0, 0, NULL }
2243 };
2244
2245 static int
2246 dissect_t124_DetachUserIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2247   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2248                                    ett_t124_DetachUserIndication, DetachUserIndication_sequence);
2249
2250   return offset;
2251 }
2252
2253
2254 static const per_sequence_t ChannelJoinRequest_sequence[] = {
2255   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2256   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2257   { NULL, 0, 0, NULL }
2258 };
2259
2260 static int
2261 dissect_t124_ChannelJoinRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2262   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2263                                    ett_t124_ChannelJoinRequest, ChannelJoinRequest_sequence);
2264
2265   return offset;
2266 }
2267
2268
2269 static const per_sequence_t ChannelJoinConfirm_sequence[] = {
2270   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2271   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2272   { &hf_t124_requested      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2273   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_t124_ChannelId },
2274   { NULL, 0, 0, NULL }
2275 };
2276
2277 static int
2278 dissect_t124_ChannelJoinConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2279   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2280                                    ett_t124_ChannelJoinConfirm, ChannelJoinConfirm_sequence);
2281
2282   return offset;
2283 }
2284
2285
2286 static const per_sequence_t ChannelLeaveRequest_sequence[] = {
2287   { &hf_t124_channelIds     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_ChannelId },
2288   { NULL, 0, 0, NULL }
2289 };
2290
2291 static int
2292 dissect_t124_ChannelLeaveRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2293   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2294                                    ett_t124_ChannelLeaveRequest, ChannelLeaveRequest_sequence);
2295
2296   return offset;
2297 }
2298
2299
2300 static const per_sequence_t ChannelConveneRequest_sequence[] = {
2301   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2302   { NULL, 0, 0, NULL }
2303 };
2304
2305 static int
2306 dissect_t124_ChannelConveneRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2307   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2308                                    ett_t124_ChannelConveneRequest, ChannelConveneRequest_sequence);
2309
2310   return offset;
2311 }
2312
2313
2314 static const per_sequence_t ChannelConveneConfirm_sequence[] = {
2315   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2316   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2317   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_t124_PrivateChannelId },
2318   { NULL, 0, 0, NULL }
2319 };
2320
2321 static int
2322 dissect_t124_ChannelConveneConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2323   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2324                                    ett_t124_ChannelConveneConfirm, ChannelConveneConfirm_sequence);
2325
2326   return offset;
2327 }
2328
2329
2330 static const per_sequence_t ChannelDisbandRequest_sequence[] = {
2331   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2332   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2333   { NULL, 0, 0, NULL }
2334 };
2335
2336 static int
2337 dissect_t124_ChannelDisbandRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2338   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2339                                    ett_t124_ChannelDisbandRequest, ChannelDisbandRequest_sequence);
2340
2341   return offset;
2342 }
2343
2344
2345 static const per_sequence_t ChannelDisbandIndication_sequence[] = {
2346   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2347   { NULL, 0, 0, NULL }
2348 };
2349
2350 static int
2351 dissect_t124_ChannelDisbandIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2352   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2353                                    ett_t124_ChannelDisbandIndication, ChannelDisbandIndication_sequence);
2354
2355   return offset;
2356 }
2357
2358
2359 static const per_sequence_t ChannelAdmitRequest_sequence[] = {
2360   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2361   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2362   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2363   { NULL, 0, 0, NULL }
2364 };
2365
2366 static int
2367 dissect_t124_ChannelAdmitRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2368   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2369                                    ett_t124_ChannelAdmitRequest, ChannelAdmitRequest_sequence);
2370
2371   return offset;
2372 }
2373
2374
2375 static const per_sequence_t ChannelAdmitIndication_sequence[] = {
2376   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2377   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2378   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2379   { NULL, 0, 0, NULL }
2380 };
2381
2382 static int
2383 dissect_t124_ChannelAdmitIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2384   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2385                                    ett_t124_ChannelAdmitIndication, ChannelAdmitIndication_sequence);
2386
2387   return offset;
2388 }
2389
2390
2391 static const per_sequence_t ChannelExpelRequest_sequence[] = {
2392   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2393   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2394   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2395   { NULL, 0, 0, NULL }
2396 };
2397
2398 static int
2399 dissect_t124_ChannelExpelRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2400   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2401                                    ett_t124_ChannelExpelRequest, ChannelExpelRequest_sequence);
2402
2403   return offset;
2404 }
2405
2406
2407 static const per_sequence_t ChannelExpelIndication_sequence[] = {
2408   { &hf_t124_channelId_01   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_PrivateChannelId },
2409   { &hf_t124_userIds        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_SET_OF_UserId },
2410   { NULL, 0, 0, NULL }
2411 };
2412
2413 static int
2414 dissect_t124_ChannelExpelIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2415   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2416                                    ett_t124_ChannelExpelIndication, ChannelExpelIndication_sequence);
2417
2418   return offset;
2419 }
2420
2421
2422
2423 static int
2424 dissect_t124_T_userData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2425 #line 167 "../../asn1/t124/t124.cnf"
2426     tvbuff_t    *next_tvb = NULL;
2427
2428   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2429                                        NO_BOUND, NO_BOUND, FALSE, &next_tvb);
2430
2431
2432         if(next_tvb) {
2433
2434              dissector_try_uint(t124_sd_dissector_table, channelId, next_tvb, actx->pinfo, top_tree);
2435
2436         }
2437
2438
2439
2440   return offset;
2441 }
2442
2443
2444 static const per_sequence_t SendDataRequest_sequence[] = {
2445   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2446   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2447   { &hf_t124_dataPriority   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2448   { &hf_t124_segmentation   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2449   { &hf_t124_userData_01    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_T_userData },
2450   { NULL, 0, 0, NULL }
2451 };
2452
2453 static int
2454 dissect_t124_SendDataRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2455   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2456                                    ett_t124_SendDataRequest, SendDataRequest_sequence);
2457
2458   return offset;
2459 }
2460
2461
2462
2463 static int
2464 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_) {
2465 #line 180 "../../asn1/t124/t124.cnf"
2466     tvbuff_t    *next_tvb = NULL;
2467
2468   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2469                                        NO_BOUND, NO_BOUND, FALSE, &next_tvb);
2470
2471
2472         if(next_tvb) {
2473
2474              dissector_try_uint(t124_sd_dissector_table, channelId, next_tvb, actx->pinfo, top_tree);
2475
2476         }
2477
2478
2479
2480   return offset;
2481 }
2482
2483
2484 static const per_sequence_t SendDataIndication_sequence[] = {
2485   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2486   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2487   { &hf_t124_dataPriority   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2488   { &hf_t124_segmentation   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2489   { &hf_t124_userData_02    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_T_userData_01 },
2490   { NULL, 0, 0, NULL }
2491 };
2492
2493 static int
2494 dissect_t124_SendDataIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2495   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2496                                    ett_t124_SendDataIndication, SendDataIndication_sequence);
2497
2498   return offset;
2499 }
2500
2501
2502 static const per_sequence_t UniformSendDataRequest_sequence[] = {
2503   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2504   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2505   { &hf_t124_dataPriority   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2506   { &hf_t124_segmentation   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2507   { &hf_t124_userData_03    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2508   { NULL, 0, 0, NULL }
2509 };
2510
2511 static int
2512 dissect_t124_UniformSendDataRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2513   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2514                                    ett_t124_UniformSendDataRequest, UniformSendDataRequest_sequence);
2515
2516   return offset;
2517 }
2518
2519
2520 static const per_sequence_t UniformSendDataIndication_sequence[] = {
2521   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2522   { &hf_t124_channelId_03   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_ChannelId },
2523   { &hf_t124_dataPriority   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_DataPriority },
2524   { &hf_t124_segmentation   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Segmentation },
2525   { &hf_t124_userData_03    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_OCTET_STRING },
2526   { NULL, 0, 0, NULL }
2527 };
2528
2529 static int
2530 dissect_t124_UniformSendDataIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2531   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2532                                    ett_t124_UniformSendDataIndication, UniformSendDataIndication_sequence);
2533
2534   return offset;
2535 }
2536
2537
2538 static const per_sequence_t TokenGrabRequest_sequence[] = {
2539   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2540   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2541   { NULL, 0, 0, NULL }
2542 };
2543
2544 static int
2545 dissect_t124_TokenGrabRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2546   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2547                                    ett_t124_TokenGrabRequest, TokenGrabRequest_sequence);
2548
2549   return offset;
2550 }
2551
2552
2553 static const per_sequence_t TokenGrabConfirm_sequence[] = {
2554   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2555   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2556   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2557   { &hf_t124_tokenStatus    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2558   { NULL, 0, 0, NULL }
2559 };
2560
2561 static int
2562 dissect_t124_TokenGrabConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2563   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2564                                    ett_t124_TokenGrabConfirm, TokenGrabConfirm_sequence);
2565
2566   return offset;
2567 }
2568
2569
2570 static const per_sequence_t TokenInhibitRequest_sequence[] = {
2571   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2572   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2573   { NULL, 0, 0, NULL }
2574 };
2575
2576 static int
2577 dissect_t124_TokenInhibitRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2578   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2579                                    ett_t124_TokenInhibitRequest, TokenInhibitRequest_sequence);
2580
2581   return offset;
2582 }
2583
2584
2585 static const per_sequence_t TokenInhibitConfirm_sequence[] = {
2586   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2587   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2588   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2589   { &hf_t124_tokenStatus    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2590   { NULL, 0, 0, NULL }
2591 };
2592
2593 static int
2594 dissect_t124_TokenInhibitConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2595   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2596                                    ett_t124_TokenInhibitConfirm, TokenInhibitConfirm_sequence);
2597
2598   return offset;
2599 }
2600
2601
2602 static const per_sequence_t TokenGiveRequest_sequence[] = {
2603   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2604   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2605   { &hf_t124_recipient      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2606   { NULL, 0, 0, NULL }
2607 };
2608
2609 static int
2610 dissect_t124_TokenGiveRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2611   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2612                                    ett_t124_TokenGiveRequest, TokenGiveRequest_sequence);
2613
2614   return offset;
2615 }
2616
2617
2618 static const per_sequence_t TokenGiveIndication_sequence[] = {
2619   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2620   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2621   { &hf_t124_recipient      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2622   { NULL, 0, 0, NULL }
2623 };
2624
2625 static int
2626 dissect_t124_TokenGiveIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2627   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2628                                    ett_t124_TokenGiveIndication, TokenGiveIndication_sequence);
2629
2630   return offset;
2631 }
2632
2633
2634 static const per_sequence_t TokenGiveResponse_sequence[] = {
2635   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2636   { &hf_t124_recipient      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2637   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2638   { NULL, 0, 0, NULL }
2639 };
2640
2641 static int
2642 dissect_t124_TokenGiveResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2643   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2644                                    ett_t124_TokenGiveResponse, TokenGiveResponse_sequence);
2645
2646   return offset;
2647 }
2648
2649
2650 static const per_sequence_t TokenGiveConfirm_sequence[] = {
2651   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2652   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2653   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2654   { &hf_t124_tokenStatus    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2655   { NULL, 0, 0, NULL }
2656 };
2657
2658 static int
2659 dissect_t124_TokenGiveConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2660   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2661                                    ett_t124_TokenGiveConfirm, TokenGiveConfirm_sequence);
2662
2663   return offset;
2664 }
2665
2666
2667 static const per_sequence_t TokenPleaseRequest_sequence[] = {
2668   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2669   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2670   { NULL, 0, 0, NULL }
2671 };
2672
2673 static int
2674 dissect_t124_TokenPleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2675   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2676                                    ett_t124_TokenPleaseRequest, TokenPleaseRequest_sequence);
2677
2678   return offset;
2679 }
2680
2681
2682 static const per_sequence_t TokenPleaseIndication_sequence[] = {
2683   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2684   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2685   { NULL, 0, 0, NULL }
2686 };
2687
2688 static int
2689 dissect_t124_TokenPleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2690   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2691                                    ett_t124_TokenPleaseIndication, TokenPleaseIndication_sequence);
2692
2693   return offset;
2694 }
2695
2696
2697 static const per_sequence_t TokenReleaseRequest_sequence[] = {
2698   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2699   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2700   { NULL, 0, 0, NULL }
2701 };
2702
2703 static int
2704 dissect_t124_TokenReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2705   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2706                                    ett_t124_TokenReleaseRequest, TokenReleaseRequest_sequence);
2707
2708   return offset;
2709 }
2710
2711
2712 static const per_sequence_t TokenReleaseConfirm_sequence[] = {
2713   { &hf_t124_result_01      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Result },
2714   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2715   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2716   { &hf_t124_tokenStatus    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2717   { NULL, 0, 0, NULL }
2718 };
2719
2720 static int
2721 dissect_t124_TokenReleaseConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2722   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2723                                    ett_t124_TokenReleaseConfirm, TokenReleaseConfirm_sequence);
2724
2725   return offset;
2726 }
2727
2728
2729 static const per_sequence_t TokenTestRequest_sequence[] = {
2730   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2731   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2732   { NULL, 0, 0, NULL }
2733 };
2734
2735 static int
2736 dissect_t124_TokenTestRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2737   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2738                                    ett_t124_TokenTestRequest, TokenTestRequest_sequence);
2739
2740   return offset;
2741 }
2742
2743
2744 static const per_sequence_t TokenTestConfirm_sequence[] = {
2745   { &hf_t124_initiator      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_UserId },
2746   { &hf_t124_tokenId        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenId },
2747   { &hf_t124_tokenStatus    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_TokenStatus },
2748   { NULL, 0, 0, NULL }
2749 };
2750
2751 static int
2752 dissect_t124_TokenTestConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2753   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2754                                    ett_t124_TokenTestConfirm, TokenTestConfirm_sequence);
2755
2756   return offset;
2757 }
2758
2759
2760 static const value_string t124_DomainMCSPDU_vals[] = {
2761   {   0, "plumbDomainIndication" },
2762   {   1, "erectDomainRequest" },
2763   {   2, "mergeChannelsRequest" },
2764   {   3, "mergeChannelsConfirm" },
2765   {   4, "purgeChannelsIndication" },
2766   {   5, "mergeTokensRequest" },
2767   {   6, "mergeTokensConfirm" },
2768   {   7, "purgeTokensIndication" },
2769   {   8, "disconnectProviderUltimatum" },
2770   {   9, "rejectMCSPDUUltimatum" },
2771   {  10, "attachUserRequest" },
2772   {  11, "attachUserConfirm" },
2773   {  12, "detachUserRequest" },
2774   {  13, "detachUserIndication" },
2775   {  14, "channelJoinRequest" },
2776   {  15, "channelJoinConfirm" },
2777   {  16, "channelLeaveRequest" },
2778   {  17, "channelConveneRequest" },
2779   {  18, "channelConveneConfirm" },
2780   {  19, "channelDisbandRequest" },
2781   {  20, "channelDisbandIndication" },
2782   {  21, "channelAdmitRequest" },
2783   {  22, "channelAdmitIndication" },
2784   {  23, "channelExpelRequest" },
2785   {  24, "channelExpelIndication" },
2786   {  25, "sendDataRequest" },
2787   {  26, "sendDataIndication" },
2788   {  27, "uniformSendDataRequest" },
2789   {  28, "uniformSendDataIndication" },
2790   {  29, "tokenGrabRequest" },
2791   {  30, "tokenGrabConfirm" },
2792   {  31, "tokenInhibitRequest" },
2793   {  32, "tokenInhibitConfirm" },
2794   {  33, "tokenGiveRequest" },
2795   {  34, "tokenGiveIndication" },
2796   {  35, "tokenGiveResponse" },
2797   {  36, "tokenGiveConfirm" },
2798   {  37, "tokenPleaseRequest" },
2799   {  38, "tokenPleaseIndication" },
2800   {  39, "tokenReleaseRequest" },
2801   {  40, "tokenReleaseConfirm" },
2802   {  41, "tokenTestRequest" },
2803   {  42, "tokenTestConfirm" },
2804   { 0, NULL }
2805 };
2806
2807 static const per_choice_t DomainMCSPDU_choice[] = {
2808   {   0, &hf_t124_plumbDomainIndication, ASN1_NO_EXTENSIONS     , dissect_t124_PlumbDomainIndication },
2809   {   1, &hf_t124_erectDomainRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ErectDomainRequest },
2810   {   2, &hf_t124_mergeChannelsRequest, ASN1_NO_EXTENSIONS     , dissect_t124_MergeChannelsRequest },
2811   {   3, &hf_t124_mergeChannelsConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_MergeChannelsConfirm },
2812   {   4, &hf_t124_purgeChannelsIndication, ASN1_NO_EXTENSIONS     , dissect_t124_PurgeChannelsIndication },
2813   {   5, &hf_t124_mergeTokensRequest, ASN1_NO_EXTENSIONS     , dissect_t124_MergeTokensRequest },
2814   {   6, &hf_t124_mergeTokensConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_MergeTokensConfirm },
2815   {   7, &hf_t124_purgeTokensIndication, ASN1_NO_EXTENSIONS     , dissect_t124_PurgeTokensIndication },
2816   {   8, &hf_t124_disconnectProviderUltimatum, ASN1_NO_EXTENSIONS     , dissect_t124_DisconnectProviderUltimatum },
2817   {   9, &hf_t124_rejectMCSPDUUltimatum, ASN1_NO_EXTENSIONS     , dissect_t124_RejectMCSPDUUltimatum },
2818   {  10, &hf_t124_attachUserRequest, ASN1_NO_EXTENSIONS     , dissect_t124_AttachUserRequest },
2819   {  11, &hf_t124_attachUserConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_AttachUserConfirm },
2820   {  12, &hf_t124_detachUserRequest, ASN1_NO_EXTENSIONS     , dissect_t124_DetachUserRequest },
2821   {  13, &hf_t124_detachUserIndication, ASN1_NO_EXTENSIONS     , dissect_t124_DetachUserIndication },
2822   {  14, &hf_t124_channelJoinRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelJoinRequest },
2823   {  15, &hf_t124_channelJoinConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelJoinConfirm },
2824   {  16, &hf_t124_channelLeaveRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelLeaveRequest },
2825   {  17, &hf_t124_channelConveneRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelConveneRequest },
2826   {  18, &hf_t124_channelConveneConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelConveneConfirm },
2827   {  19, &hf_t124_channelDisbandRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelDisbandRequest },
2828   {  20, &hf_t124_channelDisbandIndication, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelDisbandIndication },
2829   {  21, &hf_t124_channelAdmitRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelAdmitRequest },
2830   {  22, &hf_t124_channelAdmitIndication, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelAdmitIndication },
2831   {  23, &hf_t124_channelExpelRequest, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelExpelRequest },
2832   {  24, &hf_t124_channelExpelIndication, ASN1_NO_EXTENSIONS     , dissect_t124_ChannelExpelIndication },
2833   {  25, &hf_t124_sendDataRequest, ASN1_NO_EXTENSIONS     , dissect_t124_SendDataRequest },
2834   {  26, &hf_t124_sendDataIndication, ASN1_NO_EXTENSIONS     , dissect_t124_SendDataIndication },
2835   {  27, &hf_t124_uniformSendDataRequest, ASN1_NO_EXTENSIONS     , dissect_t124_UniformSendDataRequest },
2836   {  28, &hf_t124_uniformSendDataIndication, ASN1_NO_EXTENSIONS     , dissect_t124_UniformSendDataIndication },
2837   {  29, &hf_t124_tokenGrabRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGrabRequest },
2838   {  30, &hf_t124_tokenGrabConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGrabConfirm },
2839   {  31, &hf_t124_tokenInhibitRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenInhibitRequest },
2840   {  32, &hf_t124_tokenInhibitConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_TokenInhibitConfirm },
2841   {  33, &hf_t124_tokenGiveRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGiveRequest },
2842   {  34, &hf_t124_tokenGiveIndication, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGiveIndication },
2843   {  35, &hf_t124_tokenGiveResponse, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGiveResponse },
2844   {  36, &hf_t124_tokenGiveConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_TokenGiveConfirm },
2845   {  37, &hf_t124_tokenPleaseRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenPleaseRequest },
2846   {  38, &hf_t124_tokenPleaseIndication, ASN1_NO_EXTENSIONS     , dissect_t124_TokenPleaseIndication },
2847   {  39, &hf_t124_tokenReleaseRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenReleaseRequest },
2848   {  40, &hf_t124_tokenReleaseConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_TokenReleaseConfirm },
2849   {  41, &hf_t124_tokenTestRequest, ASN1_NO_EXTENSIONS     , dissect_t124_TokenTestRequest },
2850   {  42, &hf_t124_tokenTestConfirm, ASN1_NO_EXTENSIONS     , dissect_t124_TokenTestConfirm },
2851   { 0, NULL, 0, NULL }
2852 };
2853
2854 static int
2855 dissect_t124_DomainMCSPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2856 #line 194 "../../asn1/t124/t124.cnf"
2857         gint domainmcs_value;
2858
2859   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2860                                  ett_t124_DomainMCSPDU, DomainMCSPDU_choice,
2861                                  &domainmcs_value);
2862
2863         switch(domainmcs_value) {
2864         case 25: /* sendDataRequest */
2865         case 26: /* sendDataIndication */
2866         case 27: /* uniformSendDataRequest */
2867         case 28: /* uniformSendDataIndication */
2868                 /* Do nothing */
2869                 break;
2870         default:
2871                 col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str(domainmcs_value, t124_DomainMCSPDU_vals, "Unknown"));
2872                 break;
2873         }
2874
2875
2876
2877   return offset;
2878 }
2879
2880
2881 /*--- End of included file: packet-t124-fn.c ---*/
2882 #line 73 "../../asn1/t124/packet-t124-template.c"
2883
2884 static const per_sequence_t t124Heur_sequence[] = {
2885   { &hf_t124_t124Identifier , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_t124_Key },
2886   { NULL, 0, 0, NULL }
2887 };
2888
2889 void
2890 register_t124_ns_dissector(const char *nsKey, dissector_t dissector, int proto)
2891 {
2892   dissector_handle_t dissector_handle;
2893
2894   dissector_handle=create_dissector_handle(dissector, proto);
2895   dissector_add_string("t124.ns", nsKey, dissector_handle);
2896 }
2897
2898 void register_t124_sd_dissector(packet_info *pinfo _U_, guint32 channelId, dissector_t dissector, int proto)
2899 {
2900   /* XXX: we should keep the sub-dissectors list per conversation
2901      as the same channels may be used.
2902      While we are just using RDP over T.124, then we can get away with it.
2903   */
2904
2905   dissector_handle_t dissector_handle;
2906
2907   dissector_handle=create_dissector_handle(dissector, proto);
2908   dissector_add_uint("t124.sd", channelId, dissector_handle);
2909
2910 }
2911
2912 guint32 t124_get_last_channelId(void)
2913 {
2914   return channelId;
2915 }
2916
2917 void t124_set_top_tree(proto_tree *tree)
2918 {
2919   top_tree = tree;
2920 }
2921
2922 int dissect_DomainMCSPDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2923   int offset = 0;
2924   asn1_ctx_t asn1_ctx;
2925   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2926
2927   offset = dissect_t124_DomainMCSPDU(tvb, offset, &asn1_ctx, tree, hf_t124_DomainMCSPDU_PDU);
2928   offset += 7; offset >>= 3;
2929   return offset;
2930 }
2931
2932 static int
2933 dissect_t124_new(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree)
2934 {
2935   proto_item *item = NULL;
2936   proto_tree *tree = NULL;
2937   asn1_ctx_t asn1_ctx;
2938
2939   top_tree = parent_tree;
2940
2941   col_set_str(pinfo->cinfo, COL_PROTOCOL, "T.125");
2942   col_clear(pinfo->cinfo, COL_INFO);
2943
2944   item = proto_tree_add_item(parent_tree, proto_t124, tvb, 0, tvb_length(tvb), ENC_NA);
2945   tree = proto_item_add_subtree(item, ett_t124);
2946
2947   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2948   dissect_t124_ConnectData(tvb, 0, &asn1_ctx, tree, hf_t124_ConnectData);
2949
2950   return tvb_length(tvb);
2951 }
2952
2953 static void
2954 dissect_t124(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree)
2955 {
2956   dissect_t124_new(tvb, pinfo, parent_tree);
2957 }
2958
2959 static gboolean
2960 dissect_t124_heur(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree)
2961 {
2962   asn1_ctx_t asn1_ctx;
2963
2964   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2965
2966   t124Identifier = NULL;
2967
2968   (void) dissect_per_sequence(tvb, 0, &asn1_ctx, NULL, -1, -1, t124Heur_sequence);
2969
2970   if((t124Identifier != NULL) &&
2971      (strcmp(t124Identifier, "0.0.20.124.0.1") == 0)) {
2972
2973     dissect_t124(tvb, pinfo, parent_tree);
2974
2975   }
2976
2977   return FALSE;
2978 }
2979
2980 /*--- proto_register_t124 -------------------------------------------*/
2981 void proto_register_t124(void) {
2982
2983   /* List of fields */
2984   static hf_register_info hf[] = {
2985     { &hf_t124_ConnectData,
2986       { "ConnectData", "t124.ConnectData",
2987         FT_NONE, BASE_NONE, NULL, 0,
2988         NULL, HFILL }},
2989     { &hf_t124_connectGCCPDU,
2990       { "connectGCCPDU", "t124.connectGCCPDU",
2991         FT_UINT32, BASE_DEC, VALS(t124_ConnectGCCPDU_vals), 0,
2992         NULL, HFILL }},
2993     { &hf_t124_DomainMCSPDU_PDU,
2994       { "DomainMCSPDU", "t124.DomainMCSPDU",
2995         FT_UINT32, BASE_DEC, VALS(t124_DomainMCSPDU_vals), 0,
2996         NULL, HFILL }},
2997
2998 /*--- Included file: packet-t124-hfarr.c ---*/
2999 #line 1 "../../asn1/t124/packet-t124-hfarr.c"
3000     { &hf_t124_object,
3001       { "object", "t124.object",
3002         FT_OID, BASE_NONE, NULL, 0,
3003         NULL, HFILL }},
3004     { &hf_t124_h221NonStandard,
3005       { "h221NonStandard", "t124.h221NonStandard",
3006         FT_BYTES, BASE_NONE, NULL, 0,
3007         "H221NonStandardIdentifier", HFILL }},
3008     { &hf_t124_key,
3009       { "key", "t124.key",
3010         FT_UINT32, BASE_DEC, VALS(t124_Key_vals), 0,
3011         NULL, HFILL }},
3012     { &hf_t124_data,
3013       { "data", "t124.data",
3014         FT_BYTES, BASE_NONE, NULL, 0,
3015         "OCTET_STRING", HFILL }},
3016     { &hf_t124_UserData_item,
3017       { "UserData item", "t124.UserData_item",
3018         FT_NONE, BASE_NONE, NULL, 0,
3019         NULL, HFILL }},
3020     { &hf_t124_value,
3021       { "value", "t124.value",
3022         FT_BYTES, BASE_NONE, NULL, 0,
3023         NULL, HFILL }},
3024     { &hf_t124_numeric,
3025       { "numeric", "t124.numeric",
3026         FT_STRING, BASE_NONE, NULL, 0,
3027         "SimpleNumericString", HFILL }},
3028     { &hf_t124_text,
3029       { "text", "t124.text",
3030         FT_STRING, BASE_NONE, NULL, 0,
3031         "SimpleTextString", HFILL }},
3032     { &hf_t124_unicodeText,
3033       { "unicodeText", "t124.unicodeText",
3034         FT_STRING, BASE_NONE, NULL, 0,
3035         "TextString", HFILL }},
3036     { &hf_t124_passwordString,
3037       { "passwordString", "t124.passwordString",
3038         FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3039         "PasswordSelector", HFILL }},
3040     { &hf_t124_responseData,
3041       { "responseData", "t124.responseData",
3042         FT_UINT32, BASE_DEC, NULL, 0,
3043         "UserData", HFILL }},
3044     { &hf_t124_passwordInTheClear,
3045       { "passwordInTheClear", "t124.passwordInTheClear",
3046         FT_NONE, BASE_NONE, NULL, 0,
3047         NULL, HFILL }},
3048     { &hf_t124_nonStandardAlgorithm,
3049       { "nonStandardAlgorithm", "t124.nonStandardAlgorithm",
3050         FT_NONE, BASE_NONE, NULL, 0,
3051         "NonStandardParameter", HFILL }},
3052     { &hf_t124_responseAlgorithm,
3053       { "responseAlgorithm", "t124.responseAlgorithm",
3054         FT_UINT32, BASE_DEC, VALS(t124_ChallengeResponseAlgorithm_vals), 0,
3055         "ChallengeResponseAlgorithm", HFILL }},
3056     { &hf_t124_challengeData,
3057       { "challengeData", "t124.challengeData",
3058         FT_UINT32, BASE_DEC, NULL, 0,
3059         "UserData", HFILL }},
3060     { &hf_t124_challengeTag,
3061       { "challengeTag", "t124.challengeTag",
3062         FT_INT32, BASE_DEC, NULL, 0,
3063         "INTEGER", HFILL }},
3064     { &hf_t124_challengeSet,
3065       { "challengeSet", "t124.challengeSet",
3066         FT_UINT32, BASE_DEC, NULL, 0,
3067         "SET_OF_ChallengeItem", HFILL }},
3068     { &hf_t124_challengeSet_item,
3069       { "ChallengeItem", "t124.ChallengeItem",
3070         FT_NONE, BASE_NONE, NULL, 0,
3071         NULL, HFILL }},
3072     { &hf_t124_responseItem,
3073       { "responseItem", "t124.responseItem",
3074         FT_UINT32, BASE_DEC, VALS(t124_ChallengeResponseItem_vals), 0,
3075         "ChallengeResponseItem", HFILL }},
3076     { &hf_t124_passwordInTheClear_01,
3077       { "passwordInTheClear", "t124.passwordInTheClear",
3078         FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3079         "PasswordSelector", HFILL }},
3080     { &hf_t124_challengeRequestResponse,
3081       { "challengeRequestResponse", "t124.challengeRequestResponse",
3082         FT_NONE, BASE_NONE, NULL, 0,
3083         NULL, HFILL }},
3084     { &hf_t124_challengeRequest,
3085       { "challengeRequest", "t124.challengeRequest",
3086         FT_NONE, BASE_NONE, NULL, 0,
3087         NULL, HFILL }},
3088     { &hf_t124_challengeResponse,
3089       { "challengeResponse", "t124.challengeResponse",
3090         FT_NONE, BASE_NONE, NULL, 0,
3091         NULL, HFILL }},
3092     { &hf_t124_nonStandardScheme,
3093       { "nonStandardScheme", "t124.nonStandardScheme",
3094         FT_NONE, BASE_NONE, NULL, 0,
3095         "NonStandardParameter", HFILL }},
3096     { &hf_t124_priority,
3097       { "priority", "t124.priority",
3098         FT_UINT32, BASE_DEC, NULL, 0,
3099         "INTEGER_0_65535", HFILL }},
3100     { &hf_t124_scheme,
3101       { "scheme", "t124.scheme",
3102         FT_UINT32, BASE_DEC, VALS(t124_ConferencePriorityScheme_vals), 0,
3103         "ConferencePriorityScheme", HFILL }},
3104     { &hf_t124_conventional,
3105       { "conventional", "t124.conventional",
3106         FT_NONE, BASE_NONE, NULL, 0,
3107         NULL, HFILL }},
3108     { &hf_t124_counted,
3109       { "counted", "t124.counted",
3110         FT_NONE, BASE_NONE, NULL, 0,
3111         NULL, HFILL }},
3112     { &hf_t124_anonymous,
3113       { "anonymous", "t124.anonymous",
3114         FT_NONE, BASE_NONE, NULL, 0,
3115         NULL, HFILL }},
3116     { &hf_t124_nonStandardCategory,
3117       { "nonStandardCategory", "t124.nonStandardCategory",
3118         FT_NONE, BASE_NONE, NULL, 0,
3119         "NonStandardParameter", HFILL }},
3120     { &hf_t124_conventional_only,
3121       { "conventional-only", "t124.conventional_only",
3122         FT_NONE, BASE_NONE, NULL, 0,
3123         NULL, HFILL }},
3124     { &hf_t124_counted_only,
3125       { "counted-only", "t124.counted_only",
3126         FT_NONE, BASE_NONE, NULL, 0,
3127         NULL, HFILL }},
3128     { &hf_t124_anonymous_only,
3129       { "anonymous-only", "t124.anonymous_only",
3130         FT_NONE, BASE_NONE, NULL, 0,
3131         NULL, HFILL }},
3132     { &hf_t124_conventional_control,
3133       { "conventional-control", "t124.conventional_control",
3134         FT_NONE, BASE_NONE, NULL, 0,
3135         NULL, HFILL }},
3136     { &hf_t124_unrestricted_mode,
3137       { "unrestricted-mode", "t124.unrestricted_mode",
3138         FT_NONE, BASE_NONE, NULL, 0,
3139         NULL, HFILL }},
3140     { &hf_t124_non_standard_mode,
3141       { "non-standard-mode", "t124.non_standard_mode",
3142         FT_NONE, BASE_NONE, NULL, 0,
3143         "NonStandardParameter", HFILL }},
3144     { &hf_t124_NetworkAddress_item,
3145       { "NetworkAddress item", "t124.NetworkAddress_item",
3146         FT_UINT32, BASE_DEC, VALS(t124_NetworkAddress_item_vals), 0,
3147         NULL, HFILL }},
3148     { &hf_t124_aggregatedChannel,
3149       { "aggregatedChannel", "t124.aggregatedChannel",
3150         FT_NONE, BASE_NONE, NULL, 0,
3151         NULL, HFILL }},
3152     { &hf_t124_transferModes,
3153       { "transferModes", "t124.transferModes",
3154         FT_NONE, BASE_NONE, NULL, 0,
3155         NULL, HFILL }},
3156     { &hf_t124_speech,
3157       { "speech", "t124.speech",
3158         FT_BOOLEAN, BASE_NONE, NULL, 0,
3159         "BOOLEAN", HFILL }},
3160     { &hf_t124_voice_band,
3161       { "voice-band", "t124.voice_band",
3162         FT_BOOLEAN, BASE_NONE, NULL, 0,
3163         "BOOLEAN", HFILL }},
3164     { &hf_t124_digital_56k,
3165       { "digital-56k", "t124.digital_56k",
3166         FT_BOOLEAN, BASE_NONE, NULL, 0,
3167         "BOOLEAN", HFILL }},
3168     { &hf_t124_digital_64k,
3169       { "digital-64k", "t124.digital_64k",
3170         FT_BOOLEAN, BASE_NONE, NULL, 0,
3171         "BOOLEAN", HFILL }},
3172     { &hf_t124_digital_128k,
3173       { "digital-128k", "t124.digital_128k",
3174         FT_BOOLEAN, BASE_NONE, NULL, 0,
3175         "BOOLEAN", HFILL }},
3176     { &hf_t124_digital_192k,
3177       { "digital-192k", "t124.digital_192k",
3178         FT_BOOLEAN, BASE_NONE, NULL, 0,
3179         "BOOLEAN", HFILL }},
3180     { &hf_t124_digital_256k,
3181       { "digital-256k", "t124.digital_256k",
3182         FT_BOOLEAN, BASE_NONE, NULL, 0,
3183         "BOOLEAN", HFILL }},
3184     { &hf_t124_digital_320k,
3185       { "digital-320k", "t124.digital_320k",
3186         FT_BOOLEAN, BASE_NONE, NULL, 0,
3187         "BOOLEAN", HFILL }},
3188     { &hf_t124_digital_384k,
3189       { "digital-384k", "t124.digital_384k",
3190         FT_BOOLEAN, BASE_NONE, NULL, 0,
3191         "BOOLEAN", HFILL }},
3192     { &hf_t124_digital_512k,
3193       { "digital-512k", "t124.digital_512k",
3194         FT_BOOLEAN, BASE_NONE, NULL, 0,
3195         "BOOLEAN", HFILL }},
3196     { &hf_t124_digital_768k,
3197       { "digital-768k", "t124.digital_768k",
3198         FT_BOOLEAN, BASE_NONE, NULL, 0,
3199         "BOOLEAN", HFILL }},
3200     { &hf_t124_digital_1152k,
3201       { "digital-1152k", "t124.digital_1152k",
3202         FT_BOOLEAN, BASE_NONE, NULL, 0,
3203         "BOOLEAN", HFILL }},
3204     { &hf_t124_digital_1472k,
3205       { "digital-1472k", "t124.digital_1472k",
3206         FT_BOOLEAN, BASE_NONE, NULL, 0,
3207         "BOOLEAN", HFILL }},
3208     { &hf_t124_digital_1536k,
3209       { "digital-1536k", "t124.digital_1536k",
3210         FT_BOOLEAN, BASE_NONE, NULL, 0,
3211         "BOOLEAN", HFILL }},
3212     { &hf_t124_digital_1920k,
3213       { "digital-1920k", "t124.digital_1920k",
3214         FT_BOOLEAN, BASE_NONE, NULL, 0,
3215         "BOOLEAN", HFILL }},
3216     { &hf_t124_packet_mode,
3217       { "packet-mode", "t124.packet_mode",
3218         FT_BOOLEAN, BASE_NONE, NULL, 0,
3219         "BOOLEAN", HFILL }},
3220     { &hf_t124_frame_mode,
3221       { "frame-mode", "t124.frame_mode",
3222         FT_BOOLEAN, BASE_NONE, NULL, 0,
3223         "BOOLEAN", HFILL }},
3224     { &hf_t124_atm,
3225       { "atm", "t124.atm",
3226         FT_BOOLEAN, BASE_NONE, NULL, 0,
3227         "BOOLEAN", HFILL }},
3228     { &hf_t124_internationalNumber,
3229       { "internationalNumber", "t124.internationalNumber",
3230         FT_STRING, BASE_NONE, NULL, 0,
3231         "DiallingString", HFILL }},
3232     { &hf_t124_subAddress,
3233       { "subAddress", "t124.subAddress",
3234         FT_STRING, BASE_NONE, NULL, 0,
3235         "SubAddressString", HFILL }},
3236     { &hf_t124_extraDialling,
3237       { "extraDialling", "t124.extraDialling",
3238         FT_STRING, BASE_NONE, NULL, 0,
3239         "ExtraDiallingString", HFILL }},
3240     { &hf_t124_highLayerCompatibility,
3241       { "highLayerCompatibility", "t124.highLayerCompatibility",
3242         FT_NONE, BASE_NONE, NULL, 0,
3243         NULL, HFILL }},
3244     { &hf_t124_telephony3kHz,
3245       { "telephony3kHz", "t124.telephony3kHz",
3246         FT_BOOLEAN, BASE_NONE, NULL, 0,
3247         "BOOLEAN", HFILL }},
3248     { &hf_t124_telephony7kHz,
3249       { "telephony7kHz", "t124.telephony7kHz",
3250         FT_BOOLEAN, BASE_NONE, NULL, 0,
3251         "BOOLEAN", HFILL }},
3252     { &hf_t124_videotelephony,
3253       { "videotelephony", "t124.videotelephony",
3254         FT_BOOLEAN, BASE_NONE, NULL, 0,
3255         "BOOLEAN", HFILL }},
3256     { &hf_t124_videoconference,
3257       { "videoconference", "t124.videoconference",
3258         FT_BOOLEAN, BASE_NONE, NULL, 0,
3259         "BOOLEAN", HFILL }},
3260     { &hf_t124_audiographic,
3261       { "audiographic", "t124.audiographic",
3262         FT_BOOLEAN, BASE_NONE, NULL, 0,
3263         "BOOLEAN", HFILL }},
3264     { &hf_t124_audiovisual,
3265       { "audiovisual", "t124.audiovisual",
3266         FT_BOOLEAN, BASE_NONE, NULL, 0,
3267         "BOOLEAN", HFILL }},
3268     { &hf_t124_multimedia,
3269       { "multimedia", "t124.multimedia",
3270         FT_BOOLEAN, BASE_NONE, NULL, 0,
3271         "BOOLEAN", HFILL }},
3272     { &hf_t124_transportConnection,
3273       { "transportConnection", "t124.transportConnection",
3274         FT_NONE, BASE_NONE, NULL, 0,
3275         NULL, HFILL }},
3276     { &hf_t124_nsapAddress,
3277       { "nsapAddress", "t124.nsapAddress",
3278         FT_BYTES, BASE_NONE, NULL, 0,
3279         "OCTET_STRING_SIZE_1_20", HFILL }},
3280     { &hf_t124_transportSelector,
3281       { "transportSelector", "t124.transportSelector",
3282         FT_BYTES, BASE_NONE, NULL, 0,
3283         "OCTET_STRING", HFILL }},
3284     { &hf_t124_nonStandard,
3285       { "nonStandard", "t124.nonStandard",
3286         FT_NONE, BASE_NONE, NULL, 0,
3287         "NonStandardParameter", HFILL }},
3288     { &hf_t124_callingNode,
3289       { "callingNode", "t124.callingNode",
3290         FT_NONE, BASE_NONE, NULL, 0,
3291         NULL, HFILL }},
3292     { &hf_t124_calledNode,
3293       { "calledNode", "t124.calledNode",
3294         FT_NONE, BASE_NONE, NULL, 0,
3295         NULL, HFILL }},
3296     { &hf_t124_unknown,
3297       { "unknown", "t124.unknown",
3298         FT_UINT32, BASE_DEC, NULL, 0,
3299         "INTEGER_0_4294967295", HFILL }},
3300     { &hf_t124_conferenceName,
3301       { "conferenceName", "t124.conferenceName",
3302         FT_NONE, BASE_NONE, NULL, 0,
3303         NULL, HFILL }},
3304     { &hf_t124_conferenceNameModifier,
3305       { "conferenceNameModifier", "t124.conferenceNameModifier",
3306         FT_STRING, BASE_NONE, NULL, 0,
3307         NULL, HFILL }},
3308     { &hf_t124_conferenceDescription,
3309       { "conferenceDescription", "t124.conferenceDescription",
3310         FT_STRING, BASE_NONE, NULL, 0,
3311         "TextString", HFILL }},
3312     { &hf_t124_lockedConference,
3313       { "lockedConference", "t124.lockedConference",
3314         FT_BOOLEAN, BASE_NONE, NULL, 0,
3315         "BOOLEAN", HFILL }},
3316     { &hf_t124_passwordInTheClearRequired,
3317       { "passwordInTheClearRequired", "t124.passwordInTheClearRequired",
3318         FT_BOOLEAN, BASE_NONE, NULL, 0,
3319         "BOOLEAN", HFILL }},
3320     { &hf_t124_networkAddress,
3321       { "networkAddress", "t124.networkAddress",
3322         FT_UINT32, BASE_DEC, NULL, 0,
3323         NULL, HFILL }},
3324     { &hf_t124_defaultConferenceFlag,
3325       { "defaultConferenceFlag", "t124.defaultConferenceFlag",
3326         FT_BOOLEAN, BASE_NONE, NULL, 0,
3327         "BOOLEAN", HFILL }},
3328     { &hf_t124_conferenceMode,
3329       { "conferenceMode", "t124.conferenceMode",
3330         FT_UINT32, BASE_DEC, VALS(t124_ConferenceMode_vals), 0,
3331         NULL, HFILL }},
3332     { &hf_t124_convenerPassword,
3333       { "convenerPassword", "t124.convenerPassword",
3334         FT_NONE, BASE_NONE, NULL, 0,
3335         "Password", HFILL }},
3336     { &hf_t124_password,
3337       { "password", "t124.password",
3338         FT_NONE, BASE_NONE, NULL, 0,
3339         NULL, HFILL }},
3340     { &hf_t124_listedConference,
3341       { "listedConference", "t124.listedConference",
3342         FT_BOOLEAN, BASE_NONE, NULL, 0,
3343         "BOOLEAN", HFILL }},
3344     { &hf_t124_conductibleConference,
3345       { "conductibleConference", "t124.conductibleConference",
3346         FT_BOOLEAN, BASE_NONE, NULL, 0,
3347         "BOOLEAN", HFILL }},
3348     { &hf_t124_terminationMethod,
3349       { "terminationMethod", "t124.terminationMethod",
3350         FT_UINT32, BASE_DEC, VALS(t124_TerminationMethod_vals), 0,
3351         NULL, HFILL }},
3352     { &hf_t124_conductorPrivileges,
3353       { "conductorPrivileges", "t124.conductorPrivileges",
3354         FT_UINT32, BASE_DEC, NULL, 0,
3355         "SET_OF_Privilege", HFILL }},
3356     { &hf_t124_conductorPrivileges_item,
3357       { "Privilege", "t124.Privilege",
3358         FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3359         NULL, HFILL }},
3360     { &hf_t124_conductedPrivileges,
3361       { "conductedPrivileges", "t124.conductedPrivileges",
3362         FT_UINT32, BASE_DEC, NULL, 0,
3363         "SET_OF_Privilege", HFILL }},
3364     { &hf_t124_conductedPrivileges_item,
3365       { "Privilege", "t124.Privilege",
3366         FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3367         NULL, HFILL }},
3368     { &hf_t124_nonConductedPrivileges,
3369       { "nonConductedPrivileges", "t124.nonConductedPrivileges",
3370         FT_UINT32, BASE_DEC, NULL, 0,
3371         "SET_OF_Privilege", HFILL }},
3372     { &hf_t124_nonConductedPrivileges_item,
3373       { "Privilege", "t124.Privilege",
3374         FT_UINT32, BASE_DEC, VALS(t124_Privilege_vals), 0,
3375         NULL, HFILL }},
3376     { &hf_t124_callerIdentifier,
3377       { "callerIdentifier", "t124.callerIdentifier",
3378         FT_STRING, BASE_NONE, NULL, 0,
3379         "TextString", HFILL }},
3380     { &hf_t124_userData,
3381       { "userData", "t124.userData",
3382         FT_UINT32, BASE_DEC, NULL, 0,
3383         NULL, HFILL }},
3384     { &hf_t124_conferencePriority,
3385       { "conferencePriority", "t124.conferencePriority",
3386         FT_NONE, BASE_NONE, NULL, 0,
3387         NULL, HFILL }},
3388     { &hf_t124_nodeID,
3389       { "nodeID", "t124.nodeID",
3390         FT_UINT32, BASE_DEC, NULL, 0,
3391         "UserID", HFILL }},
3392     { &hf_t124_tag,
3393       { "tag", "t124.tag",
3394         FT_INT32, BASE_DEC, NULL, 0,
3395         "INTEGER", HFILL }},
3396     { &hf_t124_result,
3397       { "result", "t124.result",
3398         FT_UINT32, BASE_DEC, VALS(t124_T_result_vals), 0,
3399         NULL, HFILL }},
3400     { &hf_t124_nodeType,
3401       { "nodeType", "t124.nodeType",
3402         FT_UINT32, BASE_DEC, VALS(t124_NodeType_vals), 0,
3403         NULL, HFILL }},
3404     { &hf_t124_asymmetryIndicator,
3405       { "asymmetryIndicator", "t124.asymmetryIndicator",
3406         FT_UINT32, BASE_DEC, VALS(t124_AsymmetryIndicator_vals), 0,
3407         NULL, HFILL }},
3408     { &hf_t124_conferenceList,
3409       { "conferenceList", "t124.conferenceList",
3410         FT_UINT32, BASE_DEC, NULL, 0,
3411         "SET_OF_ConferenceDescriptor", HFILL }},
3412     { &hf_t124_conferenceList_item,
3413       { "ConferenceDescriptor", "t124.ConferenceDescriptor",
3414         FT_NONE, BASE_NONE, NULL, 0,
3415         NULL, HFILL }},
3416     { &hf_t124_queryResponseResult,
3417       { "result", "t124.result",
3418         FT_UINT32, BASE_DEC, VALS(t124_QueryResponseResult_vals), 0,
3419         "QueryResponseResult", HFILL }},
3420     { &hf_t124_waitForInvitationFlag,
3421       { "waitForInvitationFlag", "t124.waitForInvitationFlag",
3422         FT_BOOLEAN, BASE_NONE, NULL, 0,
3423         "BOOLEAN", HFILL }},
3424     { &hf_t124_noUnlistedConferenceFlag,
3425       { "noUnlistedConferenceFlag", "t124.noUnlistedConferenceFlag",
3426         FT_BOOLEAN, BASE_NONE, NULL, 0,
3427         "BOOLEAN", HFILL }},
3428     { &hf_t124_conferenceName_01,
3429       { "conferenceName", "t124.conferenceName",
3430         FT_UINT32, BASE_DEC, VALS(t124_ConferenceNameSelector_vals), 0,
3431         "ConferenceNameSelector", HFILL }},
3432     { &hf_t124_password_01,
3433       { "password", "t124.password",
3434         FT_UINT32, BASE_DEC, VALS(t124_PasswordChallengeRequestResponse_vals), 0,
3435         "PasswordChallengeRequestResponse", HFILL }},
3436     { &hf_t124_convenerPassword_01,
3437       { "convenerPassword", "t124.convenerPassword",
3438         FT_UINT32, BASE_DEC, VALS(t124_PasswordSelector_vals), 0,
3439         "PasswordSelector", HFILL }},
3440     { &hf_t124_nodeCategory,
3441       { "nodeCategory", "t124.nodeCategory",
3442         FT_UINT32, BASE_DEC, VALS(t124_NodeCategory_vals), 0,
3443         NULL, HFILL }},
3444     { &hf_t124_topNodeID,
3445       { "topNodeID", "t124.topNodeID",
3446         FT_UINT32, BASE_DEC, NULL, 0,
3447         "UserID", HFILL }},
3448     { &hf_t124_conferenceNameAlias,
3449       { "conferenceNameAlias", "t124.conferenceNameAlias",
3450         FT_UINT32, BASE_DEC, VALS(t124_ConferenceNameSelector_vals), 0,
3451         "ConferenceNameSelector", HFILL }},
3452     { &hf_t124_joinResponseResult,
3453       { "result", "t124.result",
3454         FT_UINT32, BASE_DEC, VALS(t124_JoinResponseResult_vals), 0,
3455         "JoinResponseResult", HFILL }},
3456     { &hf_t124_inviteResponseResult,
3457       { "result", "t124.result",
3458         FT_UINT32, BASE_DEC, VALS(t124_InviteResponseResult_vals), 0,
3459         "InviteResponseResult", HFILL }},
3460     { &hf_t124_t124Identifier,
3461       { "t124Identifier", "t124.t124Identifier",
3462         FT_UINT32, BASE_DEC, VALS(t124_Key_vals), 0,
3463         "Key", HFILL }},
3464     { &hf_t124_connectPDU,
3465       { "connectPDU", "t124.connectPDU",
3466         FT_BYTES, BASE_NONE, NULL, 0,
3467         NULL, HFILL }},
3468     { &hf_t124_conferenceCreateRequest,
3469       { "conferenceCreateRequest", "t124.conferenceCreateRequest",
3470         FT_NONE, BASE_NONE, NULL, 0,
3471         NULL, HFILL }},
3472     { &hf_t124_conferenceCreateResponse,
3473       { "conferenceCreateResponse", "t124.conferenceCreateResponse",
3474         FT_NONE, BASE_NONE, NULL, 0,
3475         NULL, HFILL }},
3476     { &hf_t124_conferenceQueryRequest,
3477       { "conferenceQueryRequest", "t124.conferenceQueryRequest",
3478         FT_NONE, BASE_NONE, NULL, 0,
3479         NULL, HFILL }},
3480     { &hf_t124_conferenceQueryResponse,
3481       { "conferenceQueryResponse", "t124.conferenceQueryResponse",
3482         FT_NONE, BASE_NONE, NULL, 0,
3483         NULL, HFILL }},
3484     { &hf_t124_conferenceJoinRequest,
3485       { "conferenceJoinRequest", "t124.conferenceJoinRequest",
3486         FT_NONE, BASE_NONE, NULL, 0,
3487         NULL, HFILL }},
3488     { &hf_t124_conferenceJoinResponse,
3489       { "conferenceJoinResponse", "t124.conferenceJoinResponse",
3490         FT_NONE, BASE_NONE, NULL, 0,
3491         NULL, HFILL }},
3492     { &hf_t124_conferenceInviteRequest,
3493       { "conferenceInviteRequest", "t124.conferenceInviteRequest",
3494         FT_NONE, BASE_NONE, NULL, 0,
3495         NULL, HFILL }},
3496     { &hf_t124_conferenceInviteResponse,
3497       { "conferenceInviteResponse", "t124.conferenceInviteResponse",
3498         FT_NONE, BASE_NONE, NULL, 0,
3499         NULL, HFILL }},
3500     { &hf_t124_heightLimit,
3501       { "heightLimit", "t124.heightLimit",
3502         FT_UINT32, BASE_DEC, NULL, 0,
3503         "INTEGER_0_MAX", HFILL }},
3504     { &hf_t124_subHeight,
3505       { "subHeight", "t124.subHeight",
3506         FT_UINT32, BASE_DEC, NULL, 0,
3507         "INTEGER_0_MAX", HFILL }},
3508     { &hf_t124_subInterval,
3509       { "subInterval", "t124.subInterval",
3510         FT_UINT32, BASE_DEC, NULL, 0,
3511         "INTEGER_0_MAX", HFILL }},
3512     { &hf_t124_static,
3513       { "static", "t124.static",
3514         FT_NONE, BASE_NONE, NULL, 0,
3515         NULL, HFILL }},
3516     { &hf_t124_channelId,
3517       { "channelId", "t124.channelId",
3518         FT_UINT32, BASE_DEC, NULL, 0,
3519         "StaticChannelId", HFILL }},
3520     { &hf_t124_userId,
3521       { "userId", "t124.userId",
3522         FT_NONE, BASE_NONE, NULL, 0,
3523         NULL, HFILL }},
3524     { &hf_t124_joined,
3525       { "joined", "t124.joined",
3526         FT_BOOLEAN, BASE_NONE, NULL, 0,
3527         "BOOLEAN", HFILL }},
3528     { &hf_t124_userId_01,
3529       { "userId", "t124.userId",
3530         FT_UINT32, BASE_DEC, NULL, 0,
3531         NULL, HFILL }},
3532     { &hf_t124_private,
3533       { "private", "t124.private",
3534         FT_NONE, BASE_NONE, NULL, 0,
3535         NULL, HFILL }},
3536     { &hf_t124_channelId_01,
3537       { "channelId", "t124.channelId",
3538         FT_UINT32, BASE_DEC, NULL, 0,
3539         "PrivateChannelId", HFILL }},
3540     { &hf_t124_manager,
3541       { "manager", "t124.manager",
3542         FT_UINT32, BASE_DEC, NULL, 0,
3543         "UserId", HFILL }},
3544     { &hf_t124_admitted,
3545       { "admitted", "t124.admitted",
3546         FT_UINT32, BASE_DEC, NULL, 0,
3547         "SET_OF_UserId", HFILL }},
3548     { &hf_t124_admitted_item,
3549       { "UserId", "t124.UserId",
3550         FT_UINT32, BASE_DEC, NULL, 0,
3551         NULL, HFILL }},
3552     { &hf_t124_assigned,
3553       { "assigned", "t124.assigned",
3554         FT_NONE, BASE_NONE, NULL, 0,
3555         NULL, HFILL }},
3556     { &hf_t124_channelId_02,
3557       { "channelId", "t124.channelId",
3558         FT_UINT32, BASE_DEC, NULL, 0,
3559         "AssignedChannelId", HFILL }},
3560     { &hf_t124_mergeChannels,
3561       { "mergeChannels", "t124.mergeChannels",
3562         FT_UINT32, BASE_DEC, NULL, 0,
3563         "SET_OF_ChannelAttributes", HFILL }},
3564     { &hf_t124_mergeChannels_item,
3565       { "ChannelAttributes", "t124.ChannelAttributes",
3566         FT_UINT32, BASE_DEC, VALS(t124_ChannelAttributes_vals), 0,
3567         NULL, HFILL }},
3568     { &hf_t124_purgeChannelIds,
3569       { "purgeChannelIds", "t124.purgeChannelIds",
3570         FT_UINT32, BASE_DEC, NULL, 0,
3571         "SET_OF_ChannelId", HFILL }},
3572     { &hf_t124_purgeChannelIds_item,
3573       { "ChannelId", "t124.ChannelId",
3574         FT_UINT32, BASE_DEC, NULL, 0,
3575         NULL, HFILL }},
3576     { &hf_t124_detachUserIds,
3577       { "detachUserIds", "t124.detachUserIds",
3578         FT_UINT32, BASE_DEC, NULL, 0,
3579         "SET_OF_UserId", HFILL }},
3580     { &hf_t124_detachUserIds_item,
3581       { "UserId", "t124.UserId",
3582         FT_UINT32, BASE_DEC, NULL, 0,
3583         NULL, HFILL }},
3584     { &hf_t124_grabbed,
3585       { "grabbed", "t124.grabbed",
3586         FT_NONE, BASE_NONE, NULL, 0,
3587         NULL, HFILL }},
3588     { &hf_t124_tokenId,
3589       { "tokenId", "t124.tokenId",
3590         FT_UINT32, BASE_DEC, NULL, 0,
3591         NULL, HFILL }},
3592     { &hf_t124_grabber,
3593       { "grabber", "t124.grabber",
3594         FT_UINT32, BASE_DEC, NULL, 0,
3595         "UserId", HFILL }},
3596     { &hf_t124_inhibited,
3597       { "inhibited", "t124.inhibited",
3598         FT_NONE, BASE_NONE, NULL, 0,
3599         NULL, HFILL }},
3600     { &hf_t124_inhibitors,
3601       { "inhibitors", "t124.inhibitors",
3602         FT_UINT32, BASE_DEC, NULL, 0,
3603         "SET_OF_UserId", HFILL }},
3604     { &hf_t124_inhibitors_item,
3605       { "UserId", "t124.UserId",
3606         FT_UINT32, BASE_DEC, NULL, 0,
3607         NULL, HFILL }},
3608     { &hf_t124_giving,
3609       { "giving", "t124.giving",
3610         FT_NONE, BASE_NONE, NULL, 0,
3611         NULL, HFILL }},
3612     { &hf_t124_recipient,
3613       { "recipient", "t124.recipient",
3614         FT_UINT32, BASE_DEC, NULL, 0,
3615         "UserId", HFILL }},
3616     { &hf_t124_ungivable,
3617       { "ungivable", "t124.ungivable",
3618         FT_NONE, BASE_NONE, NULL, 0,
3619         NULL, HFILL }},
3620     { &hf_t124_given,
3621       { "given", "t124.given",
3622         FT_NONE, BASE_NONE, NULL, 0,
3623         NULL, HFILL }},
3624     { &hf_t124_mergeTokens,
3625       { "mergeTokens", "t124.mergeTokens",
3626         FT_UINT32, BASE_DEC, NULL, 0,
3627         "SET_OF_TokenAttributes", HFILL }},
3628     { &hf_t124_mergeTokens_item,
3629       { "TokenAttributes", "t124.TokenAttributes",
3630         FT_UINT32, BASE_DEC, VALS(t124_TokenAttributes_vals), 0,
3631         NULL, HFILL }},
3632     { &hf_t124_purgeTokenIds,
3633       { "purgeTokenIds", "t124.purgeTokenIds",
3634         FT_UINT32, BASE_DEC, NULL, 0,
3635         "SET_OF_TokenId", HFILL }},
3636     { &hf_t124_purgeTokenIds_item,
3637       { "TokenId", "t124.TokenId",
3638         FT_UINT32, BASE_DEC, NULL, 0,
3639         NULL, HFILL }},
3640     { &hf_t124_reason,
3641       { "reason", "t124.reason",
3642         FT_UINT32, BASE_DEC, VALS(t124_Reason_vals), 0,
3643         NULL, HFILL }},
3644     { &hf_t124_diagnostic,
3645       { "diagnostic", "t124.diagnostic",
3646         FT_UINT32, BASE_DEC, VALS(t124_Diagnostic_vals), 0,
3647         NULL, HFILL }},
3648     { &hf_t124_initialOctets,
3649       { "initialOctets", "t124.initialOctets",
3650         FT_BYTES, BASE_NONE, NULL, 0,
3651         "OCTET_STRING", HFILL }},
3652     { &hf_t124_result_01,
3653       { "result", "t124.result",
3654         FT_UINT32, BASE_DEC, VALS(t124_Result_vals), 0,
3655         NULL, HFILL }},
3656     { &hf_t124_initiator,
3657       { "initiator", "t124.initiator",
3658         FT_UINT32, BASE_DEC, NULL, 0,
3659         "UserId", HFILL }},
3660     { &hf_t124_userIds,
3661       { "userIds", "t124.userIds",
3662         FT_UINT32, BASE_DEC, NULL, 0,
3663         "SET_OF_UserId", HFILL }},
3664     { &hf_t124_userIds_item,
3665       { "UserId", "t124.UserId",
3666         FT_UINT32, BASE_DEC, NULL, 0,
3667         NULL, HFILL }},
3668     { &hf_t124_channelId_03,
3669       { "channelId", "t124.channelId",
3670         FT_UINT32, BASE_DEC, NULL, 0,
3671         NULL, HFILL }},
3672     { &hf_t124_requested,
3673       { "requested", "t124.requested",
3674         FT_UINT32, BASE_DEC, NULL, 0,
3675         "ChannelId", HFILL }},
3676     { &hf_t124_channelIds,
3677       { "channelIds", "t124.channelIds",
3678         FT_UINT32, BASE_DEC, NULL, 0,
3679         "SET_OF_ChannelId", HFILL }},
3680     { &hf_t124_channelIds_item,
3681       { "ChannelId", "t124.ChannelId",
3682         FT_UINT32, BASE_DEC, NULL, 0,
3683         NULL, HFILL }},
3684     { &hf_t124_dataPriority,
3685       { "dataPriority", "t124.dataPriority",
3686         FT_UINT32, BASE_DEC, VALS(t124_DataPriority_vals), 0,
3687         NULL, HFILL }},
3688     { &hf_t124_segmentation,
3689       { "segmentation", "t124.segmentation",
3690         FT_BYTES, BASE_NONE, NULL, 0,
3691         NULL, HFILL }},
3692     { &hf_t124_userData_01,
3693       { "userData", "t124.userData",
3694         FT_BYTES, BASE_NONE, NULL, 0,
3695         NULL, HFILL }},
3696     { &hf_t124_userData_02,
3697       { "userData", "t124.userData",
3698         FT_BYTES, BASE_NONE, NULL, 0,
3699         "T_userData_01", HFILL }},
3700     { &hf_t124_userData_03,
3701       { "userData", "t124.userData",
3702         FT_BYTES, BASE_NONE, NULL, 0,
3703         "OCTET_STRING", HFILL }},
3704     { &hf_t124_tokenStatus,
3705       { "tokenStatus", "t124.tokenStatus",
3706         FT_UINT32, BASE_DEC, VALS(t124_TokenStatus_vals), 0,
3707         NULL, HFILL }},
3708     { &hf_t124_plumbDomainIndication,
3709       { "plumbDomainIndication", "t124.plumbDomainIndication",
3710         FT_NONE, BASE_NONE, NULL, 0,
3711         NULL, HFILL }},
3712     { &hf_t124_erectDomainRequest,
3713       { "erectDomainRequest", "t124.erectDomainRequest",
3714         FT_NONE, BASE_NONE, NULL, 0,
3715         NULL, HFILL }},
3716     { &hf_t124_mergeChannelsRequest,
3717       { "mergeChannelsRequest", "t124.mergeChannelsRequest",
3718         FT_NONE, BASE_NONE, NULL, 0,
3719         NULL, HFILL }},
3720     { &hf_t124_mergeChannelsConfirm,
3721       { "mergeChannelsConfirm", "t124.mergeChannelsConfirm",
3722         FT_NONE, BASE_NONE, NULL, 0,
3723         NULL, HFILL }},
3724     { &hf_t124_purgeChannelsIndication,
3725       { "purgeChannelsIndication", "t124.purgeChannelsIndication",
3726         FT_NONE, BASE_NONE, NULL, 0,
3727         NULL, HFILL }},
3728     { &hf_t124_mergeTokensRequest,
3729       { "mergeTokensRequest", "t124.mergeTokensRequest",
3730         FT_NONE, BASE_NONE, NULL, 0,
3731         NULL, HFILL }},
3732     { &hf_t124_mergeTokensConfirm,
3733       { "mergeTokensConfirm", "t124.mergeTokensConfirm",
3734         FT_NONE, BASE_NONE, NULL, 0,
3735         NULL, HFILL }},
3736     { &hf_t124_purgeTokensIndication,
3737       { "purgeTokensIndication", "t124.purgeTokensIndication",
3738         FT_NONE, BASE_NONE, NULL, 0,
3739         NULL, HFILL }},
3740     { &hf_t124_disconnectProviderUltimatum,
3741       { "disconnectProviderUltimatum", "t124.disconnectProviderUltimatum",
3742         FT_NONE, BASE_NONE, NULL, 0,
3743         NULL, HFILL }},
3744     { &hf_t124_rejectMCSPDUUltimatum,
3745       { "rejectMCSPDUUltimatum", "t124.rejectMCSPDUUltimatum",
3746         FT_NONE, BASE_NONE, NULL, 0,
3747         NULL, HFILL }},
3748     { &hf_t124_attachUserRequest,
3749       { "attachUserRequest", "t124.attachUserRequest",
3750         FT_NONE, BASE_NONE, NULL, 0,
3751         NULL, HFILL }},
3752     { &hf_t124_attachUserConfirm,
3753       { "attachUserConfirm", "t124.attachUserConfirm",
3754         FT_NONE, BASE_NONE, NULL, 0,
3755         NULL, HFILL }},
3756     { &hf_t124_detachUserRequest,
3757       { "detachUserRequest", "t124.detachUserRequest",
3758         FT_NONE, BASE_NONE, NULL, 0,
3759         NULL, HFILL }},
3760     { &hf_t124_detachUserIndication,
3761       { "detachUserIndication", "t124.detachUserIndication",
3762         FT_NONE, BASE_NONE, NULL, 0,
3763         NULL, HFILL }},
3764     { &hf_t124_channelJoinRequest,
3765       { "channelJoinRequest", "t124.channelJoinRequest",
3766         FT_NONE, BASE_NONE, NULL, 0,
3767         NULL, HFILL }},
3768     { &hf_t124_channelJoinConfirm,
3769       { "channelJoinConfirm", "t124.channelJoinConfirm",
3770         FT_NONE, BASE_NONE, NULL, 0,
3771         NULL, HFILL }},
3772     { &hf_t124_channelLeaveRequest,
3773       { "channelLeaveRequest", "t124.channelLeaveRequest",
3774         FT_NONE, BASE_NONE, NULL, 0,
3775         NULL, HFILL }},
3776     { &hf_t124_channelConveneRequest,
3777       { "channelConveneRequest", "t124.channelConveneRequest",
3778         FT_NONE, BASE_NONE, NULL, 0,
3779         NULL, HFILL }},
3780     { &hf_t124_channelConveneConfirm,
3781       { "channelConveneConfirm", "t124.channelConveneConfirm",
3782         FT_NONE, BASE_NONE, NULL, 0,
3783         NULL, HFILL }},
3784     { &hf_t124_channelDisbandRequest,
3785       { "channelDisbandRequest", "t124.channelDisbandRequest",
3786         FT_NONE, BASE_NONE, NULL, 0,
3787         NULL, HFILL }},
3788     { &hf_t124_channelDisbandIndication,
3789       { "channelDisbandIndication", "t124.channelDisbandIndication",
3790         FT_NONE, BASE_NONE, NULL, 0,
3791         NULL, HFILL }},
3792     { &hf_t124_channelAdmitRequest,
3793       { "channelAdmitRequest", "t124.channelAdmitRequest",
3794         FT_NONE, BASE_NONE, NULL, 0,
3795         NULL, HFILL }},
3796     { &hf_t124_channelAdmitIndication,
3797       { "channelAdmitIndication", "t124.channelAdmitIndication",
3798         FT_NONE, BASE_NONE, NULL, 0,
3799         NULL, HFILL }},
3800     { &hf_t124_channelExpelRequest,
3801       { "channelExpelRequest", "t124.channelExpelRequest",
3802         FT_NONE, BASE_NONE, NULL, 0,
3803         NULL, HFILL }},
3804     { &hf_t124_channelExpelIndication,
3805       { "channelExpelIndication", "t124.channelExpelIndication",
3806         FT_NONE, BASE_NONE, NULL, 0,
3807         NULL, HFILL }},
3808     { &hf_t124_sendDataRequest,
3809       { "sendDataRequest", "t124.sendDataRequest",
3810         FT_NONE, BASE_NONE, NULL, 0,
3811         NULL, HFILL }},
3812     { &hf_t124_sendDataIndication,
3813       { "sendDataIndication", "t124.sendDataIndication",
3814         FT_NONE, BASE_NONE, NULL, 0,
3815         NULL, HFILL }},
3816     { &hf_t124_uniformSendDataRequest,
3817       { "uniformSendDataRequest", "t124.uniformSendDataRequest",
3818         FT_NONE, BASE_NONE, NULL, 0,
3819         NULL, HFILL }},
3820     { &hf_t124_uniformSendDataIndication,
3821       { "uniformSendDataIndication", "t124.uniformSendDataIndication",
3822         FT_NONE, BASE_NONE, NULL, 0,
3823         NULL, HFILL }},
3824     { &hf_t124_tokenGrabRequest,
3825       { "tokenGrabRequest", "t124.tokenGrabRequest",
3826         FT_NONE, BASE_NONE, NULL, 0,
3827         NULL, HFILL }},
3828     { &hf_t124_tokenGrabConfirm,
3829       { "tokenGrabConfirm", "t124.tokenGrabConfirm",
3830         FT_NONE, BASE_NONE, NULL, 0,
3831         NULL, HFILL }},
3832     { &hf_t124_tokenInhibitRequest,
3833       { "tokenInhibitRequest", "t124.tokenInhibitRequest",
3834         FT_NONE, BASE_NONE, NULL, 0,
3835         NULL, HFILL }},
3836     { &hf_t124_tokenInhibitConfirm,
3837       { "tokenInhibitConfirm", "t124.tokenInhibitConfirm",
3838         FT_NONE, BASE_NONE, NULL, 0,
3839         NULL, HFILL }},
3840     { &hf_t124_tokenGiveRequest,
3841       { "tokenGiveRequest", "t124.tokenGiveRequest",
3842         FT_NONE, BASE_NONE, NULL, 0,
3843         NULL, HFILL }},
3844     { &hf_t124_tokenGiveIndication,
3845       { "tokenGiveIndication", "t124.tokenGiveIndication",
3846         FT_NONE, BASE_NONE, NULL, 0,
3847         NULL, HFILL }},
3848     { &hf_t124_tokenGiveResponse,
3849       { "tokenGiveResponse", "t124.tokenGiveResponse",
3850         FT_NONE, BASE_NONE, NULL, 0,
3851         NULL, HFILL }},
3852     { &hf_t124_tokenGiveConfirm,
3853       { "tokenGiveConfirm", "t124.tokenGiveConfirm",
3854         FT_NONE, BASE_NONE, NULL, 0,
3855         NULL, HFILL }},
3856     { &hf_t124_tokenPleaseRequest,
3857       { "tokenPleaseRequest", "t124.tokenPleaseRequest",
3858         FT_NONE, BASE_NONE, NULL, 0,
3859         NULL, HFILL }},
3860     { &hf_t124_tokenPleaseIndication,
3861       { "tokenPleaseIndication", "t124.tokenPleaseIndication",
3862         FT_NONE, BASE_NONE, NULL, 0,
3863         NULL, HFILL }},
3864     { &hf_t124_tokenReleaseRequest,
3865       { "tokenReleaseRequest", "t124.tokenReleaseRequest",
3866         FT_NONE, BASE_NONE, NULL, 0,
3867         NULL, HFILL }},
3868     { &hf_t124_tokenReleaseConfirm,
3869       { "tokenReleaseConfirm", "t124.tokenReleaseConfirm",
3870         FT_NONE, BASE_NONE, NULL, 0,
3871         NULL, HFILL }},
3872     { &hf_t124_tokenTestRequest,
3873       { "tokenTestRequest", "t124.tokenTestRequest",
3874         FT_NONE, BASE_NONE, NULL, 0,
3875         NULL, HFILL }},
3876     { &hf_t124_tokenTestConfirm,
3877       { "tokenTestConfirm", "t124.tokenTestConfirm",
3878         FT_NONE, BASE_NONE, NULL, 0,
3879         NULL, HFILL }},
3880     { &hf_t124_Segmentation_begin,
3881       { "begin", "t124.begin",
3882         FT_BOOLEAN, 8, NULL, 0x80,
3883         NULL, HFILL }},
3884     { &hf_t124_Segmentation_end,
3885       { "end", "t124.end",
3886         FT_BOOLEAN, 8, NULL, 0x40,
3887         NULL, HFILL }},
3888
3889 /*--- End of included file: packet-t124-hfarr.c ---*/
3890 #line 188 "../../asn1/t124/packet-t124-template.c"
3891   };
3892
3893   /* List of subtrees */
3894   static gint *ett[] = {
3895           &ett_t124,
3896           &ett_t124_connectGCCPDU,
3897
3898 /*--- Included file: packet-t124-ettarr.c ---*/
3899 #line 1 "../../asn1/t124/packet-t124-ettarr.c"
3900     &ett_t124_Key,
3901     &ett_t124_NonStandardParameter,
3902     &ett_t124_UserData,
3903     &ett_t124_UserData_item,
3904     &ett_t124_Password,
3905     &ett_t124_PasswordSelector,
3906     &ett_t124_ChallengeResponseItem,
3907     &ett_t124_ChallengeResponseAlgorithm,
3908     &ett_t124_ChallengeItem,
3909     &ett_t124_ChallengeRequest,
3910     &ett_t124_SET_OF_ChallengeItem,
3911     &ett_t124_ChallengeResponse,
3912     &ett_t124_PasswordChallengeRequestResponse,
3913     &ett_t124_T_challengeRequestResponse,
3914     &ett_t124_ConferenceName,
3915     &ett_t124_ConferenceNameSelector,
3916     &ett_t124_ConferencePriorityScheme,
3917     &ett_t124_ConferencePriority,
3918     &ett_t124_NodeCategory,
3919     &ett_t124_ConferenceMode,
3920     &ett_t124_NetworkAddress,
3921     &ett_t124_NetworkAddress_item,
3922     &ett_t124_T_aggregatedChannel,
3923     &ett_t124_T_transferModes,
3924     &ett_t124_T_highLayerCompatibility,
3925     &ett_t124_T_transportConnection,
3926     &ett_t124_AsymmetryIndicator,
3927     &ett_t124_ConferenceDescriptor,
3928     &ett_t124_ConferenceCreateRequest,
3929     &ett_t124_SET_OF_Privilege,
3930     &ett_t124_ConferenceCreateResponse,
3931     &ett_t124_ConferenceQueryRequest,
3932     &ett_t124_ConferenceQueryResponse,
3933     &ett_t124_SET_OF_ConferenceDescriptor,
3934     &ett_t124_ConferenceJoinRequest,
3935     &ett_t124_ConferenceJoinResponse,
3936     &ett_t124_ConferenceInviteRequest,
3937     &ett_t124_ConferenceInviteResponse,
3938     &ett_t124_ConnectData,
3939     &ett_t124_ConnectGCCPDU,
3940     &ett_t124_Segmentation,
3941     &ett_t124_PlumbDomainIndication,
3942     &ett_t124_ErectDomainRequest,
3943     &ett_t124_ChannelAttributes,
3944     &ett_t124_T_static,
3945     &ett_t124_T_userId,
3946     &ett_t124_T_private,
3947     &ett_t124_SET_OF_UserId,
3948     &ett_t124_T_assigned,
3949     &ett_t124_MergeChannelsRequest,
3950     &ett_t124_SET_OF_ChannelAttributes,
3951     &ett_t124_SET_OF_ChannelId,
3952     &ett_t124_MergeChannelsConfirm,
3953     &ett_t124_PurgeChannelsIndication,
3954     &ett_t124_TokenAttributes,
3955     &ett_t124_T_grabbed,
3956     &ett_t124_T_inhibited,
3957     &ett_t124_T_giving,
3958     &ett_t124_T_ungivable,
3959     &ett_t124_T_given,
3960     &ett_t124_MergeTokensRequest,
3961     &ett_t124_SET_OF_TokenAttributes,
3962     &ett_t124_SET_OF_TokenId,
3963     &ett_t124_MergeTokensConfirm,
3964     &ett_t124_PurgeTokensIndication,
3965     &ett_t124_DisconnectProviderUltimatum,
3966     &ett_t124_RejectMCSPDUUltimatum,
3967     &ett_t124_AttachUserRequest,
3968     &ett_t124_AttachUserConfirm,
3969     &ett_t124_DetachUserRequest,
3970     &ett_t124_DetachUserIndication,
3971     &ett_t124_ChannelJoinRequest,
3972     &ett_t124_ChannelJoinConfirm,
3973     &ett_t124_ChannelLeaveRequest,
3974     &ett_t124_ChannelConveneRequest,
3975     &ett_t124_ChannelConveneConfirm,
3976     &ett_t124_ChannelDisbandRequest,
3977     &ett_t124_ChannelDisbandIndication,
3978     &ett_t124_ChannelAdmitRequest,
3979     &ett_t124_ChannelAdmitIndication,
3980     &ett_t124_ChannelExpelRequest,
3981     &ett_t124_ChannelExpelIndication,
3982     &ett_t124_SendDataRequest,
3983     &ett_t124_SendDataIndication,
3984     &ett_t124_UniformSendDataRequest,
3985     &ett_t124_UniformSendDataIndication,
3986     &ett_t124_TokenGrabRequest,
3987     &ett_t124_TokenGrabConfirm,
3988     &ett_t124_TokenInhibitRequest,
3989     &ett_t124_TokenInhibitConfirm,
3990     &ett_t124_TokenGiveRequest,
3991     &ett_t124_TokenGiveIndication,
3992     &ett_t124_TokenGiveResponse,
3993     &ett_t124_TokenGiveConfirm,
3994     &ett_t124_TokenPleaseRequest,
3995     &ett_t124_TokenPleaseIndication,
3996     &ett_t124_TokenReleaseRequest,
3997     &ett_t124_TokenReleaseConfirm,
3998     &ett_t124_TokenTestRequest,
3999     &ett_t124_TokenTestConfirm,
4000     &ett_t124_DomainMCSPDU,
4001
4002 /*--- End of included file: packet-t124-ettarr.c ---*/
4003 #line 195 "../../asn1/t124/packet-t124-template.c"
4004   };
4005   
4006   /* Register protocol */
4007   proto_t124 = proto_register_protocol(PNAME, PSNAME, PFNAME);
4008   /* Register fields and subtrees */
4009   proto_register_field_array(proto_t124, hf, array_length(hf));
4010   proto_register_subtree_array(ett, array_length(ett));
4011
4012   t124_ns_dissector_table = register_dissector_table("t124.ns", "T.124 H.221 Non Standard Dissectors", FT_STRING, BASE_NONE);
4013   t124_sd_dissector_table = register_dissector_table("t124.sd", "T.124 H.221 Send Data Dissectors", FT_UINT32, BASE_HEX);
4014
4015   new_register_dissector("t124", dissect_t124_new, proto_t124);
4016
4017 }
4018
4019 void
4020 proto_reg_handoff_t124(void) {
4021
4022   register_ber_oid_dissector("0.0.20.124.0.1", dissect_t124, proto_t124, "Generic Conference Control");
4023
4024   heur_dissector_add("t125", dissect_t124_heur, proto_t124);
4025
4026 }