aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/t125/MCS-PROTOCOL.asn
blob: 95fda658870fa75706422104172000cb3ad8d673 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
-- Module MCS-PROTOCOL (T.125:02/1998)
MCS-PROTOCOL DEFINITIONS ::=
BEGIN

--  Part 1: Fundamental MCS types
ChannelId ::= INTEGER(0..65535) --  range is 16 bits
                     

StaticChannelId ::= ChannelId(1..1000) --  those known permanently
                             

DynamicChannelId ::= ChannelId(1001..65535) --  those created and deleted
                              

UserId ::= DynamicChannelId --  created by Attach-User

--  deleted by Detach-User
PrivateChannelId ::=
  DynamicChannelId --  created by Channel-Convene

--  deleted by Channel-Disband
AssignedChannelId ::=
  DynamicChannelId --  created by Channel-Join zero

--  deleted by last Channel-Leave
TokenId ::= INTEGER(1..65535) --  all are known permanently
                   

TokenStatus ::= ENUMERATED {
  notInUse(0), selfGrabbed(1), otherGrabbed(2), selfInhibited(3),
  otherInhibited(4), selfRecipient(5), selfGiving(6), otherGiving(7)}

DataPriority ::= ENUMERATED {top(0), high(1), medium(2), low(3)}

Segmentation ::= BIT STRING {begin(0), end(1)}(SIZE (2))

DomainParameters ::= SEQUENCE {
  maxChannelIds    INTEGER(0..MAX),
  --  a limit on channel ids in use,
  --  static + user id + private + assigned
  maxUserIds       INTEGER(0..MAX),
  --  a sublimit on user id channels alone
  maxTokenIds      INTEGER(0..MAX),
  --  a limit on token ids in use
  --  grabbed + inhibited + giving + ungivable + given
  numPriorities    INTEGER(0..MAX),
  --  the number of TCs in an MCS connection
  minThroughput    INTEGER(0..MAX),
  --  the enforced number of octets per second
  maxHeight        INTEGER(0..MAX),
  --  a limit on the height of a provider
  maxMCSPDUsize    INTEGER(0..MAX),
  --  an octet limit on domain MCSPDUs
  protocolVersion  INTEGER(0..MAX)
}

--  Part 2: Connect provider
Connect-Initial ::= [APPLICATION 101] IMPLICIT SEQUENCE {
  callingDomainSelector  OCTET STRING,
  calledDomainSelector   OCTET STRING,
  upwardFlag             BOOLEAN,
  --  TRUE if called provider is higher
  targetParameters       DomainParameters,
  minimumParameters      DomainParameters,
  maximumParameters      DomainParameters,
  userData               OCTET STRING
}

Connect-Response ::= [APPLICATION 102] IMPLICIT SEQUENCE {
  result            Result,
  calledConnectId   INTEGER(0..MAX),
  --  assigned by the called provider
  --  to identify additional TCs of 
  --  the same MCS connection
  domainParameters  DomainParameters,
  userData          OCTET STRING
}

Connect-Additional ::= [APPLICATION 103] IMPLICIT SEQUENCE {
  calledConnectId  INTEGER(0..MAX),
  dataPriority     DataPriority
}

Connect-Result ::= [APPLICATION 104] IMPLICIT SEQUENCE {result  Result
}

--  Part 3: Merge domain
PlumbDomainIndication ::= [APPLICATION 0] IMPLICIT SEQUENCE {
  heightLimit  INTEGER(0..MAX)
} --  a restriction on the MCSPDU receiver

ErectDomainRequest ::= [APPLICATION 1] IMPLICIT SEQUENCE {
  subHeight    INTEGER(0..MAX),
  --  height in domain of the MCSPDU transmitter
  subInterval  INTEGER(0..MAX)
} --  its throughput enforcement interval in milliseconds

ChannelAttributes ::= CHOICE {
  static    [0] IMPLICIT SEQUENCE {channelId  StaticChannelId}, --  joined is implicitly TRUE
  userId
    [1] IMPLICIT SEQUENCE {joined  BOOLEAN,
                           --  TRUE if user is joined to its user id
                           userId  UserId},
  private
    [2] IMPLICIT SEQUENCE {joined     BOOLEAN,
                           --  TRUE if channel id is joined below
                           channelId  PrivateChannelId,
                           manager    UserId,
                           admitted   SET OF UserId}, --  may span multiple MergeChannelsRequest
  assigned  [3] IMPLICIT SEQUENCE {channelId  AssignedChannelId} --  joined is implicitly TRUE
}

MergeChannelsRequest ::= [APPLICATION 2] IMPLICIT SEQUENCE {
  mergeChannels    SET OF ChannelAttributes,
  purgeChannelIds  SET OF ChannelId
}

MergeChannelsConfirm ::= [APPLICATION 3] IMPLICIT SEQUENCE {
  mergeChannels    SET OF ChannelAttributes,
  purgeChannelIds  SET OF ChannelId
}

PurgeChannelsIndication ::= [APPLICATION 4] IMPLICIT SEQUENCE {
  detachUserIds    SET OF UserId,
  --  purge user id channels
  purgeChannelIds  SET OF ChannelId
} --  purge other channels

TokenAttributes ::= CHOICE {
  grabbed    [0] IMPLICIT SEQUENCE {tokenId  TokenId,
                                    grabber  UserId},
  inhibited
    [1] IMPLICIT SEQUENCE {tokenId     TokenId,
                           inhibitors  SET OF UserId}, --  may span multiple MergeTokensRequest
  giving
    [2] IMPLICIT SEQUENCE {tokenId    TokenId,
                           grabber    UserId,
                           recipient  UserId},
  ungivable  [3] IMPLICIT SEQUENCE {tokenId  TokenId,
                                    grabber  UserId}, --  recipient has since detached
  given      [4] IMPLICIT SEQUENCE {tokenId    TokenId,
                                    recipient  UserId} --  grabber released or detached
}

MergeTokensRequest ::= [APPLICATION 5] IMPLICIT SEQUENCE {
  mergeTokens    SET OF TokenAttributes,
  purgeTokenIds  SET OF TokenId
}

MergeTokensConfirm ::= [APPLICATION 6] IMPLICIT SEQUENCE {
  mergeTokens    SET OF TokenAttributes,
  purgeTokenIds  SET OF TokenId
}

PurgeTokensIndication ::= [APPLICATION 7] IMPLICIT SEQUENCE {
  purgeTokenIds  SET OF TokenId
}

--  Part 4: Disconnect provider
DisconnectProviderUltimatum ::= [APPLICATION 8] IMPLICIT SEQUENCE {
  reason  Reason
}

RejectMCSPDUUltimatum ::= [APPLICATION 9] IMPLICIT SEQUENCE {
  diagnostic     Diagnostic,
  initialOctets  OCTET STRING
}

--  Part 5: Attach/Detach user
AttachUserRequest ::= [APPLICATION 10] IMPLICIT SEQUENCE {
}

AttachUserConfirm ::= [APPLICATION 11] IMPLICIT SEQUENCE {
  result     Result,
  initiator  UserId OPTIONAL
}

DetachUserRequest ::= [APPLICATION 12] IMPLICIT SEQUENCE {
  reason   Reason,
  userIds  SET OF UserId
}

DetachUserIndication ::= [APPLICATION 13] IMPLICIT SEQUENCE {
  reason   Reason,
  userIds  SET OF UserId
}

--  Part 6: Channel management
ChannelJoinRequest ::= [APPLICATION 14] IMPLICIT SEQUENCE {
  initiator  UserId,
  channelId  ChannelId
} --  may be zero

ChannelJoinConfirm ::= [APPLICATION 15] IMPLICIT SEQUENCE {
  result     Result,
  initiator  UserId,
  requested  ChannelId,
  --  may be zero
  channelId  ChannelId OPTIONAL
}

ChannelLeaveRequest ::= [APPLICATION 16] IMPLICIT SEQUENCE {
  channelIds  SET OF ChannelId
}

ChannelConveneRequest ::= [APPLICATION 17] IMPLICIT SEQUENCE {initiator  UserId
}

ChannelConveneConfirm ::= [APPLICATION 18] IMPLICIT SEQUENCE {
  result     Result,
  initiator  UserId,
  channelId  PrivateChannelId OPTIONAL
}

ChannelDisbandRequest ::= [APPLICATION 19] IMPLICIT SEQUENCE {
  initiator  UserId,
  channelId  PrivateChannelId
}

ChannelDisbandIndication ::= [APPLICATION 20] IMPLICIT SEQUENCE {
  channelId  PrivateChannelId
}

ChannelAdmitRequest ::= [APPLICATION 21] IMPLICIT SEQUENCE {
  initiator  UserId,
  channelId  PrivateChannelId,
  userIds    SET OF UserId
}

ChannelAdmitIndication ::= [APPLICATION 22] IMPLICIT SEQUENCE {
  initiator  UserId,
  channelId  PrivateChannelId,
  userIds    SET OF UserId
}

ChannelExpelRequest ::= [APPLICATION 23] IMPLICIT SEQUENCE {
  initiator  UserId,
  channelId  PrivateChannelId,
  userIds    SET OF UserId
}

ChannelExpelIndication ::= [APPLICATION 24] IMPLICIT SEQUENCE {
  channelId  PrivateChannelId,
  userIds    SET OF UserId
}

--  Part 7: Data transfer
SendDataRequest ::= [APPLICATION 25] IMPLICIT SEQUENCE {
  initiator     UserId,
  channelId     ChannelId,
  dataPriority  DataPriority,
  segmentation  Segmentation,
  userData      OCTET STRING
}

SendDataIndication ::= [APPLICATION 26] IMPLICIT SEQUENCE {
  initiator     UserId,
  channelId     ChannelId,
  dataPriority  DataPriority,
  segmentation  Segmentation,
  userData      OCTET STRING
}

UniformSendDataRequest ::= [APPLICATION 27] IMPLICIT SEQUENCE {
  initiator     UserId,
  channelId     ChannelId,
  dataPriority  DataPriority,
  segmentation  Segmentation,
  userData      OCTET STRING
}

UniformSendDataIndication ::= [APPLICATION 28] IMPLICIT SEQUENCE {
  initiator     UserId,
  channelId     ChannelId,
  dataPriority  DataPriority,
  segmentation  Segmentation,
  userData      OCTET STRING
}

--  Part 8: Token management
TokenGrabRequest ::= [APPLICATION 29] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenGrabConfirm ::= [APPLICATION 30] IMPLICIT SEQUENCE {
  result       Result,
  initiator    UserId,
  tokenId      TokenId,
  tokenStatus  TokenStatus
}

TokenInhibitRequest ::= [APPLICATION 31] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenInhibitConfirm ::= [APPLICATION 32] IMPLICIT SEQUENCE {
  result       Result,
  initiator    UserId,
  tokenId      TokenId,
  tokenStatus  TokenStatus
}

TokenGiveRequest ::= [APPLICATION 33] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId,
  recipient  UserId
}

TokenGiveIndication ::= [APPLICATION 34] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId,
  recipient  UserId
}

TokenGiveResponse ::= [APPLICATION 35] IMPLICIT SEQUENCE {
  result     Result,
  recipient  UserId,
  tokenId    TokenId
}

TokenGiveConfirm ::= [APPLICATION 36] IMPLICIT SEQUENCE {
  result       Result,
  initiator    UserId,
  tokenId      TokenId,
  tokenStatus  TokenStatus
}

TokenPleaseRequest ::= [APPLICATION 37] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenPleaseIndication ::= [APPLICATION 38] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenReleaseRequest ::= [APPLICATION 39] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenReleaseConfirm ::= [APPLICATION 40] IMPLICIT SEQUENCE {
  result       Result,
  initiator    UserId,
  tokenId      TokenId,
  tokenStatus  TokenStatus
}

TokenTestRequest ::= [APPLICATION 41] IMPLICIT SEQUENCE {
  initiator  UserId,
  tokenId    TokenId
}

TokenTestConfirm ::= [APPLICATION 42] IMPLICIT SEQUENCE {
  initiator    UserId,
  tokenId      TokenId,
  tokenStatus  TokenStatus
}

--  Part 9: Status codes
--  in DisconnectProviderUltimatum, DetachUserRequest, DetachUserIndication
Reason ::= ENUMERATED {
  rn-domain-disconnected(0), rn-provider-initiated(1), rn-token-purged(2),
  rn-user-requested(3), rn-channel-purged(4)}

--  in Connect, response, confirm
Result ::= ENUMERATED {
  rt-successful(0), rt-domain-merging(1), rt-domain-not-hierarchical(2),
  rt-no-such-channel(3), rt-no-such-domain(4), rt-no-such-user(5),
  rt-not-admitted(6), rt-other-user-id(7), rt-parameters-unacceptable(8),
  rt-token-not-available(9), rt-token-not-possessed(10),
  rt-too-many-channels(11), rt-too-many-tokens(12), rt-too-many-users(13),
  rt-unspecified-failure(14), rt-user-rejected(15)}

--  in RejectMCSPDUUltimatum
Diagnostic ::= ENUMERATED {
  dc-inconsistent-merge(0), dc-forbidden-PDU-downward(1),
  dc-forbidden-PDU-upward(2), dc-invalid-BER-encoding(3),
  dc-invalid-PER-encoding(4), dc-misrouted-user(5), dc-unrequested-confirm(6),
  dc-wrong-transport-priority(7), dc-channel-id-conflict(8),
  dc-token-id-conflict(9), dc-not-user-id-channel(10),
  dc-too-many-channels(11), dc-too-many-tokens(12), dc-too-many-users(13)
}

--  Part 10: MCSPDU repertoire
ConnectMCSPDU ::= CHOICE {
  connect-initial     Connect-Initial,
  connect-response    Connect-Response,
  connect-additional  Connect-Additional,
  connect-result      Connect-Result
}

DomainMCSPDU ::= CHOICE {
  plumbDomainIndication        PlumbDomainIndication,
  erectDomainRequest           ErectDomainRequest,
  mergeChannelsRequest         MergeChannelsRequest,
  mergeChannelsConfirm         MergeChannelsConfirm,
  purgeChannelsIndication      PurgeChannelsIndication,
  mergeTokensRequest           MergeTokensRequest,
  mergeTokensConfirm           MergeTokensConfirm,
  purgeTokensIndication        PurgeTokensIndication,
  disconnectProviderUltimatum  DisconnectProviderUltimatum,
  rejectMCSPDUUltimatum        RejectMCSPDUUltimatum,
  attachUserRequest            AttachUserRequest,
  attachUserConfirm            AttachUserConfirm,
  detachUserRequest            DetachUserRequest,
  detachUserIndication         DetachUserIndication,
  channelJoinRequest           ChannelJoinRequest,
  channelJoinConfirm           ChannelJoinConfirm,
  channelLeaveRequest          ChannelLeaveRequest,
  channelConveneRequest        ChannelConveneRequest,
  channelConveneConfirm        ChannelConveneConfirm,
  channelDisbandRequest        ChannelDisbandRequest,
  channelDisbandIndication     ChannelDisbandIndication,
  channelAdmitRequest          ChannelAdmitRequest,
  channelAdmitIndication       ChannelAdmitIndication,
  channelExpelRequest          ChannelExpelRequest,
  channelExpelIndication       ChannelExpelIndication,
  sendDataRequest              SendDataRequest,
  sendDataIndication           SendDataIndication,
  uniformSendDataRequest       UniformSendDataRequest,
  uniformSendDataIndication    UniformSendDataIndication,
  tokenGrabRequest             TokenGrabRequest,
  tokenGrabConfirm             TokenGrabConfirm,
  tokenInhibitRequest          TokenInhibitRequest,
  tokenInhibitConfirm          TokenInhibitConfirm,
  tokenGiveRequest             TokenGiveRequest,
  tokenGiveIndication          TokenGiveIndication,
  tokenGiveResponse            TokenGiveResponse,
  tokenGiveConfirm             TokenGiveConfirm,
  tokenPleaseRequest           TokenPleaseRequest,
  tokenPleaseIndication        TokenPleaseIndication,
  tokenReleaseRequest          TokenReleaseRequest,
  tokenReleaseConfirm          TokenReleaseConfirm,
  tokenTestRequest             TokenTestRequest,
  tokenTestConfirm             TokenTestConfirm
}

END

-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D