3 * Routine to dissect ISO 8327-1 OSI Session Protocol packets
7 * Yuriy Sidelnikov <YSidelnikov@hotmail.com>
9 * Ethereal - Network traffic analyzer
10 * By Gerald Combs <gerald@ethereal.com>
11 * Copyright 1998 Gerald Combs
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 #define PROTO_STRING_SES "ISO 8327-1 OSI Session Protocol"
29 #define PROTO_STRING_SES_INFO "ISO 8327-1 OSI Session Protocol."
31 * Dissect ses-encapsulated data in a TCP stream.
35 #define SES_EXT_CONT 0x01
37 /* protocol versions */
38 #define PROTOCOL_VERSION_1 0x01
39 #define PROTOCOL_VERSION_2 0x02
42 #define BEGINNING_SPDU 0x01
45 #define DATA_TOKEN 0x01
46 #define RELEASE_TOKEN 0x40
47 #define SYNCHRONIZE_MINOR_TOKEN 0x04
48 #define MAJOR_ACTIVITY_TOKEN 0x10
50 /* session user req flag */
51 #define HALF_DUPLEX_FUNCTION_UNIT 0x0001
52 #define DUPLEX_FUNCTION_UNIT 0x0002
53 #define EXPEDITED_DATA_FUNCTION_UNIT 0x0004
54 #define MINOR_SYNCHRONIZE_FUNCTION_UNIT 0x0008
55 #define MAJOR_SYNCHRONIZE_FUNCTION_UNIT 0x0010
56 #define RESYNCHRONIZE_FUNCTION_UNIT 0x0020
57 #define ACTIVITY_MANAGEMENT_FUNCTION_UNIT 0x0040
58 #define NEGOTIATED_RELEASE_FUNCTION_UNIT 0x0080
59 #define CAPABILITY_DATA_FUNCTION_UNIT 0x0100
60 #define EXCEPTION_FUNCTION_UNIT 0x0200
61 #define TYPED_DATA_FUNCTION_UNIT 0x0400
62 #define SYMMETRIC_SYNCHRONIZE_FUNCTION_UNIT 0x0800
63 #define DATA_SEPARATION_FUNCTION_UNIT 0x1000
65 #define SES_EXCEPTION_REPORT 0x2000
66 /*define SES_EXCEPTION_REPORT 0 */
67 #define SES_DATA_TRANSFER 1
68 #define SES_GIVE_TOKENS 1
69 #define SES_PLEASE_TOKENS 2
70 #define SES_EXPEDITED 5
72 #define SES_NOT_FINISHED 8
74 #define SES_DISCONNECT 10
76 #define SES_CONNECTION_REQUEST 13
77 #define SES_CONNECTION_ACCEPT 14
78 #define SES_CONNECTION_DATA_OVERFLOW 15
79 #define SES_OVERFLOW_ACCEPT 16
80 #define SES_GIVE_TOKENS_CONFIRM 21
81 #define SES_GIVE_TOKENS_ACK 22
83 #define SES_ABORT_ACCEPT 26
84 /*#define SES_ACTIVITY_INTERRUPT 25
85 #define SES_ACTIVITY_INTERRUPT_ACK 26 */
86 #define SES_ACTIVITY_RESUME 29
87 #define SES_TYPED_DATA 33
88 #define SES_RESYNCHRONIZE_ACK 34
89 #define SES_MAJOR_SYNC_POINT 41
90 /*#define SES_MAJOR_SYNC_POINT 41
91 #define SES_ACTIVITY_END 41 */
92 #define SES_MAJOR_SYNC_ACK 42
93 #define SES_ACTIVITY_START 45
94 #define SES_EXCEPTION_DATA 48
95 #define SES_MINOR_SYNC_POINT 49
96 #define SES_MINOR_SYNC_ACK 50
97 #define SES_RESYNCHRONIZE 53
98 #define SES_ACTIVITY_DISCARD 57
99 #define SES_ACTIVITY_DISCARD_ACK 58
100 #define SES_CAPABILITY 61
101 #define SES_CAPABILITY_DATA_ACK 62
105 0: Rejection by called SS-user; reason not specified.
106 1: Rejection by called SS-user due to temporary congestion.
107 2: Rejection by called SS-user. Subsequent octets may be used
108 for user data up to a length of 512 octets if Protocol
109 Version 1 has been selected, and up to a length such that
110 the total length (including SI and LI) of the SPDU does
111 not exceed 65 539 octets if Protocol Version 2 has been
113 128 + 1: Session Selector unknown.
114 128 + 2: SS-user not attached to SSAP.
115 128 + 3: SPM congestion at connect time.
116 128 + 4: Proposed protocol versions not supported.
117 128 + 5: Rejection by the SPM; reason not specified.
118 128 + 6: Rejection by the SPM; implementation restriction stated in the
121 #define reason_not_specified 0
122 #define temporary_congestion 1
124 #define Session_Selector_unknown 128+1
125 #define SS_user_not_attached_to_SSAP 128+2
126 #define SPM_congestion_at_connect_time 128+3
127 #define versions_not_supported 128+4
128 #define SPM_reason_not_specified 128+5
129 #define SPM_implementation_restriction 128+6
131 #define NON_TOKENS_SPDU FALSE
132 #define TOKENS_SPDU TRUE
134 #define TWO_BYTE_LEN 0xff
138 #define Connection_Identifier 1
139 #define Connect_Accept_Item 5
140 #define Linking_Information 33
141 #define User_Data 193
142 #define Extended_User_Data 194
146 #define Called_SS_user_Reference 9
147 #define Calling_SS_user_Reference 10
148 #define Common_Reference 11
149 #define Additional_Reference_Information 12
151 #define Sync_Type_Item 15
152 #define Token_Item 16
153 #define Transport_Disconnect 17
155 #define Protocol_Options 19
156 #define Session_Requirement 20
157 #define TSDU_Maximum_Size 21
158 #define Version_Number 22
159 #define Initial_Serial_Number 23
160 #define Prepare_Type 24
161 #define EnclosureItem 25
162 #define Token_Setting_Item 26
163 #define Resync_Type 27
165 #define Serial_Number 42
167 #define Reflect_Parameter 49
169 #define Reason_Code 50
170 #define Calling_Session_Selector 51
171 #define Called_Session_Selector 52
172 #define Second_Resync_Type 53
173 #define Second_Serial_Number 54
174 #define Second_Initial_Serial_Number 55
175 #define Upper_Limit_Serial_Number 56
176 #define Large_Initial_Serial_Number 57
177 #define Large_Second_Initial_Serial_Number 58
179 #define Data_Overflow 60
181 /* transport disconnect values */
182 #define transport_connection_is_released 0x01
183 #define user_abort 0x02
184 #define protocol_error 0x04
185 #define no_reason 0x08
188 #define SESSION_NO_ABORT 0
189 #define SESSION_USER_ABORT 1
190 #define SESSION_PROVIDER_ABORT 2
192 /* data for presentation selector */
193 struct SESSION_DATA_STRUCTURE
198 #define implementation_restriction 0x10