Coverage Report

Created: 2026-07-12 07:10

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